首先我们理解一下,什么叫做正则化?

  目的角度:防止过拟合

  简单来说,正则化是一种为了减小测试误差的行为(有时候会增加训练误差)。我们在构造机器学习模型时,最终目的是让模型在面对新数据的时候,可以有很好的表现。当你用比较复杂的模型比如神经网络,去拟合数据时,很容易出现过拟合现象(训练集表现很好,测试集表现较差),这会导致模型的泛化能力下降,这时候,我们就需要使用正则化,降低模型的复杂度。

一、神经网路得L1、L2正则化

1、矩阵的F-1范数、F-2范数

说明:这里的F-范数指的是Frobenius范数,和logistics回归的L1、L2正则化的向量范数不一样。

矩阵的F-1范数:矩阵所有元素的绝对值之和。公式为:

矩阵的F-2范数:矩阵所有元素的平方求和后开根号。公式为:

2、L1正则化与L2正则化(主要使用L2)

 假设神经网络的损失函数为J(W,b),参考逻辑回归的正则化,是在损失函数J(W,b)后面加一个正则化项,神经网络DNN也是一样的,只是变成了加F-范数,L1正则化与L2正则化如下所示:

这里m为样本数,l为各个隐藏层,λλ为超参数,需要自己调试,L2中2m是为了后面求梯度的时候可以抵消掉常数2。

3、L1正则化与L2正则化的区别

  L1 正则化项的效果是让权值 W 往 0 靠,使网络中的权值尽可能为 0,也就相当于减小了网络复杂度,防止过拟合。事实上,L1 正则化能产生稀疏性,导致 W 中许多项变成零。

  L2 正则化项的效果是减小权值 W。事实上,更小的权值 W,从某种意义上说,表示网络的复杂度更低,对数据的拟合刚刚好。

二、Dropout正则化(随机失活)

  Dropout提供了正则化一大类模型的方法,计算方便且功能强大。它不同于L1、L2正则项那样改变损失函数。而是改变模型本身。Dropout可以被认为是集成大量深层神经网络的使用Bagging的方法。Dropout提供一种廉价的Bagging集成近似,能够训练和评估指数级数量的神经网络。

  假设训练的网络:

  对于使用dropout技术的话,我们随机删除隐层的神经元,形成新的网络:

  然后,我们通过前向求损失,反向传到损失,批量梯度下降完成一批,更新完w和b,然后继续随机删除隐藏层的神经元,继续批量梯度下降更新权值和偏置。

反向随机失活(inverted dropout):

  反向随机失活(inverted dropout),是在训练时就进行数值范围调整,从而让前向传播在测试时保持不变。这样做还有一个好处,无论你决定是否使用随机失活,预测方法的代码可以保持不变。

  反向随机失活的代码如下:

"""
反向随机失活推荐实现方式
在训练时drop和调整数值范围,测试时不做任何事
""" p = 0.5 #激活神经元得概率,P值更高=随机失活更弱 def train_step(x):
#三层neural network的向前传播
H1 = np.maximum(0,np.dot(w1,X) + b1)
U1 = (np.random.rand(*H1.shape) < p) / p #第一个随机失活遮罩。注意P!!!
H1 *=U1 #drop!
H2 = np.maximum(0,np.dot(w2,H1) + b2)
U2 = (np.random.rand(*H2.shape) < p) / p #第一个随机失活遮罩。注意P!!!
H2 *=U2 #drop!
out = np.dot(w3,H2)+b3 #反向传播:计算梯度。。。(略)
#进行参数更新。。。(略) def predict(X):
# 向前传播时模型集成
H1 = np.maximum(0,np.dot(w1,X) + b1) #不用进行数值范围调整
H2 = np.maximum(0,np.dot(w2,H1) + b2)
out = np.dot(w3,H2) + b3

9、改善深度神经网络之正则化、Dropout正则化的更多相关文章

  1. Deeplearning.ai课程笔记-改善深层神经网络

    目录 一. 改善过拟合问题 Bias/Variance 正则化Regularization 1. L2 regularization 2. Dropout正则化 其他方法 1. 数据变形 2. Ear ...

  2. [DeeplearningAI笔记]改善深层神经网络1.4_1.8深度学习实用层面_正则化Regularization与改善过拟合

    觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.4 正则化(regularization) 如果你的神经网络出现了过拟合(训练集与验证集得到的结果方差较大),最先想到的方法就是正则化(re ...

  3. 深度神经网络(DNN)的正则化

    和普通的机器学习算法一样,DNN也会遇到过拟合的问题,需要考虑泛化,这里我们就对DNN的正则化方法做一个总结. 1. DNN的L1&L2正则化 想到正则化,我们首先想到的就是L1正则化和L2正 ...

  4. Deep Learning.ai学习笔记_第二门课_改善深层神经网络:超参数调试、正则化以及优化

    目录 第一周(深度学习的实践层面) 第二周(优化算法) 第三周(超参数调试.Batch正则化和程序框架) 目标: 如何有效运作神经网络,内容涉及超参数调优,如何构建数据,以及如何确保优化算法快速运行, ...

  5. 吴恩达深度学习笔记(十一)—— dropout正则化

    主要内容: 一.dropout正则化的思想 二.dropout算法流程 三.dropout的优缺点 一.dropout正则化的思想 在神经网络中,dropout是一种“玄学”的正则化方法,以减少过拟合 ...

  6. Coursera Deep Learning笔记 改善深层神经网络:超参数调试 正则化以及梯度相关

    笔记:Andrew Ng's Deeping Learning视频 参考:https://xienaoban.github.io/posts/41302.html 参考:https://blog.cs ...

  7. 1.6 dropout正则化

    除了L2正则化,还有一个非常实用的正则化方法----dropout(随机失活),下面介绍其工作原理. 假设你在训练下图左边的这样的神经网络,它存在过拟合情况,这就是dropout所要处理的.我们复制这 ...

  8. 【DeepLearning】深入理解dropout正则化

    本文为转载,作者:Microstrong0305 来源:CSDN 原文:https://blog.csdn.net/program_developer/article/details/80737724 ...

  9. 优化深度神经网络(一) dropout 初始化

    Coursera吴恩达<优化深度神经网络>课程笔记(1)-- 深度学习的实用层面 1. Train/Dev/Test sets  训练集(Training sets).验证集(Develo ...

随机推荐

  1. 【知识点】H264, H265硬件编解码基础及码流分析

    前言 音视频开发需要你懂得音视频中一些基本概念,针对编解码而言,我们必须提前懂得编解码器的一些特性,码流的结构,码流中一些重要信息如sps,pps,vps,start code以及基本的工作原理,而大 ...

  2. 不同版本docker修改存储位置补充

    前言:最近发现yum安装docker,安装的版本不一样,有点蛇皮,虽然存放默认位置都是/var/lib/docker,但是它的配置文件不一样,这里做个补充 对于docker版本是1.13及以下 操作如 ...

  3. 一、从GitHub浏览Prism示例代码的方式入门WPF下的Prism

    最近这段时间一直在看一个开源软件PowerToys的源码,里面使用Modules的开发风格让我特别着迷,感觉比我现在写代码的风格好了太多太多.我尝试把PowerToys的架构分离了出来,但是发现代码维 ...

  4. 盘点linux操作系统中的10条性能调优命令,一文搞懂Linux系统调优

    原文链接:猛戳这里 性能调优一直是运维工程师最重要的工作之一,如果您所在的生产环境中遇到了系统响应速度慢,硬盘IO吞吐量异常,数据处理速度低于预期值的情况,又或者如CPU.内存.硬盘.网络等系统资源长 ...

  5. 小哈学Python ----XML

    XML XML是实现不同语言或程序之间进行数据交换的协议,XML文件格式如下: <data> <country name="Liechtenstein"> ...

  6. 从源码分析Hystrix工作机制

    一.Hystrix解决了什么问题? 在复杂的分布式应用中有着许多的依赖,各个依赖都有难免在某个时刻失败,如果应用不隔离各个依赖,降低外部的风险,那容易拖垮整个应用. 举个电商场景中常见的例子,比如订单 ...

  7. 电脑通过WIFI连接手机ADB

    1.搜索adb wifi 2.安装并开启:根据提示 3.电脑:adb connect 192.168.1.134 a安装ADB TOOLS b安装ADB DRIVER c将ADB TOOLS复制到c: ...

  8. React 模块与组件

    React 模块与组件 几个重要概念理解 1). 模块与组件 1. 模块: 理解: 向外提供特定功能的js程序, 一般就是一个js文件 为什么: js代码更多更复杂 作用: 复用js, 简化js的编写 ...

  9. vue+canvas实现炫酷时钟效果的倒计时插件(已发布到npm的vue2插件,开箱即用)

    前言: 此事例是在vue组件中,使用canvas实现倒计时动画的效果.其实,实现效果的逻辑跟vue没有关系,只要读懂canvas如何实现效果的这部分逻辑就可以了 canvas动画的原理:利用定时器,给 ...

  10. odoo14学习----x2many操作与图片设置继承image.mixin

    三种方式实现数据更新 一,如上所述 二,通过对数据集调用update({'key':value,'key1':value1..})更新数据集 三,调用write函数,与update类似,传递字典.   ...