optimization algorithm
mini-batch gradient descent定义优点
Gradient Descent with momentum基本思想流程加权指数平均介绍直观理解
RMSprop(Root Mean Square prop)基本思想流程
Adam optimization algorithm学习率衰减原因衰减方法
局部最优点
mini-batch gradient descent
定义
mini-batch实质上是将训练集切分为
T
T
T 部分,不再一次训练整个训练集而是
T
T
T 个子训练集依次训练。 训练过程中,
e
p
o
c
h
epoch
epoch 表示训练一次整个训练集,
b
a
t
c
h
batch
batch 是指训练一次
X
t
X^{t}
Xt。
优点
如果一次只训练一个样本,除了迭代次数太多且失去了向量化的加速之外,在使用SGD进行优化时可能无法实现收敛。 如果一次训练了所有样本,消耗的内存过大,且难以处理。 使用
T
≠
1
  
o
r
  
m
T \neq 1\;or\; m
T̸=1orm$,虽然损失函数不会呈现一直下降,但是总体会有下降的趋势,趋于收敛。 若在训练过程中,画出的损失函数曲线波动幅度较大,说明batch的尺寸过小,应适当增大batch-size。 (图片来自吴恩达课件) mini-batch size的取值通常为2的指数倍(如 64,128,256…),吴恩达课程中提出,如果训练集的大小
m
m
m 小于2000,那么可以直接训练。
Gradient Descent with momentum
基本思想
计算梯度的指数加权平均,并用该值来更新权重
流程
基于backwards计算
d
W
dW
dW,
d
b
db
db根据给定的
β
\beta
β,计算
v
d
W
=
β
v
d
W
+
(
1
−
β
)
d
W
v_{dW} = \beta v_{dW} + (1-\beta)dW
vdW=βvdW+(1−β)dW
v
d
b
=
β
v
d
b
+
(
1
−
β
)
d
b
v_{db} = \beta v_{db} +(1-\beta) db
vdb=βvdb+(1−β)db
W
=
W
−
α
v
d
W
,
b
=
b
−
α
v
d
b
W = W - \alpha v_{dW}, b = b - \alpha v_{db}
W=W−αvdW,b=b−αvdb 这里
β
\beta
β 通常设为 0.9。 应用指数加权平均时,本身应该有一个偏差修正的过程,但在实际应用时通常不引入该方法。
加权指数平均介绍
V
t
=
β
V
t
−
1
+
(
1
−
β
)
θ
t
V_t = \beta V_{t-1} + (1- \beta) \theta_t
Vt=βVt−1+(1−β)θt 通常认为权重小于
1
e
\frac{1}{e}
e1 的值对最终结果的影响可以忽略不计,而
β
1
1
−
β
≈
1
e
\beta^{\frac{1}{1-\beta}} \approx \frac{1}{e}
β1−β1≈e1,因此加权指数平均认为是
1
1
−
β
\frac{1}{1-\beta}
1−β1 个值的加权平均。 偏差修正:由于一开始的数据的预先变量较少,因此加权指数平均的效果较差,于是引入偏差修正,使预测更为准确。
V
t
1
−
β
t
\frac{V_t}{1-\beta^t}
1−βtVt 随着
t
t
t 的增大,偏差修正的影响越来越小。
直观理解
这里引用 monitor1370的观点:
当本次梯度下降的方向与上次更新量的方向相同时,上次的更新量能够对本次的搜索起到一个正向加速的作用。当本次梯度下降的方向与上次更新量的方向相反时,上次的更新量能够对本次的搜索起到一个反向减速的作用。
RMSprop(Root Mean Square prop)
基本思想
在权重更新时,我们更希望权重能按照绿色线的方向逼近最优点,但实际上权重更多是按照蓝色线更新。假设垂直方向为
d
b
db
db,水平方向为
d
W
dW
dW,那么我们只要减缓
d
b
db
db 的变化,增大
d
W
dW
dW 的变化就可以更好的逼近最优点。
流程
基于backwards计算
d
W
dW
dW,
d
b
db
db
S
d
W
=
β
S
d
W
+
(
1
−
β
)
d
2
W
S_{dW} = \beta S_{dW} + (1-\beta) d^2W
SdW=βSdW+(1−β)d2W
S
d
b
=
β
S
d
b
+
(
1
−
β
)
d
2
b
S_{db} = \beta S_{db} + (1-\beta) d^2b
Sdb=βSdb+(1−β)d2b由于
d
b
db
db 通常比
d
W
dW
dW 大,所以
S
d
W
S_{dW}
SdW 通常比
S
d
b
S_{db}
Sdb 小。
W
=
W
−
α
d
W
S
d
W
+
ϵ
W = W-\alpha \frac{dW}{\sqrt{S_{dW}+ \epsilon}}
W=W−αSdW+ϵ
dW
b
=
b
−
α
d
b
S
d
b
+
ϵ
b = b-\alpha \frac{db}{\sqrt{S_{db}+ \epsilon}}
b=b−αSdb+ϵ
db ,
ϵ
\epsilon
ϵ确保除数不会是一个很小的数。由此,相对增大了横轴变化缩减了纵轴变化。
Adam optimization algorithm
基于 backward 计算
d
W
dW
dW 和
d
b
db
db
v
d
W
=
β
1
v
d
W
+
(
1
−
β
1
)
d
W
v_{dW} = \beta_1 v_{dW} + (1-\beta_1)dW
vdW=β1vdW+(1−β1)dW
v
d
b
=
β
1
v
d
b
+
(
1
−
β
1
)
d
b
v_{db} = \beta_1 v_{db} +(1-\beta_1) db
vdb=β1vdb+(1−β1)db
S
d
W
=
β
2
S
d
W
+
(
1
−
β
2
)
d
2
W
S_{dW} = \beta_2 S_{dW} + (1-\beta_2) d^2W
SdW=β2SdW+(1−β2)d2W
S
d
b
=
β
2
S
d
b
+
(
1
−
β
2
)
d
2
b
S_{db} = \beta_2 S_{db} + (1-\beta_2) d^2b
Sdb=β2Sdb+(1−β2)d2b
v
d
W
c
o
r
r
e
s
t
=
v
d
W
/
(
1
−
β
1
t
)
v_{dW}^{correst} = v_{dW}/(1-\beta_1^t)
vdWcorrest=vdW/(1−β1t)
v
d
b
c
o
r
r
e
s
t
=
v
d
b
/
(
1
−
β
1
t
)
v_{db}^{correst} = v_{db}/(1-\beta_1^t)
vdbcorrest=vdb/(1−β1t)
S
d
W
c
o
r
r
e
s
t
=
S
d
W
/
(
1
−
β
2
t
)
S_{dW}^{correst} = S_{dW}/(1-\beta_2^t)
SdWcorrest=SdW/(1−β2t)
S
d
b
c
o
r
r
e
s
t
=
S
d
b
/
(
1
−
β
2
t
)
S_{db}^{correst} = S_{db}/(1-\beta_2^t)
Sdbcorrest=Sdb/(1−β2t)
W
=
W
−
α
v
d
W
c
o
r
r
e
s
t
S
d
W
c
o
r
r
e
s
t
+
ϵ
W = W - \alpha \frac{v_{dW}^{correst}}{\sqrt{S_{dW}^{correst} + \epsilon}}
W=W−αSdWcorrest+ϵ
vdWcorrest
b
=
b
−
α
v
d
b
c
o
r
r
e
s
t
S
d
b
c
o
r
r
e
s
t
+
ϵ
b = b - \alpha \frac{v_{db}^{correst}}{\sqrt{S_{db}^{correst} + \epsilon}}
b=b−αSdbcorrest+ϵ
vdbcorrest 在该算法中,
β
1
\beta_1
β1 通常设为
0.9
0.9
0.9,
β
2
\beta_2
β2 通常设为
0.999
0.999
0.999,
ϵ
\epsilon
ϵ 通常设为
1
0
−
8
10^{-8}
10−8,
α
\alpha
α 需要调节。
学习率衰减
原因
在运算初期,由于距离最优点较远,可以承受较大的学习率;在收敛过程中,学习率应慢慢衰减才能慢慢迭代到最优值处。
衰减方法
α
=
1
1
+
decay
_
rate
∗
epoch
_
num
α
0
\alpha = \frac{1}{1+ \text{decay}\_\text{rate}*\text{epoch}\_\text{num}} \alpha_0
α=1+decay_rate∗epoch_num1α0
α
=
0.9
5
epoch
_
num
α
0
\alpha = 0.95^{\text{epoch}\_\text{num}} \alpha_0
α=0.95epoch_numα0
α
=
k
epoch
_
num
α
0
\alpha = \frac{k}{\sqrt{\text{epoch}\_\text{num}}} \alpha_0
α=epoch_num
kα0或
α
=
k
mini
_
batch
_
num
α
0
\alpha = \frac{k}{\sqrt{\text{mini}\_\text{batch}\_\text{num}}} \alpha_0
α=mini_batch_num
kα0,这里
k
k
k 为超参数。离散下降学习速率,随着mini_batch_num 的增大,逐渐减小。
局部最优点
当网络参数较多的情况下,优化过程中不易困在局部最优点。在局部最优处的函数平稳,学习速率较慢,此时可以通过优化方法来加快学习速率。