【发布时间】:2021-02-16 04:14:35
【问题描述】:
我想使用 DQN 和样本训练一个不与环境交互的 RL 代理。 据我了解,DQN 是一种离策略算法,因此它似乎是可能的。 (我对吗?) 但是,到目前为止我还没有训练。具体来说,每个状态的 argmax 的值是相同的。 (在最优策略中应该是不同的。)
我的环境如下:
- 状态:4 个状态(
A,B,C,D) - 动作:3 个动作(
Stay、Up、Down) - 奖励与过渡:
B是终端状态。 (括号中的表达式表示(状态、动作、奖励、下一个状态)。)- 当您在
A中Stay时,您将在A中并得到0(A、Stay、0、A) - 当您在
A中Up时,您将在B中并获得0.33(A、Up、0.33、B) - 当您在
A中Down时,您将在A中并得到0(A、Down、0、A) - 当您在
B中Stay时,您将在B中并获得0.33(B、Stay、0.33、B) - 当您在
B中Up时,您将在C中并获得0.25(B、Up、0.25、C) - 当您在
B中Down时,您将在A中并得到0(B、Down、0、A) - 当您在
C中Stay时,您将在C中并获得0.25(C、Stay、0.25、C) - 当您在
C中Up时,您将在D中并获得0.2(C、Up、0.2、D) - 当您在
C中Down时,您将在B中并获得0.33(C、Down、0.33、B) - 当您在
D中Stay时,您将在D中并获得0.2(D、Stay、0.2、D) - 当您在
D中Up时,您将在D中并获得0.2(D、Up、0.2、D) - 当您在
D中Down时,您将在C中并获得 0.25(D、Down、0.25、C)
- 当您在
我的训练方式:
- 我将上面的每个样本都放在了缓冲存储器中。
- 然后我使用 DQN 进行训练。 (不与环境互动)
杂项
- 神经网络
- 两层(输入层和输出层。它们之间没有隐藏层)
- 优化器:Adam
- 超参数
- 学习率:0.001
- 批量大小:在 2 到 12 之间变化
代码截图
结果
- Result screenshot
- 该列是操作。 (0:
Stay,1:Up,2:Down) - 行是状态。 (有些不同,有些相同)。
- 每个状态的 argmax 为 1,这不是最优策略。
- 即使我运行了更多循环,结果也没有改变。
【问题讨论】:
-
我只想告诉你,如果你有关于 RL 主题的理论问题,Artificial Intelligence SE 是最好的提问网站。不确定这是否是一个理论问题。
-
谢谢你让我知道,@nbro :D 这个问题不是理论上的问题。
标签: tensorflow deep-learning reinforcement-learning dqn