如果你有半页来解释dropout,你会怎么做?这种技术背后的基本原理是什么?
如何简单地解释 dropout 正则化?
辍学文章的摘要似乎非常有用。
Nitish Srivastava、Geoffrey Hinton、Alex Krizhevsky、Ilya Sutskever、Ruslan Salakhutdinov,“辍学:防止神经网络过度拟合的简单方法”,机器学习研究杂志,2014 年。
具有大量参数的深度神经网络是非常强大的机器学习系统。然而,过度拟合在此类网络中是一个严重的问题。大型网络使用起来也很慢,因此很难通过在测试时结合许多不同大型神经网络的预测来处理过度拟合。Dropout是解决这个问题的一种技术。关键思想是在训练期间从神经网络中随机删除单元(连同它们的连接)。这可以防止单位过度共同适应。在训练期间,从指数级数量的不同“细化”网络中丢失样本。在测试时,很容易通过简单地使用具有较小权重的单个非细化网络来近似对所有这些细化网络的预测进行平均的效果。这显着减少了过度拟合,并比其他正则化方法有了重大改进。我们表明,dropout 提高了神经网络在视觉、语音识别、文档分类和计算生物学等监督学习任务上的性能,在许多基准数据集上获得了最先进的结果。
如果你阅读这篇论文,你会发现在辍学背景下共同适应行为意味着什么的描述。
在标准的神经网络中,每个参数接收到的导数告诉它应该如何改变,从而减少最终的损失函数,给定所有其他单元正在做的事情。因此,单位可能会改变,以弥补其他单位的错误。这可能导致复杂的协同适应。这反过来又会导致过度拟合,因为这些协同适应不会泛化到看不见的数据。我们假设对于每个隐藏单元,dropout 通过使其他隐藏单元的存在不可靠来防止共同适应。因此,一个隐藏单元不能依赖其他特定单元来纠正它的错误。它必须在其他隐藏单元提供的各种不同上下文中表现良好。要直接观察这种效果,
这个答案是 Sycorax 的好答案的后续,适合想了解 dropout 是如何实现的读者。
在人工神经网络中应用 dropout 时,需要补偿在训练时一部分神经元被停用这一事实。为此,有两种常见的策略:
- 在训练阶段反转 dropout:
- 在测试时缩放激活:
从/p
训练转移到预测代码,它变成*p
:
这三张幻灯片来自Standford CS231n:Convolutional Neural Networks for Visual Recognition 的第 6 课。
Dropout 会暂时(在一批输入数据中)关闭一层中的一些神经元,这样它们就不会在这些更新期间贡献任何信息或学习任何信息,而责任落在其他活跃的神经元身上,以更加努力地学习并减少错误。
如果我必须向一个 6 岁的孩子解释辍学,这就是:想象一个场景,在教室里,一位老师问了一些问题,但总是有两个孩子立即回答。现在,老师要求他们保持安静一段时间,让其他学生参与。这样其他学生才能学得更好。也许他们回答错了,但老师可以纠正他们(体重更新)。这样整个班级(层)可以更好地了解一个主题。
您可以将辍学视为特征(或某些中间层中的潜在特征)是否无关紧要的先验概率 - 即尖峰(点质量为零 = 特征无关紧要)和平板(平坦 = 非正则化整个参数空间的先验)先验。
重要的是,这不仅使您可以规范模型拟合,还可以获取推理的不确定性。这在Yarin Gal的论文和论文(也是这个)中进行了讨论。