какими должны быть размеры Q-матрицы в открытой среде для Q-обучения

Я хочу внедрить Q-обучение в Bipedal Walker v2 OpenAI, но после поиска руководств они кажутся всегда ограниченными средами, которые упрощают инициализацию Q-матрицы и матрицы вознаграждения.

например: http://mnemstudio.org/path-finding-q-learning-tutorial.htm

мой единственный вопрос: каковы должны быть размеры этих матриц в более открытой среде, такой как та, которую я хочу использовать?

Рассматриваемая среда: https://gym.openai.com/envs/BipedalWalker-v2/< /а>

Наблюдение, которое вы получаете (обратите внимание, что есть некоторое значение, которое может быть бесконечным): https://github.com/openai/gym/wiki/BipedalWalker-v2


person Tissuebox    schedule 21.06.2018    source источник


Ответы (2)


Методы обучения с подкреплением, которые сохраняют значения Q в матрице (или таблице), называются табличными методами RL. Это самые прямолинейные/простые подходы, но, как вы обнаружили, не всегда легко применимые.

Одним из решений, которое вы можете попробовать, является дискретизация вашего пространства состояний, создание множества «корзин». Например, hull_angle наблюдение может варьироваться от 0 до 2*pi. Вы можете, например, сопоставить любое состояние, в котором 0 < hull_angle <= 0.1, с первым бином, состояния с 0.1 < hull_angle < 0.2 со вторым бином и т. д. Если есть наблюдение, которое может варьироваться от -inf до +inf, вы можете просто решить где-нибудь поставить порог и обрабатывать каждое значение за пределами этого порога как один и тот же бин (например, все от -inf до -10 сопоставляется с одним и тем же бином, все от 10 до +inf — в другой бин, а затем меньшие области для большего количества бинов между ними).

Однако вам придется дискретизировать каждое из наблюдений в такие ячейки (или просто отбросить некоторые наблюдения), а комбинация всех индексов ячеек вместе сформирует единый индекс в вашей матрице. Если у вас есть 23 различных наблюдений и вы создаете, например, 10 бинов для каждого наблюдения, ваша окончательная матрица значений Q будет иметь 10^23 записей, что является... довольно большим числом, которое, вероятно, не умещается в вашей памяти.


Другое решение — изучить различные методы RL с помощью Function Approximation. В самом простом классе методов с аппроксимацией функции используется аппроксимация линейной функции, и именно эти методы я рекомендую изучить в первую очередь для решения вашей проблемы. Методы приближения линейной функции, по сути, пытаются изучить линейную функцию (вектор весов), так что ваши Q-значения оцениваются путем скалярного произведения между вектором весов и вашим вектором наблюдений/функций.

Если вы знакомы с черновиком второго издания книги Саттона и Барто «Обучение с подкреплением», вы найдете множество таких методов в главах 9–12.


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

person Dennis Soemers    schedule 22.06.2018
comment
Я посмотрел еще немного, и да, аппроксимация функции - это путь. Из того, что я видел, вы просто выполняете градиентный спуск с вознаграждением в качестве выходной метки и 3 или 4 входными кадрами одновременно, тренируясь только для одной эпохи каждый раз. Теперь мой вопрос заключается в том, как с помощью этого вы можете предсказать больше, чем следующее состояние, используем ли мы другую нейронную сеть для аппроксимации состояния, а затем используем аппроксиматор вознаграждения для этого сгенерированного состояния для уравнения посыльного? - person Tissuebox; 22.06.2018
comment
@Tissuebox Нет, это будет еще один класс методов RL, названный RL на основе модели ''. Стандартный подход, даже с аппроксимацией функции, по-прежнему заключается в том, чтобы попытаться изучить Q-функцию, которая действительно предсказывает Q-значения (например, обучающий сигнал - это не просто вознаграждение за один шаг, но, например, вознаграждение за один шаг плюс gamma, умноженное на Q-значение, предсказанное вашей функцией, полученной на данный момент, для следующего состояния. Точно такое же правило обновления, как и в табличном RL. Вы можете просмотреть Q-таблицу в табличном RL также как аппроксиматор функции, который отлично различает все состояния - person Dennis Soemers; 23.06.2018

В случае непрерывного пространства состояний целесообразно рассмотреть аппроксимацию нейронной сети вместо объединения данных, особенно в вашем случае, когда есть несколько признаков состояния. С бинированием данных по-прежнему будет связано проклятие размерности. Если вы хотите использовать Q-learning, взгляните на Deep Q-Networks. Это очень популярная версия глубокого RL, популяризированная Google DeepMind. Если вам интересно, как начать решать проблему, посмотрите на простые примеры на github с использованием keras — очень простой библиотеки для нейронных сетей.

person shunyo    schedule 22.06.2018