7.2 作为约束的范数惩罚
考虑经过参数范数正则化的代价函数:
回顾第4.4节,我们可以构造一个广义Lagrange函数来最小化带约束的函数,即在原始目标函数上添加一系列惩罚项。每个惩罚是一个被称为Karush-Kuhn-Tucker(Karush-Kuhn-Tucker)乘子的系数以及一个表示约束是否满足的函数之间的乘积。如果想约束Ω(θ)小于某个常数k,我们可以构建广义Lagrange函数
这个约束问题的解由下式给出
如第4.4节中描述的,要解决这个问题,我们需要对θ和α都做出调整。第4.5节给出了一个带L2约束的线性回归实例。还有许多不同的优化方法,有些可能会使用梯度下降而其他可能会使用梯度为0的解析解,但在所有过程中α在Ω(θ)>k时必须增加,在Ω(θ)<k时必须减小。所有正值的α都鼓励Ω(θ)收缩。最优值α*也将鼓励Ω(θ)收缩,但不会强到使得Ω(θ)小于k。
为了洞察约束的影响,我们可以固定α*,把这个问题看成只跟θ有关的函数:
这和最小化的正则化训练问题是完全一样的。因此,我们可以把参数范数惩罚看作对权重强加的约束。如果Ω是L2范数,那么权重就是被约束在一个L2球中。如果Ω是L1范数,那么权重就是被约束在一个L1范数限制的区域中。通常我们不知道权重衰减系数α*约束的区域大小,因为α*的值不直接告诉我们k的值。原则上我们可以解得k,但k和α*之间的关系取决于J的形式。虽然我们不知道约束区域的确切大小,但可以通过增加或者减小α来大致扩大或收缩约束区域。较大的α,将得到一个较小的约束区域。较小的α,将得到一个较大的约束区域。
有时候,我们希望使用显式的限制,而不是惩罚。如第4.4节所述,我们可以修改下降算法(如随机梯度下降算法),使其先计算J(θ)的下降步,然后将θ投影到满足Ω(θ)<k的最近点。如果我们知道什么样的k是合适的,而不想花时间寻找对应于此k处的α值,这会非常有用。
另一个使用显式约束和重投影而不是使用惩罚强加约束的原因是,惩罚可能会导致目标函数非凸而使算法陷入局部极小(对应于小的θ)。当训练神经网络时,这通常表现为训练带有几个“死亡单元”的神经网络。这些单元不会对网络学到的函数有太大影响,因为进入或离开它们的权重都非常小。当使用权重范数的惩罚训练时,即使可以通过增加权重以显著减少J,这些配置也可能是局部最优的。因为重投影实现的显式约束不鼓励权重接近原点,所以在这些情况下效果更好。通过重投影实现的显式约束只在权重变大并试图离开限制区域时产生作用。
最后,因为重投影的显式约束还对优化过程增加了一定的稳定性,所以这是另一个好处。当使用较高的学习率时,很可能进入正反馈,即大的权重诱导大梯度,然后使得权重获得较大更新。如果这些更新持续增加权重的大小,θ就会迅速增大,直到离原点很远而发生溢出。重投影的显式约束可以防止这种反馈环引起权重无限制地持续增加。Hinton et al.(2012c)建议结合使用约束和高学习速率,这样能更快地探索参数空间,并保持一定的稳定性。
Hinton et al.(2012c)尤其推荐由Srebro and Shraibman(2005)引入的策略:约束神经网络层的权重矩阵每列的范数,而不是限制整个权重矩阵的Frobenius范数。分别限制每一列的范数可以防止某一隐藏单元有非常大的权重。如果我们将此约束转换成Lagrange函数中的一个惩罚,这将与L2权重衰减类似但每个隐藏单元的权重都具有单独的KKT乘子。每个KKT乘子分别会被动态更新,以使每个隐藏单元服从约束。在实践中,列范数的限制总是通过重投影的显式约束来实现。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论