当前位置: 首页 > news >正文

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

序言

在深度学习的浩瀚领域中,模型过拟合一直是研究者们面临的挑战之一。当模型在训练集上表现得近乎完美,却难以在未见过的数据(测试集)上保持同样优异的性能时,过拟合现象便悄然发生。为了有效缓解这一问题, Dropout \text{Dropout} Dropout技术应运而生,成为深度学习工具箱中的一把利器。 Dropout \text{Dropout} 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和其他集成方法篇

相关文章:

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

序言 在深度学习的浩瀚领域中,模型过拟合一直是研究者们面临的挑战之一。当模型在训练集上表现得近乎完美,却难以在未见过的数据(测试集)上保持同样优异的性能时,过拟合现象便悄然发生。为了有效缓解这一问题&#xf…...

《昇思 25 天学习打卡营第 18 天 | 扩散模型(Diffusion Models) 》

《昇思 25 天学习打卡营第 18 天 | 扩散模型(Diffusion Models) 》 活动地址:https://xihe.mindspore.cn/events/mindspore-training-camp 签名:Sam9029 扩散模型(Diffusion Models) 扩散模型概述 扩散模…...

【Django+Vue3 线上教育平台项目实战】Elasticsearch实战指南:从基础到构建课程搜索与数据同步接口

文章目录 前言一、Elasticsearch倒排索引 二、Docker 搭建 ESDocker 安装Docker 搭建 ES 三、ES基础语法创建索引查看索引删除索引添加数据查询数据修改数据删除数据条件查询分页查询排序 多条件查询andor 范围查询 四、ES在项目中的应用示例 前言 在数据驱动的时代&#xff0c…...

libtins初探-抓包嗅探

libtin 一、概述1. 可移植性2. 特性 二、基础知识1. PDU2. 地址类3. 地址范围类4. 网络接口5. 写pcap文件 三、嗅探1.嗅探基础2. 嗅探器配置3. 循环嗅探4. 使用迭代器嗅探6. 包对象7. 读取pcap文件8. 包的解析 四、发送包1. 发送网络层pdu2. 发送链路层pdu3. 发送和接收响应校验…...

大语言模型-Bert-Bidirectional Encoder Representation from Transformers

一、背景信息: Bert是2018年10月由Google AI研究院提出的一种预训练模型。 主要用于自然语言处理(NLP)任务,特别是机器阅读理、文本分类、序列标注等任务。 BERT的网络架构使用的是多层Transformer结构,有效的解决了长…...

bug诞生记——动态库加载错乱导致程序执行异常

大纲 背景问题发生问题猜测和分析过程是不是编译了本工程中的其他代码是不是有缓存是不是编译了非本工程的文件是不是调用了其他可执行文件查看CMakefiles分析源码检查正在运行程序的动态库 解决方案 这个案例发生在我研究ROS 2的测试Demo时发生的。 整体现象是:修改…...

Matlab演示三维坐标系旋转

function showTwo3DCoordinateSystemsWithAngleDifference() clear all close all % 第一个三维坐标系 origin1 [0 0 0]; x_axis1 [1 0 0]; y_axis1 [0 1 0]; z_axis1 [0 0 1];% 绕 x 轴旋转 30 度的旋转矩阵 theta_x 30 * pi / 180; rotation_matrix_x [1 0 0; 0 cos(th…...

redis的持久化机制以及集群模式

1.redis的持久化机制 内存数据库具有高速读写的优势,但由于数据存储在内存中,一旦服务器停止或崩溃,所有数据将会丢失。持久化机制的引入旨在将内存中的数据持久化到磁盘上,从而在服务器重启后能够恢复数据,提供更好的…...

【论文解读】大模型算法发展

一、简要介绍 论文研究了自深度学习出现以来,预训练语言模型的算法的改进速度。使用Wikitext和Penn Treebank上超过200个语言模型评估的数据集(2012-2023年),论文发现达到设定性能阈值所需的计算大约每8个月减半一次,95%置信区间约为5到14个月…...

WebApi配置Swagger、Serilog、NewtonsoftJson、Sqlsugar、依赖注入框架Autofac、MD5加密

文章目录 项目准备1、创建WebApi项目配置Swagger、Serilog、NewtonsoftJsonNewtonsoftJsonSwaggerSerilog 使用ORM框架SqlSugar创建Service类库构成MVC框架使用AutoFac进行依赖注入 创建用户登录接口添加用户时进行安全防护 项目准备 1、创建WebApi项目 配置Swagger、Serilog…...

【ffmpeg命令基础】视频选项讲解

文章目录 前言设置输出文件的帧数设置每秒播放的帧数设置输出视频的帧率示例1:更改输出视频的帧率示例2:将图像序列转换为视频 设置输入视频的帧率示例3:处理高帧率视频示例4:处理低帧率视频 同时设置输入和输出帧率示例5&#xf…...

使用uniapp开发小程序(基础篇)

本文章只介绍微信小程序的开发流程,如果需要了解其他平台的开发的流程的话,后续根据情况更新相应的文章,也可以根据uniapp官网的链接了解不同平台的开发流程 HBuilderX使用:https://uniapp.dcloud.net.cn/quickstart-hx.html 开发工具 开始…...

vue3【详解】组合式函数

什么是组合式函数? 利用 Vue 的组合式 API 来封装和复用有状态逻辑的函数,用于实现逻辑复用,类似 react18 中的 hook 函数名称 – 以 use 开头,采用驼峰命名,如 useTitle参数 – 建议使用 toValue() 处理(…...

微服务实战系列之玩转Docker(六)

前言 刚进入大暑,“清凉不肯来,烈日不肯暮”,空调开到晚,还是满身汗。——碎碎念 我们知道,仓库可见于不同领域,比如粮食仓库、数据仓库。在容器领域,自然也有镜像仓库(registry&…...

Python题解Leetcode Hot100之动态规划

动态规划解题步骤-5部曲 确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 70. 爬楼梯 题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到…...

你了解GD32 MCU上下电要求吗

你了解GD32 MCU的上下电要求吗?MCU的上下电对于系统的稳定运行非常重要。 以GD32F30X为例,上电/掉电复位波形如如下图所示。 上电过程中,VDD/VDDA电压上电爬坡,当电压高于VPOR(上电复位电压)MCU开始启动&a…...

二、【Python】入门 - 【PyCharm】安装教程

往期博主文章分享文章: 【机器学习】专栏http://t.csdnimg.cn/sQBvw 目录 第一步:PyCharm下载 第二步:安装(点击安装包打开下图页面) 第三步:科学使用,请前往下载最新工具及教程&#xff1a…...

2、程序设计语言基础知识

这一章节的内容在我们的软件设计师考试当中,考的题型比较固定,基本都是选择题,分值大概在2~4分左右。 而且考的还多是程序设计语言的一些基本语法,特别是这两年比较火的Python。 所以对于有一定要编程基础的即使本章的内容不学习&…...

ARM/Linux嵌入式面经(十八):TP-Link联洲

文章目录 虚拟内存,页表,copy on write面试题1:面试题2:面试题3:进程和线程的区别红黑树和b+树的应用红黑树的应用B+树的应用视频会议用了哪些协议1. H.323协议2. SIP协议(会话发起协议)3. WebRTC(网页实时通信)4. 其他协议io多路复用(select,poll,epoll)面试题li…...

解读vue3源码-响应式篇2

提示:看到我 请让我滚去学习 文章目录 vue3源码剖析reactivereactive使用proxy代理一个对象1.首先我们会走isObject(target)判断,我们reactive全家桶仅对对象类型有效(对象、数组和 Map、Set 这样的集合类型),而对 str…...

【测开能力提升-fastapi框架】fastapi能力提升 - 中间件与CORS

1. 中间件 1.1 介绍(ChatGPT抄的,大致可以理解) 一种机制,用于在处理请求和响应之前对其进行拦截、处理或修改。中间件可以在应用程序的请求处理管道中插入自定义逻辑,以实现一些通用的功能,如身份验证、…...

centos7安装es及简单使用

为了方便日后查看,简单记录下! 【启动es前,需要调整这个配置文件(/opt/elasticsearch-6.3.0/config/elasticsearch.yml)的两处ip地址,同时访问页面地址的ip:9200时,ip地址也对应修改】 【启动kibana前,需要调整这个配置文件(/opt/kibana-6.3.0/config/k…...

2024年自动驾驶SLAM面试题及答案(更新中)

自动驾驶中的SLAM(Simultaneous Localization and Mapping,即同步定位与地图构建)是关键技术,它能够让车辆在未知环境中进行自主定位和地图建构。秋招来临之际,相信大家都已经在忙碌的准备当中了,尤其是应届…...

HTML零基础自学笔记(上)-7.18

HTML零基础自学笔记(上) 参考:pink老师一、HTML, Javascript, CSS的关系是什么?二、什么是HTML?1、网页,网站的概念2、THML的基本概念3、THML的骨架标签/基本结构标签 三、HTML标签1、THML标签介绍2、常用标签图像标签&#xff…...

数学建模--图论与最短路径

目录 图论与最短路径问题 最短路径问题定义 常用的最短路径算法 Dijkstra算法 Floyd算法 Bellman-Ford算法 SPFA算法 应用实例 结论 延伸 如何在实际应用中优化Dijkstra算法以提高效率? 数据结构优化: 边的优化: 并行计算&…...

FLINK-checkpoint失败原因及处理方式

在 Flink 或其他分布式数据处理系统中,Checkpoint 失败可能由多种原因引起。以下是一些常见的原因: 资源不足: 如果 TaskManager 的内存或磁盘空间不足,可能无法完成状态的快照,导致 Checkpoint 失败。 网络问题&am…...

Hbase映射为Hive外表

作者:振鹭 Hbase对应Hive外表 (背景:在做数据ETL中,可能原始数据在列式存储Hbase中,这个时候,如果我们想清洗数据,可以考虑把Hbase表映射为Hive的外表,然后使用Hive的HQL来清除处理数据) 1. …...

洛谷P1002(过河卒)题解

题目传送门 思路 直接爆搜会TLE,所以考虑进行DP。 由于卒只可以从左边和上面走,所以走到(i,j)的路程总数为从上面走的路程总数加上从左边走的路程总数。我们用dp[i][j]表示从起点走到(i,j)的路程总数,那么状态转移方程为: dp[…...

微信小程序 async-validator 表单验证 第三方包

async-validator 是一个基于 JavaScript 的表单验证库,支持异步验证规则和自定义验证规则 主流的 UI 组件库 Ant-design 和 Element 中的表单验证都是基于 async-validator 使用 async-validator 可以方便地 构建表单中逻辑,使得错误提示信息更加友好和灵…...

马克·扎克伯格解释为何开源AI对开发者有利

Meta 今天发布了 Llama 3.1 系列人工智能模型,在人工智能领域取得了重大进展,其性能可与领先的闭源模型相媲美。值得一提的是,在多项人工智能基准测试中,Llama 3.1 405B 模型的性能超过了 OpenAI 的 GPT-4o 和 Claude 3.5 Sonnet。…...

游戏外挂的技术实现与五年脚本开发经验分享

引言: 在数字娱乐的浪潮中,电子游戏成为许多人生活中不可或缺的一部分。然而,随着游戏的普及,一些玩家为了追求更高效的游戏体验或不正当竞争优势,开始使用游戏外挂程序。这些外挂往往通过修改游戏正常运行机制来提供非…...

认识神经网络【多层感知器数学原理】

文章目录 1、什么是神经网络2、人工神经网络3、多层感知器3.1、输入层3.2、隐藏层3.2.1、隐藏层 13.2.2、隐藏层 2 3.3、输出层3.4、前向传播3.4.1、加权和⭐3.4.2、激活函数 3.5、反向传播3.5.1、计算梯度3.5.2、更新权重和偏置 4、小结 🍃作者介绍:双非…...

MySQL入门学习-SQL高级技巧.CTE和递归查询

在 MySQL 中,SQL 高级技巧包括了 Common Table Expressions(CTE)和递归查询等。 一、CTE(Common Table Expressions,公共表表达式)的概念: CTE 是一个临时的结果集,它可以在一个查询…...

键盘是如何使用中断机制的?当打印一串字符到显示屏上时发生了什么???

当在键盘上按下一个键时会进行一下操作: 1.当按下任意一个键时,键盘编码器监控会来判断按下的键是哪个 2.键盘控制器用将解码,将键盘的数据保存到键盘控制器里数据寄存器里面 3.此时发送一个中断请求给中断控制器,中断控制器获取到中断号发送…...

Spring Boot 接口访问频率限制的实现详解

目录 概述为什么需要接口访问频率限制常见的实现方式 基于过滤器的实现基于拦截器的实现基于第三方库Bucket4j的实现 实际代码示例 基于过滤器实现Rate Limiting基于拦截器实现Rate Limiting使用Bucket4j实现Rate Limiting 最佳实践 选择合适的限流算法优化性能记录日志和监控…...

前端页面:用户交互持续时间跟踪(duration)user-interaction-tracker

引言 在用户至上的时代,精准把握用户行为已成为产品优化的关键。本文将详细介绍 user-interaction-tracker 库,它提供了一种高效的解决方案,用于跟踪用户交互的持续时间,并提升项目埋点的效率。通过本文,你将了解到如…...

中文分词库 jieba 详细使用方法与案例演示

1 前言 jieba 是一个非常流行的中文分词库,具有高效、准确分词的效果。 它支持3种分词模式: 精确模式全模式搜索引擎模式 jieba0.42.1测试环境:python3.10.9 2 三种模式 2.1 精确模式 适应场景:文本分析。 功能&#xff1…...

EXO-helper解释

目录 helper解释 helper解释 在Python中,字符串 "\033[93m" 是一个ANSI转义序列,用于在支持ANSI转义码的终端或控制台中改变文本的颜色。具体来说,\033[93m 用于将文本颜色设置为亮黄色(或浅黄色,具体取决于终端的显示设置)。 这里的 \033 实际上是八进制的 …...

Qt开发网络嗅探器01

引言 随着互联网的快速发展和普及,人们对网络性能、安全和管理的需求日益增长。在复杂的网络环境中,了解和监控网络中的数据流量、安全事件和性能问题变得至关重要。为了满足这些需求,网络嗅探器作为一种重要的工具被 广泛应用。网络嗅探器是…...

mysql面试(三)

MVCC机制 MVCC(Multi-Version Concurrency Control) 即多版本并发控制,了解mvcc机制,需要了解如下这些概念 事务id 事务每次开启时,都会从数据库获得一个自增长的事务ID,可以从事务ID判断事务的执行先后…...

阿里云公共DNS免费版自9月30日开始限速 企业或商业场景需使用付费版

本周阿里云发布公告对公共 DNS 免费版使用政策进行调整,免费版将从 2024 年 9 月 30 日开始按照请求源 IP 进行并发数限制,单个 IP 的请求数超过 20QPS、UDP/TCP 流量超过 2000bps 将触发限速策略。 阿里云称免费版的并发数限制并非采用固定的阈值&…...

捷配生产笔记-一文搞懂阻焊层基本知识

什么是阻焊层? 阻焊层(也称为阻焊剂)是应用于PCB表面的一层薄薄的聚合物材料。其目的是保护铜电路,防止焊料在焊接过程中流入不需要焊接的区域。除焊盘外,整个电路板都涂有阻焊层。 阻焊层应用于 PCB 的顶部和底部。树…...

html 常用css样式及排布问题

1.常用样式 <style>.cy{width: 20%;height: 50px;font-size: 30px;border: #20c997 solid 3px;float: left;color: #00cc00;font-family: 黑体;font-weight: bold;padding: 10px;margin: 10px;}</style> ①宽度&#xff08;长&#xff09; ②高度&#xff08;宽&a…...

【SpingCloud】客户端与服务端负载均衡机制,微服务负载均衡NacosLoadBalancer, 拓展:OSI七层网络模型

客户端与服务端负载均衡机制 可能有第一次听说集群和负载均衡&#xff0c;所以呢&#xff0c;我们先来做一个介绍&#xff0c;然后再聊服务端与客户端的负载均衡区别。 集群与负载均衡 负载均衡是基于集群的&#xff0c;如果没有集群&#xff0c;则没有负载均衡这一个说法。 …...

【Elasticsearch】Elasticsearch 中的节点角色

Elasticsearch 中的节点角色 1.主节点&#xff08;master&#xff09;1.1 专用候选主节点&#xff08;dedicated master-eligible node&#xff09;1.2 仅投票主节点&#xff08;voting-only master-eligible node&#xff09; 2.数据节点&#xff08;data&#xff09;2.1 内容…...

pip install与apt install区别

pipapt/apt-get安装源PyPI 的 python所有依赖的包软件、更新源、ubuntu的依赖包 1 查看pip install 安装的数据包 命令 pip list 2 查看安装包位置 pip show package_name参考 https://blog.csdn.net/nebula1008/article/details/120042766...

分表分库是一种数据库架构的优化策略,用于处理大规模数据和高并发请求,提高数据库的性能和可扩展性。

分表分库是一种数据库架构的优化策略&#xff0c;用于处理大规模数据和高并发请求&#xff0c;提高数据库的性能和可扩展性。以下是一些常见的分表分库技术方案&#xff1a; 1. **水平分表&#xff08;Horizontal Sharding&#xff09;**&#xff1a; - 将单表数据根据某个…...

【ffmpeg命令入门】获取音视频信息

文章目录 前言使用ffmpeg获取简单的音视频信息输入文件信息文件元数据视频流信息音频流信息 使用ffprobe获取更详细的音视频信息输入文件信息文件元数据视频流信息音频流信息 总结 前言 在处理多媒体文件时&#xff0c;了解文件的详细信息对于调试和优化处理过程至关重要。FFm…...

【IoTDB 线上小课 05】时序数据文件 TsFile 三问“解密”!

【IoTDB 视频小课】持续更新&#xff01;第五期来啦~ 关于 IoTDB&#xff0c;关于物联网&#xff0c;关于时序数据库&#xff0c;关于开源... 一个问题重点&#xff0c;3-5 分钟详细展开&#xff0c;为大家清晰解惑&#xff1a; IoTDB 的 TsFile 科普&#xff01; 了解了时序数…...

python-爬虫实例(4):获取b站的章若楠的视频

目录 前言 道路千万条&#xff0c;安全第一条 爬虫不谨慎&#xff0c;亲人两行泪 获取b站的章若楠的视频 一、话不多说&#xff0c;先上代码 二、爬虫四步走 1.UA伪装 2.获取url 3.发送请求 4.获取响应数据进行解析并保存 总结 前言 道路千万条&#xff0c;安全第一条 爬…...