PPO постоянно учится ничего не делать в условиях сетчатого мира.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 PPO постоянно учится ничего не делать в условиях сетчатого мира.

Сообщение Anonymous »

В настоящее время я пытаюсь создать собственную среду сетки с помощью PPO. Сетка 5x5, одна из ячеек — это склад, где запускается агент. Со временем элементы появляются в сетке случайным образом и остаются там в течение 15 временных шагов, прежде чем снова исчезнуть. Цель агента — собрать как можно больше предметов и доставить их на склад. Агент имеет емкость, равную единице (т. е. он может нести только один предмет за раз) и может выбирать между действиями вверх, вниз, вправо, влево или бездействием (обратите внимание, что поднять или выбросить не являются действиями). отдельные действия, поскольку они происходят автоматически при нахождении в ячейке предмета или на складе). За успешный подъем и сдачу предмета он получает общую награду +15 (разделенную на +7,5 за взятие и +7,5 за сдачу предмета). Каждый шаг без получения или высадки дает -1, за исключением случая, когда выбранное действие заключается в том, чтобы ничего не делать, и в этом случае агент получает вознаграждение в размере 0.
Я решил представить такие показатели, как агент или позиции элементов с вектором размером 25 (т. е. одна запись для каждой ячейки, равная 1 или любому другому соответствующему числу, если есть элемент/агент, и 0 в противном случае). Таким образом, мое пространство наблюдения состоит из следующего: свободная емкость, позиция агента, позиции предметов, оставшееся время, местоположение цели, манхэттенские расстояния до предметов и цели, оставшееся время и расстояние до ближайшего объекта, расстояние от ближайшего объекта до цель, расстояние до стен.
Сеть актеров и критиков состоит из 4 скрытых слоев со 128 нейронами и функцией активации ReLU. Что касается моих гиперпараметров, я выбрал их следующим образом:

Код: Выделить всё

learning_rate: 0.0001
gamma: 0.99
lam: 0.95
clip_ratio: 0.2
value_coef: 0.5
entropy_coef: 0.5
num_trajectories: 5
num_epochs: 4
num_minibatches: 4
max_grad_norm: 0.5
Теперь при запуске PPO не может изучить какую-либо пригодную для использования политику и в конечном итоге просто ничего не делает. Хотя это разумная политика, которую стоит изучить, учитывая, что она, по крайней мере, не дает отрицательного общего вознаграждения, она явно нежелательна/оптимальна.
Поскольку это несколько напоминает локальный оптимум, PPO застревает. Я подумал, что это может быть что-то вроде гиперпараметров/исследований. Поэтому я увеличил коэффициент энтропии, чтобы увеличить исследование, а также увеличил количество траекторий на одно внедрение политики, чтобы у агента было больше опыта при обновлении сетей. Однако ничего из того, что я пробовал, похоже, не сработало. Я даже запустил проверку WandB, и ни один из всех 100 запусков этой проверки не достиг общего вознаграждения выше 0. Увидев это, я подумал, что в коде должна быть какая-то ошибка, поэтому я перешел к кодируйте снова и снова, пытаясь понять, что пошло не так. Однако я не смог обнаружить ни одной ошибки в реализации (это не значит, что она есть, я просто не нашел ни одной ошибки после x раз просмотра кода).
Да кто-нибудь знает, что мешает PPO изучить хорошую стратегию? Очевидно, что у агента возникают проблемы с соединением действий по взятию предмета и его выдаче. Однако я не понимаю, почему это так, поскольку из-за разделенного вознаграждения за сбор и выгрузку агенту должно быть довольно просто выяснить, что со свободной емкостью он должен перейти к любой ячейке с предметами, а с полной емкостью он должен следует обратиться в депо.
При необходимости или интересе вы можете найти весь код через Pastebin здесь: https://pastebin.com/zuRprVWR.
Я надеюсь, что кто-нибудь что-нибудь скажет о том, что еще я могу попытаться решить эту проблему. Как вы думаете, проблема на самом деле связана с ошибкой реализации/логики или происходит что-то еще? Или PPO все-таки не в состоянии решить эту проблему, и какой-то другой алгоритм может быть лучшим выбором?
Я благодарен за любую информацию!

Подробнее здесь: https://stackoverflow.com/questions/793 ... ld-setting
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • PPO постоянно учится ничего не делать в условиях сетчатого мира.
    Anonymous » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Стабильный агент PPO-BASELINES3 не учится в пользовательской среде снаряда (постоянная вознаграждение/действие)
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Размеры сетчатого объекта в отдельных точках скелета объекта.
    Anonymous » » в форуме Python
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Интеграция GNN с PPO для управления роботами в Ant-v4 от Gymnasium
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Невозможно добиться такой же хорошей производительности PPO с помощью MAPPO.
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»