训练时,要避免的一个情况是过拟合(overfitting)。过拟合就是机器能够记住个别训练样本的正确答案,但不能进行泛化,泛化则是适用于不同的数据。避免过拟合最简单的方法是在验证系统时,使用没有在训练中出现过标记数据集。如果系统在验证时性能和训练时大致相同,那么就可以确信系统真的学会了如何发现数据中的一般模式,而不仅仅是记住了训练样本。这实际上和让学生考试的理由相同,测验时考的都是以前没有见过的问题,而不仅仅是重复在课堂上学到的例子。 每个机器学习系统都有参数——否则就没什么可学习的了。简单的系统可能只有比较少的参数。增加参数数量可以让系统学会更复杂的关系,成为更强大的学习者,输入输出间的关系越复杂,系统错误率就越低。另一方面,更多的参数也让系统能够记住更多的训练数据,因而也更容易产生过拟合。这意味着在参数数量和所需的训练数据的数量之间有一个关系。 现代的复杂的机器学习技术,如卷积神经网络(CNN)有数百万个参数,因此需要大量的训练数据避免发生过拟合。获得足够多带标签的数据来训练和测试系统,通常是机器学习研究者面临的最大的实际挑战。 示例:确定照片拍摄时间 卷积神经网络应用十分广泛,性能也非常强大。例如,Ilya Kostrikov 和 Tobias Weyand 提出的 ChronoNet,这个 CNN 可以猜测拍摄照片的年份。他们使用的数据是在过去 100 年间拍摄已知的日期的照片,这些照片都带了某种程度的标签(在这种情况下为日期照片),因此获取标记数据用于训练这个网络相对来说比较简单。 一旦网络被训练好,就可以输入照片,可以看出系统猜测拍摄的那一年。 例如,以下两张照片都是 ChronoNet 猜测1951(左)和1971(右):
图2 深度学习猜测拍摄年份的照片 这些都是很好的猜测。左边的照片在 1950 年在斯德哥尔摩海滨拍摄的,右边的照片则是 1972 年尼克松在亚特兰大州发表竞选演说,旁边是尼克森夫人。 神经网络究竟是如何计算出来的?从机械学的角度来看,数百万个学习参数只是一系列加权平均计算中使用的权重。从原始像素值开始,加权平均值被组合,然后用作相似的计算集合的输入,然后又被用作另一个类似的计算集合的输入,等等——在多层网络中创建一个级联的加权平均计算。[3] 在 ChronoNet 中,最后一层的输出对应的是照片拍摄可能年份的概率值。虽然在技术上是正确的,但这个“概率”是无法解释的;让一位人类专家判断这两张照片的年代,他同样可以说:“我这样回答,是因为我的神经元就是这么连在一起的。” 事实上,像人类专家一样,人工神经网络很可能学到了发现各种细微线索,从低级属性,如胶片颗粒和色域(电影处理技术在 20 世纪得到了长足的发展)到衣服和发型,乃至车型和字体。上面那张斯德哥尔摩照片中的扬声器和婴儿车的风格也可能是线索。自 2006 年以来,所谓的深度学习进一步加快了人工智能的快速发展,与任务(颜色、汽车模型等)相关的特征可以被隐含地学习,为更高层次的目标(比如猜测照片拍摄年代)服务。[4] 以前的机器学习方法也可能已经达到了猜测照片拍摄年代的高级目标,但是需要手工编写计算机代码,从原始图像中提取字体和发型等特征。让计算机能够端到端的学习一个复杂的问题,省去了编码这样的定制工作,大大加快了开发速度,也经常大幅地提高了结果的准确率。 这既机器学习的力量也是这种方法的危险,特别是深度学习。深度学习的力量我们是清楚的:一般的方法可以发现各种不同问题中的隐含关系;系统本身会去寻找去学习的内容。而深度学习的危险则来自于一个科学家或工程师可以轻松地设计一个分类任务,让机器在不了解任务实际测量的内容,或者系统实际发现的模式的前提下,进行很好的学习。这种情况下,机器“如何”或“为什么”做出判断就变得很重要了,尤其是涉及到判断一个人的性格或犯罪情况时。 论文摘要 (责任编辑:本港台直播) |