全文共1878字,预计学习时长4分钟
图片来源:unsplash/@mlightbody
Dropout是一种用于解决训练模型时过度拟合问题的有趣方法。即便Dropout背后的概念非常简单,在培训模型时带来的改进也不可小觑。本文尽量以最简洁精炼的语言为你解释Dropout。
除了叙述Dropout背后的客观现实之外,还包括如何应用于神经网络,以及在Keras上的应用。
什么是过度拟合?
训练神经网络是一大棘手难题。应该注意,其模型已足够完备,可以从现有数据中学习,并推广到未知数据。缺乏概括模型主要是由名为过度拟合的问题所引起。
简言之,过度拟合指模型在初始训练数据上达到极高准确度,但在新的未知数据上准确度却极低。这就如同当老师总出同样的考题时,学生更容易获得高分,因为对学生而言,他们只需简单地记住答案。因此,高分在这里并不能作为很好的指标。所导致的危险后果是学生们将不会费心学习该门课程。
针对过度拟合这一问题衍生了许多技术,Dropout就是其中之一。
Dropout背后的客观事实
图片来源:unsplash/@sammcghee
假设一台电视节目需要有一位参赛者,一位主持人,及一组观众。该节目流程如下:
1. 在游戏开始时,主持人随机选择未知电影作为游戏主题。
2. 主持人在每一阶段,只播放所选电影的一个片段。
3. 接着针对目前已播片段,提出与电影中事件相关的一个问题。
4.由每位观众作答。
5.再由参赛者从观众中选择一个作为最终答案。
6.如果回答正确,参赛者和该观众各将获得50美元。
7.如果回答错误,两人各需付100美元。
假设参与者注意到其中一个观众总是回答正确。随着游戏深入,参赛者将会对该名观众建立信任,并忽略其他观众给出的答案。
这一策略也存在一些问题。备受参赛者信赖的观众可能在游戏的初级阶段答题表现较好,而在游戏后期正确率下降。如果总是只选择一个人(或一小组),那么其它观众会觉得不受重视,且不再关注所播放的电影片段。
在游戏后期,受信任的人也不会发挥作用,并且由于其它观众也因为不再投入所播片段,而混淆事件顺序导致作答失败。因此,依赖一个人是不可行的,必然会一败涂地。
怎样才能解决这一问题呢?明智的策略是始终让他人保有发言权。通过这种方式,参赛者会了解每个人的长处,并根据问题类别知道该询问谁。此外,这一方式也会让每位观众意识到自己的责任,觉得有义务投入到游戏中。
神经网络中的Dropout
你可能会问Dropout与神经网络之间有何关系?那么,请看以下网络:
神经网络简易示例
将输入层(绿色)视为支持人所提的问题,隐藏层中的每个神经元(蓝色)视为观众中的某个人,输出层(红色)视为被选观众所给出的答案。如果输出层发现特定神经元总是给出最佳答案,则可能忽略其他神经元并只注意该神经元。
根据之前的分析,选择禁止一些神经元回答并将机会给予其他神经元,这一方式将实现平衡并迫使所有神经元学习。这就是Dropout的概念。从技术层面,它的工作原理如下:
1. 指定一个Dropout率,它表示不参与神经元的百分比(例如20%的神经元)。
2. 每个阶段,根据预设百分比移除随机神经元。
3. 根据剩余神经元的结果组合计算最终输出。
使用这种技术,所有神经元都有机会投票,并需要正确作答以减少模型损失。
以下是使用Dropout前后神经网络的变化示例:
图片来源:Deep Learning for Computer Vision
Dropout在Keras中的应用
在Keras应用Dropout比想象的更为简单。只需导入并创建一个新的Dropout图层对象,然后将其添加到网络结构的相关位置。
from keras import models, layers model = models.Sequential() model.add(layers.Dense(32)) model.add(layers.Dropout(0.5)) model.add(layers.Dense(1))
通常,在输出dropout率=0.5(50%)之前,完全连接的Dense层之后添加Dropout layer。最近也采用其他的方法,如应用于卷积层激活功能或循环Dropout率= 0.2(20%)之后。
留言 点赞 关注
我们一起分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”
(加入圈子,一起讨论新鲜的人工智能干货)
,