Это правильная реализация Q-Learning for Checkers?

Я пытаюсь понять Q-Learning,


Мой текущий алгоритм работает следующим образом:

1. Ведется справочная таблица, которая сопоставляет состояние с информацией о его немедленном вознаграждении и полезности для каждого доступного действия.

2. В каждом состоянии проверяйте, содержится ли оно в таблице поиска, и инициализируйте его, если нет (с утилитой по умолчанию, равной 0).

3. Выберите действие с вероятностью:

    (*ϵ* = 0>ϵ>1 - probability of taking a random action)
    1-ϵ = Choosing the state-action pair with the highest utility.
    ϵ = Choosing a random move.
    ϵ decreases over time.

4. Обновление полезности текущего состояния на основе:

    Q(st, at) += a[rt+1, + d.max(Q(st+1, a)) - Q(st,at)]

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

Результаты. Результаты очень плохие, даже после пары сотен игр агент Q-Learning проигрывает намного больше, чем выигрывает. Кроме того, изменение винрейта практически отсутствует, особенно после достижения пары сотен игр.

Я что-то упускаю? Я реализовал пару агентов:

(механическое заучивание, TD(0), TD(лямбда), Q-обучение)

Но все они, похоже, дают одинаковые, разочаровывающие результаты.

введите здесь описание изображения


person Samalot    schedule 24.04.2016    source источник
comment
Запустив симуляцию, пока я набираю это, я на мгновение обновлю основной пост изображением некоторых результатов.   -  person Samalot    schedule 24.04.2016


Ответы (1)


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

Кроме того, пара предостережений:

  • В идеале следует обновлять одно значение за игру, потому что ходы в одной игре сильно коррелированы.
  • Вы должны инициализировать значения действий небольшими случайными значениями, чтобы избежать больших изменений политики из-за небольших обновлений Q.
person Don Reba    schedule 24.04.2016
comment
Спасибо! И просто для уточнения, вы говорите, что TD (0) вряд ли покажет какое-либо улучшение для шашек, скажем, за 1000 игр, - person Samalot; 24.04.2016
comment
@Samalot, я не удивлюсь, если он не улучшится после миллиона. - person Don Reba; 24.04.2016