DQN——Deep Q Network

1、什么是DQN?

DQN是通过多个Q-learning来训练卷积神经网络从而实现高维输入任务的策略控制。神经网络的返回值是Q(s, a)。

2、DQN是value based 还是policy based?

是value-based,DQN是根据估计的动作价值函数选择动作的。而policy based是参数化策略然后最大化性能指标的办法。

3、DQN是on-policy还是off-policy?

DQN是off-policy,因为Q-Learning是off-policy,他采用greedy-policy作为目标策略,用 ϵgreedy policy\epsilon-greedy \ policy 作为行为策略。

4、为什么没有Deep Sarsa network?

TD-gammon 采用了MLP,采样 <St,At,R,St+1,At+1><S_t,A_t,R,S_{t+1}, A_{t+1}> 类似SARA。但是后来发现它在其他游戏比如象棋表现得并不好,可能是由于backgommon这个游戏的特殊性掩盖了它的问题。

5、DQN是Tabular solution还是approximate solution?

是approximate solution,tabular solution的泛化能力不足以应对巨大的状态空间。

6、在RL中使用深度学习有哪些困难?

(1)深度学习用的是带有标签的数据集,但RL只能通过和环境交互获得reward来训练,所以用来训练的数据是稀疏的,有噪声的并且采取行动到获得reward有明显的延迟。

(2)深度学习的数据是互相独立的,比如猫狗分类,但是RL的State之间都有很高的关联性,这导致每次更新Q都会改变策略从而影响数据的分布而深度学习中数据的分布应该是稳定的,比如猫狗分类中,猫和狗的数据分布是不会随着训练过程而改变的。

7、DQN中用了哪些techniques?

针对上述困难,DQN采用了experience replay和iterative update两个办法。

experience replay 是把每个step的 (st,at,rt,st+1)(s_t, a_t, r_t, s_{t+1}) 存储起来,之后从中随机选取一组经验来生成target。它的好处是:

(1)提高了数据的利用率

(2)打破了correlation

(3)平衡了行为的分布,避免了策略改进时因为受到当前状态的影响而不能收敛

iterative update 是额外使用了target policy,实际上是一组Q(S, A)。target policy只在一定的steps之后才更新,也就是说在大多数时候target policy是固定的,正在学习的policy向着target policy更新。这么可以使算法更稳定。在没有使用target policy的时候,Q(st,at)Q(s_t, a_t) 的改变也会引起Q(st,at+1)Q(s_t, a_{t+1}) 的改变。这会导致policy难以收敛,就好比猫捉老鼠,猫是正在训练的model,老鼠是optimal policy,猫和老鼠都在跑,学习曲线很难收敛,但是老鼠每个一段时间才动一下,训练就更容易收敛。

8、DQN有什么不足?

没有理论上的收敛保证。Q-learning有Banach不动点定理保证收敛性,但是DQN用CNN的输出作为target,没有理论上的收敛性证明。

9、DQN的目标和更新步骤是什么?

目标函数:L(θ)=Eβ[(rt+γmaxaQθ(st+1,a)Qθ(st,at))2]L(\theta)=\mathbb{E}_{\beta}\left[\left(r_{t}+\gamma \max _{a} Q_{\theta}\left(s_{t+1}, a\right)-Q_{\theta}\left(s_{t}, a_{t}\right)\right)^{2}\right]

更新目标:θθα(rt+γmaxaQθ(st+1,a)Qθ(st,at))θQθ(st,at)\theta \leftarrow \theta-\alpha\left(r_{t}+\gamma \max _{a} Q_{\theta}\left(s_{t+1}, a\right)-Q_{\theta}\left(s_{t}, a_{t}\right)\right) \nabla_{\theta} Q_{\theta}\left(s_{t}, a_{t}\right)

具体算法:

DQN——Deep Q Network

10、DQN的训练结果是怎样的?

average reward曲线非常noisy,因为CNN中weight的微小变化都会对policy造成影响。但是average Q(S, A)是比较平滑上升的曲线。

11、综上

DQN其实就是把Q-Learning的Q(S, A)变成了CNN的输出。为了满足深度学习要求的数据间的独立性和数据分布的稳定性采用了experience replay和iterative update的方法。