deeplearning
  • Introduction
  • 神经网络
    • 激励函数
    • 反向传播
  • Auto Encoder
    • Denoising Autoencoder
    • Variational Autoencoder
    • Wasserstein AE
  • CNN
    • Convolution
    • pooling
  • RBM
  • RBF
  • RNN
    • LSTM
    • practice
    • Transformer
  • DQN
    • nothing
    • Combinatorial Optimization
  • GAN
  • kownledge graphs
  • Genetic Algorithm
  • Meta Learning
  • Transformer
Powered by GitBook
On this page

Was this helpful?

  1. DQN

nothing

PreviousDQNNextCombinatorial Optimization

Last updated 5 years ago

Was this helpful?

马尔科夫过程:<S,P><S,P><S,P>

状态转移概率: Pss′=p[St+1=s′∣St=s]P_{ss^\prime} = p[S_{t+1}=s^\prime | S_t =s]Pss′​=p[St+1​=s′∣St​=s]

R是一个当前状态的奖励,是当前状态转移后的t+1时刻奖励的期望的函数。

累积回报:Gt=Rt+1+γRt+2+...=∑k=0∞γkRt+k+1G_t = R_{t+1} + \gamma R_{t+2} + ... = \sum_{k=0}^\infty \gamma^k R_{t+k+1}Gt​=Rt+1​+γRt+2​+...=∑k=0∞​γkRt+k+1​

此时GtG_tGt​是个随机变量,而我们要求得到的累积回报是个确定值,所以我们用累积回报的期望来作为这个确定值。

υ(s)=E[Gt∣St=s]\upsilon_{}(s)=E\left[G_{t}|S_{t}=s\right]υ​(s)=E[Gt​∣St​=s]

=E[∑k=0∞γkRt+k+1∣St=s]=E_{}\left[\sum_{k=0}^{\infty}{\gamma ^{k}}R_{t+k+1} |S_{t}=s\right]=E​[∑k=0∞​γkRt+k+1​∣St​=s]

=E[Rt+1+γGt+1∣St=s]=E\left[R_{t+1}+\gamma G_{t+1}\right|S_{t}=s]=E[Rt+1​+γGt+1​∣St​=s]

=E[Rt+1+γv(St+1)∣St=s]=E\left[R_{t+1} +\gamma v(S_{t+1})\right|S_{t}=s]=E[Rt+1​+γv(St+1​)∣St​=s] 由两部分组成:即时奖励期望和下一时刻状态的价值期望。Ex=E(Ex)Ex = E(Ex)Ex=E(Ex)

Rsγ+∑s′∈SPss′v(s′)R_{s} \gamma+\sum_{s'\in S}{P_{ss'}v(s')}Rs​γ+∑s′∈S​Pss′​v(s′)

上面公式的理解:

E(γGt+1∣St=s)=γ∑St+1E(Gt+1∣St,St+1)P(St+1∣St)E(\gamma G_{t+1}|S_t=s) = \gamma \sum_{S_{t+1}} E(G_{t+1}|S_t,S_{t+1})P(S_{t+1}|S_t)E(γGt+1​∣St​=s)=γ∑St+1​​E(Gt+1​∣St​,St+1​)P(St+1​∣St​)

或这么理解:

状态转移概率:

状态奖励:

状态值函数:

蒙特卡洛方法要等到事件结束,最后的奖励Gt出来后,才进行值函数更新。

利用e-greedy策略的Q值更新,在线时间差分控制

利用最大的Q值更新,离线时间差分控制

这样子,整个系统中有两个网络:策略网络和V值网络。(在DQN中我们是用网络拟合Q值函数,这里只不过换成了V值函数。相似的,V值网络的目标函数同样是TD-error)这就是我们大名鼎鼎的Actor Critic 算法了:Actor ——策略网络,Critic ——V值网络。

流程如下:

  1. 运行策略生成样本

  2. 利用样本估计V值函数(更新V值网络)

  3. 计算优势函数A

  4. 根据优势函数A计算梯度(更新策略网络)

为了高效的利用sample出来的数据,可以对数据进行importance sampling:

矩阵化求解:v=R+γPvv = R + \gamma P vv=R+γPv

马尔科夫决策过程:<S,A,P,R,γ><S,A,P,R,\gamma><S,A,P,R,γ>

Pss′aP_{ss^\prime}^aPss′a​ R 多了a

策略: π(a∣s)=P[At=a∣St=s]\pi(a|s)=P[A_t=a|S_t=s]π(a∣s)=P[At​=a∣St​=s]

Pss′=Pss′π=∑a∈Aπ(a∣s)∣Pss′a=∑a∈AP[At=a∣St=s][P[St+1=s′∣St=s,At=a]P_{ss^\prime} = P_{ss^\prime}^\pi = \sum_{a\in A}{\pi(a|s)|P_{ss^\prime}^a} =\sum_{a\in A}{P[A_t=a|S_t=s][P[S_{t+1}=s^\prime|S_t=s,A_t=a]}Pss′​=Pss′π​=∑a∈A​π(a∣s)∣Pss′a​=∑a∈A​P[At​=a∣St​=s][P[St+1​=s′∣St​=s,At​=a]

Rs=Rsπ=∑a∈Aπ(a∣s)Rsa=∑a∈AE[Rt+1∣St=s,At=a]P[Aa∣St=s]R_s = R_s^\pi = \sum_{a \in A}\pi(a|s) R_s^a = \sum_{a \in A} E[R_{t+1}|S_t=s,A_t=a]P[A_a|S_t=s]Rs​=Rsπ​=∑a∈A​π(a∣s)Rsa​=∑a∈A​E[Rt+1​∣St​=s,At​=a]P[Aa​∣St​=s] 跟当前状态和动作有关

蒙特卡洛方法:

V(St)←V(St)+α[Gt−V(St)]V(S_t) \leftarrow V(S_t) + \alpha \Bigg [ G_t-V(S_t) \Bigg ]V(St​)←V(St​)+α[Gt​−V(St​)]

故mc用的是真实的奖励和期望, 而TD方法,策略π\piπ下的状态值vπ(St+1)v_\pi (S_{t+1})vπ​(St+1​)未知的,所以在实际中使用的是它的估计值v(St+1)v (S_{t+1})v(St+1​)

时间差分:

V(St)←V(St)+α[Rt+1+γV(St+1)−V(St)]V(S_t) \leftarrow V(S_t) + \alpha \Bigg [ R_{t+1}+\gamma V(S_{t+1})-V(S_t) \Bigg ]V(St​)←V(St​)+α[Rt+1​+γV(St+1​)−V(St​)]

Q(St,At)←Q(St,At)+α[Rt+1+γQ(St+1,At+1)−Q(St,At)]Q(S_t,A_t) \leftarrow Q(S_t,A_t) + \alpha \Bigg [ R_{t+1}+\gamma Q(S_{t+1},A_{t+1})-Q(S_t,A_t) \Bigg ]Q(St​,At​)←Q(St​,At​)+α[Rt+1​+γQ(St+1​,At+1​)−Q(St​,At​)]

Q(St,At)←Q(St,At)+α[Rt+1+γmax⁡aQ(St+1,a)−Q(St,At)]Q(S_t,A_t) \leftarrow Q(S_t,A_t) + \alpha \Bigg [ R_{t+1}+\gamma \max_a Q(S_{t+1},a)-Q(S_t,A_t) \Bigg ]Q(St​,At​)←Q(St​,At​)+α[Rt+1​+γmaxa​Q(St+1​,a)−Q(St​,At​)]

Q(St,At)←Q(St,At)+α[Rt+1+γE[Q(St+1,At+1)∣St+1]−Q(St,At)]=Q(St,At)+α[Rt+1+γ∑aπ(a∣St+1)Q(St+1,a)−Q(St,At)]Q(S_t,A_t) \leftarrow Q(S_t,A_t) + \alpha \Bigg [ R_{t+1}+\gamma E[ Q(S_{t+1},A_{t+1})|S_{t+1}]-Q(S_t,A_t) \Bigg ] = Q(S_t,A_t) + \alpha \Bigg [ R_{t+1}+\gamma \sum_a \pi(a|S_{t+1})Q(S_{t+1},a)-Q(S_t,A_t) \Bigg ]Q(St​,At​)←Q(St​,At​)+α[Rt+1​+γE[Q(St+1​,At+1​)∣St+1​]−Q(St​,At​)]=Q(St​,At​)+α[Rt+1​+γ∑a​π(a∣St+1​)Q(St+1​,a)−Q(St​,At​)]expected sarsa利用e-greedy策略的期望Q值更新,expected sarsa的收敛方向是sarsa算法的期望收敛方向

多步时间差分:

Vt+n(St)←Vt+n−1(St)+α[Gt:t+n−Vt+n−1(St)]V_{t+n}(S_t) \leftarrow V_{t+n-1}(S_t) + \alpha \Bigg [ G_{t:t+n}-V_{t+n-1}(S_t) \Bigg ]Vt+n​(St​)←Vt+n−1​(St​)+α[Gt:t+n​−Vt+n−1​(St​)]

J(θ)=Eπθ[r]=∑s′∈Sp(s′∣s,a)∑a∈Aπθ(s,a)Rs,aJ(\theta)=\mathbb{E}_{\pi_\theta}[r]=\sum_{s' \in \cal{S}}p(s'|s,a)\sum_{a \in \cal{A}} \pi_\theta(s,a) \cal{R}_{s,a}J(θ)=Eπθ​​[r]=∑s′∈S​p(s′∣s,a)∑a∈A​πθ​(s,a)Rs,a​

∇θπθ(s,a)=πθ(s,a)∇θπθ(s,a)πθ(s,a)=πθ(s,a)∇θlogπθ(s,a)\nabla_\theta \pi_\theta(s,a)=\pi_\theta(s,a) \frac{\nabla_\theta \pi_\theta(s,a)}{\pi_\theta(s,a)}=\pi_\theta(s,a) \nabla_\theta log \pi_\theta(s,a)∇θ​πθ​(s,a)=πθ​(s,a)πθ​(s,a)∇θ​πθ​(s,a)​=πθ​(s,a)∇θ​logπθ​(s,a)

∇θJ(θ)=∑s ∈Sp(s′∣s,a)∑a∈Aπθ(s,a)∇θlogπθ(s,a)Rs,a=Eπθ[∇θlogπθ(s,a)r]\nabla_\theta J(\theta)={\sum_{s\ \in \cal{S}}p(s'|s,a)\sum_{a \in \cal{A}} \pi_\theta(s,a)} \nabla_\theta log \pi_\theta(s,a) \cal{R}_{s,a}=\mathbb{E}_{\pi_\theta}[\nabla_\theta log \pi_\theta(s,a)r]∇θ​J(θ)=∑s ∈S​p(s′∣s,a)∑a∈A​πθ​(s,a)∇θ​logπθ​(s,a)Rs,a​=Eπθ​​[∇θ​logπθ​(s,a)r]

这个回报函数Rs,a\cal{R}_{s,a}Rs,a​很重要,可以设计为∑t′=tTγt′−trt′\sum_{t'=t}^T \gamma^{t'-t} r_t'∑t′=tT​γt′−trt′​ ,即是在状态s处采用动作a所希望得到的回报的估计 。由于轨迹之间方差很大,平均一下求期望∑t′=tTEπθ[r(st′,at′)∣st,at]\sum_{t'=t}^T E_{\pi_\theta}[r(s_t',a_t')|s_t,a_t]∑t′=tT​Eπθ​​[r(st′​,at′​)∣st​,at​] ,这个就是Q(s,a)Q(s,a)Q(s,a)

于是梯度就变成了: ∇θlogπθ(s,a)Q(s,a)\nabla_\theta log \pi_\theta(s,a)Q(s,a)∇θ​logπθ​(s,a)Q(s,a)

回报函数中还可以引入常数项b来减少误差,这个b可以为Q(s,a)Q(s,a)Q(s,a)的期望,即是V值函数。这样R(s,a)−bR(s,a) -bR(s,a)−b 的意义就变成了我们想考察某轨迹在策略网络指导下比平均好多少。

这样就得到了一个新形式:A(s,a)−Q(s,a)−V(s)A(s,a) - Q(s,a)-V(s)A(s,a)−Q(s,a)−V(s) 称之为优势函数,就是指Q值函数比V值函数好多少。

Q(st,at)=r(st,at)+Est+1[V(st+1)]Q(s_t, a_t)=r(s_t, a_t)+E_{s_{t+1}}[V(s_{t+1})]Q(st​,at​)=r(st​,at​)+Est+1​​[V(st+1​)] ,后面这个期望是整条轨迹,可以像TD那样只取一步。于是得到 Q(st,at)≈r(st,at)+V(st+1)Q(s_t, a_t)\approx r(s_t, a_t)+V(s_{t+1})Q(st​,at​)≈r(st​,at​)+V(st+1​) ,最后A(st,at)≈r(st,at)+V(st+1)−V(st)A(s_t, a_t)\approx r(s_t, a_t)+V(s_{t+1})-V(s_t)A(st​,at​)≈r(st​,at​)+V(st+1​)−V(st​) (对比TD-error)。

Ex∼p[f(x)]=∫f(x)p(x)dx=∫f(x)p(x)q(x)q(x)dx=Ex∼q[f(x)p(x)q(x)]E_{x\sim p}[f(x)] = \int f(x)p(x)dx \\ = \int f(x)\frac{p(x)}{q(x)}q(x)dx\\ =E_{x \sim q}[f(x)\frac{p(x)}{q(x)}]Ex∼p​[f(x)]=∫f(x)p(x)dx=∫f(x)q(x)p(x)​q(x)dx=Ex∼q​[f(x)q(x)p(x)​]

为了避免over fitting ,对目标函数增加一个regularizer : JPPOθ′(θ)=Jθ′(θ)−βKL(θ,θ′)J_{PPO}^{\theta'}(\theta) = J^{\theta'}(\theta) - \beta KL(\theta, \theta') \\JPPOθ′​(θ)=Jθ′(θ)−βKL(θ,θ′),但由于θ,θ′\theta, \theta'θ,θ′ 不是分布,可以采用: KL(θ,θ′)=1K∑k=1KKL(Pθ(ak∣sk),Pθ′(ak∣sk))KL(\theta, \theta') = \frac{1}{K}\sum_{k=1}^K KL(P_\theta(a_k|s_k), P_{\theta'}(a_k|s_k))\\KL(θ,θ′)=K1​∑k=1K​KL(Pθ​(ak​∣sk​),Pθ′​(ak​∣sk​))

https://zhuanlan.zhihu.com/p/35134789
https://zhuanlan.zhihu.com/p/33387269
https://zhuanlan.zhihu.com/p/36254714
https://zhuanlan.zhihu.com/p/33426502
https://zhuanlan.zhihu.com/p/37340768
https://zhuanlan.zhihu.com/p/36390206
https://zhuanlan.zhihu.com/p/39624504
https://zhuanlan.zhihu.com/p/38185553
https://github.com/google/dopamine
https://zhuanlan.zhihu.com/p/36254714