1 dropout简介

1.1 dropout出现的原因

在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象。

过拟合表现:模型在训练数据上损失函数较小,预测准确率较高,但是在测试数据上损失函数比较大,预测准确率较低。

dropout可以比较有效的缓解过拟合的发生,在一定程度上达到正则化的效果。

dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃。对于随机梯度下降来说,由于是随机丢弃,因此每一个mini-batch都在训练不同的网络。

1.2 什么是dropout

在前向传播的时候,让某个神经元的激活值以一定的概率 p 停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部特征。

2 dropout工作流程及使用

2.1 dropout在神经网络中的使用

dropout的具体工作流程上面已经详细的介绍过了,但是具体怎么让某些神经元以一定的概率停止工作?代码层面如何实现呢?

(1)在训练模型阶段

在训练网络的每个单元都要添加一道概率流程。

对应的公式变化如下:

没有dropout的网络计算公式:

采用dropout的网络计算公式:

注意:经过上面屏蔽掉某些神经元,使其激活值为0以后,我们还需要对向量 y1, ... , y1000进行缩放,也就是乘以 1 / (1-p)
。如果你在训练的时候,经过置0后,没有对 y1, ... , y1000进行缩放(rescale),那么在测试的时候,就需要对权重进行缩放。操作如下:

(2)在测试模型阶段

预测模型的时候,每一个神经元的权重参数要乘以概率p。

测试阶段dropout公式:

3 为什么说dropout可以解决过拟合?

1 取平均的作用

先回到标准的模型即没有dropout,我们用相同的训练数据去训练5个不同的神经网络,一般会得到5个不同的结果,此时我们可以采用
“5个结果取均值”或者“多数取胜的投票策略”去决定最终结果。

这种“综合起来取平均”的策略通常可以有效防止过拟合问题。因为不同的网络可能产生不同的过拟合,取平均则有可能让一些“相反的”拟合互相抵消。

dropout掉不同的隐藏神经元就类似在训练不同的网络,随机删掉一半隐藏神经元导致网络结构已经不同,整个dropout过程就相当于对很多个不同的神经网络取平均。而不同的网络产生不同的过拟合,一些互为“反向”的拟合相互抵消就可以达到整体上减少过拟合。

 

 

 

 

技术
©2020 ioDraw All rights reserved
46岁微软:从盖茨缔造帝国到纳德拉复兴第二章 初识C语言常量2021前端高频面试题(一定要看哦!!!)滤波器,窗函数以及切比雪夫逼近法新手快速了解冒泡排序、插入排序的详解pytorch训练过程中GPU利用率低Golang经典面试题初识Mongdb之数据查询篇(三)人类第一架火星直升机正在部署 择机在这颗异域星球首飞python判断两个列表(list)中的值是否相同([1,2,3]和[3,2,1])