12 权重衰退

过拟合的应对方法——weight_decay

权重衰退是最广泛使用的正则化方法之一。

模型容量受参数个数和参数范围影响,通过L2正则项限制w的取值范围,权重w每次更新乘以小于1的数,w的数值范围不会太大,从而降低模型复杂度,减轻过拟合风险。

两种方法:

一、使用正则项权重超参数lambd

lambd为0,w的L2范式很大,无作用。lambd趋近无穷大,w的L2范式很少,参数w趋近于0。通过增加lambd,w的取值减小,让模型不那么复杂。

# 定义l2范式惩罚
def l2_penalty(w):
   return torch.sum(w.pow(2)) / 2

# 超参数lambd加入损失函数
l = loss(net(X), y) + lambd * l2_penalty(w)

二、在优化器中设置weight_decay参数。常用框架都包含该参数,在更新梯度前对w进行衰减。

总结:调大lambd,w减少,减轻过拟合

当lambd很大,欠拟合

问题:

1.为什么模型参数范围大模型复杂度高?

如下图需要模拟红色的点。如果我们让模型参数取很大的数值,可以用很复杂的模型来拟合红色的点,如果是二次或者三次函数,权重取的很大或者很小,可以造成一个非常不平滑的曲线。如果对模型取值限定在一个范围,不让学习复杂的模型,就会选择比较平滑的模型,例图中绿色的曲线。

12 权重衰退_第1张图片

2.实际中权重参数一般多少?

常用值:1的-3次方=0.001,1的-4次方=0.0001

你可能感兴趣的:(动手学深度学习,PyTorch版,人工智能,算法,人工智能,机器学习,神经网络,深度学习)