简述深度学习中的常见现象及一些操作

一、过拟合和欠拟合

1、偏差

偏差指模型预测的平均值与实际值之间的差异,如果模型过于简单,不能充分捕捉数据的特征,那么偏差会高,此时模型在训练集或者测试集上的表现都会很差。而高偏差,低方差往往就是欠拟合的表现。

2、方差

方差指模型预测值在不同训练集上的波动程度,如果模型过于复杂,容易将训练集中的噪声数据进行拟合,导致在训练集上的表现好,而测试集上的表现差,那么方差会高。而高方差,低偏差往往就是过拟合的表现。

3、过拟合的原因

  • 训练数据较少
    数据缺乏多样性,模型容易过度拟合训练集中的样本,包括噪声,使得模型泛化能力减弱。
  • 模型结构复杂
    具有更多参数和灵活性,可以更好的拟合数据,但也更容易过度拟合。
  • 数据特征过多
    缺乏与目标关系强关联的特征,而与目标变量之间的关系较弱,会过度拟合噪声或无关特征。

4、欠拟合的原因

  • 模型结构简单
    模型结构过于简单,参数太少导致无法捕捉数据之间的真实关系。
  • 数据特征不足
    训练数据缺乏代表性特征或忽略重要特征,模型无法学习到足够信息进行准确预测。

二、避免过拟合及欠拟合的方法

1、避免过拟合的方法

  • 增加训练数据/权值衰减。
  • 正则化:限制模型复杂度,增大 λ \lambda λ参数。
  • 特征选择:选择与目标变量相关性较高的特征,减少噪声和不相关特征的影响。
  • 交叉验证:使用交叉验证来评估模型的泛化性能,选择最优的模型。
  • 数据增强/dropout/早期停止。

2、避免欠拟合的方法

  • 增加模型复杂度:增加参数或者加深网络层数。
  • 特征工程:提取更多有效的特征,以提高模型表达能力。
  • 模型集成:使用多个模型组合,提高模型性能和泛化能力。

三、正则化的优点

  • L1正则化
    J ( w , b ) = 1 m ∑ i = 1 m L ( y ^ i , y i ) + λ m ∑ i = 1 n x ∣ w ∣ J(w,b)=\frac{1}{m}\sum_{i=1}^{m}L(\hat{y}^{i},y^{i})+\frac{\lambda}{m}\sum_{i=1}^{n_{x}}\left | w \right | Jw,b=m1i=1mL(y^i,yi)+mλi=1nxw
  • L2正则化
    J ( w , b ) = 1 m ∑ i = 1 m L ( y ^ i , y i ) + λ 2 m ∑ j = 1 n x ∥ w ∥ 2 2 J(w,b)=\frac{1}{m}\sum_{i=1}^{m}L(\hat{y}^{i},y^{i})+\frac{\lambda}{2m}\sum_{j=1}^{n_{x}}\left \| w \right \|_{2}^{2} Jw,b=m1i=1mL(y^i,yi)+2mλj=1nxw22
    其中,L为损失函数,w为网络权重,b为偏置值,m为样本数量, x n x_{n} xn为网络层数,加号后面我们称为正则化项

1、降低模型的复杂性,防止过拟合

  • 通过正则化公式,我们可以发现,增大 λ \lambda λ,就会加深正则化项的影响,这通常会导致权重变小。因为,在优化的过程中,单 λ \lambda λ增大就会导致正则化项的值增大,而我们希望 J ( w , b ) J(w,b) Jw,b变小,那么就会鼓励模型学习更小的权重,这有助于降低模型的复杂程度,防止过拟合。
  • 进一步说,其实在损失函数中添加的正则化项会对权重进行惩罚,L1正则化项会惩罚权重矩阵的绝对值,导致部分权重减少到零,从而压缩模型。而L2又称为权重衰减,会导致权重趋向于零,因此增大正则化 λ \lambda λ会导致权重降低,使模型更加简单,减少过拟合风险。

四、归一化的优点

归一化是数据预处理的一种方法,主要将数据映射到一个特定的范围,以消除不同特征之间的量纲和尺度差异,是数据更加易于处理和比较。归一化的方法有很多中,包括线性归一化、零均值归一化、非线性归一化等。其中,线性归一化是对原始数据进行线性变换,将其映射到[0,1]或[-1,1]的范围内,这种方法适合用于数据分布比较集中的情况,公式为: x ′ = x − x m i n x m a x − x m i n x^{'}= \frac{x-x_{min}}{x_{max}-x_{min}} x=xmaxxminxxmin如果数据的分布范围差异很大或数据中存在一些异常值,此时可以考虑如对数变换、幂函数变换等非线性归一化方法。

  • 批归一化(Batch Normalization)
    主要用于加速神经网络的训练并提高其性能,主要思想是对每一批数据进行归一化处理,使得每一批数据的分布都具有相同的均值和方差,从而消除内部协变量偏差的问题。
    归一化步骤
  • 层归一化(Layer Normalization)
    与BN的主要区别在与归一化的对象不同。层归一化是对单个训练数据在某一层所有神经元上的输入进行归一化,而不像BN那样对一个小批次(mini-batch)的样本进行归一化,因此LN要求每个训练样本都要单独进行归一化处理。

1、防止梯度消失加快网络训练速度

在深度神经网络中,由于每层的参数更新,导致后续的输入分布发生变化,这种现象被称为内部协变量偏移,BN层通过对每批数据进行归一化,使每一层的输入分布相对稳定,有助于减少内部协变量偏移,而归一化后的数据具有相同的均值和方差,这有助于缓解梯度消失的问题,梯度消失通常发生在激活函数的输入值过大或过小的情况,而BN层可以将输入值限制在一个合理的范围内,使得梯度更加稳定。

2、控制模型复杂度防止模型过拟合

BN层引入两个可学习的参数:平移参数 β \beta β和缩放参数 γ \gamma γ,这个两个参数允许网络为每个特征通道自适应地学习一个合适的分布,从而保留每个通道的学习成果,因此BN层增加了模型的表达能力,也在一定程度上控制了模型的复杂度。此外,BN层还具有一定正则化效果,由于BN层在训练过程中对每个batch的数据进行归一化,这相当于对模型施加了某种形式的约束。

3、减少模型对初始化权重的敏感性

由于BN层对输入数据进行归一化处理,使得网络对输入数据的尺度变化具有一定的鲁棒性,这意味着模型对初始化权重的敏感性也降低了,这里可以简单的理解为,归一化后,值域被限定在了一个很小的范围内[0,1],即使权重变换再大也不会有很大的值波动,这便于理解但并不严谨。所以,即使使用不同的初始化方法或初始化权重范围,模型表现也相对稳定。减少模型对初始化权重的敏感性,BN使得网络更加容易训练,这允许我们使用更高的学习率进行训练,进一步提高训练速度和性能。

五、BN和LN的选择

1、模型架构与任务类型

  • 对于CNN模型,BN通常更常见,因为它是在小批量样本之间的归一化,能够利用小批量样本之间的统计信息,BN在图像分类,目标检测等任务中表现出色。
  • 对于RNN或LSTM等序列模型,LN可能更适合,这是因为这些模型通常要求在每个样本数据进行独立的归一化,而BN在小批量样本上进行的归一化可能会破坏序列的连续性。

2、训练样本数量

  • 训练样本较小时,BN可能会遇到统计不稳定的问题,因为小批量样本的均值和方差可能无法准确代表整个数据集的分布,这时,LN可能是一个更好的选择
  • 训练样本量够大时,BN的效果通常会更好,因为它能够利用更多的统计信息来进行归一化。

3、内存消耗和计算成本

  • BN需要存储每个小批量样本的均值和方差,这会增加一定的内存消耗,相比之下,LN只需要存每个样本的均值和方差,内存消耗更少。
  • BN需要对每个小批量样本进行归一化处理,而LN则对每个样本进行归一化,因此,对于具有较大批量大小的训练,BN可能会增加额外的计算成本。

4、任务特征

  • 对于NLP任务,LN可能更适合,这是因为NLP任务通常更关注于单个样本内的关系,而不是同样本之间的关系LN能够保持每个样本内部的语义关系不变,而BN会破坏掉。

六、加速优化的方法

  1. 调整学习率
  2. 尝试mini-batch梯度下降:mini-batch是GD(梯度下降)和SGD(随机梯度下降)之间的折中方案,它将训练数据分成多个小批次,并在每个批次上计算梯度更新,通常比批量梯度下降更快,因为减少了每次权重更新的计算量,同时仍然能够利用批量数据中的信息在估计梯度。
  3. 如果训练集较大,批量梯度下降(BGD)相比mini-batch可能会很慢。
  4. 如果训练集较小,批量梯度下降可能会更快。
  5. 尝试对权重进行更好地随机初始化:权重初始化对于模型训练至关重要,适当的权重初始化可以帮助模型更快地收敛到好的解。
  6. 使用Adam及更好的优化算法:这个方法是一种自适应学习率优化算法,通常比标准的SGD或批量梯度下降更有效地找到使成本函数值较小的参数值。

七、防止梯度消失&梯度爆炸

  1. 修改激活函数,使用ReLu或者更合适的激活函数。
  2. 使用归一化方法。
  3. 使用残差结构。
  4. 梯度剪裁: 在每次更新参数之前,我们可以将梯度裁剪到一个预定义的范围内,从而避免梯度过大或过小,可以防止梯度爆炸/消失。
  5. 使用不同的优化器,自适应调整学习率。
  6. 退化问题: 由于梯度在传播过程中逐渐消失,导致无法对前面网络层的权重进行有效调整,网络层越深,误差越大,训练和测试效果变差,称为退化。为了保证模型性能,应该避免出现退化问题。

小结

以上是对深度学习中一些常见问题的简单总结,并不完全,相关问题仍然还有其他的解决方法,如果有错误之处,欢迎在评论区指正,谢谢!!

  • 20
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值