深度学习100问之深入理解Regularization(正则化)

声明

1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献。
2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。
3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。
4)此属于第一版本,若有错误,还需继续修正与增删。还望大家多多指点。大家都共享一点点,一起为祖国科研的推进添砖加瓦。

1、什么是正则化?

继上次的 深度学习之手撕神经网络代码(基于numpy) 之后,这一次准备写的东西是 正则化,其他的可以去我的主页找专栏进行学习。我们在博客 深度学习100问之神经网络中解决过拟合的几种方法中说过解决过拟合的几种方法,其中一个就是正则化,那么 正则化 的定义是什么呢?

正则化 是一种为了减小测试误差,防止过拟合的行为,进而增强泛化能力。这么说有点官方,我们用简单的话来说,就是防止过拟合。。。

在构造机器学习模型时,最终目的是模型在面对新数据的时候,可以有很好的表现(也就是泛化能力强)。但是当用比较复杂的模型比如神经网络,去拟合数据时,很容易出现 过拟合 现象(具体表现为训练集表现好,测试集表现差),这时候,使用正则化可以很好地解决这个问题(并不能完全解决),同时还可以降低模型的复杂度。

来看一个例子:
在这里插入图片描述
如上图,给出10个固定的 蓝色圆圈,希望你能给出一条拟合曲线。

  • 红色这条想象力过于丰富且上下横跳的曲线就是 过拟合
  • 绿色这条相对平滑的曲线就是正常拟合。

可能有的同学会觉得红色的曲线明明拟合地更好啊,每一个点都在最后的曲线上,但是实际上并不是这样的,简单来说,就是拟合地太过了。

结合上面的图和正则化的英文——Regularization,直译过来应该是:规则化,正规化(加了一个化字就变成了动词,中文还是强),不过免费帮百度打了个广告,emmm,8说了百度打钱。
在这里插入图片描述
什么是规则?家里人告诉你不能太晚回家,这就是一个规则,一个限制。一样地,深度学习中的规则就是给需要训练的目标函数加上一些规则(限制),让它们不要太过于膨胀,太过于膨胀的就是过拟合!!!正则化,看起来听起来,挺不好理解的,追其根源,就是 正则 这两字并不能被大家知道具体的意思,百度一下不难发现正规,正宗的意思,在中文中实在没有完完全全地对应。
在这里插入图片描述
如果能翻译成规则化,相信大家肯定会更好地理解。但是一定要明白,从何种角度进行理解不重要,最后真的理解了才是关键。

2、如何正则化?

这就要说一下 监督机器学习的核心原理 了,对于 线性模型 来说,无论是 Logistic RegressionSVM或是 简单的线性模型,都有一个 基函数 ϕ(),其中有很多 w 需要通过对经验误差函数 J 求极小值(或最大似然估计)来确定,求最优解,极大程度的拟合训练数据,最终,找到最合适的 w 确定模型。公式如下:
在这里插入图片描述
上式被称为 目标函数(评价函数)= 误差函数(损失函数) + 正则化项,其中 λ 被称为正则化系数,λ 越大,这个限制就越强。一般正则项是以下公式的形式:
在这里插入图片描述
其中 M 是 模型的阶次(表现形式是数据的维度),比如 M=2,就是一个平面(二维)内的点。若 q=2 就是二次正则项。高维度没有图像表征非常难以理解,那就使用二维作为特例来理解。

这里令 M=2,即
在这里插入图片描述
令q=0.5,q=1,q=2,q=4有:
在这里插入图片描述
其中横坐标是w1,纵坐标是w2。

在这里插入图片描述

其实就是通过数学的方式进行可视化,如果空间想象力不足,可以看一下下面的三维视图。
在这里插入图片描述
其实这里面最规矩的就是 q=2 时了,对应的就是一个抛物面。
在这里插入图片描述
蓝色的圆圈表示没有经过限制的损失函数,红色的圆圈表示正则化函数,在寻找最小值过程中,w 不断迭代。可以直观的理解为我们的目标函数(误差函数)就是求 蓝圈+红圈的和的最小值,而这个值通在很多情况下是两个曲面相交的地方。

现在就可以看到二次正则项的优势,处处可导,方便计算,限制模型的复杂度,即 w 中 M 的大小,M 是模型的阶次,M 越大意味着需要决定的权重越多,所以模型越复杂。这就从数学角度解释了,为什么正则化(规则化)可以限制模型的复杂度,进而避免过拟合。

3、什么是范数?

常用的正则化方式有:L1 正则化和L2 正则化,所以先介绍一下范数的定义:向量元素绝对值的 p 次方和的 1 / p 次幂。
在这里插入图片描述

1)∞ - 范数

定义:所有向量元素中绝对值的最大值,也称棋盘距离(chessboard),切比雪夫距离。
在这里插入图片描述

2)1 - 范数

定义:向量元素绝对值之和。也成曼哈顿距离,还有个美称叫“稀疏规则算子”(Lasso regularization)。
在这里插入图片描述

3)2 - 范数

定义:向量元素的平方和再开方。Euclid范数,也称欧几里得范数,欧氏距离。
在这里插入图片描述

4、L1 正则化和 L2 正则化

1)L1 正则化

L1 参数范数惩罚通常称为 LassoL1 正则化策略通过在目标函数中添加一个正则化项来使权重更接近原点,L1 范数容易得到稀疏解(0比较多)。
Ω ( θ ) = 1 2 ∥ w ∥ 1 \Omega(\boldsymbol{\theta})=\frac{1}{2}\|\boldsymbol{w}\|_{1} Ω(θ)=21w1

在这里插入图片描述

2)L2 正则化

L2 参数范数惩罚通常称为 岭回归L2 策略通过在目标函数中添加一个正则化项使权重更接近原点,L2 范数得到的解比较平滑(不是稀疏)。

Ω ( θ ) = 1 2 ∥ w ∥ 2 2 \Omega(\boldsymbol{\theta})=\frac{1}{2}\|\boldsymbol{w}\|_{2}^{2} Ω(θ)=21w22

在这里插入图片描述

3)小结

L1 和 L2 的下降速度如下:
在这里插入图片描述
L1 和 L2 的模型空间如下:
在这里插入图片描述

5、神经网络的正则化

说了半天的范数,下面来看看在 神经网络 中如何进行正则化操作,防止过拟合。简单来说,以交叉熵损失函数为例:
在这里插入图片描述
细心的小伙伴发现了,我们使用的 L2 正则化,其实相对来说 L2 正则化要使用的更多。

# 用 L2 正则化(L2 regularization)实现代价函数
def compute_cost_with_regularization(A3, Y, parameters, lambd):
	"""
    Arguments:
    A3 -- 激活函数后,前向传播的输出,形状(output size, number of examples)
    Y -- "true"标签向量,形状(output size, number of examples)
    parameters -- 包含模型参数的python字典(dictionary)
    lambd -- 正则化超参数,标量
    
    Returns:
    cost - 正则化损失函数的损失函数值
    """
	m = Y.shape[1]
	W1 = parameters["W1"]
	W2 = parameters["W2"]
	W3 = parameters["W3"]
	
	# 这就得到了损失函数的交叉熵部分
	cross_entropy_cost = compute_cost(A3, Y)
	
	L2_regularization_cost = 1 / m * lambd / 2 * \
	    (np.sum(np.square(W1)) + np.sum(np.square(W2)) + np.sum(np.square(W3)))
	
	cost = cross_entropy_cost + L2_regularization_cost
	
	return cost

在实例中,模型分类结果如下图所见:
在这里插入图片描述
在这里插入图片描述
效果很明显,未加正则化之前,有一些蓝色区域的点也被分类了,显然是过拟合,但是加了正则化之后,神经网络的过拟合情况得到极大的缓解。

如果想要更多的资源,欢迎关注 @我是管小亮,文字强迫症MAX~

回复【福利】即可获取我为你准备的大礼,包括C++,编程四大件,NLP,深度学习等等的资料。

想看更多文(段)章(子),欢迎关注微信公众号「程序员管小亮」~

在这里插入图片描述

参考文章

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是管小亮

一口吃掉你的打赏,嗝~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值