1, Gradient descent 算法
梯度下降算法是最经典的优化算法之一。对于一个可导的函数F(x)来说,梯度下降算法能够寻找到F(x)的最小值依赖于以下两个发现:
首先,F(x)在x=a这一点上下降最快的方向是沿着F(x)的导数的反方向;
其次,在x=a足够小的邻域内,沿着F(x)的梯度方向能够找到一个点b,使得F(b)
在这个更小的值附近,继续沿着导数的反方向寻找,总能找到一个极小值点。一个二维空间上的迭代过程如下图所示:
其中,左图是等高线的热点图,以及在等高线之间按照gradient descent算法迭代的过程;右图是算法的收敛过程。
2,牛顿方法
牛顿方法,又称牛顿迭代,或者Newton-Raphson方法,其核心思想是沿着导数方向连续性的逼近一个实函数的根值。以一个单变量可导函数f(x)为例,我们从一个任意初始点
开始,按照如下公式迭代:
这个迭代有意思的是,这里的
的几何意义是函数f在点
上的切线与x轴的交点。
然后从这个交点位置开始,继续迭代,最终在第n点上,取到满足条件的
:
这里如果是高维的话,比如多变量函数,切线就被高维的tangent代替。
一个二维空间上的迭代过程如下图所示:
注意,仔细看左图上的几个绿色小圆点的位置(绿色非常不明显,请使劲看-_-|||),跟上面的梯度算法比较,会发现牛顿算法的收敛速度更快。当然,前提是,要能保证收敛性。至于如何保证收敛性,这里就不展开讲了(其实是怕展开讲也讲不清楚^^),基本上来说会涉及到一个是代价函数的凸性(convexity)和收敛域等因素的影响了。
虽然小编水平有限,但是,小编认识一个叫做Stephen Boyd,他水平不知道高到哪里去了。到底有多高呢?一个数据告诉你:他写的凸优化(Convex Optimization)一书,已经被引用了24616次了。如果你对凸优化理论或者这本书有兴趣的话,不妨试试看回复通关密码“boyd”给我们。一定有惊喜哦!
请注意,本文的收敛动图来自新浪微博网友@赵开勇,其余动图来自wikipedia,部分内容也翻译自wikipedia。
1, Gradient descent 算法
梯度下降算法是最经典的优化算法之一。对于一个可导的函数F(x)来说,梯度下降算法能够寻找到F(x)的最小值依赖于以下两个发现:
首先,F(x)在x=a这一点上下降最快的方向是沿着F(x)的导数的反方向;
其次,在x=a足够小的邻域内,沿着F(x)的梯度方向能够找到一个点b,使得F(b)
在这个更小的值附近,继续沿着导数的反方向寻找,总能找到一个极小值点。一个二维空间上的迭代过程如下图所示:
其中,左图是等高线的热点图,以及在等高线之间按照gradient descent算法迭代的过程;右图是算法的收敛过程。
2,牛顿方法
牛顿方法,又称牛顿迭代,或者Newton-Raphson方法,其核心思想是沿着导数方向连续性的逼近一个实函数的根值。以一个单变量可导函数f(x)为例,我们从一个任意初始点
开始,按照如下公式迭代:
这个迭代有意思的是,这里的
的几何意义是函数f在点
上的切线与x轴的交点。
然后从这个交点位置开始,继续迭代,最终在第n点上,取到满足条件的
:
这里如果是高维的话,比如多变量函数,切线就被高维的tangent代替。
一个二维空间上的迭代过程如下图所示:
注意,仔细看左图上的几个绿色小圆点的位置(绿色非常不明显,请使劲看-_-|||),跟上面的梯度算法比较,会发现牛顿算法的收敛速度更快。当然,前提是,要能保证收敛性。至于如何保证收敛性,这里就不展开讲了(其实是怕展开讲也讲不清楚^^),基本上来说会涉及到一个是代价函数的凸性(convexity)和收敛域等因素的影响了。
虽然小编水平有限,但是,小编认识一个叫做Stephen Boyd,他水平不知道高到哪里去了。到底有多高呢?一个数据告诉你:他写的凸优化(Convex Optimization)一书,已经被引用了24616次了。如果你对凸优化理论或者这本书有兴趣的话,不妨试试看回复通关密码“boyd”给我们。一定有惊喜哦!
请注意,本文的收敛动图来自新浪微博网友@赵开勇,其余动图来自wikipedia,部分内容也翻译自wikipedia。