梯度下降理论推导

最近一段时间关于机器学习、人工智能等话题充斥着各大社区。作为一枚热爱技术的系统工程师,我迫切想去揭开它神秘的面纱。

学习的过程是辛苦的,尤其是在大学数学早就还给老师的情况下。花了一点时间恶补了下线性代数,又看了网上很多优秀的博客,总算小有收获。特此将收获总结归纳,希望大家批评指正!

线性回归

让我们先来搞清楚什么是机器学习吧。

举个具体的的例子。我们现在手上有一些关于房屋价格的数据样本,这些数据样本包括了房屋的大小、卧室数量、建造年份,以及这个房屋所对应的价格。

然后机器学习就是让我们利用已知的这些数据去训练出一个有关房屋价格预判的数学模型。

我们假设房屋价格符合线性模型,也就是下面的一般线性方程。

一般线性方程.png

θ代表我们所选举的特征所占的权重。我们在评估一个房屋价格的时候,会选取房屋的大小、卧室数量等特征。

x则代表数据集中该特征的实际大小。例如A房屋的面积是120平方米、3个卧室……

h(θ)就是在当前特征向量θ下,对当前数据样本预测的房屋价格。

所以,你可以理解为机器学习做的事情就是给你一堆历史数据,然后让你找出一个最优的h(θ)函数。

初中的数学题目

已知一元一次函数 y=ax+b
x=2 y=3
x=3 y=5
问:当x=4时,y=?

是不是觉得这道题目特别简单?

其实机器学习做的事情和这道题目是一样的,我们的目的就是求出a和b的值,然后将x带入数学函数,求出目标值y

只是我们在处理实际问题的时候,遇到的模型肯定不是一元函数、大部分情况下他们也不是一次函数。而且,我们也不确定我们的数据就一定是符合某一种数学模型的,搞不好他都不是线性模型(这里我们先不讨论这种情况)。

那这种情况我们肯定不能用初中数学的解法,去将x和y的值代入数学模型求参数,那我们该怎么办呢?

最小二乘法

沿用上面的一般性回归假设函数,我们预测的房价是h(θ),我们设真实的房价值是Y。我们既然没有办法让h(θ)和Y完全一样,那么我们可以让他们的差尽可能的小,直到小到一个我们可以接受的误差范围。(比如房价500万和500.1万的误差我们是完全可以接受的)

这样,我们又引入了第二个数学公式——误差函数

误差函数.png

好了,又到了名词解释时间了。

上标i代表了是第i个训练样本,后面的y含义一样。

整个J(θ)的含义就是m个训练样本,预测值和真实值差的平方和*1/2。

至于为什么乘以1/2就是为了后面求导计算方便,并没有特殊意义。因为我们的目的是求这个函数在何处求得最小值(取得最小值时θ的值),那么乘以1/2并不影响对θ的求值。

梯度下降

既然是误差函数,那我们必然需要想办法让这个误差函数取得最小值了。

说到取最小值,那自然会想到对一个函数求导,当导数=0的时候就是函数的最小值的点了。但我们是个多元函数,所以只能挨个对每个变量求偏导,然后让函数沿着让导数下降的方向移动。

求偏导过程

所以,我们需要对每一个特征让它沿着导数递减的方向去移动:

大家可能会问,怎么莫名其妙多出了一个α?

原因是这样的,我们对一个函数求偏导数,我们得出的是这个函数是上升/下降和他们的幅度,如果一个函数过于陡峭,我们很有可能移动过多,跑到了最低点的另外一边,然后下一次迭代又跑到了另外一边,循环往复……

所以,我们就靠这个α来控制步长,避免移动过快或过慢 。

矩阵运算

其实,上面我们已经可以解决一般线性方程求近似最小值的问题了,但上面的方式不够直观,也不够简单,现在我们换一种解决方式——矩阵。

我们先将参数使用矩阵表示:

样本参数矩阵
样本值矩阵

其中m代表是m个样本。

当我们将样本使用矩阵表示以后,h(θ)的表示就变成了:

h(θ)的矩阵表示

通过使用矩阵,我们只需要一次矩阵运算就可以将预期值h(θ)计算出来了,是不是很方便?当然,还有更神奇的!

既然我们的h(θ)可以使用矩阵表示,那我们的误差函数J(θ)自然也可以使用矩阵去表示。

预测值与真实值误差

通过一个m*n的矩阵我们就可以将有N个特征值、M个训练样本的误差值表示出来。

上面我们是通过最小二乘法去表示损失函数的,现在我们将矩阵表达的误差函数代入最小二乘法,得到下面的J(θ)表达式:

矩阵表示的J(θ)

老套路,让我们来看看使用矩阵的时候,θ在何种情况下J(θ)取得最小值,也就是我们的目标θ矩阵。

在进行公示推导之前,我们先复习几个矩阵运算的基础知识。

矩阵运算

结合等式(2)和(3)我们又可以得出一个新的等式:

回忆完上面的线性代数基础以后,我们可以下面开始我们愉快的推导了:

在第三步的时候,我们利用了一个实数的trace等于这个实数的性质。

第四步的时候,我们利用了一个矩阵的trace=它的转置矩阵的trace的性质。

第五步的话,我们令A的转置=θ;B=X和它转置的积;C=I。

最后,我们令J(θ)的导数=0,这样θ的取值就代表了J(θ)的最小值。

所以,使用矩阵表示损失函数最小值的最终公式变为:

我们使用矩阵的目的是为了让我们的运算更简单易懂,我们推导出矩阵表示表达时的θ求值函数以后,只需要对样本参数做4次矩阵运算就可以求出特征矩阵,而不是像上面那样用好几个for循环。

怎么样,有没有感觉数学真的很神奇!

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

推荐阅读更多精彩内容