讲你肯定能懂的机器学习多维极值求解

如需转载请联系听云College团队成员小尹 邮箱:yinhy#tingyun.com

讲你肯定能懂的机器学习多维极值求解

事先说明

本文面向学习过高等数学统计学和线性代数基础知识的本科生,并假设读者拥有基本的矩阵运算和求导运算的相关知识,类似梯度,方向导数、Hessian Matrix这些东西不懂也没关系,我会用尽可能通俗的语言说明运算中的意义。

那么从最简单的开始。

梯度下降算法

梯度是个啥?我想最开始接触梯度的各位是在方向导数那一章接触这一概念的,如果老师没怎么讲的话可能有些人还不知道梯度是个向量。当你学梯度的时候,所有的概念全都是在二元函数下的,well,也写想象力不是很丰富的同学可能不知道这是个啥。来,我们降维先。

多维条件下是曲面对函数的一阶偏导数向量<fx,fy>,那么在一维条件下梯度会是什么的?显然就木有偏导数了,只有一个东西,当然你也可以把它写成向量的形式<fx>,就是一个导数,只不过现在变成一维的了,所以方向只有俩,向左和向右。值为正的时候向右,值为负的时候向左,值大值小不影响方向只影响距离。

在二维条件下,因为有了两个偏导数,所以这个向量能表示一圈。如果你以前看过些文章或者视频或者什么ppt之类的东西,大概你会听说一种说法:“梯度是曲面中最陡峭的方向,这个方向是下降最快的方向。”实际上这种说法是不准确的,从一维的角度来看,“梯度”其实是上升最快的方向,比如8.png9.png处的导数是1,方向向右,这个方向函数是增长的。同样二维也是如此。只不过大部分迭代公式中在梯度的前面会加一个负号,比如这个7.png。所以也就直接认为它代表了下降最快的方向了。  

直观上,你可以理解为,梯度就是一个和曲面等高线垂直的法线,冲着增高的那边。就像下图:

2.png

那么它相反的方向就是下降的方向啦,函数的极值点导数都是0的,也就是说,你沿着梯度方向一直走,如果最终收敛到一个点,那肯定就是一个极值点,如果不收敛,说明可能不存在极值点哈(这里因为有步长的涉及,在求解的时候会遇到明明有极值点却没有收敛的问题,后面会提到)。

举个例子,在一维下用梯度下降算法求解极值点的问题。这里我先举一个方便验算的例子,方便大家理解。

比如方程10.png,求解极值点。当然你口算都能算出来,不要急着算结果,来理解一下梯度能干啥。

一阶导11.png,在x=1的时候我们开始迭代,沿着下降最快的方向左边一点一点移动。迭代公式image014.png,这里image015.png就是步长,用来调节每一次移动的距离,你也可能听过一些image015.png不能过大也不能过小的看起来只能靠经验的废话。如果你是刚刚入门,可能写点程序,然后不断试,但是实际上image016.png较优的也是可以算的,只不过那又是另一门带有好多论文的学科了。

1.png

不同的image015.png得到不一样的迭代效果,收敛或者震荡收敛,周期震荡或者直接发散,但是有的时候,算一遍image025.png很费劲啊!这里例子简单,要是碰到TB级的数据那真的是要死了。这还能去试?这里简单的说一下怎么设置image015.png,首先你要确定x是收敛的。所以公式image014.png可以写成

2.png

为了收敛,其中image031.png,然后你就知道image033.png了。

实际上如果image016.png控制在0到1/2之间会收敛更快,因为震荡收敛总会造成一些重复计算。

二维上的梯度下降能干啥呢?

还是举一个简单的例子,这里直接连数据都是最简单的。你有两个点(4,4),(6,5),你想画一条线使得线和两个点之间的距离平方和最小,当然你也可以口算出来,但是我们依然是为了看一下作用,直接写公式对于一些人来说真的会蒙。

设直线的方程为image037.png

目标函数image039.png

偏导

image041.png

image043.png

迭代公式

image045.png

同样这里可以计算一下image016.png的范围

对于k

3.png

然后image053.png得到image056.png

同样如果在不允许震荡的情况下

对于b

4.png

这里求得允许image063.png并且在区间image066.png内不会震荡,梯度计算方向在二维曲面震荡起来长啥样啊。来来来画个图。开始震荡的部分我想我得给他个特写。

5.png

不过瘾?来看这个

6.png

大致知道啥意思就行了哈。

在不震荡的情况下就显得特别简洁了。一条线走回去。

7.png

当然教科书上数学书上肯定不会这么写例子,为了公式的简洁,最后改为:

对于已知的一系列点,image075.png,image077.png.

目标函数image079.png

其中image081.png的就是我们上面写的image084.png了,image085.png则表示所有参数的集合。咦?公式多了个1/2是哪来的?在这里实际上这个值是多少都无所谓,因为两个偏导数都带着这个1/2不影响梯度方向,只影响步长,而步长又可以由调节,我们可以理解为,加了它,导数写起来好看^_^。就像下面这样。

image087.png

迭代公式

image089.png

image086.png就是上面写到的image092.png一个列向量。

更多维的原理都一样,梯度下降就讲到这。

牛顿法

提到牛顿法的时候,你可能在小的时候听说过,一个用来迭代求零点的方法,稍微提一下。

如果你要求解image093.png,小学初中的时候你可能知道随便取一个大于0的数和一个小于0的数,然后不断地二分得到逼近于0的点,后来你可能知道这个利用了零点定理。你可以写一个同样的方程8.png,求image095.pngimage003.png的值。取image099.pngimage102.png ,然后不断的试值,唔~~还是来画图吧。

image103.png

你也可以看到他们的迭代过程,当然这个不叫牛顿法,这个叫二分法,比较low哈,看到没,震荡了,震荡收敛慢。

讲牛顿法的时候,你可能还要明确一个概念image106.pngimage108.png的区别。前者是切线带来的高度差,后者是函数上的高度差,只有image110.png当趋近于0的时候他俩才近似。而牛顿法就是用切线来快速逼近零点的,不会震荡呦,画图吧先。

image111.png

看起来两步就收敛了啊,好厉害,怎么做到不震荡的呢它?

因为每一步迭代移动切线与x轴交叉点的距离

image114.jpg

这个距离怎么算?可能你已经明白了image115.png,这里image118.png就是该点的一阶导数。因此迭代公式如下:

image120.png

没错就是这么简单。

这里顺带一提,对于不同的方程起始点的选择也会影响迭代次数,如果有兴趣的话可以读一下这篇文章,看一下神奇的0x5f375a86,2次迭代求解,这里读两次不读二次^_^

那牛顿法和极值求解有关系?看起来牛顿法只能求零点啊? Naive~~,一阶导零点不就是函数的极值或者驻点?

算起来更简单,迭代公式如下

image122.png

文章是用来解释高维极值求解的,如果你读到这里还是饶有兴致的话,那么恭喜你,你的高数肯定90+,接下来要上干货了。

对于高维函数,用牛顿法求极值也是这个形式,只不过这里的image123.pngimage126.png都变成了矩阵和向量。而且你也可以想到,高维函数二阶导有多个,写成矩阵的形式就像这样

image127.png

这个矩阵就是传说中的Hessian矩阵,不是什么拼音的简写。

同样image126.png就变成了对所有参数的偏导数组成的向量

image130.png

迭代公式

image131.png

其中image134.png为Hessian 矩阵的逆

还是以上面的例子解,对就是只有两个点求直线的那个,这次我们把目标函数1/2的加上。

9.png

10.png

迭代公式

11.png

来看一下效果,看起来直接一步到位啊!!!所以牛顿法求解你们也应该知道多厉害了。

12.png

难道是我初始点选的就比较接近答案?换一个大一点的(100,100),依然非常快!

13.png

这么快的原因,可能跟方程有关,换了其他方程也许就不这样了。当然你读到这里也许会迫不及待的去找些自己想分析的数据,计算些参数,如果数据量少,几百个,没问题,几万个,还撑得住,要是直接从统计局或者人口普查中进行分析的话,算一个image155.png可能都很慢,而且数超大。

简单的解决办法,有一种叫做批迭代的方法,不管是在梯度计算极值还是在牛顿计算极值上都是可行的,就是假设失去大部分点对准确度没有太大的影响,比如说3个在一条直线上的点,去掉一个也没什么关系,最后反正还是会拟合成同一个参数。批迭代就是在众多的点中随机抽取一些,进行迭代计算,再随机抽取一些再进行迭代。迭代的路径可能不完美,但是最终还是会找到我们想要的答案。

当然还有其他更帅的解决方法,祝如DFP,BFGS,Broyden。限于篇幅,下回再讲,私信知乎账号最爱麦丽素可以得到部分计算代码。

扩展阅读

一个Sqrt函数引发的血案

梯度下降法步长的取值范围

为什么不同教材中凸函数和凹函数的定义是不同的?

监督学习应用.梯度下降

广告点击率的贝叶斯平滑

计算广告——平滑CTR

Click-Through Rate Estimation for Rare Events in Online Advertising.

1.png

想阅读更多技术文章,请访问听云技术博客,访问听云官方网站感受更多应用性能优化魔力。

关于作者

李慧斌

不忘初心~充实就好~

我要评论

评论请先登录,或注册