【斯坦福大学-机器学习】2.单变量线性回归(二)
Author:kevinelstri
DateTime:2017/3/15
5、梯度下降
梯度下降是一个用来求函数最小值的算法,下面将使用梯度下降算法来求出代价函数 J(
θ0
,
θ1
) 最小值。
梯度下降背后的思想是:开始时我们随机选择一个参数的组合(
θ0
,
θ1
,
⋯
,
θn
),计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到到到一个局部最小值( local minimum),因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值( global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。
梯度下降模拟实现方式:
批量梯度下降(batch gradient descent)算法公式:
其中
α
是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出步子有多大,在批量梯度下降中,每一次都同时让所有的参数减去学习速率乘以代价函数的导数。
在梯度下降中,要同时更新
θ0
和
θ1
,也就是左侧方式,而右侧方式就出现了问题,右侧数据中的
θ0
发生了改变,导致了
θ1
的改变。
梯度下降的本质就是需要实现同时更新。
6、梯度下降理解
下面对梯度下降算法进行深入的研究,理解这个算法是干什么的,以及梯度下降算法的更新过程有什么意义。
梯度下降算法如下所示:
描述:对
θ
进行赋值,使得
J(θ)
按梯度下降最快的方向进行,一直迭代下去,最终得到局部最小值。其中
α
是学习率,它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大。
对于梯度下降算法公式来说,可以从上图中进行直观的学习。
导数
∂∂θiJ(θi)
就是切线的斜率,也是代价函数,当切线的斜率大于0时,随着
θ
减小,斜率逐渐减小,代价函数也在减小,当减小到最低点时,代价函数达到最小值;当切线斜率小于0时,随着
θ
增大,斜率逐渐增大,由于此时斜率为负的,所以当斜率为0时,代价函数达到最小值。
如果
α
太小时,学习速率就比较小,移动速度就比较慢,这样就需要很多步才能到达最低点;如果
α
太大时,那么梯度下降可能会越过最低点,甚至可能无法收敛,所以在选择
α
时,既不能太大,也不能太小。
如果初始化
θi
在局部最低点,那么,它就是已经在一个局部的最优化或局部最低点了,结果是局部最优点的导数等于0,这也就意味着采用梯度下降法进行优化的过程中,参数不会发生任何改变。这也就解释了,当学习速率
α
保持不变时,梯度下降也可以收敛到局部最低点。
这就是梯度下降算法,可以用它来最小化任何代价函数J,不只是线性回归中的代价函数J。
7、梯度下降的线性回归
梯度下降算法不仅被用在线性回归上和线性回归模型、平方误差代价函数,下面,将梯度下降与代价函数进行结合,将其用于具体的拟合直线的线性回归算法里。
梯度下降算法和线性回归算法的比较:
对线性回归问题运用梯度下降法,关键在于求出代价函数的导数:
公式推导:
(1)Linear Regression Model
hθ(x)=θ0+θ1x
J(θ0,θ1)=12m∑mi=1(hθ(x(i))−y(i))2
(2)Gradient descent algorithm
repeat until convergence{
θj:=θj−α∂∂θiJ(θ0,θ1)
(for
j=1
and
j=0
)
}
(3)Linear Regression Model with Gradient descent algorithm
∂∂θiJ(θ0,θ1)=∂∂θi12m∑mi=1(hθ(x(i))−y(i))2
∂∂θiJ(θ0,θ1)=∂∂θi12m∑mi=1(θ0+θ1x(i)−y(i))2
(4)
j=0,j=1
分别求偏导
j=0
求偏导:
j=0:∂∂θ0J(θ0,θ1)=1m∑mi=1(hθ(x(i))−y(i))
j=1
求偏导:
j=1:∂∂θ1J(θ0,θ1)=1m∑mi=1(hθ(x(i))−y(i))x(i)
(5)Gradient descent algorithm with Linear Regression Model
repeat until convergence{
θ0:=θ0−α1m∑mi=1(hθ(x(i))−y(i))
θ1:=θ1−α1m∑mi=1(hθ(x(i))−y(i))x(i)
}
将算法改写成: