如何在 Keras 中构建和训练 LSTM 进行实时预测?

数据挖掘 喀拉斯 张量流 时间序列 lstm
2022-03-09 07:05:36

我正在尝试创建一个 AI 来使用 LSTM 玩 3D 近战格斗游戏。NN 接收敌人关节(例如头、手、腿)的相对位置作为输入,并且应该为每个时间步输出正确的运动。目前,我正在使用由 Keras 制作的 vanilla 前馈 NN,它表现良好,但它需要来自多个时间步长的信息才能更有效。

我现在正在尝试为这个问题实现 LSTM。我想在每个时间步接收一个输出,而不是在接收输出之前输入整个数据序列。

我相信有状态的 LSTM 适合这项任务,但我不确定如何训练它以及何时重置状态。理想情况下,人工智能不会有固定数量的记忆时间步长,并且能够在对每个时间步长进行实时预测时不断回顾,而不会在战斗期间突然重置其状态。

我的训练数据是每个时间步长的敌人位置(输入)和击键(输出)的连续序列。我将如何构建和训练 LSTM 以从这些数据中学习,以便使用 Keras 在每个时间步进行实时预测?

1个回答

这个问题的难点在于评估哪些动作本身是“正确的”。在一个格斗游戏序列中,可能有 2 个或更多在当前帧中理论上都有效的动作。如果您正在优化以将另一个角色击出框架,那么构建一个为此优化的奖励集会很有用。

建立一个数据集可能是值得的,该数据集考虑了相应的杆位置数据,然后基于模拟将过去和未来的时间位置标记为有利/不利,类似于国际象棋计算机。

首先,您必须构建能够识别完美连击的东西,在这种情况下,无论敌人如何输入,都没有可靠的方法来逃避导致高百分比或死亡的连击。然后问题就变得容易了,因为人工智能可以识别位置来设置这个组合,然后执行它们。

通过强化训练 cpu 进行组合,然后与标识符集成,你将拥有一个非常棒的机器人。