Наслышан об успехах RL в шахматы, Го и игры Atari. Но вот беда, как пытаешься на своей задаче обучить - ничего не работает! В интернете сплош и рядом приводятся примеры, как они обучали свой алгоритм для CartPole, ну вот например
https://pytorch.org/tutorials/intermedi ... rning.html но тут вообще всего 2 действия и фактически один параметр - угол наклона. А мне надо рабочую реализацию хотя бы для Go или Atari.
Опишу свою задачу (абстрактно и упрощенно). Допустим есть три кнопки, расположенные в ряд. Задача алгоритма - нажать на все кнопки поочередно.
observation выглядит так:
[1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0]
первые 15 чисел кодируют кнопки (1 означает "ненажатая кнопка"), остальные 15 чисел - внутреннее состояние агента, показывают на какую кнопку установлен курсор.
Всего 3 действия: 0 - поместить курсор на первую кнопку, 1 - сместить курсор вправо на следующую кнопку, 2 - нажать кнопку, на которую установлен курсор.
(при попытке смести курсор правее 3-ей кнопки, срабатывать не будет, но это не суть важно).
Если все три кнопки нажаты, то приписывается некое вознаграждение, и конец игры. А также конец игры, если больше 100 ходов, но без вознаграждения
Итого задача алгоритма просто-напросто сгенерировать последовательность действий: 021212. Но это в идеале. У меня получается результат примерно такой же, как при рандомном переборе действий. Где-то 10-40 итераций. Бывает, что и за 6 справляет, бытает и 100, но это редко. Это было на основе нейросети Deep Q-Network (DQN). Пытался еще muzero обучать, но там и того хуже получает (хуже, чем при рандомном выборе).
Как-то так. Может у кого-то получалось обучать RL для чего-нибудь, кроме CartPole?