Я хотел бы использовать обучение подкреплению, чтобы улучшить двигатель, играя против самого себя. Я читал на эту тему, но я все еще в замешательстве.
Имейте в виду: обучение подкреплению - это большой сложный предмет. Хотя это может отвлечь вас от игровых ботов, вы можете изучить основы RL. Хорошее место, чтобы начать - Обучение Укрепления Саттона и Барто : Введение
Какое еще вознаграждение в игре является частью выигрыша или проигрыша (1 или 0)?
В зависимости от вашей игры, это обычно так. На самом деле для игры на победу / ничье / поражение, такой как шахматы, награда за каждое действие равна 0, за исключением выигрыша (+1) или проигрыша (-1) в конце. В игре с нулевой суммой это хорошо сочетается с минимаксом, обрезкой по алфавиту и т. Д.
Укрепление обучения предназначено для сред с задержкой вознаграждения. Добавление поощрительных вознаграждений за временные нецелевые цели обычно приводит к обратным результатам.
Если я использую другие награды, например, вывод из функции оценки на каждом ходу, как я могу это реализовать?
Обычно это не так. Применение самоиграющего RL - это изучение функции возврата (иногда называемой утилитарностью ), которая предсказывает ожидание вашей общей награды + 1/0 / -1 к концу игры. Вы бы использовали это вместо вашей текущей эвристики для минимаксного поиска. Или же вы могли бы настроить свою текущую эвристическую функцию для вывода в том же диапазоне и использовать RL для оптимизации ее весов, чтобы сделать наилучшее приближение к истинной оптимальной функции возврата при воспроизведении (которая, вероятно, слишком сложна для точного вычисления).
Как я могу изменить функцию оценки, чтобы дать лучшую итерацию вознаграждений после итерации?
Это то, что разные RL подходы, которые все пытаются сделать, есть множество разных решателей. Нет короткого способа объяснить это. Вы можете начать с простого метода, такого как Q-Learning . Q-Learning изучает оценки Q (s, a) (называемые значением действия), которые представляют собой ожидаемый доход в состоянии s и при выполнении действия a, а затем в соответствии с оптимальной политикой. Для начала он делает произвольное предположение и уточняет его ближе к истинному значению с каждым шагом в учебной среде. Простые табличные Q-ученики делают это уточнение, просто сохраняя большую таблицу всех состояний и действий с наилучшей оценкой до настоящего момента истинного значения, и усредняя в каждой новой оценке, когда она получена.
Также возможно объединить метод RL для эвристики с упреждающим минимаксным поиском - это то, что делал оригинальный AlphaGo, и что AlphaGo Zero делает во время обучения. Это мощный подход, потому что минимаксный поиск будет работать для двойной проверки сгенерированной RL эвристики. Хотя для достаточно простых игр RL может выучить идеальную эвристику, и вам потребуется только локальный поиск (каким должен быть следующий ход).
Если ваша игра не очень проста (все возможные состояния помещаются в памяти), вам потребуется какой-то аппроксиматор функций внутри алгоритма RL. Нейронные сети являются стандартным выбором. Наличие чего-то для этой части неизбежно - хотя другой хороший выбор - это определить набор прокси-функций (которые вы могли бы использовать для создания эвристики вручную) и использовать линейный аппроксиматор - просто взвешенную сумму всех функций. Это может работать достаточно хорошо и используется, например, в шашечных (шашечных) игроках, обученных с использованием RL.
На самом деле, если ваша собственная эвристическая функция не слишком необычна, вы, вероятно, можете рассматривать ее как линейный аппроксиматор и использовать RL, чтобы узнать для нее наилучшие веса.