Machine Learning:Gradient Descent(梯度下降法)

版权声明:本文为King_HAW原创文章,未经King_HAW允许不得转载。 https://blog.csdn.net/King_HAW/article/details/78856365

Machine Learning:Gradient Descent(梯度下降法)

梯度下降法是机器学习中最常用的几种优化方法之一,目的为了找到合适的参数向量 θ ,使得代价函数 J ( θ ) 最小,梯度下降法的用途很广,本文中介绍使用梯度下降法来最小化线性回归问题中的 J ( θ )

基本概念:

输入(Input)

输入为一个模型的训练样本,通常为对于数据集提取的特征,也可以为采集的原始数据,通常使用 x i ( i ) 表示。上标为样本序号,表示为第几组样本。下标为样本中的特征序号,表示为当前样本中的第几个特征。 x i ( i ) 又称为训练集。

输出(Output)

输出为一个模型的预测结果,通常使用 y ( i ) 表示。

假设函数(Hypothesis Function)

假设函数是在问题中根据实际数据去得到的目标函数,以便去预测之后的新数据。通常使用 h θ 表示,此时 h θ = θ 0 + θ 1 x 1 + θ 2 x 2 + . . . ,为了讨论方便本文中 h θ ( x ) = θ 0 + θ 1 x 1

代价函数(Cost Function)

代价函数定义为假设函数和实际数据之间的误差,本文中使用平方代价函数(Square Error),定义为

J ( θ ) = 1 2 m i = 1 m ( h θ ( x ( i ) ) y ( i ) ) 2

梯度下降法

通过上式可以看出, J ( θ ) 越小,则 h θ ( x ) 和原始数据的分布就越接近。为了求出 J ( θ ) 的最小值,我们使用梯度下降法(目前只考虑单元线性回归,即参数为 θ 0 θ 1 )。
梯度下降法的步骤为:
1.选取参数 θ 0 θ 1 的初值,通常情况下为随机选取,也可以将 θ 0 θ 1 置0。
2.改变 θ 0 θ 1 的值,直到 J ( θ ) 达到最小值(全局或者局部极小)。
我们选取使得 J ( θ ) 下降最快的方向,也就是某点梯度方向的参数值来更新 θ 0 θ 1 。更新方法为

θ j := θ j α θ j J ( θ 0 , θ 1 ) j = 0 , 1

上式中的 := 表示赋值。
这里我们可以对于 θ 0 θ 1 的更新方法进一步推导
(1) θ 0 := θ 0 α θ 0 J ( θ 0 , θ 1 ) (2) := θ 0 α θ 0 1 2 m i = 1 m ( ( θ 0 + θ 1 x 1 ( i ) ) y ( i ) ) 2 (3) := θ 0 α m i = 1 m ( θ 0 + θ 1 x 1 ( i ) y ( i ) )

同理可得
(4) θ 1 := θ 1 α θ 1 J ( θ 0 , θ 1 ) (5) := θ 1 α θ 1 1 2 m i = 1 m ( ( θ 0 + θ 1 x 1 ( i ) ) y ( i ) ) 2 (6) := θ 1 α m i = 1 m ( θ 0 + θ 1 x 1 ( i ) y ( i ) ) x 1 ( i )

需要注意的是,只有在对所有参数 θ j 完成计算之后,才能进行更新。不能对于参数计算之后马上更新。也就是所有的参数需要同时更新(Simultaneous Update)。
上式中的 α 被称为学习率(Learning Rate), α 决定了参数 θ j 更新的步长。 α 取值过小,会导致 J ( θ ) 的收敛速度过慢, α 取值过大,则可能会导致 J ( θ ) 越过最小值点,进而发散。在实际操作过程中,通常采用动态 α ,即起步阶段 α 取值较大,接近极小值点时 α 开始减小。事实上在接近最小值点的时候,上式中的偏导数那一项也会减小,所以 α 取值固定也是可以的。
因为在更新参数的时候使用了 m 个数据,也就是所有的训练集数据,所以上面的梯度下降法也被称为批梯度下降法(Batch Gradient Descent)。
本文主要偏向于数学公式推导,相关视频可以参考 Andrew Ng 机器学习课程,本文相关内容也源于该课程。


猜你喜欢

转载自blog.csdn.net/King_HAW/article/details/78856365