Параметры моделирования и расчета вознаграждения в эталонном сценарии "Слияние"
В настоящее время я пытаюсь воспроизвести некоторые результаты моей установки потока из ваших предыдущих работ. Я задавал следующие вопросы, в которых мне не ясно, какие именно параметры использовались в экспериментах, и какие результаты приводятся в статьях.
Для [1] я ожидал, что смогу воспроизвести результаты, запустив стабилизирующий_highway.py из вашего репо. (с коммитом "bc44b21", хотя я пытался запустить текущую версию, но не смог найти различий, связанных с моими вопросами). Я ожидал, что использованный сценарий слияния будет таким же в [2].
Где я уже нашел различия в документах / кодекс был:
1) функция вознаграждения в [2] (2) отличается от функции в [1] (6): первый использует максимум и нормализуется в первой части суммы. Почему эта разница? Глядя на код, я интерпретирую его следующим образом: в зависимости от флага оценки, вы либо вычисляете (а) вознаграждение как среднюю скорость по всем транспортным средствам в симуляции, либо (b) как функцию, заданную в [2] (без нормализации термин на скорости), но со значением альфа (eta2 в коде) = 0,1 (см. merge.py, строка 167, compute_reward). Я не смог найти альфа-параметр, указанный в документах, поэтому я предполагаю, что использовалась версия кода?
2) Я далее читаю код, как если бы вы вычисляли его, перебирая ВСЕ транспортные средства в симуляции, а не только наблюдаемые? Это кажется мне нелогичным, когда я использую функцию вознаграждения в частично наблюдаемой среде для обучения агента, используя информацию из полностью наблюдаемой информации о состоянии...!?
3) Это приводит к следующему вопросу: вы в конечном итоге захотите оценить вознаграждение, которое дается, когда установлен флаг оценки, а именно среднюю скорость всех транспортных средств в симуляции, как показано в Таблице 1 в [1]. Рассчитываются ли эти значения путем усреднения по столбцу "speed" в файле missions.csv, который вы можете получить с помощью инструмента визуализации?
4) Следующий вопрос касается совокупного дохода на рисунках [1] и [2]. В [1], FIgure 3, в сценариях слияния, диплом. максимальная доходность около 500, а максимальная значения [2], рисунок 5 около 200000. Почему эта разница? Различные функции вознаграждения используются? Пожалуйста, не могли бы вы предоставить альфа-значения для обоих и проверить, какая версия верна (бумага или код)?
5) То, что я также наблюдаю, глядя на [1] Таблица 1, Merge1&2: ES имеет самые высокие значения средней скорости, но TRPO и PPO имеют лучшую совокупную доходность. Означает ли это, что 40 развертываний для оценки недостаточно, чтобы получить репрезентативное среднее значение? Или то, что максимизация функции вознаграждения за обучение не обязательно дает хорошие результаты оценки?
6) Некоторые другие параметры мне неясны: в [1] на Рис. 3 упоминается 50 выкатов, а N_ROLLOUTS=20. Что вы рекомендуете использовать? В [1] A.2 Merge, T=400, а HORIZON=600 и [2] C. Симуляция говорит о 3600-х годах. Глядя на воспроизведение в сумо, полученное при запуске visualizer_rllib.py, симуляция завершается в момент времени 120.40, что соответствует ГОРИЗОНТУ 600 с временными шагами 0,2 с (эта информация приведена в [2]). Поэтому я предполагаю, что для этого Сценарий, горизонт должен быть установлен намного выше, чем в 1 и код, и, скорее, установить 18,000?
Спасибо за любые подсказки! КР М
[1] Виницкий, Э., Крейдие, А., Ле Флем, Л., Хетерпал, Н., Янг, К., Ву, Ф.,... и Байен, АМ (2018, октябрь). Контрольные показатели для обучения с подкреплением в смешанном трафике. На конференции по робототехнике (стр. 399-409)
[2] Крейди, Абдул Рахман, Кэти Ву и Александр М. Байен. "Рассеяние волнами остановки в закрытых и открытых сетях через глубокое обучение подкреплению". В 2018 году 21-я Международная конференция по интеллектуальным транспортным системам (ITSC), с. 1475-1480. IEEE, 2018
1 ответ
Извиняюсь за задержку с ответом.
Версия, описанная в коде, была той, которая используется. Статья [1] была написана после статьи [2] (несмотря на то, что она была опубликована ранее), и мы добавили нормализующий термин, чтобы помочь стандартизировать скорость обучения по проблемам. Функция вознаграждения - это та, которая используется в кодовой базе; флаг оценки, равный true, соответствует фактическому вычислению статистики трафика (т. е. скорости), тогда как значение false соответствует функции вознаграждения, которую мы используем во время поезда.
Как вы указываете, использование всех транспортных средств в функции вознаграждения является ошибочным предположением, у нас, очевидно, нет доступа ко всем этим данным (хотя вы можете представить, что мы можем прочитать их через индукционный цикл). Будущая работа будет сосредоточена на устранении этого предположения.
Вы можете сделать это таким образом. Однако мы просто рассчитываем его, выполняя эксперимент с обученной политикой, сохраняя все скорости транспортного средства на каждом шаге, а затем вычисляя результат в конце эксперимента.
К сожалению, обе версии являются "правильными", как вы указали, разница связана с добавлением термина "eta" в [2] и нормализацией в [1].
Как вы говорите, функция вознаграждения за обучение отличается от функции вознаграждения за тестирование, поэтому алгоритм, который хорошо работает при выключенном флаге оценки, может не работать так же, как при включенном флаге оценки. Это выбор, который мы сделали, чтобы иметь отдельные функции обучения и тестирования. Вы можете использовать функцию тестирования во время поезда!
Оба должны работать; Я подозреваю, что N=20 в кодовой базе закрался со временем, так как люди обнаружили, что 50 не нужно для этого сценария. Тем не менее, каждый алгоритм RL работает лучше с большим количеством развертываний, поэтому установка N=50 не повредит. Что касается горизонта, насколько я могу судить в кодовой базе, ответ таков: sim_step равен 0,5, горизонт равен 750, поэтому эксперимент должен продолжаться 375 секунд.
Если у вас есть дополнительные вопросы, пожалуйста, напишите соответствующему автору (мне)! Я хотел бы помочь вам проработать это более подробно.