赞
踩
Tensorflow中支持11中不同的优化器,包括:
tf.train.Optimizer
tf.train.GradientDescentOptimizer
tf.train.AdadeltaOptimizer
tf.train.AdagradOptimizer
tf.train.AdagradDAOptimizer
tf.train.MomentumOptimizer
tf.train.AdamOptimizer
tf.train.FtrlOptimizer
tf.train.RMSPropOptimizer
tf.train.ProximalAdagradOptimizer
tf.train.ProximalGradientDescentOptimizer
常用的主要有3种,分别是
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss)
使用随机梯度下降算法,使参数沿着
梯度的反方向,即总损失减小的方向移动,实现更新参数。
W
[
l
]
=
W
[
l
]
−
α
d
W
[
l
]
W^{[l]} = W^{[l]} - \alpha \text{ } dW^{[l]}
W[l]=W[l]−α dW[l]
b
[
l
]
=
b
[
l
]
−
α
d
b
[
l
]
b^{[l]} = b^{[l]} - \alpha \text{ } db^{[l]}
b[l]=b[l]−α db[l]
optimizer = tf.train.MomentumOptimizer(learning_rate,momentum).minimize(loss)
在更新参数时,利用了超参数
{
v
d
W
[
l
]
=
β
v
d
W
[
l
]
+
(
1
−
β
)
d
W
[
l
]
v
d
b
[
l
]
=
β
v
d
b
[
l
]
+
(
1
−
β
)
d
b
[
l
]
{
W
[
l
]
=
W
[
l
]
−
α
v
d
W
[
l
]
b
[
l
]
=
b
[
l
]
−
α
v
d
b
[
l
]
其中,
β
\beta
β : the momentum
α
\alpha
α : the learning rate
optimizer = tf.train.AdamOptimizer(learning_rate=0.001,
beta1=0.9, beta2=0.999,
epsilon=1e-08).minimize(loss)
利用自适应学习率的优化算法(此时learning_rate传入固定值,不支持使用指数衰减方式),Adam 算法和随机梯度下降算法不同。随机梯度下降算法保持单一的学习率更新所有的参数,学习率在训练过程中并不会改变。而 Adam 算法通过计算梯度的一阶矩估计和二阶矩估计而为不同的参数设计独立的自适应性学习率。
{
v
d
W
[
l
]
=
β
1
v
d
W
[
l
]
+
(
1
−
β
1
)
∂
J
∂
W
[
l
]
v
d
b
[
l
]
=
β
1
v
d
b
[
l
]
+
(
1
−
β
1
)
∂
J
∂
b
[
l
]
(
m
o
m
e
n
t
:
β
1
)
{
s
d
W
[
l
]
=
β
2
s
d
W
[
l
]
+
(
1
−
β
2
)
(
∂
J
∂
W
[
l
]
)
2
s
d
b
[
l
]
=
β
2
s
d
b
[
l
]
+
(
1
−
β
2
)
(
∂
J
∂
b
[
l
]
)
2
(
R
M
S
p
r
o
p
:
β
2
)
{
v
d
W
[
l
]
c
o
r
r
e
c
t
e
d
=
v
d
W
[
l
]
1
−
(
β
1
)
t
v
d
W
[
b
]
c
o
r
r
e
c
t
e
d
=
v
d
W
[
b
]
1
−
(
β
1
)
t
s
d
W
[
l
]
c
o
r
r
e
c
t
e
d
=
s
d
W
[
2
]
1
−
(
β
1
)
t
s
d
W
[
b
]
c
o
r
r
e
c
t
e
d
=
s
d
W
[
2
]
1
−
(
β
1
)
t
(
B
i
a
s
c
o
r
r
e
c
t
i
o
n
)
{
W
[
l
]
=
W
[
l
]
−
α
v
d
W
[
l
]
c
o
r
r
e
c
t
e
d
s
d
W
[
l
]
c
o
r
r
e
c
t
e
d
+
ε
b
[
l
]
=
b
[
l
]
−
α
v
d
b
[
l
]
c
o
r
r
e
c
t
e
d
s
d
b
[
l
]
c
o
r
r
e
c
t
e
d
+
ε
其中,
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。