文章目录
Dropout
dropout 主要用于解决训练过程中模型出现过拟合的问题。在模型训练过程中,当训练集上的正确率很高,但验证集上的正确率很低时,即发生了过拟合。解决过拟合的方法有很多,例如利用集成学习的方法,训练多个模型进行组合;减少网络训练的层数;提前终止训练等。此外,Dropout可以比较有效的缓解过拟合的发生,在一定程度上达到正则化的效果。
dropout 简介
(以下参考深度学习中Dropout原理解析)
dropout可解决模型的过拟合问题,其原理是在模型训练的每个批次中,随机的让一半的隐层节点值变为0,这种做法可以让隐层节点之间的相互作用变弱(隐层之间的相互作用是指 某些检测器依赖其他检测器才能发挥作用)。
总而言之,就是在前向传播的过程中,以概率P让某个神经元失活,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征,用图片表示上述过程:
dropout具体工作流程
首先,定义一个标准的神经网络模型;
使用dropout之后,过程变成如下:
1.随机删掉网络中的一半的隐藏神经元(备份被删除的神经元参数);
2.将输入的x通过修改后的网络做前向传播,得到的损失函数做反向传播;一小批训练样本执行这个过程之后,利用梯度下降法更新没有被删除的神经元参数。
3.恢复被删除的神经元,即被删除的神经元参数保持原样(回复备份的参数);
4.重复上述过程
dropout 数学表达
由于dropout在训练时是随机将隐藏层节点设置为0的,所以在前向计算时需要添加一个概率流程。
上述为标准网络和dropout网络前向计算的流程,其中 y i ( l ) y_i^{(l)} yi(l)为这一隐藏层的输入, w i ( l + 1 ) w_i^{(l+1)} wi(l+1)是权重向量, b i ( l + 1 ) b_i^{(l+1)} bi(l+1)是偏倚项, r j ( l ) r_j{(l)} rj(l