您的位置:首页 > 其它

Andrew Ng 机器学习笔记 02 :线性回归与梯度下降

2018-03-14 15:50 585 查看

代价函数/损失函数:(cost function / lost function)

目标:衡量模型预测出来的值h(θ)与真实值y之间的差异,当取到代价函数J的最小值时,就得到了最优的参数θ。 
在线性回归中,最常用的是均方误差(Mean squared error),具体形式为:



数据集:训练集(training set) ,验证集(validation set) ,测试集(test set)
训练样本:(training example x(i),y(i) )
线性回归模型:(linear regression)如:hθ(x)=θ0+θ1x
x:输入变量(features) 
h:假设函数(hypothesis)
hθ(x):用参数θ和x预测出来的y值;
y:原训练样本中的y值,也就是标准答案
i:第i个样本
m:样本数量(number of training examples)

θi:模型参数 

代价函数的直观体现

图1:不同参数θi可以拟合出不同的直线



图2:代价函数J(θ)随参数的变化而变化



图3:有多个参数θ时,代价函数表现为曲面图



图4:将三维曲面图转换为轮廓图 ( contour plots / contour figures )
图中颜色相同的线为等高线,表示J(θ0,θ1)相等的所有点的集合。



导数

导数定义如下:





导数反映的是函数f(x)在x轴上某一点处沿着x轴正方向的变化率/变化趋势。
如果f’(x)>0,说明f(x)的函数值在x点沿x轴正方向是趋于增加的;
如果f’(x)<0,说明f(x)的函数值在x点沿x轴正方向是趋于减少的。

偏导数

偏导数定义如下:
 


一个多变量的函数的偏导数,是它关于其中一个变量的导数,而保持其他变量恒定(相对于全导数,在其中所有变量都允许变化) 函数f关于变量x的偏导数写为 f'x或∂f/∂x  。偏导数符号∂是全导数符号d的变体。 偏导数反映函数y=f(x1,x2,…,xn)在某一点处沿某一坐标轴(x1,x2,…,xn)正方向的变化率。



对于f = x2 + xy + y2,求出函数在点(1, 1, 3)的对x的偏导数;对应的切线与xOz平面平行。



方向导数

方向导数定义如下: 



导数和偏导数的定义中,均是沿坐标轴正方向讨论函数的变化率。
而方向导数则是求某一点在某一趋近方向上的导数值,反映函数在特定方向上的变化率。

梯度

梯度的定义如下: 



梯度即函数在某一点最大的方向导数,函数沿梯度方向函数有最大的变化率,梯度的值是最大方向导数的值。 

梯度下降 ( Gradient Descent )

优化目标函数,就是沿着负梯度方向去减小函数值,以此达到最优点。 





θ0, θ1初始值不同的时候,我们会找到不同局部最小值,这个特点正是"梯度下降"算法的特点。
一般线性回归的代价函数都是凸函数,只有一个全局最优值,如下图:



梯度下降算法:



所有的参数必须需要同步更新,即先计算temp0,temp1的值,再赋值给θ0, θ1 



:= 表示赋值,例如a := b 表示把b的值赋值给a
= 表示判断是否相等,例如 a = b表示判断a等于b

重复上述过程,直到函数收敛,得到的θ0, θ1值即为最佳参数值
α表示learning rate 学习速率:α的值太大,则迭代的步伐太大,会导致直接跨过谷底到达另一端,所谓“步子太大,迈过山谷”。α的值太小,则迭代的步伐太小,下降的速率太小,导致求解过程太慢。当函数接近局部最小值的时候,偏导数的值将会逐渐递减,使得梯度下降法自然变成“小步子”。
J(θ0,θ1)对于θ0和θ1分别求导,可得:



证明过程如下:



若假设函数hθ(x)不止2个参数,可能会有n+1个参数θ0,θ1,θ2 ... θn,此时对应特征向量x有n维,因此可以得到n个参数的线性回归模型:



对应的梯度下降算法:



展开求偏导数后,可得:



这里的梯度下降算法也称为”Batch” 梯度下降: 因为梯度下降的每一步都使用了所有的训练样本。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  机器学习