[ML Notes] 线性回归:正则化

1. L2 正则化,岭回归

  对如前文所述的线性模型 $f(\boldsymbol{x})$ 和代价函数 $J(\boldsymbol{w})$

$$
f(\boldsymbol x) = w_0 + w_1 x_1 + w_2 x_2 + \cdots + w_n x_n = w_0 + \sum_{i=1}^n w_i x_i = \boldsymbol{w}^\mathrm{T} \boldsymbol{x} \tag{1}
$$

$$
J(\boldsymbol{w}) = \frac{1}{2} \sum_{i=1}^m \big( y^{(i)} – f(\boldsymbol{x}^{(i)}) \big)^2 \tag{2}
$$

岭回归(Ridge Regression)通过在代价函数上添加一个额外的项 $\frac{1}{2} \alpha \sum\limits_{i=1}^n w_i^2$,来缩小模型参数,此时代价函数变为

$$
J_{\mathrm{ridge}}(\boldsymbol{w}) = \frac{1}{2} \sum_{i=1}^m \big( y^{(i)} – f(\boldsymbol{x}^{(i)}) \big)^2 + \frac{1}{2} \alpha \sum\limits_{i=1}^n w_i^2 \tag{3}
$$

其中 $\alpha$ 为正则化系数,$\sum\limits_{i=1}^n w_i^2$ 为参数 $\boldsymbol{w}$ 的 L2 范数的平方,即 $||\boldsymbol{w}||_2^2 = \boldsymbol{w}^\mathrm{T} \boldsymbol{w}$。注意这里的 $i$ 从 $1$ 开始,不对偏置 $w_0$ 进行正则化。

  使用前文的符号,式 $(1)$ 和式 $(3)$ 又可以写成

$$
\boldsymbol{f}(X) = X \boldsymbol{w} \tag{4}
$$

$$
\begin{aligned}
J_{\mathrm{ridge}}(\boldsymbol{w}) &= \frac{1}{2}||\boldsymbol{y} – X \boldsymbol{w}||_2^2 + \frac{1}{2} \alpha ||\boldsymbol{w}||_2^2 \\
&= \frac{1}{2} (\boldsymbol{y} – X \boldsymbol{w})^\mathrm{T} (\boldsymbol{y} – X \boldsymbol{w}) + \frac{1}{2} \alpha \boldsymbol{w}^\mathrm{T} \boldsymbol{w}
\end{aligned} \tag{5}
$$

类似地,计算梯度

$$
\begin{aligned}
\nabla_{\boldsymbol{w}} J_{\mathrm{ridge}}(\boldsymbol{w}) &= X^\mathrm{T}X \boldsymbol{w} – X^\mathrm{T}\boldsymbol{y} + \alpha \boldsymbol{w} \\
&= (X^\mathrm{T}X + \alpha \boldsymbol{I}) \boldsymbol{w} – X^\mathrm{T}\boldsymbol{y}
\end{aligned} \tag{6}
$$

令 $\nabla_{\boldsymbol{w}} J_{ridge}(\boldsymbol{w}) = 0$,有

$$
(X^\mathrm{T}X + \alpha \boldsymbol{I}) \boldsymbol{w} – X^\mathrm{T}\boldsymbol{y} = 0
$$

$$
(X^\mathrm{T}X + \alpha \boldsymbol{I}) \boldsymbol{w} = X^\mathrm{T}\boldsymbol{y}
$$

$$
\boldsymbol{w} = (X^\mathrm{T}X + \alpha \boldsymbol{I})^{-1} X^\mathrm{T}\boldsymbol{y} \tag{7}
$$

注意只对权重 $w_1, w_2, \cdots, w_n$ 进行正则化,而不对偏置 $w_0$ 作正则化,因此上式中的 $\boldsymbol{I}$ 是一个 $n \times n$ 的单位矩阵,但左上角的元素为 $0$。

2. L1 正则化,Lasso 回归

  Lasso 回归使用权重 L1 范数作为正则化项,此时的代价函数为

$$
J_{\mathrm{lasso}}(\boldsymbol{w}) = \frac{1}{2} \sum_{i=1}^m \big( y^{(i)} – f(\boldsymbol{x}^{(i)}) \big)^2 + \alpha \sum_{i=1}^n |w_i| \tag{8}
$$

或者写为

$$
\begin{aligned}
J_{\mathrm{lasso}}(\boldsymbol{w}) &= \frac{1}{2}||\boldsymbol{y} – X \boldsymbol w ||_2^2 + \alpha ||\boldsymbol{w}||_1 \\
&= \frac{1}{2} (\boldsymbol{y} – X \boldsymbol{w})^\mathrm{T} (\boldsymbol{y} – X \boldsymbol{w}) + \alpha \sum_{i=1}^n |w_i|
\end{aligned} \tag{9}
$$

其梯度为

$$
\nabla J_{\mathrm{lasso}}(\boldsymbol{w}) = \nabla J(\boldsymbol{w}) + \alpha \sum_{i=1}^n \mathrm{sign}(w_i) \tag{10}
$$

其中

$$
\mathrm{sign}(w_i) = \begin{cases}
-1 & \mathrm{if} \; w_i < 0 \\
0 & \mathrm{if} \;w_i = 0 \\
1 & \mathrm{if} \; w_i > 0 \\
\end{cases}
$$