深度学习——MSRA初始化

本文详细介绍了MSRA初始化方法,源自何凯明的论文《Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification》。讨论了初始化在网络深度增加时的重要性,指出传统的高斯初始化和VGG团队的策略的局限性。接着,解释了MSRA初始化的公式和推导过程,特别强调了在ReLU激活函数下的适用性。文中还提到了初始化对ReLU和PReLU的影响,并对比了MSRA与Xavier初始化的效果,特别是在深层网络中的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本次简单介绍一下MSRA初始化方法,方法同样来自于何凯明paper 《Delving Deep into Rectifiers:Surpassing Human-Level Performance on ImageNet Classification》.

Motivation

网络初始化是一件很重要的事情。但是,传统的固定方差的高斯分布初始化,在网络变深的时候使得模型很难收敛。此外,VGG团队是这样处理初始化的问题的:他们首先训练了一个8层的网络,然后用这个网络再去初始化更深的网络。

“Xavier”是一种相对不错的初始化方法,我在我的另一篇博文“深度学习——Xavier初始化方法”中有介绍。但是,Xavier推导的时候假设激活函数是线性的,显然我们目前常用的ReLU和PReLU并不满足这一条件。

MSRA初始化

只考虑输入个数时,MSRA初始化是一个均值为0方差为2/n的高斯分布:

MSRA初始化方法

推导证明

推导过程与Xavier类似。

首先,用下式表示第L层卷积:

### MSRA 初始化与 Xavier 初始化的差异 两种初始化方法的主要区别在于如何计算权重的标准差,这取决于所使用的激活函数以及网络结构。 #### 计算方式的不同 Xavier初始化假设每一层输入和输出变量具有相同的分布特性,并基于此设定初始权重范围。具体来说,如果一层神经网络有n_in个输入单元和n_out个输出单元,则该层权重矩阵W应从均匀分布U(-sqrt(6/(n_in+n_out)), sqrt(6/(n_in+n_out))) 或者正态分布N(0,sqrt(2/(n_in+n_out)))[^1] 中抽取样本作为初始值。 相比之下,MSRA(也称为Kaiming)初始化特别针对ReLU及其变体进行了优化调整。它考虑到ReLU类型的非线性变换会使信号通过网络传播时逐渐缩小一半左右的比例关系;因此,在这种情况下更倾向于采用较大的方差来补偿这一现象带来的影响。对于使用ReLU类激活函数的情况,推荐按照 N(0,\(\sqrt{2/n_{in}}\))[^2] 的形式设置权重。 #### 适用场景分析 当涉及到深层架构尤其是那些依赖于ReLU家族成员作为主要激活机制的设计方案时,MSRA往往表现得更为出色。这是因为随着层数增加,传统方法可能导致梯度消失或爆炸问题加剧,而经过改进后的MSRA能够有效缓解这些问题的发生几率并促进更快更好的模型收敛性能[^3]。 另一方面,Xavier初始化适用于多种不同种类的传统激活函数(如Sigmoid、Tanh),并且在某些特定条件下也能很好地支持浅层至中等规模深度的学习任务。然而面对非常深或者专门采用了其他特殊组件构建而成的新颖框架时,可能就需要考虑更加定制化的解决方案了[^4]。 ```python import torch.nn as nn # 使用Xavier初始化 nn.init.xavier_uniform_(tensor) # 使用MSRA/He初始化 nn.init.kaiming_normal_(tensor) ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值