神经网络中参数的初始化问题

总结

  • 单层的MLP(没有隐藏层,二分类,输出层使用sigmoid函数),单层MLP和逻辑回归是完全等价的。逻辑回归初始化为全0是没问题的
  • 多层MLP初始化为0不行,因为每一隐藏层的隐藏神经元权重都是一致的(反向传播的时候过个relu直接弄成0了),多个隐藏神经元的作用就如同一个神经元

为什么神经网络不能初始化权重W为0?为什么单层MLP的LR(没有隐藏层)就可以初始化权重W为0呢?

来自DeepSeek的简洁推导

LR可以初始化为全零

在这里插入图片描述

神经网络不可以

在这里插入图片描述

来自知乎磨磨唧唧的推导

以下转载自https://zhuanlan.zhihu.com/p/75879624?utm_campaign=shareopn&utm_medium=social&utm_psn=1859226216327958528&utm_source=wechat_session
在这里插入图片描述
转载自https://zhuanlan.zhihu.com/p/75879624

随意初始化为非零的权重是否可行?

答案肯定是不行的!
随意的初始化权重可能会导致梯度爆炸和梯度消失。例如当神经网络为线性的,我们初始化所有参数W=0.1或者W=0.9,都会造成指数级影响
在这里插入图片描述

如何初始化

快速总结一下,初始化的目的其实是为了二阶矩(也就是模长)不发生大变化:

Lecun: 从N(0,1/fan_in)从采样,也叫做LeCun 正态初始化,也称为 LeCun 均匀初始化,适用于更适合线性或者近似线性的激活函数,如双曲正切(在输入接近0时近似线性)
Xavier: 从N(0,2/(fan_in+fan_out))中采样,pytorch的TransformerEncoder用的是这个
He kaiming: 针对Relu,N(0,2/fan_in)或者N(0,2/fan_out)中都行

细看https://blog.youkuaiyun.com/taoqick/article/details/130798166

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值