与几个同专业的朋友吃完饭,坐在电脑前又敲了会字,传上来
模型建立(术语介绍)
为方便将来讨论机器学习的方便,我们这里定义:(x^{(i)})为输入变量,也成为输入的特征变量,以后将更多的应用术语Features(特征)来描述。(y^{(i)})表示第i个输出或试图预测的目标变量。((x^{(i)},y^{(i)}))为一对训练集,这里的i=1……m。
为了更清晰与正式的描述有监督学习问题,我们目的是给定一个训练集,去学习一个函数h:X->Y。因此h(x)是对于y值得有效预测,一般地,该函数也成为假设函数。如下图所示:
当输出y可以用几个小的离散值进行描述时(如给定居住地的面积,我们来预测该区域为公寓还是别墅),我们称该问题为分类问题。
代价函数(Cost Function)
对于假设函数的精确度测量可以是利用代价函数,代价函数对所有结果的假设值与输入x输出y之间平均化差异(事实上就是平均化的概念)
直观感受--代价函数(1)
我们利用x-y轴坐标进一步用图形描述它,这里我们尽力用一条直线通过这些已有的数据点((x^{(i)},y^{(i)}))。如下图所示:
进一步的,当把( heta_{1}=0.5) ,我们可以看到哦每个点与线的距离增大,有下图:
直观感受--代价函数2
将参数从( heta_{1}) 提升到theta0和theta1,这时关于参数theta的代价函数描绘需要用到contour(等高线)。contour包含很多线,同一根线在x-y轴上取截然不同的两个点时,表示的值是相同的。
取( heta_{0}=800, heta_{1}=0.5) 此时假设函数如下:
现在我们有了假设函数及如何度量函数对数据的拟合程度。如何估计假设函数中的参数theta呢?这里引入梯度下降算法。
想象一下,我们依据theta0和theta1取值画出假设函数的取值。
梯度下降算法如下:
重复此算法直至数据聚集(最底部),这里j=0,1代表特征指标数。
注意:
利用梯度下降法更新参数theta时,一定要保持同步更新(simultaneous update)
首先摆出公式:( heta_{1} := heta_{1}-alphafrac{mathrm{d} }{mathrm{d} heta_{1}}J( heta_{1}))
-
讨论关于theta1>0,theta1<0两种情况:
-
讨论关于学习速率(alpha) 的两种情况:
图中分别表示了(alpha) 取值较小和取值较大两种情况下的代价函数取值。
这里需要说明:选取合适的学习速率即(alpha)后,梯度递减算法会聚集到局部最小处,随着逐渐接近局部最小的过程中,下降步伐也会自动减小,因此不需要总是人为减小学习速率即(alpha)。
在具体的线性回归问题下,梯度下降公式可以得到进一步演化(重复执行直到数据聚集):
( heta_{0} := heta_{0}-alphafrac{mathrm{d}}{mathrm{d} heta_{0}}J( heta_{0})); --->
( heta_{1} := heta_{1}-alphafrac{mathrm{d}}{mathrm{d} heta_{1}}J( heta_{1})) --->
( heta_{0} := heta_{0}-alphafrac{1}{m}sum_{i=1}^{m}(h_ heta(x_i)-y_i));
( heta_{1} := heta_{1}-alphafrac{1}{m}sum_{i=1}^{m}((h_ heta(x_i)-y_i)x_i))
m表示训练集的个数,( heta_0)为常数其保持与参数( heta_1)同时更新,((x_i,y_i))表示训练集的某一个数据。其中,如果我们从猜测假设函数开始,然后不断重复地这些梯度等式,我们的假设就会越来越好,因此,这里需要指明一点(因为,在之后的学习中这里需要注意),通过随机设置或设置假设函数参数为零,对于多次重复性的计算最后结果并没有明显影响。
因此,对于初始的代价函数J,有一个简单的梯度下降算法。这种方式看起来像是在整个训练集中重复同一步骤,这亦被称为:批量梯度下降。
注意一点:总体上来看,尽管梯度下降会在一个局部的最小值处汇聚,但是我们这里提到的线性回归优化问题仅有一个全局的最小处。因此在保证学习速率为合适值下,梯度下降值会汇聚在全局最小处。从下面椭圆等高图中可以看出,起始为(48,30),逐渐地曲线收敛在全局最小处。