title: 深度学习的理论发展 key: 2023-6-24-3 tags:
- 机器学习
- 深度学习
modify_date: 2023-6-24
author: 徐文江
show_author_profile: true
—
B站up狗中赤兔最近更新的视频,看了一下挺有意思,解释如何在大规模参数的深度学习领域选择适合的模型,但是每次看up的视频就感觉到数学公式就开始加速,下次有时间再看懂吧。。
不知道大家有没有听说过这个说法
一旦理论界有了什么新的东西
它一般都是非常伟大的
所以如果理论界有了一个新的学生呢
大家是不是可以把伟大打在公屏上
虽然说有的人吧他在实践上是个矮子
在理论上是个矮子
他连身高上都是个矮子
但是万一他非常伟大呢
倒也并不能怪我在理论上是一个矮子
因为深度学习的理论
他的确是比实践要矮上那么一截的
深度学习的发展主要都是依赖于实验的
但是仅仅是实验层面的结构
是并不足以让我们去充分理解
深度学习模型的泛化能力的
他缺乏了坚实的理论基础
对我们来说
深度学习的模型就是一个黑盒
我们只知道这些模型效果很好
比如我们知道和gb t的聊天体验非常丝滑呀
用diffusion模型可以生成漂亮的纸片人老婆
但是为什么我们能达到这么好的效果呢
我们要怎么去验证
去保障他们能得到什么好的效果呢
像chat gbt啊
或者stable diffusion
这种让我们自娱自乐的模型还好说
但是像是自动驾驶或者医疗诊断这种领域
如果我们对模型为什么能成功
没有一个准确的把握的话
会有很大的风险的这种领域
它有一点点小错
就可能会导致致命的灾难
所以我们这些搞泛化理论的人
就想去找到深度学习模型
分化误差的上学界
我们希望能够通过泛化误差件去解释
为什么深度学习模型的效果这么好
于是呢
这个困扰了整个领域多年的问题
就落在了一位极懒馋笨于一身的小学生身上
接下来呢我们有请这位油盐不进
好吃懒做脸皮赛长城的小同学
为我们带来单口相声
深度学习的泛化理论
我们今天要讲的故事是从2017年sl 2
的一篇best paper开始的
这篇文章的标题叫做understanding deep learning
requires
rethinking generalization
也就是理解深度学习需要重新思考泛化
我们把泛化定义为模型
经过训练后在新的数据上做出准确预测的能力
如果我们的模型在训练集上效果好
但是在训练集以外的数据上表现不好
这是什么
过拟合
也就是没有繁华
在传统的机器学习理论里
我们认为
一个模型需要比参数量多得多的训练数据
才能训练出一个有意义的拟合
其实奥卡姆剃刀原则也表达了类似的观点
如果两个模型在训练集上的效果同样好
我们应该选那个参数更少的
因为他更有可能学到了数据背后的规律
而不是暴力
借助了这个训练数据
我们想想现在效果最好的这些模型
有些能达到百亿甚至千亿个参数
很明显
对传统的机器学习理论来说
这些模型过参数化了
但是他们的效果实在是太好了
他们表现出来的效果和机器学习理论是相悖的
这个问题是deep learning这个领域
大家都早就心知肚明了的一个问题
但是大家都非常有默契的对这个问题避而不谈
英语里有一个梗叫做elephant in the room
大概是只存在一个像大象一样很大
很明显的一个问题
但是不知道为什么大家都对这个问题视而不见
那么神经网络的泛化能力其实就是这么一只
elephant in the room
那么这篇文章就指出来了
传统的机器学习理论
那些只关注假设空间的capability
而不考虑优化的那一套
已经不足以去解释深度学习的方法表现了
于是作者设计了一些实验去揭示这些现象
首先他们用了各种手段去污染训练数据
比如重新排序样本的像素点
把样本替换成和原来样本同样
均值和方差的高斯噪声
或者是把标签替换成随机标签
总之是坏事做尽
结果我们发现诶无论怎么做
神经网络都可以把训练误差学到零
只不过随着污染的加重
我们是可以观察到它的收敛速度会变慢的
并且它的泛化误差也会相应增长
那也就是说明
神经网络的容量
是足以去记住所有的训练样本的
那这就很奇怪了
他明明可以暴力过拟合的
那为什么训练的时候他还能学到泛化能力呢
既然我们的模型容量已经足以去暴力
你和我们的数据集了
那么在传统的机器学习理论里
像vc维呀
remer complicity啊
这一系列基于模型容量的分化理论
就不不足以去解释深度学习模型的泛化能力了
这个时候我们是不是就不得不重新去思考
深度学习模型的泛化能力的根源了
那么既然是重新思考泛化
我们之前是怎么去思考泛化的呢
我们之前提到过
从理论上去分析深度学习模型的泛化能力
是非常难的
是他为什么这么难呢
在统计学习理论里
我们有一系列衡量模型
假设空间复杂度的工具
比如之前提到过的vc维啊
remarker complicity啊
covering numbers这种
然后我们会通过模型的复杂度来得到一个方法
误差接
但是这些方案误差上界是显示
依赖于模型的大小的
也就是说他们得到的结论是
我们的模型容量
或者说复杂度在比较小的情况下
它的泛化能力是会更好的
但是我们在实验中观测到的现象是这样的吗
显然不是的
我们所观测到的是深度学习的模型
虽然明显过度参数化了
但是他的表现是非常好的
那么如果我们可以去证明
深度学习模型的容量和参数的数量
并不是直接相关的
是不是就有办法去解释
为什么深度学习模型这么成功
那么现在我们来看一下
之前的工作都是怎么去尝试分析
神经网络的泛化性能的
vc维是我们在机器学习里经常用于衡量模型
假设空间复杂度的一个概念
在2017年
哈维等人就尝试了去证明神经网络的vc维
上届发现神经网络的vc维和模型的参数量w
还有模型的神经元数量u是直接相关的
我们知道现在模型的参数量是非常大的
这样会导致我们得到的泛化误差上界大的离谱
而且vc维和数据分布是无关的
他对任何的数据分布都是成立的
所以用它对泛化能力进行分析
是具有一定的普适性的
所以通过vc v得到的分化无差接是比较松的
这个结论也在一定程度上告诉我们
从v4 维的角度去分析
深度学习模型的泛化能力是非常难的
那么有什么其他方法
既能刻画假设空间的复杂度
又能一定程度把数据集的分布也考虑进来呢
这个时候我们可以去考虑用red mer complicity
来分析方法
误差界
ramer conversity是通过计算我们假设空间的函数
拟合随机噪声的能力
来反映我们假设空间的丰富度
通过remap complicity得到的方法
无插件不再直接依赖于模型的规模了
而是和参数的模还有网络的深度相关
但是目前用ramer complicity得到的bd
依然不足以去解释深度学习模型的泛化
我们想想这种传统的方法
是不是忽略掉了什么呢
我们是不是只考虑到了模型的假设空间
但是我们使用的随机梯度下降
让我们的模型只探索了假设空间中的一小部分
所以我们是不是应该把随机梯度下降
也作为
解释深度学习泛化能力的一个主要因素呢
我们知道深度神经网络的损失函数
可能会存在多个局部极小值
比如我们看到的这个函数
它有两个极小值点
一个会更平坦一些
一个是更尖锐一些的
他们在训练集上的loss都是一样的
但是他们可能具有非常不一样的方法能力
我们可以看到一个尖锐的极小值点
它对扰动是十分敏感的
如果我们给这两个极小值上的数据点
分别加上一个很小的随机噪声优
我们可以看到这样很小的扰动
对平坦的极小值点
附近的点不会产生很大的影响
但是尖锐的极小值会因为一点很小的扰动
而对结果产生很大的改变
这样的话在测试集上数据偏移一点点
就能很大程度上影响模型的输出
这个说明什么
说明平坦的极小值点有着更好的鲁棒性
所以普遍来说
我们认为平坦的技巧值点的泛化能力是更好的
那么我们是不是可以从寻找平坦的极小值点
来入手
对模型的泛化性能进行分析呢
比如说在这个图像里
我们的横坐标是假设空间
纵坐标是经验风险
它所表示的是每一组参数
在我们的数据集上所达到的经验误差
我们可以看到在w和w p的时候
我们的模型分别达到了两个极小值点
其中一个比较平坦
另一个比较尖锐
那么现在我们可以找到两个分布
q和q撇
它们分别是从假设空间h的概率
测度空间中学习得到的一个关于参数的分布
我们的每一个假设
都是从这个分布中采样得到的
因为w这个点附近比较平坦
它对于扰动不会过于敏感
所以w附近的这个分布
q它的期望风险其实是和w的风险比较接近的
而wp附近的点它对于扰动是比较敏感的
于是q撇的期望风险可能就会和w撇的风险差
距比较大一些
那就这个我们可以去固定一个先验分布p
来帮我们找到这个更平坦的最优解
下面的这个泛化误差界
是在1999年由macaster提出来的
最早的pc bb
它是通过度量先验分布p和后验分布q之间
的距离来计算方法误差界的
我们之前提到的传统机器学习里的泛化能力
分析方式
都是从模型的假设空间里选择一个最优的假设
现在我们来换一个思路
我们不去找一个单一的假设了
我们现在去考虑参数的分布
我们通过优化这个分布来得到一个更简的方法
误差上界
这样看的话
虽然我们的上界对任何先验分布p都成立
但是p的选择会直接影响我们上届的紧实程度
早期的payption理论
基本都是选择不依赖于数据的鲜艳的
但是近期也有一些研究发现
依赖数据的鲜艳可以得到更好的方法
误差上界
骑士派bass还有一个比较有意思的点
他其实是把频率学派和贝叶斯学派的观点
结合在了一起
因为p a c
它本来就是频率学派角度下的一个框架
所以我们在做的就是在频率学派的视角
搞贝叶斯推断
而且和贝叶斯推断的不同的地方是
pc pation理论中
我们不需要假设我们的先验是正确的
我们今天就先到这里啦
拜拜