Как получить значения Q в RL - DDQN - PullRequest
0 голосов
/ 23 декабря 2019

Я не уверен, как получить значения Q для DDQN.

DQN - это обычная сеть, TAR - целевая сеть.

    q_values = self.DQN.predict(c_states) # DQN batch predict Q on states
    dqn_next = self.DQN.predict(n_states) # DQN batch predict Q on next_states
    tar_next = self.TAR.predict(n_states) # TAR batch predict Q on next_states

В основном я нашел 2 версии:

Версия 1:

q_values[i][actions[i]] = (rewards[i] + (GAMMA * np.amax(tar_next[i])))

Версия 2:

act = np.argmax(dqn_next[i])
q_values[i][actions[i]] = (rewards[i] + (GAMMA * tar_next[i][act]))

Какой из них правильный? И почему?

Версия 1 Ссылки:

https://github.com/keon/deep-q-learning/blob/master/ddqn.py

https://pythonprogramming.net/training-deep-q-learning-dqn-reinforcement-learning-python-tutorial

Версия 2 Ссылки:

https://pylessons.com/CartPole-DDQN/

https://github.com/germain-hug/Deep-RL-Keras/blob/master/DDQN/ddqn.py

https://github.com/rlcode/reinforcement-learning/blob/master/3-atari/1-breakout/breakout_ddqn.py

https://github.com/rlcode/reinforcement-learning/blob/master/2-cartpole/2-double-dqn/cartpole_ddqn.py

https://jaromiru.com/2016/11/07/lets-make-a-dqn-double-learning-and-prioritized-experience-replay/


РЕДАКТИРОВАТЬ: Большое спасибо, чтобы прояснить это

SARSA: 
q_values[i][actions[i]] = (rewards[i] + (GAMMA * np.amax(tar_next[i])))

Q-learning: 
act = np.argmax(dqn_next[i])
q_values[i][actions[i]] = (rewards[i] + (GAMMA * tar_next[i][act]))

Очень полезные ссылки, чтобы прочитать о SARSA был в моем списке, но позже;) ...

1 Ответ

1 голос
/ 24 декабря 2019

Это Q-learning (версия с оператором max) против SARSA (без max).

Короче говоря, вы собираете образцы, используя политику e-жадности: это ваша политика поведения (или исследования). Политика, которую вы хотите изучить, называется «цель» и может отличаться.
В Q-learning вы используете оператор max, поэтому ваша цель выбирается в соответствии с жадной (целевой) политикой. Это называется обучением вне политики, потому что вы изучаете политику (цель) с образцами, собранными другим (поведение).
В SARSA нет максимума, поэтому на практике вы просто используете действие из примеров, которое было выбрано политикой поведения. Это на основе политики, потому что цель и поведение одинаковы.

Какой из них выбрать, зависит от вас, но я думаю, что Q-learning более распространена (а DQN использует Q-learning).

Подробнее об этом

В чем разница между Q-learning и SARSA?

Являются ли Q-learning и SARSA жадными? эквивалент выбора?

https://stats.stackexchange.com/questions/184657/what-is-the-difference-between-off-policy-and-on-policy-learning

http://incompleteideas.net/book/RLbook2018.pdf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...