权值初始化 - Xavier和MSRA方法

权重初始化对神经网络训练至关重要,错误的初始化可能导致梯度爆炸或消失。Xavier和He初始化(MSRA)是两种有效的解决方案。Xavier初始化基于均值为0,方差保持不变的原则,适用于tanh和sigmoid激活函数。He初始化考虑了ReLU激活函数的特性,其方差为输入神经元数量的倒数。这两种方法通过控制权值的初始分布,有助于网络的稳定收敛。
摘要由CSDN通过智能技术生成

设计好神经网络结构以及loss function 后,训练神经网络的步骤如下:

  1. 初始化权值参数
  2. 选择一个合适的梯度下降算法(例如:Adam,RMSprop等)
  3. 重复下面的迭代过程:
    1. 输入的正向传播
    2. 计算loss function 的值
    3. 反向传播,计算loss function 相对于权值参数的梯度值
    4. 根据选择的梯度下降算法,使用梯度值更新每个权值参数

初始化

神经网络的训练过程是一个迭代的过程,俗话说:好的开始就是成功的一半,所以的权值参数的初始化的值对网络最终的训练结果有很大的影响。 过大或者过小的初始值,对网络收敛的结果都会有不好的结果。

所有的参数初始化为0或者相同的常数

最简单的初始化方法就是将权值参数全部初始化为0或者一个常数,但是使用这种方法会导致网络中所有的神经元学习到的是相同的特征

假设神经网络中只有一个有2个神经元的隐藏层,现在将偏置参数初始化为: b i a s = 0 bias = 0 bias=0,权值矩阵初始化为一个常数 α \alpha α。 网络的输入为 ( x 1 , x 2 ) (x_1,x_2) (x1,x2),隐藏层使用的激活函数为 R e L U ReLU ReLU,则隐藏层的每个神经元的输出都是 r e l u ( α x 1 + α x 2 ) relu(\alpha x_1 + \alpha x_2) relu(αx1+αx2)。 这就导致,对于loss function的值来说,两个神经元的影响是一样的,在反向传播的过程中对应参数的梯度值也是一样,也就说在训练的过程中,两个神经元的参数一直保持一致,其学习到的特征也就一样,相当于整个网络只有一个神经元。

过大或者过小的初始化

如果权值的初始值过大,则会导致梯度爆炸,使得网络不收敛;过小的权值初始值,则会导致梯度消失,会导致网络收敛缓慢或者收敛到局部极小值。

如果权值的初始值过大,则loss function相对于权值参数的梯度值很大,每次利用梯度下降更新参数的时,参数更新的幅度也会很大,这就导致loss function的值在其最小值附近震荡。

而过小的初值值则相反,loss关于权值参数的梯度很小,每次更新参数时,更新的幅度也很小,着就会导致loss的收敛很缓慢,或者在收敛到最小值前在某个局部的极小值收敛了。

Xavier初始化

Xavier初始化,由Xavier Glorot 在2010年的论文 Understanding the difficulty of training deep feedforward neural networks 提出。
为了避免梯度爆炸或者梯度消失,有两个经验性的准则:

  1. 每一层神经元激活值的均值要保持为0
  2. 每一层激活的方差应该保持不变。

在正向传播时,每层的激活值的方差保持不变;在反向传播时,每层的梯度值的方差保持不变。

基于上述的准则,初始的权值参数 W l W^l Wl l l l为网络的第 l l l层)要符合以下公式
W [ l ] ∼ N ( μ = 0 , σ 2 = 1 n [ l − 1 ] ) b [ l ] = 0 \begin{aligned} W^{[l]} & \sim \mathcal{N}\left(\mu=0, \sigma^{2}=\frac{1}{n^{[l-1]}}\right) \\ b^{[l]} &=0 \end{aligned} W[l]b[l]N(μ=0,σ2=n[l1]1)=0

其中 n n − 1 n^{n-1} nn1是第 l − 1 l-1 l1层的神经元的个数。 也就是说,初始的权值 w w w可以从均值 μ = 0 \mu = 0 μ=0,方差为 σ 2 = 1 n l − 1 \sigma^{2}=\frac{1}{n ^{l-1}} σ2=nl11的正态分布中随机选取。

正向传播的推导过程

推导过程中的三个假设:

  1. 权值矩阵 w w w是独立同分布的,且其均值为0
  2. 每一层的输入 a a a是独立同分布的,且均值也为0
  3. w w w a a a是相互独立的

L L L层的权值矩阵为 W W W,偏置为 b b b,其输入为 a a a
z l = w l a l − 1 + b l z^l = w^la^{l-1} + b^l zl=wlal1+bl


V a r ( z l ) = V a r ( ∑ i = 0 n w i l a i l ) = ∑ i = 0 n V a r ( w i l a i l − 1 ) Var(z^l) = Var(\sum_{i=0}^nw_{i}^la_i^l) = \sum_{i=0}^n Var(w_{i}^la_i^{l-1}) Var(zl)=Var(i=0nwilail)=i=0nVar(wilail1)

有统计概率的知识可得到:(第一个假设 W W W, x x x相互独立)
V a r ( w i x i ) = E 2 ( w i ) V a r ( w i ) + E 2 ( x i ) V a r ( x i ) + V a r ( w i ) V a r ( x i ) Var(w_ix_i) = E^2(w_i)Var(w_i) + E^2(x_i)Var(x_i) + Var(w_i)Var(x_i) Var(wixi)=E2(wi)Var(wi)+E2(xi)Var(xi)+Var(wi)Var(xi)

由第一第二个假设可知: l l l层输入的均值为0,权值参数 W W W的均值也为0,即: E ( x i ) = 0 , E ( w i ) = 0 E(x_i) = 0,E(w_i) = 0 E(xi)=0,E(wi)=0则有: V a r ( w i x i ) = V a r ( w i ) V a r ( x i ) Var(w_ix_i) = Var(w_i)Var(x_i) Var(wixi)=V

在使用Matlab进行卷积神经网络的权值初始化时,有几种常用的方法。其中一种是随机初始化权值。在这种方法中,权值矩阵的每个元素都是从一个均匀分布或高斯分布中随机抽取的。这种方法可以帮助网络避免陷入局部最优解,并且在一些情况下可以提高网络的收敛速度。另一种方法是使用预训练的权值。这种方法通过在其他数据集上训练得到的预训练模型的权值初始化网络。这可以提供一种比随机初始化更好的起点,特别是在相似的任务上。除此之外,还有一些其他的权值初始化方法,如Xavier初始化和He初始化,它们根据网络的结构和激活函数的特性来调整权值的初始范围。这些方法可以帮助网络更好地学习和泛化。需要注意的是,在使用任何权值初始化方法时,都应该考虑到网络的架构和任务的特性,以便选择合适的方法初始化权值。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [matlab输出神经网络权值,matlab神经网络能做什么](https://blog.csdn.net/goodutils/article/details/127354414)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [神经网络权值是什么意思,神经网络权重取值范围](https://blog.csdn.net/mynote/article/details/126203068)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值