优化算法

优化算法

在看线性模型的时候,我们寻找的是误差函数梯度为0 的点,更直接点的说法二次函数一阶导数为0的点。不过这只是我们在线性模型里看到的,实际上一阶导数为0 的点,可能是平面、鞍点、局部最小点、全局最小点。局部和全局都差不多了。鞍点和平面肯定是不能要的。

以后再配图吧,先记笔记

随机梯度下降

损失函数 L ( θ ) L(\theta) L(θ) 、梯度 ∇ L ( θ ) \nabla L(\theta) L(θ) 、参数 θ \theta θ 、学习率 η \eta η
θ i = θ i − 1 − η ∇ L ( θ i − 1 ) \theta^i = \theta^{i-1} - \eta \nabla L(\theta^{i-1}) θi=θi1ηL(θi1)

我们的目标
θ ∗ = a r g θ m i n L ( θ ) \theta ^ * = arg_{\theta} min L(\theta) θ=argθminL(θ)

希望更新参数后
L ( θ 0 ) > L ( θ 1 ) > L ( θ 2 ) . . . . . . L(\theta_0) > L(\theta_1) > L(\theta_2) ...... L(θ0)>L(θ1)>L(θ2)......
这个可以用泰勒级数来证明


使用随机梯度下降,也就是每次取一定量的数据集来计算梯度,而不是全部的数据集,这也有利于跳出局部极小点和鞍点

动量法

梯度下降法的学习率其实不好把握,大了不收敛,小了原地爬
对梯度下降法做一个修改
v i = γ v i − 1 + η ∇ L ( θ ) v_i = \gamma v_{i-1} + \eta \nabla L(\theta) vi=γvi1+ηL(θ)
θ i = θ i − 1 − v i \theta_i = \theta_{i-1} - v_i θi=θi1vi

当前速度 v i v_i vi 动量参数 γ \gamma γ是一个小于1 的正数,学习率 η \eta η
上述公式相当于在每次更新参数的时候,都会将之前的速度考虑进来,每个参数在各个方向上的移动幅度不仅仅取决于当前速度,还取决于过去的各个梯度在各个方向上的是否一致
如果一个梯度一直沿着一个方向进行更新,那么每次更新的幅度就越来越大,这个理解思路和随机梯度下降一样
如果一个梯度在一个方向上不断变化,那么 它梯度更新幅度就会被衰减,设想一下,损失函数,在某个参数下呈现近似平面,这个参数更不更新无所谓了。
v 0 = 0 v_0 = 0 v0=0
v 1 = γ v 0 + η g = η g v_1 = \gamma v_0 + \eta g = \eta g v1=γv0+ηg=ηg
v 2 = γ v 1 + η g = ( 1 + γ ) η g v_2 = \gamma v_1 + \eta g = (1 + \gamma ) \eta g v2=γv1+ηg=(1+γ)ηg
. . . . . . ...... ......
v + ∞ = ( 1 + γ + γ 2 + γ 3 + . . . . ) = 1 1 − γ η g v_{+\infty} = (1 + \gamma + \gamma^2 + \gamma^3 + ....) = \frac{1}{1 - \gamma} \eta g v+=(1+γ+γ2+γ3+....)=1γ1ηg 麦克劳林展开,最后动量也会达到一个峰值
所以 γ \gamma γ要小于0,这里 γ \gamma γ是一个衰减系数。

Adagrad

上面说到的梯度下降,动量法,里面的学习率 η \eta η是固定的学习率进行参数更新。但是呢,不同的参数梯度可能不一样,所以需要不同的学习率。(过两天再写吧)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值