我正在尝试将强化学习应用于基于回合的游戏环境。每回合我都会获得一个(独立的/接近马尔可夫式的)状态,并且必须采取行动以促进世界进步。因为存在一些长期策略(开发资源“ A”,等待几轮开发,使用资源“ A”),所以我正在考虑在神经网络中使用LSTM层。在训练期间,我可以将轮次序列输入网络以训练LSTM;但是,在测试阶段,我只能提供当前状态(这是一个硬要求)。
我想知道LSTM在这里是可行的选择还是不适合这种用法,因为我只能在测试/部署期间提供一种状态。
答案 0 :(得分:3)
是的,这里的LSTM是可行的选择。在keras中,这将超越将“有状态”字段设置为true的困难。这样做是为了不重置每个样本之间单元格的内部状态,这意味着它将一直记住以前的步骤,直到重置此单元格为止。
在这种情况下,您只需将LSTM的有状态设置为true,将其每个步骤交给一个样本,并在完成该步骤后将其重置。请记住,如果有足够的信号可以满足您在一个样本中找到长期策略所需的所有时间步长,那么您可能不希望在训练过程中保持状态不变,因为您可能会在多个情节中进行回放。 >
如果您正在使用除keras之外的任何其他功能,则在xyz框架中使用状态LSTM进行谷歌搜索应该会进一步帮助您