详解Dropout:一种防止过拟合的有效方法

选择“星标”公众号

重磅干货,第一时间送达!

在实际训练神经网路中经常会遇到过拟合,欠拟合等问题,这常常使得初学者头疼不已,用简单的例子来说,欠拟合: 光看书不做题觉得自己会了,上了考场啥都不会。过拟合: 做课后题全都能做对,上了考场还是啥都不会。差不多的拟合: 做了题,背了老师给画了重点,考试60分过了。优秀的拟合: 课后题全能作对,考试100分。再加上这张经典的图:

f.nn.dropout是TensorFlow里面为了防止或减轻过拟合而使用的函数,它一般用在全连接层。tf.nn.dropout函数说明:tf.nn.dropout(x, keepprob, noiseshape=None, seed=None,name=None) 上面方法中常用的是前两个参数:第一个参数x:指输入第二个参数keepprob: 设置神经元被选中的概率,在初始化时keepprob是一个占位符, keepprob = tf.placeholder(tf.float32) 。tensorflow在run时设置keepprob具体的值,例如keep_prob: 0.5第五个参数name:指定该操作的名字。

Hinton大神的论文《Dropout: A Simple Way to Prevent Neural Networks from Overfitting》应该是作为深度学习入门的必读经典论文,在具有大量参数的深层神经网络是非常强大的机器学习系统。然而,过度拟合是此类网络中的一个严重问题。大型网络的使用也很缓慢,这使得在测试时将许多不同的大型神经网络的预测结合起来,使之难以处理。Dropout是解决这个问题的一种技术。关键的想法是在训练过程中,从神经网络中随机丢掉一些单元(以及它们的连接),这可以防止单元过度适应。在训练过程中,从不同的“变瘦”网络的指数数中抽取样本。在测试时,简单地使用一个有更小的权重的单一的未稀释的网络,就可以很容易地估计出所有这些变薄的网络的预测平均值的效果。这大大减少了过度拟合,并大大改善了其他正则化方法。我们发现,在视觉、语音识别、文档分类和计算生物学等监督学习任务中,退出提高了神经网络的性能,获得了许多基准数据集的最先进的结果。


(0)

相关推荐