并不是。一方面,梯度并不是在任何时候都可以计算的。实际中很多问题的目标函数并不是可导的,这时梯度下降并不适用,这种情况下一般需要利用问题的结构信息进行优化,比如说Proximal gradient方法。甚至有些问题中目标函数的具体形式都不知道,更别谈求梯度,比如说Bayesian Optimization。另一方面,即使问题可导,梯度下降有时并不是最佳选择。梯度下降的性能跟问题的条件数相关,在条件数比较大时问题中梯度下降可能会非常慢。相对来说,以拟牛顿法为代表的二阶方法没有这个问题,虽然拟牛顿法在高维问题中会有计算量偏大的问题,但在很多场景还是比梯度下降有优势。再比如,在梯度计算代价比较大时,SGD及其变种会远比普通的梯度下降快。当然,总体来说,在机器学习的各种教科书中梯度下降是最常见的优化方法。主要因为它非常简单易懂,而且大多数情况下效率比较高,但同时也是因为机器学习中大多数问题的惩罚函数是比较smooth的。如果有梯度的信息,有限内存BFGS是更好的办法! 而且所谓的学习率,如果不是凸问题就不能设置为常数,需要线搜索来确定学习率,很多场景下GD方法并不能很“容易”的获得较优解。另外,很多场景下,并不能写出梯度公式。xGD算法在对性能有一定要求的前提下,网络瓶颈是个问题,如果有更好的方法当然不会用它 而且如果模型存在局部不可导的情况下,部分分片发散,调整起来很头疼的 我记得Jeff Dean有几篇论文讲了这个事情,题主不妨去翻翻看。
如果梯度下降都可以成为万能算法 那研究智能算法的岂不是都要哭晕在厕所啦 可以关注下cec网站,每年都有比赛,上面的算法有经典有时髦,别说是梯度下降,就是前两年的top方法都可能被今年的给爆出翔 虽说有nfl,但是如果如果有研究的话,有些算法真的是超级强悍,根本没得比。这些算法有的是新的创意,有的只是各种技术的堆砌,但是总的来说,性能是超级强大的。虽说都是老牌ai分支,但是智能算法的研究成果向机器学习领域渗透的真的很慢,很多牛叉东东大家都不知道。比如15年的top,有个success history based adaptation DE with success parent selection and population size reduction ,汗 名字都这么长,不过性能出奇牛逼 楼主可以看下还有现在有个landscape analysis,总机器学习算法对目标函数分类,然后推荐相应的优化算法,算是从更高维度对nfl的一次挑战?
这么说,这东西能求导,且满足一定的条件(利普希茨应该是,具体我有点记不清了),梯度下降一定能找到最优解。事实上在梯度下降时会考虑很多的问题。比如步长怎么选。这里面有个wolfe条件比较常用。但是按照wolfe条件来选是不是一定能保证收敛?这个就很难说了。SVM的求解是一个凸模型。那显然梯度下降不是最好的选择,我们对凸模型的优化方法实在是太多了。我没关注过,但我估计肯定有人用ADMM这类的方法去求解SVM。梯度下降只是代码好写,然后实际上也比较好用。但是谈万能,太过了。





