Dropout机制

Dropout是一种简单而强大的正则化技术。
Dropout源于发表于2014年的论文"Dropout:A Simple Way to Prevent Neural Networks fromOverfitting”,是一种在神经网络中用于减少过拟合的技术。它通过在训练过程中以一定概率随机“丢弃”网络中的部分神经元及其连接边,迫使网络学习更具稳健的特征,从而提高模型的泛化能力。

在这里插入图片描述

Dropout原理

比如神经元的结果为S,加上Dropout机制之后,输出为S′S'S。具体公式如下:
S′=S∗dS' = S * dS=Sd

变量 d 服从参数为p的二项分布,其概率表达式函数为:
d={pd=01−pd=1(1) d = \begin{cases} p & d = 0 \\ 1 - p & d = 1 \end{cases} \tag1 d={p1pd=0d=1(1)
服从以概率p取0和以概率1-p取1的二项分布,也叫伯努利分布

Dropout解释

  • 模型集成的角度。Dropout可以视为一种Bagging集成学习方法。在每次训练迭代中,它会随机“丢弃”一部分神经元,这可以视为在每次迭代中创建了一个不同的子网络。在训练过程中,这些子网络会学习到不同的特征和模式。当这些子网络的预测结果被平均或集成起来时,可以利用多个子网络的优势,减少方差误差,进而降低模型过拟合的情况。
  • 学习更具稳健特征的角度。Dropout在每次训练迭代中随机将部分神经元的输出置为0,这样可以减少不同神经元之间的复杂依赖关系,即网络不能依赖于任何一个神经元的单一输出。这一过程有助于网络学习到更加稳健的特征表示,即能够在多种“结构”下都有效的特征。

Dropout训练和预测

我们在使用Dropout时,训练阶段只是部分网络起作用,而预测阶段所有网络都参与计算,因此会有所不同。

期望计算

Dropout在训练阶段,会根据二项分布的公式,输出如下结果
Ex=(1−p)∗x+p∗0=(1−p)∗xE_{x} = (1-p)* x + p*0 = (1-p) * x Ex=(1p)x+p0=(1p)x
Dropout在推理阶段,所有权重都参与计算,没有权重被丢弃,
Ex=xE_{x} = x Ex=x
可以得到,Dropout训练阶段和推理阶段是不一致的,一个推理阶段是完整的x,训练阶段是1-p概率的x。
而可以通过一个缩放因子,即乘以或者除以的数值,达到训练和推理一致的效果。
比如训练时缩放1/(1−p)1 / (1-p)1/(1p)而预测保持不变
Ex=1/(1−p)∗(1−p)∗x+p∗0=xE_{x} =1 / (1-p)* (1-p)* x + p*0 = x Ex=1/(1p)(1p)x+p0=x
同样也可以预测时缩放(1-p),训练时保持不变
Ex=(1−p)∗x=(1−p)xE_{x} = (1-p) * x = (1-p) x Ex=(1p)x=(1p)x

方差计算

如上结论可得缩放因子:为了保持训练和推理阶段的期望一致,在训练时通常会引入一个缩放因子11−p\frac{1}{1-p}1p1

方差是衡量一组数据或一个随机变量与其期望值(均值)偏离程度的指标,定义为“各数据与均值之差的平方的期望”,即:
D[x′]=E[(x′−E[x′])2]=E[(x′)2]−(E[x′])2(1) D[x'] = E[(x' - E[x'])^2] = E[(x')^2] - (E[x'])^2 \tag1 D[x]=E[(xE[x])2]=E[(x)2](E[x])2(1)

先计算 E[(x′)2]E[(x')^2]E[(x)2]

E[(x′)2]=E[(11−p⋅d⋅x)2]=1(1−p)2⋅E[d2]⋅E[x2] E[(x')^2] = E\left[\left(\frac{1}{1-p} \cdot d \cdot x\right)^2\right] = \frac{1}{(1-p)^2} \cdot E[d^2] \cdot E[x^2] E[(x)2]=E[(1p1dx)2]=(1p)21E[d2]E[x2]

因为 ddd 是二值变量,d2=dd^2 = dd2=d,所以 E[d2]=E[d]=1−pE[d^2] = E[d] = 1 - pE[d2]=E[d]=1p,代入得:

E[(x′)2]=1(1−p)2⋅(1−p)⋅E[x2]=11−p⋅E[x2] E[(x')^2] = \frac{1}{(1-p)^2} \cdot (1-p) \cdot E[x^2] = \frac{1}{1-p} \cdot E[x^2] E[(x)2]=(1p)21(1p)E[x2]=1p1E[x2]

又因为 E[x′]=E[x]E[x'] = E[x]E[x]=E[x],所以公式(1)可得:

D[x′]=11−p⋅E[x2]−(E[x])2(2) D[x'] = \frac{1}{1-p} \cdot E[x^2] - (E[x])^2 \tag2 D[x]=1p1E[x2](E[x])2(2)

利用 E[x2]=D[x]+(E[x])2E[x^2] = D[x] + (E[x])^2E[x2]=D[x]+(E[x])2,公式(2)代入:

D[x′]=11−p⋅(D[x]+(E[x])2)−(E[x])2 D[x'] = \frac{1}{1-p} \cdot (D[x] + (E[x])^2) - (E[x])^2 D[x]=1p1(D[x]+(E[x])2)(E[x])2

展开:

D[x′]=11−p⋅D[x]+11−p⋅(E[x])2−(E[x])2 D[x'] = \frac{1}{1-p} \cdot D[x] + \frac{1}{1-p} \cdot (E[x])^2 - (E[x])^2 D[x]=1p1D[x]+1p1(E[x])2(E[x])2

合并后两项:

D[x′]=11−p⋅D[x]+(11−p−1)⋅(E[x])2 D[x'] = \frac{1}{1-p} \cdot D[x] + \left( \frac{1}{1-p} - 1 \right) \cdot (E[x])^2 D[x]=1p1D[x]+(1p11)(E[x])2

化简:

D[x′]=11−p⋅D[x]+p1−p⋅(E[x])2 D[x'] = \frac{1}{1-p} \cdot D[x] + \frac{p}{1-p} \cdot (E[x])^2 D[x]=1p1D[x]+1pp(E[x])2

最终方差公式:

D[x′]=11−p⋅D[x]+p1−p⋅(E[x])2 \boxed{D[x'] = \frac{1}{1-p} \cdot D[x] + \frac{p}{1-p} \cdot (E[x])^2} D[x]=1p1D[x]+1pp(E[x])2

这个公式说明:使用 Dropout + 缩放因子后,输出的方差不仅与原始方差 D[x]D[x]D[x] 有关,还与原始期望的平方 (E[x])2(E[x])^2(E[x])2 有关,除非 E[x]=0E[x] = 0E[x]=0,否则方差会被放大。

如需进一步简化(例如在 BatchNorm 后 E[x]=0E[x]=0E[x]=0),则:

若 E[x]=0,⇒D[x′]=11−p⋅D[x] \text{若 } E[x] = 0, \quad \Rightarrow \quad D[x'] = \frac{1}{1-p} \cdot D[x]  E[x]=0,D[x]=1p1D[x]

仿射变换

仿射变换(Affine Transformation)是线性代数和几何学中的一个重要概念,广泛应用于计算机图形学、图像处理、机器学习等领域。

你可以把仿射变换理解为:

“保持直线和平行性的线性变换 + 平移”
也就是说,仿射变换不会把直线变成曲线,也不会让原本平行的线变得不平行,但它可以拉伸、旋转、翻转、缩放、剪切,还能整体平移图形。

在数学上,一个从向量空间 Rn\mathbb{R}^nRnRm\mathbb{R}^mRm 的变换 (f) 是仿射变换,当且仅当它可以表示为:

f(x)=Ax+b f(\mathbf{x}) = A\mathbf{x} + \mathbf{b} f(x)=Ax+b
其中:

  • x\mathbf{x}x 是输入向量(比如一个点的坐标);
    -AAA 是一个 m×nm \times nm×n矩阵,代表线性变换部分(如旋转、缩放、剪切等);
  • b\mathbf{b}b 是一个mmm 维的平移向量
  • AxA\mathbf{x}Ax 是线性变换,b\mathbf{b}b 是平移 —— 两者合起来就是仿射变换。相当于仿射变换是包含线性变换的

** 常见的仿射变换类型(2D图像中):**

变换类型 说明 是否仿射?
平移(Translation) 整体移动图形 ✅ 是
旋转(Rotation) 绕某点旋转 ✅ 是
缩放(Scaling) 放大或缩小 ✅ 是
剪切(Shear) 倾斜变形 ✅ 是
反射(Reflection) 镜像翻转 ✅ 是
投影(Perspective) 透视变形(如近大远小) ❌ 不是(是非线性变换)

AlphaDropout

在 AlphaDropout 中,仿射变换被用来调整被“丢弃”的神经元输出值,使得:

  • 被设为 −α′-\alpha'α 的值,经过变换后,整体输出的均值和方差保持不变
  • 这样网络在训练时即使随机丢弃神经元,也不会破坏数据的统计特性(比如均值=0,方差=1),从而更稳定地训练。

f(x)=a(x(1−d)+α′d)+b f(x) = a \left( x(1-d) + \alpha' d \right) + b f(x)=a(x(1d)+αd)+b
其中:

  • ddd是一个与ppp 相关的变量,表示在 AlphaDropout 中实际被设置为特定值 $ -\alpha’ $的概率。具体来说,在 AlphaDropout 中,神经元的输出不是简单地设置为 0,而是设置为某个特定的值 α′\alpha'α。因此,ddd 实际上是神经元被设置为 −α′-\alpha'α的概率。
  • x(1−d)+α′dx(1-d) + \alpha'dx(1d)+αd 是对输入的“选择性替换”(类似Dropout);
  • 然后乘以缩放因子 aaa,再加上偏移 bbb —— 这就是标准的仿射变换形式!
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐