斯坦福-机器学习第一讲(梯度下降算法回顾总结)
在此将斯坦福-机器学习第一讲(梯度下降算法)做个详细总结:
1.Linear regression(线性回归)
2.Gradient descent(梯度下降)
3.Ordinary Least Square(传统的最小二乘法)
4.Normal equation(正规方程组)
supervised learning(监督学习):给定一组数据集,告诉算法正确的答案,经过训练确定参数值后,给定输入能够给出正确的输出。
开始一个监督学习的例子,房子面积和价格的关系:
给定这样的数据,怎样预测其他房子的价格?
引入一些符号:
表示输入变量,也叫做输入特征(本例中的居住面积)
表示输出值或者说目标变量(本例中预测的价格)
表示第i个训练样本
表示m个样本组成的训练集
监督学习的流程如下图所示:
线性回归(引入问题)
为了使问题更加有趣,提供一个更加丰富的数据集,还知道房子的卧室数量:
假设y是x的一个线性函数:
假设X0=1,得到:
其中,n是输入变量的数目(不包括x0)。
为了表示和的距离,定义函数:
1.LMS(Least mean squares)算法
我们需要求出使得最小化的
考虑梯度下降算法,给定初值,反复更新的值:
其中是学习速率;
假设只有一个训练样本,则有:
对于单个样本,更新规则如下:
这个就是LMS更新规则(least mean squares,最小二乘法)
如果样本不止一个,需要修改更新的规则,
批处理梯度下降(batch gradient descent,每一步都要访问整个数据集):
随机梯度下降(stochastic gradient descent,每个样本进行一次更新):
在这里解释下:随机梯度下降与批量梯度下降的区别就是那个求和符号没有了,也就是每次迭代不需要所有的训练样本都参与梯度计算,而是只每次迭代只选择一个样本参与训练,因为有m个样本,故会迭代m次。批量梯度下降是确定的,这意味着,每次运行给定的训练集时,在相同的迭代次数中,都会得到相同的最优值。随机梯度下降是随机的。因为你不再用你的整个训练集,而在一些可能的时间选择一个或多个实例,每一次你运行随机梯度下降算法,你将得到一个不同的最佳和唯一的成本与迭代过程。
随机梯度下降比批处理梯度下降收敛更快,当数据集比较大时,随机梯度下降优于批处理梯度下降。
2.传统的最小二乘法
现在我们用最传统的方式(对这个二次函数求导得到极值点)来解决这个问题
我们以最简单的一元线性模型来解释最小二乘法。什么是一元线性模型呢? 监督学习中,如果预测的变量是离散的,我们称其为分类(如决策树,支持向量机等),如果预测的变量是连续的,我们称其为回归。回归分析中,如果只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。对于二维空间线性是一条直线;对于三维空间线性是一个平面,对于多维空间线性是一个超平面...
对于一元线性回归模型, 假设从总体中获取了n组观察值(X1,Y1),(X2,Y2), …,(Xn,Yn)。对于平面中的这n个点,可以使用无数条曲线来拟合。要求样本回归函数尽可能好地拟合这组值。综合起来看,这条直线处于样本数据的中心位置最合理。 选择最佳拟合曲线的标准可以确定为:使总的拟合误差(即总残差)达到最小。有以下三个标准可以选择:
(1)用“残差和最小”确定直线位置是一个途径。但很快发现计算“残差和”存在相互抵消的问题。
(2)用“残差绝对值和最小”确定直线位置也是一个途径。但绝对值的计算比较麻烦。
(3)最小二乘法的原则是以“残差平方和最小”确定直线位置。用最小二乘法除了计算比较方便外,得到的估计量还具有优良特性。这种方法对异常值非常敏感。
最常用的是传统最小二乘法( Ordinary Least Square,OLS):所选择的回归模型应该使所有观察值的残差平方和达到最小。(Q为残差平方和)- 即采用平方损失函数。
样本回归模型:
其中ei为样本(Xi, Yi)的误差
平方损失函数:
则通过Q最小确定这条直线,即确定,以为变量,把它们看作是Q的函数,就变成了一个求极值的问题,可以通过求导数得到。求Q对两个待估参数的偏导数:
根据数学知识我们知道,函数的极值点为偏导为0的点。
解得:
这就是最小二乘法的解法,就是求得平方损失函数的极值。
这种直接对函数求偏导解方程组的方法只是用来让大家理解我们传统的最小二乘法的运用,接下来我们要讲它的矩阵形式(简洁)。
3.正规方程组
这种方法是上面那种方法的矩阵形式,本质上是完全一样的。
矩阵导数
对一个由m*n阶矩阵映射到实数的函数:,f对A的导数为:
例如,假设A=,并且函数 f:为:
得到:
矩阵的迹:
定义:对于n阶方阵A,
对于实数a来说,tra = a.
关于矩阵迹的一些性质:
-
trAB = trBA
-
trABC = trCAB = trBCA
-
trA =
-
tr(A+B) = trA + trB
-
tr aA = atrA
最小二乘法回顾
给定训练集,设计矩阵X定义为:
由于,
再有,
又因为,
因此,
通过令J的偏导数等于零,得到:
注意:这里得到的参数值是一个向量,对应的就是若干参数的最佳取值。
4.最小二乘法与梯度下降法
最小二乘法跟梯度下降法都是通过求导来求损失函数的最小值,那它们有什么区别呢。
相同
1.本质相同:两种方法都是在给定已知数据(independent & dependent variables)的前提下对dependent variables算出出一个一般性的估值函数。然后对给定新数据的dependent variables进行估算。
2.目标相同:都是在已知数据的框架内,使得估算值与实际值的总平方差尽量更小(事实上未必一定要使用平方),估算值与实际值的总平方差的公式为:
其中为第i组数据的independent variable,为第i组数据的dependent variable,为系数向量。
不同
1.实现方法和结果不同:最小二乘法是直接对求导找出全局最小,是非迭代法。而梯度下降法是一种迭代法,先给定一个,然后向下降最快的方向调整,在若干次迭代之后找到局部最小。梯度下降法的缺点是到最小点的时候收敛速度变慢,并且对初始点的选择极为敏感,其改进大多是在这两方面下功夫。
参考:
http://blog.****.net/lotus___/article/details/20546259