模型选择以及模型的过拟合和欠拟合
-
数据集的划分
训练集与验证集合不能混合使用,训练的时候不能使用验证集。 -
K-折交叉验证
每次选择某一块数据为验证集合,其他的用于训练,最终取所有的正确率的平均值
模型的大小与泛化误差的平衡
Weight_decay 权重衰减
通过对参数的选择范围进行一些限制,控制模型的过拟合。
为了便于优化,使用均方范数做柔性优化
DropOut
无偏差的加入扰动
通常的使用场景使用在网络中间的全连接层
Dropout的简易实现
def dropout_layer(x, dropout):
assert 0<= dropout <= 1
if dropout == 1:
return torch.zeros_like(x)
if dropout == 0:
return x
mask = (torch.randn(x.shape) > dropout.float)
return mask * x / (1 - dropout)
优化相关,梯度爆炸与梯度消失
由反向传播的过程可知,当网络加深后,由于梯度是乘法,这会导致传播到浅层的梯度非常接近0或者太大导致浮点溢出。网络难以训练。
房价预测
待填坑,周一晚上 做
收获:
学习了模型的参数设置,如何优化等等。多见识问题在以后遇到问题的时候才能更快的定位问题。
Dropout的思路简单却十分有效,打算下周看看它的论文。
问题:
矩阵那些有点蒙,还得再学学