梯度下降 Gradient descent

文章非原创,内容均引用自别处,已在下文中注明出处

梯度下降 Gradient descent

什么是梯度

梯度是偏导数的集合
在这里插入图片描述

梯度下降算法

x t + 1 = x t − η ⋅ ∇ f ( x t ) x_{t+1}=x_t-\eta⋅\nabla f(x_t) xt+1=xtηf(xt)
其中, x t x_t xt是自变量参数向量,即当前坐标, η η η是学习因子,即下山每次前进的一小步(步进长度), x t + 1 x_{t+1} xt+1是下一步,即下山移动一小步之后的位置。

∇ f ( x ) \nabla f(x) f(x)则代表着梯度,也就是函数的偏导数集合构成的向量

相关概念

引用:
[机器学习] ML重要概念:梯度(Gradient)与梯度下降法(Gradient Descent)

导数(derivative)

函数y=f(x)在某一点处沿x轴正方向的变化率
在这里插入图片描述

反映的是函数y=f(x)在某一点处沿x轴正方向的变化率。
再强调一遍,是函数f(x)在x轴上某一点处沿着x轴正方向的变化率/变化趋势。
直观地看,也就是在x轴上某一点处,如果f’(x)>0,说明f(x)的函数值在x点沿x轴正方向是趋于增加的;如果f’(x)<0,说明f(x)的函数值在x点沿x轴正方向是趋于减少的。

偏导数(partial derivative)

多元函数中,函数在某一点处沿某一坐标轴正方向的变化率
在这里插入图片描述

可以看到,导数与偏导数本质是一致的,都是当自变量的变化量趋于0时,函数值的变化量与自变量变化量比值的极限。直观地说,偏导数也就是函数在某一点上沿坐标轴正方向的的变化率。
 
区别在于:
导数,指的是一元函数中,函数y=f(x)在某一点处沿x轴正方向的变化率;
偏导数,指的是多元函数中,函数y=f(x1,x2,…,xn)在某一点处沿某一坐标轴(x1,x2,…,xn)正方向的变化率。

方向导数(directional derivative)

某一点在沿某一任意方向上的导数值
梯度下降 Gradient descent_第1张图片

在前面导数和偏导数的定义中,均是沿坐标轴正方向讨论函数的变化率。那么当我们讨论函数沿任意方向的变化率时,也就引出了方向导数的定义,即:某一点在某一趋近方向上的导数值。
 
通俗的解释是:
我们不仅要知道函数在坐标轴正方向上的变化率(即偏导数),而且还要设法求得函数在其他特定方向上的变化率。而方向导数就是函数在其他特定方向上的变化率。

梯度

函数在某一点最大的方向导数,称为梯度
也就是多元函数中,对每一维(元)求偏导数,然后组成的向量
在这里插入图片描述

梯度的提出只为回答一个问题:
 函数在变量空间的某一点处,沿着哪一个方向有最大的变化率?
 梯度定义如下:
 函数在某一点的梯度是这样一个向量,它的方向与取得最大方向导数的方向一致,而它的模为方向导数的最大值。
 这里注意三点:
 1)梯度是一个向量,即有方向有大小;
 2)梯度的方向是最大方向导数的方向;
 3)梯度的值是最大方向导数的值。

导数与偏导数与方向导数是向量么?
 向量的定义是有方向(direction)有大小(magnitude)的量。
 从前面的定义可以这样看出,偏导数和方向导数表达的是函数在某一点沿某一方向的变化率,也是具有方向和大小的。因此从这个角度来理解,我们也可以把偏导数和方向导数看作是一个向量,向量的方向就是变化率的方向,向量的模,就是变化率的大小。
 那么沿着这样一种思路,就可以如下理解梯度:
 梯度即函数在某一点最大的方向导数,函数沿梯度方向函数有最大的变化率。

为什么负梯度方向是下降最快的方向(=如何求出最大方向导数)?

引用:
为什么局部下降最快的方向就是梯度的负方向?
机器学习–什么是梯度?为什么梯度方向就是函数上升最快的方向?本文将给你解惑

泰勒定理——一阶泰勒展开式

引用:
Wikipedia——泰勒定理

你可能感兴趣的:(机器学习)