强化学习入门(二)强化学习MDP四元组,Q表格的概念和更新策略

本文内容源自百度强化学习 7 日入门课程学习整理
感谢百度 PARL 团队李科浇老师的课程讲解

文章目录

  • 一、强化学习MDP四元组
    • 1.1 状态转移概率
    • 1.2 如何描述环境
    • 1.3 Mode-free 试错探索
  • 二、Q 表格
    • 1.1 Q 值表格概念
    • 1.2 Q 表格的目标导向型
    • 1.3 实践:悬崖问题(快速到达目的地)
  • 三、强化学习更新 Q 表格
    • 3.1 Temporal Difference 时序差分(TD单步更新)
    • 3.2 与环境交互
  • 四、相关方法和策略
    • 4.1 Epsilon Greedy 方法
    • 4.2 On-Policy 和 Off-Policy 策略


一、强化学习MDP四元组

S:状态 state
A:动作 action
R:奖励 reward
P:状态转移概率 probability

1.1 状态转移概率

p [ s t + 1 , r t ∣ s t , a t ] p[s_{t+1} , r_t | s_t, a_t] p[st+1,rtst,at]

在 t 时刻,处于 s t s_t st 的状态,选择了 a t a_t at 的动作,的情况下:

转移到 s t + 1 s_{t+1} st+1 状态,并且获得 r t r_t rt 奖励,的概率

该状态转移概率符合 “马尔可夫”

因为 s t + 1 s_{t+1} st+1 的状态仅仅与 s t s_t st 相关,与 s t − 1 s_{t-1} st1 ,还是 s t − 2 s_{t-2} st2 都没有关系

还取决于智能体与环境交互的动作 a t a_t at,有了一个决策过程在里面

所以这个过程叫做 “马尔可夫决策过程” Markov Decision Process,简称 MDP,是序列决策的经典表达方式

根据状态(环境)变化,产生的一系列的决策过程,就是与环境的交互产生的经验

1.2 如何描述环境

使用 P 函数 和 R 函数

  • P函数:probability function: p [ s t + 1 , r t ∣ s t , a t ] p[s_{t+1} , r_t | s_t, a_t] p[st+1,rtst,at]
    • 反映了一个环境的随机性:一个状态下作出决策后,可能有多种结果,不同结果存在不同的概率
  • R函数:reward function: r [ s t , a t ] r[s_t,a_t] r[st,at]

在动态规划下,P函数和R函数都是已知的,即 Model-based,我们可以根据现有条件作出最优规划

1.3 Mode-free 试错探索

在强化学习的实际环境中,P 函数 和 R 函数都是未知的,所以是 Mode-free

价值函数 V(st) 表示在 t 时刻的状态的优劣

用 Q(st , at) 值表示,在 st 状态下做动作 at 能拿到(最大)的奖励(的概率)

二、Q 表格

1.1 Q 值表格概念

Q 表示状态动作价值

是累积的经验,取得成功所需的知识

例如:

在某一状态 S 下,我们可以采取 2 个动作:A 和 B

采取 A 动作以后,100% 获得 10 分

采取 B 动作以后,90% 获得 5 分,10% 获得 15 分

那么 Q(S,A) = 100% * 10 = 10,Q(S,B) = 90% * 5 + 10% * 15 = 6

以上的例子中,之所以我们知道概率分布,是因为这个 Q 表是训练后的结果

Q 表中累积的学习到的知识,所以应用的时候,我们很自然的会在 S 状态下选择 A 的动作

以获得最大的回报

但是上面的例子仅仅是一次选择

在实际中,我们会面对多次选择,于是我们要看的是做了一系列选择以后,最终的回报最大的,才是最优路径

所以要把(预估)后续的所有 收益 及其对应 概率 ,都累计到当前状态下做计算

所以在强化学习中,环境给到的 reward ,即环境的反馈就非常重要!

1.2 Q 表格的目标导向型

我们要看的是总收益,来更新 Q 表格

例子:救护车闯红灯

假设每个交通灯,正常通过是 0 分,闯红灯时 -1 分,一共有 10 个红绿灯路口

那么对于一个普通的汽车来说,通过这一段路最高的分数就是 0,即每次都不闯红灯

但是对于救护车来说,我要用最短的时间把病人及时送到医院,可以获得 1000 分,病人死亡则 0 分

这时候最优的方法是每次都闯红灯,前面获得 -10,最后获得 1000,总分 990

这个例子中每一步设定的 Q(s,a) 不能只看当前这一步的收益,要看未来总收益:

G = R1+R2+R3+R4+…+RT

例子:股票投资

关注累积收益,但是股票交易是永续进行的,所以无法考虑未来收益只和

我们无法得到 t 时刻预期的未来总收益:

Gt= Rt+1+Rt+2+Rt+3+…

所以要引如 “衰减因子”

Gt= Rt+1+γRt+22Rt+3+…

这里的 衰减因子 γ 取值范围 0~1,等于 1 的时候即看到最后一步,等于 0 的时候即只看后一步

约后面的收益对当前的价值影响越小

1.3 实践:悬崖问题(快速到达目的地)

问题描述:

在一张地图上,我们要从起点 S 到达终点 G,每走一步 reward 为 -1(因为我们希望越快到达越好)
掉下悬崖一次 reward 为 -100(所以我们希望避免发生),并回到起点
到达终点 G 的时候游戏结束

设定 reward 的衰减因子 γ

当前时刻 t,可获得的收益预期总计:
Gt = Rt+1 + γRt+2 + γ2Rt+3 + … = ∑ k = 0 ∞ γ k R t + k + 1 \sum_{k=0}^{\infty}γ^kR_{t+k+1} k=0γkRt+k+1

  • γ 取 0 代表目光短浅

  • γ 取 1 代表目光过于长远

我们选择一条路走完以后,就可以知道这条路径上每一个状态路径的价值

所以多次尝试以后,就可以做出更优的选择

而不断地尝试,即在更新 Q 值表格,由这个表格指导每一步动作

所以这个表格的维度是 (状态总数,每个状态下的动作总数),初始化的时候都为 0

Agent 和环境的交互,就是不断更新 Q 表格


三、强化学习更新 Q 表格

核心:用下一个状态的 Q 值来更新当前状态的 Q 值
这里利用到了统计里面的 Bootstrapping (自举)算法
强化学习中叫做:时序差分更新方法

我的理解是:

由于每一次都用下一个状态来更新这一个状态,于是最后的累积 reward 会向前传递,最终影响整个路径
类似于多重条件反射(反射链条)

例子:斯坦福的状态价值迭代小游戏

https://cs.stanford.edu/people/karpathy/reinforcejs/gridworld_td.html

可以看到游戏中,小球不断试错,最后产生价值判断,终点的 +1 reward 会不断影响周边的格子

然后这个影响力会往起点延伸,最终形成一条最优路径

3.1 Temporal Difference 时序差分(TD单步更新)

公式:

Q ( S t , A t )   ←   Q ( S t , A t )   +   α [ R t + 1   +   γ Q ( S t + 1 , A t + 1 )   +   Q ( S t , A t ) ] Q(S_t,A_t)\ \leftarrow\ Q(S_t,A_t)\ +\ α[R_{t+1}\ +\ γQ(S_{t+1},A_{t+1})\ +\ Q(S_t,A_t)] Q(St,At)  Q(St,At) + α[Rt+1 + γQ(St+1,At+1) + Q(St,At)]

  • 当前值: Q ( S t , A t ) Q(S_t,A_t) Q(St,At)

  • 目标值: R t + 1   +   γ Q ( S t + 1 , A t + 1 ) R_{t+1}\ +\ γQ(S_{t+1},A_{t+1}) Rt+1 + γQ(St+1,At+1)

    • 我们希望 “当前值” 可以不断逼近 “目标值”

    • 目标值:即未来收益只和(reward)

    • T a r g e t   =   G t   =   R t + 1   +   γ R t + 2   +   γ 2 R t + 3   =   ∑ k = 0 ∞ γ k R t + k + 1 Target\ =\ G_t\ =\ R_{t+1}\ +\ γR_{t+2}\ +\ γ^2R_{t+3}\ =\ \sum_{k=0}^{\infty}γ^kR_{t+k+1} Target = Gt = Rt+1 + γRt+2 + γ2Rt+3 = k=0γkRt+k+1

    • G t   =   R t + 1   +   γ R t + 2   +   γ 2 R t + 3   +   γ 3 R t + 4 =   R t + 1   +   γ ( R t + 2   +   γ R t + 3   +   γ 2 R t + 4 ) =   R t + 1   +   γ G t + 1 \begin{aligned} G_t\ &=\ R_{t+1}\ +\ γR_{t+2}\ +\ γ^2R_{t+3}\ +\ γ^3R_{t+4} \\ &=\ R_{t+1}\ +\ γ(R_{t+2}\ +\ γR_{t+3}\ +\ γ^2R_{t+4}) \\ &=\ R_{t+1}\ +\ γG_{t+1} \end{aligned} Gt = Rt+1 + γRt+2 + γ2Rt+3 + γ3Rt+4= Rt+1 + γ(Rt+2 + γRt+3 + γ2Rt+4)= Rt+1 + γGt+1

    • Q ( S t + 1 , A t + 1 ) Q(S_{t+1},A_{t+1}) Q(St+1,At+1) 就近似等于 G t + 1 G_{t+1} Gt+1

  • 软更新: α [ R t + 1   +   γ Q ( S t + 1 , A t + 1 )   +   Q ( S t , A t ) ] α[R_{t+1}\ +\ γQ(S_{t+1},A_{t+1})\ +\ Q(S_t,A_t)] α[Rt+1 + γQ(St+1,At+1) + Q(St,At)]

    • 通过参数 α 来控制每次更新的幅度(可以理解为学习速率 learning rate)
    • α 为 0,则表示不更新
    • α 为 1,则表示完全更新

所以这个更新公式,用到的是:

当前时刻的 St,At,下一时刻的 Rt,St+1,At+1(与环境交互后产生)

这就组成了 Sarsa 算法

3.2 与环境交互

  1. 根据Q表选动作(agent)
  • 预测/评估:sample()
  • 执行动作(带有探索概率):sample()
  1. 与环境交互(enviroment)
  • 获得 State 和 Reward
  • 获得下一步的动作预测和决策
  1. 更新 Q 表(agent)
  • 学习:learn()

四、相关方法和策略

4.1 Epsilon Greedy 方法

权衡探索和利用之间的概率:

  • 利用 Exploitation:最优选(概率 ε)
  • 探索 Exploration:随机选(概率 1-ε)
  1. 假设 ε 设置为 0.1
  2. 在当前状态下,选择最优的选择提取出来
  3. 然后 90% 在最优选择中随机选一个动作
  4. 10% 在所有选择中随机选一个动作

如果没有探索,那我们无法找到比当前最优 更优 的选择

在 Sarsa 算法中,由于在动作选择上一定存在 “探索” 的可能性,所以最终优化的路径是一条保守的路径,而不是最优的路径!

4.2 On-Policy 和 Off-Policy 策略

  • On-Policy:用于优化的,是实际会被执行的策略

    • 比如 Sarsa
    • 在学习过程中,只存在一种策略
    • 这种策略用作 Action 的选取
    • 这种策略也用作优化(更新 Q 表)
    • 先采样下一步,再更新 Q 表
    • 由于需要兼顾探索,所以策略 π 并不稳定
  • Off-Policy:用于优化的,

    • 比如 Q-Learning
    • 保留两种策略
    • 行为策略(μ):Behavior Policy,用于大胆地探索环境,执行动作,获取经验
    • 目标策略(π):Target Policy,使用 最优策略 来进行优化(更新Q表),但是这个策略不一定被执行
    • 先更新 Q 表,再采样下一步

你可能感兴趣的:(强化学习)