机器学习·day4梯度下降

参考原文地址:https://github.com/fengdu78/Coursera-ML-AndrewNg-Notes

文章目录

  • 前言
  • 一、梯度下降?
  • 二、梯度下降的直观理解
  • 梯度下降的线性回归


前言

梯度下降是一个用来求函数最小值的算法,我们将使用梯度下降算法来求出代价函数J(θ_0,θ_1) 的最小值。


一、梯度下降?

批量梯度下降(batch gradient descent)算法的公式为:
在这里插入图片描述

其中a是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大,在批量梯度下降中,我们每一次都同时让所有的参数减去学习速率乘以代价函数的导数。
机器学习·day4梯度下降_第1张图片
在梯度下降算法中,还有一个更微妙的问题,梯度下降中,我们要更新θ_0和θ_1 ,当 j=0 和j=1时,会产生更新,所以你将更新J(θ_0 )和J(θ_1 )。实现梯度下降算法的微妙之处是,在这个表达式中,如果你要更新这个等式,你需要同时更新θ_0和θ_1,我的意思是在这个等式中,我们要这样更新:
θ_0:= θ_0 ,并更新θ_1:= θ_1。

二、梯度下降的直观理解

梯度下降算法如下:
θ_j:=θ_j-α ∂/(∂θ_j ) J(θ)
描述:对θ赋值,使得J(θ)按梯度下降最快方向进行,一直迭代下去,最终得到局部最小值。其中a是学习率(learning rate),它决定了我们沿着能让代价函数下降程度最大的方向向下迈出的步子有多大。
例子
机器学习·day4梯度下降_第2张图片
我想找到它的最小值,首先初始化我的梯度下降算法,在那个品红色的点初始化,如果我更新一步梯度下降,也许它会带我到这个点,因为这个点的导数是相当陡的。现在,在这个绿色的点,如果我再更新一步,你会发现我的导数,也即斜率,是没那么陡的。随着我接近最低点,我的导数越来越接近零,所以,梯度下降一步后,新的导数会变小一点点。然后我想再梯度下降一步,在这个绿点,我自然会用一个稍微跟刚才在那个品红点时比,再小一点的一步,到了新的红色点,更接近全局最低点了,因此这点的导数会比在绿点时更小。所以,我再进行一步梯度下降时,我的导数项是更小的,θ_1更新的幅度就会更小。所以随着梯度下降法的运行,你移动的幅度会自动变得越来越小,直到最终移动幅度非常小,你会发现,已经收敛到局部极小值。

梯度下降的线性回归

在以前的视频中我们谈到关于梯度下降算法,梯度下降是很常用的算法,它不仅被用在线性回归上和线性回归模型、平方误差代价函数。在这段视频中,我们要将梯度下降和代价函数结合。我们将用到此算法,并将其应用于具体的拟合直线的线性回归算法里。
梯度下降算法和线性回归算法比较如图:
机器学习·day4梯度下降_第3张图片

对我们之前的线性回归问题运用梯度下降法,关键在于求出代价函数的导数,即:
∂/(∂θ_j ) J(θ_0,θ_1)=∂/(∂θ_j ) 1/2m ∑_(i=1)^m▒(h_θ (x((i)))-y((i)) ) ^2
j=0 时:∂/(∂θ_0 ) J(θ_0,θ_1)=1/m ∑_(i=1)^m▒(h_θ (x((i)))-y((i)) )
j=1 时: ∂/(∂θ_1 ) J(θ_0,θ_1)=1/m ∑_(i=1)^m▒((h_θ (x((i)))-y((i)) )⋅x^((i)) )
则算法改写成:
Repeat {
θ_0:=θ_0-a 1/m ∑_(i=1)^m▒(h_θ (x((i)))-y((i)) )
θ_1:=θ_1-a 1/m ∑_(i=1)^m▒((h_θ (x((i)))-y((i)) )⋅x^((i)) )
}
我们刚刚使用的算法,有时也称为批量梯度下降。实际上,在机器学习中,通常不太会给算法起名字,但这个名字”批量梯度下降”,指的是在梯度下降的每一步中,我们都用到了所有的训练样本,在梯度下降中,在计算微分求导项时,我们需要进行求和运算,所以,在每一个单独的梯度下降中,我们最终都要计算这样一个东西,这个项需要对所有m个训练样本求和。因此,批量梯度下降法这个名字说明了我们需要考虑所有这一"批"训练样本,而事实上,有时也有其他类型的梯度下降法,不是这种"批量"型的,不考虑整个的训练集,而是每次只关注训练集中的一些小的子集。在后面的课程中,我们也将介绍这些方法。
但就目前而言,应用刚刚学到的算法,你应该已经掌握了批量梯度算法,并且能把它应用到线性回归中了,这就是用于线性回归的梯度下降法。

你可能感兴趣的:(机器学习,机器学习,人工智能)