ccc-Gradient Descent-李宏毅(2)

上一篇的(链接)step3中寻找最优化函数时简单提到了Gradient Descent,本次讲解它的几个注意事项,以及更深入的探讨

1.Tuning your learning rates

当参数为3个以下的时候,不同learning rate可能导致的损失函数如下
在这里插入图片描述
不过对于更多的参数,总是可以观测到这样的现象
在这里插入图片描述
调整Learning Rates的建议

  • 最开始的几轮epochs,离目标很远可以使用较大的学习率
  • 几轮epochs后,可以减小学习率使其细化
  • 针对不同参数的学习率往往也不同
  • 使用Adagrad技巧,详情如下:

对于一个参数w,使用Vanilla Gradient descent(原始的)更新如下:
w t + 1 ← w t − η t g t w^{t+1}\leftarrow w^t-\eta^tg^t wt+1wtηtgt

使用Adagrad更新如下:
w t + 1 ← w t − η t σ t g t w^{t+1}\leftarrow w^t-\frac{\eta^t}{\sigma^t}g^t wt+1wtσtηtgt
其中, η t \eta^t ηt一般选择 η t + 1 \frac{\eta}{\sqrt{t+1}} t+1 η, σ t \sigma^t σt表示参数w之前偏导数( g i g^i gi)的均方根,所以可以化简:
w t + 1 ← w t − η t + 1 1 t + 1 ∑ i = 0 t ( g i ) 2 g t = w t − η ∑ i = 0 t ( g i ) 2 g t w^{t+1}\leftarrow w^t-\frac{\frac{\eta}{\sqrt {t+1}}}{\sqrt{\frac{1}{t+1}\sum_{i=0}^{t}(g^i)^2}}g^t\\ =w^t-\frac{\eta}{\sqrt{\sum_{i=0}^{t}(g^i)^2}}g^t wt+1wtt+11i=0t(gi)2 t+1 ηgt=wti=0t(gi)2 ηgt

这样做的好处是什么:
在这里插入图片描述 对于二次函数而言,最佳的间隔应该是 ∣ 一次微分 ∣ 二次微分 \frac{|一次微分|}{二次微分} 二次微分一次微分,所以让分子估算成二次微分可以提高效率。对于多个求得一次微分的点来说, ∑ i = 0 t ( g i ) 2 \sqrt{\sum_{i=0}^{t}(g^i)^2} i=0t(gi)2 确实可以作为二次微分趋势的一个估计,而且不会增大计算量,效果图如下:
在这里插入图片描述

2.Stochastic Gradient Descent

这个可以加速模型的训练过程,它将之前每次迭代使用每个样本改为每次迭代只使用一个样本,但多次更新,效果对比如下:,
可以看到,虽然不是每次都离终点更近,但多次更新确实加快了进程,公式如下:
L n = ( y ^ n − ( b + ∑ w i x i n ) ) L^n=(\hat y^n-(b+\sum w_ix_i^n)) Ln=(y^n(b+wixin))

3.Feature Scaling

将不同特征缩放至差不多的范围,减少迭代次数,直观影响如下:
在这里插入图片描述
常见缩放方式如下:
x i r ← x i r − m i σ i x_i^r\leftarrow\frac{x_i^r-m_i}{\sigma_i} xirσixirmi
其中, m i m_i mi表示维度i的平均值, σ i \sigma _i σi表示维度i的标准差,这样缩放对于每个维度i使最后均值为0,方差为1

Gradient Descent:Theory

对于如下的损失函数,如何判断 θ 0 \theta_0 θ0在某个范围的最佳的下个更新点?
在这里插入图片描述
其实这个问题非常简单,利用泰勒公式即可。但这个红圈范围足够小时,可以近似认为红圈内有:
L ( θ ) = L ( a , b ) + ∂ L ( a , b ) ∂ θ 1 ( θ 1 − a ) + ∂ L ( a , b ) ∂ θ 2 ( θ 2 − b ) L(\theta)=L(a,b)+\frac{\partial L(a,b)}{\partial \theta_1}(\theta_1-a)+\frac{\partial L(a,b)}{\partial \theta_2}(\theta_2-b) L(θ)=L(a,b)+θ1L(a,b)(θ1a)+θ2L(a,b)(θ2b)
此时就是最小化上面这个函数,可以将( ∂ L ( a , b ) ∂ θ 1 \frac{\partial L(a,b)}{\partial \theta_1} θ1L(a,b) ∂ L ( a , b ) ∂ θ 2 \frac{\partial L(a,b)}{\partial \theta_2} θ2L(a,b))看做是一个向量(u,v),( θ 1 − a \theta_1-a θ1a, θ 2 − b \theta_2-b θ2b)看做求解向量。要想让其最小,相反方向拉满即可,直观图如下:
在这里插入图片描述
θ 1 \theta_1 θ1, θ 2 \theta_2 θ2表示如下:
[ θ 1 θ 2 ] = [ a b ] − η [ u v ] = [ a b ] − η [ ∂ L ( a , b ) ∂ θ 1 ∂ L ( a , b ) ∂ θ 2 ] \left [ \begin{matrix} \theta_1 \\ \theta_2 \\ \end{matrix} \right ]=\left [ \begin{matrix} a \\ b \\ \end{matrix} \right ]-\eta\left [ \begin{matrix} u \\ v \\ \end{matrix} \right ]=\left [ \begin{matrix} a \\ b \\ \end{matrix} \right ]-\eta\left [ \begin{matrix} \frac{\partial L(a,b)}{\partial \theta_1} \\ \frac{\partial L(a,b)}{\partial \theta_2} \\ \end{matrix} \right ] [θ1θ2]=[ab]η[uv]=[ab]η[θ1L(a,b)θ2L(a,b)]

More Limitation of Gradient Descent

在这里插入图片描述
迭代除了可能找不到global minima 点外,还可能停止在saddle point(鞍点,某个方向稳定) 和 plateau(变化微小) 处。导致后面两个的原因就是一般只是设定一个很小的阈值,当更新变化后很小就停止。这是值得注意的问题!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值