一 过拟合与欠拟合及其解决方案
1 训练误差与泛化误差
训练误差:在训练集上的数据误差;
泛化误差:在其他任意数据集上的误差的期望,常用测试集误差来近似
模型选择:通常用验证集来进行模型选择
K折交叉验证:将数据集分成相等的K个子数据集来进行K次训练和验证,每次将其中1个当作验证集进行验证模型,另外K-1个数据集进行训练,最后K次后取训练误差的均值和验证误差的均值
2 过拟合和欠拟合
过拟合:训练集的误差远小于测试集的误差
欠拟合:模型无法得到较小的训练误差
其主要讨论模型复杂度和数据及大小,常用多项式拟合实验来观察比较训练误差和泛化误差
3 过拟合解决方法
权重衰减:等价于范数正则化,即损失函数添加惩罚项使得学得的模型参数值较小,范数惩罚项指的是模型权重参数每个元素的平方和与一个正的常数的乘积
丢弃法:当对隐藏层使用丢弃法时,该层的隐藏单元将有一定概率被丢弃掉(被清零),丢弃法不改变其输入的期望值
二 梯度消失和梯度爆炸
当神经网络的层数较多时,模型的数值稳定性容易变差,当多层感知机的层数较大时,较大层数的输出会出现消失或爆炸
环境因素:协变量偏移,标签偏移,概念偏移
Kaggle 房价预测实战
三 循环神经网络进阶
RNN存在的问题:梯度较容易出现衰减或爆炸(BPTT)
解决方法:
门控循环神经⽹络:捕捉时间序列中时间步距离较⼤的依赖关系
1 GRU
• 重置门有助于捕捉时间序列⾥短期的依赖关系;
• 更新门有助于捕捉时间序列⾥长期的依赖关系。
2 LSTM 长短期记忆long short-term memory
遗忘门:控制上一时间步的记忆细胞
输入门:控制当前时间步的输入
输出门:控制从记忆细胞到隐藏状态
记忆细胞:⼀种特殊的隐藏状态的信息的流动
3 深度循环神经网络
添加num_layers=2
gru_layer=nn.LSTM(input_size=vocab_size,hidden_size=num_hiddens,num_layers=2)
4 双向循环神经网络
添加 bidirectional=True
gru_layer=nn.GRU(input_size=vocab_size,hidden_size=num_hiddens,bidirectional=True)