Как 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 для релиза, запланированного на конец августа (возможно, раньше, но мы не хотим давать никаких обещаний, которые мы не можем сдержать).