一.训练误差来源:bias、variance
李宏毅机器学习tips for deep learning
通过NN模型得到的f的均值和真实值之间的差值为bias
f和均值之间的差值为variance
(1)underfitting:bias大,variance小;modle无法拟合trainning data
解决方法:redesign model:增加更多的属性或用更复杂的model
(2)overfitting:bias小,variance大;model可以拟合training data,但是在testing data上误差较大
解决方法:增加训练数据或regularization
regularization(正则化)
在loss函数后加一个正则项,防止过拟合
L1正则化:
L2正则化:
目的是使参数也足够小,这样得到的函数就是一个比较平滑的函数,而不是像上图三中波动很大的函数,较平滑的函数往往认为是比较正确的
二.分别在training data和testing data上效果不好的解决办法
1.在training data上效果不好:new active functions,adaptive learning rate
(1)new active functions:sigmoid、ReLU、MaxOut
https://blog.csdn.net/qq_38517015/article/details/102526564
(2)adaptive learning rate:
learning rate:在梯度下降法中更新参数值时
中的yita就是learning rate,表示更新参数快慢
方法一:Adagrad
方法二:RMSProp
方法三:Momentum
2.在testing data上效果不好(overfitting):early stopping,regularization,dropout
(1)early stopping
如图所示,随着训练进度,对training data的损失越来越小,但是对testing data的误差先是变小,然后变大,后面就出现过拟合的情况,所以如果能停在如图指示地方最好。训练时,把training data分为training set和validation set ,在训练时,既计算training set的误差,也计算validation set的误差,保证在training data误差足够小的情况下,validation set误差最小
(2)regularization:第一类中已介绍
(3)dropout:
链接:https://www.jianshu.com/p/32c3a1ab0f9d
上图为Dropout的可视化表示,左边是应用Dropout之前的网络,右边是应用了Dropout的同一个网络。
Dropout的思想是训练整体DNN,并平均整个集合的结果,而不是训练单个DNN。DNNs是以概率P舍弃部分神经元,其它神经元以概率q=1-p被保留,舍去的神经元的输出都被设置为零
dropout中使用了ensemble的思想,相当于训练了很多个网络,然后取均值,所以效果比较好