深度学习笔记(3)
一、过拟合、欠拟合及其解决方案

1、训练误差和泛化误差
训练误差(training error):指模型在训练数据集上表现出的误差。
泛化误差(generalization error):指模型在任意一个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似。
计算训练误差和泛化误差可以使用之前介绍过的损失函数,例如线性回归用到的平方损失函数和softmax回归用到的交叉熵损失函数。
机器学习模型应关注降低泛化误差。
验证数据集:预留一部分在训练数据集和测试数据集以外的数据来进行模型选择。这部分数据被称为验证数据集,简称验证集(validation set)。可以用来调整模型参数。
测试数据集不可以用来调整模型参数,如果使用测试数据集调整模型参数,可能在测试数据集上发生一定程度的过拟合,此时将不能用测试误差来近似泛化误差。
K折交叉验证(K-fold cross-validation):在数据不够多的时候,k折交叉验证是一种常用的验证方法。将数据分为k份,每次选择一份用于验证模型,其余的用于训练模型。在这K次训练和验证中,每次用来验证模型的子数据集都不同。最后,对这K次训练误差和验证误差分别求平均。
2、过拟合、欠拟合的概念
欠拟合(underfitting):指训练误差和泛化误差都不能达到一个较低的水平,模型无法达到一个较低的误差
过拟合(overfitting):指训练误差达到一个较低的水平,而泛化误差依然较大,即模型的训练误差远小于它在测试数据集上的误差。
过拟合、欠拟合是模型训练中经常出现的两类典型问题,两者不可同时发生。有很多因素可能导致这两种拟合问题,在这里我们重点讨论两个因素:模型复杂度_和_训练数据集大小。
模型复杂度的解释:以多项式函数拟合为例。给定一个由标量数据特征 x 和对应的标量标签 y 组成的训练数据集,多项式函数拟合的目标是找一个 K 阶多项式函数 y ^ = b + ∑ k = 1 K x k w k \widehat{y}=b+\sum_{k=1}^{K}x^kw_{k} y
=b+k=1∑Kxkwk来近似 y。在上式,w_{k} 是模型的权重参数, b 是偏差参数。与线性回归相同,多项式函数拟合也使用平方损失函数。特别地,一阶多项式函数拟合又叫线性函数拟合。
给定训练数据集,模型复杂度和误差之间的关系:
训练数据集大小:一般来说,如果训练数据集中样本数过少,特别是比模型参数数量(按元素计)更少时,过拟合更容易发生。此外,泛化误差不会随训练数据集里样本数量增加而增大。因此,在计算资源允许的范围之内,我们通常希望训练数据集大一些,特别是在模型复杂度较高时,例如层数较多的深度学习模型。
3、权重衰减
权重衰减等价于 L 2 L_{2} L2 范数正则化(regularization)。正则化通过为模型损失函数添加惩罚项使学出的模型参数值较小,是应对_过拟合_的常用手段。
L2 范数正则化(regularization): L 2 L_{2} L2范数正则化在模型原损失函数基础上添加 L 2 L_{2} L2 范数惩罚项,从而得到训练所需要最小化的函数。 L 2 L_{2} L2 范数惩罚项指的是模型权重参数每个元素的平方和与一个正的常数的乘积,通过_惩罚绝对值较大_的模型参数为需要学习的模型增加了限制。
4、丢弃法
丢弃法:丢弃概率是丢弃法的超参数,且丢弃法不改变其输入的期望值。在训练中隐藏层神经元的丢弃是随机的,输出层的计算无法过度依赖隐藏层中的任一个,从而在训练模型时起到正则化的作用,并可以用来应对_过拟合_。在测试模型时,我们为了拿到更加确定性的结果,一般不使用丢弃法。
二、梯度消失、梯度爆炸、梯度偏移
1、梯度消失和梯度爆炸
深度模型有关数值稳定性的典型问题是消失(vanishing)和爆炸(explosion)。
当神经网络的层数较多时,模型的数值稳定性容易变差。
2、随机初始化模型参数
在神经网络中,通常需要随机初始化模型参数。此处介绍随机初始化模型参数的两种方法:PyTorch的默认随机初始化、Xavier随机初始化
原因如下:
PyTorch的默认随机初始化:在线性回归的简洁实现中,我们使用torch.nn.init.normal_()使模型net的权重参数采用正态分布的随机初始化方式。不过,PyTorch中nn.Module的模块参数都采取了较为合理的初始化策略(不同类型的layer具体采样的哪一种初始化方法的可参考源代码),因此一般不用我们考虑。
Xavier随机初始化:假设某全连接层的输入个数为 a ,输出个数为 b ,Xavier随机初始化将使该层中权重参数的每个元素都随机采样于均匀分布 U ( − 6 a + b , 6 a + b ) U(-\sqrt{{\frac{6}{a+b}}},\sqrt{{\frac{6}{a+b}}}) U(−a+b6,a+b6)它的设计主要考虑到,模型参数初始化后,每层输出的方差不该受该层输入个数影响,且每层梯度的方差也不该受该层输出个数影响。
3、考虑环境因素
协变量偏移:这里我们假设,虽然输入的分布可能随时间而改变,但是标记函数,即条件分布 P ( y ∣ x ) P(y∣x) P(y∣x)不会改变。
例如:区分猫和狗的一个例子。我们的训练数据使用的是猫和狗的真实的照片,但是在测试时,我们被要求对猫和狗的卡通图片进行分类。显然,这不太可能奏效。训练集由照片组成,而测试集只包含卡通。在一个看起来与测试集有着本质不同的数据集上进行训练,而不考虑如何适应新的情况,这是不是一个好主意。
统计学家称这种协变量变化是因为问题的根源在于特征分布的变化(即协变量的变化)。数学上,我们可以说P(x)改变了,但P(y∣x)保持不变。尽管它的有用性并不局限于此,当我们认为x导致y时,协变量移位通常是正确的假设。
标签偏移:当我们认为导致偏移的是标签P(y)上的边缘分布的变化,但类条件分布是不变的P(x∣y)时,就会出现相反的问题。当我们认为y导致x时,标签偏移是一个合理的假设。
概念偏移:即标签本身的定义发生变化的情况。比如美国的软饮料(soft drink)
三、循环神经网络进阶
RNN存在的问题:梯度较容易出现衰减或爆炸(BPTT)
⻔控循环神经⽹络:捕捉时间序列中时间步距离较⼤的依赖关系
GRU
重置⻔有助于捕捉时间序列⾥短期的依赖关系;
更新⻔有助于捕捉时间序列⾥⻓期的依赖关系。
LSTM
长短期记忆long short-term memory :
遗忘门:控制上一时间步的记忆细胞
输入门:控制当前时间步的输入
输出门:控制从记忆细胞到隐藏状态
记忆细胞:⼀种特殊的隐藏状态的信息的流动
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)