2.1.2 Dropout正则化以及其他正则化

原创 2018年04月16日 21:23:00

Dropout正则化

Dropout介绍

除了L2正则化之外,还有一个很重要的正则化方法叫随机失活(Dropout),下面,我们来了解一下。

这里写图片描述

如图所示,假设网络中的每一层的节点都以抛硬币的形式来设置概率,每一个节点得以保留和消除的概率都是0.5。

设置完节点之后,我们会删除得分是0分节点,然后删除从该节点进出的连线。最后得到一个节点更少,规模更小的网络。之后我们用反向传播算法进行训练。

其他样本,我们也按照这个方法进行训练,即删除一些节点,然后用一些精简的网络进行训练。对于每一个样本,我们都用精简的网络进行训练。

如何实施Dropout

实施Dropout的方法有很多,最常见的是反向随机失活(Inverted Dropout)

这里写图片描述

如图所示,我们使用三层神经网络举例。

d3表示一个三层的Dropout向量,keep-prob是一个具体的数,比如说上个例子中的0.5,这个例子我们用0.8来表示。这个数表示的是保留某个隐藏单元的概率

d3 = np.random.rand(a3.shape[0], a3.shape[1]) < keep-prob

这行代码表示的是它消除任意一个隐藏单元的概率是0.2,它的作用就是生成一个随机矩阵。也就是对于每一个隐藏单元而言,d3的值是1的概率都是0.8,而对应的值是0的概率是0.2。

接下来我们要做的是从第三层获取激活函数。

a3 = np.multiply(a3, d3)

他的作用就是过滤d3中所有等于0的元素。乘法运算最终把d3中的相应元素归零。

最后,我们进行

a3 /= keep-prob

他的功能是比如就像图中下面部分说的

z[4]=w[4]a[3]+b[4]

如果a3的值减少了20%,那么直接计算的话z的值一定会受到影响。为了不影响这个z的值得话,我们对a3除以一个keep-prob。

这个就是Dropout的反向随机失活(Inverted Dropout)实现,不管keep-prob的值是多少,确保a3的期望值不变

在测试阶段进行预测

在测试阶段,我们不使用Dropout,因为在测试阶段,我们不希望输出的值是随机的。如果在测试阶段使用Dropout函数,那么预测值就会收到干扰。

理解Dropout

Dropout可以随机的删除神经网络中的节点,这一做法实在是有点疯狂。但是为什么正则化可以发挥这么大的作用,我们一起来了解一下。

这里写图片描述

如图所示,神经网络下面的每一个参数是keep-prob的不同的数值,他代表了每一层保留单元的概率。所以不同层的keep-prob值是可以变化的。对于第二层而言,w的矩阵比较大,所以我们可以把keep-prob的值设置的低一些。

因此,如果你担心某些层可能比其他的层更容易发生过拟合,那么你可以把这个层的参数设置的更低一些。

但是我们要注意的是,除非算法发生了过拟合,一般不建议使用Dropout。Dropout的一大缺点就是cost function不再明确定义了,每次迭代都会随机的移除一些节点。这样就不太容易去检查梯度下降的性能了。通常不移除节点的话cost function的值是在不断下降的,但是移除了节点之后就不好说了。不一定可以保证J单调递减。

其他正则化方法

我们先来介绍一下early stopping的概念。

这里写图片描述

如图所示,梯度下降过程中cost function的值在不断减小。然而验证集的误差可能会像紫色曲线。

early stopping的概念就是说,一个神经网络在这一点之前迭代的很好,我们在此刻停止训练吧,得到的验证集误差。

这是什么原因呢?

因为你的神经网络在还没有迭代很多次的时候,你的参数w的值接近于0。而在迭代过程中w的值会逐渐变得越来越大。

因此early stopping要的就是我们在此刻停止迭代过程,得到一个较小的w。避免了神经网络的过拟合。

但是early stopping也有不足之处

我们在训练一个机器学习模型的时候,通常希望他的成本函数(cost function)尽可能的小,同时又不要过拟合,然而early stopping因为早早的就停止了迭代过程,所以他无法保证我的J尽可能的小。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Einstellung/article/details/79966825

统计机器学习入门——线性模型选择与正则化1

统计机器学习入门——老司机带你读经典"系列课程使用经典的ISLR(An Introduction to Statistical Learning with Applications in R)为教材,结合具体案例,介绍统计学习的基本概念和常用算法
  • 2016年09月02日 13:11

深度学习大神都推荐入门必须读完这9篇论文

Introduction        卷积神经网络CNN,虽然它听起来就像是生物学、数学和计算机的奇怪混杂产物,但在近些年的机器视觉领域,它是最具影响力的创新结果。随着Alex Krizhevsky...
  • qq_22268567
  • qq_22268567
  • 2018-02-22 11:24:58
  • 181

丢弃法(Dropout)

原文链接见 丢弃法(Dropout)—— 从零开始 在深度学习中,一个常用的应对过拟合(overfitting)问题的方法叫做丢弃法。 概念 在现代神经网络中,我们所指的丢弃法,通常是对输入...
  • qq_33415086
  • qq_33415086
  • 2018-04-21 17:01:05
  • 8

Keras中几个重要函数用法

一般模块都需导入包: from keras.models import Sequential from keras.layers import Dense, Dropout, Activation, ...
  • u012969412
  • u012969412
  • 2017-04-28 09:13:41
  • 9718

深度学习大神都推荐入门必须读完这9篇论文

Introduction 卷积神经网络CNN,虽然它听起来就像是生物学、数学和计算机的奇怪混杂产物,但在近些年的机器视觉领域,它是最具影响力的创新结果。随着Alex Krizhevsky开始使用神经...
  • Greepex
  • Greepex
  • 2018-01-18 16:00:06
  • 1150

深度学习大神都推荐入门必须读完

Introduction        卷积神经网络CNN,虽然它听起来就像是生物学、数学和计算机的奇怪混杂产物,但在近些年的机器视觉领域,它是最具影响力的创新结果。随着Alex Krizhevsky...
  • braverex
  • braverex
  • 2018-02-23 10:05:09
  • 367

解读tensorflow之rnn

from: http://lan2720.github.io/2016/07/16/%E8%A7%A3%E8%AF%BBtensorflow%E4%B9%8Brnn/ 这两天想搞清楚用tenso...
  • mydear_11000
  • mydear_11000
  • 2016-09-02 15:27:49
  • 55709

Regularization(正则化)与Dropout

本文主要讲解神经网络中的正则化(Regularization)和Dropout,都是用了减小过拟合。正则化在机器学习领域中很重要。主要针对模型过拟合问题而提出来的。本文是观看麦子学院的视频整理而来。下...
  • u014696921
  • u014696921
  • 2017-01-13 16:52:22
  • 2101

正则化和dropout

正则化和dropout1. 过拟合先来说说什么是过拟合,在Andrew Ng的ML课程中有这么一段描述。 使用一次曲线拟合房价,发现效果并不好,出现欠拟合,是high bias,训练数据不够充分。使...
  • u010194274
  • u010194274
  • 2017-03-17 20:34:30
  • 1799

神经网络的Dropout正则化

dropout技术是神经网络和深度学习模型的一种简单而有效的正则化方式。 本文将向你介绍dropout正则化技术,并且教你如何在Keras中用Python将其应用于你的模型。 读完本文之后,你将了...
  • u010159842
  • u010159842
  • 2017-01-06 14:59:45
  • 2251
收藏助手
不良信息举报
您举报文章:2.1.2 Dropout正则化以及其他正则化
举报原因:
原因补充:

(最多只允许输入30个字)