李从悠 https://m.sohu.com/a/503081177_121130095/大数据文摘作品
编译:张南星、惊蛰、荆浩男
怎样高效开发机器学习产品
想要开发通用AI,首先你得掌握逻辑回归模型。
从最基础的开始
在大多数领域,当人们尝试用科学的方式理解世界时,都会选择先宽泛研究整体的内容,而不是立马深入到重要的细节之中。
譬如在物理学领域,我们常常从简单的模型开始(牛顿物理学)做研究。然后,我们在逐渐认识到最初的一些假设并不正确时,就会慢慢开始使用更复杂的模型。这种方式可以以最简单的方法高效地解决问题。
凡事力求简单,但不要过于简单。——阿尔伯特·爱因斯坦
同样的思维模式,即从最简单的模型开始建造,也可以应用于AI工程之中。并且在大多数情况下,这样的方式都很有价值。
事实上,在Insight上目睹成百上千个项目从想法发展成实际产品之后,我们发现将一个简单模型作为基础版本,往往能让最终产品变得更棒。
但在解决复杂问题时,简单的解决方案(比如下文中讨论到的基线模型)存在诸多不足:
简单的解决方案有时会忽略输入中的重要内容。例如,简单的模型常常会忽略词语在语句中的顺序,或者变量之间的关系。
在生产比较细致的产品时,这些模型往往有些力不从心。因此,大多数简单模型都需要配合使用启发式算法或者人工制定的规则才会面世。
它们研究起来可能并不那么有趣,而且可能没法让你学到自己渴望的前沿研究知识。
这些简单解决方案产出的错误输出常常看起来非常愚蠢,所以标题中用了“不忍直视”这个词。但是,正如本文所说的,在项目启动时,简单模型的价值就会大大体现,因为这些模型可以帮助我们更好地理解实际问题,从而告知我们开发出最终成功产品的最佳路线。
用GeorgeE.P.Box的话来说:“所有的模型都是错的,但至少其中一些会有点用处。”
再换句话说,如果你只想找点乐子,那从复杂的模型开始没问题;但是如果你希望真正解决某个问题,并开发真正产品的话,那就从简单得“不忍直视”的模型开始吧。
什么是基线模型?
“当从散点图中预测数据关联性比画星座图更难的时候,我不相信线性回归得到的结果”:
左:方差为0.06的线性回归模型
右:Rexthor“遛狗”模型
不同的分布类型需要不同的基线模型。下面是一些值得考虑的基线模型:
线性回归:从一系列特征值中预测连续值的首要可靠方法,例如价格和年龄
逻辑回归:当需要对结构化数据或者自然语言进行分类时,逻辑回归模型能迅速给出可靠的结果。
梯度提升决策树:不可错过的Kaggle经典!在和时间或者通用结构化数据相关的预测处理中,忽略梯度提升决策树简直是不可能的事。虽然这个模型比其他基线模型在理解和使用上稍难一些,但是效果会很不错。
简单脑回框架:恰当调整了的VGG或者对部分变量进行再训练了的U-net,对大多数图像分类、探测或者分类问题来说是一个好的开头。
摆在你面前可供选择的基线模型还有很多!
到底选择哪个基线模型是由数据类型及任务目标决定的。比如,当你需要从各种特征值中预测房价时(即从一系列特征值中预测某个值),线性回归模型就比较合适,但如果是建造语音识别算法,这个模型就不太适用。在选择最适合的基线模型之前需要再三思考这个问题:你希望用这个模型得到什么?
为什么从基线模型开始?
从部署模型到获得结果的过程
部署一个模型并不轻松,在实施之前必须确保对这个模型足够了解。在项目开始时,优先级最高的事项是预测未知风险。即使基线模型并不是终版模型,但是它能让你迅速迭代,从而降低不必要的时间成本。下面是支持这个论点的一些理由:
基线模型只会花费你少于十分之一的时间,却可以导出超过90%的结果。
把你的产出效率提高9倍!
举一个非常常见的例子:某团队希望找一个模型来预测用户点击广告的概率之类的问题。他们从一个逻辑回归模型开始,并在很短的时间内(在极少数的调整之后),准确率达到了90%。
那么问题来了:这个团队应该专注于把准确率提高到95%,还是用同样的方法,以90%的准确率解决别的问题?
绝大部分最为先进的模型都无法使错误率降低到零,原因在于它随机性的本质。虽然准确性和实际用例相关,但从本质上来讲,大部分系统的准确性都是各个部分准确值的乘积。
也就是说,最好让10个连续的步骤准确性都达到90%,这样整体准确性就可以达到34%,而不是让1个步骤的准确性达到99%,而其他9个步骤都是10%,这样的整体准确性只有0.%%。
从一个基线模型开始,能让你首先清楚问题的瓶颈之处!
基线模型让复杂模型陷入两难之地
通常情况下,你可以预估到使用各种模型可以达到的三种性能水平:
缺省可得性能水平是你希望任何一个模型都能达到的水平。举个例子,这个值可以是分类任务中出现频率最高类别的概率值。
人类性能指标,是指一个人类完成任务的水平。计算机在某些任务中比人类表现好(例如AlphaGo),但在另外一些任务上表现差(例如创作诗歌)。
人类完成一项任务的性能水平,能够作为标准协助对一个算法的表现形成合理预期,但是在不同领域,人类和电脑的表现可能大不一样,因此需要一些文献检索做校准。
可部署性能水平,即站在商业生产和可用性角度上,模型所需的最小准确值。通常情况下,这个值需要精细的设计决策系统才可得到。例如GoogleSmartReply一般会返回三个建议决策,能够显著提高有用结果出现的概率。
上面我没有提到的一个标准,称之为“合理自动生成性能”,是指通过相对简单的模型可以得到的结果。通过这个重要的对标值,能够评估一个复杂模型是否表现良好,并且让我们不再在准确性与复杂性之间纠结。
很多时候,我们发现基线模型和复杂模型的表现相当,有时候基线模型的表现甚至可以超过复杂模型,在选择复杂模型前没有充分考虑基线模型的失败原因时更是如此。
除此之外,部署复杂模型也更加困难,这意味着在真正开始部署模型之前,程序员们首先还需要估计复杂模型比简单模型能提升多少。
基线模型更容易部署
从定义上来说,基线模型很简单,一般由相对少的可训练参数组成,而且不需要太多的处理就可以迅速和数据匹配。
这个好处在真正开始编程时就会体现出来了:
训练迅速:能够迅速得到性能反馈。
更容易研究:这意味着遇到的大多数错误能够更容易定位是模型的缺陷,还是数据中的错误。
迅速推断:部署基线模型不需要太多架构层面的修改,并且不会导致潜在的风险。
一旦你创建并部署了基线模型,你已经处于下一步行动的最佳决策点了。
建造了基线模型之后呢?
也许是时候祭出研究文献了?
大数据文摘