首页 > 代码库 > 梯度下降和EM算法,kmeans的em推导

梯度下降和EM算法,kmeans的em推导

I. 牛顿迭代法
给定一个复杂的非线性函数f(x),希望求它的最小值,我们一般可以这样做,假定它足够光滑,那么它的最小值也就是它的极小值点,满足f′(x0)=0,然后可以转化为求方程f′(x)=0的根了。非线性方程的根我们有个牛顿法,所以

 

技术分享

然而,这种做法脱离了几何意义,不能让我们窥探到更多的秘密。我们宁可使用如下的思路:在y=f(x)的x=xn这一点处,我们可以用一条近似的曲线来逼近原函数,如果近似的曲线容易求最小值,那么我们就可以用这个近似的曲线求得的最小值,来近似代替原来曲线的最小值了:

技术分享

显然,对近似曲线的要求是:
1、跟真实曲线在某种程度上近似,一般而言,要求至少具有一阶的近似度;
2、要有极小值点,并且极小值点容易求解。

这样,我们很自然可以选择“切抛物线”来近似:

 技术分享

该抛物线具有二阶的精度。对于这条抛物线来说,极值点是

技术分享

所以我们重新得到了牛顿法的迭代公式:

技术分享

如果f(x)足够光滑并且在全局只有一个极值点,那么牛顿法将会是快速收敛的(速度指数增长),然而真实的函数并没有这么理想,因此,它的缺点就暴露出来了:

1、需要求二阶导数,有些函数求二阶导数之后就相当复杂了;
2、因为f″(xn)的大小不定,所以g(x)开口方向不定,我们无法确定最后得到的结果究竟是极大值还是极小值。

 

II. 梯度下降

这两个缺点在很多问题上都是致命性的,因此,为了解决这两个问题,我们放弃二阶精度,即去掉f″(xn),改为一个固定的正数1/h:

技术分享

这条近似曲线只有一阶精度,但是同时也去掉了二阶导数的计算,并且保证了这是一条开口向上的抛物线,因此,通过它来迭代,至少可以保证最后会收敛到一个极小值(至少是局部最小值)。上述g(x)的最小值点为

技术分享

所以我们得到迭代公式

技术分享

对于高维空间就是

技术分享

这就是著名的梯度下降法了。当然,它本身存在很多问题,但很多改进的算法都是围绕着它来展开,如随机梯度下降等等。

这里我们将梯度下降法理解为近似抛物线来逼近得到的结果,既然这样子看,读者应该也会想到,凭啥我一定要用抛物线来逼近,用其他曲线来逼近不可以吗?当然可以,对于很多问题来说,梯度下降法还有可能把问题复杂化,也就是说,抛物线失效了,这时候我们就要考虑其他形式的逼近了。事实上,其他逼近方案,基本都被称为EM算法,恰好就只排除掉了系出同源的梯度下降法,实在让人不解

 

V. K-Means

K-Means聚类很容易理解,就是已知N个点的坐标xi,i=1,…,N,然后想办法将这堆点分为K类,每个类有一个聚类中心cj,j=1,…,K,很自然地,一个点所属的类别,就是跟它最近的那个聚类中心cj所代表的类别,这里的距离定义为欧式距离。
所以,K-Means聚类的主要任务就是求聚类中心cj。我们当然希望每个聚类中心正好就在类别的“中心”了,用函数来表示出来,就是希望下述函数L最小:

 技术分享

其中,min操作保证了每个点只属于离它最近的那一类。
如果直接用梯度下降法优化L,那么将会遇到很大困难,不过这倒不是因为min操作难以求导,而是因为这是一个NP的问题,理论收敛时间随着N成指数增长。这时我们也是用EM算法的,这时候EM算法表现为:
1、随机选K个点作为初始聚类中心;
2、已知K个聚类中心的前提下,算出各个点分别属于哪一类,然后用同一类的所有点的平均坐标,来作为新的聚类中心。

这种方法迭代几次基本就能够收敛了,那么,这样做的理由又在哪儿呢?

我们依旧是近似曲线逼近的思路,但问题是,现在的min不可导怎么办呢?可以考虑用光滑近似,然后再取极限,答案在这里:《寻求一个光滑的最大值函数》。取一个足够大的M,那么就可以认为(最小值等于相反数的最大值的相反数)

 技术分享

目标函数:

技术分享

梯度:技术分享

 设第n次迭代的结果为$c_j^{n}$,那么该轮的梯度就是: 

 技术分享

根据这个式子的特点,我们可以寻找这样的近似曲线(应该是超曲面了):

 技术分享

其中$C_{i,j}^{n}$待定,它在每一轮都是一个常数,所以这只是一个二次函数,不难求得它的最小值点是

技术分享

即xi的加权平均。
同样地,我们希望它这个近似曲线跟原函数比,至少具有一阶近似,因此我们求它的导数:

技术分享

对比原函数的导数,不难得到

技术分享

这时候我们就得到迭代公式:

技术分享

至此,我们对各个步骤都推导完毕,但我们还是使用连续近似,最后我们要取M→∞的极限了,取极限后问题可以化简。由上式可以推得:

技术分享

说白了,将$Δ_{i,j}^{n}$看成是N行K列的矩阵,那么矩阵的每一行只能有一个1,其它都是0;如果第i行中是第j个元素为1,就意味着距离xi最近的类别中心为cj。这时候,迭代公式变为技术分享

根据$Δ_{i,j}^{n}$的含义,这无外乎就是说:$c_j^{(n+1)}$就是距离$c_j^{n}$最近的那些点的平均值。

这就得到了通常我们在求解K-Means问题时,所用的迭代算法了,它也被称为EM算法。

 

转自: 

http://spaces.ac.cn/archives/4277/

 

梯度下降和EM算法,kmeans的em推导