2.1.2 Dropout正则化以及其他正则化
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尽可能的小。
2.1.2 Dropout正则化以及其他正则化相关推荐
- 偏差与方差、L1正则化、L2正则化、dropout正则化、神经网络调优、批标准化Batch Normalization(BN层)、Early Stopping、数据增强
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 3.2 深度学习正则化 3.2.1 偏差与方差 3.2.1.1 ...
- keras添加L1正则化,L2正则化和Dropout正则化及其原理
一.什么是正则化,用来干嘛的? 正则化(regularization),是指在线性代数理论中,不适定问题通常是由一组线性代数方程定义的,而且这组方程组通常来源于有着很大的条件数的不适定反问题.大条件数 ...
- L1正则化、L2正则化的多角度分析和概率角度的解释
L1正则化.L2正则化的公式如下 min w L 1 ( w ) = min w f ( w ) + λ n ∑ i = 1 n ∣ w i ∣ min w L 2 ( w ) = min ...
- L1正则化和L2正则化(从解空间角度)
文章目录 一.什么是过拟合? 二.为什么模型会过拟合? 三.如何防止模型过拟合? 四.L1正则和L2正则 4.1 L1.L2的区别 4.2 为什么正则化能够防止过拟合? 4.3 为什么L1正则具有稀疏 ...
- L1正则化与L2正则化
1.1-范数,2-范数 1-范数: 2-范数:2-范数就是通常意义下的距离 2.L1和L2正则化 我们所说的正则化,就是在原来的loss function的基础上,加上了一些正则化项或者称为模型复杂度 ...
- L1正则化和L2正则化的直观解释
正则化(Regularization) 机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作ℓ1ℓ1-norm,中文称作L1正则化和L2正则化,或者L1范数和L2 ...
- 【AI面试】L1 loss、L2 loss和Smooth L1 Loss,L1正则化和L2正则化
损失函数是深度学习模型优化的一个灵魂基础,所以无论是很新的transform模型,还是比较早期的AlexNet,都不可避免的要涉及到损失函数的设计和应用. 所以,各种形形色色的损失函数(Loss)也就 ...
- L1正则化与L2正则化详解
L1.L2正则化 什么是正则化? L1.L2正则化公式 正则化的作用 为什么加入L1正则化的模型会更稀疏 1.梯度视角 2.解空间形状视角 为何黄色区域为解空间? 3.函数叠加视角 为何L1正则化可将 ...
- 正则项的原理、梯度公式、L1正则化和L2正则化的区别、应用场景
先对"L1正则化和L2正则化的区别.应用场景"给出结论,具体见后面的原理解释: L1正则化会产生更稀疏的解,因此基于L1正则化的学习方法相当于嵌入式的特征选择方法. L2正则化计算 ...
最新文章
- OpenCV 笔记(04)— OpenCV2 升级到 OpenCV3/CV4 的改动(去掉 CV_前缀、使用新的前缀替换、使用新的命名空间宏)
- FirstDay@JavaOne2017
- CSS的三种使用方式
- stm8s003 8K空间不够用,出现报错,修改stvd参数进行最优化
- pycharm 如何设置文件头信息?信息模板 头文件 coding: utf-8
- HMS数据库设置和优化
- ldd3笔记_2_加载模块方法, 模块程序组成【ZT】
- 漫漫长路十多小时,谁是机上WiFi的“业界良心”?
- 看看华为 Java 编程的军规...
- altium Designer布等长线、蛇形线
- java webservice 实例_Java WebService 简单实例(附实例代码)
- 信息系统项目管理知识记忆口诀-总结
- 服务器监控报警系统软件设计,Monitor监控报警系统
- javascript中mouseover和mouseout事件详解
- Android隐藏的权限管理机制:AppOps
- Navicat 使用IP连接本地mysql服务提示无权限访问
- 【密码学】费马小定理素性检测(C++代码实现)
- 数据库SQL实战 --43.将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005
- CSS+HTML实现学成在线静态页面
- Java 高并发项目笔记
热门文章
- 安卓应用安全指南 4.4.3 创建/使用服务高级话题
- 少年郎,你需要封装好的ViewPager工具类
- Android 百度鹰眼轨迹SDK(v2.1.6)
- 论文笔记之:Multiple Feature Fusion via Weighted Entropy for Visual Tracking
- 使用lisp函数控制cursor
- 【Android】CM在repo中使用local manifest
- CCNP学习笔记(5)
- 单防区扩展模块怎么用_Zens推出模块化可扩展无线充电器 可为6台设备同时供电...
- ICCV2017: Unlabeled Samples Generated by GAN Improve the Person Re-Identification Baseline in Vitro
- eclipse卸载插件小记