优化器简述
神经网络是根据损失函数不断调整网络参数,使得最终能够获得近似最优解。
优化器 是为了让参数根据损失函数更快更准的朝着最优方向更新的一种策略。
符号说明
符号 | 含义 | 备注 |
---|---|---|
W | 模型参数 | |
J(W) | 代价函数 | |
▽ J ( W ) \bigtriangledown J(W) ▽J(W) | 梯度 | 代价函数关于模型参数的偏导 |
v | 一阶动量 | 代表惯性 |
r | 二阶动量 | 用于控制自适应学习率 |
q | 完全自适应学习率 | 自适应学习率 |
η \eta η | 学习率 | |
( X , Y ) (X,Y) (X,Y) | 训练集整体样本 | |
( X ( i ) , Y ( i ) ) (X^{(i)} ,Y^{(i)}) (X(i),Y(i)) | 训练集第i个样本 | |
N N N | 训练集样本总量 | |
ϵ | 随机参数 | ϵ是为了数值稳定性而加上的 通常取10的负10次方 |
常见优化器介绍
GD
W t + 1 = W t − η t ⋅ ▽ J ( W t ) W_{t+1} = W_{t} - \eta _{t}\cdot \bigtriangledown J(W_{t}) Wt+1=Wt−ηt⋅▽J(Wt)
SGD
随机梯度下降(SGD、Stochastic Gradient Descent)
均匀地,随机选择一个样本
(
X
(
i
)
,
Y
(
i
)
)
(X^{(i)} ,Y^{(i)})
(X(i),Y(i)), 代表整体样本,乘以N(每个epoch参数更新N次);
随机是指每次选取哪个样本是随机的,每个epoch样本更新的顺序是随机的。
W
t
+
1
=
W
t
−
η
t
⋅
N
⋅
▽
J
(
W
t
,
X
(
i
)
,
Y
(
i
)
)
W_{t+1} = W_{t} - \eta _{t}\cdot N\cdot \bigtriangledown J(W_{t}, X^{(i)} ,Y^{(i)})
Wt+1=Wt−ηt⋅N⋅▽J(Wt,X(i),Y(i))
优点:参数更新速度快
缺点:由于每次参数更新时采用的数据量很小,造成梯度更新时震荡幅度大,容易受到异常值的影响,在最优解附近会有加大波动,但大多数情况都是向着梯度减小的方向
BGD
每次将所有样本的梯度求和,然后根据梯度和对参数进行更新,每个epoch参数更新1次
优点:由于每次参数更新时采用的数据量很大,梯度更新时很平滑。
缺点:由于每次参数更新时采用的数据量很大,造成参数更新速度慢,内存消耗大,因为梯度更新平滑随机性差,容易陷入局部最优解。
MBGD
小批量梯度下降(MBGD、Mini-batch gradient descent)
每次迭代用m个样本对参数更新;
MBGD 每一次利用一小批样本,即m 个样本进行计算,本质上就是在每个batch内部使用BGD策略,在batch外部使用SGD策略。
W
t
+
1
=
W
t
−
η
t
⋅
N
⋅
1
m
⋅
∑
i
=
1
m
−
1
▽
J
(
W
t
,
X
(
i
)
,
Y
(
i
)
)
W_{t+1} = W_{t} - \eta _{t}\cdot N\cdot \frac{1}{m} \cdot\sum_{i=1}^{m-1} \bigtriangledown J(W_{t}, X^{(i)} ,Y^{(i)})
Wt+1=Wt−ηt⋅N⋅m1⋅i=1∑m−1▽J(Wt,X(i),Y(i))
优点:相比于SGD,可以降低参数更新时的方差,收敛更稳定,由于每次参数更新时采用的数据量相对较大,梯度更新时相对平滑;相比于BGD,由于每次参数更新时采用的数据量相对较小,参数更新速度相对较快。
缺点:没有考虑数据集的稀疏度和模型的训练时间对参数更新的影响。
SGD-M
参数更新时在一定程度上保留之前更新的方向,同时又利用当前batch的梯度微调最终的更新方向
动量法(Momentum)的思想是,将当前梯度与过去梯度加权平均,来获取即将更新的梯度。
V
t
=
α
⋅
V
t
−
1
+
η
t
⋅
N
⋅
▽
J
(
W
t
,
X
(
i
)
,
Y
(
i
)
)
V_{t} = \alpha \cdot V_{t-1} + \eta _{t} \cdot N\cdot\bigtriangledown J(W_{t}, X^{(i)} ,Y^{(i)})
Vt=α⋅Vt−1+ηt⋅N⋅▽J(Wt,X(i),Y(i))
W
t
+
1
=
W
t
−
V
t
W_{t+1} = W_{t} - V_{t}
Wt+1=Wt−Vt
NAG
(NAG、Nesterov Accelerated Gradient)NAG的思想是在动量法的基础上展开的,NAG直接采用下一时刻的梯度来和上一时刻梯度进行加权平均
V
t
=
α
⋅
V
t
−
1
+
η
t
▽
J
(
W
t
−
α
⋅
V
t
−
1
)
V_{t} = \alpha \cdot V_{t-1} + \eta _{t} \bigtriangledown J(W_{t}- \alpha \cdot V_{t-1})
Vt=α⋅Vt−1+ηt▽J(Wt−α⋅Vt−1)
W
t
+
1
=
W
t
−
V
t
W_{t+1} = W_{t} - V_{t}
Wt+1=Wt−Vt
AdaGrad
g
t
=
1
m
⋅
∑
i
=
1
m
−
1
▽
J
(
W
t
,
X
(
i
)
,
Y
(
i
)
)
g_{t}=\frac{1}{m} \cdot\sum_{i=1}^{m-1} \bigtriangledown J(W_{t}, X^{(i)} ,Y^{(i)})
gt=m1⋅i=1∑m−1▽J(Wt,X(i),Y(i))
r
t
+
1
=
r
t
+
g
t
⊙
g
t
r_{t+1} = r_{t}+g_{t}\odot g_{t}
rt+1=rt+gt⊙gt
W
t
+
1
=
W
t
−
η
t
r
t
+
1
+
ϵ
⊙
g
t
W_{t+1} = W_{t} -\frac{\eta _{t} }{\sqrt{r_{t+1} + ϵ} }\odot g_{t}
Wt+1=Wt−rt+1+ϵηt⊙gt
RMSProp
均方根反向传播法(RMSProp、Root Mean Square Propagation)
g
t
=
▽
J
(
W
t
)
g_{t}= \bigtriangledown J(W_{t})
gt=▽J(Wt)
r
t
+
1
=
β
r
t
+
(
1
−
β
)
g
t
⊙
g
t
r_{t+1} = \beta r_{t}+(1-\beta )g_{t}\odot g_{t}
rt+1=βrt+(1−β)gt⊙gt
W t + 1 = W t − η t r t + 1 + ϵ ⊙ g t W_{t+1} = W_{t} -\frac{\eta _{t} }{\sqrt{r_{t+1} + ϵ} }\odot g_{t} Wt+1=Wt−rt+1+ϵηt⊙gt
Adadelta
An Adaptive learning rate method
g
t
=
▽
J
(
W
t
)
g_{t}= \bigtriangledown J(W_{t})
gt=▽J(Wt)
r
t
+
1
=
β
r
t
+
(
1
−
β
)
g
t
⊙
g
t
r_{t+1} = \beta r_{t}+(1-\beta )g_{t}\odot g_{t}
rt+1=βrt+(1−β)gt⊙gt
q
t
=
α
q
t
−
1
+
(
1
−
α
)
(
q
t
−
1
+
ϵ
r
t
+
ϵ
⊙
g
t
)
2
q_{t} = \alpha q_{t-1}+(1-\alpha ) (\frac{\sqrt{ q_{t-1}+ ϵ}}{\sqrt{r_{t} + ϵ}} \odot g_{t})^2
qt=αqt−1+(1−α)(rt+ϵqt−1+ϵ⊙gt)2
W
t
+
1
=
W
t
−
q
t
+
ϵ
r
t
+
1
+
ϵ
⊙
g
t
W_{t+1} = W_{t} -\frac{\sqrt{ q_{t}+ ϵ}}{\sqrt{r_{t+1} + ϵ} }\odot g_{t}
Wt+1=Wt−rt+1+ϵqt+ϵ⊙gt
Adam
g
t
=
▽
J
(
W
t
)
g_{t}= \bigtriangledown J(W_{t})
gt=▽J(Wt)
v
t
+
1
=
α
v
t
+
(
1
−
α
)
g
t
v_{t+1} =\alpha v_{t}+(1-\alpha)g_{t}
vt+1=αvt+(1−α)gt
r
t
+
1
=
β
r
t
+
(
1
−
β
)
g
t
⊙
g
t
r_{t+1} = \beta r_{t}+(1-\beta)g_{t}\odot g_{t}
rt+1=βrt+(1−β)gt⊙gt
v
t
^
=
v
t
1
−
α
\hat{v_{t}} = \frac{ v_{t}}{1-\alpha}
vt^=1−αvt
r
t
^
=
r
t
1
−
β
\hat{r_{t}} = \frac{ r_{t}}{1- \beta}
rt^=1−βrt
W
t
+
1
=
W
t
−
η
r
t
+
1
+
ϵ
v
t
^
W_{t+1} = W_{t} -\frac{\eta}{\sqrt{r_{t+1} + ϵ} } \hat{v_{t}}
Wt+1=Wt−rt+1+ϵηvt^
AdamW
g
t
=
▽
J
(
W
t
)
g_{t}= \bigtriangledown J(W_{t})
gt=▽J(Wt)
v
t
+
1
=
α
v
t
+
(
1
−
α
)
g
t
v_{t+1} =\alpha v_{t}+(1-\alpha)g_{t}
vt+1=αvt+(1−α)gt
r
t
+
1
=
β
r
t
+
(
1
−
β
)
g
t
⊙
g
t
r_{t+1} = \beta r_{t}+(1-\beta)g_{t}\odot g_{t}
rt+1=βrt+(1−β)gt⊙gt
v
t
^
=
v
t
1
−
α
\hat{v_{t}} = \frac{ v_{t}}{1-\alpha}
vt^=1−αvt
r
t
^
=
r
t
1
−
β
\hat{r_{t}} = \frac{ r_{t}}{1- \beta}
rt^=1−βrt
W
t
+
1
=
W
t
−
η
(
1
r
t
+
1
+
ϵ
v
t
^
+
λ
W
t
)
W_{t+1} = W_{t} -\eta (\frac{1}{\sqrt{r_{t+1} + ϵ} } \hat{v_{t}}+λ W_{t})
Wt+1=Wt−η(rt+1+ϵ1vt^+λWt)
Adam with L2
g
t
=
▽
J
(
W
t
)
+
λ
W
t
g_{t}= \bigtriangledown J(W_{t}) + λ W_{t}
gt=▽J(Wt)+λWt
v
t
+
1
=
α
v
t
+
(
1
−
α
)
g
t
v_{t+1} =\alpha v_{t}+(1-\alpha)g_{t}
vt+1=αvt+(1−α)gt
r
t
+
1
=
β
r
t
+
(
1
−
β
)
g
t
⊙
g
t
r_{t+1} = \beta r_{t}+(1-\beta)g_{t}\odot g_{t}
rt+1=βrt+(1−β)gt⊙gt
v
t
^
=
v
t
1
−
α
\hat{v_{t}} = \frac{ v_{t}}{1-\alpha}
vt^=1−αvt
r
t
^
=
r
t
1
−
β
\hat{r_{t}} = \frac{ r_{t}}{1- \beta}
rt^=1−βrt
W
t
+
1
=
W
t
−
η
r
t
+
1
+
ϵ
v
t
^
W_{t+1} = W_{t} -\frac{\eta}{\sqrt{r_{t+1} + ϵ} } \hat{v_{t}}
Wt+1=Wt−rt+1+ϵηvt^