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

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

Элементы обучения с подкреплением

  1. Политика поведения обучающегося в данный момент.
  2. Сигнал вознаграждения определяет цель в задаче обучения с подкреплением.
  3. Функция значения. Значение состояния - это общая сумма вознаграждения, которую агент может ожидать накопить в будущем, начиная с этого состояния.
  4. Модель окружающей среды: это то, что имитирует поведение окружающей среды.

Эта реализация игры в крестики-нолики начинается с поиска всех состояний игры, учитывая, что обучающий агент всегда запускается первым и использует «X». Базовая рекурсивная функция может использоваться для выполнения задачи, в которой базовое условие является решающим результатом, то есть победителем.

здесь current - это список из ".", "X", "O", где "." показывает пустые места. Каждый раз, когда мы входим в функцию, мы проверяем наличие решающего условия, и если текущее состояние является решающим, мы возвращаемся, не продвигаясь дальше. Эта функция генерирует около 6000 различных состояний игры, и значение каждого состояния равно 0, т. Е. Обучающий агент проиграл игру, 1 т.е. обучающийся агент выиграл игру. или 0,5, то есть 50% -ный шанс выигрыша или проигрыша в определенном состоянии. Переменная таблица хранит все состояния с вероятностью выигрыша из этого состояния.

За каждым человеческим шансом, то есть "O", следует шанс агента, то есть "X", если до сих пор нет результата. Обучающий агент предсказывает следующий ход, перебирая все возможные ходы из текущего состояния и выбирая ход / состояние с наибольшей вероятностью выигрыша. Иногда выбирается случайный ход, позволяющий обучающемуся агенту перейти в состояние, в котором он не был раньше и который не является оптимизированным выбором.

Новое состояние или новый ход влияют на последний ход обучающего агента по формуле

P(s) = P(s) + a*(P(s')-P(s))

где a - малая обучающая переменная, P (s ’) - вероятность выигрыша нового состояния, а P (s) - вероятность выигрыша старого состояния. Это помогает нам создать функцию ценностей, чтобы впоследствии к ней можно было обратиться, чтобы максимизировать вознаграждение.

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

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

Преимущество обучения с подкреплением перед логикой теории игр

Логика теории игр всегда учитывает, что оба игрока будут играть оптимально, и поэтому она не сможет использовать тот факт, что другой игрок сделал неправильный ход. Система вознаграждения, которая в случае игры в крестики-нолики является выигрышной, помогает агенту принимать решения и выбирать пути взаимодействия с окружающей средой и роста.