DNN 特性与抗过拟合思路

Link:

补年底KPI。

A. DNN 的一些特点

1. Overparameterization 与 W 曲线

这是 NN 与一般 ML 方法不同的地方,增加模型的 capacity 甚至有可能增加泛化能力。

传统模型会随着模型的复杂度表现出 U 形曲线,随着模型复杂度的增加,模型的 test error 会先降低后增加。

NN 模型在初期同样有这个现象,但是随着模型复杂度的进一步增加, test error 会重新开始下降。这篇文章有很好的讨论:

Are Deep Neural Networks Dramatically Overfitted?可能原因:更多参数,会让模型更加平滑。而对 增加泛化性来说,平滑是一个是否重要的特性。

为什么传统方法没有这个特点,我猜想是深度的增加带来的下面这个特性。同时现在的模型训练的 epoch 也变得越来越大了,因为大家发现多训练点时间也没什么过拟合。

2. 低->高频率的学习过程

由于深度的的增加, NN 的学习是从印象到细节的过程。很类似人类的思维过程,回想桌子的第一反应是大概的样子,需要进一步细节来区分不同桌子的时候才会开始关注细节。

比如,知乎上有相关的讨论:

如何从频域的角度解释CNN(卷积神经网络)?同时,这也引出了下面的一个能力对泛化的影响。

3. 强制记忆能力

Understanding deep learning requires rethinking generalization 这篇经典文章说明了这个现象。

NN 巨大的模型容量,可以直接强制记忆整个数据集。如果使用一个完全没有逻辑的数据集进行训练,NN 会最终依靠来自细节的学习(因为抽象的概念表达不了已经乱序的label),最终网络的学习结果会是这样:“一个具备 xxx 细节的图像(实际可能是6),预测结果为 1。”

所以,在训练的过程中,必须避免 NN 进入这种强制记忆的学习过程中,此时NN 已经依靠自己容量,暴力拟合训练数据了。


B.抗过拟合的思路与方法

1. 避免强制记忆

避免强制记忆方法主要靠训练前的数据分析+训练后的错误分析(这个准备再开新坑)

2. 关注数据分布以及变化

在训练前的数据分析中要关注数据分布和变化情况,比如:

3. 更多的数据

数据积累带来的新的训练模式:随着采集数据量增加vs标注产量的限制矛盾,加上最近学界新的成果,未来的训练模式肯定会有更多的变化。(这个准备再开新坑)

4.特征工程

这个范围很大,基本都是任务强相关,比如:

5. 增加平滑性

几乎任何可以增加平滑性的方法都能够让 NN 更好的学习。比如:

关于 featmap 和数据的关系,比如:输入的 RGB 数据,实际上不过是 CMOS 硬件转换出来后的 3 channel 的 featmap。所以,所有对 featmap 的操作都可以用在输入数据上,反之亦然。

额外的,如果对 featmap 的操作会产生针对 weight 的梯度,那么这些操作还会产生对 weight 的影响。

6. 随机性

基本操作就是两项: drop(+ replace) or noise

对于 drop 后的值,也可以用各种方法再填充,比如 dropout 可以认为是用 0填充,但是也没规定不能用白噪音等等脑洞方式来填充,切一片其他图片贴进去也可以。

针对 featmap 的操作思路,这些都可以用在 随机性平滑性 上:

7. 传统手段