权重衰退
常用的处理过拟合的方法
使用均方范数作为硬性限制
通过限制参数值的选择范围来控制模型容量
通常不限制偏移b
小的θ意味着更强的正则项
使用均方范数作为柔性限制
总结
权重衰退通过L2正则项使得模型参数不会太大,从而控制模型复杂度
正则项权重是控制模型复杂度的超参数
代码实现
import torch
from torch import nn
from d2l import torch as d2l
生成人工数据集
n_train, n_test, num_inputs, batch_size=20,100,200,5 # 训练数据越小,越容易过拟合(此处是故意过拟合)
true_w, true_b=torch.ones((num_inputs, 1))*0.01,0.05
train_data=d2l.synthetic_data(true_w,true_b,n_train) # 具体来说,d2l.synthetic_data函数通常接受几个参数,如权重(weights)、偏置(bias)和样本数量,然后基于这些参数生成特征和标签的数据集。这些参数可以帮助你控制生成数据的分布和复杂性。
train_iter=d2l.load_array(train_data,batch_size) # 用于从文件中加载数据并将其转换为NumPy数组。它的功能是读取文件中的数据,并将其转换为指定的数据类型和形状。
test_data=d2l.synthetic_data(true_w,true_b,n_test)
test_iter=d2l.load_array(test_data,batch_size,is_train=False)
# 此处插入d2l.synthetic_data()函数的使用功能
import torch
from d2l import torch as d2l
# 定义权重和偏置
true_w1 = torch.tensor([2, -3.4])
true_b1 = 4.2
# 生成合成数据集
features1, labels1 = d2l.synthetic_data(true_w1, true_b1,