机器学习的本质: 理解泛化的新观点
人工智能的主题是学习, 从简单的机器学习到深度学习, 我们始终在头疼的一个事情就是过拟合。 对于过拟合, 我们有很多说法, 过拟合对应的是机器死记硬背, 没有能够举一反三的情况。 关于什么是泛化能力, 我们管它叫机器在新数据面前的预测水平。
用一个简单的方法理解过拟合,如果你手中的数据有限,比如说星空里观测到的三个星星, 你可以想象出任何一个复杂的图形穿过那三个点,也是你的想象力丰富多彩,你就可以做出越多这样的图形。事实上,我们知道这样的想象不具备任何预测能力,如果天空中出现第四颗星,我们一定就不能确定它是否在该在的位置上。
过拟合的反面, 就是泛化, 应该说,它就是学习的本质。 否则, 整个机器学习就是一门拟合而已, 深度学习就是比较复杂的拟合。学习的最高境界,是在纷繁的现象里总结出简单的定理,比如看到大量物体运动的轨迹,总结出牛顿定律: F=ma . 但是它的预测能力几乎是无限的。学习, 本来就是在总结规律, 而不是复制数据。
然而翻开机器学习的典籍,关于泛化和过拟合的理解,却非常零碎,表面化。首先,我们回顾,我们看来自不同学派的不同观点和做法:
1, 贝叶斯学派的最简单模型: 学习是从先验到后验概率的转化, 一个好的学习算法, 最重要的事情是用最少的假设,得到对数据出现最大概率的解释 ,每多一个假设 ,整个观测成立的概率就乘以一个小于1的因子, 假设解释理论的概率迅速减少。 这个理念翻译为白话就是“如无必须, 勿添实体”。 来自贝叶斯的一个直接方法论是引入最大后验概率和正则化的概念, 贝叶斯派的核心观点是我们需要简单的模型。 模型的参数直接体现复杂度, 因此贝叶斯观点下参数多而数据少, 就是过拟合的直接原因。
2, 几何派机器学习的风险最小化: 泛化误差的来源是数据的量不够大, 新的没有见过的数据代表着看不见的额风险, 因此我们要泛化风险最小化, 如果是一个分类问题, 意味着你要找一个分类界限,叫已知的数据点离分类边界足够远, 这个想法, 就是maximum margin solution 支持向量机的源泉。
3, 统计机器学习的模型平均: 过拟合的源泉是数据量不够大而模型的参数过多,引起对于数据集的轻微变化, 模型参数剧烈变化, 从而在测试集的表现就是高方差, 训练集稍微一变,结果就变了。
那么如何抵抗过拟合的一个方法就是做平均,每个模型假设可能会犯错误, 把它们平均起来减少了模型在新数据上的方差。 比如说我们最喜欢的决策树, 我们如果把一棵树变成一片森林, 过拟合的风险大大减少, 因此我们得到随机森林。
3, 连接主义学派, 连接主义学派认为, 过拟合的风险来自于神经网络具有无与伦比的拟合能力, 那么如果要削弱过拟合的风险, 我们就加入一个东西, 叫dropout, 我们在训练的时候随机的筛选掉一些连接, 然后如果网络还能做正确分类他就是具有鲁棒性, 这就是连接主义的做法。
应该说,这些说法不仅有些杂乱,甚至某些时候是矛盾的。 如果仔细思考,我们会立刻发现下面几个问题:
1,在机器学习时代,我们希望在同等数据下参数越少越好,而在深度学习时代 ,我们发现模型的范化能力随着参数的增加而增加,层数多了,反而泛化误差的能力更好。更有甚者, 深度学习动辄使用参数的数量大于数据的量,但是模型却不会过拟合。
2,即使机器学习传统的正则方法,也看起来矛盾重重,比如很多模型都没有使得模型更简单而是更复杂,却同样能够减少范化误差。
一种更好的理解方法是,机器学习里说的泛化误差和物理里的熵最大有一种深刻的联系。如果有一个实际观测,有一个模型空间, 这个模型空间的每个模型都代表着我们对真实数据生成过程的一种模拟。 那么我们希望符合实际观测的模型在这个模型空间里越多越好,而不仅仅只有一个, 而且从符合观测到不符合观测的过度要比较均匀,这样我们就可以从容的容纳最多的随机性,这样找到的模型,也就是我们要的泛化能力最高的解。
简单的来说,机器学习的过拟合, 根源于它是一种反向工程。 一组输入, 经过真实世界的变化得到一组输出,比如说人脑看到一个图片就知道是个苹果。机器只是得到了这些输入和输出,就要产生一个模型,跟那个真实世界的产生过程一样。这其实是不可能的,顶多是类似。你所拥有的数据也仅仅是一些特例而已。我们的机器学习黑箱,无论如何学,只是提供可能的关系中的一个版本。你的训练集上的准确度再高,这仅仅是一个巧合而已。 一个经常被用到的比喻就是,如果一个机器学习模型死记硬背的能力超强,它几乎可以把所有的训练集的标签都记下来,然后一个不差的背出(想象一个神经元数量和数据量一样多的神经网络),但是只要数据哪怕改变一点点,它一定出错。
那么如何抵抗这样的问题呢? 其实一个很好的方法就是让这个求得的解不那么凑巧。假如你用不同的方法改变你的数据集, 最终得到的结果是一致的。当年的机器学习经典教材里管这个叫低方差,就是说数据变一变, 结果不太变。 如果你一味追求低方差, 你会发现最后模型就傻了,所以,你还要权衡一下模型的准确度。
我们再看下物理里熵的概念: 对于一个复杂的系统,比如一群分子,一个人群,你要测量其中的某个性质, 比如分子的动能, 人的身高, 这个东西首先具有的性质就是不确定性,由一个概率分布表达。熵用来衡量这个分布的不确定性大小。一个分布具有的可能性越多, 概率分布越均匀,熵就越大。 物理上一个系统往往趋于熵最大的状态, 熵越高系统越稳定。但是真实情况下, 我们只关心在一定限制条件下的熵, 比如体积温度压强,这个时候熵不能随意的增大而是受到限制条件的最大化, 我们通过在熵最大化公式里引入拉格朗日乘子法解决这个问题,也就是受限条件下的最大化问题。
在同样能拟合数据的情况下, 我们需要找到模型空间里那个熵最大的解。 学习器永远不是只有一组参数w,而是一个很多参数组成的空间。 每组参数代表一个假设。什么是好的模型? 一方面你要能给我生成特别多不一样的假设, 也就是模型的容量要足够大, 足够有层次(比如加入深度),这样你具有足够强的拟合能力。 另一方面, 要让符合数据观测的假设足够多, 可能的分布足够均匀, 这也正是熵最大的含义所在。 你找到的解不是那么凑巧得到的, 也就是熵很大,最终, 你在这组解里取一个平均,也就取得了泛化误差最小的解。
一方面模型尽量复杂,一方面有大量行的通的解, 这样就是最好的。 这就把那些特别复杂的模型从潘多拉的魔盒解放了出来。
用这样的观点来看,机器学习和深度学习不同视角下的正则化就不会那么多矛盾:
1, 机器学习, 这个观点在支持向量机算法上体现的淋漓尽致。所谓的max margin solution, 也就是最大间隔,也就是说这个时候两组点之间的隔离带最胖,两组点被分的最开,这个时候,所有出于隔离带里的直线本质都可以把两组点分开,如果一个直线代表模型的一种可能,这个时候就有最多的模型可以解释数据,而我们选择中央的那一条,是因为这个解是所有那些可能的解的平均,因而也就是最安全的。 我们最终把这个解释为结构风险最小。
再看逻辑斯蒂回归,整个逻辑斯蒂回归都可以从熵最大里面推出。事实上,通过交叉熵找到的最后的逻辑斯蒂回归的解, 和支持向量机的解具有一致性。 我们的逻辑斯蒂回归就是加了概率分布的最大间隔解。
2,关于一范数和二范数: 如果有一组数据x,y同时可以被模型w解释,那么我们偏好w较小的(这基于你假定预测数据的分布符合高斯)。 事实上如果你做一个统计实验你会发现,w的模长越小,你在你选择的解周围就有越多差不多也符合观测的解。 相反,如果你的w模长很大,你会发现,你稍微改变w以后, 模型的解释力就很差了。 一范数的道理是类似的, 只不过你假定数据的分布符合拉普拉斯而非高斯分布,同时引入稀疏性。
3 进入到深度学习的世界, 我们看到之前说过的那个矛盾不见了, 因为,增加模型参数不再和过拟合有必然联系,增加模型参数只是增大了可能的模型空间。但是,如果这里面有很多解是符合观测的,那增大的模型空间不但不是诅咒,还是一种福祉。 比如如果你增加了很多层, 但是通过dropout这样的随机减枝操作,你的解不受影响,也就说明有大量的解都符合观测, 也就是说这一组解其实都是泛化能力比较好的。
我们的网络不是宇宙里最特别的那个, 它只是无数个这样的网络里的一元,而最后我们就把这些网络做个平均就可以了, 这正是dropout的道理所在! 一个网络越接近一个随机的网络, 越是在毫不刻意的情况下发现数据里的规律, 就越有可能是泛化能力最好的模型。
再看各类隐式的防止过拟合的手段,比如随机梯度下降,SGD, 随机梯度下降是说每次取一个数据(或一个小批量数据), 由于取数据的这个过程是随机的,带来的参数改变的信息也就有限,也就是带来一个噪声。我们说,这个过程就像物理里的含有一个漂移项的布朗运动,一方面它在往更正确的方向运动,一方面它也在做一个随机游走。Tshiby信息瓶颈的论文指出到了训练后期,我们几乎完全做的是一个随机游走(我们看到训练误差变化不大)。这件事和泛化的联系就很显然了,一个随机游走的过程又不允许训练误差增大,那么它只能寻找那个周围有很大的自由度,或者说附近的解都比较正确的那个参数区域, 这就是泛化的根本。
4, 回看Tshiby的信息瓶颈理论,其实,它里面有新意的东西已然不多了,它所说的,深度网络实现一个信息压缩,也就是一个降维的过程,它符合公式:
而在这其中, 我们也看到深度学习和传统机器学习的潜在不同, 它出现了一个介导T, 也就是我们说的representation。 输入信息X, 先被翻译成表征T, 再达到Y , 从T到Y的过程。
这里说的是, 表征就是被转化出来的特征T, 需要具有两重性, 一方面, 它需要尽量少的含有X的信息, 另一方面, 它们需要尽量多的含有标签Y的信息。
尽量少的含有X的信息, 也就是你要尽可能的不care X里的变化。
如果对这个公式进行处理:
这里的 H(T|H) 就是条件熵,数据本身分布的熵 H(X) 是先天确定的,那么最小化互信息,就是最大化这个条件熵。也就回到了我们刚刚说的,要有尽可能多的模型符合观测数据的同时保存对Y的预测力,也正是泛化的本质,也是深度学习模型能够在变得越来越复杂的同时保有抵抗过拟合能力的关键。
作者简介
作者许铁,微信号:ironcruiser法国巴黎高师物理硕士 ,以色列理工大学(以色列85%科技创业人才的摇篮, 计算机科学享誉全球)计算神经科学博士,巡洋舰科技有限公司创始人, 《机器学习与复杂系统》纸质书作者。曾在香港浸会大学非线性科学中心工作一年 ,万门童校长好战友。