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

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

作者: 风吹柳_柳随风 | 来源:发表于2019-03-07 21:27 被阅读0次

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这个超参数
        如果训练结果偏差较大,可以尝试调小步长;如果模型质量不错但是训练效率太低,可以适当放大步长;也可以尝试使用动态步长,开始步长较大,随着梯度的缩小,步长同样缩小......
        如果训练程序是通过人工指定迭代次数来确定退出条件,则迭代次数也是一个超参数。
        如果训练程序以模型结果与真实结果的整体差值小于某一个阈值为退出条件,则这个阈值就是超参数。
        在模型类型和训练数据确定的情况下,超参数的设置就成了影响模型最终质量的关键。
        而往往一个模型会涉及多个超参数,如何制定策略在最少尝试的情况下让所有超参数设置的结果达到最佳,是一个在实践中非常重要有没有统一方法可以解决的问题。

相关文章

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/ryrhpqtx.html