学习预测和玩简单投注游戏的机器学习

数据挖掘 机器学习 Python 游戏
2022-03-07 08:20:50

我有一个简单的游戏,我正在构建一个有趣的游戏,只是为了看看 ML 可以如何处理简单的数据集。

基本上它只是一个游戏,它的回合是这样的:

  • 计算机生成一个随机数x,并且不显示播放器。

  • 玩家下注他们可以猜到的数字低于x. 呼叫投注金额w

  • 玩家试图猜测一个低数字g.

  • 如果g<x,则玩家获得wg点。

  • 如果gx,然后玩家输掉赌注,w点。

如果玩家有资金ft在回合开始时t那么另一种说法是:

ft+1={ft+wg,if gxftw,otherwise

这是一个游戏的例子:

  • 从...开始f=50
  • 转1,x=11, 玩家投注w=8和猜测g=9. 玩家收益+72点,所以f=122在回合结束时。
  • 转2,x=10.5,w=4,g=7, 点变化+28,f=150.
  • 3号弯,x=20,w=1,g=6, 点变化+6,f=156.
  • 转4,x=2,w=10,g=15, 点变化10,f=146.

我想使用 ML 来尝试预测这一点,方法是给它预先生成的转弯,看看它是否能找到任何模式。只涉及几个变量,所以我认为它不应该过于复杂。理想情况下,我希望 ML 学习如何玩游戏。

我想知道哪种类型的机器学习适用于这类问题?我不清楚从哪里开始,尽管我已经让游戏变得简单了。我过去制作了一些更复杂的游戏,我也想尝试将 ML 应用到这些游戏中。

1个回答

您可以使用几种不同的数据科学和机器学习技术来处理该游戏输出的数字。你可以尝试分析人类玩家的风格。您可以通过忽略实际获得或损失的金额并估计以下概率分布来生成预期收益/损失表x即使玩家没有看到它,只是从知道是否x>w或者xw从足够的例子。

如果您的最终目标是找出计算机如何这样的游戏,那么一个明确的机器学习选择将是强化学习 (RL)。这不是计算机玩游戏的唯一方式——为此有很多优化技术。然而,它是一种机器学习方法 - 它从数据观察中学习 - 在许多变体中,它包括您可能会感兴趣的数值分析,例如从某个位置获胜的机会,或预测的未来奖励。

RL 不是单一的算法,甚至不是单一的方法。相反,它是一种构建问题的方式,解决这类问题的所有方式都被认为是强化学习。要使 RL 发挥作用,需要将问题定义为马尔可夫决策过程 (MDP)好消息是,您的示例游戏和类似游戏已经是 MDP 的好示例。

在 RL 中,代理玩游戏的方式称为策略RL 的通常目标包括测量特定策略的性能,或发现最佳策略。

那么,从哪里开始呢?首先,如果您想在游戏中尝试 RL 流程,您可能应该做几件事:

  • 了解游戏中什么是状态,什么是动作,什么是奖励

    • 状态是代理知道并可以影响结果的任何内容。可能这里唯一需要担心的是目前的资金f,尽管这可能不会产生巨大的影响,除非w总能达到f. 请注意,每个值都被视为不同的状态。

    • 动作是代理对两者的选择wg- 请注意,每个特定组合都被视为不同的操作。如果有大量动作,这会使学习变得更加困难,需要更高级的 RL 算法,因此我建议您最初尝试选择有限数量的游戏变体。

    • 最明显的奖励选择是改变f在每一回合结束时。但这不一定是,这取决于您认为游戏的“获胜条件”是什么。见下文。

  • 稍微简化游戏选项。对可能的范围设置一个小的限制x,w,g. 这将使最初的尝试变得更容易。

  • 设定一个你想要实现的明确目标,并确保游戏结构适合这个目标。您可能需要调整游戏表示,即使是简单的更改,例如“在 10 回合内获得最多奖励” - 因为这可能会鼓励在某些步骤下大赌注,并且代理需要知道它还剩下多少回合(所以你的状态变成组合(f,t). 另一个可行的变体是设定获得一定数量资金的目标,例如 1000。在这种情况下,奖励不会是资金的增加。f,但实际上是 +1 表示达到该目标,而 0 表示任何其他结果。这可能会从根本上改变代理的行为,这可能很有趣。

  • 查找简单的强化学习算法。我建议您从表格方法开始——也许是蒙特卡洛控制或 Q-Learning。它们通常可以在 Python/Numpy 中用几十行代码实现。

RL 的一个有用资源是Sutton & Barto 的Reinforcement Learning: An Introduction第二版草稿可免费下载。