目录
1 导论
介绍了非负矩阵分解(NMF)的概念以及一些基础的应用,并且介绍了现有的一些针对NMF问题的基础算法。
2 现有的解决方法
主要分三个,乘子更新法、交替最小二乘法和梯度方法。
2.1乘子更新法
乘子更新法如下,其公式分子分母主要是对梯度下降法的一个改进,求导部分大于0说明变量值需要减小。原式分母大于分子,由此来对参数进行更新迭代。复杂度计算是通过更新过程中最复杂的一个部分程序应该运行的次数进行计算,具体可以参考:矩阵乘法复杂度分析_Y-CSDN博客_矩阵乘法复杂度
此算法被证明当k取无穷的时候目标函数不具备收敛的性质,所以作者没有对其进行优化。
2.2 交替最小二乘法
此方法类似于坐标下降法,轮流更新单个变量,以此来达到优化目标函数的目的。并且此方法被证明经过k次更新迭代后,目标函数会收敛。所以作者后面是对此方法进行加以改进。
2.3 梯度方法
作者对此节没有详细描述,只是简单介绍了其中的两个小方法,方法一是通过创建两个新矩阵E和F,我们可以通过优化EF矩阵从而来优化WH矩阵。这个方法可以将有约束的问题转化为无约束的问题,比较方便优化。第二个小方法是直接使用梯度下降法,作者也没有详加讨论。
3 投影梯度法
投影梯度算法(PGD),本论文中我认为其就是对参数在可行域的一个投影,这样有助于解决有约束类的问题。作者根据此提出了算法三和算法四,其中有个Armijo准则,其实就是一个控制步长的一个工具Armijo线搜索_u011584941的专栏-CSDN博客。由于算法3寻找阿尔法会很慢,所以作者提出了算法4,减少寻找阿尔法的次数。
3.1 对NMF的解决策略
以下是对原论文中4.1公式下的推导,推导的目的其实就是想证明这是一个二次规划问题,然后可以对以上的armijo准则进行优化,从而达到减少程序计算的复杂度,进而达到优化的目的。
3.2 停止条件
𝜖的意义是控制迭代停止的条件,参数值越小,迭代停止条件越小,对算法的要求越苛刻。下面的分段函数是对梯度的投影,如果更新后的值等于上界,则此刻的梯度取不超过0的梯度,从而达到下一个目标值会充分减小或者不变的目的,反之亦然。
4 实验和结论
只有运用作者提出的新方法(alspgrd)去优化目标函数,才能有迭代条件参数为10的-6时候的情况。 其他算法无法在有限的时间收敛到此结果。
作者分析到,alspgrd是一种介于牛顿法和乘子更新法的算法。牛顿法高成本收敛快,乘子更新法低成本收敛慢。
个人看法
我认为一切算法都有偏好性,比较符合NFL定理,但是如果能够在程序设计中减少一些重复累赘的运算,还是有利于提高算法计算速度。本篇论文主要就是在armijo条件那进行了优化,在程序设计上能大大减少程序复杂度,从而相对于对比其他算法具有良好的性能。从实验仿真也可以看出,使用坐标块下降方法结合投影梯度法会比直接使用投影梯度法更好一些。梯度投影法是通过求解具有二次目标函数的子问题来得到可行的方向,本身就具有收敛快的特点。