Методы обучения с подкреплением, которые сохраняют значения 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