Разработайте игровой ИИ с Tensorflow.js - PullRequest
0 голосов
/ 19 октября 2018

Я сделал игру в своем репозитории github ( "Lil Square of Eight" ) и создал код для игры против машины.Теперь, для учебы и для удовольствия, я хотел бы создать некоторый ИИ с Tensorflow.js, который может играть в игру и даже выигрывать.

Игра проста, каждый ход игрока нажимает на квадратную сторону, и на нем отмечаетсяс цветом игрока.Игрок, который закрывает клетку, делает счет и может продолжать свой ход.

Я провел несколько тестов с 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, который может разумно мыслить и играть в мою игру.Он может учиться с предыдущими играми и начать играть в игру.

1 Ответ

0 голосов
/ 27 мая 2019

То, что вы ищете, называется Усиление обучения .Это не так популярно, как большинство методов Tensorflow для ML.Примеры TFJS обычно вращаются вокруг контролируемых методов обучения.

В этом случае вот моя рекомендация.Самый популярный (для меня) метод игры на изучение подкрепления ML называется Q Learning.Во-первых, вы можете исследовать Q Learning на обычном старом Tensorflow и Python, затем вы можете преобразовать его в TFJS, как только вы глубоко поймете концепции.Вы будете одним из первых!

Вот отличная серия по Tensorflow AND Q Learning: https://medium.com/emergent-future/simple-reinforcement-learning-with-tensorflow-part-0-q-learning-with-tables-and-neural-networks-d195264329d0

Надеюсь, это даст вам направление!

...