短文一篇:坐标下降/K-means算法收敛性

查了一下网上的收敛性证明,看的我头大,我觉得原因就是那些博客都是抄来抄去的,理解的也不一定到位。

此处来简单清晰的证明一下,原理就用数学上的单调收敛定理之一:举个例子,如果一个实数序列是递减且有下界,则它的最大下界就是它的极限。
单调收敛定理的证明,数学教材上(数理统计相关的书应该有)。

换句话说,只要证明迭代算法:1)单调;2)有界,就可以说明目标函数最终一定会收敛,当然收敛数值不一定是这个界。

再举个例子,比如一个函数每次迭代都递减,且这个函数恒大于0,经过无数次迭代,函数就会收敛,收敛值一定不小于0

好了,定理的解释就到这里,怎么证明和理解都是数学教材上的,也可以网上查到不多说了。

这一系类优化思路,本质上通俗说是优化函数 m i n   f ( x 1 , x 2 , . . . x n ) min\ f(x_1,x_2,...x_n) min f(x1,x2,...xn)时,每次固定一部分参数,然后把另外参数当做变量求极值/下降,然后变动的参数固定住,原本固定的参数当做变量去求极值/下降。西瓜书讲SVM的啥啥啥smo算法就是这个逻辑。

仍然不耍公式,但是我想应该很清晰,公式自己纸上画画应该轻松,当然严谨会丢失一些,道理是一样的!

下面以K-means来说说收敛性,直观一些,就以平方损失和为例,问题:

m i n   J ( u 1 , u 2 , . . . u k )   =   1 / 2 ∑ i = 1 m ∑ j = 1 k ( x i − u j ) 2 min\ J(u_1,u_2,...u_k)\ =\ 1/2\sum_{i=1}^{m}\sum_{j=1}^{k}(x_i-u_j)^2 min J(u1,u2,...uk) = 1/2i=1mj=1k(xiuj)2
求驻点
u j = 1 / N j ∑ i = 1 N j x i u_j =1/N_j\sum_{i=1}^{N_j}x_i uj=1/Nji=1Njxi,其余类中心同理可得

文字表述:找到k个中心,使得m个点到这k个中心的距离整体最小

1.先证明每次迭代,损失函数在单调下降

咱们来看下分解步骤:
(1)更新m个点的归属类别:将m个点归属到已有的k个中心,其中的判定就是离哪个中心点近,就归属到那一类,此时损失函数为 J 0 ( u 1 , u 2 , . . . u k ) J_0(u_1,u_2,...u_k) J0(u1,u2,...uk)
这里想想,在中心确定的情况下,如果不归属到最近的中心,归属到其他中心,此刻损失函数假设为 J 1 ( u 1 , u 2 , . . . u k ) J_1(u_1,u_2,...u_k) J1(u1,u2,...uk)一定有 J 0 ( u 1 , u 2 , . . . u k ) ≤ J 1 ( u 1 , u 2 , . . . u k ) J_0(u_1,u_2,...u_k)\leq J_1(u_1,u_2,...u_k) J0(u1,u2,...uk)J1(u1,u2,...uk)

方便理解下,举个例子(公式自己也好写,我敲latex太不熟练),比如其中m-1个点都归属到最近的中心了,某一个点没有归属到最近中心,那么如果把这个点放到最近的那个中心,损失函数是不是就降低了呢?

也就是说,这个步骤实现了一次坐标下降,也就是在固定中心时,通过判断m个点的最近归属,降低了 J ( u 1 , u 2 , . . . u k ) J(u_1,u_2,...u_k) J(u1,u2,...uk)

(2)在步骤(1)的基础上,这个时候归属类别已经确定了,此时的损失函数为 J 0 ( u 1 , u 2 , . . . u k ) J_0(u_1,u_2,...u_k) J0(u1,u2,...uk),这里假设第一个类别有 N 1 N_1 N1个点,中心为 u j u_j uj,这个类别的损失函数部分为 1 / 2 ∑ i = 1 N 1 ( x i − u 1 ) 2 1/2\sum_{i=1}^{N_1}(x_i-u_1)^2 1/2i=1N1(xiu1)2
不难证明不等式:
1 / 2 ∑ i = 1 N 1 ( x i − u 1 ) 2 ≥ 1 / 2 ∑ i = 1 N 1 ( x i − x a v e ) 2 1/2\sum_{i=1}^{N_1}(x_i-u_1)^2\geq1/2\sum_{i=1}^{N_1}(x_i-x_{ave} )^2 1/2i=1N1(xiu1)21/2i=1N1(xixave)2其中 x a v e x_{ave} xave N 1 N_1 N1个点的均值中心。

(展开,移到左边,恰好可以配成平方和形式,可以拿 N 1 = 2 N_1=2 N1=2这种简单情况试试)

也就是说,固定归属类别,通过把均值中心作为类别中心,降低了 J ( u 1 , u 2 , . . . u k ) J(u_1,u_2,...u_k) J(u1,u2,...uk)

重复(1)和(2),另外其实这每一步不仅仅是降低了 J ( u 1 , u 2 , . . . u k ) J(u_1,u_2,...u_k) J(u1,u2,...uk),而且是在那一步限制条件下,最大化降低,求了极值

2.再证明有界

emmm, J ( u 1 , u 2 , . . . u k ) ≥ 0 J(u_1,u_2,...u_k) \geq0 J(u1,u2,...uk)0

emmm,单调,有界,收敛。结束

我觉得对于理解算法核心的人来说,应该比那些疯狂的公式推导足够让人理解了。

你可能感兴趣的:(短文一篇:坐标下降/K-means算法收敛性)