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