写在前面:这篇文章虽然公式有点多,但很好懂的。
仔细看一定会有很大收获。
 
 
本文介绍了对深度学习中正则化的理解,分为以下几部分:

  1. 什么是正则化?
  2. 为什么要正则化?
  3. 怎样理解正则化?
  4. 举例

首先从“什么是正则化”开始。

正则化方法很早之前就已经出现了,在机器学习方法中应用广泛,比如支持向量机(这个不知道也没关系)。它的形式很简单,是在目标函数后额外附加一项,使其影响目标函数最优点的选取。这种方法叫做正则化方法。(1.1)式是常见的L2正则化,等式右侧第一项为原目标函数,第二项为正则化项,构成等式左侧新的目标函数。

J^(ω;X,y)=J(ω;X,y)+α2ωTω(1.1)(1.1)J^(ω;X,y)=J(ω;X,y)+α2ωTω

\hat{J}(\omega ; X ,y)=J(\omega ; X ,y)+\frac{\alpha}{2}{\omega}^T{\omega} \tag{1.1}


接着,为什么要正则化?
正则化可以解决过拟合问题。
从贝叶斯论者的角度来说,我们知道,深度学习使用神经网络将样本空间映射到特征的概率分布空间。当映射函数可能存在的空间太大时,我们通过学习方法得到的映射函数可能并不满足现实世界的一些规则,所以在泛化,即推广到未训练过的现实世界真实存在的数据集(验证集)时,得到的结果会变差,这叫做“Variance”大,说明模型过拟合了。
我们可以使用最大后验点估计(Maximum A Posteriori),来解决这个问题,如式(2.1)所示。式中arg max表示令 p(θ | x)p(θ|x) p(\theta \ | \ x) 最大的 θθ\theta 值,式中等式右侧的 log p(θ)logp(θ){\rm log}\ p(\theta) 即是正则化项。如果 θθ\theta 服从高斯分布,那么式(2.1)是常见的L2正则化,见式(1.1)。这是我们从最大后验点估计这个贝叶斯论者的角度来看为什么要正则化。

θMAP=argmaxθp(θ | x)=argmaxθlog p(x | θ)+log p(θ)(2.1)(2.1)θMAP=argmaxθp(θ|x)=argmaxθlogp(x|θ)+logp(θ)

\theta_ {MAP}={\rm arg}\max_{\theta} p(\theta\ | \ x)={\rm arg}\max_{\theta} {\rm log}\ p(x\ | \ \theta)+{\rm log}\ p(\theta) \tag{2.1}

从频率论者的角度来说,我们希望权重 θθ\theta 的偏差(期望和真值的差,无偏估计时值为0)和标准差都很小。我们通过深度学习算法拟合映射函数,使训练集上的损失最小,此时组成映射函数的权重偏差最小。同时我们希望在验证集上的损失也能和训练集上的损失一样小,这样权重偏差也一样小。如果训练集上的权重偏差小,但验证集上的权重偏差大,此时权重的标准差大(这是概率统计知识,理解一下)。这是由于模型过拟合,使映射函数过度满足训练集样本的特征,即不仅满足正确的特征,又满足了一些额外的噪声特征,最终造成泛化误差大。
怎么解决这个问题呢?我们知道偏差和标准差是一对互相矛盾的变量,并不同时达到最小值;因此在训练集上学习时,如果偏差最小,那标准差往往没有达到最小。我们可以在偏差上做一些让步,使标准差变小,从而减小泛化误差。这可以通过正则化实现。
为了说明偏差和标准差是一对互相矛盾的变量,我们下面做简单的分析。假设 B(θ)B(θ)B(\theta) 是偏差关于权重的函数, V(θ)V(θ)V(\theta) 是标准差关于权重的函数。当 B(θ)B(θ)B(\theta) 最小时,V(θ)=V1V(θ)=V1V(\theta)=V_{1};当V(θ)V(θ)V(\theta) 最小时,B(θ)=B1B(θ)=B1B(\theta)=B_{1}。使用 Lagrange 乘子法,将约束和极值写在一起,如下

min {B(θ)+λ1[V(θ)−V1]} min {V(θ)+λ2[B(θ)−B1]}(2.2)(2.2)min{B(θ)+λ1[V(θ)−V1]}min{V(θ)+λ2[B(θ)−B1]}

{\rm min}_\ \{B(\theta)+\lambda_{1}[ V(\theta)-V_{1}]\} \\ \ {\rm min}_\ \{V(\theta)+\lambda_{2}[ B(\theta)-B_{1}]\} \tag{2.2}

整理后得到

min [B(θ)+λ1V(θ)]min [B(θ)+1λ2V(θ)](2.3)(2.3)min[B(θ)+λ1V(θ)]min[B(θ)+1λ2V(θ)]

{\rm min}_\ [B(\theta)+\lambda_{1}V(\theta)] \\{\rm min}_\ [B(\theta)+\frac{1}{\lambda_{2}}V(\theta)] \tag{2.3}

可见要使偏差和标准差同时达到最小,必须满足

λ1λ2=1(2.4)(2.4)λ1λ2=1

\lambda_{1} \lambda_{2}=1 \tag{2.4}

这是一个强条件,很难满足,所以偏差和标准差很难同时达到最小,要想减小标准差,往往要付出增加偏差的代价。
我们可以使用正则化,使训练集在一定限制下偏差最小(并不是之前的无限制最小偏差),从而以偏差增加的代价实现标准差减小。这是从频率论者的角度来看为什么要正则化。
正则化除了解决上述过拟合问题外,还具有限制权重幅值的作用,使权重幅值不过大。可以从这方面理解一下“正则化”名字的由来。


最后,怎样理解正则化?
在这里,我们从频率论者的角度,仔细分析正则化中的附加项怎样能够通过限制偏差,减小标准差的。了解了这个过程,就能明白正则化是怎样工作的。
工欲善其事,必先利其器。我们在这里首先简单介绍一下用到的工具——KKT方法。KKT方法是对Lagrange乘子法的推广,在支持向量机中被用来减小计算中的数据向量维数,与核函数有关(这个不知道也没有关系)。
假设有一函数,欲求其最小值,

min f(θ)(3.1)(3.1)minf(θ)

{\rm min} \ f(\theta) \tag{3.1}

约束为

{hi(θ)≤0  0≤i≤mgj(θ)=0  0≤j≤n(3.2)(3.2){hi(θ)≤00≤i≤mgj(θ)=00≤j≤n

\begin{cases} h_i(\theta) \leq 0 \ \ 0 \leq i \leq m \\ g_j(\theta) = 0 \ \ 0 \leq j \leq n \tag{3.2} \end{cases}

将 hi(θ) hi(θ)\ h_i(\theta) \ 和 gj(θ) gj(θ)\ g_j(\theta) \ 写成向量的形式, h⃗ (θ) h→(θ)\ \vec{h}(\theta) \ 和 g⃗ (θ) g→(θ)\ \vec{g}(\theta) \ ,类比Lagrange乘子法,构造函数

F(θ,α,β)=f(θ)+α⋅h⃗ (θ)+β⋅g⃗ (θ)(3.3)(3.3)F(θ,α,β)=f(θ)+α⋅h→(θ)+β⋅g→(θ)

F(\theta,\alpha,\beta)=f(\theta)+\alpha \cdot \vec{h}(\theta)+\beta \cdot \vec{g}(\theta) \tag{3.3}

将  ∂F∂θ=0 ∂F∂θ=0\ \frac{\partial F}{\partial \theta}=0 \ 的解 θ(α,β) θ(α,β)\ \theta(\alpha,\beta) \ 代入式(3.3),得到  F~(α,β) F~(α,β)\ \tilde{F}(\alpha,\beta) \ ,在一定约束下求其最大值,如式(3.4)所示,

{max F~(α,β)αi≥0  0≤i≤m(3.4)(3.4){maxF~(α,β)αi≥00≤i≤m

\begin{cases}{\rm max} \ \tilde{F}(\alpha,\beta) \\ \alpha_i \geq 0 \ \ 0 \leq i \leq m \tag{3.4} \end{cases}

在这里有一个神奇但又合理的结论,就是经变换后的式(3.4)与原问题式(3.1)(3.2)的解相同,他们是“dual problem”。这个结论如果难以相信,可以结合Lagrange乘子法理解一下,或者自己演算推导一下。
同时,在 F~(α,β) F~(α,β)\ \tilde{F}(\alpha,\beta) \ 最大值处,满足推论

α⋅h⃗ (θ)=0(3.5)(3.5)α⋅h→(θ)=0

\alpha \cdot \vec{h}(\theta)=0 \tag{3.5}

这个推论的意思是说,在最大值处, αi αi\ \alpha_i \ 和 hi(θ) hi(θ)\ h_i(\theta) \ 至少有一个值为0,如果 αi αi\ \alpha_i \ 的值不为0,那么 hi(θ) hi(θ)\ h_i(\theta) \ 的值一定为0。这个推论也需要理解一下。
以上是KKT方法的简单介绍。KKT方法及推论并不难,是Lagrange乘子法的推广,可以用类似Lagrange的方法理解。
说了这么多,KKT方法和正则化有什么关系?
我们知道,深度学习中的正则化有如下形式

L~(θ,α)=L(θ)+αΩ(θ)(3.6)(3.6)L~(θ,α)=L(θ)+αΩ(θ)

\tilde{L}(\theta ,\alpha) = L(\theta)+\alpha \Omega(\theta) \tag{3.6}

其中, L(θ) L(θ)\ L(\theta) \ 是损失函数, Ω(θ) Ω(θ)\ \Omega(\theta) \ 是正则化项, α α\ \alpha \ 是超参数, L~(θ,α) L~(θ,α)\ \tilde{L}(\theta ,\alpha) \ 是正则化后的损失函数。正则化前,通过计算损失函数梯度,更新权重 θ θ\ \theta \ 以得到训练集最小损失;正则化后,通过计算式(3.6)左侧的损失函数梯度,更新权重 θ θ\ \theta \ 以得到训练集在约束下的最小损失。
我们来看这个过程中 Ω(θ) Ω(θ)\ \Omega(\theta) \ 是怎样工作的。
类似式(3.3),令 ∂L~(θ,α)∂θ=0 ∂L~(θ,α)∂θ=0\ \frac{\partial \tilde{L}(\theta,\alpha)}{\partial \theta}=0 \ ,得到 θ(α) θ(α)\ \theta(\alpha) \ ,代入式(3.6)写成如下式(3.7)

{max L~(θ(α),α)α≥0 (3.7)(3.7){maxL~(θ(α),α)α≥0

\begin{cases}{\rm max} \ \tilde{L}(\theta(\alpha),\alpha) \\ \alpha \geq 0 \ \tag{3.7} \end{cases}

根据KKT方法,式(3.7)的解与下式(3.8)的解相同,

{min L(θ)Ω(θ)≤0 (3.8)(3.8){minL(θ)Ω(θ)≤0

\begin{cases}{\rm min} \ {L}(\theta) \\ \Omega(\theta) \leq 0 \ \tag{3.8} \end{cases}

可以看出正则化项 Ω(θ) Ω(θ)\ \Omega(\theta) \ 是原损失函数的一个约束。但是,这还不够。接下来我们将进一步看清楚 α α\ \alpha \ 的作用。
在深度学习过程中,超参数 α α\ \alpha \ 通常是大于0的给定值(如果等于0相当于没有正则化)。
在给定值下, α α\ \alpha \ 必须满足式(3.7)中的最大值条件,才能与式(3.8)等价。即

 ∂L~(θ(α),α)∂α=0(3.9)(3.9)∂L~(θ(α),α)∂α=0

\ \frac{\partial \tilde{L}(\theta(\alpha),\alpha)}{\partial \alpha}=0 \tag{3.9}

上式是KKT方法的要求。然而,实际上,对于给定值,当 α>0 α>0\ \alpha >0 \ 时,有

 ∂L~(θ(α),α)∂α=Ω(θ(α))(3.10)(3.10)∂L~(θ(α),α)∂α=Ω(θ(α))

\ \frac{\partial \tilde{L}(\theta(\alpha),\alpha)}{\partial \alpha}=\Omega(\theta(\alpha)) \tag{3.10}

(上式可能有点难,可以自己推导一下)
为了使式(3.10)满足式(3.9)的条件,从而满足KKT方法最大值条件的要求,我们做一个简单的变换。因为 α α\ \alpha \ 是定值,所以 Ω(θ(α)) Ω(θ(α))\ \Omega(\theta(\alpha)) \ 也是定值,令

Ω~(θ)=Ω(θ)−Ω(θ(α))(3.11)(3.11)Ω~(θ)=Ω(θ)−Ω(θ(α))

\tilde{\Omega}(\theta) = \Omega(\theta) - \Omega(\theta(\alpha)) \tag{3.11}

易知,使用了正则化项 Ω~(θ) Ω~(θ)\ \tilde{\Omega}(\theta) \ 的式(3.7)和(3.8)等价(将原来的 Ω Ω\ \Omega \ 换成 Ω~ Ω~ \ \tilde{\Omega} \ )。翻译成文字就是,正则化项使原目标函数在一定限制下取最小值,这个限制是由超参数 α α\ \alpha \ 和正则化项共同确定的。在限制下的最小值处,根据推论式(3.5),最佳权重一定在限制的边界。在深度学习的实际计算中,由于 Ω~(θ) Ω~(θ)\ \tilde{\Omega}(\theta) \ 和 Ω(θ) Ω(θ)\ \Omega(\theta) \ 只差一个常数,并不影响求损失函数最小值,所以不必求出这个常数也可以得到权重。这个变换是用来理解正则化的,不管有没有这一常数项,最终的取值都不变。
如果是L2正则化,易理解这个限制 Ω~(θ) Ω~(θ)\ \tilde{\Omega}(\theta) \ 就是把权重 θ θ\ \theta \ 的L2范数限制在由 α α\ \alpha \ 确定的幅值里。如果权重是三维的,那么这个限制范围是一个球。在原损失函数加限制后的最小值处,根据推论式(3.5),最佳权重的幅值一定在球上。 α α\ \alpha \ 在一定范围内变化时,球的幅值也跟着变化,因此可以选取合适的偏差代价,减小标准差,最终减小泛化误差。
由于我们讨论的是抽象的约束 Ω(θ) Ω(θ)\ \Omega(\theta) \ ,所以其他任何有关权重 θ θ\ \theta \ 约束也适用的。


例:
为了便于理解,我们继续拿L2正则化举例子。
式(1.1)是L2正则化。现在有一函数,在无正则化时的损失最小值点在点A,图中蓝绿红三色是其损失函数的等值线。假设模型过拟合了,也就是说 θ θ\ \theta \ 在训练集上与真实值的偏差小,但在验证集上与真实值的偏差大, θ θ\ \theta \ 的标准差大。根据前边的分析,我们试图对函数正则化,通过增大损失,改变权重 θ θ\ \theta \ 值,进而增大 θ θ\ \theta \ 的偏差,达到减小标准差,减小泛化误差的目的。

在训练模型时,我们往往选定式(1.1)中的 α α\ \alpha \ 值。根据“怎样理解正则化”中的分析,我们知道肯定存在一个常数k,使得

min J(ω;X,y)+α2(ωTω−k2)(4.1)(4.1)minJ(ω;X,y)+α2(ωTω−k2)

{\rm min} \ J(\omega ; X ,y)+\frac{\alpha}{2}({\omega}^T{\omega}-k^2) \tag{4.1}

{min J(ω;X,y)ωTω−k2≤0(4.2)(4.2){minJ(ω;X,y)ωTω−k2≤0

\begin{cases} {\rm min} \ J(\omega ; X ,y) \tag{4.2}\\ {\omega}^T{\omega}-k^2 \leq 0 \end{cases}

等价。
根据推论式(3.5),式(4.2)的原损失函数在约束下的最小值(也是新损失函数的最小值)在半径为k的圆上,是交点B。
我们进一步理解这个结果。老生常谈,我们是通过增大损失来增大 θ θ\ \theta \ 的偏差的,上述关系依赖于损失最小的地方的 θ 值θ值\ \theta \ 值与真实值的偏差最小。但是注意,同样的偏差,可能对应着不同大小的损失,也就是说我们有可能选择到尽可能小的损失增量,达到泛化误差小的偏差。以L2正则化为例,我们看到图中原来的损失函数在二维 θ θ\ \theta \ 的截面上是椭圆,所以过A点在 θ1 θ1\ \theta_1\ 的方向上的梯度小,过A点在 θ2 θ2\ \theta_2\ 方向的梯度大。也就是说,从A点,同样的 θ θ\ \theta \ 变化,对应着两个方向上不同的损失增加量, θ1 θ1\ \theta_1\ 的方向上损失增加量小, θ2 θ2\ \theta_2\ 的方向上损失增加量大。可以看出,在这张图中,L2正则化使原来的权重在 θ1 θ1\ \theta_1\ 的方向减小的多,在 θ2 θ2\ \theta_2\ 的方向上减小的少,使得损失函数增大得不多,是很合理的。


总结:我们通过KKT方法对正则化后的损失函数进行变换,深入分析了正则化项的作用。在以上分析中,正则化项只有一项。推广到两个和多个正则化项的情况,也可以通过KKT方法变换分析,过程与前述正文相同,你可以随心所欲用正则化方法施展神通。阅读以上四部分,相信你一定能理解深度学习中正则化是怎样工作的。

仓促写就,不足之处请指正。欢迎讨论。
 
 
参考书籍:
《深度学习》, Ian Goodfellow等, 人民邮电出版社;
《Numerical Recipes in C++》, William H.Press等, Cambridge University Press;


版权所有,转载请注明出处

理解深度学习中的正则化相关推荐

  1. AI圣经-深度学习-读书笔记(七)-深度学习中的正则化

    深度学习中的正则化 0 简介 机器学习中的一个核心问题是设计不仅在训练数据上表现好,而且能在新输入上泛化好的算法.采用显式减少测试误差(可能会增加训练误差)的策略称为正则化. 在深度学习的背景下,大多 ...

  2. 花书笔记:第07章 深度学习中的正则化

    花书笔记:第07章 深度学习中的正则化 7.1 参数范数惩罚 参数范数惩罚 Ω ( θ ) \Omega(\theta) Ω(θ) α ∈ [ 0 , ∞ ) \alpha \in [0,\infty ...

  3. 深入理解深度学习中的【卷积】和 feature map

    深入理解深度学习中的卷积和feature map        虽然深度学习和CNN的概念已经传遍大街小巷,本文还是说一说CNN中的卷积.        本文主要介绍卷积层的结构.下图显示了CNN中最 ...

  4. 深度学习中的正则化技术(附Python代码)

    作者:SHUBHAM JAIN 翻译:和中华 校对:丁楠雅 本文约3500字,建议阅读20分钟. 本文简单介绍了什么是正则化以及在深度学习任务中可以采用哪些正则化技术,并以keras代码具体讲解了一个 ...

  5. 正则化的通俗解释_干货|深度学习中的正则化技术概述(附Python+keras实现代码)...

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 介绍 数据科学研究者们最常遇见的问题之一就是怎样避免过拟合.你也许在训练模型的时候也遇 ...

  6. 深度学习中的正则化技术详解

    目录 基本概念 1. 参数范数惩罚 1.1 \(L^2\)正则化 1.2 \(L^1\)正则化 1.3 总结\(L^2\)与\(L^1\)正则化 2. 作为约束的范数惩罚 3. 欠约束问题 4. 数据 ...

  7. 读书笔记:深度学习中的正则化

    声明:读书笔记,未完成梳理,不值得参考. 阅读书籍:<深度学习>花书,第7章 正则化:对学习算法的修改--旨在减小泛化误差而不是训练误差. 个人描述:正则化项的目的是为了提升模型的泛化能力 ...

  8. 学习笔记:深度学习中的正则化

    点击上方"视学算法",星标公众号 重磅干货,第一时间送达 作者:草yang年华 一.正则化介绍 问题:为什么要正则化? NFL(没有免费的午餐)定理: 没有一种ML算法总是比别的好 ...

  9. 形象理解深度学习中八大类型卷积

    https://www.toutiao.com/a6657010098780504589/ 2019-02-12 15:26:40 本文总结了深度学习中常用的八大类型的卷积,以非常形象的方式帮助你建立 ...

最新文章

  1. CRM User Status profile中Business Transaction字段的用途
  2. SPringMVC使用总结
  3. python数值运算符也叫内置运算符_Python全栈工程师(数值类型、运算符)
  4. Internet上最危险的词语是什么?
  5. 配置mysql读写主从_Mysql主从配置,实现读写分离
  6. C++总结8——shared_ptr和weak_ptr智能指针
  7. 【脑电信号】基于matlab小波变换DWT脑电信号ECG去噪【含Matlab源码 1622期】
  8. 仿网易云和支付宝首页嵌套滑动
  9. 第四章 数据库安全性总结
  10. 华为OD机试题:工厂流水线调度
  11. SVN添加忽略文件规则
  12. oracle分区表创建——实现重新定义普通表为分区表
  13. oracle-经典图书收集
  14. 【C语言经典100例】 -- 28 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
  15. 一次内存泄露排查小结
  16. networkx计算边的重要性:边介数或者中介中心性edge_betweenness
  17. 演讲实录丨山世光 闲话AI时代的视觉智能
  18. dos命令_安装_环境变量day01
  19. 各级公安DNA实验室设计方案大全
  20. 常见Lidar点云数据处理及可视化软件汇总

热门文章

  1. 棠玥寕近照曝光,淡雅着装,盖不住魅力
  2. HEVC/H.265理论知识(2)——profile、level、tier
  3. 在ArcGIS中快速搭建三维场景教程(从数据获取到软件制作)
  4. draw.io软件添加常用字体
  5. selenium翻页获取京东图书名称和价格
  6. 因为造轮子,我一个月就转正了
  7. 针对部分16系显卡通过VS2017编译的YOLOV3测试成功但图像无检测框的问题:
  8. Java开发翻译系统
  9. Word embeddings-词向量
  10. Windows把桌面改到D盘 Win11怎么把桌面文件路径改到D盘