机器学习正则化推导
2016-02-01 22:33
134 查看
作者:刑同沫璐
时间:2016年2月1日
出处:/article/10863646.html
声明:版权所有,转载请注明出处,谢谢。
假设我们的损失函数为cost(w)cost(w)。
如果不考虑正则化,我们的任务是:minmin cost(w)cost(w),沿着梯度一直下降,最后得到极值点对应的ww。
![](http://img.blog.csdn.net/20160201205558032)
但现在我们有一个先验知识:我们认为合理的ww应该小一点,不能太大。由于w是一个向量,所以表示为:||w||2≤C||w||^2\leq C,CC是一个常数。
如果把边界||w||2=C||w||^2=C 比作一个圆圈,我们认为合理的ww应该在这个圆圈内部。
![](http://img.blog.csdn.net/20160201212459012)
所以我们的任务发生了变化:minmin cost(w),s.t.||w||2≤Ccost(w),s.t.||w||^2\leq C。
如果把梯度下降比喻成一个小球在滚动,可以想象的到这个小球最后会在圈的右上角边缘滚动,原因很简单:那里离最小极值点最近,但苦于有圆圈的限制,小球滚不出圆的范围,所以只能在边缘滚动。
什么时候停止滚动?
球滚动的方向是梯度下降的方向:−∇cost(w)-\nabla cost(w)。那么只有这个方向平行于圆的法向量时才会停止,假设停止的点为 w∗w^*。
![](http://img.blog.csdn.net/20160201213447969)
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)是一个凸函数。
![](http://img.blog.csdn.net/20160201215426852)
在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)的图形如下:
![](http://img.blog.csdn.net/20160201220911039)
回头再看看:∇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^*。
![](http://img.blog.csdn.net/20160201221605940)
图中三条线分别为 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||的图形如下图方框所示。
![](http://img.blog.csdn.net/20160201222237228)
还是小球在边缘滚动,且努力向梯度最低点滚动,此时你会发现,它最终不可避免地停在了正方形最上角。如果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正则化的实际意义在于:小球帮你选出了权重比较大的特征。
![](http://img.blog.csdn.net/20160201222954492)
本文参考于林轩田老师的《机器学习基石》。
时间: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正则化的实际意义在于:小球帮你选出了权重比较大的特征。
本文参考于林轩田老师的《机器学习基石》。
相关文章推荐
- JavaScript第四课——数据类型(Number类型)
- IStat Menus 5.02 5.03 的注册码
- Java 阻塞的概念
- 深度学习之theano学习的一些网址
- 寒假作业之二(2)
- Plugin is too old,please update to a more recent version,or set ANDROID_DAILY_OVERRIDE environment v
- ADT Bundle 理解开发环境 & Eclipse工具使用技巧
- 如何在tomcat里为多个应用配置不同的访问端口
- POJ Fibonacii (矩阵快速幂)
- Python 10.4 struct
- GStreamer中文手册
- 无人值守安装linux
- 矩阵运算的重新理解
- Codeforces Round #311 (Div. 2)(A)贪心
- ubuntu创建快捷方式
- hadoop_7 : MapReduce续
- grep语法和正则表达式
- python学习笔记Day3
- JavaScript 使用
- FTP服务器架设(2)vsftpd 安装