我有一个游戏,我想要建立一个模型,将学习玩游戏。然而,环境输出是两个列表,表示用户和对手士兵的位置和数量。
列表长度随着每一步的变化而变化,因此要知道网络的输入大小是一个问题。
如何处理这件事?
发布于 2019-10-10 08:23:26
虽然这个问题在强化学习( RL )项目中经常发生,但它不是RL问题。这个问题是由于神经网络的需求,也适用于许多其他参数化机器学习解决方案。
可以以有限的方式改变神经网络的参数数。然而,它通常只能在训练(或再训练)之前完成,并不是一种适当的方法来处理在一小部分时间步骤中发生的变化,或者在训练后预测期间(例如,当与经过训练的代理人玩游戏时)。
有几种不同的方法你可以采取。哪个是合适的将取决于游戏的细节:
这是最简单的方法,你不需要额外的研究就可以做到这一点。它依赖于在任何时间步骤中可以使用的最大输入数。
实际考虑因素:
对于一个运动是离散的游戏来说,这是很好的工作,并且有限制在任何单个空间中可能堆叠的数量的规则。它还允许您使用CNN的架构。
例如,这就是AlphaZero表示Go和Chess的方式,这两种方法都允许在同一时间在棋盘上放置不同数量的棋子,但是董事会本身是严格定义的。就国际象棋而言,这也是AlphaZero如何识别要移动的块,以及如何通过匹配网格上的输出来选择块和运动类型(在这种情况下,每个选择/移动类型组合都是一个单独的输出通道,输出同时表示1000 s的潜在移动)。
实际考虑因素:
从技术上讲,将游戏表示为地图/板只是RL中一种常见的功能工程形式。无论它是否会起作用,你知道游戏,并可能知道哪些因素是重要的发挥它。您可以使用这些知识简化重编码,并总结与单元数量无关的关键细节。
例如,根据游戏中最强单位的接近程度来确定比赛的优先级可能是很重要的。因此,您可以根据这种启发式方法对可用的单元进行排序,并提供一个较小的固定数量的关键单元。
实际考虑因素:
如果你想要关于可能的功能工程方法的建议,我建议你打开一个新的问题与游戏的更多细节。
递归神经网络结构(如LSTM或GRU )可以直接处理混合长度序列。当序列中的每一项都是相同类型的对象,但具有不同的特征值时,这种方法可以很好地工作。
实际考虑因素:
https://datascience.stackexchange.com/questions/61536
复制相似问题