在很多场景都遇到\(L_1,L_2\)正则化,但是一直不知道这二者具体是什么原理,最近看了相关教程,记录一下。希望也能帮到还不懂的朋友😬。
前置技能
范数
数(norm)是数学中的一种基本概念。在泛函分析中,它定义在赋范线性空间中,并满足一定的条件,即①非负性;②齐次性;③三角不等式。它常常被用来度量某个向量空间(或矩阵)中的每个向量的长度或大小。
我们从向量范数开始。
向量范数
1-范数为向量各元素绝对值之和。
\[||X||_1 = \sum_{i=1}^n |x_i|
\]
2-范数为各元素平方和开根号。
\[||X||_2 = \sqrt{\sum_{i=1}^n x_i^2}
\]
\(\infty-\)范数为最大元素。
\[||X||_{\infty} = \max_{1 \leq i \leq n} |x_i|
\]
\(p-\)范数。
\[||X||_p = (\sum_{i=1}^n |x_i|^p)^{\frac{1}{p}}
\]
对比上面的几种情况,满足\(p-\)范数向1和无穷的推广。
矩阵范数
\(L_0\)范数,定义为矩阵中的非零元素个数。
\[L_0 = \sum_{i,j} [a_{ij} \neq 0]
\]
\(L_1\)范数,矩阵中的每个元素绝对值之和,它是\(L_0\)范数的最优凸近似,因此它也可以近似表示稀疏。
\[L_1 = \sum_{i,j}|a_{ij}|
\]
\(F\)范数,矩阵的各个元素平方之和再开平方根,它通常也叫做矩阵的\(L_2\)范数。
\[L_2 = \sqrt{\sum_{i,j}a_{ij}^2}
\]
矩阵1-范数,矩阵的每一列上的元素绝对值先求和,再从中取个最大的(列和最大)。
\[||A||_1 = \max_{1 \leq j \leq n} \sum_{i=1}^m |a_{ij}|
\]
矩阵2-范数,协方差矩阵的特征值的绝对值最大值开根号。
\[||A||_2 = \sqrt{\max_{1 \leq i \leq n} |\lambda_i|}
\]
其中\(\lambda\)为\(A^T A\)的特征值。
矩阵无穷范数,矩阵的每一行上的元素绝对值先求和,再从中取个最大的(行和最大)。
\[||A||_{\infty} = \max_{1 \leq i \leq n} \sum_{j=1}^{m} |a_{ij}|
\]
样本分布
高斯分布
高斯分布又称正态分布,其概率密度函数表示如下。
\[f(x) = \frac{1}{\sigma \sqrt{2 \pi} } e^{- \frac{(x-\mu)^2}{2 \sigma ^2}}
\]
可以用\(x \sim N(\mu, \sigma ^2)\)来表示,其中\(\mu, \sigma\)分别是均值和标准差。
当均值为0,方差为1时,称其为标准正态分布。
拉普拉斯分布
Laplace分布的概率密度函数的形式如下。
\[p(x) = \frac{1}{2 \lambda} e ^{- \frac{|x-\mu|}{\lambda}} \tag{1}
\]
它是由两个指数函数组成的,所以又叫做双指数函数分布。式中均值为\(\mu\),方差为\(2 \lambda ^2\)。
Hessian矩阵
一元函数的泰勒展开为
\[f(x) = f(x_0) + \frac{f'(x_0)}{1!}(x - x_0) + \frac{f '' (x_0)}{2!}(x-x_0)^2 + ... + \frac{f^{(n)}(x_0)}{n!}(x-x_0)^n\\
= \sum_{i=0}^{n} \frac{f^{(i)}(x_0)}{i!} (x-x_0)^i
\]
如果将其扩展到多元函数,我们只要用偏导就可以,\(i\)次幂的系数是从\(m\)个参量中选出\(i\)个求偏导。
下面我们主要研究在多元参数的情况下二阶泰勒展开是什么样的。二元函数\(f\)在\(x^*\)处展开的二次项为
\[\frac{1}{2}((x_1-x_1^{*})^2 g_{x_1,x_1}(x^*) + (x_2 - x_2^*)^2 g_{x_2,x_2}(x^*) \\+ (x_1 - x_1^*)(x_2 - x_2^*) g_{x_1,x_2}(x^*) + (x_2 - x_2^*)(x_1-x_1^*)g_{x_2,x_1}(x^*) )
\]
其中,\(x_1^*\)为\(x^*\)的参数\(x_1\),\(x_2^*\)为\(x^*\)的参数\(x_2\),\(g_{x_i,x_j}\)为\(\frac{\partial ^2 f}{\partial x_i \partial x_j}\)。上式写为矩阵形式为
\[\frac{1}{2}(x - x^*)^T
\begin{bmatrix}
\frac{\partial ^2 f}{\partial x_1^2} & \frac{\partial ^2 f}{\partial x_1 \partial x_2}\\
\frac{\partial ^2 f}{\partial x_2 \partial x_1} & \frac{\partial ^2 f}{\partial x_2^2}
\end{bmatrix}
(x-x^*)\\
= \frac{1}{2}(x-x^*)^T H (x - x^*)
\]
其中\(H\)为Hessian矩阵。多元Hessian矩阵定义如下:
\[H(f) = \begin{bmatrix}
\frac{\partial ^2 f}{\partial x_1^2} & \frac{\partial ^2 f}{\partial x_1 \partial x_2} & ...& \frac{\partial ^2 f}{\partial x_1 \partial x_n}\\
\frac{\partial ^2 f}{\partial x_2 \partial x_1} & \frac{\partial ^2 f}{\partial x_2^2} & ...& \frac{\partial ^2 f}{\partial x_2 \partial x_n}\\
\vdots & \vdots & \ddots & \vdots \\
\frac{\partial ^2 f}{\partial x_n \partial x_1} & \frac{\partial ^2 f}{\partial x_n \partial x_2} & \cdots & \frac{\partial ^2 f}{\partial x_n^2}
\end{bmatrix} \tag{2}
\]
对于任意多元函数,在\(x^*\)处二阶可导,我们作二阶泰勒展开可以得到
\[f(x) = f(x^{*}) + \frac{1}{2!}(x - x^{*})^T H (x - x^*) \tag{3}
\]
正则化
机器学习中,有一个常见的问题就是由于模型太复杂而引发的过拟合,大大降低了模型对未知数据的泛化能力,而解决过拟合的方法其实很多,比如dropout等。
正则化也是用来解决过拟合的,它会控制模型复杂度,基本方法是在原目标函数中加入一个惩罚项,目的是在最值化目标函数的同时减小模型复杂度,从而降低过拟合的程度。
\[\tilde{J}(w;X,y) = J(w; X,y) + \alpha \Omega(w) \tag{4}
\]
\(J\)为原目标函数,\(X,y\)分别是数据输入和数据标签,\(w\)为权重,\(\alpha\)系数用来控制在目标函数种惩罚项的比重,\(\tilde J\)为改进后的目标函数。根据\(\Omega\)函数选择不同,有\(L_1\)正则化、\(L_2\)正则化两种。
\(L_1\)正则化:
\[\Omega(w) = ||w||_1 = \sum_i |w_i|
\]
\(L_2\)正则化:
\[\Omega(w) = ||w||_2 = \sqrt{ \sum_i |w_i|^2}
\]
两种解释
基于约束条件的最优化
根据上述说法,我们希望在原本目标函数\(J\)最小化的同时也最小化模型复杂度。加入约束条件后:
\[\min_w J(w; X,y)\\
s.t.||w||_0 \leq C
\]
用来表示惩罚项的\(\Omega\)函数选择\(L_0\)范数是非常合适的,但是实际我们的权重很少会有0,我们应当将一些足够小的数字作0处理,可以使用\(L_1,L_2\)范数。为了方便,后面计算\(L_2\)正则化的时候将采用\(L_2^2\)。
\[\min_w J(w; X, y)\\
s.t.||w||_1 \leq C
\]
或者
\[\min_w J(w;X,y)\\
s.t. ||w||_2^2 \leq C
\]
利用拉格朗日乘子法构造拉格朗日函数。
\[L(w, \alpha) = J(w;X,y) + \alpha (||w||_1 - C)
\]
或
\[L(w, \alpha) = J(w;X,y) + \alpha (||w||_2^2 - C)
\]
要最小化\(L(w, \alpha)\),就等同于下面式子:
\[\min _w J(w; X,y) + \alpha^{*} ||w||_1
\]
或
\[\min _w J(w; X,y) + \alpha^{*} ||w||_2^2
\]
其中\(\alpha^{*}\)为\(\alpha\)的最优解。
最大后验概率估计
假设权重系数\(w\)是未知参数,\(y\)服从高斯分布,\(y^i \sim N(w^T x^i, \sigma ^2)\),那么
\[P(y|X,w) = \prod_i p(y^i|x^i,w) = \prod_i \frac{1}{\sigma \sqrt{2 \pi}}e^{- \frac{(y^i - w^T x^i)^2}{2 \sigma ^2}}
\]
求得对数似然函数
\[l(w) = \log P(y|X,w) = - \sum_i \frac{1}{2 \sigma ^2} (y^i - w^T x^i)^2 + C
\]
因为\(C\)为常数项,所以这一部分最小化\(-l(w)\),也就是原始的目标函数,最小平方差。
在最大后验概率中(MAP),将\(w\)看作随机变量。
\[P(w|X,y) = \frac{P(w, X, y)}{P(X,y)} = \frac{P(y|X,w) P(w)}{P(X,y)} \propto P(y|X,w)P(w)
\]
取对数后
\[MAP = \log P(y|X,w) + \log P(w)
\]
其中第一项已经计算出,我们对权重系数\(w\)作不同的分布假设可以得到不一样的正则化公式。
假设\(w\)服从正态分布
假设\(w\)服从正态分布,均值为0,方差为\(\sigma ^2\)。
\[P(w) = \prod_j p(w_j) = \prod_j \frac{1}{\sigma \sqrt{2 \pi}} e^{-\frac{w_j^2}{2 \sigma ^2}}
\]
取对数后
\[\log P(w) = - \frac{1}{2 \sigma^2} \sum_j w_j^2 + C'
\]
那么最大化MAP等同于
\[\min_w l(w) + \frac{1}{2 \sigma^2} \sum_j w_j^2
\]
这是符合我们平方后的\(L_2\)范数形式的。
假设\(w\)服从拉普拉斯分布
若假设\(w\)服从均值为0、方差为\(2 \lambda^2\)的拉普拉斯分布。
\[p(w_j) = \frac{1}{2 \lambda} e ^{- \frac{|w_j|}{\lambda}}
\]
则
\[\log P(w) = \log \prod_j \frac{1}{2 \lambda} e^{- \frac{|w_j|}{\lambda}} = - \frac{1}{\lambda} \sum_j |w_j| + C'
\]
最大化MAP等同于
\[\min_w l(w) + \alpha \sum_j |w_j|
\]
理论推导
假设原目标函数\(J(w)\)具有最有的权重系数解为\(w^{*}\),其该点处二阶可导,在这里泰勒展开,且一阶导为0,所以有
\[\hat J(w) = J(w^{*}) + \frac{1}{2!}(w - w^{*})^T H (w - w^*) \tag{5}
\]
加入惩罚项之后对\(w\)求导,得
\[\triangledown _w \tilde J(w) = \triangledown _w \hat J(w) + \triangledown _w \Omega(w) = H(w-w^*) + \alpha \triangledown _w \Omega (w) \tag{6}
\]
\(L_1\)正则推导
由\((6)\)式及\(L_1\)正则化
\[\triangledown _w \tilde J(w) = H(w - w^*) + \alpha sign(w)
\]
其中
\[sign(x) = \left \{ \begin{matrix} 1 & x \geq 0 \\ -1 & x < 0 \end{matrix} \right .
\]
假设\(\tilde w\)为\(\tilde J\)得最优解,那么有
\[H (\tilde w - w^*) + \alpha sign(\tilde w) = 0 \tag{7}
\]
为了简化讨论,下面我们假设\(w\)的各参数间没有相关性,\(H\)为一个对角阵(可以由PCA得到),此时我们新的目标函数为
\[\tilde J(w) = J(w) + \sum_i [\frac{1}{2} H_{ii} ( \tilde w_i - w_i^*)^2 + \alpha |\tilde w_i| ] \tag{8}
\]
由\((8)\)式我们可以得到:
- 和式中第一项是关于\(w_i^*\)对称的,第二项递增,所以最小化\(\tilde J(w)\)要求\(\tilde w_i < w_i^*\)。
- 当\(|\tilde w_i|\)不变,\(sign(\tilde w_i) = sign(w_i^*)\)的情况下和式的前一部分会比较小。
所以我们求解\((7)\)式可以得到
\[H_{ii}(\tilde w_i - w_i ^*) + \alpha sign(w_i^*) = 0
\]
\[\tilde w_i = - \frac{\alpha sign(w_i^*)}{H_{ii}} + w_i^*\\
= sign(w_i^*)(|w_i^*| - \frac{\alpha}{H_{ii}})
\]
当\(|w_i^{\ast}| - \frac{\alpha}{H_{ii} } < 0\),发现\(sign(\tilde w_i) \neq sign(w_i^*)\),与我们的推论相悖。所以
\[\tilde w_i = sign(w_i^*) \max \{ |w_i^*| - \frac{\alpha}{H_{ii}}, 0 \} \tag{9}
\]
由上面的计算可以发现,\(L_1\)正则化是原来最优解的基础上产生一个偏移,是某些元素变为0,从而产生稀疏性。
\(L_2\)正则推导
在\(L_2\)正则化中,\((6)\)式变为
\[\triangledown _w \tilde J(w) = H(w-w^*) + \alpha w
\]
设目标函数\(\tilde J\)的最优解为\(\tilde w\),那么
\[H(\tilde w - w ^*) + \alpha \tilde w = 0 \tag{10}
\]
考虑将\(H\)作特征值分解\(H = P \Lambda P ^T\),其中\(P\)为正交矩阵,求得
\[\tilde w = (H + \alpha I) ^{-1} H w^*\\
= (P \Lambda P^T + \alpha I)^{-1} P \Lambda P^T w ^*\\
= [P^{-1}(P \Lambda P^T + \alpha I)]^{-1} \Lambda P^T w^*\\
= P(\Lambda + \alpha I) ^{-1} \Lambda P^T w^*
\]
\[\tilde w = P(\Lambda + \alpha I)^{-1} \Lambda P^T w ^* \tag{11}
\]
由上式可以得出,\(\tilde w_i = \frac{\lambda_i}{\lambda_i + \alpha} w_i^*\),即\(L_2\)正则化是在原最优解上作缩放。当\(\lambda_i \ll \alpha\),缩放效果会很明显。
参考
向量与矩阵的范数
拉普拉斯分布
深入理解L1、L2正则化
L1正则化及其推导
Ian Goodfellow, Yoshua Bengio and Aaron Courville. Deep Learning.