saroff
@saroff
Enterprise Java Developer

Как обучить нейронную сеть для игры в «Крестики-нолики»?

Написал сеть, которая играет в "Крестики-нолики". Встал вопрос - как обучить? Первое что попробовал - рандом. Поставил ее против рандома 70% выигрышей 10% ничьей. Попробовал сыграть против обученной таким способом сети сам - по сути выучила она как следует только правила игры. Напролом пытается выстроить ряд из трех ноликов, при этом абсолютно не замечая мои ходы.

Это никуда не годится. Поставил играть друг против друга две сети - 100% ничьи. Стал наказывать за ничьи как за проигрыши - 50\50 побед при любом числе прогонов. Решил попробовать сначала обучить сеть правилам игры с помощью рандома, а потом поставить играть против другой сети точно так же обученной - в результате либо 50\50, либо с определенным шансом одна сеть обгоняет другую в самом начале и выигрывает 100% игр. Я пробовал играть с сетью после обучения каждым из этих способов - играют плохо(

Как же можно программно обучить такую нейронную сеть? Играть с ней самому либо вручную забивать все комбинации - не для этого я учился писать код. Обучить как-то должно быть возможно, ведь, как известно, правильно действуя в крестиках ноликах, можно получить 100% непроигрышей. А 80% против жалкого рандома - это как-то не айс :\
  • Вопрос задан
  • 16152 просмотра
Пригласить эксперта
Ответы на вопрос 6
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Вы бы хоть описали что за сеть, какая конфигурация и т.д. И почему именно нейронки?
Ответ написан
Комментировать
afiskon
@afiskon
Крестики-нолики не интересная задача, так как число состояний очень мало и фактически их с ручкой и бумажкой можно легко все составить. Получится вход - текущее состояние, выход - куда и чем походить. Тут даже нейросеть не нужна. И потом, любую игру можно свести к ничьей, что объясняет результат, полученный при игре одной НС с другой.

Вот, думаю, с нардами или шашками будет куда интереснее. Или крестики-нолики на большом поле, где нужно N крестиков/ноликов поставить в ряд хотя бы.
Ответ написан
Funbit
@Funbit
Крестики-нолики плохо подходят для нейронных сетей. В этой игре все ходы можно легко рассчитать.
Ответ написан
opium
@opium
Просто люблю качественно работать
Наверно у вас хреновый рандом, вы его инициализируете от текущего времени?
НУ и надо больше подробностей, что у вас за сеть.
Ответ написан
kosmos89
@kosmos89
Так что за топология-то у нейросети? Разные сети обучают по-разному. Вангую, что 3-4 слойная сеть справится с задачей. Обучить можно ОРО (обратное распространение ошибки). Наверное.
Ответ написан
Iworb
@Iworb
WEB-разработчик
Вы не обучите нормально такую сеть, поскольку не учитываются взаиморасположения крестиков и ноликов. Добавьте скрытый слой хотя бы с 1 нейроном (желательно не персептроном), что-бы получить более приемлимый результат.
Также советую заменить на выходе персептроны на что-либо другое, чтобы компьютер мог выбрать куда походить лучше. Сейчас у вас, как я понял, просто стоит 1 там, где можно походить.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы