机器学习模型在实验室能被调整到近乎完美,但在现实环境中进行试验时,往往都会失败,这已经不是什么秘密了。这通常被归结为人工智能接受训练和测试的数据与它在世界上遇到的数据不匹配,这个问题被称为数据偏移(data shift)。
例如,经过训练,人类能够制造在高质量的医学图像中发现疾病迹象的AI,却难以分辨繁忙的诊所中廉价相机捕捉到的模糊或裁剪的图像。
这种现象被称为“数据不规范”(underspecification)。在机器学习世界中普遍存在。
数十名谷歌研究人员着眼于一系列不同的人工智能应用,从图像识别到自然语言处理(NLP)再到疾病预测。他们发现,“数据不规范”是这些项目表现不佳的原因。问题在于机器学习模型的训练和测试方式,没有简单的解决办法。
1.同样的模型,但表现不同
如果你阅读过我们前面的推文,你也知道建立一个机器学习模型需要在大量的数据源上进行训练,然后再在一堆模型没见过的数据源上进行测试,当模型通过测试时,模型就完成了。
谷歌人员指出,这样的判断标准太低了。事实上,训练过程可以产生许多不同的模型,即使这些模型都通过了测试,但他们内部存在许多细微的差异。比如神经网络不同节点的系数不同、被选择出来的关键因子不同。都会造成模型之间存在不同的差异。
这些差异,在模型通过测试的时候都会被忽略掉。而事实告诉我们,在现实世界中,这些细微的差异会导致巨大的表现差异。
这也就意味着,我们根本无法区分同一个算法训练出来的模型之间,哪个更适合在现实世界中运行,哪些模型根本不适合在现实生活中运行。
这与数据偏移不同,在数据偏移中,因为数据源和现实世界的实际情况不匹配,训练不能产生一个好的模型。但是在数据不规范中,你能产生许多通过测试的模型,但这些模型里掺杂着“好的模型”和“坏的模型”,它们只能通过在现实生活中实际应用来区分好坏。
研究人员研究了数据不规范对许多不同应用程序的影响,每种情况下,它们使用相同的算法训练产生多个机器学习模型,然后进行压力测试,突出它们在性能上的具体差异。
例如,ImageNet是一个日常物体的图像数据集,他们基于ImageNet上训练了50种版本的图像识别模型。每组训练的唯一区别是开始时分配给神经网络的随机值。然而,尽管所有50个模型在测试中的得分都差不多,但它们在压力测试中的表现却大相径庭。
压力测试使用ImageNet-C,这些图像被马赛克化或改变了亮度和对比度。另一个压力测试集是ObjectNet,一个日常物品的异常姿势图像集,比如倒立的茶壶,挂在钩子上的t恤。
50位模型里,有些在被马赛克化的图片上识别得很好,有些则在异常姿势上识别得很好;有些模型的整体表现比其他模型好得多。但其实就训练过程而言,它们都是一样的。
研究人员使用三种医学AI系统根据视网膜扫描预测眼病,从皮肤病变中预测癌症,从患者病历中预测肾衰竭。每个系统都有同样的问题:
那些本应同样精确的模型,在用真实世界的数据(如不同的皮肤类型)测试时,出现了不同的表现。这并不是训练集/测试集不够导致的,而是不论训练集/测试集多大都会出现这样的问题。
因此研究人员罗勒说,我们可能需要重新考虑如何评估神经网络。“我们的基本假设中出现了一些重大漏洞。”
人类现在使用的大多数机器学习模型的训练逻辑,其实都无法被证明是有效的。
2.解决方案
一种选择是在训练和测试过程中设计一个额外的阶段,在这个阶段中可以同时生产多个模型,而不是只生产一个。然后,这些相互竞争的模型可以在具体的现实任务中再次进行测试,以选择最适合这项工作的模型。
但这样需要做很多工作。苏黎世联邦理工学院的机器学习研究员Yannic Kilcher说,对于像谷歌这样建造和部署大型模型的公司来说,这样做是值得的。谷歌可以提供50种不同版本的NLP模型,应用程序开发人员可以选择最适合他们的一个。
目前研究人员们还没有解决这个问题,但正在探索改进培训过程的方法。当人工智能在现实世界中表现不佳时,人们就不太愿意使用它了。因此,如果这个问题没有尽早得到有效的解决,这个时代的人工智能浪潮或许将就此平息。
译自technologyreview, 《The way we train AI is fundamentally flawed》。
我们的文章到此就结束啦,如果你喜欢今天的Python 文章,请持续关注Python实用宝典。
有任何问题,可以在公众号后台回复:加群,回答相应验证信息,进入互助群询问。
原创不易,希望你能在下面点个赞和在看支持我继续创作,谢谢!
Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典