强化学习 (Reinforcement Learning,RL) 可以描述为智能体 (Agent) 与环境 (Environment) 的交互中不断学习以完成特定目标(比如取得最大奖励值)的过程。
【强化学习的数学原理】- bilibili
Book-Mathematical-Foundation-of-Reinforcement-Learning
马尔可夫决策过程
基本要素
下面介绍一个简单的示例,它能帮助我们更加直观的理解强化学习过程。
路径寻找 :如下图,在一个网格世界中,包括平坦网格、草地和边界。有一个Agent,目标是如何快速地从起始位置,走到右下角的目标位置,其中草坪会减慢行走速度。每一步可以选择5种行走方向:↑ , ← , ↓ , → , ↺ \uparrow,\leftarrow,\downarrow,\rightarrow,\circlearrowleft ↑ , ← , ↓ , → , ↺ ,Agent 要做的是寻找好的行走路径。
强化学习任务通常使用马尔可夫决策过程 (Markov Decision Process, MDP)来描述:智能体处于环境中,不断交互感知环境的状态 ,并根据反馈的奖励 学习选择一个合适的动作 ,来最大化长期总收益。
描述强化学习的基本要素包括:
状态 (state): s ∈ S s\in\mathcal S s ∈ S 是智能体感知到的环境的描述。例如网格世界中每一个网格就是一种状态。
动作 (action): a ∈ A a\in\mathcal A a ∈ A 是对智能体行为的描述。例如网格世界中每一步的行走方向。
奖励 (reward):r r r 是智能体根据当前状态 s s s 做出动作 a a a 之后,环境反馈给智能体一个数值,这个奖励也经常和下一个时刻的状态 s ′ s' s ′ 有关。奖励往往由我们自己来定义,奖励定义得好坏非常影响强化学习的结果。确定性的奖励一般用表格形式来呈现。比如,网格世界中,如果Agent进入草地或者碰到边界的 r = − 2 r=-2 r = − 2 ;进入平坦网格的奖励 r = − 1 r=-1 r = − 1 ;进入目标网格的奖励为 1 1 1 。
马尔可夫性质 :
P ( s t + 1 ∣ s 0 , a 0 , s 1 , a 1 , ⋯ , s t , a t ) = P ( s t + 1 ∣ s t , a t ) \mathbb P(s_{t+1}|s_0,a_0,s_1,a_1,\cdots,s_t,a_t)=\mathbb P(s_{t+1}|s_t,a_t)
P ( s t + 1 ∣ s 0 , a 0 , s 1 , a 1 , ⋯ , s t , a t ) = P ( s t + 1 ∣ s t , a t )
智能体要做的是通过在环境中不断地尝试而学得一个策略 (policy) π \pi π ,根据这个策略,在环境状态 s s s 就能决定下一步动作 a a a 。常见的策略表示方法有以下两种:
确定性策略 表示在状态 s s s 下确定选择动作 a a a
π ( s ) = a \pi(s)=a
π ( s ) = a
随机性策略 表示状态 s s s 下选择动作 a a a 的概率
π ( a ∣ s ) = P ( A t = a ∣ S t = s ) s.t. ∑ a ∈ A π ( a ∣ s ) = 1 \pi(a|s)=\mathbb P(A_t=a|S_t=s)\quad \text{s.t. }\sum_{a\in\mathcal A} \pi(a|s)=1
π ( a ∣ s ) = P ( A t = a ∣ S t = s ) s.t. a ∈ A ∑ π ( a ∣ s ) = 1
策略的目标是指导智能体选择最优动作,从而最大化累积奖励。学习最优策略是强化学习的核心任务之一。通常情况下,强化学习一般使用随机性策略,因为确定性策略只是随机性策略的特例,概率质量全部集中在一个动作 a a a 上。
状态转移 (state-transition):是在智能体根据当前状态 s s s 做出一个动作 a a a 之后,环境在下一个时刻的状态 s ′ s' s ′ 。状态转移可以是确定的,可以用表格形式呈现
状态转移也可能是随机的,比如网格 c 3 c_3 c 3 是冰面,有概率滑落到相邻网格。我们通常认为状态转移是随机的,用条件概率表示
p ( s ′ ∣ s , a ) = P ( S t + 1 = s ′ ∣ S t = s , A t = a ) p(s'|s,a)=\mathbb P(S_{t+1}=s'|S_t=s,A_t=a)
p ( s ′ ∣ s , a ) = P ( S t + 1 = s ′ ∣ S t = s , A t = a )
值函数
强化学习任务中,一个策略的优劣取决于长期执行这一策略后得到的累积奖励,因此,学习的目的就是要找到能使长期累积奖励最大化的策略。有了目标,接下来定义累积奖励。
智能体已经观测到的所有的状态、动作、奖励链称为一个轨迹 (Trajectory)。
但不是所有任务都有一个明确的终止时间 T T T ,有些任务时连续的,它的终止时刻定义为 ∞ \infty ∞ ,所以需要定义一种计算累计奖励统一表示。即对于有限任务,在其终止时刻 T T T 之后,终止状态 s T s_T s T 循环不变。
假设环境中有一个或多个特殊的终止状态(Terminal State),当到达终止状态时,一个智能体和环境的交互过程就结束了。这一轮交互的过程称为一个回合(Episode)或试验(Trial)。一般的强化学习任务(比如下棋、游戏)都属于这种回合式任务(Episodic Task)。从当前时刻 t t t 开始的累积奖励称为回报 (Return)
G t = r t + 1 + r t + 2 + ⋯ + r T G_t=r_{t+1}+r_{t+2}+\cdots+r_T
G t = r t + 1 + r t + 2 + ⋯ + r T
如果环境中没有终止状态(比如终身学习的机器人),即 T = ∞ T=\infty T = ∞ ,称为持续 式任务(Continuing Task),其总回报也可能是无穷大。为了解决这个问题,我们可以引入一个折扣率来降低远期回报的权重。折扣回报 (Discounted Return) 定义为
G t = r t + 1 + γ r t + 2 + γ 2 r t + 3 + ⋯ G_t=r_{t+1}+\gamma r_{t+2}+\gamma^2 r_{t+3}+\cdots
G t = r t + 1 + γ r t + 2 + γ 2 r t + 3 + ⋯
这里的 γ ∈ [ 0 , 1 ] \gamma\in[0,1] γ ∈ [ 0 , 1 ] 叫做折扣率。如果 γ \gamma γ 接近于0,则累积奖励更注重当前得到的即时奖励。如果 γ \gamma γ 接近于1,则累积奖励更注重未来的奖励。折扣率是个超参数,需要手动调,折扣率的设置会影响强化学习的结果。
因为在游戏尚未结束的 t t t 时刻,策略和状态转移都有一定的随机性,G t G_t G t 是一个随机变量,其随机性来自于 t t t 时刻之后的所有状态与动作,所以使用期望回报来评估策略 π \pi π 在当前时刻后的累积奖励。
状态值函数 (state value):定义从状态 S t = s S_t=s S t = s 开始,执行策略 π \pi π 得到的期望回报
v π ( s ) = E π [ G t ∣ S t = s ] = ∑ a ∈ A π ( a ∣ s ) [ G t ∣ S t = s ] v_{\pi}(s)=\mathbb E_{\pi}[G_t|S_t=s]=\sum_{a\in\mathcal A}\pi(a|s)[G_t|S_t=s]
v π ( s ) = E π [ G t ∣ S t = s ] = a ∈ A ∑ π ( a ∣ s ) [ G t ∣ S t = s ]
状态-动作值函数 (state-action value):定义从状态 S t = s S_t=s S t = s 开始,指定动作 A t = a A_t=a A t = a 之后,执行策略 π \pi π 得到的期望回报
q π ( s , a ) = E [ G t ∣ S t = s , A t = a ] = ∑ s ′ ∈ S p ( s ′ ∣ s , a ) [ G t ∣ S t = s , A t = a ] q_{\pi}(s,a)=\mathbb E[G_t|S_t=s,A_t=a]=\sum_{s'\in\mathcal S}p(s'|s,a)[G_t|S_t=s,A_t=a]
q π ( s , a ) = E [ G t ∣ S t = s , A t = a ] = s ′ ∈ S ∑ p ( s ′ ∣ s , a ) [ G t ∣ S t = s , A t = a ]
易知,v π ( s ) v_{\pi}(s) v π ( s ) 是 q π ( s , a ) q_{\pi}(s,a) q π ( s , a ) 关于动作 a a a 的期望
v π ( s ) = ∑ a ∈ A π ( a ∣ s ) q π ( s , a ) = E π [ q π ( s , a ) ] v_{\pi}(s)=\sum_{a\in\mathcal A}\pi(a|s)q_{\pi}(s,a)=\mathbb E_\pi[q_{\pi}(s,a)]
v π ( s ) = a ∈ A ∑ π ( a ∣ s ) q π ( s , a ) = E π [ q π ( s , a )]
值函数可以看作对策略 π \pi π 的评估,因此我们就可以根据值函数来优化策略。
贝尔曼方程
状态价值贝尔曼方程 :首先考虑一个轨迹,根据回报的定义,易知
G t = R t + 1 + γ G t + 1 G_t=R_{t+1}+\gamma G_{t+1}
G t = R t + 1 + γ G t + 1
状态值函数可以拆解为
v π ( s ) = E π [ R t + 1 ∣ S t = s ] + γ E π [ G t + 1 ∣ s t = s ] v_{\pi}(s)=\mathbb E_{\pi}[R_{t+1}|S_t=s]+\gamma\mathbb E_{\pi}[G_{t+1}|s_t=s]
v π ( s ) = E π [ R t + 1 ∣ S t = s ] + γ E π [ G t + 1 ∣ s t = s ]
分别代表 t t t 时刻状态为 s s s 时,执行所有动作的可能奖励和 t + 1 t+1 t + 1 时刻的所有可能回报。
其中,等式第一部份
E π [ R t + 1 ∣ S t = s ] = ∑ a ∈ A π ( a ∣ s ) ∑ s ′ ∈ S p ( s ′ ∣ s , a ) r \mathbb E_{\pi}[R_{t+1}|S_t=s]=\sum_{a\in\mathcal A}\pi(a|s)\sum_{s'\in\mathcal S}p(s'|s,a)r
E π [ R t + 1 ∣ S t = s ] = a ∈ A ∑ π ( a ∣ s ) s ′ ∈ S ∑ p ( s ′ ∣ s , a ) r
根据马尔可夫性质,等式第二部份
E [ G t + 1 ∣ S t = s ] = E [ G t + 1 ∣ S t + 1 = s ′ ] = ∑ s ′ ∈ S E [ G t + 1 ∣ S t + 1 = s ′ ] p ( s ′ ∣ s ) = ∑ s ′ ∈ S v π ( s ′ ) ∑ a ∈ A p ( s ′ ∣ s , a ) π ( a ∣ s ) \begin{aligned}
\mathbb E[G_{t+1}|S_t=s]&=\mathbb E[G_{t+1}|S_{t+1}=s'] \\
&=\sum_{s'\in\mathcal S}\mathbb E[G_{t+1}|S_{t+1}=s']p(s'|s)\\
&=\sum_{s'\in\mathcal S}v_{\pi}(s')\sum_{a\in\mathcal A}p(s'|s,a)\pi(a|s)
\end{aligned}
E [ G t + 1 ∣ S t = s ] = E [ G t + 1 ∣ S t + 1 = s ′ ] = s ′ ∈ S ∑ E [ G t + 1 ∣ S t + 1 = s ′ ] p ( s ′ ∣ s ) = s ′ ∈ S ∑ v π ( s ′ ) a ∈ A ∑ p ( s ′ ∣ s , a ) π ( a ∣ s )
最终得到
v π ( s ) = ∑ a ∈ A π ( a ∣ s ) ∑ s ′ ∈ S p ( s ′ ∣ s , a ) [ r + γ v π ( s ′ ) ] , ∀ s ∈ S \textcolor{red}{v_{\pi}(s)}=\sum_{a\in\mathcal A}\pi(a|s)\sum_{s'\in\mathcal S}p(s'|s,a)[r+\gamma\textcolor{red}{v_{\pi}(s')}],\quad \forall s\in\mathcal S
v π ( s ) = a ∈ A ∑ π ( a ∣ s ) s ′ ∈ S ∑ p ( s ′ ∣ s , a ) [ r + γ v π ( s ′ ) ] , ∀ s ∈ S
其中,r r r 表示即时奖励。 v π ( s ′ ) v_{\pi}(s') v π ( s ′ ) 表示下一时刻状态 S t + 1 = s ′ S_{t+1}=s' S t + 1 = s ′ 的状态值函数。上式称为贝尔曼方程 (Bellman equation)。贝尔曼方程提供了计算值函数的递归公式,是求解最优策略和值函数的基础。
贝尔曼方程的期望形式如下:
v π ( s ) = E a ∼ π ( a ∣ s ) , s ′ ∼ p ( s ′ ∣ s , a ) [ r + γ v π ( s ′ ) ] , ∀ s ∈ S v_{\pi}(s)=\mathbb E_{a\sim\pi(a|s),s'\sim p(s'|s,a)}[r+\gamma v_{\pi}(s')],\quad \forall s\in\mathcal S
v π ( s ) = E a ∼ π ( a ∣ s ) , s ′ ∼ p ( s ′ ∣ s , a ) [ r + γ v π ( s ′ )] , ∀ s ∈ S
令
r π ( s ) = ∑ a ∈ A π ( a ∣ s ) ∑ s ′ ∈ S p ( s ′ ∣ s , a ) r p π ( s ′ ∣ s ) = ∑ a ∈ A π ( a ∣ s ) p ( s ′ ∣ s , a ) r_{\pi}(s)=\sum_{a\in\mathcal A}\pi(a|s)\sum_{s'\in\mathcal S}p(s'|s,a)r \\
p_{\pi}(s'|s)=\sum_{a\in\mathcal A}\pi(a|s)p(s'|s,a)
r π ( s ) = a ∈ A ∑ π ( a ∣ s ) s ′ ∈ S ∑ p ( s ′ ∣ s , a ) r p π ( s ′ ∣ s ) = a ∈ A ∑ π ( a ∣ s ) p ( s ′ ∣ s , a )
对任意的状态 s i s_i s i ,贝尔曼方程可重写为
v π ( s i ) = r π ( s i ) + γ ∑ s j ∈ S p π ( s j ∣ s i ) v π ( s j ) v_{\pi}(s_i)=r_{\pi}(s_i)+\gamma\sum_{s_j\in\mathcal S}p_{\pi}(s_j|s_i)v_{\pi}(s_j)
v π ( s i ) = r π ( s i ) + γ s j ∈ S ∑ p π ( s j ∣ s i ) v π ( s j )
于是得到贝尔曼方程的矩阵形式
v π = r π + γ P π v π \mathbf v_{\pi}=\mathbf r_{\pi}+\gamma P_{\pi}\mathbf v_{\pi}
v π = r π + γ P π v π
其中
v π = [ v π ( s 1 ) ⋮ v π ( s n ) ] , r π = [ r π ( s 1 ) ⋮ r π ( s n ) ] , P π = [ p π ( s 1 ∣ s 1 ) ⋯ p π ( s n ∣ s 1 ) ⋮ ⋱ ⋮ p π ( s 1 ∣ s n ) ⋯ p π ( s n ∣ s n ) ] \mathbf v_{\pi}=\begin{bmatrix}v_{\pi}(s_1) \\ \vdots \\ v_{\pi}(s_n)\end{bmatrix},\
\mathbf r_{\pi}=\begin{bmatrix}r_{\pi}(s_1) \\ \vdots \\ r_{\pi}(s_n)\end{bmatrix},\
P_{\pi}=\begin{bmatrix}
p_{\pi}(s_1|s_1)&\cdots& p_{\pi}(s_n|s_1)\\
\vdots &\ddots &\vdots \\
p_{\pi}(s_1|s_n)&\cdots& p_{\pi}(s_n|s_n)\\
\end{bmatrix}
v π = v π ( s 1 ) ⋮ v π ( s n ) , r π = r π ( s 1 ) ⋮ r π ( s n ) , P π = p π ( s 1 ∣ s 1 ) ⋮ p π ( s 1 ∣ s n ) ⋯ ⋱ ⋯ p π ( s n ∣ s 1 ) ⋮ p π ( s n ∣ s n )
下面是一个简单的求解状态价值的示例
下面使用状态价值评价策略
行为值函数的贝尔曼方程 :比较关系式
v π ( s ) = ∑ a ∈ A π ( a ∣ s ) q π ( s , a ) v_{\pi}(s)=\sum_{a\in\mathcal A}\pi(a|s)q_{\pi}(s,a)
v π ( s ) = a ∈ A ∑ π ( a ∣ s ) q π ( s , a )
和状态值函数的贝尔曼方程我们可以得到关于行为值函数的贝尔曼方程
q π ( s , a ) = ∑ s ′ ∈ S p ( s ′ ∣ s , a ) [ r + γ v π ( s ′ ) ] \textcolor{red}{q_{\pi}(s,a)}=\sum_{s'\in\mathcal S}p(s'|s,a)[r+\gamma\textcolor{red}{v_{\pi}(s')}]
q π ( s , a ) = s ′ ∈ S ∑ p ( s ′ ∣ s , a ) [ r + γ v π ( s ′ ) ]
期望形式为
q π ( s , a ) = E s ′ ∼ p ( s ′ ∣ s , a ) [ r + γ v π ( s ′ ) ] q_{\pi}(s,a)=\mathbb E_{s'\sim p(s'|s,a)}[r+\gamma v_{\pi}(s')]
q π ( s , a ) = E s ′ ∼ p ( s ′ ∣ s , a ) [ r + γ v π ( s ′ )]
我们可以通过 v π ( s ) v_{\pi}(s) v π ( s ) 计算出所有的 q π ( s , a ) q_{\pi}(s,a) q π ( s , a ) ,这些 q q q 值量化每个动作的好坏。有了这些 q q q 值,智能体就可以根据 q q q 来做决策,选出最好的动作。比如,在状态 s 1 s_1 s 1 时应该选择动作q q q 值最大的动作 ↓ \downarrow ↓ 。
贝尔曼最优方程
最优策略 :对某个策略的累积奖赏进行评估后,若发现它并非最优策略,则当然希望对其进行改进。理想的策略应能最大化累积奖赏
π ∗ = arg max π v π ( s ) , ∀ s ∈ S \pi^*=\arg\max_{\pi}v_{\pi}(s),\quad\forall s\in\mathcal S
π ∗ = arg π max v π ( s ) , ∀ s ∈ S
一个强化学习任务可能有多个最优策略,所有最优策略拥有同样的值函数,称为最优值函数
v ∗ ( s ) = max π v π ( s ) q ∗ ( s , a ) = max π q π ( s , a ) v^*(s)=\max_{\pi}v_{\pi}(s) \\
q^*(s,a)=\max_{\pi}q_{\pi}(s,a)
v ∗ ( s ) = π max v π ( s ) q ∗ ( s , a ) = π max q π ( s , a )
贝尔曼最优方程 (Bellman optimality equations) :最优值函数对应的贝尔曼方程
v ∗ ( s ) = max π ∑ a ∈ A π ( a ∣ s ) ∑ s ′ ∈ S p ( s ′ ∣ s , a ) [ r + γ v π ( s ′ ) ] = max π ∑ a ∈ A π ( a ∣ s ) q π ( s , a ) \begin{aligned}
v^*(s)=&\max_{\pi}\sum_{a\in\mathcal A}\pi(a|s)\sum_{s'\in\mathcal S}p(s'|s,a)[r+\gamma v_{\pi}(s')] \\
=&\max_{\pi}\sum_{a\in\mathcal A}\pi(a|s)q_{\pi}(s,a)
\end{aligned}
v ∗ ( s ) = = π max a ∈ A ∑ π ( a ∣ s ) s ′ ∈ S ∑ p ( s ′ ∣ s , a ) [ r + γ v π ( s ′ )] π max a ∈ A ∑ π ( a ∣ s ) q π ( s , a )
因为 ∑ π ( a ∣ s ) = 1 \sum\pi(a|s)=1 ∑ π ( a ∣ s ) = 1 ,易知最优的策略
π ∗ ( a ∣ s ) = { 1 , if a = a ∗ ( s ) 0 , otherwise \pi^*(a|s)=\begin{cases}1,&\text{if }a=a^*(s) \\ 0, &\text{otherwise}\end{cases}
π ∗ ( a ∣ s ) = { 1 , 0 , if a = a ∗ ( s ) otherwise
其中动作
a ∗ ( s ) = arg max a ∈ A q ∗ ( s , a ) a^*(s)=\arg\max_{a\in\mathcal A} q^*(s,a)
a ∗ ( s ) = arg a ∈ A max q ∗ ( s , a )
最优的状态值函数
v ∗ ( s ) = max a ∈ A q ∗ ( s , a ) v^*(s)=\max_{a\in\mathcal A}q^*(s,a)
v ∗ ( s ) = a ∈ A max q ∗ ( s , a )
上述贝尔曼最优方程的唯一解就是最优值函数。
然后,可以得到 q q q 值的贝尔曼最优方程为
q ∗ ( s , a ) = ∑ s ′ ∈ S p ( s ′ ∣ s , a ) [ r + γ v ∗ ( s ′ ) ] q^*(s,a)=\sum_{s'\in\mathcal S}p(s'|s,a)[r+\gamma v^*(s')]
q ∗ ( s , a ) = s ′ ∈ S ∑ p ( s ′ ∣ s , a ) [ r + γ v ∗ ( s ′ )]
进一步写为
q ∗ ( s , a ) = ∑ s ′ ∈ S p ( s ′ ∣ s , a ) [ r + γ max a ∈ A q ∗ ( s ′ , a ′ ) ] q^*(s,a)=\sum_{s'\in\mathcal S}p(s'|s,a)[r+\gamma\max_{a\in\mathcal A}q^*(s',a')]
q ∗ ( s , a ) = s ′ ∈ S ∑ p ( s ′ ∣ s , a ) [ r + γ a ∈ A max q ∗ ( s ′ , a ′ )]
附录
模仿学习
强化学习任务中多步决策的搜索空间巨大,基于累积奖赏来学习很多步之前的合适决策非常困难,而直接模仿人类专家的 state-action 可显著缓解这一困难,我们称其为直接模仿学习。
假定我们获得了一批人类专家的决策轨迹数据,我们可将所有轨迹上的所有 state-action 对抽取出来,构造出一个新的数据集合
D = { ( s 1 , a 1 ) , ( s 2 , a 2 ) , ⋯ , ( s N , a N ) } D=\{(s_1,a_1),(s_2,a_2),\cdots,(s_N,a_N)\}
D = {( s 1 , a 1 ) , ( s 2 , a 2 ) , ⋯ , ( s N , a N )}
有了这样的数据,就相当于告际机器在什么状态下应选择什么动作,于是可利用监督学习来学得符合人类专家决策轨迹数据的策略。即把状态作为特征,动作作为标记;然后,对这个新构造出的数据集合 D D D 使用分类(对于离散动作)或回归(对于连续动作)算法即可学得策略模型。学得的这个策略模型可作为机器进行强化学习的初始策略,再通过强化学习方法基于环境反馈进行改进,从而获得更好的策略。
多臂赌博机问题
多臂赌博机问题 :(K-Armed Bandit Problem) 给定 K K K 个赌博机,拉动每个赌博机的拉杆,赌博机会按照一个事先设定的概率掉出钱,每个赌博机掉钱的概率分布不一样。现给定有限的机会次数 T T T ,如何玩这些赌博机才能使得累积收益最大化。多臂赌博机问题在广告推荐、投资组合等领域有着非常重要的应用。