作为约束的范数惩罚

考虑经过参数范数正则化的代价函数

J~(θ;X,y)=J(θ;X,y)+αΩ(θ)\tilde{J}(\theta;X,y) = J(\theta;X,y)+\alpha\Omega(\theta)

我们可以构造广义拉格朗日函数来最小化带约束的函数,即在原始目标函数上添加一系列惩罚项。每个惩罚使一个KKT乘子的系数以及一个表示约束是否满足的函数之间的乘积。如果想约束 Ω(θ)\Omega(\theta) 小于某个常数 kk ,我们可以构建广义拉格朗日函数

L(θ,α;X,y)=J(θ;X,y)+α(Ω(θ)k)\mathcal{L}(\theta,\alpha;X,y) = J(\theta;X,y)+\alpha(\Omega(\theta)-k)

这个约束问题的解:

θ=argminθmaxα,α0L(θ,α)\theta^*=\mathop{\arg\min}\limits_{\theta}\max\limits_{\alpha,\alpha\geq0}\mathcal{L}(\theta,\alpha)

要解决这个问题,我们需要对 θ\thetaα\alpha 都做出调整。有许多不同的优化方法,有些可能会使用梯度下降而其他可能会使用梯度为 00 的解析解,但在所有过程中 α\alphaΩ(θ)>k\Omega(\theta)>k 时必须增加,在 Ω(θ)<k\Omega(\theta)<k 时必须减小。所有正值的 α\alpha 都鼓励 Ω(θ)\Omega(\theta) 收缩。最优值 α\alpha^* 也将鼓励 Ω(θ)\Omega(\theta) 收缩,但不会强到使得 Ω(θ)\Omega(\theta) 小于 kk

为了洞察约束的影响,我们可以固定 α\alpha^* ,把这个问题看成只跟 θ\theta 有关的函数:

θ=argminθL(θ,α)=argminθJ(θ;X,y)+αΩ(θ)\theta^*=\mathop{\arg\min}\limits_{\theta}\mathcal{L}(\theta,\alpha^*)=\mathop{\arg\min}\limits_{\theta}J(\theta;X,y)+\alpha^*\Omega(\theta)

这和最小化 J~\tilde{J} 的正则化训练问题是完全一样的。因此,我们可以把参数范数惩罚看作对权重强加的约束。如果 Ω\OmegaL2L^2 范数,那么权重就是被约束在一个 L2L^2 球中。如果 Ω\OmegaL1L^1 范数,那么权重就是被约束在一个 L1L^1 范数限制的区域中。通常我们不知道权重衰减系数 α\alpha^* 约束的区域大小,因为 α\alpha^* 的值不直接告诉我们 kk 的值。原则上我们可以解得 kk ,但 kkα\alpha^* 之间的关系取决于 JJ 的形式。虽然我们不知道约束区域的确切大小,但可以通过增加或减小 α\alpha 来大致扩大或收缩约束区域。较大的 α\alpha ,将得到一个较小的约束区域。较小的 α\alpha ,将得到一个较大的约束区域。

有时候,我们希望使用显式的限制,而不是惩罚。我们可以修改下降算法(如随机梯度下降算法),使其先计算 J(θ)J(\theta) 的下降步,然后将 θ\theta 投影到满足 Ω(θ)<k\Omega(\theta)<k 的最近点。如果我们知道什么样的 kk 是合适的,而不是花时间寻找对应于此 kk 处的 α\alpha 值,这会非常有用。

另一个使用显式约束和重投影而不是使用惩罚强加约束的原因是,惩罚可能会导致目标函数非凸而使算法陷入局部极小。当训练神经网络时,这通常表现为训练带有几个“死亡单元”的神经网络。这些单元不会对网络学到的函数有太大影响,因为进入或离开它们的权重都非常小。当使用权重范数的惩罚训练时,即使可以通过增加权重以显著减少 JJ ,这些配置也可能是局部最优的。因为重投影实现的显示约束不鼓励权重接近原点,所以在这些情况下效果更好。通过重投影实现的显式约束只在权重变大并试图离开限制区域时产生作用。

最后,因为重投影的显式约束还对优化过程增加了一定的稳定性,所以这是另一个好处。当使用较高的学习率时,很可能进入正反馈,即大的权重诱导大梯度,然后使得权重获得较大更新。如果这些更新持续增加权重的大小, θ\theta 就会迅速增大,直到离原点很远而发生溢出。重投影的显式约束可以防止这种反馈环引起权重无限制地持续增加。

Last updated