作者:H_debug | 来源:互联网 | 2023-08-11 16:28
深度学习笔记(15) 人的表现
- 1. 人的表现
- 2. 可避免偏差
- 3. 理解人的表现
- 4. 超过人的表现
- 5. 改善模型的表现
1. 人的表现
在过去的几年里,更多的机器学习团队一直在讨论如何比较机器学习系统和人类的表现
两个主要原因:
- 深度学习系统的进步,在许多机器学习的应用领域已经开始见到算法已经可以威胁到人类的表现了
- 事实证明,当试图让机器做人类能做的事情时,可以精心设计机器学习系统的工作流程,让工作流程效率更高
所以在这些场合,比较人类和机器是很自然的,或者是要让机器模仿人类的行为
x 轴是时间,当开始往人类水平努力时,进展是很快的
但是过了一段时间,当这个算法表现比人类更好时,那么进展和精确度的提升就变得更慢了
随着时间的推移
当继续训练算法时,可能模型越来越大,数据越来越多
但性能是无法超过某个理论值上限
这就是贝叶斯最优错误率(Bayes optimal error)
贝叶斯最优错误率有时写作Bayesian,即省略optimal
就是从x到y映射的理论最优函数,永远不会被超越
所以这紫色线
无论在一个问题上工作多少年,永远不会超越贝叶斯错误率,贝叶斯最佳错误率
有两个原因,为什么当超越人类的表现时,进展会慢下来
-
人类水平在很多任务中离贝叶斯最优错误率已经不远了
人们非常擅长看图像,分辨里面有没有猫或者听写音频
所以,当超越人类的表现之后也许没有太多的空间继续改善了
-
一旦超越了人类的表现,提高性能工具就没那么好用了
对于人类相当擅长的任务,包括看图识别事物,听写音频,或阅读语言
人类一般很擅长处理这些自然数据
对于人类擅长的任务,只要机器学习算法比人类差,就可以标记数据
这样就有更多的数据可以喂给学习算法
2. 可避免偏差
用猫分类器来做例子,比如人类具有近乎完美的准确度,所以人类水平的错误是1%
在这种情况下,如果学习算法达到8%的训练错误率和10%的开发错误率
算法在训练集上的表现和人类水平的表现有很大差距的话
说明算法对训练集的拟合并不好
所以从减少偏差和方差的工具这个角度看,在这种情况下,应把重点放在减少偏差上
需要做的是,比如说训练更大的神经网络,或者梯度下降久一点
但也许数据集中的图像非常模糊
即使人类都无法判断这张照片中有没有猫,假设人类水平错误实际上是7.5%
此时系统在训练集上的表现还好,它只是比人类的表现差一点点,没有太多改善的空间了
不能继续减少训练错误率了
但训练误差和开发误差之间有更多的改进空间
可以将这个2%的差距缩小一点,使用减少方差的手段
比如正则化,或者收集更多的训练数据
贝叶斯错误率或者对贝叶斯错误率的估计和训练错误率之间的差值称为可避免偏差
这理论上是不可能超过贝叶斯错误率的,除非过拟合
而训练错误率和开发错误率之前的差值
就大概说明算法在方差问题上还有多少改善空间
3. 理解人的表现
在医学图像诊断例子中,要观察这样的放射科图像并做出分类诊断
假设普通的人类,未经训练的人类,在此任务上达到3%的错误率
普通的医生,也许是普通的放射科医生,能达到1%的错误率
经验丰富的医生做得更好,错误率为0.7%
还有一队经验丰富的医生,讨论并辩论,达成共识的意见达到0.5%的错误率
假如系统的训练错误率是5%,开发错误率是6%,
可避免偏差大概是2%,4%,4.3%,4.5%,这明显比都比方差问题1%大
所以在这种情况下,应该专注于减少偏差的技术,例如培训更大的网络
所以此时贝叶斯错误率小于等于0.5%,最优错误率必须在0.5%以下
比如系统的训练错误率是0.7%,所以你现在已经做得很好了
开发错误率是0.8%,在这种情况下,用0.5%来估计贝叶斯错误率关系就很大
因为在这种情况下,可避免偏差是0.2%,是方差问题0.1%的两倍
这表明也许偏差和方差都存在问题,但可避免偏差问题更严重
如果用0.7%代替贝叶斯错误率,可避免偏差基本上是0%,那就可能忽略可避免偏差了
实际上应该试试能不能在训练集上做得更好
更好的估计贝叶斯错误率,可以帮助更好地估计可避免偏差和方差
能够更好的做出减少偏差或减少方差的策略
4. 超过人的表现
一组人类专家充分讨论辩论之后,达到0.5%的错误率,单个人类专家错误率是1%
训练出来的算法0.6%的训练错误率,0.8%的开发错误率
可避免偏差的估计是至少0.1%,然后方差是0.2%
和减少可避免偏差比较起来,减少方差可能空间更大
但出来的算法0.3%训练错误率,还有0.4%开发错误率
这是否意味着过拟合了0.2%,或者说贝叶斯错误率其实是0.1%呢?或者也许贝叶斯错误率是0.2%?
真的不知道
实际上没有足够的信息来判断优化算法时应该专注减少偏差还是减少方差
这样进展效率就会降低
所以要达到超越人类的表现往往不容易
但如果有足够多的数据,已经有很多深度学习系统,在单一监督学习问题上已经超越了人类的水平
所以这对开发的应用是有意义的
5. 改善模型的表现
减少可避免偏差的策略:
- 规模更大的模型,这样算法在训练集上的表现会更好
- 训练更久
- 更好的优化算法,比如说加入momentum或者RMSprop
- 更好的算法,比如Adam
- 更好的新神经网络架构,如循环神经网络和卷积神经网络
- 更好的超参数
- 改变激活函数,改变层数或者隐藏单位数,虽然这么做可能会让模型规模变大
减少方差的策略:
- 收集更多数据,因为收集更多数据去训练可以更好地推广到系统看不到的开发集数据
- 尝试正则化,包括L2正则化,dropout正则化或者之前提到的数据增强
- 试用不同的神经网络架构
- 超参数搜索
参考:
《神经网络和深度学习》视频课程
相关推荐:
深度学习笔记(14) 评估指标
深度学习笔记(13) Softmax分类
深度学习笔记(12) Batch归一化网络
深度学习笔记(11) 超参数调试
深度学习笔记(10) 优化算法(二)
谢谢!