梯度与梯度下降

本篇系列地介绍了导数、偏导数、方向导数、梯度和梯度下降算法。

导数

图1

导数的定义:
f^{'}(x_0) = \lim_{\triangle x \to 0} \frac{\triangle y}{\triangle x} = \lim_{\triangle x \to 0}\frac {f(x_0 + \triangle x) - f(x_0)}{\triangle x},(1)
导数反映的是函数f(x)在某一点处沿x正方向的变化率(即变化的趋势和猛烈程度)f^{'}(x_0)>0表明函数f(x)x_0点处沿x正方向有增加的趋势f^{'}(x_0)<0表明函数f(x)x_0点处沿x正方向有减小的趋势f^{'}(x_0)的绝对值越大,表明函数f(x)x_0点处增加或者减小的趋势越猛烈(也就是函数切线越陡峭)。

某一点的导数值还能说是这一点处切线的斜率

符号解释
(1) \triangle x: x的变化量,是实实在在的值(比如是0.001)
(2) \triangle y: \triangle y = f(x_0 + \triangle x) - f(x_0),是函数值的增量,也是可以计算出来的实实在在的值(比如是2.5 - 2.3 = 0.2)
(3)dxdy是两个无穷小量
(4)dx: x的变化量\triangle x趋近于0时,将这个很小很小的\triangle x记作dx
(5) 虽然我不确定dx\triangle x是否相等,但dy\triangle y肯定不想等,只能是近似相等

dy\triangle y差多少?
在极限微分学中,先有导数定义,所以我们从导数定义开始,
由导数定义f^{'}(x_0) = \lim_{\triangle x \to 0} \frac{\triangle y}{\triangle x}可得,\frac{\triangle y}{\triangle x} - f^{'}(x)=a, \lim_{\triangle x \to 0}a=0,所以得到,
\triangle x \to 0\triangle y = f^{'}(x) \triangle x + a \triangle x,其中dy = f^{'}(x) \triangle x
所以,\triangle y = dy + a \triangle xdy\triangle y的主要部分,二者相差a \triangle x(这应该是个高阶无穷小o(\triangle x)

偏导数

导数与偏导数的区别:导数是一元函数y=f(x)里的概念,偏导数是二元及多元函数z=f(x, y)里的概念

偏导数定义:

\frac{\partial }{\partial x_i}f(x_0, x_1, ..., x_n) = \lim_{\triangle x \to 0} \frac{\triangle y}{\triangle x} = \lim_{\triangle x \to 0} \frac{f(x_0, x_1, ..., x_i + \triangle x, ..., x_n) - f(x_0, x_1, ..., x_i, ..., x_n)}{\triangle x},(2)

偏导数本质上与导数一致,是固定其他自变量,只沿着某一个自变量方向的导数,称之为该自变量的偏导数

z = f(x, y)为例(该函数表示空间中的一个平面),计算点(x_0, y_0)处的偏导数,该函数总共有两个自变量xy,则有两个偏导数:1)固定其他自变量(即另y=y_0)求沿着x方向的偏导数\frac {\partial }{\partial x}f(x, y_0);2)固定其他自变量(即另x=x_0)求沿着y方向的偏导数\frac {\partial }{\partial x}f(x_0, y)

图2

  • 多元函数中某一点的偏导数,就是函数沿着某个自变量方向的导数
  • 偏导数就是函数在某个自变量方向的切线斜率(这与一元函数中导数的切线意义是一样的)
  • 同样,偏导数也反映了函数在某个自变量方向的变化率

偏导数并没有什么独特的神奇之处,就是一元函数导数在多元函数上的扩充。一元函数因为只有一个自变量(比如y = f(x)),只能在这一个方向上求导;多元函数因为有两个或者两个以上的自变量(比如z=f(x,y)),所以就需要在多个方向上求导,起了个新名字,就是偏导数,仅此而已。

方向导数

图3

z=f(x,y)为例,现在我不仅想要函数在某一点处沿着x轴和沿着y轴的导数(这两个导数叫做偏导数),我还想求函数在其他任意方向的导数,毕竟除了两个自变量轴的方向,还有其他无数个方向。这就是方向导数。

图4

假设z=f(x,y)为一个曲面,P(x_0, y_0)为定义域f中的一个点,单位向量\mathbf{u}=cos\theta * \mathbf{i} + sin\theta * \mathbf{j}(不仅沿着x方向、y方向有单位向量,其他方向也是可以有单位向量的),其中\theta是此方向向量与x轴正方向的夹角,显然,随着夹角的变化,\mathbf{u}可以表示任意方向。

那我们接着求函数z=f(x, y)u方向上的导数(也能叫做新名字 “方向导数”吧),如果下列的极限值存在,
\frac{\partial f}{\partial l}|_{(x_0, y_0)} = \lim_{t \to 0} \frac{f(x_0 + tcos\theta, y_0 + tsin\theta) - f(x_0, y_0)}{t},(3)
则该极限值被称为函数z=f(x, y)u方向上的方向导数,记为D_uf=\frac{\partial f}{\partial l}|_{(x_0, y_0)}

由全微分定义:
f(x_0 + \triangle x, y_0 + \triangle y) - f(x_0, y_0) = f_{x}(x_0, y_0) \triangle x + f_{y}(x_0, y_0) \triangle y + o(\sqrt{(\triangle x) ^2 + (\triangle y) ^2}),(4)

\triangle x = t cos\theta, \triangle y = t sin\theta, \sqrt{(\triangle x) ^2 + (\triangle y) ^2}=t,则有
\lim_{t \to 0} \frac{f(x_0 + \triangle x, y_0 + \triangle y) - f(x_0, y_0)}{t} = f_{x}(x_0, y_0) cos \theta + f_{y}(x_0, y_0) sin \theta,(5)

结合式(3)和式(5),得到
\frac{\partial f}{\partial l}|_{(x_0, y_0)} = f_{x}(x_0, y_0) cos \theta + f_{y}(x_0, y_0) sin \theta,(6)

式(6)说明,任意方向的导数(即方向导数)可以通过偏导数和方向角\theta来表示

梯度

函数在某一点处具有无数个方向导数,这些方向导数描述了函数所有方向上的变化率,那么自然会有一个问题:函数在哪个方向导数上变化率最大(即变化最快)呢?显然这会是个很重要的性质。

  • 将变化率最大的那个方向导数叫做梯度。
  • 最大方向导数的方向叫做梯度方向。
  • 函数沿着梯度方向变化率最大,变化最快,切线斜率最大

那么这个最大的方向导数是哪个方向呢?

由公式(6),另\mathbf{A}=(f_x(x, y), f_y(x, y))\mathbf{I} = (cos \theta , sin \theta)\mathbf{A},\mathbf{I}是两个向量,则有
\frac{\partial f}{\partial l}|_{(x_0, y_0)} = |\mathbf{A}| * |\mathbf{I}| * cos \alpha,(7)
其中\alpha表示向量\mathbf{A}与向量\mathbf{I}之间的夹角

由公式(7)可知,当\alpha=0,即cos \alpha=1时,方向导数\frac{\partial f}{\partial l}|_{(x_0, y_0)}取得最大值,也就是说当向量\mathbf{I}与向量\mathbf{A}方向一致时,具有最大的方向导数,即梯度方向

  • 梯度是一个向量
  • 梯度的方向就是偏导数组成的向量的方向,虽然\theta在不停变化,但只有变化到与偏导数向量的方向一致时,才是最大方向导数的方向,即梯度方向。
  • 二元函数的梯度可以表示为\triangledown f(x, y) = (\frac{\partial f}{\partial x}, \frac{\partial f}{\partial y})
  • 多元函数的梯度可以表示为\triangledown f(x_0, x_1, ..., x_n) = (\frac{\partial f}{\partial x_0}, \frac{\partial f}{\partial x_1}, ..., \frac{\partial f}{\partial x_n})

总之,梯度是一个向量,可表示为\triangledown f(x_0, x_1, ..., x_n) = (\frac{\partial f}{\partial x_0}, \frac{\partial f}{\partial x_1}, ..., \frac{\partial f}{\partial x_n}),函数沿着梯度方向多元函数变化率最大,切线斜率最大,函数图像最陡峭。

梯度下降

讲清楚梯度的概念,梯度下降不再是问题,梯度下降是指函数沿着梯度方向(这里是梯度的反方向)下降。

图5
图6

图5表示函数f(x, y)=xe^{-(x^2 + y^2)}的曲面,图6表示曲面上各点的梯度,蓝色箭头的长度和方向分别表示当前点的梯度大小和梯度方向。
显然发现,在函数的谷底到峰顶的过程中,梯度值比较大,因为这里的曲面很陡峭;而在谷底附近和峰顶附近,由于曲面相对比较平缓,所以梯度值小;而且蓝色箭头的方向(梯度方向)是函数曲面增长的方向,这就说明梯度这个概念是可以有效表示这些性质的。

梯度下降算法的求解:
(1) 梯度下降算法的表达式为:
\mathbf{\theta} _{t+1} = \mathbf{\theta} _{t} - \alpha_{t} \triangledown f(\theta_{t}))
其中,\theta为向量,例如\theta = (\theta_1, \theta_2)
(2) 假设目标函数为:
J(\theta) = J(\theta_1, \theta_2) = \theta_{1}^2 + \theta_{2}^2
(3) 那么,根据梯度公式,参数更新过程为:
(\theta_1, \theta_2) := (\theta_1, \theta_2) - \alpha (\frac{d}{d\theta_1}J(\theta_1, \theta_2)), \frac{d}{d\theta_2}J(\theta_1, \theta_2)))
或者分开求解:
\theta_1 := \theta_1 - \alpha (\frac{d}{d\theta_1}J(\theta_1, \theta_2))=\theta_1 - \alpha* 2 \theta_1,
\theta_2 := \theta_2 - \alpha (\frac{d}{d\theta_2}J(\theta_1, \theta_2))=\theta_2 -\alpha* 2 \theta_2,

这样参数得以更新,需要注意的是:

  • 梯度方向是函数增长的方向,由于我们希望沿着函数下降的方向移动,所以这里使用“减号”
  • 梯度值是变化率,而不是函数值的变化,需要乘以一个\alpha,才算是函数值的变化。类似于\triangle y = f^{'} \triangle x,梯度值相当于f^{'}\triangle x相当于\alpha,我们希望减去\triangle y,而不是减去f^{'},所以这里需要\alpha

参考文献

导数、微分、偏导数、全微分、方向导数、梯度的定义与关系
动画带你理解偏导数和梯度
Gradient Descent Derivation

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,125评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,293评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,054评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,077评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,096评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,062评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,988评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,817评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,266评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,486评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,646评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,375评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,974评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,621评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,642评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,538评论 2 352

推荐阅读更多精彩内容