机器学习3——梯度下降法剖析

来源:互联网 发布:腰振mmd动作数据下载 编辑:程序博客网 时间:2024/06/09 19:05
本文依据吴恩达第2节课程,将详细分析一下线性模型中的梯度下降法原理。对课程中公式来源,推导和问题,一一给出解释。从而避免其他人不负责任的乱拷贝公式而误人子弟,同时以期望对自己学习总结和对他人有些帮助。

按照上一节的总结,选定房价和房间的面积和朝向成线性关系模型,定义x0Image为房价的面积,Image为房间的朝向;其中Image=1表示模型中的常数。

定义房价的预测函数

Image

使用最小二乘法定义预测好坏的评估函数

Image

其中上标表示第Image组数据,等价于

Image   公式(1)

其中Image是m维度的列向量;注意与上标Image区分开。(矩阵)向量和元素一般都是用大小写进行区分。比如写成矩阵的形式如下:

Image

这只是约定的规则而已,只要能区分开向量或元素,个人觉得这不是关键问题,但是为了达成最大共识,按照通用规则书写:矩阵字母大写,向量以及元素以小写字母加上标或者下标。因此采用公式(1),但是一定要注意上下文,以确定向量还是元素。

对评估函数求得极小值,在几何意义上简单而言其过程即:从曲面的某个起始位置按照特定的方向和步长向曲面的某个谷底走去。下面解释一下其含义。

由高中数学已知函数极小值不一定是函数的最小值,但是函数的最小值一定在其某个极小值点或者区间边界上的函数值取得。给定一个光滑的曲面,它包括多个极小值点和极大值点(否则它就是一张平面了),那么从其三维几何上看就存在多个“山峰”和“谷底”。在曲面给定一个起始点,往下降的方向走,每次下降一小步,逐渐迭代就会到达某个谷底。在这里脑海里一定要反思几个问题:(1)选择什么样的起始点?任意呢还是有特殊要求?比如有好坏之分呢?(2)下降的方向如何选择?站在山顶时,360度个下降方向可以选择(3)下降的步长取多大?步长大小有何区别?(4)一定能到达谷底嘛?为什么?如果你知道这些问题的答案,恭喜你数学学的很牛逼,可以跳过下文了,否则继续。对于问题(1)和(4)放到最后回答,它依赖于另外两个问题。首先回答问题(2)和(3)。

要想回答问题(2)(3),需要方向导数,偏导数和梯度的概念。考验大学微(积)分的时候到了。方向导数:函数在指定的方向(矢量)上的变化率;偏导数:多元函数沿坐标轴方向的方向导数。梯度:标量场的一个向量,表示函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。显然,下降的方向应该选择函数梯度方向,步长设为梯度的模;如此函数值下降的速度最快,到达谷底的步数也最少。换言之,求得极小值迭代计算的次数最少,计算量最小。而其他方向和步长也是可选的,但不是最好的。

因此,Image梯度

Image

其中

Image

其中Image是数据矩阵的Image的列向量,即Image

定义起始值

Image

迭代算法

Image

其中Image是用户输入参数,作用于步长,调节其下降速度。Image,当Image时,原定踏步;当Image最快速度迭代。步长较大较小都不好,步子较小会导致迭代次数增加,计算量上升;步子较大会导致迭代次数减少,但是会跳做极值点。因此这个需要实践经验来具体问题具体确定。

然后回头看看问题(1)和(4)。起始值的选定,也需要一定经验。从0起始固然通用,但是计算量会有一定影响。也就说好的起始点会尽量靠近极值点,以减少不必要的计算。此外,不同的起始点可能会进入不同的函数量场的“谷底”或者进入不到“谷底”,因此不同的起始点可能会有不同的结果。最后问题(4)牵涉到算法收敛的证明。这里不证明了,有兴趣请参考《梯度下降法收敛性证明》.

整个过程可以看到数学的简洁和优雅。这就是数学的力量!

原创粉丝点击