单变量的线性回归模型--梯度下降算法


前言

之前已经提到了代价函数,它是衡量我们目前的预测函数h的好坏程度的,可是不能光让它在那坏着,我们需要让我们的代价函数变好起来,这就需要我们的梯度下降算法登场了(gradient descent)。

怎么下降

首先优化代价函数的方法肯定不止这一种,但是这一种比较常见而且也是很通俗易懂的,所以一般入门都会提到这个算法。还记得我们的代价函数长什么样子吗。

代价函数

可以看到如果只看每一项(把求和符号和前面的除2m去掉),它就是一个二次函数(关于θ的),高中时候就知道二次函数是一个抛物线的形式。这里假设它是个开口朝上的二次函数,我们在经过初始化后的θ带进去后值比较靠上方的位置如下

我们知道这个函数的值代表着我们的输出结果离我们的目标值的差距,所以如果像上面的图一样我们的点对应的y值很大,我们需要让我们的点尽可能的下降到最低点。这里有两个办法,我们知道这种抛物线的最低点我们可以直接计算获得,这种方法这里暂时不说,所说它就是一条公式,但是要推导出来可没那么容易(这里的公式可不是高中那种就一个输入X的公式,而是输入很多的更为复杂的),直接套公式适用于训练集不算太大的情况下,因为数据多的时候计算量超大。

下面还是说回我们的主角,我们需要一种办法,每一步的计算量不大让它的值慢慢下降到最低点,就如一个人下山一样每次只迈一小步,然后慢慢向下到山底。

很巧的是我们有一个东西可以反映出我们曲线在每一点的陡峭程度——导数,大学知识还没忘都还记得,在某一点的导数就是该函数在这一点的切线,曲线越接近垂直,导数在这一点的值就越大。这是一种很好的方法让我们减小我们的θ值。

上图中那个点的切线斜率是正的,并且比较大的,那么让我们的初始θ减去它自己在这一点的导数(也就是斜率),现在我们的点便会下降一点,而且根据图形可以看出,越往下降,切线的斜率越小,慢慢的就会接近最低点了。

如何计算

一定记住一点,代价函数是关于θ的函数而不是x,预测函数h才是关于x的,在代价函数里x都是已知的量。

其实不难发现上面介绍的梯度下降是在只考虑θ1的情况下,并没有考虑之前公式里的θ0。现在我们就只考虑θ1的情况下来看看该如何计算上述方法。


这个式子有几个地方需要注意,首先就是减号后面,忽略掉α后这个式子就是代价函数对θ1的导数。记住现在的h(x):

h(xi)=θ1*xi;

导数没忘的计算出这个结果不是难事。

第二点就是刚才我们忽略掉的α,它被称作学习率(learning rate),就是让导数乘上它,用来决定下降的幅度,如何选取它并没有明确的规定,需要你在实际问题中去尝试。太小的学习率会让这个算法执行很多遍才能到达理想的效果。但是太大的学习率则更为致命,它可能导致你这个函数最终发散,永远得不到你想要的结果。

过大的学习率会导致发散

为什么还会发散呢,根据上图,假设我们的初始点在a点,然后下降到b点再到c点,此时如果学习率太大,下一次的下降有可能跨过了最低点而到了d点,至此我们的算法就走上了不归路,此时点到了左边,斜率变成负的了,根据上面的梯度下降的式子,减去一个负数就是加上它的绝对值,所以我们的点会越来越高,而且每次跨度会比上一次更大。

综上,过大的学习率会让我们的点冲破天际,一去不复返,所以选取学习率也是比较重要的。

最后还有一点,上面例子都是举了开口朝上的函数以及初始点处的切线斜率为正的情况。其它情况经过验证其实都是正确的,这里不一一列举。

两个参数呢

如果我们把θ0加上呢,其实跟上面没什么两样,我们只不过是对两个θ分别减去它们的导数,循环一定的次数,只不过多变量求导我们给了它另外的名字,叫做偏导数,球θ0偏导的时候只要把θ1看作常量,然后正常对θ0求导就行了(不知道的只能去翻翻高数书了-。-).所以最终的梯度下降的数学算式如下:

可以看到θ1跟刚才一样,θ0也很容易得出。

那么经过循环执行这一步骤,可能是100次,或者500次,我们就可以得到我们想要的θ,这时我们的预测函数h表现那是very good的。

结尾

至此单变量的线性回归模型已经大致讲完了,具体实现的话,基本所有语言都能做,像matlab,python,java,octave之类的。不过现在的大趋势是python,可以说它在这方面真的很火,而且又有封装的很好的各种科学计算库,像numpy之类的,所以实现上述过程并不困难。

不过还有一些技巧并没有写出来,像上面的梯度下降,我们真的要写个for循环然后一遍一遍的执行吗。

答案是否定的,有一种叫做向量化的办法可以让我们只需要一行代码就可以执行for循环做的所有工作。下面还会继续介绍这种方法,简洁才是王道对吧,况且速度也快了不止一点。

当然这是最最简单的模型了,我们还有多变量的线性回归,逻辑回归,还有近几年大火的神经网络以及各种其它模型......

人工智能的领域是十分广阔的,没有人精通人工智能的所有部分,有的从事深度网络,有的从事计算机视觉或是语音等等。

人类发展到现在真的是不可思议不是吗。

当然我也只是个入门的小菜,接下来我也还会继续学习,不断充实自己,人的一生就是不断学习的过程这话说的还真不错,学累了就去玩会吧(><)。

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

推荐阅读更多精彩内容