梯度下降法

梯度下降法,又称“最速下降法”,是机器学习领域最常用的优化算法之一,适用于各种无约束的优化问题。

下面我们简单叙述梯度下降法的原理。假设无约束优化函数是:

我们需要求解上式的极小值,当然我们可以直接求解偏导数,令偏导数等于0,但是有时这种方法并不现实,因为偏导数可能非常复杂,难以求解零点。梯度下降法尝试从任意点出发,采用迭代的方式,每次都使函数的值下降一点点。

其中是一个很小的正数,一般为一个常数(当然也可以随着梯度下降法的进行动态调整大小),我们的目标是让
为了达到目标,我们尝试让在处做泰勒展开:

通过让右边第二项恒小于等于0,左边就会小于,令 即可满足条件,所以很容易得到的更新方法:

从函数图像上看,某点的梯度方向是该点处函数上升最快的方向,因此我们每次向梯度的反方向取值,企图寻找到函数值下降较快的方向。梯度下降法用于凸函数时能寻找到全局最优,但是对于非凸函数可能找到的是局部最优点,此时需要用其他方法保证解是可接受的(全局最优或者一个可接受范围内的局部最优),如选取多个初始点,或者模拟退火等。

对于机器学习问题来说,优化函数一般是关乎训练集中所有数据(点)的一个函数,比如最小二乘的目标函数(假设训练集的数据格式为:, 函数为训练模型):

是模型的参数,为了求解关于的导数,我们需要对整个数据集进行运算以对参数做一次更新,对于大规模数据而言,这无疑是非常耗时的。为了适应现实需求,人们发展了各种实现梯度下降的方法,整体分为三种:批量梯度下降,随机梯度下降,小批量梯度下降。

批量梯度下降法

最简单的方法, 每次使用数据集中所有数据计算\theta的偏导数,更新公式为:


适用于小规模的数据,每次下降的方向都是整体函数值减小的方向,缺点就是下降太慢了,不能直接应用于大规模数据,且无法进行在线学习。

梯度下降法_第1张图片
批量梯度下降过程.png

随机梯度下降法

随机取点,每次针对一个数据点求偏导进行更新,更新公式为:

这样更新更快,虽然每一次下降的方向不一定是全局下降的方向,但是多个样本累加起来整体的方向是下降的方向。更新的路线更加曲折。

梯度下降法_第2张图片
随机.jpg

小批量梯度下降法

对于上面两种方法的折中,选取一小批样本,在这一批样本上求解偏导数对参数进行迭代更新。

你可能感兴趣的:(梯度下降法)