我正在构建在Malmo(Minecraft AI平台)环境中运行的DDPG代理。我的实现收敛到零分。
我尝试了正向和负向奖励函数,但是,这两种结果都会导致代理收敛于零分策略。
如何创建动作梯度:
# critic __init__()
self.gradients = tf.gradients(self.model.outputs, self.model.inputs[1])
如何使用动作梯度:
# actor __init__()
self.action_gradients = tf.placeholder(dtype=tf.float32, shape=(None, self.action_size))
self.parameter_gradients = tf.gradients(self.model.outputs, self.model.trainable_variables, -self.action_gradients)
gradients = zip(self.parameter_gradients, self.model.trainable_variables)
self.optimize = tf.train.AdamOptimizer(self.learning_rate).apply_gradients(gradients)
我希望随着时间的推移奖励会增加,但是该模型会随着时间的推移减少奖励并收敛到接近“ 0”。