Как FLOW в настоящее время имеет дело с действиями отсечения, squash_to_range, no_final_linear

Меня смущает то, как FLOW предназначен для того, чтобы убедиться, что выходные данные сети политики соответствуют ограничениям пространства действия.

В версии rllib/ray, которую я установил в соответствии с инструкциями по установке, я вижу два разных способа решения этой проблемы:

1) опция модели squash_to_range: это доступно в коде, но:

"The squash_to_range option is deprecated. See the clip_actions agent option instead."

2) clip_actions: это доступно, но примеры потока включают следующую строку:

config['clip_actions'] = False  # FIXME(ev) temporary ray bug

Глядя на текущую версию rllib/ray, я вижу новую опцию:

3) no_final_linear

#Whether to skip the final linear layer used to resize the
#hidden layer outputs to size `num_outputs`. If True, then the last
#hidden layer should already match num_outputs.
"no_final_linear": False,

Пример кода, предоставленный в потоке, обрезает вывод fcnet до границ блока пространства действия. Отладка исходного сетевого вывода, который я получаю, содержит значения, выходящие далеко за пределы диапазона действия.

Я что-то упустил, когда проводил свои эксперименты? Я думал, что определение Box для пространства действия должно быть достаточным.

Мне кажется плохой идеей просто обрезать действия, я бы предпочел использовать опцию no_final_linear.

Что вы думаете об этом?

Каковы последствия перехода на текущую версию Ray? (у меня это луч 0.6.1, как в файле окружения установки conda)

Каковы ваши планы по устранению проблемы с "временной ошибкой луча"?

Спасибо за любые подсказки

1 ответ

Решение

Это хороший момент. В Ray 0.6.1 (текущая версия, которую мы используем на Master), была ошибка, из-за которой Ray__connect Рэя не обновляла должным образом результаты отсечения в потерю. Это решено в более поздних версиях Ray. Как вы упомянули, как следствие, сетевые выходы находятся за пределами допустимого диапазона; чтобы справиться с этим, мы только что реализовали отсечение в методе шага в base_env Flow.

Одним из способов решения этой проблемы является обновление до последней версии Ray (хотя я тестировал совместимость только до Ray 0.7.2). Вы можете определенно обновиться до последней версии Ray с относительно небольшим количеством проблем, хотя вам нужно слегка изменить скрипт runner, чтобы сделать его совместимым. Если у вас возникли проблемы с обновлением версии Ray, пожалуйста, свяжитесь с нами!

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

Другие вопросы по тегам