一篇入门

一篇入门

本站原创文章,转载请说明来自《老饼讲解-深度学习》www.bbbdata.com

"权重衰减"出自AlexNet一文,它是指在训练中不断减小参数的绝对值,是一种常用的正则化方法

本文讲解权重衰减策略的意义与作用,以前展示如何在梯度下降法中加入权重衰减

通过本文,可以了解什么是权重衰减、如何在其它算法中加入权重衰减,如何具体的代码实现

01. 什么是权重衰减机制

本节介绍深度学习中所说的SGD算法是什么

什么是权重衰减机制

什么是权重衰减权重衰减(Weight Decay),是指模型训练的过程中,每一步都稍稍缩小模型中参数P的绝对值 即在训练中加入: 其中,是衰减系数,一般设为0.0005 这里的“权重衰减”,应该理解为“待优化参数P的衰减”,"权重衰减"出自AlexNet一文,由于原文中"待优化参数P"用"权重w"来表示,以致于后来都用"权重衰减"一词来表示权重衰减的意义加入权重衰减项的意义主要是衰减待优化参数的绝对值,使得训练出来的参数的绝对值相对会更小一些一方面是因为参数绝对值过大容易带来过拟合,另一方面权重衰减可以加速神经网络的训练 当参数(权重)绝对值过大时,传给下层的值也更容易趋向极大值,这会导致神经元死亡,从而阻碍训练的速度总的来说,加入权重衰减,使得神经网络在训练过程中不断减小参数的绝对值,有利于训练和增加网络的泛化能力

如何在训练算法中加入权重衰减

下面参考pytorch里的SGD方法:《torch.optim.SGD》 讲述在梯度下降法、动量梯度下降法中加入权重衰减策略的方法梯度下降算法-加入权重衰减在梯度下降算法中,加入权重衰减,只需在每一轮调整完参数后,加入权重衰减即可 具体如下:梯度下降的迭代公式为: 加入权重衰减后则为 : 也可以写为: 这里的为待训练的参数,为学习率,为梯度, 是衰减系数动量梯度下降算法-加入权重衰减 在动量梯度下降算法中,加入权重衰减只需修改速度更新公式,如下 动量梯度下降法,速度v的原始更新公式为 : 加入权重衰减后,速度v的更新公式为: 上面的公式,仅参考自pytorch的处理方法,也可紧扣权重衰减的思想,自行设计

02. 权重衰减-代码实现

本节以梯度下降法为例,展示加入权重衰减后的代码实现

加入权重衰减的梯度下降-代码实现

以求解的最小值为例,它的梯度(即导数)为下面用加入权重衰减的梯度下降法,求解它的最小值 具体代码实现如下:"""

本代码用于展示,如果在梯度下降法中加入权重衰减,求解(x-3)**2的最小值

本代码来自《老饼讲解-深度学习》www.bbbdata.com

"""

lr = 0.01 # 设置学习率

lamb = 0.0005 # 设置权重衰减系数

x = 0 # 初始化解

for i in range(1000): # 迭代1000轮

g = 2*(x-3) # 计算梯度

x = x -lr*(g+lamb*x) # 梯度下降的同时,加入权重衰减

print('第',i,'轮,函数值:',(x-3)**2) # 打印当前的函数值

if(abs(g)<0.0001): # 如果梯度过小

break # 退出迭代

print("--结果---") # 打印结果

print('x=',x) # 打印x

print('(x-3)**2=',(x-3)**2) # 打印函数值

代码运行结果如下: 可以看到,它已经非常接近的最小解了备注:本例不太好体现出权重衰减的特性,仅仅是为了描述在训练算法中加入权重衰减是怎么回事

好了,以上就是训练算法中,权重衰减策略的原理了~

End

相关推荐

世界杯D组冰岛小组赛战绩及表现如何?
365bet体育在线怎么样

世界杯D组冰岛小组赛战绩及表现如何?

📅 09-25 👁️ 3718