李宏毅机器学习课程笔记-6.1神经网络训练问题与解决方案
明确问题类型及其对应方法
在深度学习中,一般有两种问题:
- 在训练集上性能不好
- 在测试集上性能不好。
当一个方法被提出时,它往往是针对这两个问题其中之一的,比如dropout方法是用来处理在测试集上性能不好的情况。
处理神经网络在训练集上性能不好的情况的方法
- 
修改神经网络架构,比如换成更好的激活函数 sigmoid函数会导致梯度消失,可以换成ReLU、Leaky ReLU、Parametric ReLU、Maxout 
- 
调整学习率 比如RMSProp、Momentum、Adam 
处理神经网络在测试集上性能不好的情况的方法
- 
Early Stopping、Regularization,这两个是比较传统的方法,不只适用于深度学习 
- 
Dropout,比较有深度学习的特色 
一些性能优化方法的简介
下面3点都是在增加模型的随机性,鼓励模型做更多的exploration。
- 
Shuffling 输入数据的顺序不要固定,mini-batch每次要重新生成 
- 
Dropout 鼓励每个神经元都学到东西,也可以广义地理解为增加随机性 
- 
Gradient noise 2015年提出,计算完梯度后,加上Gaussian noise。 随着迭代次数增加,noise应该逐渐变小。 
下面3点是关于学习率调整的技巧
- 
warm up 开始时学习率较小,等稳定之后学习率变大 
- 
Curriculum learning 2009年提出,先使用简单的数据训练模型(一方面此时模型比较弱,另一方面在clean data中更容易提取到核心特征),然后再用难的数据训练模型。 这样可以提高模型的鲁棒性。 
- 
Fine-tuning 
下面3点是关于数据预处理的技巧,避免模型学习到太极端的参数
- 
Normalization 有Batch Normalization、Instance Normalization、Group Normalization、Layer Normalization、Positional Normalization 
- 
Regularization 
Github(github.com):@chouxianyu
Github Pages(github.io):@臭咸鱼
知乎(zhihu.com):@臭咸鱼
博客园(cnblogs.com):@臭咸鱼
B站(bilibili.com):@绝版臭咸鱼
微信公众号:@臭咸鱼
转载请注明出处,欢迎讨论和交流!
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号