梯度下降的原理

本文来了解一下梯度下降算法的基本原理,不涉及复杂的数学推导。

机器学习问题很大程度上来说其实就是找到一个合适的目标函数,然后不断优化参数的最优化过程,而梯度下降正是最优化过程中的重要算法 。

梯度下降(Gradient Descent)是应用非常广泛的优化算法之一,其应用范围涵盖经典机器学习算法、神经网络、深度学习。机器学习问题很大程度上来说其实就是找到一个合适的目标函数,然后不断优化参数的最优化过程,而梯度下降正是最优化过程中的重要算法,由此可见梯度下降在机器学习中的重要性。现在很多知名的深度学习库都已经包含了各种梯度下降优化算法的实现(如 Tensorflow,Cafe,Keras),但依然很有必要去了解梯度下降的底层逻辑,熟知梯度下降不同变种、不同算法之间的区别,并能够根据它们各自的优缺点选择最合适的方法和参数来应用于相应的场景。

梯度下降算法的由来

每一个机器学习模型都有一个损失函数,学习的目的,就是将损失函数最小化。然而,并非所有函数都能一下子就找到最小值,甚至都没有最小值。所以,很多机器学习模型都以凸函数作为损失函数,因为凸函数保证了其有最小值。凸函数可以理解成在某段区间只有一个低谷的函数。

如果损失函数是凸函数,那么我们的目标就是寻找改损失函数的最小值。而用来寻找凸函数最小值的常用方法就是梯度下降法。

梯度下降就是从山顶找一条最短的路走到山谷最低的地方。

既然是选择一个方向下山,那么这个方向怎么选?每次该怎么走?选方向在算法中是以随机方式给出的,这也是造成有时候走不到真正最低点的原因。如果选定了方向,以后每走一步,都是选择最陡的方向,直到最低点。

总结起来就一句话:随机选择一个方向,然后每次迈步都选择最陡的方向,直到这个方向上能达到的最低点

在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。这里就对梯度下降法做一个完整的总结。

由上可知梯度下降思想的三个要素包括出发点、下降方向、下降步长。

梯度下降算法原理

绝大部分优化问题都可以转化成如下的问题:给定一个关于 θ∈R 的目标函数 J(θ),求使得 J(θ) 最小的参数 θ。如下图,A 点是随机初始给定的 θ 的目标函数值,B 点是目标函数值 J(θ)最小的地方,我们目的是求 B 点处的 θ。梯度下降就是从 A 点开始,不断沿着下降最快的方向(负梯度方向)迭代,更新后的 θ 能够使 J(θ) 更小,直至到达 B 点。 )迭代,更新后的 θ 能够使 J(θ) 更小,直至到达 B 点。

梯度下降的原理

更直观的理解,可以将梯度下降的方法理解成下山,当前在高山的某个位置,我们要到山的最低(目标函数最小)处,怎样才能找到最优的下山路径呢?这个时候就可以利用梯度下降的思想。具体来讲,就是走一步算一步,每走一步都以他当前所处的位置为基准,沿着当前位置最陡峭最易下山的方向前进一小步,然后继续沿下一个位置最陡方向前进一小步,这样一步步走下去,直到山的最低处。

当然这样走下去,有可能我们不能走到真正的山脚,而是到了某一个局部的山峰低处。梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。当然,如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。

总结

本文简略介绍了梯度下降算法的基本概念,以及适用场景。梯度下降算法可以较快的得到损失函数的局部最优解,极大的提高了求最优解的效率。在后续文章中将会继续探讨梯度下降方法的数学推导。

参考文章

梯度下降算法总结

为什么梯度反方向是函数值局部下降最快的方向?