梯度下降算法 (Gradient Descent)

已知了代价函数:
J(\theta_0, \theta_1) = \frac{1}{2m} \sum_{i=0}^m(h_\theta(x^{(i)})-y^{(i)})^2

我们需要一个算法来最小化 J(\theta_0, \theta_1),而梯度下降算法可以解决这个问题。

梯度下降算法不仅可以应用于多种函数的求解,不仅限于线性回归问题。
梯度下降算法可以解决更一般的问题,例如 J(\theta_0,\theta_1,\ldots,\theta_n) 求解该代价函数的最小值。

算法流程

回到线性回归上来,还是使用 J(\theta_0, \theta_1) 来说明。

  • \theta_0, \theta_1设置一个初始值,可以是任意值,但通常会设置成0;
  • 不断的改变\theta_0, \theta_1的值,让J(\theta_0, \theta_1)的值一直减小,直到找到J的最小值或局部最小值。

工作流程

ml_5.jpg

这是一个随 \theta_0, \theta_1 变化而导致 J 变化的图表。我们希望最小化这个函数,根据流程,先初始化一个\theta_0, \theta_1的值。

把这个图像想像成一座上,初始化的试过就是把你放在山的某处,现在你要下到山的最下面,也就是山谷底。

ml_6.gif

现在把自己旋转360度,寻找一个最快下山的方向,然后迈出一步,接着重复上次的过程继续找一个最快下山的方向迈出一步,重复上面的步骤,迈出一步又一步,直到一个局部最低点的位置。

下降的轨迹

ml_7.gif

当初始位置向右偏移一点,下降的轨迹就不一样了。

这样我们得到了两个局部最低点,当初始位置不同时会得到不同的局部最优解,这是梯度下降算法的一个特点。

取得下降方向的方法就是取代价函数的导数(即一个函数的切线),切线的斜率就是那个点的导数。当斜率趋向于0时就说明代价函数的值在下降。而每一步的步长则是由学习率(learning rate)\alpha 来表示。

例如:上图中每个 “星” 之间的距离就是由参数 \alpha 来确定,当 \alpha 较大时,步长就较大,同样的,\alpha较小时,步长就会变小;前进的方向则是由 J(\theta_0, \theta_1) 出的偏导数来决定。根据不同的起点,可能会在不同的终点结束。

定义

梯度下降算法的定义是:

重复下面的步骤直到J(\theta_0, \theta_1)收敛
\theta_j:=\theta_j−\alpha \frac{\partial}{\partial \theta_j} J(\theta_0, \theta_1), j \epsilon \left(0, 1\right)

j 表示索引,此例中可取0, 1

注意:
当改变参数 \theta_0, \theta_1, \ldots 时,需要注意的一点就是要同时改变这些参数,这对于获得正确的代价函数是非常重要的。

\color{green}{下面这个例子是正确的}
temp0:=\theta_0−\alpha \frac{\partial}{\partial \theta_0} J(\theta_0, \theta_1)
temp1:=\theta_1−\alpha \frac{\partial}{\partial \theta_1} J(\theta_0, \theta_1)
\theta_0:=temp0
\theta_1:=temp1
这样的一个步骤是正确的。

\color{red}{下面这个例子是错误的}
temp0:=\theta_0−\alpha \frac{\partial}{\partial \theta_0} J(\theta_0, \theta_1)
\theta_0:=temp0
temp1:=\theta_1−\alpha \frac{\partial}{\partial \theta_1} J(\theta_0, \theta_1)
\theta_1:=temp1

用一个例子来说明梯度下降算法:

有一个单变量线性回归的预测函数,同时将\theta_0=0,这样预测函数就是:h_\theta(x) = \theta_1x
这样梯度下降算法就是重复计算:
\theta_1:=\theta_1−\alpha \frac{\partial}{\partial \theta_1} J(\theta_1)

ml_8.jpg

红线就代表的代价函数的导数,即在这一点的斜率,上图的点上我们可以知道 \frac{\partial}{\partial \theta_1} J(\theta_1) \geq 0
代入式子中,我们可以得到\theta_1在变小,向左靠拢。

ml_9.jpg

当初始 \theta_1 在左边,它的斜率是负数,我们可以得到\theta_1在变大,向右靠拢。

当接近J函数的最底部时,\frac{\partial}{\partial \theta_1} J(\theta_1) 接近0。当到最理想的情况下,\frac{\partial}{\partial \theta_1} J(\theta_1) = 0,在这张情况下我们可以得到:\theta_1:=\theta_1−\alpha*0。即\theta_1 不会再变化。

由上图可知,当学习率\alpha 过小时,我们需要经过很多步才能到达最低点,耗时会更长。而当\alpha 过大时,可能会越过最低点,导致无法收敛

ml_10.jpg

总结一下:当越接近局部最小值的地方时,偏导数 \frac{\partial}{\partial \theta_1} J(\theta_1) 就越小,在\alpha不变的情况下,\theta_1 下降的步子也就越来越小,当达到局部最优时,\theta_1就不变了,因此,我们不需要减小\alpha的值。

应用到线性回归问题上

已知线性回归的预测函数:
h_\theta(x) = \theta_0 + \theta_1x

将预测函数代入到代价函数中并应用数学求导,可得到:

当j=0时:
\theta_0:=\theta_0 - \alpha \frac{1}{m} \sum_{i=0}^m(h_\theta(x_i)-y_i)
当j=1时:
\theta_1:=\theta_1 - \alpha \frac{1}{m} \sum_{i=0}^m((h_\theta(x_i)-y_i)x_i)

在线性回归问题中,我们从一个假设的\theta_0, \theta_1开始,重复应用这些梯度下降方程,之后我们的预测函数就会越来越精确。

转载自:
https://codeeper.com/2019/12/30/tech/machine_learning/linear_regression_gradient_descent.html

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

推荐阅读更多精彩内容