神经网络权重初始化(w)

讲解的非常好的文章推荐:https://zhuanlan.zhihu.com/p/102708578

一.为什么权重初始化值得学习?

正向传播中:权重w比1小,随着层数增加,权重连乘会导致结果出现指数级减少;

权重比1大,随着层数的增加,权重连乘会导致结果出现指数爆炸式增长。

反向传播中:

这些因子连续相乘,带来的影响是指数级的。

我们希望的是损失函数收敛时,梯度为0(接近0),这时损失函数不再下降。
我们不希望在抵达极小值前,梯度就为0了;(梯度消失)
我们也不希望下降过程过于震荡,甚至不收敛。(梯度爆炸)

从上面的公式可得至少有三个因素可能导致梯度消失or梯度爆炸

1、网络过深

2、不合理的激活函数

3、不良的初始化权重

二.权重应该如何初始化?

一..不合适的初始化方法

1.设置为一个常量或者全为0

设置为一个常量:更新后的权重仍然是相同的常量。初始值相同,变化值相同,更新后的值依然相同,这显然是不能接受的。

不管进行多少轮正向传播以及反向传播,每俩层之间的参数都是一样的。换句话说,本来我们希望不同的结点学习到不同的参数,但是由于参数相同以及输出值都一样,不同的结点根本无法学到不同的特征!!!这样就失去了网络学习特征的意义。

全为0: 

此时,学习算法的公式将不能对权重参数做出任何调整,模型将会陷于困局。

2.权重随机初始化

随机分布选择不当就会导致网络优化陷入困境。

为什么不讨论偏置项b的初始化?每层偏置的梯度仅取决于该层的线性激活值,而不取决于较深层的梯度值。因此,对于偏置项不会存在梯度消失和梯度爆炸问题因此可以安全地将偏置b初始化为0。

 一..可行的初始化方法

 1.pre-training预训练

借鉴类似问题的训练过的模型。

2.Xavier 初始化

早期的参数初始化普遍是将数据和参数normalize为高斯分布(均值0,方差1),但随着神经网络深度的增加,这个方法并不能解决梯度消失的问题。

讲解视频:

Xavier Glorot and Kaiming He Initialization

Xavier初始化的作者,Xavier Glorot,发现:激活值的方差是逐层递减的,这导致反向传播中的梯度也逐层递减。要解决梯度消失, 就要避免激活值方差的衰减,即每一层输出的方差应该尽量相等。

Xavier初始化的基本思想是,若对于一层网络的 输出和输出可以保持正态分布且方差相近,这样就可以避免输出趋向于0,从而避免梯度消失情况。

推导:深度学习相关概念:权重初始化

缺点:Xavier初始化有一定限制,其推导过程假设激活函数在零点附近接近线性函数,且激活值关于0对称。Relu函数很明显是不对称的。

3、He 初始化

He 初始化 或者叫 Kaiming 初始化,由大牛Kaiming He提出来给激活函数 PReLU 用的。

He 初始化的基本思想是,由于PReLU函数一半Z值(负值)趋近于零,实际上移除了大约一半方差。所以我们需要 加倍权重的方差 以补偿这一点。补偿的方法,只需要对Xavier 初始化进行一项微小的调整——“将权重的方差乘以2”

结论:

其中,d 可以是输出层神经元个数,也可以是输入层神经元个数,二选一。

 4、Batch Normalization+随机初始化

随着网络深度加深,输入值的分布逐渐发生偏移,之所以训练收敛慢,一般是整体分布逐渐往非线性函数的取值区间的上下限两端靠近,导致反向传播时低层神经网络的梯度消失。

上面几种方法,都在说怎么避免或者减小这个偏移的发生。而BN(Batch Normalization)的想法简单粗暴,发生了没关系,我再加一层 layer,不厌其烦得把每次输出的分布都纠正回来。这样我们再权重初始化的时候,就可以放心大胆得随机了。

BN的本质是在网络的每一层输入的时候,又插入了一个归一化层,也就是先做一个归一化处理(均值0、方差为1),然后再进入网络的下一层。(如下图所示)

道理是比较简单,实际上BN层的运算包括了两个步骤,先“归一化(Normalize)”,后“ 变换重构(Scale and shift)”

先归一

后变换重构

为什么需要变换重构呢?因为强行归一化可能会损坏原始某一层学习到的特征分布,有公式可以证明通过学习到的重构参数γ、β,是可以恢复出原始的某一层所学到的特征的。

BN优点

(1) 减轻了对参数初始化的依赖
(2) 训练更快,可以使用更高的学习率。
(3) BN一定程度上增加了泛化能力,dropout等技术可以去掉。

dropout技术 

dropout技术:是缓解卷积神经网络CNN过拟合而被提出的一种正则化方法 ,缺点就是可能会减缓模型收敛的速度,因为每次迭代只有一部分参数更新,可能导致梯度下降变慢。

   Dropout叫做随机失活,简单来说就是在模型训练阶段的前向传播过程中,让某些神经元的激活值以一定的概率停止工作。

所有神经元以一定概率p失活,输入输出的神经元保持不变

让输入X通过部分神经元失活的新网络进行前向传播,然后计算损失并把损失反向传播,一小批样本执行完这个过程后,根据梯度下降算法更新参数(w,b);

Dropout一般只在网络的训练阶段使用,而测试阶段不使用Dropout,也就是说训练时前向传播只使用没有失活的那部分神经元,而测试时使用的是全部的神经元,那么训练和测试阶段就会出现数据尺度不同的问题。所以测试时,所有权重参数都要乘以1−p以保证训练和测试时尺度变化一致。


超参数:

机器学习模型中一般有两类参数:一类需要从数据中学习和估计得到,称为模型参数(Parameter)---即模型本身的参数。比如,线性回归直线的加权系数(斜率)及其偏差项(截距)都是模型参数。还有一类则是机器学习算法中的调优参数(tuning parameters),需要人为设定,称为超参数(Hyperparameter)。比如,正则化系数λ,决策树模型中树的深度。

参数和超参数的区别:

模型参数是模型内部的配置变量,需要用数据估计模型参数的值;模型超参数是模型外部的配置,需要手动设置超参数的值。机器学习中一直说的“调参”,实际上不是调“参数”,而是调“超参数”。

哪些属于超参数?

梯度下降法中的学习速率α,迭代次数epoch,批量大小batch-size,k近邻法中的k(最相近的点的个数),决策树模型中树的深度,等等。

超参数的优化:

有四种主要的策略可用于搜索最佳配置:

  • 照看(babysitting,又叫试错)
  • 网格搜索
  • 随机搜索
  • 贝叶斯优化

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
回答: 神经网络权重初始化方法对模型的收敛速度和性能有着至关重要的影响。在深度神经网络中,随着层数的增多,梯度消失或梯度爆炸的问题容易出现。因此,权重初始化非常重要。一般来说,有四种常见的权重初始化方法:初始化为0、随机初始化、Xavier初始化和He初始化。\[2\] 首先,将权重初始化为0是不可行的。因为在误差反向传播法中,所有的权重进行相同的更新。这导致权重被更新为相同的,并且失去了不同权重的意义。为了防止权重均一化,必须随机生成初始。\[3\] 其次,随机初始化是一种常见的权重初始化方法。通过从某个分布中随机选择初始,可以打破权重的对称性,避免梯度消失或梯度爆炸的问题。常见的随机初始化方法包括在一定范围内均匀分布或正态分布的随机数。这样可以使得每个神经元的初始权重不同,有利于模型的学习和收敛。\[2\] 另外,Xavier初始化和He初始化是两种常用的权重初始化方法。Xavier初始化是根据输入和输出神经元的数量来确定初始权重的范围,以保持梯度的稳定性。He初始化是在Xavier初始化的基础上,将初始权重的范围缩小一半,适用于使用ReLU激活函数的神经网络。这两种方法都能有效地解决梯度消失和梯度爆炸的问题,提高模型的性能和收敛速度。\[2\] 综上所述,神经网络权重初始化方法对模型的性能和收敛速度有着重要的影响。随机初始化、Xavier初始化和He初始化是常用的权重初始化方法,可以有效地解决梯度消失和梯度爆炸的问题,提高模型的学习能力和收敛速度。\[2\] #### 引用[.reference_title] - *1* *3* [神经网络中的权重初始化](https://blog.csdn.net/A496608119/article/details/115529061)[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^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [神经网络权重初始化](https://blog.csdn.net/weixin_44058333/article/details/99684821)[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^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值