使用Tensorflow.js开发游戏AI

时间:2018-10-18 21:37:02

标签: javascript tensorflow artificial-intelligence game-development tensorflow.js

我已经在我的github存储库("Lil Square of Eight")中制作了一个游戏,并创建了一些可与机器对抗的代码。现在,出于学习和娱乐目的,我想使用Tensorflow.js创建一些可以玩游戏甚至获胜的AI。

游戏很简单,每转一圈,玩家单击一个方形边,并用玩家的颜色标记。闭合方格的球员得分很高,可以继续转弯。

我已经使用Tensorflow.js做过一些测试,但我完全不理解。我所能做的就是验证一个方格的边是否可以单击,而不给其他玩家得分机会,或者自己得分。

const model = tf.sequential();

model.add(tf.layers.dense({ units: 16, inputShape: [8] }));
model.add(tf.layers.dense({ units: 16, inputShape: [16], activation: 'sigmoid' }));
model.add(tf.layers.dense({ units: 1, inputShape: [16] }));
model.compile({ optimizer: tf.train.adam(0.1), loss: 'meanSquaredError', lr: 0.3 });

const xs1 = tf.tensor2d([
                [0, 1, 1, 1, 2, 0, 3, 0], [0, 1, 1, 0, 2, 1, 3, 0], [0, 1, 1, 0, 2, 0, 3, 1], [0, 0, 1, 1, 2, 1, 3, 0], [0, 0, 1, 1, 2, 0, 3, 1], [0, 0, 1, 0, 2, 1, 3, 1],
                [0, 1, 1, 1, 2, 1, 3, 1],
                [0, 0, 1, 0, 2, 0, 3, 0], [0, 1, 1, 0, 2, 0, 3, 0], [0, 0, 1, 1, 2, 0, 3, 0], [0, 0, 1, 0, 2, 1, 3, 0], [0, 0, 1, 0, 2, 0, 3, 1],
                [0, 0, 1, 1, 2, 1, 3, 1], [0, 1, 1, 0, 2, 1, 3, 1], [0, 1, 1, 1, 2, 0, 3, 1], [0, 1, 1, 1, 2, 1, 3, 0]]);

await model.fit(xs1, tf.tensor2d([[0], [0], [0], [0], [0], [0], [0], [1], [1], [1], [1], [1], [2], [2], [2], [2]]), {epochs: 550});

console.log(model.predict(tf.tensor2d([[0, 1, 1, 0, 2, 0, 3, 0]])));

编辑

根据要求,我想帮助我如何使用Tensorflow.js创建可以智能思考和玩游戏的AI。它可以通过先前的游戏学习并开始玩游戏。

1 个答案:

答案 0 :(得分:0)

您要寻找的被称为Reinforcement learning。它不像大多数ML的Tensorflow方法那样流行。 TFJS示例通常围绕监督学习方法而发展。

在这种情况下,这是我的建议。在ML强化学习中,最流行的游戏方法(对我而言)称为Q学习。首先,您可以使用常规的旧Tensorflow和Python研究Q Learning,然后在深入理解概念后将其转换为TFJS。您将成为第一个!

关于Tensorflow和Q学习的精彩系列文章:https://medium.com/emergent-future/simple-reinforcement-learning-with-tensorflow-part-0-q-learning-with-tables-and-neural-networks-d195264329d0

我希望这会给您一些指导!