CNN入门-dropout正则化

CNN入门–dropout正则化

背景:机器学习模型中,存在过拟合的问题。如果模型参数太多,训练样本太少,训练出来的模型很容易产生过拟合,几乎不能用。为了解决过拟合,一般会用多个模型集成的方式,即训练多个模型进行组合再训练,这种方式虽然能解决过拟合问题,但是会带来计算费时的新问题。

2012年,Hinton在《Improving neural networks by preventing co-adaptation of feature detectors》中提出Dropout。随后Hinton,Alex等人在《ImageNet Classification with Deep Convolutional Neural Networks》中使用Dropout算法,用于防止过拟合问题,论文中提到的AlexNet网络模型引发了CNN应用的热潮,使得CNN成为图像分类应用领域中的核心模型。

Hinton G E, Srivastava N, Krizhevsky A, et al. Improving neural networks by preventing co-adaptation of feature detectors[J]. arXiv preprint arXiv:1207.0580, 2012.

Krizhevsky A, Sutskever I, Hinton G E. Imagenet classification with deep convolutional neural networks[C]//Advances in neural information processing systems. 2012: 1097-1105.

主要思想:是一种“玄学”的正则化,在训练模型的过程中,随机丢弃一些特征(dropout rate控制比例,一般设置在0.3-0.5之间),降低神经网络的复杂程度,同时提高模型的鲁棒性。

为什么在降低复杂度的同时还能提高鲁棒性呢?

因为在一些应用场景中,我们不需要进行一些额外的特征提取的计算,将这部分特征舍弃掉,只进行必要特征的提取和计算。比如:人脸识别中,我们不需要对衣服、胳膊进行特征提取,模型要正确的识别出结果,只用关注脸部的特征。因此,我们可以通过dropout算法在隐藏层舍弃掉一些特征,降低隐藏层处理的复杂度,使得模型计算集中在留下的特征中,从而在输出层给出正确的识别结果,提高模型的鲁棒性。

但是,需要注意的是,具体需要丢弃掉哪些特征,这是机器无从得知的。所以dropout也被称为玄学正则化,控制好dropout rate是调参的关键,调得合适就是增强了模型魔棒性,反之,就是模型过拟合了。

算法流程:

  1. 确定每一层的keep_prob(表示每一个结点留下来的概率,范围为[0,1))
  2. 在每一次迭代中,其中小于等于keep_prob的结点被留下,反之,结点在本次迭代中不被计算,暂时删除(删除并不是真正的删掉了,而是将该结点在本次迭代中前向传播的输出值为0)
  3. 将输入层的数据通过修改后的隐藏层前向传播,将得到的损失结果通过修改后的隐藏层反向传播。不断重复。

优缺点:

优点:使用dropout正则化的神经网络,使得模型的泛化能力更强,不会过分依赖某个或某些特征,根据随机概率进行特征丢弃,使得权值分散,减少结点之间的耦合。