6.gitchat训练营-线性回归——梯度下降法求解目标函数

1.y=a+bx的目标函数

        前面已知,线性回归的目标函数为:
J(a,b)=\frac{1}{2m}\sum_{i=1}^m(a+bx^{(i)}-y^{(i)})^2
        J(a,b)是一个二元函数。我们要求的是:两个参数ab的值。要满足的条件是:ab取这个值的时候,J(a,b)的值达到最小。
        这里使用梯度下降法进行求解。

2.斜率、导数和微偏分

        梯度下降法的步骤总结起来就是:从任意点开始,在该点对目标函数求导,沿着导数方向(梯度)“走”(下降)一个给定步长,如此循环迭代,直至“走到”导数为0的位置,则达到极小值。
        为什么要求导呢?从下图可以看到:曲线表示一个函数,它在一个点处的到数值就是经过这个点的函数曲线切线的斜率。

函数求导

        导数表现的是函数
f(x)
x
轴上某一点
x_0
处,沿着
x
轴正方向的变化率/变化趋势,记作
f'(x_0)

        在
x
轴上某一点处,如果
f'(x_0)>0
,说明
f(x)
的函数值在
x_0
点沿
x
轴正方向是趋于增加的;如果
f'(x_0)<0
,说明
f(x)
的函数值在
x_0
点沿
x
轴正方向是趋于减少的。
        一元函数在某一点处沿
x
轴正方向的变化率称为导数。但如果是二元或更多元的函数(自变量维度>=2),则某一点处沿某一维度坐标轴正方向的变化率称为偏导数
        导数/偏导数表现的是变化率,而变化本身,用另一个概念来表示,这个概念就是微分(对应偏导数,二元以上函数有偏微分)。
        (偏)导数是针对函数上的一个点而言的,是一个值。而(偏)微分则是一个函数,其中的每个点表达的是原函数上各点沿着(偏)导数方向的变化。
        直观而不严格的来说,(偏)微分就是沿着(偏)导数的方向,产生了一个无穷小的增量。
        当我们求出了一个函数的(偏)微分函数后,将某个变量带入其中,得出的(偏)微分函数对应的函数值,就是原函数在该点处,对该自变量求导的导数值
        所以,只要我们求出了目标函数的(偏)微分函数,那么目标函数自变量值域内每一点的导数值也就都可以求了。
        我们只需要记住最基本的求导规则就好,函数(整体,而非在一个点处)求导的结果,就是微分函数。
        这里会用到的仅仅是常用规则中最常用的的几条:

        1. 常数的导数是零:(c)'=0
        2. xn次幂的导数是n倍的xn-1次幂:(x^n)'=nx^{n-1}
        3. 对常数乘以函数求导,结果等于该常数乘以函数的导数:(cf)'=cf'
        4. 两个函数fg的和的导数为:(f+g)'=f'+g'
        5. 两个函数fg的积的导数为:(fg)'=f'g+fg'

3.梯度下降求解目标函数

        对于J(a,b)而言,有两个参数ab,函数J分别对自变量ab取偏微分的结果是:
\frac{\partial J(a,b)}{\partial a}=\frac{1}{(m)}\sum^m_{i=1}((a+bx^{(i)})-y^{(i)})
\frac{\partial J(a,b)}{\partial b}=\frac{1}{(m)}\sum^m_{i=1}x^{(i)}((a+bx^{(i)})-y^{(i)})
        Step 1:任意给定ab的初值。

        a=0;b=0;

        Step 2:用梯度下降法求解ab,为代码如下:
repeat until convergence{
        a = a - \alpha\frac{\partial J(a,b)}{\partial a}
        b = b - \alpha\frac{\partial J(a,b)}{\partial b}
}
        当下降的高度小于某个指定的阈值(近似收敛至最优结果),则停止下降。
        将上面展开的式子带入上面的代码,就是:
repeat until convergence{
        sumA=0
        sumB=0
        for  i  =  1  to  m{
                sumA  =  sumA  +  (a+bx^{(i)}-y^{(i)})
                sumB  =  sumB  +  x^{(i)}(a+bx^{(i)}-y^{(i)})
        }
}

4.通用线性回归模型的目标函数求解

        y=a+bx=>f(x)=a+bx实际上是线性回归模型的一个特例——自变量只有一个维度的特例,在这个模型中,自变量x是一个一维向量,可写作[x]
        通用的线性回归函数,是接受n维自变量的,相应的模型函数写出来就是一下这样的:
f(x_1,x_2,...,x_n)=a+b_1x_1+b_2x_2+...+b_nx_n
        我们用\theta _0来代替a,用\theta _1\theta _n来代替b_1b_n,那么写出来就是这样的:
f(1,x_1,x_2,...,x_n)=\theta _0+\theta _1x_1+\theta _2x_2+...+\theta _nx_n
        我们设x_0=1,因此:
f(x_0,x_1,x_2,...,x_n)=\theta _0x_0+\theta _1x_1+\theta _2x_2+...+\theta _nx_n
        那么对应的,n维自变量的线性回归模型对应的目标函数就是:
J(\theta _0,\theta _1,...,\theta _n)=\frac{1}{(2m)}\sum^m_{(i=1)}(y'^{(i)}-y^{(i)})^2
=\frac{1}{2m}\sum^m_{i=1}(\theta _0+\theta _1x_1^{(i)}+\theta _2x_2^{(i)}+...+\theta _nx_n^{(i)}-y^{(i)})^2
        再设:
X=[x_0,x_1,x_2,...,x_n], Θ=[\theta _0, \theta _1, \theta _2,...,\theta _n]
        然后将模型函数简写成:
f(X)=Θ^TX
        根据习惯,我们在这里将f(X)写作h(X),因此,模型函数就成了:
h(X)=Θ^TX
        同样应用梯度下降,实现的过程是:
repeat until convergence{
        Θ=Θ-\alpha\frac{\partial J(Θ)}{\partial Θ}
}
        细化为针对theta_j的形式就是:
repeat until convergence{
        for  j  =  1  to  n{
                sum_j=0
                for  i  =  1  to  m{
                    sum_j=sum_j+(\theta _0+\theta _1x_1^{(i)}+\theta _2x_2^{(i)}+...+\theta _nx_n^{(i)}-y^{(i)})x_j^{(i)}
                }
                \theta _j=\theta _j-\alpha\frac{sum_j}{m}
        }
}
        这就是梯度下降的通用形式。

5.线性回归的超参数

        作为一个线性回归模型,本身的参数是Θ,在开始训练之前,Θ(无论是多少维),具体的数值都不知道,训练过程就是求解Θ中各维度数值的过程。
        当我们使用梯度下降求解时,梯度下降算法中的步长参数:\alpha,就是训练线性回归模型的超参数。
        训练程序通过梯度下降的计算,自动求出了Θ的值,而\alpha却是无法求解的,必须手工指定。反之,如果没有指定\alpha,梯度下降运算则根本无法进行。
        对于线性回归而言,只要用到梯度下降,就会有步长参数alpha这个超参数
        如果训练结果偏差较大,可以尝试调小步长;如果模型质量不错但是训练效率太低,可以适当放大步长;也可以尝试使用动态步长,开始步长较大,随着梯度的缩小,步长同样缩小......
        如果训练程序是通过人工指定迭代次数来确定退出条件,则迭代次数也是一个超参数。
        如果训练程序以模型结果与真实结果的整体差值小于某一个阈值为退出条件,则这个阈值就是超参数。
        在模型类型和训练数据确定的情况下,超参数的设置就成了影响模型最终质量的关键。
        而往往一个模型会涉及多个超参数,如何制定策略在最少尝试的情况下让所有超参数设置的结果达到最佳,是一个在实践中非常重要有没有统一方法可以解决的问题。

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

推荐阅读更多精彩内容