Q-Learning神经网络实施

时间:2018-02-12 17:43:40

标签: neural-network q-learning

我试图用神经网络实现Q-Learning。我用q-table进行q-learning工作非常好。

我正在玩一个“抓住奶酪”游戏。

它看起来像这样:

# # # # # # # #
# . . . . . . #
# . $ . . . . #
# . . . P . . #
# . . . . . . #
# . . . . . . #
# . . . . . . # 
# # # # # # # #

玩家p正在地图上的某个地方产生。如果他撞墙,奖励将是负面的。让我们现在称之为负奖励-R。

如果玩家p击中美元符号,奖励将为正数。这个积极的回报将是+ R

在这两种情况下,游戏都将重置,玩家将在地图上随机生成某个地方。

我的神经网络架构如下所示:

-> Inputsize:   [1, 8, 8]
   Flattening:  [1, 1, 64] (So I can use Dense layers)
   Dense Layer: [1, 1, 4]
-> Outputsize:  [1, 1, 4]

为了学习,我将一些游戏样本存储在缓冲区中。缓冲区最大大小为b_max。

所以我的训练看起来像这样:

  1. 选择0到1之间的随机数
  2. 如果数字大于阈值,请选择随机操作。
  3. 否则选择奖励最高的行动。
  4. 采取行动并观察奖励。
  5. 通过从缓冲区中选择一批游戏样本来更新我的神经网络

    5.1遍历批处理并按如下方式训练网络:

    5.2对于每批。网络的输入是游戏状态。 (到处都是0,除了球员位置)。

    5.3输出层的输出误差在任何地方都是0,除非输出神经元等于该样本所采取的动作。

    5.4这里预期的输出将是: (the reward) + (discount_factor * future_reward) (future_reward = max (neuralNetwork(nextState))

    5.5从一开始就做好每一件事。

  6. 事情是它似乎没有正常工作。 我已经知道如何更改它以便它可以工作,但我不确定这是否“允许”:

    每个游戏决策都可以进行训练,直到它完全符合预期的要求。 然后我会去做下一个决定并对此进行训练,依此类推。培训通常如何进行?

    如果有人可以提供帮助并给我一个关于培训如何运作的详细解释,我将非常高兴。特别是当谈到“运行多少次循环?”时。

    问候, 芬兰

    这是一张地图,显示了神经网络在每个领域做出的决定:

    # # # # # # # # # # 
    # 1 3 2 0 2 3 3 3 # 
    # 1 1 1 1 0 2 2 3 # 
    # 0 0 $ 1 3 0 1 1 # 
    # 1 0 1 2 1 0 3 3 # 
    # 0 1 2 3 1 0 3 0 #  //The map is a little bit bigger but still it can be seen that it is wrong
    # 2 0 1 3 1 0 3 0 #  //0: right, 1 bottom, 2 left, 3 top
    # 1 0 1 0 2 3 2 1 # 
    # 0 3 1 3 1 3 1 0 # 
    # # # # # # # # # # 
    

0 个答案:

没有答案