Rainbow算法是把论文发表时候
关于DQN算法的一些改进都整合到一个算法里面
论文里谈到的有6项
今天先讲三项
1 Double DQN
DQN的最优行动是目标价值中未来预期部分对目标网络取的
$$\mathbf{L(\theta) = (R_{t+1} + \gamma_{t+1} \max_{a'} q_{\bar{\theta}}(S_{t+1}, a') - q_{\theta}(S_{t}, A_{t}))^2}$$
Double DQN最优行动是目标价值中未来预期部分对即时价值取的
$$\mathbf{Y_t^{DoubleQ} = R_{t+1} + \gamma_{t+1} q_{\bar{\theta}}(S_{t+1}, \arg\max_{a} q_{\theta}(S_{t+1}, a))}$$
论文说这样能改善过高估计偏差
其实是目标函数和价值函数更consistent了?
2 Dueling DQN
在许多状态下,不管你采取什么动作,状态本身的好坏(Value)是确定的。将两者分开建模可以加快学习速度。
$$\mathbf{q_{\theta}(s, a) = v_{\eta}(f_{\xi}(s)) + \left( a_{\psi}(f_{\xi}(s), a) - \frac{\sum_{a'} a_{\psi}(f_{\xi}(s), a')}{N_{actions}} \right)}$$
但这个是不是一定有用呢?
也许吧,但是跟样本关系很大
3 Prioritized DQN
在经验回放的时候,不随机抽取,加权重
权重由目标和之差决定,权重比较简单
用目标价值和行动价值之差来加权
$$\mathbf{P(i) = \frac{p_i^\alpha}{\sum_k p_k^\alpha}}$$
重要性采样权重 (IS weights) $w_i$ 进行损失函数加权
$$\mathbf{w_i = \left( \frac{1}{N} \cdot \frac{1}{P(i)} \right)^\beta}$$