人通过与世界(环境)的交互认识世界、获得反馈。
模仿这个范式,人们提出了强化学习的方法。
奠基#
先介绍强化学习中的几个概念
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 并不明智。
下图直观的展示了强化学习的原理。
搞了半天,强化学习到底是干嘛的?
强化学习的目标在于:通过不断的交互,优化 Agent 的行动策略,通过选择更好的 Action 来最大化 Reward 的和 (每一步的 Reward 都要加进来)
建模#
我们一般用马尔可夫决策过程,来建模强化学习。
在进行下一步之前,请阅读 马尔科夫(Markov)和强化学习(RL)的关系 - 知乎
此处给出一个 马尔可夫过程示意图
图源 https://towardsdatascience.com/markov-chain-analysis-and-simulation-using-python-4507cee0b06e
有几个点需要再提一下:
- 马尔可夫过程 Markov Process 由二元组 组成,马尔可夫决策过程 Markov Decision Process 由四元组 组成。有时还会带上 Reward 的折扣因子 , 这个下面会提到。
- 由于随机性,给定初始态和终态,马尔可夫过程 Markov Process 对应的马尔可夫链 Markov Chain 不唯一。
重要概念#
在 Agent 与 Environment 的交互过程中。在某一个时刻 t:
-
Agent 根据对于环境的观测 和收到的激励 来构造 Agent State (通常,没有特别说明,可认为 ),并决定如何采取行动(即向环境提交 )
-
环境接收到 Agent 提交的 Action ,需要承受 这个 Action 带来的 “代价”,于是向 Agent 反馈回更新后的 和
如此循环往复。
个体与环境交互,产生了下面的交互轨迹。我们记为 。 这个交互轨迹存储了每一次交互下的 Observation, Action 和 Reward。
通过这个 序列,我们可以构造出 Agent State
当环境满足 Fully Observable 的性质时,我们认为 Agent State 所以也可以将上式 中的所有的 O 符号改为代表 State 的 S 符号。(很多材料中也直接使用 S 符号)
此时,就无需使用 来构造 了,直接将 当做 即可。
我们根据 State 来决定采取什么样的 Action,于是我们抽象出策略函数 ,策略函数 以 State 作为输入,然后输出对应的 Action,将其记作 有时也简写为
我们假设状态空间 S 是离散的,且只可能有 |S| 种不同的状态。同理,假设动作空间 A 也是离散的,并且只可能有 |A| 种不同的动作。
在这样的设定下,我们应该如何理解策略函数 ?
系统当前处于 状态,
在状态 的条件下,应该采取什么样的 Action(选择哪个 a)就是策略函数 所考虑的内容。
策略函数可以理解为一类复合函数。 除了随机策略以外,我们可以大致认为,策略函数包括两个部分:action 评估和 action 选择
action 的评估一般使用 Q value 来做
action 的选择一般使用 argmax 或者 -greedy 来做
后面碰到了再说。
个体或者说 Agent 通过与环境的交互,获得 Reward,我们上面提到,强化学习的目标在于,我们需要通过选择 Action(也就是说找到合适的 policy)来尽可能使得 Total Reward 最大。
我们将 Total Reward(有的材料也称 Return 或 future reward)定义为
有几点需要注意:
-
Total Reward,或者说总 Reward,在字面上理应是从 开始加,而这里为什么是从 开始加的?因为 的值已经固定,是常数,是不可被优化的。所以我们着眼于 Future Reward 更多一些。
-
式子中的 即为上面提到的折扣因子 discount factor 通常,discount factor 的范围被限定在 之间。
如果 值较小,接近于 0 ,由于 随着 k 的增大, 会越来越小,即 的权重会越来越小。这意味着,我们更加偏向于考虑短期影响,而不太考虑长期的影响 。
如果 值比较接近 1,代表我们会更多地将长期影响纳入考虑。
我们定义状态价值函数 State Value Function 或称 Value Function 或 Value 为【从状态 s 出发,遵循策略 所能获得的期望累计回报】,状态价值函数用于衡量状态 s 有多 “好”,定义如下:
第一行的等号,是状态价值函数的定义式。
第二行和第三行的等式,是将 Return 按定义展开后,得到的递归形式,或者说是 Bellman Equation 的形式
第四行将 Bellman Equation 打开,等式中的 和 需要注意
是状态转移概率。在马尔可夫决策过程中应该有所描述。具体而言:
我们在状态 s 下,依据策略函数 选择一个 a 作为行为提交给 environment 后,会导致环境的观测也就是 observation 发生变化,所以 state 也会跟着变化。
但动作 a 造成的影响,并不是固定的,我们不能保证状态 s 在动作 a 的作用下,总是能变化到某个固定的状态 ,也就是说 可以等于 state_1, state_2, state_3 或是其他某个 state_i,因此会对应一个概率分布 同理我们有
我们定义动作价值函数 Action Value Function 为【从状态 s 出发,采取动作 a 后,遵循策略 所能获得的期望累计回报】
与 类似,不再另作赘述。
我们定义优势函数 Advantage Function 为 Q 和 V 的差值。
表示在状态 s 下,采取动作 a 比遵循当前策略 更好或更差的程度。 优势函数的主要用途是优化策略,帮助 Agent 更明确地了解哪些动作在当前状态下是有利的。
如何理解优势函数(Advantage Function)?- 知乎
Model-based 与 Model-free
所谓 Model 包括状态转移概率,以及 Reward function。
如果 Model 是已知的,就是 model-based 我们将在完全信息下,进行规划。也就是说,我们可以用动态规划算法 Dynamic Prograrmming,学习所求的 policy
知道 Model 就说明,当 Action 和 State 确定时,我们能够知道状态转移概率 以及对应的 确定值。
相反,如果 leanring 是不依赖于 model 的,也就是不知道 model 那么就称为 model-free。比如 Policy Gradient 方法,就是 Model free 的
后面碰到再细谈。
On-Policy 和 Off-Policy
On-Policy 是说 episode 采样时(behavior policy)和 policy 优化时(target policy)是同一种策略。
Off-Policy 则代表两种策略不同。
后面碰到再细谈。