过拟合
当模型在训练数据上表现得很好,但是在测试数据上表现不佳的时候,说明发生了过拟合,欠拟合则是模型在任一数据集上的表现都不佳。
一般通过在模型中添加Dropout层来防止过拟合的出现
Dropout层表示在上一层的输出中丢弃一部分节点,然后在输入到下一层。
在没有Dropout层时,相同的数据集来进行训练五个不同的神经网络,一般会得到五个不同的结果,但是经过随机丢弃之后,结果会变的泛化。
同时Dropout层减少了神经元之间复杂的共适应关系,时两个神经元不一定每一次都在一个网络中出现,这样权值的更新不再依赖于固定关系的隐含节点的共同作用,组织了某些特性紧紧在其他特性下才有效的情况。
黄线表示测试数据,蓝线代表训练数据
模型的参数调整
而在模型参数的选择中我们的宗旨是让模型处于过拟合与欠拟合的界限之间。
在模型的建立过程中,我们首先要建立一个过拟合模型,在第一步中让模型具有足够的拟合能力。即,添加更多的层、让每一层变得更大、训练更多的轮次。
然后开始抑制过拟合,添加Dropout层,正则化,图像增强,调节超参数。
最简单的抑制过拟合方法,增加训练数据,减小模型的复杂度
以下是添加了两个Dropout层的实验数据图像
黄线表示测试数据,蓝线代表训练数据,效果明显要好
构建网络的总原则
- 增大网络容量,直到过拟合
- 采取措施抑制过拟合
- 继续增大网络容量,直到过拟合