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

1

Я хочу реализовать 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

Теги:
deep-learning
reinforcement-learning
q-learning
openai-gym

2 ответа

1

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

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

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


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

Если вы знакомы с проектом второго издания для книги по изучению подкрепления Саттона и Барто, вы найдете много таких методов в главах 9-12.


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

  • 0
    Я посмотрел немного больше, и да, приближение функции - путь. Из того, что я видел, вы просто делаете градиентный спуск с наградой в качестве выходного ярлыка и 3 или 4 кадров ввода одновременно, тренируясь только для одной эпохи каждый раз. Теперь у меня вопрос: как с помощью этого вы можете предсказать больше, чем следующее состояние, используем ли мы другую нейронную сеть для аппроксимации состояния, а затем используем аппроксиматор вознаграждения в этом сгенерированном состоянии для уравнения Беллмана?
  • 0
    @ Tissuebox Нет, это был бы еще один класс методов RL, названный «RL на основе модели». Стандартный подход, даже с приближением функции, все еще состоит в том, чтобы попытаться изучить функцию Q которая действительно предсказывает значения Q (например, обучающий сигнал - это не просто одношаговое вознаграждение, но, например, это одношаговое вознаграждение плюс gamma -умножение на Q значение, предсказанное вашей функцией, изученной на данный момент для следующего состояния. Точно такое же правило обновления, как и у вас есть в табличном RL. Вы можете просматривать Q таблицу в табличном RL также как «аппроксиматор функции», который отлично различает все состояния
0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню