继续,第一章中的代价函数与梯度下降算法介绍

与几个同专业的朋友吃完饭,坐在电脑前又敲了会字,传上来

模型建立(术语介绍)

为方便将来讨论机器学习的方便,我们这里定义:\(x^{(i)}\)为输入变量,也成为输入的特征变量,以后将更多的应用术语Features(特征)来描述。\(y^{(i)}\)表示第i个输出或试图预测的目标变量。\((x^{(i)},y^{(i)})\)为一对训练集,这里的i=1……m。

为了更清晰与正式的描述有监督学习问题,我们目的是给定一个训练集,去学习一个函数h:X->Y。因此h(x)是对于y值得有效预测,一般地,该函数也成为假设函数。如下图所示:

![process of supervised learning](http://wx1.sinaimg.cn/mw690/7b8d2108gy1fgbcv78ajxj2079078t8r.jpg)
当试图预测的目标变量如房价预测的例子中一样为连续时,我们称这问题为回归问题。

当输出y可以用几个小的离散值进行描述时(如给定居住地的面积,我们来预测该区域为公寓还是别墅),我们称该问题为分类问题。

代价函数(Cost Function)

对于假设函数的精确度测量可以是利用代价函数,代价函数对所有结果的假设值与输入x输出y之间平均化差异(事实上就是平均化的概念)

![cost fun](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fgbcv789ihj20ba01rt8k.jpg)
该函数又称为平方误差函数或方均根误差,其中在取平均后乘以($\frac{1}{2}$)的目的是便于接下来的梯度运算,在接下来的梯度运算中求偏导数可以消除($\frac{1}{2}$)。

直观感受--代价函数(1)

我们利用x-y轴坐标进一步用图形描述它,这里我们尽力用一条直线通过这些已有的数据点(\(x^{(i)},y^{(i)}\))。如下图所示:

![intution1](http://wx4.sinaimg.cn/mw690/7b8d2108gy1fgbcv7lf0mj20bl065t97.jpg)
我们的目标是找到一条最有可能的直线,这条直线和所有的数据集构成的点最近。理想情况下,此条线通过所有的点集,这时关于参数$\theta_{0},\theta_{1}$代价函数$J(\theta_{0},\theta_{1})$最小为0。上图反应该理想情况:

进一步的,当把\(\theta_{1}=0.5\) ,我们可以看到哦每个点与线的距离增大,有下图:

![increase theta](http://wx4.sinaimg.cn/mw690/7b8d2108gy1fgbcwbb9q6j20bp06wjrr.jpg)
将不同的theta取值下所计算出的代价函数用plot绘出:
![plot](http://wx1.sinaimg.cn/mw690/7b8d2108gy1fgbcwbgjy8j208l07vt90.jpg)
从上图我们可以看出,以代价函数的最小值为目的时,$\theta_{1}=1$ 下我们得到全局最小值0。

直观感受--代价函数2

将参数从\(\theta_{1}\) 提升到theta0和theta1,这时关于参数theta的代价函数描绘需要用到contour(等高线)。contour包含很多线,同一根线在x-y轴上取截然不同的两个点时,表示的值是相同的。

\(\theta_{0}=800,\theta_{1}=0.5\) 此时假设函数如下:

![contour plot1](http://wx4.sinaimg.cn/mw690/7b8d2108gy1fgbdwddpe7j20if09utak.jpg)
取$\theta_{0}=360,\theta_{1}=0$ 此时假设函数如下:
![contour plot2](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fgbdwe84imj20hx09ytag.jpg)
取$\theta_{0}=250,\theta_{1}=0.12$ 此时假设函数如下:
![contour plot3](http://wx1.sinaimg.cn/mw690/7b8d2108gy1fgbdwee00tj20hp0870ub.jpg)
# 梯度下降法(Gradient Decent)

现在我们有了假设函数及如何度量函数对数据的拟合程度。如何估计假设函数中的参数theta呢?这里引入梯度下降算法。

想象一下,我们依据theta0和theta1取值画出假设函数的取值。

![contour picture](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fgben6qn4fj20fg07yn0j.jpg)
图中的红色箭头表明了图像中的最小值,当代价函数到图像中的最底部时,我们知道此时的参数选取是成功的。而找寻最底部的方法是通过对我们的代价函数取微分,图中的黑色点处给出了下一步的“移动”方向,我们沿着这个方向向下寻找梯度最小值。而点与点间的步长取决于参数$\alpha$ 的选取,这里被称为学习速率。

梯度下降算法如下:grad algorithm

重复此算法直至数据聚集(最底部),这里j=0,1代表特征指标数。

注意:

利用梯度下降法更新参数theta时,一定要保持同步更新(simultaneous update)

![同步更新](http://wx4.sinaimg.cn/mw690/7b8d2108gy1fgben7edgbj20hq04274y.jpg)
# 直观感受--梯度下降法(theta_0=0)

首先摆出公式:\(\theta_{1} := \theta_{1}-\alpha\frac{\mathrm{d} }{\mathrm{d} \theta_{1}}J(\theta_{1})\)

  • 讨论关于theta1>0,theta1<0两种情况:about the value of Theta

  • 讨论关于学习速率\(\alpha\) 的两种情况:about alpha

    图中分别表示了\(\alpha\) 取值较小和取值较大两种情况下的代价函数取值。

这里需要说明:选取合适的学习速率即\(\alpha\)后,梯度递减算法会聚集到局部最小处,随着逐渐接近局部最小的过程中,下降步伐也会自动减小,因此不需要总是人为减小学习速率即\(\alpha\)

![auto decrease](http://wx2.sinaimg.cn/mw690/7b8d2108gy1fgbsmqrarij209p06rq2w.jpg)
# 实例--线性回归下的梯度下降运算

在具体的线性回归问题下,梯度下降公式可以得到进一步演化(重复执行直到数据聚集):

\(\theta_{0} := \theta_{0}-\alpha\frac{\mathrm{d}}{\mathrm{d} \theta_{0}}J(\theta_{0})\); --->
\(\theta_{1} := \theta_{1}-\alpha\frac{\mathrm{d}}{\mathrm{d} \theta_{1}}J(\theta_{1})\) --->

\(\theta_{0} := \theta_{0}-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x_i)-y_i)\);
\(\theta_{1} := \theta_{1}-\alpha\frac{1}{m}\sum_{i=1}^{m}((h_\theta(x_i)-y_i)x_i)\)

m表示训练集的个数,\(\theta_0\)为常数其保持与参数\(\theta_1\)同时更新,\((x_i,y_i)\)表示训练集的某一个数据。其中,如果我们从猜测假设函数开始,然后不断重复地这些梯度等式,我们的假设就会越来越好,因此,这里需要指明一点(因为,在之后的学习中这里需要注意),通过随机设置或设置假设函数参数为零,对于多次重复性的计算最后结果并没有明显影响。

因此,对于初始的代价函数J,有一个简单的梯度下降算法。这种方式看起来像是在整个训练集中重复同一步骤,这亦被称为:批量梯度下降。

注意一点:总体上来看,尽管梯度下降会在一个局部的最小值处汇聚,但是我们这里提到的线性回归优化问题仅有一个全局的最小处。因此在保证学习速率为合适值下,梯度下降值会汇聚在全局最小处。从下面椭圆等高图中可以看出,起始为(48,30),逐渐地曲线收敛在全局最小处。

![grad min](http://wx3.sinaimg.cn/mw690/7b8d2108gy1fgbsmr355qj208i06st91.jpg)
posted @ 2017-06-06 21:22  SrtFrmGNU  阅读(1024)  评论(0编辑  收藏  举报