Tensorflow优化器

tf.train.AdamOptimizer()【Adam优化器】

作用:

迭代更新神经网络的参数

定义:

__init__(
    learning_rate=0.001,
    beta1=0.9,
    beta2=0.999,
    epsilon=1e-08,
    use_locking=False,
    name='Adam'
)

关键字参数:
learning_rate( α ):学习率
beta1( β 1 ):一阶矩估计的衰减率
beta2( β 2 ):二阶矩估计的衰减率
epsilon( ϵ ^ ):辅助参数【不是论文算法1中的 ϵ
use_locking:锁定更新参数
name:优化器名称

优化过程:

参数:
1. α :学习率
2. β 1 :一阶矩估计的衰减率
3. β 2 :二阶矩估计的衰减率
4. θ 0 :需要优化的参数
5. f ( θ ) :目标函数

变量初值:
1.m 0 =0:一阶矩估计的偏差
2.v 0 =0:二阶矩估计的偏差
3.t=0:优化次数

过程:
如果 θ t (t时刻的参数)没有收敛:

         t = t + 1 # 优化次数+1

         g t = θ f t ( θ t 1 ) # 获取最新的目标函数值的梯度

         m t = β 1 m t 1 + ( 1 β 1 ) g t # 更新一阶矩估计的偏差

         m t = β 2 v t 1 + ( 1 β 2 ) g t 2 # 更新二阶矩估计的偏差

         m t ^ = m t / ( 1 β 1 t ) # 偏差修正的一阶矩估计

         v t ^ = v t / ( 1 β 2 t ) # 偏差修正的二阶矩估计

         θ t = θ t 1 α m t ^ / ( v t ^ + ϵ ^ ) # 更新参数

收敛后结束迭代,返回 θ t

tf.train.AdamOptimizer().minimize【优化目标最小化】

作用:

使优化器通过最小化loss来更新参数值

定义

minimize(
    loss,
    global_step=None,
    var_list=None,
    gate_gradients=GATE_OP,
    aggregation_method=None,
    colocate_gradients_with_ops=False,
    name=None,
    grad_loss=None
)

必选参数:
loss:需要最小化的值
关键字参数:
global_step:全局次数,如果不为None,则每次加1
var_list:自定义需要优化的参数,如果为None,则优化TRAINABLE_VARIABLES
gate_gradients:并发性参数,默认=GATE_OP(节点内部不并发)。可选GATE_NONE(最高级别并发)和GATE_GRAPH(最低级别并发)
aggregation_method:聚合方法
colocate_gradients_with_ops
name:返回操作的名称
grad_loss:维持loss的梯度计算结果


论文原文链接:Kingma D P, Ba J. Adam: A Method for Stochastic Optimization[J]. Computer Science, 2014.

猜你喜欢

转载自blog.csdn.net/zstu_xwq/article/details/82344405
今日推荐