boyu-ai / Hands-on-RL

https://hrl.boyuai.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DQN和AC算法中的q_targets的loss计算为什么最后要乘(1-done)呢?

superbignut opened this issue · comments

本来的算法中是没有这个因子的,这么做是因为最终状态没有下一个状态了,所以Q是0吗?

我的理解是没有下个状态就结束了,后面的不再记录,进入下一回合。另外最新gym还多了一个truncated状态,表示是否出界,我改写成(1 - (dones | truncated))

image
在DQN算法的文章《Playing Atari with Deep Reinforcement Learning》 中,这里的意思是如果是终止状态,那么目标值就直接是reward,不是终止状态才会加入 gamma * maxQ,所以这里的 (1-done) 就代表了是否是终止状态:
如果是终止状态, done = 1, 1- done = 0,所以后面的 gamma * maxQ 与 0 相乘会被舍去,目标值 = reward;不是终止状态,done = 0, 目标值 = reward + gamma * maxQ。