欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

深度学习:过拟合问题

程序员文章站 2022-07-13 10:03:09
...

一 过拟合和欠拟合

当模型的容量过大时,网络模型除了学习到训练集数据的模态之外,还把额外的观测误差也学习进来,导致学习的模型在训练集上面表现较好,但是在未见的样本上表现不佳,也就是模型泛化能力偏弱,我们把这种现象叫作过拟合(Overfitting)。 当模型的容量过小时,模型不能够很好地学习到训练集数据的模态,导致训练集上表现不佳,同时在未见的样本上表现也不佳,我们把这种现象叫作欠拟合(Underfitting)

当观测到过拟合现象时,可以从新设计网络模型的容量,如降低网络的层数、降低网络的参数量、 添加正则化手段、 添加假设空间的约束等,使得模型的实际容量降低,从而减轻或解决过拟合现象;当观测到欠拟合现象时,可以尝试增大网络的容量,如加深网络的层数、 增加网络的参数量,尝试更复杂的网络结构。

二 数据集的划分

数据集需要划分为训练集(Train set)和测试集(Test set),但是为了挑选模型超参数和检测过拟合现象,一般需要将原来的训练集再次切分为新的训练集和验证集。训练集、验证集和测试集可以按着自定义的比例来分,比如常见的 60%-20%-20% 的划分。
验证集的作用:

1.根据据验证集的性能表现来调整学习率、 权值衰减系数、 训练次数等。
2.根据验证集的性能表现来重新调整网络拓扑结构。
3.根据验证集的性能表现判断是否过拟合和欠拟合。

三 训练该何时停止

一般把对训练集中的一个 Batch 运算更新一次叫做一个 Step, 对训练集的所有样本循环迭代一次叫做一个 Epoch。验证集可以在数次 Step 或数次 Epoch 后使用,计算模型的验证性能。验证的步骤过于频繁,能够精准地观测模型的训练状况,但是也会引入额外的计算代价,一般建议几个 Epoch 后进行一次验证运算。

一般来说,在训练的前中期,神经网络的过拟合现象没有出现, 当随着训练 Epoch 数的增加,过拟合程度越来越严重。
那么如何选择合适的 Epoch 就提前停止训练(Early Stopping),避免出现过拟合现象呢?
我们可以通过观察验证指标的变化,来预测最适合的 Epoch 可能的位置。

当发现验证准确率连续n个Epoch没有下降,说明可能已经到达了最合适的Epoch次数附近,即模型达到了最佳状态,应停止训练。

四 正则化

为了防止过拟合出现,一般通过在损失函数上添加额外的参数稀疏性惩罚项实现, 即优化目标变为了:
深度学习:过拟合问题
其中,参数λ表示关于网络稀疏性惩罚项的权重,Ω(θ)表示关于网络参数的约束函数,Ω(θ)一般有L0,L1,L2范数计算而来。

实际训练时,一般优先尝试较小的参数λ,观测网络结构是否会出现过拟合的现象,人后增加参数λ来增加网络的稀疏性,提高网络的泛化能力,但若参数λ系数过大,则会使得网络不收敛。当参数λ小的时候,网络中权值数值和范围都相对较大, 当参数λ变大的时候,网络中权值数值和范围都开始减小。

五 Dropout层

在全连接层中,每条连接是否断开符合某种预设的概率分布,如断开概率为p的伯努利分布,具体如下图所示。随着Dropout层的加入,会增加模型的泛化能力,降低发生过拟合现象的可能性。

深度学习:过拟合问题

相关标签: 深度学习