【问题标题】:Eligibility traces in TensorFlowTensorFlow 中的资格跟踪
【发布时间】:2017-06-08 02:05:11
【问题描述】:

根据 Sutton 的书 - Reinforcement Learning: An Introduction,网络权重的更新方程为:

其中 et 是资格跟踪。 这类似于带有额外 et 的梯度下降更新。
此资格跟踪是否可以包含在 TensorFlow 中的 tf.train.GradientDescentOptimizer 中?

【问题讨论】:

  • 我假设thetaedelta 都具有相同的形状,在这种情况下,您只需要梯度的元素乘法吗?这可以通过在使用变量值之前放置自定义渐变的身份操作来完成。如果这听起来不错,我可以举一个例子。
  • 没错。 thetaedelta 的形状为 [Number_of_classes, 1]
  • 啊,显然已经有tf.contrib.layers.scale_gradient。这对你有用吗?
  • 完美。您可以发布一个示例作为答案吗?

标签: tensorflow gradient-descent reinforcement-learning


【解决方案1】:

这是一个使用tf.contrib.layers.scale_gradient 进行梯度逐元素乘法的简单示例。在前向传递中,它只是一个身份运算,而在后向传递中,它将梯度乘以它的第二个参数。

import tensorflow as tf

with tf.Graph().as_default():
  some_value = tf.constant([0.,0.,0.])
  scaled = tf.contrib.layers.scale_gradient(some_value, [0.1, 0.2, 0.3])
  (some_value_gradient,) = tf.gradients(tf.reduce_sum(scaled), some_value)
  with tf.Session():
    print(scaled.eval())
    print(some_value_gradient.eval())

打印:

[ 0.  0.  0.]
[ 0.1         0.2         0.30000001]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-19
    • 2018-07-29
    • 1970-01-01
    • 2016-06-29
    • 2017-03-30
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多