_学习记录…有错误感谢指出
Deep Q-Learning 的主要目的在于最小化以下目标函数:
J ( ω ) = E [ ( R + γ max a ∈ A ( S ′ ) q ^ ( S ′ , a , ω ) − q ^ ( S , A , ω ) ) 2 ] , J(\omega) = {\rm E}\left[ {{{\left( {R + \gamma \mathop {\max }\limits_{a \in {\rm A}(S')} \hat q(S',a,\omega ) - \hat q(S,{\rm A},\omega )} \right)}^2}} \right],\ J(ω)=E[(R+γa∈A(S′)maxq^(S′,a,ω)−q^(S,A,ω))2],
在这里(S,A,R,S’)是一组随机变量
S‘表示继状态S后的下一个状态
采用梯度下降的方法实现对目标函数的最小化。
y = R + γ max a ∈ A ( S ′ ) q ^ ( S ′ , a , ω ) (1) {\rm{y}} = R + \gamma \mathop {\max }\limits_{a \in {\rm{A}}(S')} \hat q(S',a,\omega )\tag 1 y=R+γa∈A(S′)maxq^(S′,a,ω)(1)
y ^ = q ^ ( S , A , ω ) (2) \hat y = \hat q(S,{\rm{A}},\omega )\tag 2 y^=q^(S,A,ω)(2)
可以发现,如果对目标函数求梯度,不仅 y ^ \hat{y} y^ 要对 ω \omega ω 求导,而且 y 也要对 ω \omega ω 求导。
由于 y 式中含有max,所以不易于求导,为了简化梯度下降的过程,在DQN算法中,求目标函数的梯度过程中,在一段时间内,假设 y 式中的 ω \omega ω 是常数(即对目标函数求梯度时,不对 y 求导)。
引入两个神经网络
在这种定义下的目标函数为:
J ( ω ) = E [ ( R + γ max a ∈ A ( S ′ ) q ^ ( S ′ , a , ω T ) − q ^ ( S , A , ω ) ) 2 ] (3) J(\omega ) = {\rm{E}}\left[ {{{\left( {R + \gamma \mathop {\max }\limits_{a \in {\rm{A}}(S')} \hat q(S',a,{\omega _T}) - \hat q(S,{\rm{A}},\omega )} \right)}^2}} \right]\tag 3 J(ω)=E[(R+γa∈A(S′)maxq^(S′,a,ωT)−q^(S,A,ω))2](3)
ω T 是 t a r g e t n e t w o r k 的参数 , ω 是 m a i n n e t w o r k 的参数 \omega_T 是target\ network的参数,\omega 是main\ network的参数 ωT是target network的参数,ω是main network的参数
当 ω T \omega_T ωT 是常数时,目标函数的梯度可以简单表示为:
∇ ω J = E [ ( R + γ max a ∈ A ( S ′ ) q ^ ( S ′ , a , ω T ) − q ^ ( S , A , ω ) ) ∇ ω q ^ ( S , A , ω ) ] (4) {\nabla _\omega }J = {\rm{E}}\left[ {\left( {R + \gamma \mathop {\max }\limits_{a \in {\rm{A}}(S')} \hat q(S',a,{\omega _T}) - \hat q(S,{\rm{A}},\omega )} \right){\nabla _\omega }\hat q(S,{\rm{A}},\omega )} \right]\tag 4 ∇ωJ=E[(R+γa∈A(S′)maxq^(S′,a,ωT)−q^(S,A,ω))∇ωq^(S,A,ω)](4)
核心要点:
为什么引入?
实现细节:
DDQN是在DQN的基础上进行的改进,两者模型结构基本一样,唯一区别在于两者的目标函数有所不同。
Y D Q N = R + γ max a ∈ A ( S ′ ) q ^ ( S ′ , a , ω T ) Y D D Q N = R + γ q ^ ( S ′ , arg max a ∈ A ( S ′ ) q ^ ( S ′ , a , ω ) , ω T ) \begin{array}{l} {Y^{DQN}} = R + \gamma \mathop {\max }\limits_{a \in {\rm{A}}(S')} \hat q(S',a,{\omega _T})\\ {Y^{DDQN}} = R + \gamma \hat q(S',\mathop {\arg \max }\limits_{a \in {\rm{A}}(S')} \hat q(S',a,\omega ),{\omega _T}) \end{array} YDQN=R+γa∈A(S′)maxq^(S′,a,ωT)YDDQN=R+γq^(S′,a∈A(S′)argmaxq^(S′,a,ω),ωT)
ω T 是 t a r g e t n e t w o r k 的参数 \omega_T 是target\ network的参数 ωT是target network的参数
ω 是 m a i n n e t w o r k 的参数 \omega 是main\ network的参数 ω是main network的参数
Double DQN 的最优动作是根据目前正在更新的网络 main network 选择的,只是action value的值是由 target network 计算而得
DQN 的最优动作是由 target network 而来
Reference:
DQN部分
https://github.com/MathFoundationRL/Book-Mathmatical-Foundation-of-Reinforcement-Learning/blob/main/3%20-%20Chapter%208%20Value%20Function%20Approximation.pdf
DDQN部分!](https://img-blog.csdnimg.cn/dcb07ab71df94e70ae009e71369c33cb.png#pic_center)
https://blog.csdn.net/qq_43435274/article/details/107455240