RAY — RLLIB — не удалось обучить DQN с использованием автономного пакета образцов — episode_len_mean: значение .nan

#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, {}