AI测试 深度学习基础 (十二)--测试模型时的注意事项 (补充)

孙高飞 · 2018年01月14日 · 2578 次阅读

前言

上一篇忘写了一点东西, 这次补上。

关于预测值稳定性的测试

我们在业务中会经常更新模型, 尤其是在自学习场景中。 每天都要中最新的数据更新模型。 所以除了一些模型本身的评估指标以外,新老版本模型的预测值的范围统计也比较重要,同时也比较容易忽略。 我们知道模型其实就是个特征数据库。 根据 LR 的公式 y=w*x +b。 x 是特征向量,w 是权重。 模型中会存储所有的特征和它的权重,当新数据来了要做预测的时候就会去模型中找到该数据命中的特征,把所有的特征和他们的权重相乘累加算出一个预测值来。 我们在做 2 分类问题的时候,sigmod 函数会把预测值转换成 0~1 中间的数字以方便我们进行 2 分类划分. 这时候我们设置一个阈值,假如说设置为 0.8。 所有预测值大于 0.8 的判断为正例,小于 0.8 的为负例。 这就是做分类问题的思路, 在统计模型的魂匣矩阵的时候,也是在特定的阈值下进行计算的。

上面是一个混淆矩阵的图, 有一个阈值的拖动条, 在调整这个拖动条的时候我们下面的统计信息是会变化的。

说了这么多跟我们的测试有什么关系呢。 模型产出的只是预测值,至于要怎么使用预测值,阈值设为多少是跟模型本身没关系的。 由业务调用方自行决定。 所以如果模型的预测值范围发生变化,我们需要保证变化不会影响到调用方,或者说要通知调用方进行更改。 比如老模型的预测值分布比较均匀,基本就是在 0~1 中间均匀分布。而模型更新后预测值的分布比较极端,0.9~1 和 0~0.1 之间分布。 这就会有问题,因为调用方当初是根据老模型的 0~1 之间均匀分布的情况设置的阈值。 虽然新老版本模型的 AUC 和其他指标可能是差不多的,但是预测值查了很远。 调用方如果不重新调整阈值就会产生风马牛不相及的错误。 所以在更新模型的时候还需要加入的测试就是预测值的分布统计,也叫预测值的稳定性测试,一般是不准许预测值出现这么大的变化的。

决策引擎

在上个世界 6,7 十年代的时候大家对人工智能的定义是专家规则。 是说某个领域专家向系统中输入各种不同的规则来预测事物, 理论上只要输入的规则足够多,就可以达到人工智能的效果。 后来被证实为不靠谱的,因为人的分析能力的限制,我们无法输入那么多的规则。 但专家规则的使用却是保留了下来, 比如现在的银行中还保留了很多的专家规则系统,即便他们已经引入了机器学习能力但仍然保留着专家系统的使用。 为什么呢?主要为了防止黑天鹅事件,这些黑天鹅事件发生的概率很小,在庞大的训练样本中只占有了非常小非常小的份额,机器学习是一个偏向历史的预测系统,这么小的数据量很难针对这些黑天鹅事件学习出较好的模型。 但这些黑天鹅事件一旦发生的话会造成难以挽回的损失。 所以在这种情况下需要将人类指定的规则 --- 专家系统和机器学习系统混合使用。 某些情况下使用专家系统,某些情况下使用机器学习模型。 而做这个事情的,就是决策引擎。所以除了对模型本身进行测试以外。我们还要对决策引擎的规则进行测试。 到底什么时候用到了模型,什么时候用到了专家系统。 整个决策引擎的效果如何,都要进行测试。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 9 条回复 时间 点赞

请问 ui 自动化需要用到 spring 吗?如果需要有什么好处?

退之 回复

? 你是不是留错言了。。。

孙高飞 回复

没有,之前的帖子怕你看不到,回复在你最新的帖子上。。

孙高飞 回复

再问一个问题,git 上有好点的类似你的思路设计的 selenium ui 测试框架可以推荐吗? 谢谢大神

退之 回复

你可以看看 selenide, 一个基于 selenium 的开源项目

孙高飞 回复

嗯 selenide 是封装了 webdriver,你的帖子关于 ui 自动化的大部分都读过了,最近在改进自动化项目,打算按照你的思路把页面元素,测试数据,初始化数据都一起分离出去,测试用例只关注逻辑,请问有类似的项目可以参考吗?

退之 回复

这个还真没有~~ 这些都是我自己意淫出来的~

孙高飞 回复

你的意淫好强大,谦虚了。

匿名 #2 · 2020年05月15日

每天跑模型,模型数据来源可能会变,那么结果数据是否应该要每天观测,看是否在标准范围内?

ABEE ycwdaaaa (孙高飞) 在 TesterHome 的发帖整理 中提及了此贴 01月12日 13:47
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册