我曾经写过俄罗斯方块AI,该俄罗斯方块AI相当出色。我使用的算法(described in this paper)是一个两步过程。确定在进化算法中权衡哪些输入
第一步,程序员决定跟踪对问题“感兴趣”的输入。在俄罗斯方块中,我们可能有兴趣跟踪连续有多少间隙,因为最小化间隙可以帮助更轻松地放置未来的棋子。另一个可能是柱子的平均高度,因为如果你即将输球,冒险是一个不好的主意。
第二步是确定与每个输入相关的权重。这是我使用遗传算法的部分。只要权重根据结果随时间调整,任何学习算法都会在这里执行。这个想法是让计算机决定输入与解决方案的关系。
使用这些输入及其权重,我们可以确定采取任何行动的价值。例如,如果将直线形状一直放在右列中,将消除4个不同行的间隙,那么如果重量较高,此操作可能会得到非常高的分数。同样,将它平放在顶部可能实际上会导致间隙,所以动作得分较低。
我一直想知道是否有办法将学习算法应用到第一步,在那里我们找到“有趣”的潜在投入。编写一个计算机似乎是可能的,计算机首先学习什么输入可能是有用的,然后应用学习来权衡这些输入。之前有没有做过这样的事情?它是否已被用于任何AI应用程序?
+1我想在这个领域开始。我有几个宠物演示程序,但没有大的。有兴趣看看你回答什么样的答案。 – 2009-10-28 18:15:09