2016-12-13 6 views
2

Я пытаюсь научиться создавать нейронную сеть, которая может изучить стратегию игры с тик-таком и может играть против человека. Я провел много исследований, и я создал обратную систему нейронной сети с 9 нейронами для ввода, 9 нейронов для скрытого слоя и 9 нейронов для выходного слоя.Tic Tac Toe Нейронные сети

У меня есть целый графический интерфейс tic-tac-toe в python, и я подключил каждые 9 блоков до 9 входных и выходных нейронов. Я использую сигмоид в качестве моей функции активации. Мой главный вопрос: как я могу обучить эту нейронную сеть игре против человека?

+0

Вы должны проверить [AlphaToe] (https://github.com/DanielSlater/AlphaToe), они научили машину играть в Tic Tac Toe, используя глубокие методы обучения от Alpha Go – JMat

+0

Возможно, лучше подходит для статистики. –

+0

@JMat Я новичок в нейронных сетях, поэтому я решил пойти с основами. Спасибо. –

ответ

0

Для этой задачи я бы использовал генетический алгоритм, с игроком в качестве функции фитнеса. Генетический алгоритм будет применять различные наборы весов, и вы, как игрок, даете каждому индивидуальному счету, исходя из вашего мнения, насколько хорош ваш противник против AI.

+0

Благодарим вас за ответ. Можете ли вы кратко рассказать о генетическом алгоритме. –

+0

Генетический алгоритм - алгоритм оптимизации, основанный на биологии. Вкратце. Вы произвольно создаете все веса своей сети несколько раз. Вы играете в игру или игры со всеми случайно сгенерированными наборами, которые оценивают множества. Некоторые наборы будут иметь более высокий балл, и эти наборы будут оптимизированы по алгоритму с целью получить лучшие результаты. [Ссылка] (https://www.youtube.com/watch?v=ejxfTy4lI6I). Это видео просто объясняет, как работает ГА. Для моего взгляда есть реализация генетического алгоритма для этой задачи более простой tha backprop. – viceriel

+0

Благодарим вас за ответ. –

0

Здесь вы можете использовать подход policy gradients. Если вы играете в случайные игры (оба игрока совершают случайные ходы), и говорят, что если игрок «O» выигрывает, вы вознаграждаете все «O» позитивно (уменьшает коэффициент дисконтирования, то есть конечный ход получает больше вознаграждения, а затем вознаграждение уменьшается на коэффициент) и награда «Х» движется негативно таким же образом. Если игра приводит к ничьей, вы можете вознаградить обоих игроков с меньшей положительной наградой.

Вы можете в конечном итоге вознаградить вспомогательные оптимальные ходы позитивно и наоборот, но при большом количестве игр все работает в вашу пользу.