模型训练中的过拟合\欠拟合

过拟合

过拟合是指模型在训练过程中学习了所有样本的特征,复杂度高于实际问题。其泛化性能很差,在训练集中表现非常好,但是在测试集上的表现很差。
在这里插入图片描述

过拟合的原因
  • 样本的原因,样本太少;样本太过单一不足以代表实际问题;样本噪声很多,训练时学习了很多噪声的特征。
  • 模型选取的问题,模型并不适合该样本的训练。
  • 模型的参数太多,复杂度很高。
  • 决策树模型的话,没有优化树的生成策略,使其完美的匹配训练集数据,而不适应其他数据集的预测。
  • 对于神经网络模型:a)对样本数据可能存在分类决策面不唯一,随着学习的进行,BP算法使权值可能收敛过于复杂的决策面;b)权值学习迭代次数足够多(Overtraining),拟合了训练数据中的噪声和训练样例中没有代表性的特征。
过拟合的解决办法

解决办法还从过拟合的原因出发:

  • 优化样本问题:扩充样本,使用更多、更能代表实际问题的训练数据;使用特征工程预处理数据,比如去除噪声数据、通过算法扩充训练样本、去除冗余特征。
  • 选择合适的、符合实际问题的模型来训练数据集。
  • 正则化:在损失函数中加入一定的正则约束。常见的正则化主要有L1正则化和L2正则化,1、带L1正则化的目标函数为: C = C 0 + λ n ∑ i ∣ w i ∣ C = C_0+\frac{\lambda}{n}\sum_i|w_i| C=C0+nλiwi为什么L1正则化能防止过拟合呢?
    带L1正则化的目标函数的梯度(导数)为 ∂ C ∂ w = ∂ C 0 ∂ w + λ n s g n ( w ) \frac{\partial C}{\partial w}=\frac{\partial C_0}{\partial w}+\frac{\lambda}{n}sgn(w) wC=wC0+nλsgn(w)其中sgn(w)表示取 w w w各个元素的正负号,即:当 w > 0 ⇒ s g n ( w ) = 1 ; w = 0 ⇒ s g n ( w ) = 0 ; w < 0 ⇒ s g n ( w ) = − 1 w>0\Rightarrow sgn(w)=1;w=0\Rightarrow sgn(w)=0;w<0\Rightarrow sgn(w)=-1 w>0sgn(w)=1;w=0sgn(w)=0;w<0sgn(w)=1
    梯度下降时权重 w w w更新: w → w ′ = w − η λ n s g n ( w ) − η ∂ C 0 ∂ w w \to w'=w-\frac{\eta\lambda}{n}sgn(w)-\eta\frac{\partial C_0}{\partial w} ww=wnηλsgn(w)ηwC0所以:当 w = 0 w=0 w=0时,就是不带正则化的权重更新;当 w > 0 w>0 w>0时, s g n ( w ) = 1 sgn(w)=1 sgn(w)=1梯度下降时更新后的 w w w变小;当 w < 0 w<0 w<0时, s g n ( w ) = − 1 sgn(w)=-1 sgn(w)=1梯度下降时更新后的 w w w变大。因此,L1正则化使得权重 w w w训练趋于零,使网络中的权重尽可能为0,就相当于减小了模型的复杂度,从而防止过拟合。
    这也就是L1正则化会产生更稀疏(sparse)的解的原因。此处稀疏性指的是最优值中的一些参数为0。L1正则化的稀疏性质已经被广泛地应用于特征选择机制,从可用的特征子集中选择出有意义的特征。
    2、带L2正则化的目标函数: C = C 0 + λ 2 n ∑ i w i 2 C=C_0+\frac{\lambda}{2n}\sum_iw_i^2 C=C0+2nλiwi2其梯度(导数)为: ∂ C ∂ w = ∂ C 0 ∂ w + λ n w \frac{\partial C}{\partial w}=\frac{\partial C_0}{\partial w}+\frac{\lambda}{n}w wC=wC0+nλw梯度下降时权重w更新: w → w − η ∂ C 0 ∂ w − η λ n w w \to w-\eta\frac{\partial C_0}{\partial w}-\frac{\eta\lambda}{n}w wwηwC0nηλw在权重更新时,权重 w w w 将逐渐减小,趋向于0但不等于0。这也就是权重衰减(weight decay)的由来。
    为什么L2正则化能防止过拟合呢?
    因为L2正则使得权重变小,这样模型相对稳定,不会因为数据的变化使结果发生大的变化。不会过分拟合训练集,从而提高模型的泛化性能。
  • Dropout:Dropout是深度网络模型训练的一种策略,本质就是在训练的过程中将部分神经元的激活函数设为0,使得这些神经元不参与计算更新权重。
    Dropout为什么能防止过拟合呢?
    1、在训练过程中会产生不同的训练模型,不同的训练模型也会产生不同的的计算结果。随着训练的不断进行,计算结果会在一个范围内波动,但是均值却不会有很大变化,因此可以把最终的训练结果看作是不同模型的平均输出。
    2、它消除或者减弱了神经元节点间的联合,降低了网络对单个神经元的依赖,从而增强了泛化能力。
  • Early stopping(提前终止):提前终止就是在模型训练的差不多时结束训练。
    Early stopping为什么能防止过拟合呢?
    因为随机初始化w值的时候,它的值是较小的随机值。当你开始迭代过程,w的值会变得越来越大。到后面时,w的值已经变得十分大了。所以early stopping要做的就是在中间点停止迭代过程。我们将会得到一个中等大小的w参数,会得到与L2正则化相似的结果,选择了w参数较小的神经网络。
    Early stopping的缺点:容易产生欠拟合。
  • 集成学习方法:集成学习是把多个模型集成在一起,来降低单一模型的过拟合风险,如Bagging 方法 。
欠拟合

模型训练不够,没有学习到数据集的特征规律,在训练集上就表现不好。
在这里插入图片描述

欠拟合的原因
  • 模型复杂度过低
  • 数据集的特征太少
欠拟合的解决办法
  • 增加新的特征,完善数据集,可以考虑特征工程进行特征组合等数据预处理
  • 增加模型的复杂度,如使用核函数,增加网络层数或神经元的个数
  • 减少正则化参数,正则化是用来防止过拟台的,但当模型出 现欠拟合现象时,则需要高针对性地减小正则化系数。
  • 容量低的模型(模型的容量是指其拟合各种函数的能力)可能很难拟合训练集;使用集成学习方法,如Bagging ,将多个弱学习器Bagging

参考资料:
1、欠拟合、过拟合及如何防止过拟合
2、欠拟合和过拟合出现原因及解决方案
3、百面机器学习P45

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
在Matlab判断LSTM模型过拟合欠拟合,可以通过观察模型训练误差与验证误差之间的差异来进行评估。以下是具体步骤: 1. 训练模型:使用训练数据训练LSTM模型,并记录每次迭代的训练误差。 2. 验证模型:使用验证数据评估已训练模型的性能,并记录每次迭代的验证误差。 3. 绘制误差曲线:在Matlab绘制训练误差和验证误差的变化曲线。可以使用plot函数将训练误差和验证误差的变化曲线绘制在同一张图上,便于比较两者之间的差异。 4. 观察曲线趋势:观察训练误差和验证误差的变化曲线。如果训练误差迅速下降,但验证误差开始上升,则可能存在过拟合的情况。如果训练误差和验证误差都很高,模型无法适应训练数据和验证数据的特点,则可能存在欠拟合的情况。 5. 调整模型超参数:根据观察到的过拟合欠拟合情况,可以尝试调整LSTM模型的超参数,如调整网络的复杂度或选择更合适的正则化方法,以减少过拟合或提高欠拟合的性能。 6. 重复步骤1至5:根据调整后的模型超参数,重新训练模型,计算训练误差和验证误差的变化曲线,再次观察是否存在过拟合欠拟合的情况。需要进行多次迭代,直到满足预期的模型效果。 通过以上步骤,我们可以在Matlab判断LSTM模型过拟合欠拟合,以便在训练过程及时调整模型,提高模型的泛化能力。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值