首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >深度神经网络之正则化

深度神经网络之正则化

作者头像
小一
发布于 2019-08-14 07:46:46
发布于 2019-08-14 07:46:46
1.3K0
举报
文章被收录于专栏:谓之小一谓之小一
1.正则化

之前介绍的文章之中,我们已多次接触到正则化方法,但没有详细的解释为什么要正则化,什么是正则化,以及L1正则化和L2正则化的区别。本次文章之中,我们将详解机器学习中正则化的概念和深度神经网络中的正则化方法。

1.1 为什么要正则化?

讲到为什么需要正则化,就需要了解什么是过拟合问题。以下面图片为例,我们能够看到有两个类别,其中以X代表男生,O代表女生。

我们想要通过学习来得到分类曲线,其中分类曲线能够有效区分男生和女生,现在来分析下上面的三种分类结果。

  • 欠拟合:图1分类明显欠缺,有些男生被分为女生,有些女生被分为男生。
  • 正拟合:图2虽然有两个男生被分类为女生,但能够理解,毕竟我们人类自己也有分类错误的情况,比如通过化妆,女装等方法。
  • 过拟合:图3虽然能够全部分类正确,但结果全部正确就一定好吗?不一定,我们能够看到分类曲线明显过于复杂,模型学习的时候学习了过多的参数项,但其中某些参数项是无用的特征,比如眼睛大小。当我们进行识别测试集数据时,就需要提供更多的特征,如果测试集包含海量的数据,模型的时间复杂度可想而知。
1.2 什么是正则化?

既然我们已经知道什么是过拟合,那么怎么解决过拟合问题呢?上面有介绍到,模型出现过拟合,是在模型特征上过于复杂。而特征又包含在我们的目标函数f(x)之中,那么只能从目标函数f(x)中寻找解决问题的方法。假设目标函数f(x)和损失函数J0为

如果从X入手解决问题,但训练过程中我们不知道下一个样本X是什么,会怎样的影响目标函数,所以此路不通。那么W如何呢?我们知道W系数是训练过程中通过学习历史数据得到的,和历史数据有关,所以应该可以。现在再回到我们原来的问题,希望减少N的数目,而让N最小化,其实就是让X向量或W向量中项的个数最小化,既然X不行,那么我们可以尝试让W向量中项的个数最小化。如何求解才能让W向量中项的个数最小,我们先简单介绍下0、1、2范数的概念。

说完L0范数和L1范数,就不得不提L2范数。L2范数是指先求向量各元素的平方和,然后再进行求平方根,也就是通常意义上的模。同样,对于正则化问题,我们的目标是让W向量中的每个元素都很小,也就是让L2范数最小。L1范数和L2范数的不同点在于,L1范数会让其中某些元素等于0,而L2范数只是让其中元素接近0,这里有很大不同,我们在后面会进行详细讲解。最后损失函数后面添加的额外项||W||2,也就是我们称作的L2正则化。

1.3 L1正则化和L2正则化

L1正则化可以产生稀疏值矩阵,即产生一个稀疏模型,可以用于特征选择和解决过拟合。那什么是稀疏值矩阵呢?稀疏矩阵是矩阵中很多元素为0,只有少数元素是非零值的矩阵,稀疏矩阵的好处就是能够帮助模型找到重要特征,而去掉无用特征或影响甚小的特征。

比如在分类或预测时,很多特征难以选择,如果代入稀疏矩阵,能够筛选出少数对目标函数有贡献的特征,去掉绝大部分贡献很小或没有贡献的特征(因为稀疏矩阵很多值是0或是很小值)。因此我们只需要关注系数是非零值的特征,从而达到特征选择和解决过拟合的问题。那么为什么L1正则化可以产生稀疏模型呢?

从上图可以看出,当J0等值线与L1图形首次相交的点就是最优解,也就是上图中的(0,w)。而对于L1函数有许多突出的点(二维情况下是4个),J0函数与这些顶点接触的概率远大于与L1其他部分接触的概率,恰好在这些顶点上会有很多权值等于0,这就是为什么L1正则化可以产生稀疏模型,进而可以用于特征选择。最后针对L1正则化再介绍下系数α,其目的是控制L1图形的大小。当α越小,L1的图形越大,α越大,L1图形也就越小。L1图形可以小到在原点附近,这也就是为什么w可以取到很小的原因。

另外L2正则化也可以很好的解决过拟合问题。从上面得知,拟合过程中通常都倾向于让权值尽可能小,最后构造出一个让所有参数都比较小的模型。因为一般认为参数值小的模型比较简单,能够适应于不同的数据集,比如对于目标方程,若参数很大,那么数据只要偏倚一点点,那么对结果的影响就很大。如果参数很小的话,即使数据变化范围比较大,对结果影响也不是很大。相对来说,参数较小的话,对模型的抗扰动能力强。那么为什么L2正则化可以获得很小的参数值呢?我们假设带有L2正则化的损失函数方程如下所示,并对损失函数进行求导。

当利用梯度下降算法进行更新w时,w变化如下所示,其中α是学习速率。

可以看到在梯度下降算法过程中,w是不断进行减小的,也就是权重衰减,这样也就能得到一个让所有参数都比较小的模型,也就能解决过拟合问题。最后再解释下为什么L2正则化不具有稀疏性的原因,如下图所示,二维平面下L2正则化的函数图形是圆,与L1图形相比,没有了菱角。因此J0与L2接触时,使w1或w2等于0的机率就小了很多,所以L2正则化不具有稀疏性。

2.DNN之L1和L2正则化

和普通机器学习算法一样,DNN也会遇到过拟合的问题,因此需要考虑泛化。结合我们上面讲到的L1和L2正则化,这里对深度神经网络中的正则化做个总结,其中L1正则化和L2正则化原理类似,这里主要介绍L2正则化方法。通过深度神经网络之前向传播算法的学习,我们知道前向传播过程中损失函数为

加入L2正则化后,损失函数如下所示。其中λ是正则化参数,实际使用时需要我们进行调参。

如果使用上式的损失函数,进行反向传播算法时,流程和没有正则化时的反向传播算法相同。区别在于进行梯度下降时,W更新公式会进行改变。在深度神经网络之反向传播算法中,W的梯度下降更新公式为

加入L2正则化后,W迭代更新公式如下所示

类似的正则化方法,同样可以用于其他损失函数,在这里不再介绍。

3.DNN之Dropout正则化

Dropout指的是在用前向传播算法和反向传播算法训练模型时,随机的从全连接DNN网络中去掉一部分隐含层的神经元。比如我们完整的DNN模型如下所示

然后随机的去掉部分隐含层的神经元,利用数据进行训练模型,更新所有的W,b。

总结下Dropout方法就是,每轮梯度下降迭代时,将训练数据分成若干批,然后分批进行迭代。每批数据迭代时,将原始的DNN模型随机去掉部分隐含层的神经元,然后用残缺的DNN模型来迭代更新W,b。每批数据迭代完成之后,将残缺的DNN模型恢复成原始的DNN模型,接着去训练模型,更新W,b。当然,运用Dropout正则化方法,需要有较大数据量支持,否则可能会出现欠拟合的情况。

4.DNN之集成学习正则化

机器学习之随机森林机器学习之梯度提升决策树之中,我们已经学习集成学习中的Bagging和Boosting方法,而DNN可以用Bagging方法来正则化。随机森林中,Bagging方法通过随机采样构建若干个相互独立的弱决策树学习器,最后通过采用加权平均法或者投票法决定集成的输出。

DNN中我们采用的是若干个DNN的网络,首先对原始的训练样本进行有放回的随机采样,构建N组m个样本的数据集,然后分别用这N组数据集去训练我们的DNN。通过利用前向传播算法和反向传播算法得到N个DNN模型的W,b参数组合,然后对N个DNN模型的输出用加权平均法或者投票法决定最后的输出。最后,因为DNN模型比较复杂,通过Bagging后模型参数会增加N倍,从而导致训练模型需要花费较长的时间,因此一般N的取值不能太大,5-10个即可。

5.DNN之增强数据集正则化

增强模型泛化能力最好的方法,是有更多更好的训练数据,但实际情况之中,对于某些数据,我们很难能够得到。那么,我们不如去构造一些数据,来让模型得到更强的泛化能力。对于传统的机器学习算法,比如上面提到的机器学习之随机森林机器学习之梯度提升决策树算法,想要构造数据的话,能够很方便的构造输入数据,但是很难构造出对应的输出数据。

但对于深度神经网络来说,比如图像识别领域,对于原始数据集的图像,我们可以偏倚或者旋转图像之后,得到新的数据集。显然原始数据和新构造的数据输入是不同的图像,但输出是相同的,因此通过训练后,模型的泛化便能够增强。对应的例子,比如利用DNN识别手写数字,数字5旋转15度之后,识别之后还是5。

参考

深度神经网络(DNN)的正则化-刘建平Pinard 机器学习中正则化项L1和L2的直观理解-阿拉丁吃米粉 机器学习中常常提到的正则化到底是什么意思?-陶轻松

你看到的这篇文章来自于公众号「谓之小一」,欢迎关注我阅读更多文章。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 谓之小一 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深度神经网络(DNN)的正则化
    和普通的机器学习算法一样,DNN也会遇到过拟合的问题,需要考虑泛化,这里我们就对DNN的正则化方法做一个总结。
刘建平Pinard
2018/08/14
5300
深度神经网络(DNN)的正则化
深度神经网络总结
深度神经网络(Deep Neural Networks,DNN)可以理解为有很多隐藏层的神经网络,又被称为深度前馈网络(DFN),多层感知机(Multi-Layer perceptron,MLP)。
全栈程序员站长
2022/07/02
2.4K0
深度神经网络总结
干货 | 深度学习之DNN的多种正则化方式
关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第二 【Python】:排名第三 【算法】:排名第四 前言 和普通的机器学习算法一样,DNN也会遇到过拟合的问题,需要考虑泛化,这里对DNN的正则化方法做一个总结。 DNN的L1与L2正则化 想到正则化,首先想到的就是L1正则化和L2正则化。(L1正则化和L2正则化原理类似,这里重点讲述DNN的L2正则化)而DNN的L2正则化通常的做法是只针对与线性系数矩阵W,而不针对偏倚系数b。假如我们的每个样本的损失函数是均方差损失函数,则所有的m个
昱良
2018/04/08
1.3K0
干货 | 深度学习之DNN的多种正则化方式
【AI】浅谈使用正则化防止过拟合(下)
对于机器学习问题,我们最常遇到的一个问题便是过拟合。在对已知的数据集合进行学习的时候,我们选择适应度最好的模型最为最终的结果。虽然我们选择的模型能够很好的解释训练数据集合,但却不一定能够很好的解释测试数据或者其他数据,也就是说这个模型过于精细的刻画了训练数据,对于测试数据或者其他新的数据泛化能力不强。
sidiot
2023/08/30
4870
【AI】浅谈使用正则化防止过拟合(下)
全面直观认识深度神经网络
作者:石文华 编辑:赵一帆 01 深度学习的精准定义 一类通过多层非线性变换对高复杂性数据建模算法的集合。它的两个非常重要的特征是多层性和非线性。俗称多层非线性变换。所以深度学习要去线性化。 为什么呢?因为线性模型存在局限性,任意线性模型得到组合仍然还是线性模型。所以只要通过线性变换,任意层的全连接神经网络和单层神经网络模型的表达能力没有任何区别,而且他们都是线性模型,线性模型解决问题的能力是有限的。 02 激活函数实现去线性化 每个神经元(也就是神经网络上的节点)的输出通过一个非线性函数
机器学习算法工程师
2018/03/06
8540
全面直观认识深度神经网络
深度学习正则化
在小数据量的时代,如 100、1000、10000 的数据量大小,可以将数据集按照以下比例进行划分:
Lansonli
2021/10/09
6600
【深度学习】正则化技术全面了解
正则化就是结构风险最小化策略的实现, 是在经验风险最小化的情况下加入一个正则化项或者罚项。
OpenCV学堂
2020/03/08
2.1K0
机器学习中正则化项L1和L2的直观理解
机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作 ℓ 1 \ell_1 ℓ1​-norm 和 ℓ 2 \ell_2 ℓ2​-norm,中文称作 L1正则化 和 L2正则化,或者 L1范数 和 L2范数。
全栈程序员站长
2022/09/14
7700
机器学习中正则化项L1和L2的直观理解
MLK | 一文理清 深度学习前馈神经网络
而深度学习模型,类似的模型统称是叫 深度前馈网络(Deep Feedforward Network),其目标是拟合某个函数f,由于从输入到输出的过程中不存在与模型自身的反馈连接,因此被称为“前馈”。常见的深度前馈网络有:多层感知机、自编码器、限制玻尔兹曼机、卷积神经网络等等。
Sam Gor
2019/07/30
1.6K0
机器学习和深度学习中的正则化方法
之前我们介绍过在机器学习和深度学习中可能存在过拟合问题,过拟合会导致高偏差,解决办法有两个,一个是增加数据量,一个是正则化,下面我们就介绍一下正则化。
Minerva
2020/05/25
1.2K0
深度神经网络之反向传播算法
现在对应到我们的DNN模型之中,即输入层有n_in个神经元,输出层有n_out个神经元,再加上一些含有若干个神经元的隐含层。此时我们需要找到所有隐含层和输出层所对应的线性系数矩阵W、偏倚向量b,希望通
小一
2019/08/14
8240
深度神经网络之反向传播算法
腾讯AI Lab参与提出EAD:基于弹性网络正则化的深度神经网络对抗样本攻击
选自arXiv 作者:Pin-Yu Chen 、Yash Sharma、Huan Zhang、Jinfeng Yi、Cho-Jui Hsieh 机器之心编译 腾讯 AI Lab 在 2018 年 AAAI 中入选论文 11 篇,其中一篇与 IBM Research、The Cooper Union 和加州大学戴维斯分校合作的论文入选口头报告(Oral)。这篇论文提出一种基于弹性网络正则化的攻击算法,该算法将对抗样本攻击 DNN 的过程形式化为弹性网络正则化的优化问题。此外,对基于 L1 失真攻击的评估为对抗
企鹅号小编
2018/02/02
7430
腾讯AI Lab参与提出EAD:基于弹性网络正则化的深度神经网络对抗样本攻击
精华 | 深度学习中的【五大正则化技术】与【七大优化策略】
关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第一 【Python】:排名第三 【算法】:排名第四 源 | 数盟 深度学习中,卷积神经网络和循环神经网络等深度模型在各种复杂的任务中表现十分优秀。例如卷积神经网络(CNN)这种由生物启发而诞生的网络,它基于数学的卷积运算而能检测大量的图像特征,因此可用于解决多种图像视觉应用、目标分类和语音识别等问题。 但是,深层网络架构的学习要求大量数据,对计算能力的要求很高。神经元和参数之间的大量连接需要通过梯度下降及其变体以迭代的方式不断调整。此外
昱良
2018/04/08
1.9K0
精华 | 深度学习中的【五大正则化技术】与【七大优化策略】
深度神经网络基础知识
在很多情况下,可能会遇到数据不平衡问题。数据不平衡是什么意思呢?举一个简单的例子:假设你正在训练一个网络模型,该模型用来预测视频中是否有人持有致命武器。但是训练数据中只有 50 个持有武器的视频,而有 1000 个没有持有武器的视频。如果使用这个数据集完成训练的话,模型肯定倾向于预测视频中没有持有武器。针对这个问题,可以做一些事情来解决:
嵌入式视觉
2022/09/05
1.5K0
深度神经网络基础知识
深度学习系列教程(八)TensorFlow 中的正则化方法
本文介绍了深度学习系列教程(八)TensorFlow 中的正则化方法,包括L1正则化、L2正则化、Dropout正则化以及Early Stopping等方法,这些方法都是用于防止过拟合,提高模型的泛化能力。其中,L1正则化将权重矩阵的L1范数作为惩罚项,L2正则化将权重矩阵的L2范数作为惩罚项,Dropout正则化是通过在训练过程中随机地将某些神经元“丢弃”,Early Stopping是在训练过程中提前停止训练,防止过拟合。这些正则化方法在TensorFlow中都有相应的实现,可以帮助我们更好地训练和优化深度学习模型。
企鹅号小编
2018/01/04
1.1K0
深度学习系列教程(八)TensorFlow 中的正则化方法
Coursera吴恩达《优化深度神经网络》课程笔记(1)-- 深度学习的实用层面
Andrew Ng的深度学习专项课程的第一门课《Neural Networks and Deep Learning》的5份笔记我已经整理完毕。迷路的小伙伴请见如下链接: Coursera吴恩达《神经网
红色石头
2017/12/28
1.6K0
Coursera吴恩达《优化深度神经网络》课程笔记(1)-- 深度学习的实用层面
一文概览深度学习中的五大正则化方法和七大优化策略
选自arXiv 机器之心编译 深度学习中的正则化与优化策略一直是非常重要的部分,它们很大程度上决定了模型的泛化与收敛等性能。本文主要以深度卷积网络为例,探讨了深度学习中的五项正则化与七项优化策略,并重点解释了当前最为流行的 Adam 优化算法。本文主体介绍和简要分析基于南洋理工的概述论文,而 Adam 方法的具体介绍基于 14 年的 Adam 论文。 近来在深度学习中,卷积神经网络和循环神经网络等深度模型在各种复杂的任务中表现十分优秀。例如卷积神经网络(CNN)这种由生物启发而诞生的网络,它基于数学的卷积运
机器之心
2018/05/10
1.1K0
DeepLearning.ai学习笔记(二)改善深层神经网络:超参数调试、正则化以及优化--Week1深度学习的实用层面
更多笔记请火速前往 DeepLearning.ai学习笔记汇总 本周我们将学习如何配置训练/验证/测试集,如何分析方差&偏差,如何处理高偏差、高方差或者二者共存的问题,如何在神经网络中应用不同的正则化方法(如L2正则化、Dropout),梯度检测。 一、训练/验证/测试集(Train/dev/test sets) 一般来说为了充分利用已有数据以及让模型预测的更加一般化,通常将数据划分成训练/验证/测试集,划分比例一般为60%-20%-20%。 1.数据划分比例需要注意的问题 在大数据时代,我们很容易
marsggbo
2018/01/23
8340
DeepLearning.ai学习笔记(二)改善深层神经网络:超参数调试、正则化以及优化--Week1深度学习的实用层面
归一化,正则化,标准化区别
是为了消除不同数据之间的量纲,方便数据比较和共同处理,比如在神经网络中,归一化可以加快训练网络的收敛性;
zhangjiqun
2024/12/17
3470
正则化方法小结
在总结正则化(Regularization)之前,我们先谈一谈正则化是什么,为什么要正则化。
小白学视觉
2022/02/14
6170
正则化方法小结
推荐阅读
相关推荐
深度神经网络(DNN)的正则化
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档