动手学深度学习4.6 dropout

参与11月更文挑战的第16天,活动详情查看:2021最后一次更文挑战

模型泛化的补充“平滑性”。

平滑性,即函数不应该对其输入的微小变化敏感。

也就是说一个好的模型需要对输入数据的扰动鲁棒。分为以下两个方面。


1. 使用有噪音的数据等价于Tikhonov正则

1995年,克里斯托弗·毕晓普证明了具有输入噪声的训练等价于Tikhonov正则化[Neural Networks for Pattern Recognition]

《深度学习》第七章的7.5写:对于某些模型而言,向输入添加方差极小的噪声等价于对权重施加范数惩罚(Bishop,1995a, b)。

  • Tikhonov正则化(吉洪诺夫正则化)

    作为最小二乘方法的代价函数 1 2 A x b 2 2 \frac{1}{2}\|\boldsymbol{A} \boldsymbol{x}-\boldsymbol{b}\|_{2}^{2} 的改进, Tikhonov于 1963 年提出使 用正则化最小二乘代价函数

    J ( x ) = 1 2 ( A x b 2 2 + λ x 2 2 ) J(x)=\frac{1}{2}\left(\|A x-b\|_{2}^{2}+\lambda\|x\|_{2}^{2}\right)

    式中 λ 0 \lambda \geqslant 0 称为正则化参数 (regularization parameters)。

  • 也就是说对输入添加极小的噪声可以认为和 L 2 L_2 正则化是一样的。也就是上一节的内容,见:动手学深度学习4.5 正则化 权重衰退推导 - 掘金 (juejin.cn)

2. 丢弃法:在层之间加入噪音

在一般情况下,噪声被添加到隐藏单元时鲁棒性会更加强大。向隐藏单元添加噪声就是Dropout算法的主要发展方向。

在2014年,斯里瓦斯塔瓦等人[Dropout: a simple way to prevent neural networks from overfitting]结合毕晓普的想法,并将其应用于到网络的内部层之间。在训练过程中,在计算后续层之前向网络的每一层注入噪声。他们意识到,当训练一个有多层的深层网络时,注入噪声只会在输入-输出映射上增强平滑性。

这种方法之所以被称为dropout ,因为我们从表面上看是在训练过程中丢弃(drop out)一些神经元。 在整个训练过程的每一次迭代中,dropout包括在计算下一层之前将当前层中的一些节点置零。

在每次训练迭代中,产生扰动点 x \mathbf{x}' 。并要求 E [ x ] = x E[\mathbf{x}'] = \mathbf{x}

在标准dropout正则化中,通过按保留(未丢弃)的节点的分数进行归一化来消除每一层的偏差。如下所示:

h = { 0  概率为  p h 1 p  其他情况 \begin{aligned} h' = \begin{cases} 0 & \text{ 概率为 } p \\ \frac{h}{1-p} & \text{ 其他情况} \end{cases} \end{aligned}

根据设计,期望值保持不变,即 E [ h ] = h E[h'] = h

比如: E [ x i ] = p 0 + ( 1 p ) x i 1 p = x i \begin{aligned} E\left[x_{i}\right] &=p \cdot 0+(1-p) \frac{x_{i}}{1-p} =x_{i} \end{aligned}

实践中的dropout:

image.png

h = σ ( W 1 x + b 1 ) h = dropout ( h ) o = W 2 h + b 2 y = softmax ( o ) \begin{aligned} &\mathbf{h} =\sigma\left(\mathbf{W}_{1} \mathbf{x}+\mathbf{b}_{1}\right) \\ &\mathbf{h}^{\prime}=\operatorname{dropout}(\mathbf{h}) \\ &\mathbf{o} =\mathbf{W}_{2} \mathbf{h}^{\prime}+\mathbf{b}_{2} \\ &\mathbf{y} =\operatorname{softmax}(\mathbf{o}) \end{aligned}

当我们将dropout应用到隐藏层,以 p p 的概率将隐藏单元置为零时,结果可以看作是一个只包含原始神经元子集的网络。在下图中,删除了 h 2 h_2 h 5 h_5 。因此,输出的计算不再依赖于 h 2 h_2 h 5 h_5 ,并且它们各自的梯度在执行反向传播时也会消失。这样,输出层的计算不能过度依赖于 h 1 , , h 5 h_1, \ldots, h_5 的任何一个元素。


image.png

《退学率》


《动手学深度学习》系列更多可以看这里:《动手学深度学习》 - LolitaAnn的专栏 - 掘金 (juejin.cn)

笔记还在更新中…………

猜你喜欢

转载自juejin.im/post/7031069703179239437