如何在 PyTorch 中使用 LSTM 进行强化学习?

问题描述 投票:0回答:2

由于观察没有揭示整个状态,我需要用循环神经网络进行强化,以便网络对过去发生的事情有某种记忆。为简单起见,我们假设我们使用 LSTM。

现在内置的 PyTorch LSTM 要求您向其提供形状为

Time x MiniBatch x Input D
的输入,并输出形状为
Time x MiniBatch x Output D
的张量。

然而,在强化学习中,要知道

t+1
时间的输入,我需要知道
t
时间的输出,因为我正在环境中执行操作。

那么是否可以使用内置的 PyTorch LSTM 在强化学习设置中进行 BPTT?如果是的话,我该怎么做?

recurrent-neural-network backpropagation reinforcement-learning pytorch
2个回答
1
投票

也许您可以将循环中的输入序列提供给 LSTM。一些东西,像这样:

h, c = Variable(torch.zeros()), Variable(torch.zeros())
for i in range(T):
    input = Variable(...)
    _, (h, c) = lstm(input, (h,c))

例如,每个时间步都可以使用 (h,c) 和输入来评估操作。只要不破坏计算图,您就可以反向传播,因为变量保留所有历史记录。


0
投票

我花了很多时间让事情运行(模型学习:))并想分享我的发现。通过有效的 LSTM RL 训练检查我的代码 https://github.com/svenkroll/simple_RL-LSTM 并且还有一些更高级的细节我尝试回馈社区 here

© www.soinside.com 2019 - 2024. All rights reserved.