深度学习之正则化

1 概念

机器学习的一个核心问题是设计一个不仅在训练数据集上表现好,而且在新输入的数据集上泛化好的算法。在机器学习中,很多策略被显式地设计来减少测试误差(可能会以增大训练误差为代价)。这些策略统称为正则化。

2 常用正则化策略

2.1 参数范数惩罚

许多正则化方法通过对目标函数(损失函数)JJ 添加一个参数范数惩罚Ω(ω)\Omega (\boldsymbol{\omega} ),限制模型的学习能力。将正则化之后的目标函数记为 J~\tilde{J}

J~(ω;X,y)=J(ω;X,y)+αΩ(ω)\tilde{J}(\boldsymbol{\omega}; \textbf{X}, \textbf{y}) = J(\boldsymbol{\omega }; \textbf{X}, \textbf{y}) + \alpha \Omega(\boldsymbol{\omega} )

其中 α\alpha 是权衡范数惩罚项 Ω\Omega 和标准目标函数 JJ 相对贡献的超参数。将 α\alpha 设置为0,表示没有正则化,α\alpha 越大,对应正则化惩罚越大。

L2L^2参数正则化

我们对参数使用L2L^2参数范数惩罚,令 Ω(ω)=12ωTω\Omega(\boldsymbol{\omega}) = \frac{1 }{2}\boldsymbol{\omega} ^T \boldsymbol{\omega},得到正则化后的目标函数:

J~(ω;X,y)=J(ω;X,y)+α2ωTω\tilde{J}(\boldsymbol{\omega}; \textbf{X}, \textbf{y}) = J(\boldsymbol{\omega }; \textbf{X}, \textbf{y}) + \frac{\alpha }{2}\boldsymbol{\omega} ^T \boldsymbol{\omega}

从直观的角度看,我们在原来的目标函数 JJ 的基础上增加了一个非 0 项,所以我们在最小化新的目标函数 J~\tilde{J} 时,也要最小化α2ωTω\frac{\alpha }{2}\boldsymbol{\omega} ^T \boldsymbol{\omega}, 为了达到这个目的,ω\boldsymbol{\omega} 的每一个值需要尽可能地分布在 0 的周围(尽可能地接近0)。
从理性的角度看,新的目标函数 J~\tilde{J} 对应的梯度为

wJ~(ω;X,y)=wJ(ω;X,y)+αω\bigtriangledown _w \tilde{J}(\boldsymbol{\omega}; \textbf{X}, \textbf{y}) = \bigtriangledown _w J(\boldsymbol{\omega }; \textbf{X}, \textbf{y}) + \alpha \boldsymbol{\omega}

使用梯度下降更新权重

ω=ωϵ(wJ~(ω;X,y))=ωϵ(wJ(ω;X,y)+αω)=(1ϵα)ωϵ(wJ(ω;X,y)\begin{aligned} \boldsymbol{\omega} &= \boldsymbol{\omega} - \epsilon (\bigtriangledown _w \tilde{J}(\boldsymbol{\omega}; \textbf{X}, \textbf{y})) \\ &= \boldsymbol{\omega} - \epsilon (\bigtriangledown _w J(\boldsymbol{\omega }; \textbf{X}, \textbf{y}) + \alpha \boldsymbol{\omega}) \\ &= (1 - \epsilon \alpha )\boldsymbol{\omega} - \epsilon (\bigtriangledown _w J(\boldsymbol{\omega }; \textbf{X}, \textbf{y}) \end{aligned}

从这个推导结果来说,L2L^2参数范数惩罚引起了学习规则的修改,在每次执行梯度更新之前会先收缩权重向量,这就使得权重会越来越趋近于0。

L1L^1 参数正则化

L1L^1 参数正则化是指对参数使用L1L^1参数范数惩罚,令 Ω(ω)=ω1=iω\Omega(\boldsymbol{\omega}) = \left \| \boldsymbol{\omega} \right \|_1 = \sum _i \left | \omega \right | 得到正则化后的目标函数

J~(ω;X,y)=J(ω;X,y)+αω1\tilde{J}(\boldsymbol{\omega}; \textbf{X}, \textbf{y}) = J(\boldsymbol{\omega }; \textbf{X}, \textbf{y}) + \alpha \left \| \boldsymbol{\omega} \right \|_1

其梯度为

wJ~(ω;X,y)=wJ(ω;X,y)+αsign(ω)\bigtriangledown _w \tilde{J}(\boldsymbol{\omega}; \textbf{X}, \textbf{y}) = \bigtriangledown _w J(\boldsymbol{\omega }; \textbf{X}, \textbf{y}) + \alpha sign(\boldsymbol{\omega})

其中 sign(ω)sign(\boldsymbol{\omega}) 只是选取了 ω\boldsymbol{\omega} 的正负号。
使用梯度下降更新权重

ω=ωϵ(wJ~(ω;X,y))=ωϵ(wJ(ω;X,y)+αsign(ω))=ωϵ(wJ(ω;X,y))ϵαsign(ω)\begin{aligned} \boldsymbol{\omega} &= \boldsymbol{\omega} - \epsilon (\bigtriangledown _w \tilde{J}(\boldsymbol{\omega}; \textbf{X}, \textbf{y})) \\ &= \boldsymbol{\omega} - \epsilon (\bigtriangledown _w J(\boldsymbol{\omega }; \textbf{X}, \textbf{y}) + \alpha sign(\boldsymbol{\omega}) ) \\ &= \boldsymbol{\omega} - \epsilon (\bigtriangledown _w J(\boldsymbol{\omega }; \textbf{X}, \textbf{y})) - \epsilon \alpha sign(\boldsymbol{\omega}) \end{aligned}

这相当于,在原来权重变化的基础上再修正一下。假设原来的权重是正的,那么修正的过程就是在之前的权重减去一个正数,权重就会更接近 0 直到等于 0 ,假设原来的权重是负的,那么修正的过程就是在之前的权重减去一个负数,权重也会接近 0 直到等于 0 。

对比 L2L^2L1L^1 参数正则化

两种参数正则化方式对权重影响的角度不同,L2L^2 参数正则化会对权重进行收缩,所以产生的权重会更加接近 0 , 但是因为是收缩变化,相比未正则化的损失函数不会产生更多的等于 0 的权重。而 L1L^1 参数正则化是对权重进行趋近于0加减修正,会产生更多等于0的权重。

权重参数的绝对值越小,离群点(奇异值)对模型的影响就会越小,就会减少过拟合问题。
同样,在深度学习中,权重为 0 的单元并不参与预测,等于变相地缩减了神经网络,也可以减少过拟合问题、
(花书上使用 Hessian 矩阵的解释没懂, 这样解释似乎也可以)。

2.2 数据集增强

让机器学习模型泛化得好的最好的办法使使用更多的数据进行训练。当然,数据通常都是有限的。不过我们可以通过现有数据制造一些新的数据,比如在图片分类问题中,对图片进行翻转,旋转,适当调节亮度等操作并不会改变label,但是却可以得到新的训练数据。这取决于工程师对数据的理解和解读。

2.3 Dropout正则化

简单理解Dropout就是随机地删除深度神经网络的某些单元,以达到简化网络模型的目的,从而减少过拟合。

阅读(103)
评论(0)
updated@2021-05-18
评论区
目录