深度学习中的正则化技术 - Dropout篇

序言

在深度学习的浩瀚领域中,模型过拟合一直是研究者们面临的挑战之一。当模型在训练集上表现得近乎完美,却难以在未见过的数据(测试集)上保持同样优异的性能时,过拟合现象便悄然发生。为了有效缓解这一问题, Dropout \text{Dropout} Dropout技术应运而生,成为深度学习工具箱中的一把利器。 Dropout \text{Dropout} Dropout的核心思想在于,在训练过程中随机地“丢弃”(即暂时忽略)神经网络中的一部分神经元及其连接,使得每次迭代时网络结构都有所不同。这种“集成学习”的策略迫使网络学习到更加鲁棒、泛化能力更强的特征表示,而非过分依赖于训练数据中的噪声或细节。

Dropout \text{Dropout} Dropout

  • D r o p o u t \bold{Dropout} Dropout(Srivastava et al., 2014) 提供了正则化一大类模型的方法,计算方便但功能强大。

    • 第一种近似下, Dropout \text{Dropout} Dropout可以被认为是集成非常多的大神经网络的实用 Bagging \text{Bagging} Bagging方法。
    • Bagging涉及训练多个模型,并在每个测试样本上评估多个模型。当每个模型是一个大型神经网络时,这似乎是不切实际的,因为训练和评估这样的网络需要花费很多运行时间和内存。
    • 通常只能集成五至十个神经网络,如Szegedy et al. (2014a) 用六个赢得 I L S V R C \bold{ILSVRC} ILSVRC,超过这个数量就会迅速变得难以处理。
  • Dropout \text{Dropout} Dropout提供了一种廉价的 Bagging \text{Bagging} Bagging集成近似,能够训练和评估指数级的神经网络。

  • 具体而言, Dropout \text{Dropout} Dropout训练的集成包括所有从基本的基础网络除去非输出单元形成子网络,如在图例1所示。

    • 最先进的神经网络基于一系列仿射变换和非线性变换,我们可以将一些单元的输出乘零就能有效地删除一个单元。
    • 这个过程需要对模型一些修改,如径向基函数网络,单元的状态和参考值之间存在一定区别。
    • 为了简单起见,我们在这里提出乘零的简单 Dropout \text{Dropout} Dropout算法,但是它被简单地修改后,可以与从网络中移除单元的其他操作一起工作。
  • 回想一下使用 Bagging \text{Bagging} Bagging学习,我们定义 k k k个不同的模型,从训练集有替换采样构造 k k k个不同的数据集,然后在训练集 i i i上训练模型 i i i

    • Dropout \text{Dropout} Dropout的目标是在指数级数量的神经网络上近似这个过程。
    • 具体来说,训练中使用 Dropout \text{Dropout} Dropout,我们使用基于 minibatch \text{minibatch} minibatch的学习算法和小的步长,如梯度下降等。
    • 我们每次在 minibatch \text{minibatch} minibatch加载一个样本,然后随机抽样应用于网络中所有输入和隐藏单元的不同二值掩码。
    • 对于每个单元,掩码是独立采样的。
    • 掩码值为 1 1 1的采样概率(导致包含一个单元)是训练开始前固定一个超参数。
    • 它不是模型当前参数值或输入样本的函数。
    • 通常一个输入单元包括的概率为 0.8 0.8 0.8,一个隐藏单元包括的概率为 0.5 0.5 0.5
    • 然后,我们运行之前一样的前向传播、反向传播以及学习更新。
    • 图例2说明了在 Dropout \text{Dropout} Dropout下的前向传播。
    • 更正式地说,假设一个掩码向量 μ \mu μ制定被包括的单元, J ( θ , μ ) J(\boldsymbol{\theta},\boldsymbol{\mu}) J(θ,μ)是由参数 θ \boldsymbol{\theta} θ和掩码 μ \boldsymbol{\mu} μ定义的模型代价。
    • 那么 Dropout \text{Dropout} Dropout训练在于最小化 E μ J ( θ , μ ) \mathbb{E}_{\mu}J(\boldsymbol{\theta},\boldsymbol{\mu}) EμJ(θ,μ)。期望包含指数多的想,但我们可以通过抽样 μ \boldsymbol{\mu} μ获得梯度的无偏估计。
  • Dropout \text{Dropout} Dropout训练与 Bagging \text{Bagging} Bagging训练不太一样

    • Bagging \text{Bagging} Bagging的情况下,所有模型是独立的。
    • Dropout \text{Dropout} Dropout的情况下,模型是共享参数的,其中每个模型继承的父神经网络参数的不同子集。
    • 参数共享使得在有限可用的内存下代表指数数量的模型变得可能。
    • Bagging \text{Bagging} Bagging的情况下,每一个模型在其相应训练集上训练到收敛。
    • Dropout \text{Dropout} Dropout的情况下,通常大部分模型都没有显式地被训练,通常该模型很大,以致到宇宙毁灭都不能采样所有可能的子网络。取而代之的是,可能的子网络的一小部分训练单个步骤, 参数共享导致剩余的子网络能有好的参数设定。这些是仅有的区别。
    • 除了这些, Dropout \text{Dropout} Dropout Bagging \text{Bagging} Bagging算法一样。例如,每个子网络中遇到的训练集确实是替换采样的原始训练集的一个子集。
  • Bagging集成必须从所有成员的累积投票做一个预测。在这种背景下,我们将这个过程称为推断 (inference)。

  • 目前为止, Dropout \text{Dropout} Dropout Bagging \text{Bagging} Bagging的描述中没有要求模型具有明确的概率

    • 现在,我们假定该模型的作用是输出一个概率分布。
    • Bagging \text{Bagging} Bagging的情况下,每个模型 i i i产生一个概率分布 p ( i ) ( y ∣ x ) p^{(i)}(y\mid \boldsymbol{x}) p(i)(yx)
      • 集成的预测由这些分布的算术平均值给出: 1 k ∑ i = 1 k p ( i ) ( y ∣ x ) — 公式1 \frac{1}{k}\sum\limits_{i=1}^k p^{(i)}(y\mid \boldsymbol{x})\quad\textbf{---\footnotesize{公式1}} k1i=1kp(i)(yx)公式1
    • Dropout \text{Dropout} Dropout的情况下,通过掩码 μ \boldsymbol{\mu} μ定义每个子模型的概率分布 p ( y ∣ x , μ ) p(y\mid \boldsymbol{x},\boldsymbol{\mu}) p(yx,μ)
      • 关于所有掩码的算术平均值由下式给出:
        ∑ u p ( μ ) p ( y ∣ x , μ ) — 公式2 \sum\limits_u p(\boldsymbol{\mu})p(y\mid \boldsymbol{x},\boldsymbol{\mu})\quad\textbf{---\footnotesize{公式2}} up(μ)p(yx,μ)公式2
      • 其中 p ( μ ) p(\boldsymbol{\mu}) p(μ)是训练时采掩码 μ \boldsymbol{\mu} μ的概率分布。
  • 因为这个求和包含指数多的项,除非在该模型的结构允许某种形式的简化,否则是不可能计算的。

    • 目前为止,无法得知深度神经网络是否允许任何可行的简化。
    • 相反,我们可以通过采样近似推断,即平均许多掩码的输出。
    • 即使是 10 − 20 10 − 20 1020个掩码就足以获得不错的表现。
  • 然而,有一个更好的方法能得到一个不错的近似整个集成的预测,且只需一个前向传播的代价。

    • 要做到这一点,我们改用集成成员预测分布的几何平均而不是算术平均
    • Warde-Farley et al. (2014) 提出的论点和经验证据表明,在这个情况下几何平均与算术平均表现得差不多。
  • 多个概率分布的几何平均不能保证是一个概率分布。为了保证结果是一个概率分布,我们要求没有子模型给某一事件分配概率 0 0 0,并重新标准化所得分布。

    • 通过几何平均直接定义的非标准化概率分布由下式给出:
      p ~ ensemble ( y ∣ x ) = 2 d ∏ μ p ( y ∣ x , μ ) — 公式3 \tilde{p}_{\text{ensemble}}(y\mid \boldsymbol{x})=2^d \sqrt{\prod\limits_{\boldsymbol{\mu}} p(y\mid \boldsymbol{x},\boldsymbol{\mu})}\quad\textbf{---\footnotesize{公式3}} p~ensemble(yx)=2dμp(yx,μ) 公式3
    • 其中 d d d是可被丢弃的单元数。这里为简化介绍,我们使用均匀分布的 μ \boldsymbol{\mu} μ,但非均匀分布也是可能的。
    • 为了作出预测,我们必须重新标准化集成:
      p ensemble ( y ∣ x ) = p ~ ensemable ( y ∣ x ) ∑ y ′ p ~ ensemble ( y ′ ∣ x ) — 公式4 p_{\text{ensemble}}(y\mid \boldsymbol{x})=\frac{\tilde{p}_{\text{ensemable}}(y\mid \boldsymbol{x})}{\sum_{y^\prime }\tilde{p}_{\text{ensemble}}(y^\prime\mid \boldsymbol{x})}\quad\textbf{---\footnotesize{公式4}} pensemble(yx)=yp~ensemble(yx)p~ensemable(yx)公式4
    • 涉及 Dropout \text{Dropout} Dropout的一个重要观点 (Hinton et al., 2012b) 是,我们可以通过评估模型中 p ( y ∣ x ) p(y\mid\boldsymbol{x}) p(yx)近似 p ensemble p_{\text{ensemble}} pensemble:该模型具有所有单元,但单元 i i i输出的权重乘以包括单元 i i i的概率。这个修改的动机是捕获从该单元输出的正确期望值。我们把这种方法称为权重比例推断规则(weight scaling inference rule)。
    • 目前还没有在深度非线性网络上对这种近似推断规则的准确性作任何理论上的说法,但经验上表现得很好。
    • 因为我们通常使用 1 2 \frac{1}{2} 21的包含概率,权重比例规则一般相当于在训练结束后将权重除 2 2 2,然后像平常一样使用模型。实现相同结果的另一种方法是在训练期间将单元的状态乘 2 2 2。无论哪种方式,我们的目标是确保在测试时一个单元的期望总输入是与在训练时该单元的期望总输入是大致相同(即使近半单位在训练时丢失)。
  • 对许多不具有非线性隐藏单元的模型族,权重比例推断规则是精确的。

    • 举个简单的例子,考虑 softmax \text{softmax} softmax函数回归分类,其中由向量 v \bold{v} v表示 n n n个输入变量:
      P ( y = y ∣ v ) = softmax ( W ⊤ v + b ) y — 公式5 P(\text{y}=y\mid \bold{v})=\text{softmax}(\boldsymbol{W}^\top \bold{v}+\boldsymbol{b})_y \quad\textbf{---\footnotesize{公式5}} P(y=yv)=softmax(Wv+b)y公式5
    • 我们可以根据二值向量 d \boldsymbol{d} d逐元素的乘法将一类子模型进行索引:
      P ( y = y ∣ v ; d ) = softmax ( W ⊤ ( d ⊙ v ) + b ) y — 公式6 P(\text{y}=y\mid \bold{v};\boldsymbol{d})=\text{softmax}(\boldsymbol{W}^\top (\boldsymbol{d}\odot\bold{v})+\boldsymbol{b})_y \quad\textbf{---\footnotesize{公式6}} P(y=yv;d)=softmax(W(dv)+b)y公式6
    • 集成预测器被定义为重新标准化所有集成成员预测的几何平均:
      P ensemble ( y = y ∣ v ) = p ~ ensemable ( y ∣ v ) ∑ y ′ p ~ ensemble ( y ′ ∣ v ) — 公式7 P_{\text{ensemble}}(\text{y}=y\mid \bold{v})=\frac{\tilde{p}_{\text{ensemable}}(y\mid \bold{v})}{\sum_{y^\prime }\tilde{p}_{\text{ensemble}}(y^\prime\mid \bold{v})}\quad\textbf{---\footnotesize{公式7}} Pensemble(y=yv)=yp~ensemble(yv)p~ensemable(yv)公式7
    • 其中, p ~ ensemable ( y = y ∣ v ) = 2 n ∏ d ∈ { 0 , 1 } n P ( y = y ∣ v ; d ) — 公式7 \tilde{p}_{\text{ensemable}}(\text{y}=y\mid \bold{v})=2^n\sqrt{\prod\limits_{\boldsymbol{d}\in\{0,1\}^n}P(\text{y}=y\mid \bold{v};\boldsymbol{d})}\quad\textbf{---\footnotesize{公式7}} p~ensemable(y=yv)=2nd{0,1}nP(y=yv;d) 公式7
    • 为了证明权重比例推断规则是精确的,我们简化 p ~ ensemable \tilde{p}_{\text{ensemable}} p~ensemable
      { p ~ ensemable ( y = y ∣ v ) = 2 n ∏ d ∈ { 0 , 1 } n P ( y = y ∣ v ; d ) — 公式8 = 2 n ∏ d ∈ { 0 , 1 } n softmax ( W ⊤ ( d ⊙ v ) + b ) y — 公式9 = 2 n ∏ d ∈ { 0 , 1 } n e ( W y , : ⊤ ( d ⊙ v ) + b y ) ∑ y ′ e ( W y ′ , : ⊤ ( d ⊙ v ) + b y ′ ) — 公式10 = 2 n ∏ d ∈ { 0 , 1 } n e ( W y , : ⊤ ( d ⊙ v ) + b y ) 2 n ∏ d ∈ { 0 , 1 } n ∑ y ′ e ( W y ′ , : ⊤ ( d ⊙ v ) + b y ′ ) — 公式11 \begin{cases}\begin{aligned}\tilde{p}_{\text{ensemable}}(\text{y}=y\mid \bold{v})&=2^n\sqrt{\prod\limits_{\boldsymbol{d}\in\{0,1\}^n}P(\text{y}=y\mid \bold{v};\boldsymbol{d})} &\quad\textbf{---\footnotesize{公式8}}\\ &=2^n\sqrt{\prod\limits_{\boldsymbol{d}\in\{0,1\}^n} \text{softmax}(\boldsymbol{W}^\top (\boldsymbol{d}\odot\bold{v})+\boldsymbol{b})_y}&\quad\textbf{---\footnotesize{公式9}}\\ &=2^n\sqrt{\prod\limits_{\boldsymbol{d}\in\{0,1\}^n} \frac{e^{(\boldsymbol{W}_{y,:}^\top(\boldsymbol{d}\odot \bold{v})+\boldsymbol{b}_y)}}{\sum_{y^\prime} e^{(\boldsymbol{W}_{y^\prime,:}^\top(\boldsymbol{d}\odot\bold{v})+\boldsymbol{b}_y^\prime)}}} &\quad\textbf{---\footnotesize{公式10}}\\ &=\frac{2^n\sqrt{\prod_{\boldsymbol{d}\in\{0,1\}^n}e^{(\boldsymbol{W}_{y,:}^\top(\boldsymbol{d}\odot \bold{v})+\boldsymbol{b}_y)}} } {2^n\sqrt{\prod_{\boldsymbol{d}\in\{0,1\}^n}}\sum_{y^\prime} e^{(\boldsymbol{W}_{y^\prime,:}^\top(\boldsymbol{d}\odot\bold{v})+\boldsymbol{b}_y^\prime)}}&\quad\textbf{---\footnotesize{公式11}}\end{aligned}\end{cases} p~ensemable(y=yv)=2nd{0,1}nP(y=yv;d) =2nd{0,1}nsoftmax(W(dv)+b)y =2nd{0,1}nye(Wy,:(dv)+by)e(Wy,:(dv)+by) =2nd{0,1}n ye(Wy,:(dv)+by)2nd{0,1}ne(Wy,:(dv)+by) 公式8公式9公式10公式11
    • 由于 P ~ \tilde{P} P~将被标准化,我们可以放心地忽略那些相对 y y y不变的乘法:
      { p ~ ensemable ( y = y ∣ v ) ∝ 2 n ∏ d ∈ { 0 , 1 } n e ( W y , : ⊤ ( d ⊙ v ) + b y ) — 公式12 = e ( 1 2 n ∑ d ∈ { 0 , 1 } n W y , : ⊤ ( d ⊙ v ) + b y ) — 公式13 = e ( 1 2 W y , : ⊤ v + b y ) — 公式14 \begin{cases}\begin{aligned}\tilde{p}_{\text{ensemable}}(\text{y}=y\mid \bold{v})&\propto 2^n\sqrt{\prod_{\boldsymbol{d}\in\{0,1\}^n}e^{(\boldsymbol{W}_{y,:}^\top(\boldsymbol{d}\odot \bold{v})+\boldsymbol{b}_y)}} &\quad\textbf{---\footnotesize{公式12}}\\ &=e^{\left(\frac{1}{2^n} \sum\limits_{\boldsymbol{d}\in\{0,1\}^n} \boldsymbol{W}_{y,:}^\top(\boldsymbol{d}\odot\bold{v})+\boldsymbol{b}_y \right)} &\quad\textbf{---\footnotesize{公式13}}\\ &=e^{\left(\frac{1}{2} \boldsymbol{W}_{y,:}^\top\bold{v}+\boldsymbol{b}_y\right)} &\quad\textbf{---\footnotesize{公式14}} \end{aligned}\end{cases} p~ensemable(y=yv)2nd{0,1}ne(Wy,:(dv)+by) =e(2n1d{0,1}nWy,:(dv)+by)=e(21Wy,:v+by)公式12公式13公式14
    • 将其代入公式7,我们得到了一个权重 1 2 W \frac{1}{2}\boldsymbol{W} 21W softmax \text{softmax} softmax函数分类器。
  • 权重比例推断规则在其他设定下也是精确的,包括条件正态输出的回归网络以及那些隐藏层不包含非线性的深度网络。然而,权重比例推断规则对具有非线性的深度模型仅仅是一个近似。虽然这个近似尚未有理论上的分析,但在实践中往往效果很好。 Goodfellow et al. (2013b) 实验发现,集成预测权重比例推断规则可以比蒙特卡罗近似工作得更好(在分类精度方面)。即使允许蒙特卡罗近似采样多达 1000 1000 1000子网络时也比不过。 Gal and Ghahramani (2015) 发现一些模型可以通过二十个样本和蒙特卡罗近似获得更好的分类精度。似乎推断近似的最佳选择是与问题相关的。

  • Srivastava et al. (2014) 显示, Dropout \text{Dropout} Dropout比其他标准的计算开销小的正则化项,如权重衰减、过滤器范数约束和稀疏激活的正则化更有效。 Dropout \text{Dropout} Dropout也可以与其他形式的正则化合并,得到进一步的提升。

  • 计算方便是 Dropout \text{Dropout} Dropout的一个优点。训练过程中使用 Dropout \text{Dropout} Dropout产生 n n n个随机二进制数与状态相乘,每个样本每次更新只需 O ( n ) \Omicron(n) O(n)的计算复杂度。根据实现,也可能需要 O ( n ) \Omicron(n) O(n)的存储空间来持续保存这些二进制数(直到反向传播阶段)。使用训练好的模型推断时,计算每个样本的代价是与不使用 Dropout \text{Dropout} Dropout一样的,尽管我们必须在开始运行推断前将权重除以 2 2 2

  • Dropout \text{Dropout} Dropout的另一个显著优点是不怎么限制适用的模型或训练过程。几乎在所有使用分布式表示且可以用随机梯度下降训练的模型上都表现很好。包括前馈神经网络、概率模型,如受限玻尔兹曼机(Srivastava et al., 2014),以及循环神经网络(Bayer and Osendorfer, 2014; Pascanu et al., 2014a)。许多其他差不多强大正则化策略对模型结构的限制更严格。

  • 虽然 Dropout \text{Dropout} Dropout在特定模型上每一步的代价是微不足道的,但在一个完整的系统使用 Dropout \text{Dropout} Dropout的代价可能非常显著。因为 Dropout \text{Dropout} Dropout是一个正则化技术,它减少了模型的有效容量。为了抵消这种影响,我们必须增大模型规模。不出意外的话,使用 Dropout \text{Dropout} Dropout时最佳验证集的误差会低很多,但这是以更大的模型和更多训练算法的迭代次数为代价换来的。对于非常大的数据集,正则化带来的泛化误差减少得很小。在这些情况下,使用 Dropout \text{Dropout} Dropout和更大模型的计算代价可能超过正则化带来的好处。

  • 只有极少的训练样本可用时, Dropout \text{Dropout} Dropout不会很有效。在只有不到 5000 5000 5000的样本的Alternative Splicing数据集上 (Xiong et al., 2011),贝叶斯神经网络 (Neal, 1996)比 Dropout \text{Dropout} Dropout表现更好 (Srivastava et al., 2014)。当有其他未分类的数据可用时,无监督特征学习比 Dropout \text{Dropout} Dropout更有优势。

  • Wager et al. (2013) 表明,当 Dropout \text{Dropout} Dropout作用于线性回归时,相当于每个输入特征
    具有不同权重衰减系数的 L 2 L^2 L2权重衰减。每个特征的权重衰减系数的大小是由其方差来确定。其他线性模型有类似的结果。而对于深度模型, Dropout \text{Dropout} Dropoutt与权重衰减是不等同的。

  • 使用 Dropout \text{Dropout} Dropout训练时的随机性不是这个方法成功的必要条件。它仅仅是近似所有子模型总和的一个方法。 Wang and Manning (2013) 导出近似这种边缘分布的解析解。他们的近似被称为快速 Dropout \text{Dropout} Dropout(fast dropout),由于梯度计算中的随机性减小导致更快的收敛时间。这种方法也可以在测试时应用,比权重比例推断规则更合理地(但计算也更昂贵)近似所有子网络的平均。 快速 Dropout在小神经网络上的性能几乎与标准的 Dropout \text{Dropout} Dropout相当,但在大问题上尚未产生显著地改善或尚未应用。

  • 正如随机性对实现 Dropout \text{Dropout} Dropout的正则化效果不是必要的,这也不是充分的。为了证明这一点, Warde-Farley et al. (2014) 使用一种称为 Dropout Boosting \text{Dropout Boosting} Dropout Boosting (Dropout Boosting) 的方法设计了一个对照实验,与传统 Dropout \text{Dropout} Dropout方法完全相同的噪声掩码,但缺乏正则化效果。 Dropout Boosting \text{Dropout Boosting} Dropout Boosting训练整个集成以最大化训练集上的似然。在相同意义上,传统的 Dropout \text{Dropout} Dropout类似于 Bagging \text{Bagging} Bagging,这种方式类似于 Bagging \text{Bagging} Bagging。如预期一样,比较单一模型训练整个网络的情况, Dropout Boosting \text{Dropout Boosting} Dropout Boosting几乎没有正则化效果。这表明, Dropout Boosting \text{Dropout Boosting} Dropout Boosting的解释超过 Dropout \text{Dropout} Dropout作为稳健性噪音的解释。当随机抽样的集成成员相互独立地训练好后, Bagging \text{Bagging} Bagging集成的正则化效果才能达到。

  • Dropout \text{Dropout} Dropout启发其他以随机方法训练指数量级的共享权重的集成。 DropConnect \text{DropConnect} DropConnect Dropout \text{Dropout} Dropout的一个特殊情况,其中一个标量权重和单个隐藏单元状态之间的每个乘积被认为是可以丢弃的一个单元 (Wan et al., 2013)。随机池化是构造卷积神经网络集成的一种随机池化的形式,其中每个卷积网络参与每个特征图的不同空间位置。目前为止, Dropout \text{Dropout} Dropout仍然是最广泛使用的隐式集成方法。

  • 关于 Dropout \text{Dropout} Dropout的一个重要见解是,通过随机行为训练网络并平均多个随机决定进行预测,通过参数共享实现了 Bagging \text{Bagging} Bagging的一种形式。早些时候,我们将 Dropout \text{Dropout} Dropout描述为通过包括或排除单元形成模型集成的 Bagging \text{Bagging} Bagging。然而,这种参数共享策略不一定要基于包括和排除。原则上,任何一种随机的修改都是可接受的。在实践中,我们必须选择能让神经网络能够学习对抗的修改类型。理想情况下,我们也应该使用可以快速近似推断的模型族。我们可以认为由向量 μ \boldsymbol{\mu} μ参数化的任何形式的修改,是对于 μ \boldsymbol{\mu} μ所有可能的值训练 p ( y ∣ x , μ ) p(y\mid \boldsymbol{x},\boldsymbol{\mu}) p(yx,μ)的集成。这里不要求 μ \boldsymbol{\mu} μ具有有限数量的值。例如, μ \boldsymbol{\mu} μ可以是实值。Srivastava et al. (2014) 表明,权重乘以 μ ∼ N ( 1 , I ) \boldsymbol{\mu}\sim\mathcal{N}(\bold{1},\boldsymbol{I}) μN(1,I)比基于二值掩码 Dropout \text{Dropout} Dropout表现更好。由于 E [ μ ] = 1 \mathbb{E}[\boldsymbol{\mu}]=1 E[μ]=1,标准网络自动实现集成的近似推断,而不需要权重比例推断规则。

  • 目前为止,我们介绍了 Dropout \text{Dropout} Dropout纯粹作为一种高效近似 Bagging \text{Bagging} Bagging的方法。然而,有比这更进一步的 Dropout \text{Dropout} Dropout观点。 Dropout \text{Dropout} Dropout不仅仅是训练一个 Bagging \text{Bagging} Bagging的集成模型,并且是共享隐藏单元的集成模型。这意味着无论其他隐藏单元是否在模型中,每个隐藏单元必须都能够表现良好。 隐藏单元必须准备好进行模型之间的交换和互换。Hintonet al. (2012c) 由生物学的想法受到启发:有性繁殖涉及到两个不同生物体之间交换基因,进化产生的压力使得基因不仅是良好的而且要准备好不同有机体之间的交换。这样的基因和这些特点对环境的变化是非常稳健的,因为它们一定会正确适应任何一个有机体或模型不寻常的特性。因此 Dropout \text{Dropout} Dropout正则化每个隐藏单元不仅是一个很好的特征,更要在许多情况下良好的特征。 Warde-Farley et al. (2014) 将 Dropout \text{Dropout} Dropout与大集成的训练相比并得出结论:相比独立模型的集成获得的泛化误差, Dropout \text{Dropout} Dropout会提供的额外改进。

  • Dropout \text{Dropout} Dropout强大的大部分是由于施加到隐藏单元的掩码噪声,了解这一事实是重要的。这可以看作是对输入内容的信息高度智能化、自适应破坏的一种形式,而不是对输入原始值的破坏。例如,如果模型学得通过鼻检测脸的隐藏单元 h i h_i hi,那么丢失 h i h_i hi对应于擦除图像中有鼻子的信息。模型必须学习另一种 h i h_i hi,要么是鼻子存在的冗余编码,要么是脸部的另一特征,如嘴。传统的噪声注入技术,在输入端加非结构化的噪声不能够随机地从脸部图像中抹去关于鼻子的信息,除非噪声的幅度大到几乎能抹去图像中所有的信息。破坏提取的特征而不是原始值,让破坏过程充分利用该模型迄今获得的关于输入分布的所有知识。

  • Dropout \text{Dropout} Dropout的另一个重要方面是噪声是乘性的。如果是固定规模的加性噪声,那么加了噪声 ϵ \epsilon ϵ的整流线性隐藏单元可以简单地学会使 h i h_i hi变得很大(使增加的噪声 ϵ \epsilon ϵ变得不显著)。乘性噪声不允许这样病态地解决噪声鲁棒性问题。

  • 另一种深度学习算法—— batch normalization \text{batch normalization} batch normalization,在训练时向隐藏单元引入加性和
    乘性噪声重参数化模型。 batch normalization \text{batch normalization} batch normalization的主要目的是改善优化,但噪音具有正
    则化的效果,有时使 Dropout \text{Dropout} Dropout变得没有必要。 batch normalization \text{batch normalization} batch normalization将会在后续篇章中更详细地讨论。

  • 图例1 Dropout \text{Dropout} Dropout训练由所有子网络组成的,其中子网络通过从基本网络中删除非输出单元构建。
    在这里插入图片描述

  • 图例1说明

    • 我们从具有两个可见单元和两个隐藏单元的基本网络开始。这四个单元有十六个可能的子集。
    • 右图展示了从原始网络中丢弃不同的单元子集而形成的所有十六个子网络。
    • 在这个小例子中,所得到的大部分网络没有输入单元或没有从输入连接到输出的路径。当层较宽时,丢弃所有从输入到输出的可能路径的概率变小,所以这个问题对于层较宽的网络不是很重要。

  • 图例2在使用 Dropout \text{Dropout} Dropout的前馈网络中前向传播的示例
    在这里插入图片描述
  • 图例2说明
    • 顶部图:
      • 我们使用具有两个输入单元,具有两个隐藏单元的隐藏层以及一个输出单元的前馈网络。
    • 底部图:
      • 为了执行具有 Dropout \text{Dropout} Dropout的前向传播,我们随机地对向量 μ \boldsymbol{\mu} μ进行采样,其中网络中的每个输入或隐藏单元对应一项。
      • μ \boldsymbol{\mu} μ中的每项都是二值的且独立于其他项采样。
      • 每项为 1 1 1的概率是超参数,对于隐藏层通常为 0.5 0.5 0.5,对于输入通常为 0.8 0.8 0.8
      • 网络中的每个单元乘以相应的掩码,然后正常地继续通过网络的其余部分前向传播。
      • 这相当于从图例1中随机选择一个子网络并通过它前向传播。

总结

Dropout \text{Dropout} Dropout技术的引入,不仅显著提升了深度学习模型的泛化能力,还促进了神经网络结构设计的创新。通过减少神经元间的共适应性, Dropout \text{Dropout} Dropout鼓励网络中的每个神经元学习更为独立的特征,从而在整体层面构建出更为灵活、适应性更强的模型。此外, Dropout \text{Dropout} Dropout作为一种正则化手段,其简单而高效的特点使得它广泛应用于各种深度学习架构中,从基础的卷积神经网络到复杂的循环神经网络,均可见其身影。随着深度学习技术的不断发展, Dropout \text{Dropout} Dropout及其变种(如 DropConnect \text{DropConnect} DropConnect Spatial Dropout \text{Spatial Dropout} Spatial Dropout等)将继续在提升模型性能、降低过拟合风险方面发挥重要作用,推动人工智能领域迈向新的高度。

往期内容回顾

深度学习中的正则化技术 - Bagging和其他集成方法篇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3250563.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

java文本比较解决方案

参考资料 VBA计算页码和行号https://learn.microsoft.com/zh-cn/office/vba/api/word.wdinformation 概述: 最近在做word文档对比的,总结了几种解决方案,记录一下 在java中,常用的文本对比方案有如下几种: 差异比较…

Pycharm 报错 Environment location directory is not empty 解

删除项目中ven文件夹(已存在的),然后再添加新的ven虚拟环境就可以了

Richteck立锜科技电源管理芯片简介及器件选择指南

一、电源管理简介 电源管理组件的选择和应用本身的电源输入和输出条件是高度关联的。 输入电源是交流或直流?需求的输出电压比输入电压高或是低?负载电流多大?系统是否对噪讯非常敏感?也许系统需要的是恒流而不是稳压 (例如 LED…

入门C语言只需一个星期(星期三)

点击上方"蓝字"关注我们 01、基本数据类型 char 1 字节 −128 ~ 127 单个字符/字母/数字/ASCIIsigned char 1 字节 −128 ~ 127 -unsigned char 1 字节 0 ~ 255 -int…

【自学安全防御】三、企业双机热备和带宽管理的综合实验

实验拓扑: 实验任务: 12,对现有网络进行改造升级,将当个防火墙组网改成双机热备的组网形式,做负载分担模式,游客区和DMZ区走FW3,生产区和办公区的流量走FW1 13,办公区上网用户限制流…

JavaSE 知识梳理(上)

1. Java语言的特性 简单性、面向对象、分布式、健壮性、安全性、体系结构中立、可移植性、解释性、高能效、多线程、动态性 2. JDK、JRE、JVM之间的关系 JDK(Java Development Kit):Java开发工具包,提供给Java程序员使用,包含了JRE,同时还…

使用Pycharm画图展示在窗口的侧栏Plots中无图像问题

使用Pycharm画图展示在窗口的侧栏Plots中无图像问题 在运行一个python文件时,突然出现侧栏Plots处提供预览的哪里没有出现图片,只有空白。解决方法如下: 找到Tools -> Python Plots,下图,取消勾选use interactive…

django报错(二):NotSupportedError:MySQL 8 or later is required (found 5.7.43)

执行python manage.py runserver命令时报版本不支持错误,显示“MySQL 8 or later is required (found 5.7.43)”。如图: 即要MySQL 8或更高版本。但是企业大所数用的还是mysql5.7相关版本。因为5.7之后的8.x版本是付费版本,贸然更新数据库肯定…

WEB前端07-DOM对象

DOM模型 1.DOM概念 文档对象模型属于BOM的一 部分,用于对BOM中的核心对象document进行操作,它是一种与平台、语言无关的接口,允许程序和脚本动态地访问或更新HTML、XML文档的内容、结构和样式,且提供了一系列的函数和对象来实现…

Vue从零到实战基础篇

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

C语言丢失精度 如何实现高精度计算

(1)int 类型举例 int :占4个字节,也就是32位,及最大值是2^32-11024*1024*1024*4-14294967295 以上说法错误,因为Int是有符号类型整数,所以最高位是符号位,及int的最大值应该是2^31…

spring是如何解决循环依赖的,为什么不是两级

1. Spring使用三级缓存来解决循环依赖问题 Spring使用三级缓存来解决循环依赖问题,‌而不是使用两级缓存。‌ 在Spring框架中,‌解决循环依赖的关键在于正确地管理Bean的生命周期和依赖关系。‌循环依赖指的是两个或多个Bean相互依赖,‌如果…

VC运营指南:提升亚马逊VC账户销量的策略——WAYLI威利跨境助力商家

亚马逊VC作为供应商中心账户,其运营策略与普通的第三方卖家账户有所不同。想要在此平台上取得卓越的销售业绩,需要深入理解和运用一系列策略。 1、产品策略是基石 深入市场研究,了解消费者的真实需求,是选择产品的关键。只有选对…

vue echarts 柱状图表,点击柱子,路由代参数(X轴坐标)跳转

一 myChart.on(click, (params) > {if (params.componentType series && params.dataIndex ! undefined) {const months this.month_htqd[params.dataIndex]; // 获取点击柱状图的 X 轴坐标值alert(点击了柱状图,值为: ${months});// 根据点击的柱状图…

7.SpringBoot整合Neo4j

1.引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-neo4j</artifactId> </dependency> 说明&#xff1a;这里引入neo4j的版本跟spring框架的版本有关系。需要注意不同的版本在neo…

poi库简单使用(java如何实现动态替换模板Word内容)

目录 Blue留言&#xff1a; Blue的推荐&#xff1a; 什么是poi库&#xff1f; 实现动态替换 第一步&#xff1a;依赖 第二步&#xff1a;实现word模板中替换文字 模板word&#xff1a; 通过以下代码&#xff1a;&#xff08;自己建一个类&#xff0c;随意取名&#xf…

Qt 制作安装包

记录使用Qt工具制作一个安装包的过程 目录 1.准备工作 1.1检查Qt Installer Frameworks是否安装 1.2.安装Qt Installer Frameworks 1.3准备release出来的exe dll等文件 2.创建打包工程所需要的文件及目录 2.1创建子目录 2.2 创建工程文件 2.3 创建config/config.xml …

C语言 ——— 打印水仙花数

目录 何为水仙花数 题目要求 代码实现 何为水仙花数 “水仙花数”是指一个n位数&#xff0c;其各位数字的n次方之和等于该数本身 如&#xff1a;153 1^3 5^3 3^3&#xff0c;则153就是一个“水仙花数” 题目要求 求出0~100000的所有“水仙花数”并输出 代码实现 #i…

华为机试HJ97记负均正

华为机试HJ97记负均正 题目&#xff1a; 想法&#xff1a; 遍历输入的列表&#xff0c;记录所有负数的个数&#xff0c;记录所有正数的个数&#xff0c;并累加所有正数&#xff0c;最终获得所有负数的个数和正数的平均值 input_number input() input_number_list input().…

华为od机试真题 — 分披萨(Python)

题目描述 “吃货”和“馋嘴”两人到披萨店点了一份铁盘(圆形)披萨&#xff0c;并嘱咐店员将披萨按放射状切成大小相同的偶数个小块。 但是粗心服务员将披萨切成了每块大小都完全不同奇数块&#xff0c;且肉眼能分辨出大小。 由于两人都想吃到最多的披萨&#xff0c;他们商量…