机器学习-梯度下降算法

  1. 云栖社区>
  2. 博客>
  3. 正文

机器学习-梯度下降算法

陈国林 2016-07-31 22:23:39 浏览468
展开阅读全文

1.引言

虽然我们知道,代价函数Jθ的表达式,但是还不知道怎么去确定假设函数hθ(x)的所有参数θ0,θ1 ... θn,使得Jθ值最小。

我们还是假设hθ(x)是一个线性函数,并且只有2个参数θ0,θ1,对应特征向量x只有1维

我们的目标是使得J(θ0,θ1)最小

我们可以采用以下方法,尝试找到J(θ0,θ1)最小值

  1. 给θ0, θ1一个初始值,例如都等于0
  2. 不断改变θ0, θ1的值,并且满足J(θ0,θ1)递减,直到达到一个我们满意的最小值,此时θ0,θ1即我们所求的最佳参数值

这个算法我们称之为"梯度下降"算法

假设J(θ0,θ1)值和参数θ0,θ1满足如下3维关系图

按照前面提到的迭代方法,假设不同的θ0, θ1的初始值,我们可能会有如下两个不同的迭代过程

从前面两个图中所示,我们会发现θ0, θ1初始值不同的时候,我们会找到不同局部最小值,这个特点正是"梯度下降"算法的特点,虽然很多时候都只会有一个全局的最小值

2.梯度下降-初步了解

根据前面的介绍,当只有2个参数θ0, θ1的时候,可以定义梯度下降算法的函数,如下

特别说明:

  1. := 表示赋值,例如a := b 表示把b的值赋值给a
  2. = 表示判断是否相等,例如 a = b表示判断a等于b
  3. 重复上述过程,直到函数收敛,得到的θ0, θ1值即为最佳参数值
  4. α我们称为learning rate,如果α的值太大则迭代的步伐太大,反应在图上即下降的速率太大,可能导致错过了局部最小值;如果α的值太小则迭代的步伐太小,反应在图上即下降的速率太小,会导致求解过程太慢。
  5. 注意,我们发现等式右边被减数是一个 求偏导数,如果不了解偏导数(参考https://zh.wikipedia.org/wiki/%E5%81%8F%E5%AF%BC%E6%95%B0)
  6. 另外还有一个需要注意的是,所有的参数必须需要同步更新,所谓同步更新如下图所示

注意:

  1. 当learning rate太大的时候,可能会出现overshoot the minimum现象,类似下图所示情况发生
  2. 当函数接近局部最小值的时候,所求偏导数值将会逐渐递减,梯度下降法将自动的采取“小步子”, 所以没有必要随着时间的推移减小learning rate.

3.梯度下降-线性回归

还是假设只有2个参数线性回归模型

  1. 左边是线性回归的模型,hθ(x)表示假设函数,J(θ0,θ1)则表示的是代价函数
  2. 右边是梯度下降的算法定义

 

J(θ0,θ1)对于θ0和θ1分别求导,可得

 证明过程如下所示


特别注意: θ0和θ1的值需要同步更新

4.梯度下降-多个参数线性回归

很多时候,我们的假设函数hθ(x)不止2个参数,可能会有n+1个参数θ0,θ1,θ2 ... θn,此时对应特征向量x有n维

因此我们可以得到n个参数的线性回归模型

对于这个n个参数的线性回归函数,我们可以得到对应的梯度下降算法

展开求偏导数后,可得

总结: 这里的梯度下降算法也称为”Batch” 梯度下降: 因为梯度下降的每一步都使用了所有的训练样本。


网友评论

登录后评论
0/500
评论
陈国林
+ 关注