强化学习之DDQN

知识基础DQN参考我的博文:https://tianjuewudi.gitee.io/2021/07/16/qiang-hua-xue-xi-shi-jian-jiao-xue/#toc-heading-19

DQN复习

​ 我们利用神经网络来代替表格法,我们可以输入S并输出多个Q,每个Q对应一个A。神经网络只需要储存有限的网络参数,我们的任务就是不断调整这些参数,使得输入输出符合我们的预期,而且状态可以泛化,相似的状态输出也差不多。
​ DQN有两大创新点,一个是经验回放,一个是固定Q目标。经验回放是指探索的数据特征形成一组组数据,并且可以随机打乱,使得神经网络可以重复多次地进行学习。这样可以打乱样本的关联性,而且能提高样本利用率。固定Q目标是指我们把Q值固定一段时间来训练参数,我们需要另外一个一样的网络(target Q网络),Q网络的作用是产生一个Q预测值,直接用来决策。而target Q是产生一个Q目标值,我们通过这个目标值的 Q t + 1 Q_{t+1} Qt+1计算Q网络 Q t Q_{t} Qt,target Q往往固定一段时间来使Q网络得到充分训练。

DQN的缺陷

使用了 max 操作,Q-learning、DQN算法都会过高估计(overestimate)Q值。

DDQN与DQN的异同

DDQN和DQN一样,也有一样的两个Q网络结构。下面是DQN的更新公式
Q m ( S t , a t ) = Q m ( S t , a t ) + η ∗ ( R t + 1 + γ max ⁡ a Q t ( S t + 1 , a ) − Q m ( s t , a t ) ) Q_m(S_{t},a_t) = Q_m(S_{t},a_t)+ \eta * (R_{t+1} + γ \max_a Q_t(S_ {t+1} ,a) - Q_m(s_t,a_t)) Qm(St,at)=Qm(St,at)+η(Rt+1+γamaxQt(St+1,a)Qm(st,at))
DDQN采用的是一种使更新公式更稳定的方法:
a m = a r g max ⁡ a Q m ( s t + 1 , a ) a_m = arg \max_a Q_m(s_{t+1},a) am=argamaxQm(st+1,a)

Q m ( S t , a t ) = Q m ( S t , a t ) + η ∗ ( R t + 1 + γ Q t ( S t + 1 , a m ) − Q m ( s t , a t ) ) Q_m(S_{t},a_t) = Q_m(S_{t},a_t)+ \eta * (R_{t+1} + γ Q_t(S_ {t+1} ,a_m) - Q_m(s_t,a_t)) Qm(St,at)=Qm(St,at)+η(Rt+1+γQt(St+1,am)Qm(st,at))

也就是说DDQN与DQN的不同之处在于用来更新Q网络的Target Q中 Q ( S t + 1 , a ) Q(S_{t+1},a) Q(St+1,a)的选择方式,DQN直接用Target Q网络中t+1时刻可选Q的最大值用来更新,而DDQN用的是根据Q网络t+1时刻的最大Q来选择对应的action,然后用这个action来对应决定Target Q网络中的Q值,这样更新的Q值就会小于等于DQN更新的Q值,改善overestimate的问题。

猜你喜欢

转载自blog.csdn.net/tianjuewudi/article/details/119985803
今日推荐