TensorFlow 中的资格跟踪

Eligibility traces in TensorFlow

根据 Sutton 的书 - Reinforcement Learning: An Introduction,Network weights 的更新方程为:

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

这是一个使用 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]