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

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

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

基本概念:

输入(Input)

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

输出(Output)

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

假设函数(Hypothesis Function)

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

代价函数(Cost Function)

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

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

梯度下降法

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

θ j :=θ j αθ j  J(θ 0 ,θ 1 )j=0,1  θ j := θ j − α ∂ ∂ θ j J ( θ 0 , θ 1 ) , 此 时 j = 0 , 1

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

同理可得
θ 1  :=θ 1 αθ 1  J(θ 0 ,θ 1 ):=θ 1 αθ 1  12m  i=1 m ((θ 0 +θ 1 x (i) 1 )y (i) ) 2 :=θ 1 αm  i=1 m (θ 0 +θ 1 x (i) 1 y (i) )x (i) 1  (4)(5)(6)  (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   θ j 完成计算之后,才能进行更新。不能对于参数计算之后马上更新。也就是所有的参数需要同时更新(Simultaneous Update)。
上式中的 α  α 被称为学习率(Learning Rate), α  α 决定了参数 θ j   θ j 更新的步长。 α  α 取值过小,会导致 J(θ)  J ( θ ) 的收敛速度过慢, α  α 取值过大,则可能会导致 J(θ)  J ( θ ) 越过最小值点,进而发散。在实际操作过程中,通常采用动态 α  α ,即起步阶段 α  α 取值较大,接近极小值点时 α  α 开始减小。事实上在接近最小值点的时候,上式中的偏导数那一项也会减小,所以 α  α 取值固定也是可以的。
因为在更新参数的时候使用了 m  m <script id="MathJax-Element-46" type="math/tex">m</script>个数据,也就是所有的训练集数据,所以上面的梯度下降法也被称为批梯度下降法(Batch Gradient Descent)。
本文主要偏向于数学公式推导,相关视频可以参考 Andrew Ng 机器学习课程,本文相关内容也源于该课程。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值