一文搞懂深度学习正则化的L2范数

深度学习 同时被 3 个专栏收录
5 篇文章 1 订阅
5 篇文章 0 订阅
2 篇文章 0 订阅

想要彻底弄明白L2范数,必须要有一定的矩阵论知识,L2范数涉及了很多的矩阵变换。在我们进行数学公式的推到之前,我们先对L2范数有一个感性的认识。

L2范数是什么?

L2范数的定义其实是一个数学概念,其定义如下:

这个公式看着相当熟悉吧,用的最多的欧式距离就是一种L2范数,表示向量元素的平方和再开方。

正则化中的L2范数

    说到正则化,我们要看一下,正则化在深度学习中含义是指什么?正则化其实是一种策略,以增大训练误差为代价来减少测试误差的所有策略我们都可以称作为正则化。换句话说就是正则化是为了防止模型过拟合。L2范数就是最常用的正则化方法之一。

如何使用L2范数来正则化?

    为了方便理解,就以线性规划模型来举个例子,线性规划模型的代价函数也就是平方误差之和,如下:

找到线性模型的解就是找到一个theta值能够使代价函数J取得最小值,也就是对J进行求导,之后得到导数为0的点,我们称为驻点。用数学的方式来看就是:、

这个过程是没有使用正则化的线性规划模型的求解过程,加上L2范数,其实很简单,就是在代价函数后加上theta的L2范数即可。

 L2范数的使用就完成了,这样就能够防止模型过拟合了,使用优化算法时也有加快收敛的效果。

但是为什么呐?为什么加上一个参数的L2范数就可以达到这样神奇的效果呐?

在一探究竟之前我们先看一下L2范数的另一个别名:权重衰减。这里的权重就是指我们要学习到的参数,衰减意思就很明白了,将一些权重进行了缩小,使其影响变小,这样就可以达到防止过拟合了。好像不是很明白,让我们张图,有个感性认识。

这张图是Ng课程中用来讲解什么是过拟合的,最右侧的那条曲线就是一个过拟合的模型,因为这个模型对数据太过敏感了,只要数据一丁点的变化,模型的输出就会有所变化,这肯定带来的后果就是泛化能力很差,在训练集上表现良好的模型,在测试集上表现却会变差。模型的输出对数据的输入过于敏感的程度用专业的数学来表达的话就是condition number,这里不重点讲解了。

 用上图解释了什么是过拟合后,我们再看是什么带来了过拟合,好像中间的模型和右侧的模型只是差了theta3和theta4参数

而已,也就是我们如果能够抑制这两个参数的话,我们就可以防止模型过拟合了。对,这可不就是权重衰减吗?!只要我们更多

的抑制这两个参数而更小的抑制其他参数就可以完成正则化了。我们再来捋一下思路,

    我们使用L2范数==》抑制模型中产生过拟合的参数==》防止了过拟合

    最初其实还有个疑问就是,我们既然知道了多加参数会产生过拟合,那么最初设置参数的时候为什么不设置更少的参数?如果

设置合适的参数确实可以不用使用正则化的任何策略。或者如果知道数据的分布,就根本不用使用什么机器学习或者深度学习的

方法,我们直接设置参数就可以了对吧。设置多的参数就是因为我们对数据是未知的,我们不知道哪个参数会起作用?

    那么思路到现在,我们只需要明白L2范数是怎么对模型中的参数进行抑制的就明白了L2范数到底是怎么回事了。

    再看一下线性回归的代价函数:

 

加上L2正则项后的代价函数是:

加入L2正则项后的目标是:对中的某些项有所抑制。

以下就是正式的数学推导:

 

以上对L2范数对权重的衰减的理解很明白了,但是还是有些晦涩,我们再换另一种有趣的理解方法。

看上面这个公式,我们得到了正则化后的权重和原本之前权重之间的关系。又因为Q是正交基,所以我们可以看作左乘Q是对矩阵的一种旋转,左乘是对矩阵的拉伸,如果不是太明白可以看下图:

 

也就是说,对权重进行了缩小,而且针对不同的权重进行不同比例的缩小。这就又要求我们理解特征值的含义。

再看下面这一段:

    也就是说,的特征值,也就是的开方就是X的奇异值!,那么我们就有了X矩阵的奇异值分解,如果奇

异值不熟悉的可以移步:http://blog.csdn.net/u010725283/article/details/79155204 ,好的那么我们知道矩阵X的主要成分在前面的奇异值上,换句话说就是前面比较大的奇异值更能代表X,我们终于找到了的含义,是从大到小的一个排序,越大的奇异值越能代表X,而我们的权重就是为了得到X的分布!那么的含义就是越大的越能代表数据的分布,对应的权重越重要,中,越大,对的抑制越小,反过来也就是抑制越大。这一下就完全明白了,就是对于数据不够重要的权重抑制的大一些,对数据分布越起作用的权重抑制越小,这就实现了正则化,就能够防止过拟合了!

L2范数简单却神奇!

参考文献:

SVD和PCA:http://blog.csdn.net/u010725283/article/details/79155204

如何理解矩阵特征值:https://www.zhihu.com/question/21874816

机器学习中的L0,L1,L2范数:http://blog.csdn.net/zouxy09/article/details/24971995

L2正则项解收缩的解释:https://zhuanlan.zhihu.com/p/27131373

百度云盘分享 简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝,EJB对象是用完毕,从内存中清除,从账户中取出amt,如果amt>账户余额抛出异常,一个实体Bean可以表示不同的数据实例,我们应该通过主键来判断删除哪个数据实例…… ejbCreate函数用于初始一个EJB实例 5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始的上下文,用client的getHome()函数调用Home接口函数得到远程接口的引用,用远程接口的引用访问EJB。 EJB中JNDI的使用源码例子 1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,但是它的主要作用是供程序使用的。本规范尝试满足大型主机、微型主机、个人工作站、和TACs 的不同需求。例如,容易实现协议的设计。 Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝,EJB对象是用完毕,从内存中清除…… Java Socket 聊天通信演示代码 2个目标文件,一个服务器,一个客户端。 Java Telnet客户端实例源码 一个目标文件,演示Socket的使用。 Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密   Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。   设定字符串为“张三,你好,我是李四”   产生张三的密钥对(keyPairZhang)   张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节   通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 同上 java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥   Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列保存私钥,通常应对私钥加密后再保存、如何从文件中得到公钥编码的字节数组、如何从字节数组解码公钥。 Java数据压缩与传输实例 1个目标文件 摘要:Java源码,文件操作,数据压缩,文件传输   Jav
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值