数据中心 频道

那些你不可不知的机器学习“民间智慧”

  【IT168 资讯】机器学习算法可以通过从例子中推广来弄清楚如何执行重要的任务。在手动编程的情况下,这通常是可行且成本有效。随着更多的数据变得可用,可以解决更多雄心勃勃的问题。因此,机器学习被广泛应用于计算机等领域。然而,开发成功的机器学习应用程序需要大量难以在教科书中找到的“黑色艺术”。

  最近华盛顿大学Pedro Domingos教授发表了一篇惊人的技术论文,题为“关于机器学习的一些有用的事情”。(https://homes.cs.washington.edu/~pedrod/papers/cacm12.pdf)它总结了机器学习研究人员和从业人员学到的12个关键经验教训,包括要避免的陷阱,重点问题并回答了一些常见的问题。在本文中分享了这些经验教训,因为在考虑机器学习问题时,它们非常有用。

  1 - 学习=表示+评估+优化

  所有的机器学习算法通常由3个组件组成:

  表示法:分类器必须用计算机可以处理的一些正式语言表示。相反地,为学习者选择一个表达式就等于选择它可能学习的一组分类器。这个集合被称为学习者的假设空间。如果一个分类器不在假设空间,就不能被学习到。一个相关的问题是如何表示输入,即使用哪些功能。

  评估:需要一个评估函数来区分好的分类器和坏的分类器。该算法在内部使用的评估函数可能与我们希望分类器优化、简化优化以及下一节讨论的问题不同。

  优化:最后,我们需要一种方法来在语言中的分类器中搜索得分最高的分类器。优化技术的选择对于学习者的效率是关键的,并且如果评估函数具有多个最优值,则有助于确定所产生的分类器。新学习者开始使用现成的优化器(后来被定制设计的优化器替代)是很常见的。那些你不可不知的机器学习“民间智慧”!

  2 - 泛化很重要

  机器学习的基本目标是在训练集范例之外进行泛化。这是因为,无论我们有多少数据,我们都不太可能在测试时再次看到这些确切的例子。做好训练集很容易。机器学习初学者最常犯的错误就是对训练数据进行测试,并有成功的幻觉。

  如果选择的分类器在新的数据上进行测试,通常不会比随机猜测更好。所以,如果你雇人去建立分类器,一定要保留一些数据给你自己,并测试他们给你的分类器。相反,如果你被雇佣来建立一个分类器,要把一些数据从一开始就放在一边,只用它来测试你选择的分类器,然后在整个数据上学习最终的分类器。

那些你不可不知的机器学习“民间智慧”!

  3 - 数据是不够的

  泛化是目标同时还有另外一个重要的后果:不管你拥有多少数据,那都是不够的。

  这似乎是一个令人沮丧的消息。那么我们怎么能学到东西?幸运的是,我们想要在现实世界中学习的功能并不是从所有数学上可能的功能集合中统一得出的!事实上,举一个非常普遍的假设,比如平滑性,类似的例子,有限的依赖性或者有限的复杂性,往往足以做得很好,这也是机器学习如此成功的很大一部分原因。就像演绎一样,归纳(学习者所做的)就是知识杠杆:将少量的输入知识转化为大量的输出知识。感应是一个比演绎强大得多的杠杆,需要更少的输入知识来产生有用的结果,但是它仍然需要超过零的输入知识来工作。而且,就像任何一个杠杆一样,我们投入得越多,我们就越能走出去。

那些你不可不知的机器学习“民间智慧”!

  回想起来,学习知识的需求不应该令人惊讶。机器学习不是魔术,它不能从无到有。它所做的是从更少获得更多。像所有的工程一样,编程有很多工作:我们必须从头开始构建所有的东西。学习更像是农业,让大自然完成大部分的工作。农民将种子与营养物质结合起来种植作物。学习者将知识与数据结合起来,开展项目。

  4 - 有许多面临过度拟合

  如果我们拥有的知识和数据不足以完全确定正确的分类器呢?那么我们就冒着对分类器(或其中的一部分)产生幻觉的风险,这些分类器并不是基于现实,而只是简单地编码数据中的随机物。这个问题被称为过度拟合,是机器学习的怪圈。当你的学习者输出的分类器在训练数据上是100%准确的,但在测试数据上只有50%准确的时候,实际上它可以输出一个75%准确度的分类器,那么,这时候它就可能显得有些过度了。

  机器学习中的每个人都知道过度拟合,但它有很多形式,并不是很明显。理解过度拟合的一种方法是将泛化误差分解为偏差和方差。偏见是学习者不断学习同样错误的东西的倾向,不管真实的信号如何,方差是倾向于学习随机事物。线性学习者有很高的偏见,因为当两个类之间的边界不是一个超平面时,学习者无法诱导它。决策树却不存在这个问题,因为它们可以表示任何布尔函数,但是另一方面它们可能遭受高度的方差:由相同现象产生的不同训练集上学习的决策树通常是非常不同的,事实上它们应该是相同的。

那些你不可不知的机器学习“民间智慧”!

  交叉验证可以帮助对抗过度拟合,例如通过使用交叉验证来选择决策树的非常好的尺寸来学习。但这不是功能较多的,因为如果我们用它来做太多的参数选择,它本身就会开始过度适应。

  除了交叉验证之外,还有很多方法可以解决过度拟合的问题。最流行的是给评价函数增加一个正则化术语。例如,这可以惩罚更多结构的分类器,从而有利于较小的分类器,只需较少的装配空间。另一种方法是在添加新的结构之前,进行像卡方这样的统计显著性检验,以确定类别的分布是否真的不同于这种结构。当数据非常稀少时,这些技术特别有用。尽管如此,你应该对某种技术“解决”过度拟合问题的说法持怀疑态度。通过落入相反的偏差(偏差),很容易避免过度拟合(方差)。同时避免这两种情况都需要学习一个完美的分类器。

  5 - 直觉在高维度失败

  过度拟合之后,机器学习中最大的问题就是维度的问题。这个表达式是由Bellman在1961年提出的,指的是当输入是高维时,许多在低维度上工作正常的算法变得棘手。但是在机器学习中,它指的是更多。随着示例的维数(特征数量)的增长,泛化正确变得越来越难,因为固定大小的训练集覆盖了输入空间的一小部分。

那些你不可不知的机器学习“民间智慧”!

  高维的一般问题是,我们来自三维世界的直觉通常不适用于高维空间。在高维度中,多元高斯分布的大部分质量并不接近平均值,而是在其周围越来越远的“壳”中;而高维度橙色的大部分是在皮肤中,而不是纸浆。如果恒定数量的例子在高维超立方体中均匀分布,那么超越某个维度,大多数例子更接近于超立方体的一个面,而不是最近邻。如果我们通过将它写入超立方体来近似超球面,那么在高维度下,超立方体的几乎所有体积都在超球面之外。这对于机器学习来说是个坏消息,一种类型的形状常常被另一种形状所逼近。

  建立二维或三维分类器很容易,我们可以通过视觉检查找出不同类别的例子之间的合理边界。但是在高维度上很难理解正在发生的事情。这反过来又使设计一个好的分类器变得困难。天真地说,人们可能会认为收集更多的功能从来不会受到伤害,因为在最坏的情况下,他们不会提供有关类的新信息。但事实上,维度的诅咒可能超过了他们的利益。

  6 - 理论上的保证不是他们所看到的那样

  机器学习论文充满了理论上的保证。最常见的类型是确保良好泛化所需的示例数量的界限。你应该怎样做到这些保证?首先,它们是可能的。归纳传统上与演绎相对照:在推论中你可以保证结论是正确的;在归纳中,所有投注都是关闭的。或者这是许多世纪的传统智慧。近几十年来的一个主要发展是认识到,事实上,我们可以对归纳的结果有所保证,特别是如果我们愿意为概率保证提供解决的话。

  我们必须小心这是什么意思。例如,如果你的学习者返回了一个与某个特定训练集一致的假设,那么这个假设就没有这么说。现在说的是,给定一个足够大的训练集,很有可能你的学习者要么返回一个推广的假设,要么找不到一致的假设。约束也没有说如何选择一个好的假设空间。它只告诉我们,如果假设空间包含真实的分类器,那么学习者输出一个不好的分类器的概率随着训练集的大小而减少。如果我们缩小假设空间,边界就会改善,但是包含真实分类器的机会也会缩小。

那些你不可不知的机器学习“民间智慧”!

  另一种常见的理论保证类型是渐近的:给定无限的数据,保证学习者输出正确的分类器。这是令人放心的,但是由于其渐近的保证,选择一个学习者而不是另一个学习者会是一件轻率的事情。在实践中,我们很少处于渐近状态(也被称为“asymptopia”)。而且,由于上面讨论的偏差 - 方差权衡,如果学习者A比给定无限数据的学习者B好,则B往往比给定的有限数据好。

  理论保证在机器学习中的主要作用不是作为实际决策的标准,而是作为算法设计的理解和推动力量的来源。在这方面,他们相当有用。事实上,理论与实践的密切相互作用是机器学习多年来取得如此巨大进步的主要原因之一。但要注意:学习是一个复杂的现象,只是因为学习者有一个理论上的正当理由,而且在实际工作中并不意味着前者是后者的原因。

  7 - 特色工程是关键

  在一天结束的时候,会有一些机器学习项目成功,有些失败。是什么造成了差异?最容易的因素是使用的功能。如果你有许多独立的功能,每一个都和类相关联,学习很容易。另一方面,如果这个类是一个非常复杂的功能,你可能无法学习它。通常情况下,原始数据不是可以学习的形式,但是可以从中构建特征。这通常是机器学习项目中的大部分工作所在。它往往也是最有趣的部分之一,直觉,创造力和“黑色艺术”与技术性东西一样重要。

  初学者常常惊讶于机器学习项目中实际上机器学习的时间太少。但是,如果考虑收集数据、整合、清理和预处理以及在功能设计中可以进行多少尝试和错误,这是非常有意义的。另外,机器学习不是建立数据集和运行学习者的一次性过程,而是运行学习者、分析结果、修改数据和/或学习者并重复的迭代过程。学习通常是最快速的部分,但那是因为我们已经掌握了很好的技巧!特征工程更加困难,因为它是特定领域的,而学习者可以在很大程度上是通用的。但是,两者之间没有尖明确的边界,这也是最有用的学习者是促进知识整合的另一个原因。那些你不可不知的机器学习“民间智慧”!

  8 - 更多数据能击败更聪明的算法

  在大多数计算机科学中,这两种主要的有限资源是时间和记忆。在机器学习中,还有第三个:训练数据。哪一个瓶颈已经从十年变为十年了,在八十年代,这往往是数据,在今天往往是时间。大量的数据是可用的,但没有足够的时间来处理它,所以它没有被使用。这导致了一个矛盾:即使原则上有更多的数据意味着可以学习更复杂的分类器,但实际上更简单的分类器被使用,因为复杂的分类器需要很长的时间学习。部分答案是想出快速学习复杂分类器的方法,而且在这方面的确有了显显著的进展。

  使用更聪明的算法的部分原因是有一个比你所期望的更小的回报,第一个近似,他们是一样的,当你认为表述与规则集和神经网络不同时,这是令人惊讶的。但事实上,命题规则很容易被编码为神经网络,其他表征之间也存在类似的关系。所有学习者本质上都是通过将附近的例子分组到同一个类来工作的,关键的区别在于“附近”的含义。在非均匀分布的数据下,学习者可以产生广泛不同的边界,同时在重要的区域(即具有大量训练示例的那些区域)中也做出相同的预测,大多数文本示例可能会出现)。这也有助于解释为什么强大的学习可能是不稳定的,但仍然准确。

  通常,首先尝试最简单的学习者(例如,逻辑回归之前的朴素贝叶斯,支持向量机之前的k-最近邻居)是值得的。更复杂的学习者是诱人的,但他们通常也更难使用,因为他们有更多的旋钮,你需要转向获得好的结果,因为他们的内部是更不透明的)。

那些你不可不知的机器学习“民间智慧”!

  学习者可以分为两大类:表示具有固定大小的线性分类器,以及可以随数据一起增长的表达式,如决策树。固定大小的学习者只能利用这么多的数据。原则上可变大小的学习者可以在给定足够数据的情况下学习任何函数,但实际上由于算法或计算成本的限制,他们可能不会。而且,由于维度的诅咒,不存在大量的数据可能就足够了。由于这些原因,聪明的算法,那些充分利用数据和计算资源的算法,如果你愿意付出努力的话,往往会得到回报。设计学习者和学习分类器之间没有尖锐的边界,相反,任何给定的知识都可以在学习者中编码或从数据中学习。所以机器学习项目往往会成为学习者设计的重要组成部分,当然,从业者需要具备一定的专业知识。

  9 - 学习许多模型,不局限于一个

  在机器学习的早期,每个人都有自己喜欢的学习者,并有一些先验的理由相信它的优越性。大部分努力尝试了很多变化,并选择最好的一个。然后系统的经验比较表明,最好的学习者因应用而异,包含许多不同学习者的系统开始出现。现在努力尝试许多学习者的变化,仍然选择最好的一个。随后研究人员注意到,如果不是选择找到的非常好的变体,我们结合了许多变体,结果会更好 - 通常要好得多 - 而且对用户来说没有额外的工作量。

那些你不可不知的机器学习“民间智慧”!

  现在创建这样的模型集是标准的。在最简单的技术中,称为bagging,我们通过重采样简单地生成训练集的随机变化,分别学习一个分类器,并通过投票结果结合。这是有效的,因为它大大降低了方差,而只是在提高的过程中稍微增加偏差,训练样例有权重,而且这些都是不同的,所以每个新的分类器都集中在前面那些往往会出错的例子上。在堆叠中,单个分类器的输出成为了“高级”学习者的输入,这个学习者能计算出如何最好地组合它们。

  存在许多其他技术,趋势是越来越大的合集。在Netflix奖中,来自世界各地的团队争相构建非常好的视频推荐系统。随着比赛的进行,小组发现他们通过把学习者和其他小组结合起来,取得了最好的成绩,并且合并为更大更大的小组。获胜者和亚军都是由100多名学习者组成的队伍,两个队伍相结合进一步提高了成绩。毫无疑问,我们将来会看到更大的。

  10 - 简单并不意味着准确性

  有一个著名的观点,实体不应该超越必要的范围。在机器学习中,这通常意味着,给定两个具有相同训练错误的分类器,两者中较简单的可能具有最低的测试错误。有关这一说法的证据在文献中经常出现,但事实上有很多反例,而且“不吃免费午餐”定理暗示它不可能是真实的。

那些你不可不知的机器学习“民间智慧”!

  我们在前一节看到一个反例:模型合集合。即使在训练误差已经达到零之后,通过添加分类器,增强集合的泛化误差仍然在不断提高。因此,与直觉相反,一个模型的参数数量与其拟合倾向之间没有必然的联系。

  相反,更复杂的观点将复杂性等同于假设空间的大小,因为较小的空间允许假设由较短的代码表示。像上面的理论保证部分那样的界限可能被认为是暗示更短的假设更好地概括。这可以通过给空间中的假设分配更短的代码给我们先验的偏好,进一步细化。但是,把这看作准确性和简单性之间折衷的“证明”是循环推理:我们提出假设,我们更喜欢简单的假设,如果它们是准确的,那是因为我们的偏好是准确的,而不是因为我们选择的表象中的假设是“简单”的。

  11 - 可表示并不意味着可学

  本质上,所有用于可变规模学习者的表示都具有“每个函数都可以用这种表示方式来表示或近似任意近似”的关联定理。由此得到保证,表示的粉丝经常忽视所有其他表达。但是,仅仅因为一个函数可以表示并不意味着它可以被学习。例如,标准决策树学习者不能比具有训练实例的树叶学习更多。在连续的空间中,使用一组固定的原语表示甚至是简单的函数通常需要无数的组件。

那些你不可不知的机器学习“民间智慧”!

  而且,如果假设空间具有许多评价函数的局部最优值,那么往往是这样,学习者可能找不到真正的函数。给定有限的数据、时间和记忆,标准学习者只能学习所有可能函数的一小部分,这些子集对于具有不同表示的学习者是不同的。因此,关键问题不是“能否表现出来”,这答案往往是微不足道的,而是“可以学会吗?”而且试图尝试不同的学习者(也可能把它们结合起来)是值得的。

  12 - 相关性并不意味着因果关系

  相关性并不意味着因果关系这一点是经常发生的,这也许是不值得去做的。但是,尽管我们所讨论的那种学习者只能学习相关性,但他们的结果往往被视为代表因果关系。这不是错的吗?如果是的话,那么为什么人们要这样做呢?

那些你不可不知的机器学习“民间智慧”!

  通常情况下,学习预测模型的目标是用它们作为行动的指南。如果我们发现啤酒和尿布经常在超市买到,那么也许把啤酒放在尿布的旁边就会增加销量。但是实际上做实验的时候很难说清楚。机器学习通常应用于观测数据,预测变量不受学习者的控制,与实验数据不同。一些学习算法可能潜在地从观测数据中提取因果信息,但是它们的适用性受到限制。另一方面,相关性是一个潜在的因果关系的标志,我们可以用它作为进一步调查的指南。

  结论

  像任何学科一样,机器学习有许多难以实现的“民间智慧”,但对成功至关重要。多明戈斯教授的论文总结了一些你需要知道的最重要的内容。

0
相关文章