深度学习中欠拟合和过拟合的解决方法

1、欠拟合

欠拟合的解释:

顾名思义,就是设置的学习器学的不好,不能把数据的特征学到。通俗讲就是老师教的东西都没有掌握住,还得继续学,我们将这种情况称之为欠拟合。

解决欠拟合的方法:

(1)添加其他特征项。组合、泛化、相关性、上下文特征、平台特征等特征是特征添加的重要手段,有时候特征项不够会导致模型欠拟合。

(2)添加多项式特征。例如将线性模型添加二次项或三次项使模型泛化能力更强。例如,FM(Factorization Machine)模型、FFM(Field-aware Factorization Machine)模型,其实就是线性模型,增加了二阶多项式,保证了模型一定的拟合程度。

(3)可以增加模型的复杂程度,比如加深模型的层次。

(4)减小正则化系数。正则化的目的是用来防止过拟合的,但是现在模型出现了欠拟合,则需要减少正则化参数。

2、过拟合

过拟合的解释:

通俗点说,就是学习器在训练集上学的太好了,以至于老师没交给他的知识都学会,把自身内涵的知识都学会了,把这部分学到的知识用到测试集上,显然这部分知识是强加给测试集的,我们称之为过拟合。

解决过拟合的方法:

(1)增加训练集。之所以过拟合,其实就是因为模型本身见到的数据太少了,模型把数据的所有特征都学习到了。比如对于树叶,如果训练数据集中只有一种边缘光滑的树叶,那么当过拟合时,模型往往有可能只能识别出这种类型的树叶,像边缘有齿的枫叶等可能都识别不出来了,因为让模型见更多的数据是有好处的,而且真的可以防止过拟合。

(2)Dropout。主要思想是分布式特征表达,在训练的时候,随机丢弃一些节点,使这些节点不参与到参数的更新训练中(一般设置为0.5),然后进行放回,当有数据再次进行更新时,再随机进行选举。

(3)Batch Normalization(BN)。在训练中,BN的使用使得一个mini-batch中的所有样本都被关联在了一起,因此网络不会从某一个训练样本中生成确定的结果。其实这句话的意思是,BN的使用,使得网络在训练时不依靠于某一个样本进行更新或者输出,而是依赖于整个batch size的数据,这样参数不会太依赖于某一个数据,而是一个batch size内的数据,一定程度上防止了过拟合。

(4)Group Normalization(GN)。GN相对于BN算法的优点是不需要依靠很大batch size就可以取得很好的结果,而且因为在实际训练中,在显存比较下的情况下,batch size可能只有1~2,BN算法在batch数据比较小的情况下,均值和方差的代表性比较差,所以此时BN算法已经发挥不了很大的优势了。

(5)L1和L2正则化。L1正则化的思想是特征选择,L1允许参数为0,这代表在某些地方丢弃掉一些特征,最终选择最明显的特征,从数学上来说,L1正则化是所有参数的绝对值之和,这就要求所有参数的绝对值之和最小,对其进行求导,导数可能为1或-1,而绝对值的取值是大于等于0的,那么就有可能导致某些参数在更新的时候,值趋近于0。而L2正则化,数学公式上是所有参数平方和,对其求导是2w,从这个可以看出,每个参数更新的量其实是和参数w本身相关的,w在更新时,会逐渐变慢,所以对w本身来说,都会逐渐变小,而不会变为0。

L1与L2区别:使用L1可以得到稀疏的权值;用L2可以得到平滑的权值。

你可能感兴趣的:(深度学习,机器学习,人工智能)