本文来了解一下梯度下降算法的基本原理,不涉及复杂的数学推导。
机器学习问题很大程度上来说其实就是找到一个合适的目标函数,然后不断优化参数的最优化过程,而梯度下降正是最优化过程中的重要算法 。
梯度下降(Gradient Descent)是应用非常广泛的优化算法之一,其应用范围涵盖经典机器学习算法、神经网络、深度学习。机器学习问题很大程度上来说其实就是找到一个合适的目标函数,然后不断优化参数的最优化过程,而梯度下降正是最优化过程中的重要算法,由此可见梯度下降在机器学习中的重要性。现在很多知名的深度学习库都已经包含了各种梯度下降优化算法的实现(如 Tensorflow,Cafe,Keras),但依然很有必要去了解梯度下降的底层逻辑,熟知梯度下降不同变种、不同算法之间的区别,并能够根据它们各自的优缺点选择最合适的方法和参数来应用于相应的场景。
梯度下降算法的由来
每一个机器学习模型都有一个损失函数,学习的目的,就是将损失函数最小化。然而,并非所有函数都能一下子就找到最小值,甚至都没有最小值。所以,很多机器学习模型都以凸函数作为损失函数,因为凸函数保证了其有最小值。凸函数可以理解成在某段区间只有一个低谷的函数。
如果损失函数是凸函数,那么我们的目标就是寻找改损失函数的最小值。而用来寻找凸函数最小值的常用方法就是梯度下降法。
梯度下降就是从山顶找一条最短的路走到山谷最低的地方。
既然是选择一个方向下山,那么这个方向怎么选?每次该怎么走?选方向在算法中是以随机方式给出的,这也是造成有时候走不到真正最低点的原因。如果选定了方向