自适应学习率
范数:数轴是梯度的范数。也就是梯度这个向量的长度
训练一个网络,令它到现在参数的临界点附近,再根据特征值的正负号判断该临界点时鞍点还是局部最小值。——困难 ,难以实施。
自适应学习率:给每一个参数不同的学习率。‘
AdaGrad
AdaGrad: 能够根据梯度的大小自动调整学习率。梯度大,学习率减小,梯度小,学习率放大。
第一步:
σ
0
i
=
(
g
0
i
)
2
=
∣
g
0
i
∣
其中
g
0
i
为梯度,第一次更新参数使
θ
0
i
更新为
θ
1
i
时,与梯度大小无关
\sigma_0^i = \sqrt {(g_0^i)^2}=|g_0^i|\\其中g_0^i为梯度,第一次更新参数使\theta_0^i更新为\theta_1^i时,与梯度大小无关
σ0i=(g0i)2=∣g0i∣其中g0i为梯度,第一次更新参数使θ0i更新为θ1i时,与梯度大小无关
第二步:
当t+1次更新参数时
θ
t
+
1
i
←
θ
t
i
−
η
σ
t
i
\theta_{t+1}^i \leftarrow \theta_t^i-\frac{\eta}{\sigma_t^i}
θt+1i←θti−σtiη 其中
σ
t
i
=
1
t
+
1
∑
t
i
=
0
(
g
t
i
)
2
\sigma_t^i = \sqrt {\frac{1}{t+1}\sum_t^{i=0}(g_t^i)^2}
σti=t+11∑ti=0(gti)2
由于 θ 1 \theta_1 θ1坡度小->梯度算出来的值也比较小 σ t i \sigma_t^i σti就比较小,学习率就大。反之同理。
RMSProp
RMSProp:对同一个参数的同一个方向的学习率进行动态调整。
θ
t
+
1
i
←
θ
t
i
−
η
σ
t
i
\theta_{t+1}^i \leftarrow \theta_t^i-\frac{\eta}{\sigma_t^i}
θt+1i←θti−σtiη
σ
t
i
=
α
(
σ
t
−
1
i
)
2
+
(
1
−
α
)
(
g
t
i
)
2
\sigma_t^i = \sqrt {\alpha(\sigma_{t-1}^i)^2 + (1-\alpha)(g_t^i)^2}
σti=α(σt−1i)2+(1−α)(gti)2
由此,通过
α
\alpha
α可以决定
g
t
i
g_t^i
gti相较于之前存在
σ
t
−
1
i
\sigma_{t-1}^i
σt−1i当中的
g
1
i
,
g
2
i
,
.
.
.
.
.
,
g
t
−
1
i
g_1^i,g_2^i,.....,g_{t-1}^i
g1i,g2i,.....,gt−1i的重要性。
使用RMSProp可以动态调整 σ t i \sigma_t^i σti这一项。
Adam
Adam:使用动量作为参数的更新方向,并且能够自适应调整学习率。
学习率调度
学习率调度: 使 η \eta η 与时间有关,进行动态调整。
学习率衰减(学习率退火):随着参数的不断更新使 η \eta η越来越小。
预热:让学习率先变大再变小,变到多大,变大的速度,变小的速度是超参数。
为什么需要预热?
因为当使用Adma、RMSProp或AdaGrad时,需要计算 σ \sigma σ ,但最开始的 σ \sigma σ不精准,所有要先收集有关 σ \sigma σ的统计数据,当统计得比较精准之后,再让学习率慢慢爬升。
优化总结
优化后的 公式为:其中
m
t
i
m_t^i
mti为动量
θ
i
+
1
i
←
θ
t
i
−
η
t
σ
t
i
m
t
i
\theta_{i+1}^i \leftarrow \theta_t^i - \frac{\eta_t}{\sigma_t^i}m_t^i
θi+1i←θti−σtiηtmti
步伐大小为
m
t
i
σ
t
i
\frac{m_t^i}{\sigma_t^i}
σtimti,通过
η
t
\eta_t
ηt实现学习率调度
分类
分类与回归的关系
回归:输入一个向量x,输出 y ˉ \bar{y} yˉ,使 y ˉ \bar y yˉ 与某个标签y接近。
分类:输入x后,输出仍然是 y ˉ \bar y yˉ ,使 y ˉ \bar y yˉ与正确答案的那个类越接近越好。