梯度下降法

梯度下降

梯度下降的思想

  梯度下降就是用来求损失函数最小值的算法,我们将使用梯度下降算法来求出损失函数 J ( θ 0 , θ 1 ) J(\theta_0,\theta_1) J(θ0,θ1)的最小值。
  梯度下降思想:首先我们随机选择一个参数的组合 J ( θ 0 , θ 1 , . . . , θ n ) J(\theta_0,\theta_1, ... ,\theta_n) J(θ0,θ1,...,θn),计算损失函数(或代价函数),然后我们寻找下一个能让损失函数(或代价函数)下降最多的参数组合。重复上述过程,直至找到一个局部最小值。
  注:选择不同的初始参数组合,可能会找到不同的局部最小值。
这里写图片描述

过程

  批量梯度下降算法的公式为:
repeat until convergence{
θ j : = θ j − a ∂ ∂ θ 1 J ( θ 0 , θ 1 )   ( f o r   j = 0   a n d   j = 1 ) \theta_j:=\theta_j-a\frac{\partial}{\partial\theta_1}J(\theta_0,\theta_1)\ (for\ j=0 \ and \ j=1) θj:=θjaθ1J(θ0,θ1) (for j=0 and j=1)
}
  此处假设参数只有两个 θ 0 \theta_0 θ0 θ 1 \theta_1 θ1 α \alpha α表示学习率, α \alpha α决定了每次能让代价函数下降程度最大方向迈下的步子有多大。
  在梯度下降算法中需要同时更新 θ 0 \theta_0 θ0 θ 1 \theta_1 θ1
t e m p 0 : = θ 0 − α ∂ ∂ θ 0 J ( θ 0 , θ 1 ) temp0 :=\theta_0-\alpha\frac{\partial}{\partial\theta_0}J(\theta_0,\theta_1) temp0:=θ0αθ0J(θ0,θ1) t e m p 1 : = θ 1 − α ∂ ∂ θ 1 J ( θ 0 , θ 1 ) temp1 :=\theta_1-\alpha\frac{\partial}{\partial\theta_1}J(\theta_0,\theta_1) temp1:=θ1αθ1J(θ0,θ1) θ 0 : = t e m p 0 \theta_0 :=temp0 θ0:=temp0 θ 1 : = t e m p 1 \theta_1 :=temp1 θ1:=temp1

几个问题

  • 偏导数问题
    对于只有一个变量的方程式来说,偏导数就是导数。在某一点的导数表示该点切线的斜率。
    这里写图片描述
    因此,当初始点在最小值点的右边, θ \theta θ的更新值不断减小;当初始点在最小值的左边, θ \theta θ的更新值不断增加。最终是要不断靠近最小值的点。
  • α \alpha α学习率的问题
    α \alpha α太小,需要很多步才能找到局部最低点
    α \alpha α太大,每一步迭代会因为步子太大而越过最低点,甚至导致无法收敛。
  • 初始点为局部最小值点
    如果初始点恰好为局部最小值点,此时的导数为0,也就是切线的斜率为0。所以,更新 θ \theta θ的值不会有变化。此时, θ \theta θ也就是我们需要的参数。
  • 为什么不需要更新 α \alpha α的值
根据上图可知,在距离局部最小值较远的时候,切线的斜率是较大的,因此,对应$\theta$的改变也较大,也就下降的快一些;而接近局部最小值点的时候,切线的斜率越小,对应的$\theta$的改变越小,也就是下降的速度变慢了。因此,不需要改变$\alpha$的值,导致$\frac{\partial}{\partial\theta}J(\theta)$距离局部最小值点远的地方下降的快一些,距离局部最小值近的地方下降的慢一些(越接近目标,越要小心翼翼)。 >理解: >1.偏导数:因为从某一个点出发,让其开始变化,变化方向360°有无数个方向,而切线方向最快。 >2.每次更新:每次更新一个$\theta_i$时,其他参数都为常数,当前函数$\theta_i$为自变量,$J(\theta_i)$为因变量。只求得当前$\theta_i$的怎么变化,使$J(\theta_i)$朝着最小值的方向变化。求得所有的参数使$J(\theta_i)$朝着最小值的方向变化的更新值,并同时更新所有参数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值