#offline #reinforcement-learning #ray
#Не в сети #подкрепление-обучение #ray
Вопрос:
Библиотека RAY — RLLIB — оценка модели DQN с использованием автономных пакетных данных. Модель не может учиться. episode_len_mean: .nan Для примера CartPole, а также для набора данных, специфичных для личного домена
Ubuntu Ray library — Автономная среда RLIB DQN: — пробовал с Cartpole-v0, а также с примером пользовательской среды.
episode_len_mean: .nan episode_reward_max: .nan episode_reward_max: .nan episode_reward_mine: .nan episode_reward_min: .nan эпизоды_это_питер: 0 эпизодов_тотал: 0
Генерировать данные с помощью PG
rllib train --run=PG --env=CartPole-v0 --config='{"output": "/tmp/cartpole-out", "output_max_file_size": 5000000}' --stop='{"timesteps_total": 100000}'
Модель поезда на основе автономных данных
rllib train --run=DQN --env=CartPole-v0 --config='{"input": "/tmp/cartpole-out","input_evaluation": ["is", "wis"],"soft_q": true, "softmax_temp": 1.0}'
Ожидается: —
episode_len_mean: числовые значения
episode_reward_max: числовые значения
episode_reward_mean: числовые значения
episode_reward_min: числовые значения
Фактические результаты (также не наблюдается улучшения в tensorboard): — episode_len_mean: .nan episode_reward_max: .nan episode_reward_mean: .nan episode_reward_min: .nan
Комментарии:
1. Уточнение: среда имеет версию numpy 1.15.4, и я получаю эту ошибку после 1-й итерации, а затем значения имеют «nan» s
2. (pid = 11785) /home/ubuntu/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages/numpy/core/fromnumeric.py:2957 : Предупреждение о времени выполнения: среднее значение пустого фрагмента. (pid= 11785) out= out, ** kwargs) (pid= 11785) /home/ubuntu/anaconda3/envs/tensorflow_p36/lib/python3.6/site-packages/numpy/core/_methods.py:80: Предупреждение о времени выполнения: недопустимое значение, встречающееся в double_scalars (pid= 11785 г.) ret = ret.dtype.type(ret / rcount)
3. «Среднее значение пустого фрагмента». вероятно, проблема в предупреждении (что может объяснить, почему вы видите
nan
. Имеет ли что-нибудь длину 0? Например, есть ли какие-то развертывания, которые немедленно завершаются?4. В примере с тележкой я не уверен. Просто запустите эти коды, как на странице документации по автономному набору данных Ray. Однако, когда вы попробовали это на другом автономном наборе данных (поведение при бронировании веб-страницы) Я убедился, что исключил развертывания длиной 1 (т. Е. Которые Немедленно завершаются). В обоих случаях я получаю одинаковые предупреждающие сообщения. Один из членов вашей команды предположил, что это ожидается при обучении в автономном режиме. И было предложено посмотреть на выборку ImportanceSampling / взвешенную выборку важности или средние значения q. Я поделился этими диаграммами в группе RAY-Dev Google. Там нужна помощь. Я не вижу сходящихся шаблонов
Ответ №1:
У меня была более или менее такая же проблема, и это было связано с тем фактом, что эпизод никогда не заканчивался, потому что я неправильно установил значение «готово» в функции step. Пока эпизод не будет «завершен», Ray не вычисляет показатели. В моем случае мне пришлось указать счетчик в функции инициализации среды с именем self.count_steps и увеличивать его на каждом шаге.
def step(self, action):
# Changes the yaw angles
self.cur_yaws = action
self.farm.calculate_wake(yaw_angles=action)
# power output
power = self.farm.get_farm_power()
reward = (power-self.best_power)/self.best_power
#if power > self.best_power:
# self.best_power = power
self.count_steps =1
if self.count_steps > 50:
done = True
else:
done = False
return self.cur_yaws, reward, done, {}