# Reinforcement Learning ## MDP ### 马尔科夫过程 $$ $$ ### 马尔科夫奖励过程 $$ $$ - 回报 $$ G_t=R_t+\gamma R_{t+1}+\gamma^2R_{t+2}+\cdots=\sum^{\infty}_{k=0}\gamma^k R_{t+k} $$ - 价值函数 $$ \begin{aligned} V(s)&= \textrm{E}[G_t|{S}_t={s}] \\ &=\textrm{E}[R_t+\gamma V({S}_{t+1})|{S}_t={s}] \\ 贝尔曼方程:\\ &=r(s)+\gamma \sum_{s'\in S}P(s'|s)V(s') \end{aligned} $$ ### 马尔科夫决策过程 $$ $$ - 策略 $$ \pi(a|s)=P(A_t=a|S_t=s) $$ - 状态价值函数 $$ V^{\pi}(s)=\textrm{E}_{\pi}[G_t|S_t=s] $$ - 动作价值函数 $$ Q^{\pi}(s,a)=\textrm{E}_{\pi}[G_t|S_t=s,A_t=a] $$ - 贝尔曼期望方程 $$ \begin{aligned} Q^{\pi}(s,a)&=\textrm{E}_{\pi}[R_t+\gamma Q^{\pi}(s',a')|S_t=s,A_t=a]\\ &=r(s,a)+\gamma\sum_{s'\in S}P(s'|s,a)\sum_{a'\in A}\pi(a'|s')Q^{\pi}(s',a')\\ V^{\pi}(s)&=\textrm{E}_{\pi}[R_t+\gamma V^{\pi}(s')|S_t=s]\\ &=\sum_{a\in A}\pi(a|s)\left(r(s,a)+\gamma \sum_{s'\in S}P(s'|s,a)V^{\pi}(s')\right) \end{aligned} $$ - 蒙特卡洛方法 重复随机抽样,然后运用概率统计方法来从抽样结果中归纳出目标的数值估计 - MDP状态价值 $$ \begin{aligned} &用策略在\textrm{MDP}上采样很多条序列,计算从这个状态出发的回报再求其期望\\ &V^\pi(s)=\textrm{E}_\pi[G_t|S_t=s]\approx \frac{1}{N}\sum^N_{i=1}G_t^{(i)} \end{aligned} $$ - 一条序列只计算一次回报,也就是这条序列第一次出现该状态是计算后面的累积奖励,而后面再出现该状态时,该状态就被忽略了 $$ \begin{aligned} &(1)使用策略\pi采样若干条序列:\\ &s_0^{(i)} \xrightarrow{a_0^{(i)}} r_0^{(i)},s_1^{(i)}\xrightarrow{a_1^{(i)}} r_1^{(i)},s_2^{(i)}\xrightarrow{a_2^{(i)}} \cdots \xrightarrow{a_{T-1}^{(i)}} r_{T-1}^{(i)},s_T^{(i)}\\ &(2)对每一条序列中的每一时间步t的状态s进行以下操作:\\ &a.\quad更新状态s的计数器N(s)\leftarrow N(s)+1;\\ &b.\quad更新状态s的总回报M(s)\leftarrow M(s)+G;\\ &(3)每一个状态的价值被估计为回报的期望\\ &V(s)=M(s)/N(s)\\ &根据大数定律,当N(s)\rightarrow \infty时,有V(s)\rightarrow V^\pi(s),所以还有一种增量更新方法:\\ &a.\quad N(s)\leftarrow N(s)+1;\\ &b.\quad V(s)\leftarrow V(s)+\frac{1}{N(s)}(G-V(s));\\ \end{aligned} $$ - 贝尔曼最优方程 $$ \begin{aligned} V^*(s)&=\max_{\pi}V^{\pi}(s) \qquad \forall s\in S\\ &=\max_{a\in A}Q^*(s,a)\\ &=\max_{a \in A}\{r(s,a)+\gamma \sum_{s'\in S}P(s'|s,a)V^*(s')\}\\ Q^*(s,a)&=\max_\pi Q^\pi(s,a) \qquad \forall s\in S,a\in A\\ &=r(s,a)+\gamma \sum_{s'\in S}P(s'|s,a)V^*(s')\\ &=r(s,a)+\gamma \sum_{s'\in S}P(s'|s,a)\max_{a'\in A}Q^*(s',a') \end{aligned} $$ ## value-based ### DP - 策略迭代 策略评估与策略提升不断循环交替,直至最后得到最优策略 - 策略评估 $$ \begin{aligned}[h] &V^{k+1}(s)=\sum_{a\in A}\pi(a|s)\left( r(s,a)+ \gamma\sum_{s'\in S}P(s'|s,a)V^k(s') \right)\\ &当k\rightarrow \infty时, 序列\{V^{k}\}会收敛到V^\pi\\ &实际中,当\max_{s\in S}|V^{k+1}(s)-V^k(s)|\leq\epsilon时,结束策略评估 \end{aligned} $$ - 策略提升 $$ \begin{aligned} &\textrm{if}\quad \exists \quad \pi'\\ &\textrm{st.}\quad \forall s\in S, \quad Q^\pi(s,\pi'(s))\geq V^\pi(s)\\ &\textrm{then}\quad V^{\pi'}(s)\geq V^\pi(s)\\ &\pi'(s)=\arg \max_a Q^\pi(s,a)=\arg\max_a\{r(s,a)+\gamma\sum_{s'}P(s'|s,a)V^\pi (s')\} \end{aligned} $$ - 价值迭代 $$ \begin{aligned} &V^{k+1}(s)=\max_{a\in A}\{r(s,a)+\gamma\sum_{s'\in S}P(s'|s,a)V^k(s)\}\\ &\textrm{when}\quad V^{k+1}=V^k\\ &\pi(s)=\arg\max_a\{r(s,a)+\gamma\sum_{s'}P(s'|s,a)V^{k+1}(s)\} \end{aligned} $$ ### TD - 价值函数的蒙特卡洛 $$ V(s_t)\leftarrow V(s_t)+\alpha[G-V(s_t)] $$ - 价值函数的时序差分 $$ \begin{aligned} &V(s_t)\leftarrow V(s_t)+\alpha[r_t+\gamma V(s_{t+1})-V(s_t)]\\ &其中,r_t+\gamma V(s_{t+1})-V(s_t)称为时序差分 \end{aligned} $$ - Sarsa - $$ \begin{aligned} &初始化Q(s,a)\\ &\textbf{for}序列e=1\rightarrow E\quad \textbf{do:}\\ &\quad得到初始状态s\\ &\quad用\epsilon -贪婪策略根据Q选择当前状态s下的动作a\\ &\quad \textbf{for} 时间步t=1\rightarrow T\quad\textbf{do:}\\ &\qquad得到环境反馈r,s'\\ &\qquad用\epsilon -贪婪策略根据Q选择当前状态s'下的动作a'\\ &\qquad Q(s,a)\leftarrow Q(s,a)+\alpha[r+\gamma Q(s',a')-Q(s,a)]\\ &\qquad s\leftarrow s',a\leftarrow a'\\ &\quad \textbf{end for}\\ &\textbf{end for} \end{aligned} $$ - 在线策略 $$ \begin{aligned} &行为策略(采样数据表的策略)与\\ &目标策略(用这些数据更新的策略)相同,\\ &如a和a'皆有当前策略\epsilon-Greedy(Q)采样得到 \end{aligned} $$ - 多步Sarsa - 使用n步的奖励,然后使用之后状态的价值估计 $$ G_t=r_t+\gamma r_{t+1}+\cdots +\gamma^nQ(s_{t+n},a_{t+n}) $$ - 动作价值函数更新 $$ Q(s_t,a_t)\leftarrow Q(s_t,a_t)+\alpha[r_t+\gamma r_{t+1}+\cdots +\gamma^nQ(s_{t+n},a_{t+n})-Q(s_t,a_t)] $$ - Q-Learning - $$ \begin{aligned} &初始化Q(s,a)\\ &\textbf{for}序列e=1\rightarrow E\quad \textbf{do:}\\ &\quad得到初始状态s\\ &\quad用\epsilon -贪婪策略根据Q选择当前状态s下的动作a\\ &\quad \textbf{for} 时间步t=1\rightarrow T\quad\textbf{do:}\\ &\qquad得到环境反馈r,s'\\ &\qquad Q(s,a)\leftarrow Q(s,a)+\alpha[r+\gamma \max_{a'}Q(s',a')-Q(s,a)]\\ &\qquad s\leftarrow s'\\ &\quad \textbf{end for}\\ &\textbf{end for} \end{aligned} $$ - 离线策略 $$ \begin{aligned} &行为策略(采样数据表的策略)与\\ &目标策略(用这些数据更新的策略)不同,\\ &如a由行为策略\epsilon-Greedy(Q)采样得到,\\ &a'由当前策略\max(Q)采样得到, \end{aligned} $$ ## policy-based ### 一般方法 - 目标函数 $$ J(\theta)=E_{S}[V_{\pi}(S)] $$ - 策略梯度定理 $$ \frac{\partial J(\theta)}{\partial \theta}=\nabla_{\theta}J(\theta)=\mathbb{E}_{S}[\mathbb{E}_{A\backsim \pi(\cdot | S;\theta)}[\frac{\partial \ln\pi(A|S;\theta)}{\partial \theta}\cdot Q_{\pi}(S,A)]] $$ - 随机梯度——策略梯度的无偏估计 $$ {g}(s,a;\theta)\triangleq Q_\pi(s,a)\cdot \nabla_{\theta}\ln\pi(a|s;\theta) $$ - 策略网络提升 $$ \theta\gets\theta+\beta\cdot g(s,a;\theta) $$ ### 带基线的策略梯度方法 - 带基线的策略梯度定理——b是不依赖于A的任意函数 $$ \nabla_{\theta}J(\theta)=\mathbb{E}_{S}[\mathbb{E}_{A\backsim \pi(\cdot | S;\theta)}[(Q_{\pi}(S,A)]-b)\cdot \nabla_{\theta}\ln\pi(A|S;\theta)] $$ - 随机梯度 $$ g_b(s,a;\theta)=[Q_{\pi}(S,A)-b]\cdot\nabla_{\theta}\ln\pi(A|S;\theta) $$ ### REINFORCE - 折扣回报 $$ U_t=\sum_{k-t}^{n}\gamma^{k-t}\cdot R_k $$ - 动作价值是折扣回报的期望 $$ Q_\pi(s_t,a_t)=\mathbb{E}[U_t|S_t=s_t,A_t=a_t] $$ - 用折扣回报的观测值蒙特卡洛近似动作价值 $$ \tilde{g}(s_T,a_t;\theta)=u_t\cdot\nabla_{\theta}\ln\pi(a_t|s_t;\theta) $$ - 策略网络提升 $$ \theta_{new}\gets\theta_{now}+\beta\cdot\sum_{t=1}^{n}\gamma^{t-1}\cdot\tilde{g}(s_t.a_t;\theta_{now}) $$ ### 带基线的REINFORCE - 策略网络 - 折扣回报 $$ u_t=\sum_{k-t}^{n}\gamma^{k-t}\cdot r_k $$ - 基线——价值网络做出的预测 $$ \hat{v_t}=v(s_t;\omega) $$ - 带基线的策略梯度 $$ \tilde{g}(s_t,a_t;\theta)=(u_t-\hat{v_t})\cdot\nabla_{\theta}\ln\pi(a_t|s_t;\theta) $$ - 梯度上升 $$ \theta\gets\theta+\beta\cdot\tilde{g}(s_t,a_t;\theta) $$ - 价值网络 - 损失函数 $$ L(\omega)=\frac{1}{2n}\sum_{t=1}^{n}[v(s_t;\omega)-u_t]^2 $$ - 损失函数的梯度 $$ \nabla_{\omega}L(\omega)=\frac{1}{n}\sum_{t=1}^{n}[v(s_t;\omega)-u_t]\cdot\nabla_\omega v(s_t;\omega) $$ - 梯度下降 $$ \omega\gets\omega-\alpha\cdot\nabla_{\omega}L(\omega) $$ ### Actor-Critic - 策略网络 - 用价值网络近似动作价值 $$ \hat{g}(s,a;\theta)\triangleq q(s,a;\omega)\cdot\nabla_{\theta}\ln\pi(a|s;\theta) $$ - 策略网络提升 $$ \theta\gets\theta+\beta\cdot\hat{g}(s,a;\theta) $$ - 价值网络 - TD目标 $$ \hat{y_t}\triangleq r_t+\gamma\cdot q(s_{t+1},a_{t+1};\omega) $$ - 损失函数 $$ L(\omega)\triangleq \frac{1}{2}[q(s_t,a_t;\omega)-\hat{y_t}]^2 $$ - 损失函数梯度 $$ \nabla_{\omega}L(\omega)=[q(s_t,a_t;\omega)-\hat{y_t}]\cdot\nabla_{\omega}q(s_t,a_t;\omega) $$ - 梯度下降 $$ \omega\gets\omega-\alpha\cdot\nabla_{\omega}L(\omega) $$ ### Advantage Actor-Critic (A2C) - 策略网络 - 贝尔曼公式 $$ Q_\pi(s_t,a_t)=\mathbb{E}_{S_{t+1}\backsim p(\cdot|s_t,a_t)}[R_t+\gamma\cdot V_\pi(S_{t+1})] $$ - 优势函数(Advantage function) $$ Q_\pi(s,a)-V_\pi(s) $$ - 近似策略梯度 $$ \begin{aligned}g(s_t,a_t;\theta)&=[Q_\pi(s_t,a_t)-V_\pi(s_t)]\cdot\nabla_\theta\ln\pi(a_t|s_t;\theta)\\ &=[\mathbb{E}_{S_{t+1}}[R_t+\gamma\cdot V_\pi(S_{t+1})]-V_\pi(s_t)]\cdot\nabla_\theta\ln\pi(a_t|s_t;\theta)\\ 蒙特卡洛近似\\ &\thickapprox[r_t+\gamma\cdot V_\pi(s_{t+1})]-V_\pi(s_t)]\cdot\nabla_\theta\ln\pi(a_t|s_t;\theta)\\ 用价值网络v(s;\omega)替换状态价值函数V_\pi(s)\\ \tilde{g}(s_t.a_t;\theta)&\triangleq [r_t+\gamma\cdot v_\pi(s_{t+1};\omega)]-v_\pi(s_t;\omega)]\cdot\nabla_\theta\ln\pi(a_t|s_t;\theta) \end{aligned} $$ - 策略网络提升 $$ \theta\gets\theta+\beta\cdot\tilde{g}(s,a;\theta) $$ - 价值网络 - 贝尔曼公式 $$ V_\pi(s_t)=\mathbb{E}_{A_t\backsim\pi(\cdot|s_t;\theta)}[\mathbb{E}_{S_{t+1}\backsim p(\cdot|s_t,A_t)}[R_t+\gamma\cdot V_\pi(S_{t+1})]] $$ - TD目标 $$ \hat{y_t}\triangleq r_t+\gamma\cdot v(s_{t+1};\omega) $$ - 损失函数 $$ L(\omega)\triangleq\frac{1}{2}[v(s_t;\omega)-\hat{y_t}]^2 $$ - 损失函数的梯度 $$ \nabla_\omega L(\omega)=[v(s_t;\omega)-\hat{y_t}]\cdot\nabla_\omega v(s_t;\omega) $$ - 梯度下降 $$ \omega\gets\omega-\alpha\cdot\nabla_{\omega}L(\omega) $$ ### TRPO - 策略目标 ## Multi-agent ### 完全合作关系 - multi-agent cooperative A2C(MAC-A2C) - 策略网络 $$ \pi(A^i|S;\theta^i) $$ - 动作A的概率密度函数 $$ \pi(A|S;\theta^1,\cdots,\theta^m)\triangleq \pi(A^1 |S;\theta^1)\times\cdots\times \pi(A^m |S;\theta^m) $$ - 合作关系 MARL 的策略梯度定理 $$ \nabla_{\theta^i}J(\theta^1,\cdots,\theta^m)=\mathbb{E}_{S,A}\left[\left(Q_\pi(S,A)-b\right)\cdot \nabla_{\theta^i}\ln\pi(A^i|S;\theta^i)\right] $$ - 随机梯度——策略梯度的无偏估计 $$ \begin{aligned} g^i(s,a;\theta^i)&\triangleq \left(Q_\pi(s,a)-V_\pi(s)\right)\cdot\nabla_{\theta^i}\ln\pi(a^i|s;\theta^i)\\ 用r_t+\gamma\cdot v(s_{t+1};\omega)近似Q_\pi(s_t,a_t),\\用v(s_t;\omega)近似V_\pi(s_t)\\ \tilde{g}^i(s_t,a_t^i;\theta^i)&\triangleq \left(r_t+\gamma\cdot v(s_{t+1};\omega)-v(s_t;\omega)\right)\cdot \nabla_{\theta^i}\ln\pi(a_t^i|s_t;\theta^i) \end{aligned} $$ - 策略网络提升 $$ \theta^i\gets\theta^i+\beta\cdot\tilde{g}^i(s_t,a_t^i;\theta^i) $$ - 价值网络 $$ v(s_t,\omega) $$ - 观测 $$ s=[o_1,\cdots,o_m] $$ - TD目标 $$ \hat{y_t}\triangleq r_t+\gamma\cdot v(s_{t+1};\omega) $$ - 损失函数 $$ L(\omega)\triangleq\frac{1}{2}[v(s_t;\omega)-\hat{y_t}]^2 $$ - 损失函数的梯度 $$ \nabla_\omega L(\omega)=[v(s_t;\omega)-\hat{y_t}]\cdot\nabla_\omega v(s_t;\omega) $$ - 梯度下降 $$ \omega\gets\omega-\alpha\cdot\nabla_{\omega}L(\omega) $$