对于复杂函数,很难求得其极值,所以诞生的很多算法通过迭代求得函数的极值,本文用函数近似的思想来理解梯度下降,牛顿法及EM算法.
梯度下降
对进行一阶泰勒展开:
把及看成常量,这相当于关于的一次函数:
当每步足够小时,找原函数的最低点,相当于找这条直线的最低点,所以有迭代公式:
换种说法,梯度下降其实就是用处函数的切线,来近似代替原函数求极值.
牛顿法
对进行二阶泰勒展开:
把及看成常量,这相当于关于的抛物线:
找原函数的最低点,相当于找这条抛物线的最低点,所以有迭代公式:
换种说法,牛顿法其实就是用处函数的抛物线,来近似代替原函数求极值.
因为二次函数比一次函数更像原函数,所以牛顿法要比梯度下降迭代的快.但是当数据量和数据纬度比较大的时候,从矩阵的角度,矩阵二阶导数为海森矩阵(Hessian matrix),计算海森矩阵和它的逆矩阵是非常耗时,所以在机器学习任务中通常还是会采用梯度下降.
EM算法
EM算法是求交叉熵的极值的算法,交叉熵的公式为:
其中为待求参数.
EM算法也是采用函数近似的方法来求极值的,这个函数在很多教材中被称为函数.
对使用梯度下降求极值是行不通的,因为概率需要满足条件:
我们不妨考虑这样的近似函数:
对比原S的一阶梯度,与的一阶梯度:
我们希望的梯度跟原来的梯度是一样的(具有一阶精度),所以令:
可得:
于是我们可以用代替原函数求极值.
参考:
https://kexue.fm/archives/4277