Sunforger

Sunforger

强化学习之基础概念

人通过与世界(环境)的交互认识世界、获得反馈。

image

图源 https://storage.googleapis.com/deepmind-media/UCL%20x%20DeepMind%202021/Lecture%201%20-%20introduction.pdf

模仿这个范式,人们提出了强化学习的方法。

奠基#

先介绍强化学习中的几个概念

Agent, 直译为代理或智能体,可以理解成决策者、决策器。

Environment 即环境,Agent 通过与环境交互,获取反馈。

反馈这个词很有意思,它有着丰富的内涵。具体来说,Agent 的每一个决策,或者说每一个 Action 都会产生代价。

比如:它会导致环境 Environment 的状态发生变化。这时候,智能体 Agent 对于环境的观测 Observation 就会发生改变。

我们基于获得的环境观测 Observation,来构造 State (Agent State)

对于 Fully Observable Environments 我们可以认为 Agent State = Observation = environment
一般而言,没有特别说明的情况下,默认所有环境都是完全可观测,也就是 Fully Observable 的

采取一个 Action 产生的代价不仅仅局限于环境状态的改变,Action 本身也具有好坏之分。我们以 Reward 来衡量决策 / 动作 Action 的质量。

如果一个 Action 有正值的 Reward,说明至少在短期来看,这个 Action 是好的。反之如果 Reward 为负值,则证明这个 Action 并不明智。

下图直观的展示了强化学习的原理。

image

搞了半天,强化学习到底是干嘛的?

强化学习的目标在于:通过不断的交互,优化 Agent 的行动策略,通过选择更好的 Action 来最大化 Reward 的和 (每一步的 Reward 都要加进来)

建模#

我们一般用马尔可夫决策过程,来建模强化学习。

在进行下一步之前,请阅读 马尔科夫(Markov)和强化学习(RL)的关系 - 知乎

此处给出一个 马尔可夫过程示意图

image

图源 https://towardsdatascience.com/markov-chain-analysis-and-simulation-using-python-4507cee0b06e

有几个点需要再提一下:

  1. 马尔可夫过程 Markov Process 由二元组 M=(S,P)M=(S, P) 组成,马尔可夫决策过程 Markov Decision Process 由四元组 M=(S,A,P,R)M=(S,A,P,R) 组成。有时还会带上 Reward 的折扣因子 γ\gamma, 这个下面会提到。
  2. 由于随机性,给定初始态和终态,马尔可夫过程 Markov Process 对应的马尔可夫链 Markov Chain 不唯一。

重要概念#

在 Agent 与 Environment 的交互过程中。在某一个时刻 t:

  1. Agent 根据对于环境的观测 OtO_t 和收到的激励 RtR_t 来构造 Agent State StS_t(通常,没有特别说明,可认为 St=OtS_t=O_t),并决定如何采取行动(即向环境提交 AtA_t

  2. 环境接收到 Agent 提交的 Action AtA_t,需要承受 AtA_t 这个 Action 带来的 “代价”,于是向 Agent 反馈回更新后的 Ot+1O_{t+1}Rt+1R_{t+1}

如此循环往复。


个体与环境交互,产生了下面的交互轨迹。我们记为 Ht\mathcal H_t 这个交互轨迹存储了每一次交互下的 Observation, Action 和 Reward。

Ht=O0,A0,R1,O1,A1,,Ot1,At1,Rt,Ot\mathcal H_t = O_0, A_0, R_1,O_1, A_1,\cdots, O_{t-1}, A_{t-1}, R_t, O_t

通过这个 Ht\mathcal H_t 序列,我们可以构造出 Agent State StS_t

当环境满足 Fully Observable 的性质时,我们认为 Agent State St=OtS_t = O_t 所以也可以将上式 Ht\mathcal H_t 中的所有的 O 符号改为代表 State 的 S 符号。(很多材料中也直接使用 S 符号)

此时,就无需使用 Ht\mathcal H_t 来构造 StS_t 了,直接将 OtO_t 当做 StS_t 即可。


我们根据 State 来决定采取什么样的 Action,于是我们抽象出策略函数 π\pi,策略函数 π\pi 以 State 作为输入,然后输出对应的 Action,将其记作 π(as)\pi(a|s) 有时也简写为 π\pi

我们假设状态空间 S 是离散的,且只可能有 |S| 种不同的状态。同理,假设动作空间 A 也是离散的,并且只可能有 |A| 种不同的动作。

在这样的设定下,我们应该如何理解策略函数 π(as)\pi(a|s)

系统当前处于 ss 状态,sSs\in S

在状态 ss 的条件下,应该采取什么样的 Action(选择哪个 a)就是策略函数 π(as)\pi(a|s) 所考虑的内容。

策略函数可以理解为一类复合函数。 除了随机策略以外,我们可以大致认为,策略函数包括两个部分:action 评估和 action 选择

action 的评估一般使用 Q value 来做

action 的选择一般使用 argmax 或者 ϵ\epsilon-greedy 来做

后面碰到了再说。


个体或者说 Agent 通过与环境的交互,获得 Reward,我们上面提到,强化学习的目标在于,我们需要通过选择 Action(也就是说找到合适的 policy)来尽可能使得 Total Reward 最大。

我们将 Total Reward(有的材料也称 Return 或 future reward)定义为 GtG_t

Gt=k=0γkRt+k+1=Rt+1+γRt+2+γ2Rt+3++γkRt+k+1+G_t = \sum_{k=0}^\infty {\color{red} \gamma^k}R_{t+k+1} = R_{t+1} + {\color{red} \gamma } R_{t+2} + {\color{red} \gamma^2}R_{t+3} + \cdots + {\color{red} \gamma^k}R_{t+k+1} + \cdots

有几点需要注意:

  1. Total Reward,或者说总 Reward,在字面上理应是从 R1R_1 开始加,而这里为什么是从 Rt+1R_{t+1} 开始加的?因为 R1RtR_1 \sim R_t 的值已经固定,是常数,是不可被优化的。所以我们着眼于 Future Reward 更多一些。

  2. 式子中的 γ\gamma 即为上面提到的折扣因子 discount factor γ\gamma 通常,discount factor 的范围被限定在 0<γ<10<\gamma<1 之间。

    如果 γ\gamma 值较小,接近于 0 ,由于 随着 k 的增大,γk\gamma^k 会越来越小,即 Rt+k+1R_{t+k+1} 的权重会越来越小。这意味着,我们更加偏向于考虑短期影响,而不太考虑长期的影响 。

    如果 γ\gamma 值比较接近 1,代表我们会更多地将长期影响纳入考虑。


我们定义状态价值函数 State Value Function 或称 Value Function 或 Value 为【从状态 s 出发,遵循策略 π\pi 所能获得的期望累计回报】,状态价值函数用于衡量状态 s 有多 “好”,定义如下:

Vπ(s)=Eπ[GtSt=s]=Eπ[Rt+1+Rt+2+St=s]=Eπ[Rt+1+Gt+1St=s]=Eπ[Rt+1+Vπ(St+1)St=s]=aπ(as)spssa[rssa+γVπ(s)]\begin{align*} V^\pi(s) &= \mathbb E_\pi[G_t|S_t=s] {\color{red}=\mathbb E_\pi[R_{t+1}+R_{t+2}+\cdots|S_t = s] } \\ &=\mathbb E_\pi [R_{t+1}+G_{t+1}|S_t = s] \\ &=\mathbb E_\pi[R_{t+1}+V^\pi(S_{t+1})|S_t = s]\\ &={\color{red} \sum_a\pi(a|s)\sum_{s^\prime}p_{ss^\prime}^a \left[ r_{ss^\prime}^a + \gamma V^\pi(s^\prime) \right] } \end{align*}

第一行的等号,是状态价值函数的定义式。
第二行和第三行的等式,是将 Return GtG_t 按定义展开后,得到的递归形式,或者说是 Bellman Equation 的形式
第四行将 Bellman Equation 打开,等式中的 pssap_{ss^\prime}^arssar_{ss^\prime}^a 需要注意

pssap_{ss^\prime}^a 是状态转移概率。在马尔可夫决策过程中应该有所描述。具体而言:

我们在状态 s 下,依据策略函数 π(as)\pi(a|s) 选择一个 a 作为行为提交给 environment 后,会导致环境的观测也就是 observation 发生变化,所以 state 也会跟着变化。

但动作 a 造成的影响,并不是固定的,我们不能保证状态 s 在动作 a 的作用下,总是能变化到某个固定的状态 ss^\prime,也就是说 ss^\prime 可以等于 state_1, state_2, state_3 或是其他某个 state_i,因此会对应一个概率分布 pssap_{ss^\prime}^a 同理我们有 rssar_{ss^\prime}^a


我们定义动作价值函数 Action Value Function 为【从状态 s 出发,采取动作 a 后,遵循策略 π\pi 所能获得的期望累计回报】

Qπ(s,a)=Eπ[GtSt=s,At=a]=Eπ[Rt+1+Rt+2+St=s,At=a]=Eπ[Rt+1+Gt+1St=s,At=a]=Eπ[Rt+1+Qπ(St+1,At+1)St=s,At=a]=spssa[rssa+γaπ(as)Qπ(s,a)]\begin{align*} Q^\pi(s,a) &= \mathbb E_\pi[G_t|S_t=s, A_t=a] {\color{red}=\mathbb E_\pi[R_{t+1}+R_{t+2}+\cdots|S_t = s, A_t = a] } \\ &=\mathbb E_\pi [R_{t+1}+G_{t+1}|S_t = s, A_t = a] \\ &=\mathbb E_\pi[R_{t+1}+Q^\pi(S_{t+1}, A_{t+1})|S_t = s, A_t=a]\\ &={\color{red} \sum_{s^\prime}p_{ss^\prime}^a \left[ r_{ss^\prime}^a +\gamma \sum_{a^\prime} \pi(a^\prime|s^\prime) Q^\pi(s^\prime, a^\prime)\right] } \end{align*}

Vπ(s)V^\pi(s) 类似,不再另作赘述。


我们定义优势函数 Advantage Function 为 Q 和 V 的差值。

A(s,a)=Q(s,a)V(s)A(s,a) = Q(s, a) - V(s)

表示在状态 s 下,采取动作 a 比遵循当前策略 π\pi 更好或更差的程度。 优势函数的主要用途是优化策略,帮助 Agent 更明确地了解哪些动作在当前状态下是有利的。

如何理解优势函数(Advantage Function)?- 知乎


Model-based 与 Model-free

所谓 Model 包括状态转移概率,以及 Reward function。

如果 Model 是已知的,就是 model-based 我们将在完全信息下,进行规划。也就是说,我们可以用动态规划算法 Dynamic Prograrmming,学习所求的 policy

知道 Model 就说明,当 Action 和 State 确定时,我们能够知道状态转移概率 pssap_{ss^\prime}^a 以及对应的 rssar_{ss^\prime}^a 确定值。

相反,如果 leanring 是不依赖于 model 的,也就是不知道 model 那么就称为 model-free。比如 Policy Gradient 方法,就是 Model free 的

后面碰到再细谈。


On-Policy 和 Off-Policy

On-Policy 是说 episode 采样时(behavior policy)和 policy 优化时(target policy)是同一种策略。

Off-Policy 则代表两种策略不同。

后面碰到再细谈。

相关资料#

A (Long) Peek into Reinforcement Learning

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。