深度学习——MSRA初始化

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

本次简单介绍一下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层卷积:

### PyTorch中MSRA初始化方法的用法与实现 在深度学习框架PyTorch中,MSRA初始化也被称为Kaiming初始化[^3]。这种初始化方式由何凯明等人提出,特别适用于ReLU激活函数以及更深的神经网络结构。其核心思想是通过调整权重分布的标准差来保持信号在网络中的传播稳定性。 #### Kaiming 初始化的核心原理 Kaiming初始化基于方差缩放的思想,在正向传播和反向传播过程中维持梯度的稳定传递。对于`mode='fan_in'`的情况,初始权重服从以下分布: - 正态分布: \[ W \sim N(0, \sqrt{\frac{2}{\text{fan\_in}}}) \] - 均匀分布: \[ W \sim U(-\sqrt{\frac{6}{\text{fan\_in}}}, \sqrt{\frac{6}{\text{fan\_in}}}) \] 其中,`\text{fan\_in}`表示输入单元的数量[^4]。 --- #### 在PyTorch中应用MSRA/Kaiming初始化 以下是具体实现代码示例: ```python import torch.nn as nn import torch.nn.init as init def initialize_weights_kaiming(module): """递归地对模块及其子模块应用Kaiming初始化""" if isinstance(module, (nn.Conv2d, nn.Linear)): # 使用Kaiming均匀分布初始化 init.kaiming_uniform_(module.weight, nonlinearity='relu') # 针对ReLU激活函数优化 if module.bias is not None: init.constant_(module.bias, 0) # 将偏置项初始化为零 ``` 上述代码定义了一个通用的初始化函数 `initialize_weights_kaiming`,可以应用于任何包含卷积层或全连接层的模型。调用该函数的方式如下所示: ```python model = YourModel() # 替换为您自己的模型类实例 model.apply(initialize_weights_kaiming) ``` 此操作会对整个模型的所有适用层执行Kaiming初始化。 --- #### 默认情况下PyTorch的初始化行为 需要注意的是,默认情况下PyTorch已经为某些常见层实现了合理的初始化策略。例如,Conv2d 和 Linear 层均采用了一种形式的统一初始化。然而,为了进一步提升性能或者适配特定任务需求,手动指定更合适的初始化方案(如Kaiming初始化)通常是推荐的做法。 --- ### 总结 通过对模型参数进行科学有效的初始化能够显著改善训练过程中的收敛速度及最终效果。特别是在涉及深层架构设计时,合理选用诸如MSRA(Kaiming)这样的先进技术显得尤为重要[^1]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值