Как решить проблему нулевой вероятности в градиенте политики?

#reinforcement-learning #policy-gradient-descent

#обучение с подкреплением #политика-градиентный спуск

Вопрос:

Недавно я попытался применить метод наивного градиента политики к своей проблеме. Однако я обнаружил, что разница между разными выходами последнего слоя нейронной сети огромна, а это значит, что после применения слоя softmax только одно действие будет помечено как 1, а другие действия будут отмечены как 0. Например, результат последнего уровня показан ниже:

 [ 242.9629, -115.6593,   63.3984,  226.1815,  131.5903, -316.6087,
 -205.9341,   98.7216,  136.7644,  266.8708,   19.2289,   47.7531]
  

После применения функции softmax ясно, что будет выбрано только одно действие.

 [4.1395e-11, 0.0000e 00, 0.0000e 00, 2.1323e-18, 0.0000e 00, 0.0000e 00,
 0.0000e 00, 0.0000e 00, 0.0000e 00, 1.0000e 00, 0.0000e 00, 0.0000e 00]
  

Эта проблема серьезно влияет на конечную производительность, поскольку нейронная сеть будет пытаться выполнять постоянные действия только после нескольких шагов. Поэтому есть ли какой-либо способ решить эту проблему?

(Кстати, даже если я пытался дать нейронной сети некоторые отрицательные вознаграждения, выбранные ею действия остаются неизменными.)

Моя кривая обучения показана следующим образом: Кривая обучения

Ответ №1:

На самом деле, не существует детерминированного способа решения этой проблемы, поскольку это извечная проблема в области оптимизации, называемая «дилемма исследования-эксплуатации». В частности, в обучении с подкреплением есть два простых способа решения этой проблемы:

  1. Во-первых, снижение скорости обучения — самый простой способ решения этой проблемы. При более низкой скорости обучения сеть политик может исследовать больше различных действий и, таким образом, избежать застревания на локальном оптимуме.
  2. Во-вторых, добавление члена энтропии политики в функцию потерь — еще один способ решения этой проблемы. Хорошим примером этой идеи является алгоритм soft actor-critic (SAC).

Оба метода были проверены в моей задаче, и оба они эффективно решают преждевременную проблему. Однако у обоих из них есть параметр, который необходимо настраивать вручную, что увеличивает сложность моего алгоритма.

Кстати, аналогично Q-обучению, мы также можем использовать механизм эпсилон-жадности, чтобы побудить агента изучить больше действий. Однако это не самый элегантный метод решения этой проблемы, потому что трудно определить значение эпсилона.

Ответ №2:

  1. Насколько я знаю, PG обычно используется для обработки непрерывных действий. Возможно, вам придется попробовать алгоритмы, основанные на значениях.
  2. Правильно ли реализован softmax? вставьте свой код здесь или может помочь какая-либо метрика процесса обучения

Комментарии:

1. 1. Очень часто PG используется в дискретных пространствах действий. 2. Я почти уверен, что моя реализация верна, я просто применил «torch.softmax» на выходе последнего линейного слоя.

2. Я не уверен, каковы ваши вопросы. С softmax очень вероятно, что он выберет больший логит. Есть несколько вариантов замены softmax для решения этой проблемы. Но я забыл, в какой статье это упоминается.

3. В описании просто утверждается, что ваш PG не работает, но я не могу понять, почему он не работает. Недостаток исследования? Редкое вознаграждение? Процесс обучения пошел не так? вы можете, по крайней мере, предоставить свои кривые

4. Я дополнил кривую обучения в описании моего вопроса. Во-первых, легко видеть, что вышеупомянутая проблема приведет к отсутствию исследования. Однако я понятия не имею, как решить эту проблему.

5. PG — это оперативный метод, он может использовать только данные текущей политики. Для непрерывного действия выборка из гауссова, добавление шума OU — это способы введения шума. Если вам нужна более стохастическая политика, может быть полезно добавить термин энтропии, такой как SAC. Или, может быть, наивный pg просто недостаточно хорош для решения проблемы (редкое вознаграждение? длинный горизонт ..)