神经网络的初始化方法总结 | 又名“如何选择合适的初始化方法” ​

简介: 本文介绍了为什么初始化很重要,总结了常用的几种初始化方法:全零或等值初始化、正态初始化、均匀初始化、Xavier初始化、He初始化和Pre-trained初始化,并介绍了几个还活跃的初始化方向:数据相关初始化、稀疏权重矩阵和随机正交矩阵初始化。

 

为什么初始化很重要


不正确初始化的权重会导致梯度消失或爆炸问题,从而对训练过程产生负面影响。

对于梯度消失问题,权重更新很小,导致收敛速度变慢——这使得损失函数的优化变慢,在最坏的情况下,可能会阻止网络完全收敛。相反,使用过大的权重进行初始化可能会导致在前向传播或反向传播过程中梯度值爆炸。

 

常见的初始化方法


1. 全零或等值初始化


由于初始化的值全都相同,每个神经元学到的东西也相同,将导致“对称性(Symmetry)”问题。

 

2. 正态初始化(Normal Initialization)


均值为零,标准差设置一个小值。


这样的做好的好处就是有相同的偏差,权重有正有负。比较合理。


例:2012年AlexNet使用“均值为零、标准差设置为0.01、偏差为1的高斯(正常)噪声进行初始化”的初始化方法。然而,这种正常的随机初始化方法不适用于训练非常深的网络,尤其是那些使用 ReLU激活函数的网络,因为之前提到的梯度消失和爆炸问题。

 

3. 均匀初始化(Uniform Initialization)


均匀分布的区间通常为【-1/sqrt(fan_in),1/sqrt(fan_in)】


其中fan_in表示输入神经元的数量,fan_out表示输出神经元的数量。

2c930825dc6d34d4dc1bf99a42afcf8b.jpg

4. Xavier Initialization


来自论文《Understanding the difficulty of training deep feedforward neural networks》


根据sigmoid函数图像的特点

4443ab77387ec565a3562d50cceae6bd.jpg

如果初始化值很小,那么随着层数的传递,方差就会趋于0,此时输入值也变得越来越小,在sigmoid上就是在0附近,接近于线性,失去了非线性。


如果初始值很大,那么随着层数的传递,方差会迅速增加,此时输入值变得很大,而sigmoid在大输入值写倒数趋近于0,反向传播时会遇到梯度消失的问题。


针对这个问题,Xavier 和 Bengio提出了“Xavier”初始化,它在初始化权重时考虑了网络的大小(输入和输出单元的数量)。这种方法通过使权重与前一层中单元数的平方根成反比来确保权重保持在合理的值范围内。


Xavier 的初始化有两种变体。


Xavier Normal:正态分布的均值为0、方差为sqrt( 2/(fan_in + fan_out) )。


Xavier Uniform:均匀分布的区间为【-sqrt( 6/(fan_in + fan_out)) , sqrt( 6/(fan_in + fan_out)) 】。


Xavier 初始化适用于使用tanh、sigmoid为激活函数的网络。

 

5. He Initialization


激活函数的选择最终在决定初始化方法的有效性方面发挥着重要作用。激活函数是可微的,并将非线性特性引入神经网络,这对于解决机器学习和深度学习旨在解决的复杂任务至关重要。ReLU和leaky ReLU是常用的激活函数,因为它们对消失/爆炸梯度问题相对鲁棒。


Xavier在tanh函数上表现可以,但对 ReLU 等激活函数效果不好,何凯明引入了一种更鲁棒的权重初始化方法--He Initialization。


He Initialization也有两种变体:


He Normal:正态分布的均值为0、方差为sqrt( 2/fan_in )。


He Uniform:均匀分布的区间为【-sqrt( 6/fan_in) , sqrt(6/fan_in) 】


He Initialization适用于使用ReLU、Leaky ReLU这样的非线性激活函数的网络。

 

He Initialization和Xavier Initialization 两种方法都使用类似的理论分析:它们为从中提取初始参数的分布找到了很好的方差。该方差适用于所使用的激活函数,并且在不明确考虑分布类型的情况下导出。

4653d70b23dc0b07b14823b046003b64.png

图来自何凯明的论文。

论文展示了何凯明改进的初始化策略(红色)如何比 (P)ReLU 的 Xavier 方法(蓝色)更快地降低错误率。

 

有关 Xavier 和 He 初始化方法的证明,请参阅 Pierre Ouannes 的文章《如何初始化深度神经网络?Xavier 和 Kaiming 初始化》。

 

6. Pre-trained


使用预训练的权重作为初始化,相比于其它初始化,收敛速度更快,起点更好。

 

除了以上的初始化方法外,还包括有LeCun Initialization。方法跟He Initialization和Xavier Initialization类似,但基本没怎么看见用,这里就不列出来了。

 

权重初始化仍然是一个活跃的研究领域。出现了几个有趣的研究项目,包括数据相关初始化、稀疏权重矩阵和随机正交矩阵初始化。

相关文章
|
13天前
|
存储 缓存 网络协议
网络丢包排查方法
网络丢包排查方法
|
15天前
|
监控 安全 iOS开发
|
23天前
|
域名解析 运维 监控
网络故障排查的常用工具与方法:技术深度解析
【8月更文挑战第20天】网络故障排查是一项复杂而重要的工作,需要网络管理员具备扎实的网络知识、丰富的实践经验和灵活的问题解决能力。通过掌握常用工具和方法,遵循科学的排查流程,可以显著提高故障排查的效率和准确性。希望本文能为读者在网络故障排查方面提供有益的参考和启示。
|
3天前
|
机器学习/深度学习 数据采集 算法
图像处理神经网络数据预处理方法
图像预处理步骤对于图像处理神经网络至关重要。这些步骤不仅保证了数据的一致性和质量,还可以通过数据增强等技术提高模型的泛化能力,从而提升模型的整体性能。每一步骤的选择和应用都基于具体任务和数据集的特性,并在模型训练和测试过程中起到关键作用。
11 0
|
1月前
|
存储 缓存 定位技术
如果遇到网络延迟问题,有哪些方法可以快速解决以保证视频源同步?
如果遇到网络延迟问题,有哪些方法可以快速解决以保证视频源同步?
|
1月前
|
机器学习/深度学习
【机器学习】面试题:LSTM长短期记忆网络的理解?LSTM是怎么解决梯度消失的问题的?还有哪些其它的解决梯度消失或梯度爆炸的方法?
长短时记忆网络(LSTM)的基本概念、解决梯度消失问题的机制,以及介绍了包括梯度裁剪、改变激活函数、残差结构和Batch Normalization在内的其他方法来解决梯度消失或梯度爆炸问题。
42 2
|
18天前
|
存储 监控 安全
确保大型组织网络安全的策略与方法
【8月更文挑战第24天】
52 0
|
19天前
|
机器学习/深度学习
神经网络中权重初始化的重要性
【8月更文挑战第23天】
37 0
|
27天前
|
网络虚拟化 数据安全/隐私保护
手把手教网络工程师2种方法如何恢复交换机配置
手把手教网络工程师2种方法如何恢复交换机配置
|
28天前
|
安全 网络协议 网络安全
常见网络攻击方式及防御方法
网络安全威胁的不断演变和增长,网络攻击的种类和数量也在不断增加,攻防对抗实战演练在即,让我们一起了解一下常见网络攻击方式及防御方法。
31 0

热门文章

最新文章