首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于改变数据大小的深度强化学习

关于改变数据大小的深度强化学习
EN

Data Science用户
提问于 2019-10-10 05:58:58
回答 1查看 767关注 0票数 2

我有一个游戏,我想要建立一个模型,将学习玩游戏。然而,环境输出是两个列表,表示用户和对手士兵的位置和数量。

列表长度随着每一步的变化而变化,因此要知道网络的输入大小是一个问题。

如何处理这件事?

EN

回答 1

Data Science用户

发布于 2019-10-10 08:23:26

虽然这个问题在强化学习( RL )项目中经常发生,但它不是RL问题。这个问题是由于神经网络的需求,也适用于许多其他参数化机器学习解决方案。

可以以有限的方式改变神经网络的参数数。然而,它通常只能在训练(或再训练)之前完成,并不是一种适当的方法来处理在一小部分时间步骤中发生的变化,或者在训练后预测期间(例如,当与经过训练的代理人玩游戏时)。

有几种不同的方法你可以采取。哪个是合适的将取决于游戏的细节:

Pad输入

这是最简单的方法,你不需要额外的研究就可以做到这一点。它依赖于在任何时间步骤中可以使用的最大输入数。

实际考虑因素:

  • 有一个简单的机制来确定是否存在一组特定的输入。例如,添加一个{0,1}标志以显示一个单元的存在,剩下的表示该单元的输入以某些中性值(如0 )表示。
  • 如果使用最后几个输入的情况很少,那么您应该期望神经网络非常缓慢地了解这些情况。它不会在不同输入“插槽”中的单元间泛化,除非你改变架构来连接它们。

将单位列表的表示转换为“世界地图”

对于一个运动是离散的游戏来说,这是很好的工作,并且有限制在任何单个空间中可能堆叠的数量的规则。它还允许您使用CNN的架构。

例如,这就是AlphaZero表示Go和Chess的方式,这两种方法都允许在同一时间在棋盘上放置不同数量的棋子,但是董事会本身是严格定义的。就国际象棋而言,这也是AlphaZero如何识别要移动的块,以及如何通过匹配网格上的输出来选择块和运动类型(在这种情况下,每个选择/移动类型组合都是一个单独的输出通道,输出同时表示1000 s的潜在移动)。

实际考虑因素:

  • 如果您的单位有您需要跟踪的统计信息,那么每个单元都可以在一个单独的网格实例中运行(有时被称为“平面”或“通道”)。因此,你可能有一个网格显示一个片段,另一个识别它的类型,另一个它的附着强度等,所有的堆叠成一个三维结构假设棋盘是2D。
  • 如果映射非常大或连续,则可以将其离散到网格中。
  • 使用CNN可以根据碎片和它们的统计数据之间的相似性进行良好的概括。但是,如果网格非常大,或者任意一个网格位置上的成堆碎片可能变得很大,除了需要更大的内存空间来表示游戏状态,这种方法就会变得有限。

特征工程

从技术上讲,将游戏表示为地图/板只是RL中一种常见的功能工程形式。无论它是否会起作用,你知道游戏,并可能知道哪些因素是重要的发挥它。您可以使用这些知识简化重编码,并总结与单元数量无关的关键细节。

例如,根据游戏中最强单位的接近程度来确定比赛的优先级可能是很重要的。因此,您可以根据这种启发式方法对可用的单元进行排序,并提供一个较小的固定数量的关键单元。

实际考虑因素:

  • 这可以与任何其他方法相结合。
  • 这在很大程度上取决于你的创造力和对游戏的良好的技术理解,以及在神经网络的特性中什么是有效的。

如果你想要关于可能的功能工程方法的建议,我建议你打开一个新的问题与游戏的更多细节。

递归神经网络(RNNs)

递归神经网络结构(如LSTM或GRU )可以直接处理混合长度序列。当序列中的每一项都是相同类型的对象,但具有不同的特征值时,这种方法可以很好地工作。

实际考虑因素:

  • RNNs比完全连接的前馈网络(CNN)更难理解和训练。
  • 如果两个单元列表只是游戏表示的一部分,则需要一个混合系统,它将RNN体系结构与其他神经网络设计相结合。
票数 4
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/61536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档