您将如何设计一个机器学习系统来玩《愤怒的小鸟》?


22

在玩了太多《愤怒的小鸟》之后,我开始观察自己的策略。事实证明,我开发了一种非常具体的方法来使每个级别获得3星。

这让我想知道开发一个能够玩《愤怒的小鸟》的机器学习系统所面临的挑战。与游戏互动并发射鸟类是微不足道的。但是我有一个问题是关于系统的“构建块”。

机器学习系统似乎可以使用简单的概念或对该问题的理解。这通常被编码为要素作为输入。因此,系统似乎需要具有理解一些高级概念以生成策略的能力。

这是真的?另外,开发这样的系统有哪些挑战或困难部分?

编辑#1:

这里有一些澄清。获得3星是一个难题,因为您必须最大化积分。这可以通过两种非排他性的方式来完成:1)最小化使用的鸟类数量(每只未使用的鸟类获得10,000分)。2)最大程度地破坏玻璃,木材和其他物体。每个被破坏的物体都会给你分数。一只鸟有可能摧毁价值超过10,000点的物体。

这是有关“高级概念”的更多解释。为了最大化上述点,您需要使用每只鸟的特殊能力。因此,这意味着根据地图的布局发射具有不同轨迹的不同鸟类。并且,在比赛时,我制定了一种策略,该策略以特定顺序摧毁某些鸟类。

似乎,如果不了解如何使用每只鸟来破坏特定区域,系统将无法学会获得3星。那么,您如何管理和编码类似的东西?您如何确保系统可以学习这些高级概念?

Answers:


13

假设您可以正确连接软件(或使用自己的模型),那么这里有些事情很容易实现,而有些则不那么容易。我认为这是一个棘手的问题。正如carlosdc所说,强化学习(RL)是一种可能的途径,尽管我不确定这是正确的途径。

开始时,您必须定义状态空间动作空间过渡动力奖励功能。状态/动作空间可以是连续或离散的,并且过渡动力学可以由问题给出或进行数学建模。最终,奖励函数可以是先验的,也可以被采样(有或没有噪声)。

动作空间很简单:只是射击当前鸟类的方向和力量。对于人类来说,这是一个离散的问题(鼠标/触摸屏是数字输入设备)-例如,假设有32种可能的方向和10种可能的电源,给出320种可能的动作。

奖励函数也很容易得出:目标是摆脱所有鸟只数量最少的猪(好的,因此可以为其他事情加分,但现在暂时忽略它)。最好的办法是,如果我们知道从杀猪中产生分数的实际功能(取决于猪的大小,例如IIRC),但是对于单个级别,可以完美地建模。

状态空间和过渡动力学困难得多。为了正确建模,我们必须了解地图的整个布局以及游戏的物理原理。转换动力学说“如果我处于状态x并且执行动作y,我将进入状态z ”。您可以看到这一点的困难,首先是因为系统的复杂物理学意味着很难对其进行精确建模,其次是即使在第一轮之后(320),仍然存在如此多的可能结果状态,这就是我们假设物理引擎中没有随机性,我猜想从玩起它就没有了。我认为在这个阶段您会放弃并回家。

另一种方法是从一开始就像对待人类一样对待它-即反复试验。至少从一开始,人类实际上会随机开火(尽管在将鸟送向猪之前先有相当强的射击能力,但这很容易被编码),直到找到一系列好的行动为止。这更像是多臂匪设置。土匪的“手臂”是可能采取的行动。该算法试图平衡探索与开发之间的平衡,即探索动作空间并在发现好动作时加以利用。为此,您不需要了解任何潜在的动态-您只需要了解动作和奖励。要完全做到这一点,您将需要为每一轮可能的动作都配备一只手臂(例如,您有5只鸟* 320动作= 320 ^ 5 =大约10 ^ 12动作),因此动作空间非常大!但是,如果您知道一点点,可以使用一些技巧来改善这一点关于状态空间。例如,您可能会排除将鸟从猪身上带走,放到地面上或没有足够的力量伸向任何猪的动作。另外,如果您在前几轮中没有杀死过猪,那么您只需要到达第5位就可以了,因此实际上不可能实现一定比例的动作状态。这在某种程度上让人联想到算法MoGo中使用的方法,该算法是一种计算机程序,用于基于应用于树的上置信界来播放Go,这是一种解决多臂匪徒问题的方法。


1
好答案!我认为动作空间比320个可能的动作大得多。从左水平到垂直向下,每个像素被大约0.7英寸(在iPad上)弧形扫掠将产生不同的轨迹和结果。iPad的分辨率为132 dpi,因此大约有8,000个像素可供选择。我不想讲细节,但是将动作空间增加到8,000会改变答案吗?如何使用更大的动作空间?
B

试图模拟动力学是一个完全不同(且困难)的问题。我认为,在此讨论中,我们应该假设我们可以访问源代码并且可以准确地获取状态信息。另外,奖励功能不仅是杀死多少头猪。要获得3星的水平,您必须做一些更困难的事情。请参阅编辑以提问。
B

@BSeven原则上不,较大的动作空间不会改变答案,尽管您可能必须进行更多的修剪并使用更多的计算能力;-)但是请注意,这是并行处理的理想选择。恒星的问题很棘手,因为这意味着从杀人到恒星没有简单的映射,尽管我认为仅通过交叉点阈值即可获得更多恒星(通常是通过减少鸟类的数量来完成)。如果不是这样,您将不得不人为地增加探索的数量,以避免过早地选择次优路径。
tdc 2012年

8

很酷的问题!

似乎这个问题与这种问题的自然技术有关。我认为解决此类问题的自然方法是 强化学习(RL)。RL是关于代理商应如何在环境中采取行动以最大程度地增加累积奖励的概念。也许最著名的RL算法是Q学习。我认为这是该站点中关于强化学习的第一个问题。

我想您要问的是,如果您尝试将其作为分类/回归来处理,那似乎是对的,但是对于那些问题,这些似乎并不是正确的工具。这自然是一个RL问题,需要考虑到一系列行动和结果。



4

刚刚在meta中提到了这一点。Koza率先使用了遗传算法来解决电子游戏Pacman。他构建了可以感知并起作用的算法原语。正如我记得的那样,它们被组合成类似Lisp的树,以创建更大的算法。与Lisp树的交叉涉及替换或交换代表算法表达式的子树。成功功能类似于“吃掉的点”或“吃掉的点加鬼”或“活着的时间”。这个领域还有一些工作。接下来的这篇文章中有一个koza ref。对于这些类型的问题,培训时间可能很长,并且“收敛”非常缓慢。

学习扮演吃豆人: Gallagher和Ryan 基于规则的进化方法

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.