梯度下降算法

 一、基本概念

梯度下降法,就是利用负梯度方向来决定每次迭代的新的搜索方向,使得每次迭代能使待优化的目标函数逐步减小。梯度下降法是2范数下的最速下降法。 最速下降法的一种简单形式是:x(k+1)=x(k)-a*g(k),其中a称为学习速率,可以是较小的常数。g(k)是x(k)的梯度。

二、导数

(1)定义

设有定义域和取值都在实数域中的函数 y=f(x)\;。若 f(x)\; 在点 \;x_0\; 的某个邻域内有定义,则当自变量 \;x\; 在 \;x_0\; 处取得增量 \Delta x\;(点 \;x_0+\Delta x\; 仍在该邻域内)时,相应地函数 \;y\; 取得增量 \Delta y=f(x_0+\Delta x)-f(x_0)\,\!;如果 \Delta \;y\; 与 \Delta \;x\; 之比当 \Delta x\to 0 时的极限存在,则称函数 y=f(x)\,\! 在点 \;x_0\; 处可导,并称这个极限为函数 y=f(x)\,\! 在点 \;x_0\; 处的导数,记为 f'(x_0)\;,即:

f'(x_0)=\lim_{\Delta x \to 0}\frac{\Delta y}{\Delta x}=\lim_{\Delta x \to 0}\frac{f(x_0+\Delta x)-f(x_0)}{\Delta x}

也可记作 y^\prime (x_0)\left.\frac{\mathrm{d}y}{\mathrm{d}x}\right|_{x=x_0}\frac{\mathrm{d}f}{\mathrm{d}x}(x_0)或 \left.\frac{\mathrm{d}f}{\mathrm{d}x}\right|_{x=x_0}

对于一般的函数,如果不使用增量的概念,函数 f(x)\; 在点 x_0\; 处的导数也可以定义为:当定义域内的变量 x\; 趋近于 x_0\; 时,

\frac{f(x)-f(x_0)}{x - x_0}

的极限。也就是说,

f'(x_0)=\lim_{x \to x_0}\frac{f(x)-f(x_0)}{x - x_0}

导数反应的变化率

一个函数在某一点的导数描述了这个函数在这一点附近的变化率。导数的本质是通过极限的概念对函数进行局部的线性逼近。当函数f的自变量在一点x_0上产生一个增量h时,函数输出值的增量与自变量增量h的比值在h趋于0时的极限如果存在,即为fx_0处的导数,记作f'(x_0)\frac{\mathrm{d}f}{\mathrm{d}x}(x_0)\left.\frac{\mathrm{d}f}{\mathrm{d}x}\right|_{x=x_0}

(2)几何意义:

 

一个实值函数的图像曲线。函数在一点的导数等于它的图像上这一点处之切线的斜率,导数是函数的局部性质。不是所有的函数都有导数,一个函数也不一定在所有的点上都有导数。若某函数在某一点导数存在,则称其在这一点可导,否则称为不可导。如果函数的自变量和取值都是实数的话,那么函数在某一点的导数就是该函数所代表的曲线在这一点上的切线斜率。

具体来说:

当函数定义域和取值都在实数域中的时候,导数可以表示函数的曲线上的切线斜率。如下图所示,设P_0为曲线上的一个定点,P为曲线上的一个动点。当P沿曲线逐渐趋向于点P_0时,并且割线P P_0的极限位置P_0 T存在,则称P_0 T为曲线在P_0处的切线。

若曲线为一函数y=f(x)的图像,那么割线P P_0(蓝色)的斜率为:

\tan \varphi=\frac{\Delta y}{\Delta x}=\frac{f(x_0 + \Delta x)-f(x_0)}{\Delta x}

P_0处的切线P_0 T(红色),即P P_0的极限位置存在时,此时\Delta x \to 0\varphi \to \alpha,则P_0 T的斜率\tan \alpha为:

\tan \alpha=\lim_{\Delta x \to 0} \tan \varphi=\lim_{\Delta x \to 0} \frac{f(x_0 + \Delta x)-f(x_0)}{\Delta x}

上式与一般定义中的导数定义完全相同,也就是说f'(x_0)=\tan \alpha,因此,导数的几何意义即曲线y=f(x)在点P_0 (x_0,f(x_0))处切线的斜率 

(3)导函数

 导数是一个数,是指函数 f(x)\; 在点 x_0\; 处导函数的函数值,若函数 \;f(x)\; 在其定义域包含的某区间 \;I\; 内每一个点都可导,那么也可以说函数\;f(x)\; 在区间 \;I\; 内可导,这时对于 \;I\; 内每一个确定的\;x\; 值,都对应着 \;f\; 的一个确定的导数值,如此一来就构成了一个新的函数x \mapsto f'(x),这个函数称作原来函数 \;f(x)\; 的导函数,记作:\;y'\;f'(x)\; 或者 \frac{\mathrm{d}f}{\mathrm{d}x}(x),通常也可以说导函数为导数

梯度

1、相关概念

假如一个空间中的每一点的属性都可以以一个标量来代表的话,那么这个场就是一个标量场。

假如一个空间中的每一点的属性都可以以一个向量来代表的话,那么这个场就是一个向量场

标量场中某一点上的梯度指向标量场增长最快的方向,梯度的长度是这个最大的变化率。

梯度一词有时用于斜度,也就是一个曲面沿着给定方向的倾斜程度。

2、计算

一个标量函数\varphi的梯度记为:

\nabla \varphi 或 \rm grad \varphi

其中\nabla(nabla)表示矢量微分算子。

在三维情况,该表达式在直角坐标中扩展为

\nabla \phi =\begin{pmatrix}{\frac{\partial \phi}{\partial x}},  {\frac{\partial \phi}{\partial y}}, {\frac{\partial \phi}{\partial z}}\end{pmatrix}

六、梯度下降法

梯度下降法,基于这样的观察:如果实值函数 F(\mathbf{x}) 在点 \mathbf{a} 处可微且有定义,那么函数 F(\mathbf{x})在 \mathbf{a} 点沿着梯度相反的方向

 -\nabla F(\mathbf{a}) 下降最快。

因而,如果

\mathbf{b}=\mathbf{a}-\gamma\nabla F(\mathbf{a})

对于 \gamma>0 为一个够小数值时成立,那么 F(\mathbf{a})\geq F(\mathbf{b})

考虑到这一点,我们可以从函数 F 的局部极小值的初始估计 \mathbf{x}_0 出发,并考虑如下序列 \mathbf{x}_0, \mathbf{x}_1, \mathbf{x}_2, \dots 使得

\mathbf{x}_{n+1}=\mathbf{x}_n-\gamma_n \nabla F(\mathbf{x}_n),\ n \ge 0.

因此可得到

F(\mathbf{x}_0)\ge F(\mathbf{x}_1)\ge F(\mathbf{x}_2)\ge \cdots,

如果顺利的话序列 (\mathbf{x}_n) 收敛到期望的极值。注意每次迭代步长 \gamma 可以改变。

猜你喜欢

转载自www.cnblogs.com/kex1n/p/9038858.html