Dropout
Dropout
Dropout:训练时根据随机隐藏部分神经元、对应连接边避免 过拟合
固定概率丢弃
Dropout最简单方法:设置固定概率p,对每个神经元以概率p判定 是否需要保留
- $d(x)$:丢弃函数
- $m \in {0, 1}^d$:丢弃掩码,通过概率为p的伯努利 分布随机生成
$p$可以设置为0.5,对大部分网络、任务比较有效
- 此时随机生成多的网络最具多样性
训练时
- 激活神经元数量为原来的p倍
- 每个batch分别进行drop,相当于对每个batch都有独特网络
测试时
- 所有神经元都被激活,造成训练、测试时网络输出不一致, 需将每个神经元输出乘p避免
- 也相当于把不同网络做平均
在预测时,类似bagging技术将多个模型组合
- 只是类似,各个drop后的子网并不独立,在不同子网中相同 神经元的权重相同
- 多个模型组合组合可以一定程度上抵消过拟合
- 因为在训练时子网中部分神经元被drop,剩余部分权重相较 完全网络有$\frac 1 {1-p}$,所以在完整网络中,各部分 权重需要$ * (1-p)$
- 讲道理应该是隐藏部分神经元而不是连接,否则会使神经元偏向 某些输入,还不如隐藏部分神经元,这样可以让神经元随机降低 样本权重,理论上能减弱过拟合
丢弃方法
输入层神经元丢弃率更接近1,使得输入变化不会太大
- 输入层神经元丢失时,相当于给数据增加噪声,提高网络 稳健性
循环神经网络丢弃
- 不能直接丢弃隐状态,会损害循环网络在时间维度上的记忆 能力
- 简单方法:可以考虑对非循环连接进行随机丢弃
- 变分丢弃法:根据贝叶斯对丢弃法是对参数的采样解释,
采样参数需要每个时刻保持不变
- 需要对参数矩阵的每个元素随机丢弃
- 所有时刻使用相同的丢弃掩码
解释
集成学习解释
- 每次丢弃,相当于从原网络采样得到子网络
- 每次迭代,相当于训练不同的子网络,共享原始网络参数
- 最终网络可以近似看作是集成了指数个不同网络的组合模型
贝叶斯学习解释
- 对需要学习的网络$y = f(x, \theta)$,贝叶斯学习假设 参数$\theta$为随机向量
设先验分布为$q(\theta)$,贝叶斯方法预测为
- $f(x, \theta_m)$:第$m$次应用丢弃方法的网络
- $\theta_m$:对全部参数的采样