训练误差和泛化误差
训练误差:在训练数据集上表现出的误差,
泛化误差:在任意一个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似,机器学习模型应关注降低泛化误差
K折交叉验证
原始训练数据集分割成K个不重合的子数据集。每一次,我们使用一个子数据集验证模型,并使用其他K-1个子数据集来训练模型。每次验证数据集都不同求平均。
过拟合和欠拟合
接下来,我们将探究模型训练中经常出现的两类典型问题:
- 欠拟合:模型无法得到较低的训练误差
- 过拟合:训练集误差很小,测试机反而很大
虽然有很多因素可能导致这两种拟合问题,在这里我们重点讨论两个因素:模型复杂度和训练数据集大小。
- 容易欠拟合:模型复杂度太低
- 容易过拟合;模型复杂度太高,训练数据集中样本数过少 泛化误差不会随训练数据集里样本数量增加而增大。因此,通常希望训练数据集大一些,例如深度学习模
权重衰减=L2范数正则化
optimizer_w = torch.optim.SGD(params=[net.weight], lr=lr, weight_decay=wd) # 对权重参数衰减
丢弃法dropout
-
net = nn.Sequential(
-
d2l.FlattenLayer(),
-
nn.Linear(num_inputs, num_hiddens1),
-
nn.ReLU(),
-
nn.Dropout(drop_prob1),
-
nn.Linear(num_hiddens1, num_hiddens2),
-
nn.ReLU(),
-
nn.Dropout(drop_prob2),
-
nn.Linear(num_hiddens2,
10)
-
)
转载:https://blog.csdn.net/serenysdfg/article/details/104500350
查看评论