使用LSTM预测单元素序列

我正在尝试将强化学习应用于一个基于回合的游戏环境中。每回合我都会得到一个(自包含/近似马尔可夫的)状态,并需要提供一个动作来推进游戏。由于存在一些长期策略(开发资源“A”,等待几轮后使用资源“A”),我考虑在神经网络中使用LSTM层。在训练过程中,我可以将回合序列输入到网络中来训练LSTM;然而,在测试阶段,我只能提供当前状态(这是一个硬性要求)。

我想知道在这种情况下LSTM是否是一个可行的选项,或者它们是否不适合这种用途,因为在测试/部署期间我只能提供一个状态。


回答:

是的,LSTM在这里是一个可行的选项。在Keras中,这可以通过将名为“stateful”的字段设置为true来实现。这样做的效果是不会在每个样本之间重置单元的内部状态,这意味着它会一直记住前面的步骤,直到这个单元被重置。

在这种情况下,你只需将LSTM设置为有状态(stateful),每次步骤提供一个样本,并在回合结束后重置。请记住,如果在训练过程中有足够的信号让你能够将寻找长期策略所需的所有时间步都放入一个样本中,你可能不希望在训练时保持有状态,因为你可能会对多个回合进行重放。

如果你使用的是Keras以外的其他框架,搜索“有状态LSTM在xyz框架中”的相关信息应该能进一步帮助你。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注