В настоящее время я читаю о машинном обучении и удивляюсь, как применить его в игре Connect Four .
Моя текущая попытка - простой мультиклассовый классификатор, использующий модель сигмоидальной функции и метод «один против всех».
По моему мнению, входные функции должны быть состоянием (диск плеера 1, диск плеера 2, пустой) полей сетки 7x6 = 42.
Выходом будет номер строки, в которую нужно вставить диск. Поскольку это дискретное число от 1 до 7, я думаю, это можно рассматривать как проблему классификации мультикласса.
Но как мне создать учебные примеры, которые можно использовать в обучении под наблюдением?
Основная цель - победить в игре, но результат, очевидно, неизвестен при выполнении каждого, кроме последнего хода. Если я просто позволю двум игрокам, которые случайным образом решат, что делать, играть друг против друга тысячи раз, будет ли достаточно просто взять все ходы, сделанные победителем каждого игрового раунда, в качестве тренировочных примеров? Или я должен сделать это совершенно по-другому?
Изменить: как предложено в комментариях, я прочитал немного об обучении подкрепления. Из того, что я знаю, Q-Learning должен делать свое дело, то есть я должен аппроксимировать функцию Q текущего состояния и действие, которое нужно сделать, чтобы получить максимальное совокупное вознаграждение, начинающееся в этом состоянии. Тогда на каждом шаге будет выбираться действие, которое приведет к максимальному значению Q. Однако в этой игре слишком много состояний, чтобы сделать это, например, в качестве справочной таблицы. Итак, что является эффективным способом для моделирования этой Q-функции?
Ответы:
Просто чтобы предложить более простую альтернативу обучению с подкреплением, вы можете использовать базовый минимаксный алгоритм для поиска хороших ходов и использовать машинное обучение для оценки позиций доски.
Для пояснения, минимакс строит игровое дерево, в котором каждый узел помечен с учетом выигрыша (1 = игрок A выигрывает, 0 = игрок B выигрывает), предполагая, что A выбирает ходы, которые максимизируют это число, а B выбирает ходы это минимизирует это.
Если игра не очень проста, вы не сможете построить все игровое дерево вплоть до терминалов. Вместо этого вам нужно будет остановиться на незавершенных позициях на доске и оценить эвристические листы (по сути, вероятность того, что игрок А выиграет с данной позиции). Вы можете позволить алгоритму машинного обучения, подобному нейронной сети, попытаться изучить эту вероятность, соединяя четыре позиции с известными результатами.
Чтобы создать примеры тренировок, вы можете создать своего минимаксного игрока с простой эвристикой, позволить ему играть в себя тысячу раз, использовать эти игры для обучения своей первой нейронной сети, а затем позволить себе заплатить тысячу игр и так далее. Если повезет, ваша система будет улучшаться с каждым поколением.
источник
Я написал пост в блоге о том, как использовать минимакс для игры connect 4 некоторое время назад. Вы можете увидеть код в действии здесь . Если вам нужно обучить свои модели, вы можете позволить ему сыграть пару тысяч игр против моей минимаксной реализации.
источник