我是 ML 的初学者,最近一直在研究 RL。我打算创建一个 RL 应用程序来玩零和游戏。这将是基于网络的,所以任何人都可以玩。
我想知道我是否需要创建一个数据库(或某种其他类型的存储)来存储 RL 算法正在更新的策略,以便当下一个人类用户出现与应用程序对战时应用程序可以使用它?
我是 ML 的初学者,最近一直在研究 RL。我打算创建一个 RL 应用程序来玩零和游戏。这将是基于网络的,所以任何人都可以玩。
我想知道我是否需要创建一个数据库(或某种其他类型的存储)来存储 RL 算法正在更新的策略,以便当下一个人类用户出现与应用程序对战时应用程序可以使用它?
您在如何存储策略方面有很多选择,具体取决于您如何构建它 - 使用哪种 RL 算法,以及状态和动作的表示形式。
表格强化学习算法很适合存储在具有索引列和一个或两个列的数据库表state_id
中。如果您有一个中等大小的状态空间,这可能是一个不错的选择,因为您可以避免将整个表加载到内存中只是为了计算下一步。action
value
这是否可行将取决于您的游戏的复杂性。即使是像跳棋这样相对简单的游戏,也会因为状态空间太大而无法以这种方式枚举所有状态。
因此,您更有可能需要使用参数函数逼近器实现的某种策略函数或状态值函数。在 RL 中,这通常是一个神经网络。在这种情况下,您将使用您的神经网络库支持的任何存储机制 - 大多数人会很乐意将其参数读取和写入文件或字符串,从而使您在存储方式和存储位置上有很大的灵活性。
因此,您的策略很可能作为序列化神经网络存储在磁盘上的一两个文件中。如何在 Web 服务中有效地使用它本身就是一个复杂的主题。您可以在每次需要时读取文件并实例化神经网络,这对于简单的游戏和低流量服务来说可能没问题。然而,这是非常低效的。
一些围绕生产中使用而设计的神经网络库将允许您预加载神经网络并将其保存在请求之间的内存中。如何做到这一点完全取决于你使用的框架,所以我不能在这里更详细地解释。最初,对于您的项目,我不会太担心这部分。