Tensorflow 如何使用tf会话根据网络输出更新游戏状态以进行强化学习

Tensorflow 如何使用tf会话根据网络输出更新游戏状态以进行强化学习,tensorflow,reinforcement-learning,Tensorflow,Reinforcement Learning,我确信这个问题已经得到了回答,但我找不到任何能解决我的具体问题的东西 我想在玩具游戏中玩一些强化学习算法。给定一个特定的游戏状态,我希望网络预测动作a。给定动作a,我将更新游戏状态,并在这个新的游戏状态下再次调用网络。这将重复,直到游戏结束 然而,我不知道如何通过网络的所有预测反向传播梯度。下面是我的(非常粗略的)tensorflow伪代码,用于描述我的设想: for game_step in range(max_game_steps): action = sess.run(predic

我确信这个问题已经得到了回答,但我找不到任何能解决我的具体问题的东西

我想在玩具游戏中玩一些强化学习算法。给定一个特定的游戏状态,我希望网络预测动作a。给定动作a,我将更新游戏状态,并在这个新的游戏状态下再次调用网络。这将重复,直到游戏结束

然而,我不知道如何通过网络的所有预测反向传播梯度。下面是我的(非常粗略的)tensorflow伪代码,用于描述我的设想:

for game_step in range(max_game_steps):
    action = sess.run(predict_action, feed_dict={game_state: current_state})
    current_state = update_state(current_state, action)
backpropagate_error_through_all_actions()
在这个公式中,梯度只有一个动作的背景,我不能把它们发送到所有的状态。不过,我不能连续30次运行网络,因为我需要执行状态更新。。。我错过了什么

我需要在tensorflow图中为整个玩具游戏建模吗?这似乎不合理


谢谢

在强化学习中,不要在tensorflow图中对环境建模。为了方便起见,我将写下tensorflow图中应该包含的内容

  • 获取输入状态信息的占位符

  • 策略网络(如果您使用策略梯度方法)-这是您的神经网络

  • 损失函数

  • 优化器

  • 然后在外部循环中保持环境运行。现在我要记下什么样的函数应该在图之外

  • 一种可以访问环境的函数,在执行操作后提供状态表示
  • 一个可以访问tensorflow图的函数,该函数在向
    这个功能
  • 可以由外部循环调用的函数列,可以在tensorflow图内部运行优化器
  • 现在您可能会想,从外部循环访问tensorflow图的最佳方式是什么。
    始终使用tf.get_default_session()

    对,这或多或少是我在伪代码中写的。不过,我的问题仍然存在。我如何将预测动作A_t、应用动作A_t以获得新状态和预测动作A_t(t+1)之间的梯度连接起来?如果我必须不断地从图表中弹出以应用预测,我如何通过时间反向传播?意识到这是一个重复:。谢谢你的帮助。