深度学习--超参调试-正则化及优化1
偏差与方差:
https://blog.****.net/wuzqChom/article/details/75091612
由上面的公式可知,偏差描述的是算法的预测的平均值和真实值的关系(可以想象成算法的拟合能力如何),而方差描述的是同一个算法在不同数据集上的预测值和所有数据集上的平均预测值之间的关系(可以想象成算法的稳定性如何)。 (ps:个人认为可以把偏差认为是单个模型的学习能力,而方差则描述的是同一个学习算法在不同数据集的不稳定性)
高偏差:拟合能力差,更深的网络/ 训练更久/ 更适合的网络,直到偏差变小,能够拟合训练集
此时如果方差高,增加更多训练数据/ 正则化/ 更适合的网络
训练更大的网络,训练时间更久,此时可用正则化:
lambd是超参数,正则化lamda参数相当于权重衰减(weight decay)
lamda很大,weight~0,让一些权重变得很小,对结果影响更小,L1可让weight为0,进而减小网络复杂度。
正则化的解释:lamda大,w小,z小,tanh位于接近线性的部分,多个线性还是线性,减弱了网络对非线性的拟合能力,进而减小了网络复杂度,调整梯度下降时,不加正则项,可能不会每一次迭代都递减,加入正则后可能可以????
dropout正则化:
遍历节点删除;dropout实现,注意为了保证z的期望值不变,正则化之后需要处以keep-out,keepout一般=0.8,0.9
测试阶段正常推理就好。
dropout解释:不愿给某一个节点设太大的权重,因为下次迭代可能被删除,避免结果特别依赖某一个特征;
收缩权重平方范数的效果,正则化的替代形式,共嫩那个类似于L2正则化;
实现细节注意,不同层keepout参数可能设置不同,如下图
dropout缺点:代价函数J不能被明确定义,每次参数都不一样,不能保证单调递减进行调试,一般关掉dropout进行调试
其他避免过拟合方法:
数据增广:水平翻转图片,裁剪图片放大回原尺度输入,字符识别,旋转,变形处理等
early stopping:选择w范数较小的神经网络,及时停止,防止过拟合
优化算法:梯度下降,adam
不过拟合:以上
超参数激增,找到合适的参数越来越复杂
加速网络训练的方法:
归一化输入:零均值->标准化
注意:我们希望训练数据和测试数据用相同的U和G2,即定义相同的数据变换,而不是测试集再重新计算一个均值和方差(都通过训练集得到)
输入特征处于不同范围,归一化很重要;更容易优化,学习率也可设置大一些,更快得到最优化 解
梯度消失或梯度爆炸:如何选择随机初始化值
如图,**函数的输入值或梯度将指数级增加或减小,训练很难收敛---》选择初始化权重
梯度数值逼近:使用双边误差,不用单边误差,用于校验反向传播是否正确
梯度校验:查看神经网络实施(代码)是否有bug,正常情况下是这样的,如下图
1)只用于调试,不用于训练,很慢
2)看哪一项大,调试那一层
3)不要忘记正则项
4)梯度校验不能与dropout同时使用:难以计算J下降多少