您的位置:首页 > 其它

机器学习正则化推导

2016-02-01 22:33 134 查看
作者:刑同沫璐

时间:2016年2月1日

出处:/article/10863646.html

声明:版权所有,转载请注明出处,谢谢。

  假设我们的损失函数为cost(w)cost(w)。

  如果不考虑正则化,我们的任务是:minmin cost(w)cost(w),沿着梯度一直下降,最后得到极值点对应的ww。

  


  但现在我们有一个先验知识:我们认为合理的ww应该小一点,不能太大。由于w是一个向量,所以表示为:||w||2≤C||w||^2\leq C,CC是一个常数。

  如果把边界||w||2=C||w||^2=C 比作一个圆圈,我们认为合理的ww应该在这个圆圈内部。

  


  所以我们的任务发生了变化:minmin cost(w),s.t.||w||2≤Ccost(w),s.t.||w||^2\leq C。

  如果把梯度下降比喻成一个小球在滚动,可以想象的到这个小球最后会在圈的右上角边缘滚动,原因很简单:那里离最小极值点最近,但苦于有圆圈的限制,小球滚不出圆的范围,所以只能在边缘滚动。

  什么时候停止滚动?

  球滚动的方向是梯度下降的方向:−∇cost(w)-\nabla cost(w)。那么只有这个方向平行于圆的法向量时才会停止,假设停止的点为 w∗w^*。

  


  w∗w^*处圆的法向量为 w∗w^*,梯度下降方向为−∇cost(w∗)-\nabla cost(w^*)。

  我们又知道向量a平行于向量b可以表示为:a=λba=\lambda b,因此:

  
[align=center]−∇cost(w∗)=λw∗-\nabla cost(w^*)=\lambda w^*
∇cost(w∗)+λw∗=0\nabla cost(w^*)+\lambda w^*=0[/align]

  反正λ\lambda是一个常数,我们修改一下方程,最后将它变为:

  ∇cost(w∗)+2λNw∗=0\nabla cost(w^*)+\frac{2\lambda}N w^*=0

  因此我们的任务变成了:求一个ww,使得∇cost(w)+2λNw=0\nabla cost(w)+\frac{2\lambda}N w=0

  对上式求积分:cost(w)+λN||w||2cost(w)+\frac{\lambda}N ||w||^2,我们的任务最终变成了:求cost(w)+λN||w||2cost(w)+\frac{\lambda}N ||w||^2的极小值点,λN||w||2\frac{\lambda}N ||w||^2就是正则化项,准确地讲就是l2正则,作用也很清楚了,使ww的范围变小。

  被我“忽悠”了这么久,你是否发现当初的CC是不是没有下文了?……minmin cost(w),s.t.||w||2≤Ccost(w),s.t.||w||^2\leq C。推导了半天,CC哪去了?

  这并不是疏忽,只是人们发现λ\lambda可以代替CC的作用。CC的作用很明显:限定ww的范围。

  那么λ\lambda怎么限定w的范围?

  我们注意到,cost(w)cost(w)是一个凸函数。

  


  在w0w_0处,坡度很陡峭,说明梯度下降方向−∇cost(w)-\nabla cost(w)的值很大;在w1w_1处,坡度略平缓,说明−∇cost(w)-\nabla cost(w)的变小了;在w2w_2处,−∇cost(w)-\nabla cost(w)的值几乎为0了。

  −∇cost(w)-\nabla cost(w)的图形如下:

  


  回头再看看:∇cost(w)+2λNw=0\nabla cost(w)+\frac{2\lambda}N w=0。

  转变一下上式:λw=−N2∇cost(w)\lambda w=-\frac N2 \nabla cost(w)。我们把λw\lambda w看做一条经过原点,且斜率为λ\lambda的直线,那么这条直线与−N2∇cost(w)-\frac N2\nabla cost(w)相交的地方,即为所得的极值点 w∗w^*。

  


  图中三条线分别为 w∗=w0,w1,w2w^*=w_0,w_1,w_2时的直线,可以看到w∗w^*越小,斜率越大,即λ\lambda越大。

  关键点来了,我们说 w∗w^*是圈上的一个点,那么圈的半径的平方C=||w∗||2C=||w^*||^2。所以λ\lambda越大,w∗w^*越小,CC越小。λ\lambda与CC近似反比,所以λ\lambda的确能替代CC,你调整λ\lambda的大小,变相在调整CC的大小,即限定ww的范围!

  了解了l2正则的完整流程,l1正则也就思路清晰了。

  ||w||||w||的图形如下图方框所示。

  


  还是小球在边缘滚动,且努力向梯度最低点滚动,此时你会发现,它最终不可避免地停在了正方形最上角。如果ww是一个2维向量(w(1),w(2))(w^{(1)},w^{(2)}),那么此时最小极值点w=(0,k),k>0w=(0,k),k>0。因此l1正则化可以实现特征稀疏,因为w(1)w^{(1)}为0后,cost(w)cost(w)只与w(2)w^{(2)}有关了。

  至于为什么小球会往最上角滚?

  因为原本的极值点w(1)w^{(1)}就比w(2)w^{(2)}小,所以小球“嫌贫爱富”地抛弃了w(1)w^{(1)}。所以l1正则化的实际意义在于:小球帮你选出了权重比较大的特征。

  


  本文参考于林轩田老师的《机器学习基石》。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: