梯度下降法理论与实践

理论基础

现在比如有两个参数的损失函数

我们的目的是使之最小也就是得到能够使J函数最小的theta_0,theta_1,公式表达为:
我们画出当theta_0,theta_1取不同值时J的变化图是这样的
颜色越深代表J值越大。我们比如随便取一个点(theta_0,theta_1各等于某值时),此点如图所示:

此时比如我们站在此点上,想要快速到达谷底(也就是使J函数达到极小值)。此时我们放眼望去,环望四周,很自然的向此时坡最陡的方向的下方迈上一步,接着在继续重复我们的过程,直到四周都比当下高 (此时)为止,就是走到谷底(J函数达到极小值),完成目标。

我们来看看我们的路线

这时会不会有人问为什么会是极小值。
这时我们重新找一个点

跟上面的过程一样,我们再走一遍

你瞅瞅,是不是到达另一个谷底。所以说,这种方法找的是局部的最小值,也就是全局的极小值。这种方法就是梯度下降算法。

此时介绍梯度下降算法,简单起见,我们从一个变量开始,比如此时我们的损失函数J是

随机给theta_1取一个值,此点如上图所示。对此点求导:

此时的导数值为正数,我们要向它的相反方向走一步,到达如图所示点


此时的公式表达为:
alpha为learning rate 即学习率,这里表示用来控制步伐的大小,取值范围 (0-1] (一般取值1,0.1,0.01,0.001... 也或者0.3,0.03,0.003...根据情况而定)。

不断的重复上面公式的过程,直到
等于0或者特别小(多小,根据实际情况设定)停止。
我们再考虑随机点在左边的情况。比如取点如图所示:

此时的J在theta_1点的导数
为负数。
此时我们应该向右走,则此时的表达式为

更新后



跟上面的过程一样,直到更新到导数为0或特别小为止。

由此可见,无论导数正负,表达式一样。所以我们规定梯度下降算法的更新过程就是

此时我们具体谈谈alpha:

alpha取值过小,则会有这样的情况:
到达极小值的速度特别慢。
而alpha取值过大,则还会有这种情况:

永远找不到极小值。

所以如果你想再alpha上做优化,可以这样

alpha先大后小。(根据实验情况而定)
现在我们再回归到我们的
函数中来。
我们对它进行优化的表达式为:
(这里是偏导)
这里有个误区,正确的更新过程是这样的:

等更新完再赋值。

下面的做法是错误的:

更新完的theta_0在temp1的更新过程中被调用,此时已经不是之前的theta_0了。切记。

代码实践

这是个拟合直线的代码实现。


我们要将数据统一收缩到 [-1 - 1] 之间。
X = ( X - average(X) ) / X.max
Y = ( Y - average(Y) ) / Y.max

为什么要这么做呢?
因为如果不做缩小处理,在矩阵运算时,非常有可能出现无穷大或者无穷小,导致无法计算。

缩小处理可以很容易画出模拟线条。

缩小处理在计算机中处理速度更快。


我们看看图:


这里我设置a = 0.01是为了下面的模拟直线除数不为0设置的。一般情况下,初始化 a = b = 0。(这里a, b就是上面的theta_0,theta_1)
下面进行矩阵化:



上面图片的y1 - y4是预测值
下面代码的Y是真实值



预测值函数

拟合线段形成过程

更新过程



最终的线段是

注:代码实现以上图片来自2014stanford机器学习视频


我的公众号,喜欢的可以关注我呀。

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

推荐阅读更多精彩内容

  • 转载-刘建平Pinard-www.cnblogs.com/pinard/p/5970503.html 在求解机器学...
    商三郎阅读 3,490评论 0 2
  • 前言 梯度下降算法现在变的越来越流行,但是对于使用者来说,它的优化过程变的越来越黑盒。本文我们介绍下不通梯度下降算...
    wendaJ阅读 1,522评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,594评论 18 139
  • 简书无法显示MathJax数学公式,请到这里阅读: 我的机器学习笔记(二) - 单变量线性回归 课程地址:Line...
    Daniellaah阅读 1,831评论 0 4
  • 肖逸按响门铃,听到一溜小跑的脚步声由远及近,每一步的音节仿佛都重重敲击在温舒怡的心上,砰砰砰地响。温舒怡深呼吸一口...
    冯路易阅读 203评论 0 0