本文内容摘录自OpenAI的深度强化学习资源Spinning Up,进入网址。
强化学习(RL)主要包括智能体(agent)和环境(environment)两部分。在智能体与环境交互的每一步,智能体获取(或部分获取)环境状态的一个观测(observation),并采取一个动作(action)。环境会在智能体作用于它的时候发生变化(或者自己变化)。
智能体会从环境中获得奖励(reward),奖励代表了当前环境状态的好坏。智能体的目标是最大化累计奖励,即回报(return)。强化学习算法就是训练智能体实现这个目标的方法。
状态(state)是环境状态的一个完整描述,而观测(observation)是状态的一个部分描述(可能忽略了某些信息)。
比如,在视频游戏任务中,状态可以是图像的像素值矩阵;在机器人控制中,状态可以是机械臂的角度、速度等。
环境可以分为fully observed和partially observed
动作空间(action space)是智能体可以执行的动作的集合,通常分为:
策略(policy)是一个规则,智能体依据策略来决定采取什么动作。由于策略是智能体的核心,所以常把“策略”与“智能体“混用。
策略可以是确定性的:
a t = μ ( s t ) a_t = \mu(s_t) at=μ(st)
μ \mu μ是一个确定的函数。也可以是随机的:
a t ∼ π ( ⋅ ∣ s t ) a_t \sim \pi(\cdot | s_t) at∼π(⋅∣st)
π \pi π是一个概率分布。
在深度RL中,我们讨论是参数化的策略,即策略是根据一系列参数(比如神经网络的权重与偏置)计算出来的,因此策略可以写作:
a t = μ θ ( s t ) a_t = \mu_{\theta}(s_t) at=μθ(st)
a t ∼ π θ ( ⋅ ∣ s t ) a_t \sim \pi_{\theta}(\cdot | s_t) at∼πθ(⋅∣st)
例子:假设状态空间是连续的,我们将observation作为神经网络的输入,将神经网络的输出作为确定性的动作。
深度RL中最常见的两种随机策略:分类策略和对角高斯策略。前者用于离散动作空间,后者用于连续动作空间。
训练与使用随机策略的过程中的涉及到两个关键计算:
分类策略用于离散动作空间。训练一个分类策略就类似于训练一个分类器:将observation输入到神经网络,最后一层给出每个可选动作的logit,经过softmax得到每个采取动作的概率。
对角高斯策略用于连续状态空间。先解释下对角高斯分布:
多变量高斯分布由均值向量和协方差矩阵表示。对角高斯分布的协方差矩阵只在对角线取值不为0,从而可以用一个向量表示。这里的变量个数是动作的维度,对角意味着动作之间相互独立。
在对角高斯策略中,使用一个神经网络输出动作的均值向量 μ θ ( s ) \mu_{\theta}(s) μθ(s),对于协方差矩阵(方差向量)有两种生成方法:
方法一:使用一个与状态无关的标准差向量 log σ \log \sigma logσ
方法二:使用一个神经网络将状态映射到标准差向量 log σ θ ( s ) \log \sigma_{\theta}(s) logσθ(s)
注:这里使用log也是和上面一个道理。
有了均值和标准差,可以使用下式来生成动作:
a = μ θ ( s ) + σ θ ( s ) ⊙ z a = \mu_{\theta}(s) + \sigma_{\theta}(s) \odot z a=μθ(s)+σθ(s)⊙z
其中, ⊙ \odot ⊙表示元素对应相乘,z是噪声向量( z ∼ N ( 0 , I ) z \sim \mathcal{N}(0, I) z∼N(0,I))。
轨迹(trajectory )是状态与动作的一个序列,也叫episode或rollout:
τ = ( s 0 , a 0 , s 1 , a 1 , . . . ) \tau = (s_0, a_0, s_1, a_1, ...) τ=(s0,a0,s1,a1,...)
初始状态服从某个分布: s 0 ∼ ρ 0 ( ⋅ ) s_0 \sim \rho_0(\cdot) s0∼ρ0(⋅)
状态之间的转移只与最近的动作有关(马尔科夫性)。可以是确定性的:
s t + 1 = f ( s t , a t ) s_{t+1} = f(s_t, a_t) st+1=f(st,at)
也可以是随机的:
s t + 1 ∼ P ( ⋅ ∣ s t , a t ) s_{t+1} \sim P(\cdot|s_t, a_t) st+1∼P(⋅∣st,at)
奖励(reward)可以写作 r t = R ( s t , a t , s t + 1 ) r_t = R(s_t, a_t, s_{t+1}) rt=R(st,at,st+1) ,也可以简化为: r t = R ( s t ) r_t = R(s_t) rt=R(st) 或 r t = R ( s t , a t ) r_t = R(s_t,a_t) rt=R(st,at)。
智能体的目标是最大化一个轨迹中的累积奖励,即回报(return)。回报通常有两种形式:
有限无折扣回报:
R ( τ ) = ∑ t = 0 T r t R(\tau) = \sum_{t=0}^T r_t R(τ)=t=0∑Trt
无限折扣回报:
R ( τ ) = ∑ t = 0 ∞ γ t r t R(\tau) = \sum_{t=0}^{\infty} \gamma^t r_t R(τ)=t=0∑∞γtrt
γ ∈ ( 0 , 1 ) \gamma \in (0,1) γ∈(0,1)是折扣因子。折扣化有两方面原因:(1)直观上,未来充满不确定性,因此对未来奖励的重视程度较低;(2)数学上,引入折扣因子能够保证收敛(在一定条件下)。
RL的目标就是选择一个能够最大化期望回报的策略。
假设环境的转移和策略都是随机的,则一个T步长的轨迹的概率为: P ( τ ∣ π ) = ρ 0 ( s 0 ) ∏ t = 0 T − 1 P ( s t + 1 ∣ s t , a t ) π ( a t ∣ s t ) P(\tau|\pi) = \rho_0 (s_0) \prod_{t=0}^{T-1} P(s_{t+1} | s_t, a_t) \pi(a_t | s_t) P(τ∣π)=ρ0(s0)t=0∏T−1P(st+1∣st,at)π(at∣st)
期望回报为:
J ( π ) = ∫ τ P ( τ ∣ π ) R ( τ ) = E τ ∼ π [ R ( τ ) ] J(\pi) = \int_{\tau} P(\tau|\pi) R(\tau) = E_{\tau\sim \pi}[{R(\tau)}] J(π)=∫τP(τ∣π)R(τ)=Eτ∼π[R(τ)]
则RL优化问题可以写作:
π ∗ = arg max π J ( π ) \pi^* = \arg \max_{\pi} J(\pi) π∗=argπmaxJ(π)
π ∗ \pi^* π∗是最优策略。
价值是指从一个状态或者一个状态-动作对出发,遵循某个策略所得到的期望回报。它有四种形式:
On-Policy Value Function,从状态 s s s出发,遵循策略 π \pi π所得到的期望回报:
V π ( s ) = E τ ∼ π [ R ( τ ) ∣ s 0 = s ] V^{\pi}(s) = E_{\tau \sim \pi}[{R(\tau)\left| s_0 = s\right.]} Vπ(s)=Eτ∼π[R(τ)∣s0=s]
On-Policy Action-Value Function, 从状态 s s s出发,采取任意动作 a a a,此后遵循策略 π \pi π所得到的期望回报,常称为Q函数:
Q π ( s , a ) = E τ ∼ π [ R ( τ ) ∣ s 0 = s , a 0 = a ] Q^{\pi}(s,a) = E_{\tau \sim \pi}[{R(\tau)\left| s_0 = s, a_0 = a\right.]} Qπ(s,a)=Eτ∼π[R(τ)∣s0=s,a0=a]
Optimal Value Function,从状态 s s s出发,遵循最优策略所得到的期望回报:
V ∗ ( s ) = max π E τ ∼ π [ R ( τ ) ∣ s 0 = s ] V^*(s) = \max_{\pi} E_{\tau \sim \pi}[{R(\tau)\left| s_0 = s\right.}] V∗(s)=πmaxEτ∼π[R(τ)∣s0=s]
Optimal Action-Value Function,从状态 s s s出发,采取任意动作 a a a,此后遵循最优策略所得到的期望回报:
Q ∗ ( s , a ) = max π E τ ∼ π [ R ( τ ) ∣ s 0 = s , a 0 = a ] Q^*(s,a) = \max_{\pi}E_{\tau \sim \pi}[{R(\tau)\left| s_0 = s, a_0 = a\right.}] Q∗(s,a)=πmaxEτ∼π[R(τ)∣s0=s,a0=a]
两个重要关系:
V π ( s ) = E a ∼ π [ Q π ( s , a ) ] V^{\pi}(s) = E_{a\sim \pi}[{Q^{\pi}(s,a)}] Vπ(s)=Ea∼π[Qπ(s,a)]
V ∗ ( s ) = max a Q ∗ ( s , a ) V^*(s) = \max_a Q^* (s,a) V∗(s)=amaxQ∗(s,a)
都可以由定义推导出来。
我们在状态 s s s下,要采取的最优动作满足:
a ∗ ( s ) = arg max a Q ∗ ( s , a ) a^*(s) = \arg \max_a Q^* (s,a) a∗(s)=argamaxQ∗(s,a)
上述四个价值函数都遵循特定的自洽方程,称为贝尔曼方程。
贝尔曼方程的基本思想是:起始点处的 value 等于你在那个点可以获得的 reward 加上接下来可能处于的位置的value。
V π ( s ) = E a ∼ π , s ′ ∼ P [ r ( s , a ) + γ V π ( s ′ ) ] V^{\pi}(s) = E_{a \sim \pi, s'\sim P}[{r(s,a) + \gamma V^{\pi}(s')}] Vπ(s)=Ea∼π,s′∼P[r(s,a)+γVπ(s′)]
Q π ( s , a ) = E s ′ ∼ P [ r ( s , a ) + γ E a ′ ∼ π [ Q π ( s ′ , a ′ ) ] Q^{\pi}(s,a) = E_{s'\sim P}[{r(s,a) + \gamma E_{a'\sim \pi}[{Q^{\pi}(s',a')}}] Qπ(s,a)=Es′∼P[r(s,a)+γEa′∼π[Qπ(s′,a′)]
V ∗ ( s ) = max a E s ′ ∼ P [ r ( s , a ) + γ V ∗ ( s ′ ) ] V^*(s) = \max_a E_{s'\sim P}[{r(s,a) + \gamma V^*(s')}] V∗(s)=amaxEs′∼P[r(s,a)+γV∗(s′)]
Q ∗ ( s , a ) = E s ′ ∼ P [ r ( s , a ) + γ max a ′ Q ∗ ( s ′ , a ′ ) ] Q^*(s,a) = E_{s'\sim P}[{r(s,a) + \gamma \max_{a'} Q^*(s',a')}] Q∗(s,a)=Es′∼P[r(s,a)+γa′maxQ∗(s′,a′)]
有时候我们不需要知道一个动作的绝对好坏,只需要知道它比其他动作平均好多少。这个概念用优势(advantage)函数表示:
A π ( s , a ) = Q π ( s , a ) − V π ( s ) A^{\pi}(s,a) = Q^{\pi}(s,a) - V^{\pi}(s) Aπ(s,a)=Qπ(s,a)−Vπ(s)
环境的形式化描述是马尔科夫决策过程(MDP),用五元组 ⟨ S , A , R , P , ρ 0 ⟩ \langle S, A, R, P, \rho_0 \rangle ⟨S,A,R,P,ρ0⟩表示,其中,