搭建容易维护难!谷歌机器学习系统血泪教训
副标题[/!--empirenews.page--]
2014 年,谷歌一篇探讨机器学习背后暗藏高额技术债的论文曾火爆一时。今天,这篇论文又出现了知名技术社区 HackerNews 的头条。看来,即使过了 4 年时间,人工智能进入新的春天,但困扰着机器学习研究者的问题还是类似的问题。 本文作者表示,希望这篇论文能够为在生产环境中采用机器学习系统的开发者与维护者提供一些实用建议。作者警告称,虽然从零搭建机器学习系统还算轻松,但随后的改进却可能存在出乎意料的困难。在阅读本文时,读者会清晰感受到其中的经验源自作者在谷歌公司任职期间来之不易的艰辛积累。 AI 前线将带大家一起重温这篇经典文章,文章部分经验强调“与机器学习相关,并不代表着能够彻底放弃良好软件工程实践”,也有部分内容属于特定于机器学习的常见陷阱。考虑到所有希望建立“X+AI”业务的初创企业都面临着这类潜在挑战,因此文中提出的建议非常值得大家认真考量。 本文提到的机器学习系统带来的主要技术债类别包括:信息隐藏以及变化封闭带来的挑战 ; 胶水代码与配置;以及不断变化的外部世界以及分析模型结论对这一世界的理解偏差。
信息隐藏与变化封装
如果我们了解到先验的重要性,就不需要利用机器学习进行重复证明!因此,模型有点像一台巨大的搅拌机器,我们向其中投入大量信息并获取结果,但对输入内容中的各类变化的敏感度却难以预测,且几乎无法进行影响隔离。面对这样的难题,我们该怎么办?虽然不存在百试百灵的方案,但作者给出了三种可能有所帮助的策略。
另一种寻找偶然耦合的方式在于建立隐藏反馈回路,这一点在未申报消费方当中体现得尤为明显。通过未申报消费方,系统只是在单纯消费建模产出的输出结果,而我们几乎意识不到这些过程的存在。如果其根据影响模型的输入参数信息采取了某些行动,则这种隐藏的反馈回路很容易引发以下问题:
数据依赖性问题
举例来说,某些输入信号会随着时间推移而改变行为。遵循 CACE 原则,即使将这些变化作为改进方向,也很难对后果作出预测。另一种数据依赖性则是模型中的特征集合,其中一些能够在准确性方面提供非常有限的增量。我们可以通过多种方式利用原本未充分利用的依赖性——包括一部分已遭弃用的早期遗留特征,一次性添加的多项特征组合(而非仅仅挑出那些真正有作用的特征),或者那些为了追求准确率而添加、且无法证明自身对复杂性的影响的特征。定期对特征进行清除将非常重要。
有能力理解数据依赖性的工具,将帮助我们顺利搞定特征清理工作。谷歌公司的一支团队就构建出一款自动化特征管理工具:
最后一种数据依赖性管理方法,在于建立“校正”机制以重新利用现有模型。通过这种方式,你能够快速获得初步成果 ; 但在另一方面,你未来对该模型的分析与改进将面临更高的成本。 其它 95%(胶水代码与配置)
|