Алгоритм машинного обучения для игры Connect Four

14

В настоящее время я читаю о машинном обучении и удивляюсь, как применить его в игре Connect Four .

Моя текущая попытка - простой мультиклассовый классификатор, использующий модель сигмоидальной функции и метод «один против всех».

По моему мнению, входные функции должны быть состоянием (диск плеера 1, диск плеера 2, пустой) полей сетки 7x6 = 42.

Выходом будет номер строки, в которую нужно вставить диск. Поскольку это дискретное число от 1 до 7, я думаю, это можно рассматривать как проблему классификации мультикласса.

Но как мне создать учебные примеры, которые можно использовать в обучении под наблюдением?

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

Изменить: как предложено в комментариях, я прочитал немного об обучении подкрепления. Из того, что я знаю, Q-Learning должен делать свое дело, то есть я должен аппроксимировать функцию Q текущего состояния и действие, которое нужно сделать, чтобы получить максимальное совокупное вознаграждение, начинающееся в этом состоянии. Тогда на каждом шаге будет выбираться действие, которое приведет к максимальному значению Q. Однако в этой игре слишком много состояний, чтобы сделать это, например, в качестве справочной таблицы. Итак, что является эффективным способом для моделирования этой Q-функции?

Том
источник
2
Google "Укрепление обучения"
Джордж
Хорошо, я думаю, это действительно относится именно к этой проблеме. Похоже, впереди много чтения. Есть более конкретные указатели или рекомендации?
Том
1
Если бы я знал больше, я бы опубликовал это как ответ :) К сожалению, у меня нет опыта в обучении подкреплению. Я бы начал с книги «Машинное обучение» Тома Митчелла. Это очень хорошая вводная книга, в которой также есть глава об обучении укреплению.
Джордж
1
Последнее, мне просто любопытно узнать о машинном обучении и попытаться узнать его.
Том
1
@ Том, есть лучшие способы «познакомиться» с методами машинного обучения. Я бы начал с более базовых методов классификации и регрессии и пошел бы дальше. Вы можете получить наборы данных из хранилища данных машинного обучения UCI, ознакомиться с примечаниями курса машинного обучения Эндрю Нг (Стэнфорд) и приступить к реализации. Прямой переход к решению проблемы соединения 4 с использованием обучения с подкреплением кажется довольно неловким и чрезмерно сложным.
Ник

Ответы:

8

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

Для пояснения, минимакс строит игровое дерево, в котором каждый узел помечен с учетом выигрыша (1 = игрок A выигрывает, 0 = игрок B выигрывает), предполагая, что A выбирает ходы, которые максимизируют это число, а B выбирает ходы это минимизирует это.

Если игра не очень проста, вы не сможете построить все игровое дерево вплоть до терминалов. Вместо этого вам нужно будет остановиться на незавершенных позициях на доске и оценить эвристические листы (по сути, вероятность того, что игрок А выиграет с данной позиции). Вы можете позволить алгоритму машинного обучения, подобному нейронной сети, попытаться изучить эту вероятность, соединяя четыре позиции с известными результатами.

Чтобы создать примеры тренировок, вы можете создать своего минимаксного игрока с простой эвристикой, позволить ему играть в себя тысячу раз, использовать эти игры для обучения своей первой нейронной сети, а затем позволить себе заплатить тысячу игр и так далее. Если повезет, ваша система будет улучшаться с каждым поколением.

Питер
источник
2

Я написал пост в блоге о том, как использовать минимакс для игры connect 4 некоторое время назад. Вы можете увидеть код в действии здесь . Если вам нужно обучить свои модели, вы можете позволить ему сыграть пару тысяч игр против моей минимаксной реализации.

Лукас Вермеер
источник
Не стесняйтесь, чтобы раскошелиться мой код на Github. github.com/lukasvermeer/minimax
Лукас Вермейер
Добро пожаловать в Stack Exchange. Это сайт вопросов и ответов . Пожалуйста, прочитайте наш FAQ , в частности, как ответить . В частности, мы не хотим, чтобы посты состояли исключительно из ссылки на ответ. Спасибо за ваш вклад, но не могли бы вы кратко изложить основные моменты вашего поста в своем посте здесь?
Жиль "ТАК ... перестать быть злым"
Извините, но первоначальный вопрос был «как создать учебные примеры, которые можно использовать в контролируемом обучении?» Я предоставил ссылки на рабочий код, который можно использовать для их генерации. Я не вижу, как написание большего количества текста выше помогло бы удовлетворить первоначальную потребность.
Лукас Вермеер
«Ссылка на потенциальное решение всегда приветствуется, но, пожалуйста, добавьте контекст вокруг ссылки, чтобы ваши коллеги-пользователи имели представление о том, что это такое и почему оно есть. Всегда указывайте наиболее релевантную часть важной ссылки, если целевой сайт недоступен или постоянно недоступен ". Я думаю, что я сделал первое. Последнее было бы неактуально. Исходный вопрос нуждается в примерах игр, а не в объяснении того, как реализовать решение.
Лукас Вермеер