博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
办法不在多,有用就行!用Dropout解决过度拟合问题
阅读量:2108 次
发布时间:2019-04-29

本文共 1777 字,大约阅读时间需要 5 分钟。

全文共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前后神经网络的变化示例:

在这里插入图片描述

图片来源: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垂类自媒体 “读芯术”

添加小编微信:dxsxbb

即可进入微信交流群

转载地址:http://jeyef.baihongyu.com/

你可能感兴趣的文章
redis单机及其集群的搭建
查看>>
Java多线程学习
查看>>
检查Linux服务器性能
查看>>
Java 8新的时间日期库
查看>>
Chrome开发者工具
查看>>
Java工程师成神之路
查看>>
如何在 Linux 上自动设置 JAVA_HOME 环境变量
查看>>
MSSQL复习笔记
查看>>
Spring基础知识汇总
查看>>
Chrome扩展插件
查看>>
log4j.xml 日志文件配置
查看>>
如何删除MySql服务
查看>>
BAT Java和Rti环境变量设置
查看>>
NodeJs npm install 国内镜像
查看>>
python3.5.2 mysql Exccel
查看>>
mysqlDump 导出多表,其中部分表有限制数据内容
查看>>
vi 替换方法
查看>>
BAT 相关
查看>>
ANT集成SVNANT访问SVN(Subversion)
查看>>
高可用架构-- MySQL主从复制的配置
查看>>