网站首页 > 技术文章 正文
全文共1878字,预计学习时长4分钟
Dropout是一种用于解决训练模型时过度拟合问题的有趣方法。即便Dropout背后的概念非常简单,在培训模型时带来的改进也不可小觑。本文尽量以最简洁精炼的语言为你解释Dropout。
除了叙述Dropout背后的客观现实之外,还包括如何应用于神经网络,以及在Keras上的应用。
什么是过度拟合?
训练神经网络是一大棘手难题。应该注意,其模型已足够完备,可以从现有数据中学习,并推广到未知数据。缺乏概括模型主要是由名为过度拟合的问题所引起。
简言之,过度拟合指模型在初始训练数据上达到极高准确度,但在新的未知数据上准确度却极低。这就如同当老师总出同样的考题时,学生更容易获得高分,因为对学生而言,他们只需简单地记住答案。因此,高分在这里并不能作为很好的指标。所导致的危险后果是学生们将不会费心学习该门课程。
针对过度拟合这一问题衍生了许多技术,Dropout就是其中之一。
Dropout背后的客观事实
假设一台电视节目需要有一位参赛者,一位主持人,及一组观众。该节目流程如下:
1. 在游戏开始时,主持人随机选择未知电影作为游戏主题。
2. 主持人在每一阶段,只播放所选电影的一个片段。
3. 接着针对目前已播片段,提出与电影中事件相关的一个问题。
4.由每位观众作答。
5.再由参赛者从观众中选择一个作为最终答案。
6.如果回答正确,参赛者和该观众各将获得50美元。
7.如果回答错误,两人各需付100美元。
假设参与者注意到其中一个观众总是回答正确。随着游戏深入,参赛者将会对该名观众建立信任,并忽略其他观众给出的答案。
这一策略也存在一些问题。备受参赛者信赖的观众可能在游戏的初级阶段答题表现较好,而在游戏后期正确率下降。如果总是只选择一个人(或一小组),那么其它观众会觉得不受重视,且不再关注所播放的电影片段。
在游戏后期,受信任的人也不会发挥作用,并且由于其它观众也因为不再投入所播片段,而混淆事件顺序导致作答失败。因此,依赖一个人是不可行的,必然会一败涂地。
怎样才能解决这一问题呢?明智的策略是始终让他人保有发言权。通过这种方式,参赛者会了解每个人的长处,并根据问题类别知道该询问谁。此外,这一方式也会让每位观众意识到自己的责任,觉得有义务投入到游戏中。
神经网络中的Dropout
你可能会问Dropout与神经网络之间有何关系?那么,请看以下网络:
将输入层(绿色)视为支持人所提的问题,隐藏层中的每个神经元(蓝色)视为观众中的某个人,输出层(红色)视为被选观众所给出的答案。如果输出层发现特定神经元总是给出最佳答案,则可能忽略其他神经元并只注意该神经元。
根据之前的分析,选择禁止一些神经元回答并将机会给予其他神经元,这一方式将实现平衡并迫使所有神经元学习。这就是Dropout的概念。从技术层面,它的工作原理如下:
1. 指定一个Dropout率,它表示不参与神经元的百分比(例如20%的神经元)。
2. 每个阶段,根据预设百分比移除随机神经元。
3. 根据剩余神经元的结果组合计算最终输出。
使用这种技术,所有神经元都有机会投票,并需要正确作答以减少模型损失。
以下是使用Dropout前后神经网络的变化示例:
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垂类自媒体 “读芯术”
(加入圈子,一起讨论新鲜的人工智能干货)
猜你喜欢
- 2024-10-17 【Python深度学习系列】网格搜索神经网络超参数:丢弃率dropout
- 2024-10-17 中英趣译,用英文说对方“活该”才痛快!
- 2024-10-17 问题:ID:16145下列属于dropout特性的有()
- 2024-10-17 那些与out有关的英文表达! 与out有关的英语词组
- 2024-10-17 Dropout和标准化(Batch Normalization)
- 2024-10-17 麦克风将被静音,美网友都在猜:特朗普会如何应对?
- 2024-10-17 不只Dropout,刚刚,至少30项机器学习技术都变成了谷歌专利
- 2024-10-17 Dropout VS BN: 别在你的网络中使用Dropout
- 2024-10-17 让Dropout在图像超分领域重焕光彩
- 2024-10-17 神经网络中的损失函数正则化和 Dropout 并手写代码实现
你 发表评论:
欢迎- 11-19零基础学习!数据分析分类模型「支持向量机」
- 11-19机器学习 | 算法笔记(三)- 支持向量机算法以及代码实现
- 11-19我以前一直没有真正理解支持向量机,直到我画了一张图
- 11-19研一小姑娘分享机器学习之SVM支持向量机
- 11-19[机器学习] sklearn支持向量机
- 11-19支持向量机
- 11-19初探支持向量机:用大白话解释、原理详解、Python实现
- 11-19支持向量机的核函数
- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)