机器学习的本质:理解泛化的新观点(2)
应该说,这些说法不仅有些杂乱,甚至某些时候是矛盾的。 如果仔细思考,我们会立刻发现下面几个问题:
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%科技创业人才的摇篮, 计算机科学享誉全球)计算神经科学博士,巡洋舰科技有限公司创始人, 《机器学习与复杂系统》纸质书作者。曾在香港浸会大学非线性科学中心工作一年 ,万门童校长好战友。