过拟合是机器学习中永恒的问题

请相信我这句话的正确性,没有过拟合不发生的情况,只有发生的程度强弱的情况。

好了我们首先看一下机器学习中的过拟合是什么意思。

Overfitting,很直观的单词,‘’过度适配‘’了。那么机器学习中往往是训练样本无法带有所有真实样本的所有特性,尽管我们是如此假设的。所以我们的模型把训练数据集的特性学习得过分了,把这些训练集上'独特'的特性当成了这个问题的普遍特性,然而其实并不是,所以在泛化能力上出现了问题。

然而过拟合的发生比这个描述实际上更加复杂,我们姑且把在训练集上表现很好,但测试集上表现不佳的现象都称之为过拟合。那么

从根本上思考,这其实是对训练集与配套的建模的一个整体评价。

1.首先考虑训练集的原因,如果过于'独特',那么无论如何都更加容易出现过拟合现象。比如小数据集往往没有代表性,所以没有听说过只用几个数据就可以得到很好泛化能力的工作。此时我们需要考虑增加数据集在真实样本中的代表性。

这类问题的解决方案有,数据集扩增。重采样等等。

2.训练集如果没那么独特,那么如果模型学习‘’过分‘’,过拟合会发生。

这类问题往往由于学习epoch过多,梯度下降过猛导致,解决方案是early stop,learning rate控制等等。

3.数据集与模型容量不匹配。通常情况下过拟合是由于数据集太小,模型太复杂。与之相对的是数据集太大,模型太简单,导致训练都不收敛的欠拟合。

这个结论的前提是认为,如果数据集适配模型,那么训练一定能够收敛。(也就是默认训练集并不独特)

注意,深度学习中往往增加模型复杂度导致训练集无法收敛并不是因为发生了欠拟合而是梯度消失等优化上的问题导致的。欠拟合只在模型简单时发生,其(上限)能力不足以解决该问题。

所以对于这类型的过拟合发生,我们考虑降低模型的复杂度。一个是直接降低模型的规模,另一个做法是加入regulizer以增加模型的结构风险评价。regulizer意在通过特定手段,降低模型复杂程度而不是直接降低模型的规模。比如drop out,L1,L2正则(稀疏性).

当然所谓独特与否也是相对的,对于离散世界,确实如果庞大的模型可以memory下训练样本的每个值,这种程度的学习,也会‘’造就‘’训练集的独特,训练集相对于测试集是否‘’独特”不仅仅和训练集准备,也和训练模型与训练方式都密切相关。而防止过拟合就是从各个角度去削弱这种特异性来进行的。

results matching ""

    No results matching ""