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

【深度学习】4. 参数初始化详解与数学推导: Xavier, He

深度学习中的参数初始化详解与数学推导

在训练深度神经网络时,参数初始化不仅仅是一个起点设定问题,它直接影响模型的训练稳定性、梯度传播能力和最终性能表现。合理的初始化策略可以避免梯度爆炸或消失,显著提高收敛速度。

一、初始化策略总览

初始化方法主要包括:

  • 全零初始化(All zero initialization)
  • 小随机数初始化(Small random initialization)
  • 校准方差的初始化方法(如 Xavier 和 He 初始化)

二、全零初始化的失败原因

若将神经网络中的所有权重初始化为 0,则每个神经元在正向传播时的输出完全相同:

设第一层神经元输出为:

z i = w i ⊤ x + b i z_i = w_i^\top x + b_i zi=wix+bi

w i = 0 w_i = 0 wi=0,则 z i = b i z_i = b_i zi=bi(相同),经过激活函数后输出也相同,导致反向传播中:

∂ L ∂ w i = ∂ L ∂ z i ⋅ ∂ z i ∂ w i \frac{\partial \mathcal{L}}{\partial w_i} = \frac{\partial \mathcal{L}}{\partial z_i} \cdot \frac{\partial z_i}{\partial w_i} wiL=ziLwizi

∂ z i ∂ w i = x \frac{\partial z_i}{\partial w_i} = x wizi=x 相同,最终所有 w i w_i wi 都更新成一样,称为参数退化(Symmetry Problem)。

因此,初始化必须打破对称性

三、过小或过大的初始化问题

即使打破对称性,如果初始化数值过大或过小,也会造成梯度异常:

  1. 初始化过大:激活值不断放大,梯度爆炸
  2. 初始化过小:激活值趋近于 0,梯度消失

假设网络为 L L L 层,每层为:

z [ l ] = W [ l ] a [ l − 1 ] + b [ l ] , a [ l ] = f ( z [ l ] ) z^{[l]} = W^{[l]} a^{[l-1]} + b^{[l]}, \quad a^{[l]} = f(z^{[l]}) z[l]=W[l]a[l1]+b[l],a[l]=f(z[l])

W [ l ] W^{[l]} W[l] 值过大,则 z [ l ] z^{[l]} z[l] f f f(如 sigmoid、tanh)中进入饱和区,导致:

d f ( z ) d z ≈ 0 ⇒ ∂ L ∂ W [ l ] ≈ 0 \frac{d f(z)}{dz} \approx 0 \Rightarrow \frac{\partial \mathcal{L}}{\partial W^{[l]}} \approx 0 dzdf(z)0W[l]L0

这会造成梯度消失;反之若过大,则层间梯度乘积可能爆炸。

因此必须合理设置 W W W 的方差,使每层的激活值和梯度方差在前向和反向传播中保持稳定。

四、理想初始化的两个目标

为了保证信号能够有效传播,我们希望满足两个目标:

  1. 所有层中激活值的均值为 0:
    E [ a [ l ] ] = 0 \mathbb{E}[a^{[l]}] = 0 E[a[l]]=0

  2. 所有层中激活值的方差不变:
    Var ( a [ l ] ) = Var ( a [ l − 1 ] ) \text{Var}(a^{[l]}) = \text{Var}(a^{[l-1]}) Var(a[l])=Var(a[l1])

同样,对梯度也希望满足类似的方差恒定假设。

五、Xavier 初始化的推导(适用于 tanh)

提出者:Xavier Glorot 和 Yoshua Bengio(2010)

假设激活函数为 tanh ⁡ \tanh tanh,在训练初期 tanh ⁡ ( z ) ≈ z \tanh(z) \approx z tanh(z)z,网络可线性近似。

设:

  • a [ l ] = W [ l ] a [ l − 1 ] a^{[l]} = W^{[l]} a^{[l-1]} a[l]=W[l]a[l1]
  • W [ l ] W^{[l]} W[l] a [ l − 1 ] a^{[l-1]} a[l1] 独立,均值为 0
  • 每个元素的方差为 Var ( W i j ) = σ w 2 \text{Var}(W_{ij}) = \sigma_w^2 Var(Wij)=σw2, Var ( a j ) = σ a 2 \text{Var}(a_j) = \sigma_a^2 Var(aj)=σa2

n i n n_{in} nin 为输入维度,则:

z i = ∑ j = 1 n i n W i j a j z_i = \sum_{j=1}^{n_{in}} W_{ij} a_j zi=j=1ninWijaj

根据独立性和期望线性性,有:

Var ( z i ) = ∑ j = 1 n i n Var ( W i j a j ) = ∑ j = 1 n i n Var ( W i j ) ⋅ Var ( a j ) = n i n ⋅ σ w 2 ⋅ σ a 2 \text{Var}(z_i) = \sum_{j=1}^{n_{in}} \text{Var}(W_{ij} a_j) = \sum_{j=1}^{n_{in}} \text{Var}(W_{ij}) \cdot \text{Var}(a_j) = n_{in} \cdot \sigma_w^2 \cdot \sigma_a^2 Var(zi)=j=1ninVar(Wijaj)=j=1ninVar(Wij)Var(aj)=ninσw2σa2

为了保持方差不变,要求:

Var ( z i ) = σ a 2 ⇒ n i n ⋅ σ w 2 ⋅ σ a 2 = σ a 2 \text{Var}(z_i) = \sigma_a^2 \Rightarrow n_{in} \cdot \sigma_w^2 \cdot \sigma_a^2 = \sigma_a^2 Var(zi)=σa2ninσw2σa2=σa2

两边约去 σ a 2 \sigma_a^2 σa2 得:

σ w 2 = 1 n i n \sigma_w^2 = \frac{1}{n_{in}} σw2=nin1

如果考虑到反向传播中梯度稳定,则使用 n i n + n o u t n_{in} + n_{out} nin+nout 的平均:

σ w 2 = 2 n i n + n o u t \sigma_w^2 = \frac{2}{n_{in} + n_{out}} σw2=nin+nout2

因此 Xavier 初始化设定:

W ∼ U ( − 6 n i n + n o u t , 6 n i n + n o u t ) W \sim \mathcal{U}\left(-\sqrt{\frac{6}{n_{in} + n_{out}}}, \sqrt{\frac{6}{n_{in} + n_{out}}}\right) WU(nin+nout6 ,nin+nout6 )

或者:

W ∼ N ( 0 , 2 n i n + n o u t ) W \sim \mathcal{N}\left(0, \frac{2}{n_{in} + n_{out}} \right) WN(0,nin+nout2)

适用于 sigmoid、tanh 等中心对称激活函数。

六、He 初始化的推导(适用于 ReLU)

提出者:Kaiming He 等人(2015)

ReLU 的输出为:

a = max ⁡ ( 0 , z ) a = \max(0, z) a=max(0,z)

由于其将一半输入截断为 0,输出方差只有输入的一半。因此我们要加倍权重初始化的方差以补偿。

a [ l ] = max ⁡ ( 0 , W [ l ] a [ l − 1 ] ) a^{[l]} = \max(0, W^{[l]} a^{[l-1]}) a[l]=max(0,W[l]a[l1]),令 z i z_i zi 为该层输出前的线性组合:

Var ( z i ) = n i n ⋅ σ w 2 ⋅ σ a 2 \text{Var}(z_i) = n_{in} \cdot \sigma_w^2 \cdot \sigma_a^2 Var(zi)=ninσw2σa2

由于 ReLU 保留一半:

Var ( a i ) = 1 2 ⋅ Var ( z i ) = 1 2 n i n ⋅ σ w 2 ⋅ σ a 2 \text{Var}(a_i) = \frac{1}{2} \cdot \text{Var}(z_i) = \frac{1}{2} n_{in} \cdot \sigma_w^2 \cdot \sigma_a^2 Var(ai)=21Var(zi)=21ninσw2σa2

为使 Var ( a i ) = σ a 2 \text{Var}(a_i) = \sigma_a^2 Var(ai)=σa2,需满足:

1 2 n i n ⋅ σ w 2 ⋅ σ a 2 = σ a 2 ⇒ σ w 2 = 2 n i n \frac{1}{2} n_{in} \cdot \sigma_w^2 \cdot \sigma_a^2 = \sigma_a^2 \Rightarrow \sigma_w^2 = \frac{2}{n_{in}} 21ninσw2σa2=σa2σw2=nin2

因此 He 初始化设定为:

W ∼ N ( 0 , 2 n i n ) W \sim \mathcal{N}\left(0, \frac{2}{n_{in}} \right) WN(0,nin2)

W ∼ U ( − 6 n i n , 6 n i n ) W \sim \mathcal{U}\left(-\sqrt{\frac{6}{n_{in}}}, \sqrt{\frac{6}{n_{in}}} \right) WU(nin6 ,nin6 )

适用于 ReLU 及其变体(如 LeakyReLU、ELU)。

七、总结

合理的初始化可以:

  • 保持正向传播中激活值方差恒定
  • 保持反向传播中梯度方差恒定
  • 避免网络在训练初期出现梯度爆炸或梯度消失

Xavier 和 He 初始化已经被深度学习框架(如 PyTorch、TensorFlow)作为默认选项广泛使用。

http://www.xdnf.cn/news/663301.html

相关文章:

  • 敦普水性双组份聚氨酯面漆检验报告(SGS、重金属含量、低voc)
  • 电路中常见器件及作用(电阻 电容 电感)
  • 如何通过PHPMyadmin对MYSQL数据库进行管理?
  • IP离线库与网站集成
  • 如何在 Windows 10 PC 上获取 iPhone短信
  • MS1205N激光测距用高精度时间测量(TDC)电路
  • 火山引擎云服务器带宽支持
  • 楼宇自控成智能建筑核心技术,提升节能效率,构筑绿色发展新优势
  • 多查询检索在RAG中的应用及为什么平均嵌入向量效果好
  • C/C++内存泄漏深度解析与系统化解决方案
  • 工业级应用:Halcon灰度直方图核心技术全解
  • 数据的获取与读取篇---常见的数据格式CSV
  • uv使用教程
  • Agilent安捷伦Cary3500 UV vis光谱仪Cary60分光光度计Cary1003004000500060007000 UV visible
  • 【STM32开发板】电源设计原理
  • Typescript学习教程,从入门到精通,TypeScript 名称空间与模块语法知识点及案例(14)
  • 前缀和实现题目:区域和检索 - 数组不可变
  • 第2章(新)Day2 - Python基础入门
  • 【图论 并集查找】P3671 [USACO17OPEN] Where‘s Bessie? S|普及+
  • python打卡训练营打卡记录day37
  • 自驾总结Module(综述)
  • CN 第二章 应用层-判断题
  • uniapp-商城-70-shop(3-商品列表,点击规格,进行属性选择)
  • AI巡检系统适合多大面积的餐厅?
  • lc hot 100之:找到所有数组中消失的数字
  • SQL:合并查询(UNION)
  • DL00347-基于人工智能YOLOv11的安检X光危险品刀具检测含数据集
  • 报文完整性与数字签名
  • 【修电脑的小记录】打不开某个网站
  • Linux `ls` 命令深度解析与高阶应用指南