Вопрос или проблема
В данный момент я работаю над коллекцией алгоритмов обучения с подкреплением: https://github.com/lhk/rl_gym
Для глубокого Q-обучения необходимо вычислить Q-значения, которые должны предсказываться вашей сетью. Существует множество стратегий: Монте-Карло, временные различия, TD(лямбда), …
В основном вы получаете компромисс между количеством шагов, на которые вы смотрите в будущее, и дисперсией ваших наблюдений.
Вместо того, чтобы предсказывать Q-значения, также возможно предсказывать преимущества. Где A(s, a) = Q(s, a) - V(s)
. Таким образом, преимущество описывает, насколько больше, чем ожидается, вы получаете. Это обсуждается и мотивируется здесь.
Для предсказания Q-значений вам нужно балансировать дисперсию и количество шагов, которые вы смотрите в будущее. У преимущества есть метод, называемый обобщенной оценкой преимущества (GAE), который делает это очень аккуратно: https://arxiv.org/abs/1506.02438
Я хотел бы предсказывать эти преимущества, вместо Q-значений. Это отнюдь не новая идея, и, как видно, обучение на основе преимущества может превосходить Q-обучение: http://www.cs.cmu.edu/afs/cs.cmu.edu/project/learn-43/lib/photoz/.g/web/glossary/advantage.html
Вышеуказанная ссылка содержит очень небольшой абстракт о обучении на основе преимущества. Важная часть:
Обучение на основе преимущества […] требует лишь хранения преимуществ A(x,u)
Но как же мне это сделать?
Статья по GAE предполагает, что я могу предсказывать значение для каждого состояния. Мне нужны значения для вычисления преимуществ.
Насколько я вижу, у меня есть два варианта:
-
Предсказать только преимущества, а затем как-то вычислить значение из преимущества. Насколько я вижу, нам нужны два из: Q-значения, преимущества, значения. Таким образом, если я не хочу предсказывать значения, мне нужно предсказывать Q-значения. Что и является оригинальной проблемой. Я где-то читал, что максимальное преимущество – это значение, но это не имеет для меня смысла, и я больше не могу найти ссылку.
-
Предсказать как преимущества, так и значение. Если я сделаю это, реализовать GAE и обучить сеть правильно предсказывать преимущества будет просто. Но что мне использовать в качестве целевого значения для значения? Если я использую формулировку GAE для преимуществ, это выглядит как много шагов в будущее. Кажется бессмысленным основывать расчет этих преимуществ на приближении функции значения, которую я обучаю на одношаговых предсказаниях.
Мой вопрос не в том, как настроить апроксиматор функции или какие типы сетей подходят для этой задачи. Мой вопрос: Каковы целевые значения для функции значения, которые я могу подать своему апроксиматору функции. Как мне действительно его обучить?
Обычно функция преимущества $A(s,a)$ оценивается только на основе функции значения $V(s)$, так как:
$$\begin{align}
A(s,a) &= Q(s,a) – V(s) \\
&= r(s,a) + V(s’) – V(s)
\end{align}$$
В основном, для этого вам нужно лишь выучить $V(s)$, так как $Q(s,a) = r(s,a)+ V(s’)$ может быть выражено через немедленное вознаграждение плюс (дисконтированное) значение следующего состояния $s’$. Это достигается минимизацией среднеквадратичной ошибки (MSE) между $V(s_t)$ и (дисконтированными) доходами $G_t=r_0+\gamma r_1+\gamma^2 r_2+\cdots$ так, что:
$$\phi \leftarrow \alpha \nabla_\phi \big(V_\phi(s_t) – G_t\big)^2,$$
где $\phi$ – это параметры сети значений $V_\phi$. Как только вы выучите $V_\phi$, вы можете оценить $A(s,a)$ как в первом уравнении или, лучше, с помощью GAE подхода (который может сбалансировать смещение и дисперсию, устанавливая $\gamma$ и $\lambda$).
В качестве альтернативы, если вы выучите Q-функцию $Q_\theta(s,a)$ и ваши действия дискретны, вы можете оценить преимущество следующим образом:
$$A(s,a)\approx Q_\theta(s,a) – \frac1{|\mathcal A|}\sum_{a’\in\mathcal A}Q(s,a’)$$
потому что $V(s) = \frac1{|\mathcal A|}\sum_{a’\in\mathcal A}Q(s,a’) = \mathbb{E}_{a\in\mathcal A}\big[Q_\theta(s,a)\big]$.
Максимальное преимущество — это значение
Как верно отметил @NeilSlater, это не так. Предполагая оптимальные функции значения $V^\star$ и $Q^\star$, преимущество оптимального действия $a^\star$ равно нулю, потому что:
$$\begin{align}
A^\star(s,a^\star) &= Q^\star(s,a^\star) – V^\star(s) \\
&= Q^\star(s,a^\star) – \max_{a\in\mathcal A}Q^\star(s,a) \\
&= Q^\star(s,a^\star) – Q^\star(s,a^\star) \\
&= 0
\end{align}$$
Ответ или решение
Как прогнозировать значение преимущества в глубоком обучении с подкреплением
Проблема прогнозирования значений преимущества в глубоких алгоритмах обучения с подкреплением, таких как Deep Q-Learning, требует комплексного подхода и понимания различных аспектов обучения. В этой статье мы подробно рассмотрим, как предсказать значения преимущества, а также способы оценки полноты и эффективности этого процесса.
Контекст проблемы
Когда мы говорим о преимуществах в контексте обучения с подкреплением, мы имеем в виду функцию преимущества ( A(s, a) ), которая описывает, насколько больше полезности (или доходности) от выполнения действия ( a ) в состоянии ( s ), по сравнению с ожидаемым значением полезности в этом состоянии. Это можно выразить через уравнение:
[
A(s, a) = Q(s, a) – V(s)
]
где ( Q(s, a) ) – значение действия, а ( V(s) ) – ожидаемое значение для состояния ( s ).
Как показано в статье о «Генерализованной оценке преимущества» (GAE) (ссылка: GAE), прогнозирование преимуществ может привести к более стабильным и эффективным алгоритмам, чем традиционное обучение по значениям ( Q ).
Способы прогнозирования преимуществ
1. Прогнозирование только преимуществ
Если рассмотреть возможность прогнозирования только функции преимущества, то вам потребуется либо избежать прогнозирования ( V(s) ), либо найти способ получить его из других источников. Однако наиболее распространенным подходом является параллельное обучение как преимущества, так и значения.
2. Прогнозирование преимуществ и значений
Наиболее эффективный метод, как показывает практика, — это прогнозировать и преимущества, и значения. В таком случае можно использовать следующие подходы для обучения:
-
Обучение функции полезности ( V(s) ):
Используйте метод минимизации квадратной ошибки (MSE) для обучения значения функции по фокусировке на вознаграждениях в будущем:[
\phi \leftarrow \alpha \nabla\phi \left( V\phi(s_t) – G_t \right)^2
]где ( G_t ) – обобщённые возвраты.
-
Оценка преимущества с помощью GAE:
Используйте метод GAE для оценки преимуществ:[
A(s_t, at) = \sum{l=0}^{\infty} (\gamma \lambda)^l \delta_{t+l}
]
где ( \delta_t = rt + \gamma V(s{t+1}) – V(s_t) ).
3. Обучение с использованием Q-функции
Если вы решите использовать Q-функцию ( Q_\theta(s, a) ), вы можете оценить преимущества следующим образом:
[
A(s,a) \approx Q\theta(s,a) – \frac{1}{|\mathcal A|} \sum{a’ \in \mathcal A} Q(s,a’)
]
где (|\mathcal A|) – общее количество действий. Это позволяет учесть среднее значение всех Q-значений для состояния, что значительно упрощает задачу.
Заключение
В конечном счёте, правильный выбор стратегии прогнозирования преимущества зависит от особенностей вашей задачи и архитектуры сети. Использование как GAE, так и корректной оценки функций величин позволяет получить более точные и стабильные результаты. Следовательно, создание функции, которая обучает и значения, и преимущества, представляется наиболее эффективным способом продвижения в обучении с подкреплением.
То, как вы организуете обучение ваших сетей, играет ключевую роль в их производительности. Понимание свёртки этих методов значительно обогатит ваши знания и повысит результаты вашей реализации алгоритмов глубокого обучения с подкреплением.