Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

4.14 进阶:正则化

Numquam ponenda est pluralitas sine necessitate——“若无必要,勿增实体。”——奥卡姆的威廉

让学到的权重与训练数据完美匹配会带来问题。如果某个特征碰巧只出现在一个类别中,因而能完美预测结果,它就会获得非常大的权重。模型会试图过度完美地拟合训练集细节,连偶然与类别相关的噪声因素也一并建模。这个问题称为过拟合(overfitting)。好模型应能从训练数据很好地泛化到未见测试集,而过拟合模型的泛化能力很差。

为避免过拟合,在式 4.21 的损失函数中加入新的正则化项(regularization term)R(θ)R(\theta)。对一批 mm 个样本,目标变为(将最小化损失改写为最大化对数概率,并去掉不影响 argmax\operatorname{argmax}1/m1/m):

θ^=argmaxθi=1mlogP(y(i)x(i))αR(θ)(4.49)\hat\theta=\underset\theta{\operatorname{argmax}}\sum_{i=1}^m\log P(y^{(i)}\mid x^{(i)})-\alpha R(\theta)\tag{4.49}

R(θ)R(\theta) 用来惩罚大权重。因此,虽然一组权重能完美匹配训练数据,但如果为此使用许多大权重,它受到的惩罚会高于拟合略差、权重却较小的另一组设置。正则化强度(regularization strength)α\alpha 越高,模型权重越小,对训练数据的依赖也越弱。通常不对偏置项正则化,因为偏置充当阈值,有助于处理未中心化数据和类别先验。

计算 R(θ)R(\theta) 常用两种方法。L2 正则化(L2 regularization)是权重值的二次函数,因使用权重的 L2 范数平方而得名。L2 范数 θ2\|\theta\|_2 等于向量 θ\theta 到原点的欧氏距离。若 θ\theta 包含 nn 个权重:

R(θ)=θ22=j=1nθj2(4.50)R(\boldsymbol\theta)=\|\boldsymbol\theta\|_2^2=\sum_{j=1}^n\theta_j^2\tag{4.50}

L2 正则化后的目标函数为:

θ^=argmaxθ[i=1mlogP(y(i)x(i);θ)]αj=1nθj2(4.51)\hat\theta=\underset\theta{\operatorname{argmax}}\left[\sum_{i=1}^m\log P(y^{(i)}\mid x^{(i)};\theta)\right]-\alpha\sum_{j=1}^n\theta_j^2\tag{4.51}

L1 正则化(L1 regularization)是权重值的线性函数,因使用 L1 范数 θ1\|\theta\|_1 而得名。L1 范数是权重绝对值之和,也称曼哈顿距离:

R(θ)=θ1=i=1nθi(4.52)R(\theta)=\|\theta\|_1=\sum_{i=1}^n|\theta_i|\tag{4.52}

L1 正则化后的目标函数为:

θ^=argmaxθ[i=1mlogP(y(i)x(i);θ)]αj=1nθj(4.53)\hat\theta=\underset\theta{\operatorname{argmax}}\left[\sum_{i=1}^m\log P(y^{(i)}\mid x^{(i)};\theta)\right]-\alpha\sum_{j=1}^n|\theta_j|\tag{4.53}

这些正则化方法源于统计学:L1 正则化称为 lasso 回归(Tibshirani, 1996),L2 正则化称为岭回归(ridge regression),两者都常用于语言处理。L2 的导数简单(θ2\theta^2 的导数是 2θ2\theta),因而更容易优化;L1 则更复杂,因为 θ|\theta| 的导数在零点不连续。不过,L2 偏好包含许多小权重的向量,L1 偏好稀疏解,即保留少数较大权重、把更多权重置零。因此,L1 会产生稀疏得多的权重向量,也就是使用少得多的特征。两种正则化通常都忽略偏置项,只考虑其他权重。

L1 和 L2 也可以作贝叶斯解释,视为对权重先验分布的约束。L1 相当于给权重施加拉普拉斯先验;L2 相当于假设权重服从均值 μ=0\mu=0 的高斯分布。高斯分布中,值离均值越远,概率越低(其尺度由方差 σ2\sigma^2 决定)。因此,高斯权重先验表达了“权重偏好取 0”的假设。权重 θj\theta_j 的高斯分布为:

12πσj2exp((θjμj)22σj2)(4.54)\frac1{\sqrt{2\pi\sigma_j^2}}\exp\left(-\frac{(\theta_j-\mu_j)^2}{2\sigma_j^2}\right)\tag{4.54}

将每个权重乘以相应高斯先验,就要最大化:

θ^=argmaxθi=1mP(y(i)x(i))×j=1n12πσj2exp((θjμj)22σj2)(4.55)\hat\theta=\underset\theta{\operatorname{argmax}}\prod_{i=1}^mP(y^{(i)}\mid x^{(i)})\times\prod_{j=1}^n\frac1{\sqrt{2\pi\sigma_j^2}}\exp\left(-\frac{(\theta_j-\mu_j)^2}{2\sigma_j^2}\right)\tag{4.55}

转到对数空间,令 μ=0\mu=0 并假设 2σ2=12\sigma^2=1,便得到:

θ^=argmaxθi=1mlogP(y(i)x(i))αj=1nθj2(4.56)\hat\theta=\underset\theta{\operatorname{argmax}}\sum_{i=1}^m\log P(y^{(i)}\mid x^{(i)})-\alpha\sum_{j=1}^n\theta_j^2\tag{4.56}

这与式 4.51 形式相同。