全网最全、最细的强化学习基础概念文章:随机变量、概率密度函数、期望、随机抽样;state, action, policy, reward, return, value-functions

写在前头

  • 如果一个函数表示为 f ( x ) f(x) f(x) 那么证明当前的函数 f f f 只与 x x x 这个量有关
  • 同样的,下面涉及到的 π ( s , a ) \pi(s, a) π(s,a) 代表 π \pi π 函数只与 s , a s, a s,a 这两个量有关

随机变量(Random Variable)

  • 是一个未知的量,他的值取决于一个 随机事件 的结果
    在这里插入图片描述
    • 在这个例子中,抛硬币 这个 随机事件 有两个结果,即: X = 0 , X = 1 X=0, X=1 X=0,X=1
    • 随机变量 X X X 之所以是 变量 因为抛硬币之前,并不知道 X X X 的具体值是多少
    • 对随机变量 X X X 的两种不同取值分别可以计算其 概率,记作 P ( X = 0 ) , P ( X = 1 ) \mathbb{P}(X=0), \mathbb{P}(X=1) P(X=0),P(X=1)
    • 如果一个随机事件的所有可能情况是有限的(离散的),当我们把 X X X 所有情况的发生概率都被列举出来,就组成了随机事件 X X X 的概率分布。比如当前例子中 X X X 只能为 0 / 1 0 / 1 0/1 因此 X X X 的概率分布如果画出来的话就是一个均匀分布

可视化随机变量及其概率分布

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# 随机采样,按照概率分布 p(x=0)=0.5, p(x=1)=0.5 进行采样 1000 次
x = np.random.choice(['positive', 'negative'], size=(1000,), p=[0.5, 0.5])
sns.histplot(x)
plt.show()

在这里插入图片描述

随机变量及其观测值

  • 我们用大写字母 X X X 表示一个 随机变量
  • 针对每一次对 随机变量 的观测值,我们用 x x x 表示
    在这里插入图片描述
    • 假设扔了四次骰子,那么会有四次不同的结果,这四次结果分别用 x 0 , . . . x 3 x_0,...x_3 x0,...x3 表示,他们可能为 1 1 1 或者 0 0 0
    • x x x 只是一个数,没有任何随机性

概率密度函数(Probability Density Function, PDF)

  • PDF 的物理意义:它反映了某个随机变量 X X X 在一个特定的取值点 ( 0 / 1 0 / 1 0/1) 处的可能性
  • 我们在第一部分的可视化中可视化了 抛硬币 这个随机事件的所有取值的 概率分布,即,我们列出了在所有取值的情况下随机变量 X X X 的概率情况。
  • 如果不像 抛硬币 活动,假设当前的随机事件是一个连续型的,即,随机事件对应的随机变量 X X X 的取值有无穷多种。这时候我们不能用离散的概率分布来观察每种取值的情况,我们选择采用一个概率密度函数 p ( x ) p(x) p(x) 来表示任一取值点的概率。
    在这里插入图片描述
    • 例如本图中的红点,表示在 X = 0.8 X=0.8 X=0.8 这一点对应的概率值 P ( X = 0.8 ) \mathbb{P}(X=0.8) P(X=0.8)
      在这里插入图片描述
    • 本图针对的是离散的 X X X 的概率密度函数,可以看到 p ( 1 ) = 0.2 , p ( 3 ) = 0.5 p(1)=0.2, p(3)=0.5 p(1)=0.2,p(3)=0.5
  • 概率密度函数 有如下性质:
    在这里插入图片描述
    • p ( x ) p(x) p(x) 是连续的,那么我们对其在整个 X X X 的值域 X \mathcal{X} X 中进行积分,最终的结果是 1 1 1
    • 而在 p ( x ) p(x) p(x) 是离散的情况下,对应的我们在值域 X \mathcal{X} X 上进行求和运算,最终也可以得到 1 1 1

期望 (Expectation)

  • 还是区分离散和连续两种情况
    在这里插入图片描述
    • 既然随机变量 X X X 有很多种可能性,而且每一种可能性都属于 X \mathcal{X} X,那么我们将所有的取值 x i x_i xi 乘以它对应的概率值 p ( x i ) p(x_i) p(xi) 并且求和就可以得到我们对当前随机事件 X X X 的一个整体的衡量,也就是上图公式中表示的那样。
    • 举个更具体的例子,现在你在赌骰子,每个面的概率 p ( x i ) , i ∈ [ 1 , . . . , 6 ] p(x_i), i\in[1,...,6] p(xi),i[1,...,6] 都是 1 6 \frac{1}{6} 61,那么当你投出骰子的那一刻,期望的点数是多少?计算方式就是: E = ∑ i n = 6 i ∗ p ( x i ) = 1 6 ∗ 1 + 1 6 ∗ 2 + 1 6 ∗ 3 + 1 6 ∗ 4 + 1 6 ∗ 5 + 1 6 ∗ 6 \mathbb{E}=\sum_{i}^{n=6}i * p(x_i)=\frac{1}{6}*1+\frac{1}{6}*2+\frac{1}{6}*3+\frac{1}{6}*4+\frac{1}{6}*5+\frac{1}{6}*6 E=in=6ip(xi)=611+612+613+614+615+616

随机抽样(Random Sampling)

在这里插入图片描述

  • 箱子里有 10 个球,2红,5绿,3蓝

  • 从箱子里随机拿一个出来,这个过程就是 随机抽样

  • 通常我们更加常用的描述方式是:针对某一个概率分布进行随机抽样,即,我们把上面的场景如下描述:

    • 箱子里有多少个球未知,但是拿到红球的概率是 0.2, 绿球概率 0.5,蓝球概率 0.3
    • 从这个箱子中随机拿出一个球
  • 从数学角度来看,因为我是从箱子里进行随机抽样,所以理论上我可以抽无限多次,那么哪怕只有 10 个球,因为我是无限多次随机采样,所以本质上最终还是取决于不同颜色球的概率,而不是某种颜色球的具体数量。因此按照分布随机采样才是正确的理解方式。

强化学习的术语

场景

  • 假设我们下面所有的描述都是针对 超级玛丽 这个游戏
  • 这个游戏是基于 python 的库 gym 构建的,gym 封装了很多不同的游戏,可以通过调用 方法 的方式来获得游戏在某一时刻的 state

在这里插入图片描述

环境状态(State)

  • 不同时刻游戏环境呈现出的状态就是 state,比如目前这一个时刻,环境中存在的金币数量、马里奥的位置、蘑菇的位置,这些都是构成 state 的一个部分

  • 在代码实现的过程中,state 往往被表示为一个数组

    # pip install gym
    # pip install gym_super_mario_bros
    import gym
    from gym import envs
    # print all the game name
    env_specs = envs.registry.keys()
    print(env_specs)
    
    # if using macos, it is supposed to specify the render_mode, otherwise the window would not be triggered
    env = gym.make('SuperMarioBros-v0', render_mode='human', apply_api_compatibility=True)
    env.reset()
    for _ in range(1000):
        env.render()
        state, reward, is_done, info, _ = env.step(env.action_space.sample()) # 采取随机行动
        print(f"states: {state}")
        print(f"states shape: {state.shape}")
        break
    env.close()
    
    states: [[[104 136 252]
      [104 136 252]
      [104 136 252]
      ...
      [104 136 252]
      [104 136 252]
      [104 136 252]]
    
     [[104 136 252]
      [104 136 252]
      [104 136 252]
      ...
      [104 136 252]
      [104 136 252]
      [104 136 252]]
    
     [[104 136 252]
      [104 136 252]
      [104 136 252]
      ...
      [104 136 252]
      [104 136 252]
      [104 136 252]]
    
     ...
    
     [[240 208 176]
      [228  92  16]
      [228  92  16]
      ...
      [228  92  16]
      [228  92  16]
      [  0   0   0]]
    
     [[240 208 176]
      [228  92  16]
      [228  92  16]
      ...
      [228  92  16]
      [  0   0   0]
      [  0   0   0]]
    
     [[228  92  16]
      [  0   0   0]
      [  0   0   0]
      ...
      [  0   0   0]
      [  0   0   0]
      [228  92  16]]]
    states shape: (240, 256, 3)
    
    
  • 当然 gym 中不同的游戏的 state 表示都不同,有些游戏的 state 非常简单

  • 在后文中,我们统一使用 s s s 来表示 state

行为(Action)

  • action 表示我们的 agent (本文中的 agent 就是马里奥)在面对一个环境当前 state 的时候采取的行动,在当前的例子中,action256 种不同的值,代表马里奥可以采取 256 种不同的操作

    print(f"action space: {env.action_space.n}")
    
    action space: 256
    
  • 我们对当前情况进行简化,我们假设马里奥没有 256action,我们就认为面对一个 state 马里奥只有 3 3 3 种状态 up, left, right,因此我们可以表示 action 为: A c t i o n   a ∈ { l e f t , r i g h t , u p } Action~a\in \{left, right, up\} Action a{left,right,up}

在这里插入图片描述

  • 在这个例子中,action 是一组离散的取值,根据上面的知识我们很容易将 action 看做是一个随机变量 A A A,这个随机变量的取值情况只有 3 3 3
  • 当我们关注一些其他的任务,比如 开车 游戏,方向盘转动的角度是 连续的,因此在那种情况下 A A A 的取值是连续的

策略(Policy)

  • 通常我们用一个函数 π ( s , a ) → [ 0 , 1 ] \pi(s, a) \rightarrow [0,1] π(s,a)[0,1] 来表示 policy
  • 显然,我们认为 π \pi π 是关于 stateaction 的函数
  • 当给定一个 state 时,agent 按照何种策略来选取 action 呢?这个过程就是 π \pi π 函数来决定的
    在这里插入图片描述
    • 比如当前这个画面,画面中的信息就是环境的 stateagent 根据 π \pi π 来决定采取 up, left, right 行为
  • 一种 Reinforcement Learning (PPO算法)学习的目标就是:学习一个好的 π \pi π 函数,这样当我们面对环境所处的 state 就可以采取正确的 action 来使得整个游戏过程的 收益最大化 ( 我们在后面会定义什么是 收益,以及如何使其最大化,目前这里先做个了解),最终赢得游戏。

在这里插入图片描述

  • 如果进行形式化,我们将 π \pi π 函数定义为一个 概率密度函数,给定一个 s s s π \pi π 函数返回所有 a c t i o n action action 可能发生的概率
  • 虽然在这个例子中, π ( u p ∣ s ) \pi(up | s) π(ups) 的概率最大(0.7),但是在实际的操作中,我们仅仅会按照这个 π \pi π 概率密度函数 进行随机抽样,而不会将当前 s s s 下的 action 定死为 up,也就是说,虽然向上的行为概率最大,但依然有 left, right 的可能性!!!这个对于 π \pi π 函数的训练非常重要
  • 因为如果我们因为 π \pi π 给出了 up 的概率最大而将当前时刻的 a a a 定死为 up 那么就完全没有随机性了,那 智能体 就会变成 弱智体,就会产生问题。因为我们进行的是博弈训练,如果你面对某种局势的时候一定会采取相同的处理,那么对手就有可能赢你。
  • 通过 π \pi π 进行随机抽样引入了 Reinforcement Learning过程中的 第一部分随机性

奖励(Reward)

  • 奖励通常是强化学习中非常重要的部分,奖励的定义方式决定了最终的优化目标,而优化目标决定了训练效果。
  • reward 通常是我们自己针对一个特定的任务来进行制定的。但是在 gym 库中的每个游戏,采取特定动作的 reward 已经被定义好了。
    在这里插入图片描述
    • 比如当前游戏中,在第 i i i 时刻:
      • 马里奥吃金币,那么这个 time stepreward 就会增加 1 1 1
      • 马里奥赢得游戏,reward 增加 10000
      • 马里奥输了游戏,reward 减少 10000
      • 当前时间步马里奥什么也没做,reward 增加 0 0 0
    • 之所以让 winlose 游戏的 reward 远大于 吃金币,是因为我们最终的优化目标是 一局游戏(episode) 中的 reward 最大化,而不是单个步骤,放大 winlose 的值是防止马里奥只吃金币 而不想着怎么赢得游戏。

状态转移(state transition)

在这里插入图片描述

  • 在时刻 i i i 环境的状态是 s i s_i si 这时候,根据 π \pi π 函数,马里奥选择 up,此时环境的 s i → s i + 1 s_i \rightarrow s_{i+1} sisi+1 这个过程就是 状态转移
  • 状态转移 可以是 固定的,也可以是 随机的,大多数情况下是 随机的,并且 状态转移 的随机性来源于环境,这是由游戏程序决定的,对 agent 是不可见的。 这是 Reinforcement Learning 中第二部分随机性的来源。
  • 具体的例子:当面对 s i s_i si,马里奥采取了 up 行为(如图),这时候环境中的 蘑菇 可以向左(0.8)也可以向右(0.2),但这仍然不是确定的,而是从这个概率分布中进行抽样得出结果。如果玩过游戏你就知道,这些环境中的物体的移动并不固定,哪怕你针对相同的 state 采取的是相同的 action, 环境也不会完全按照某种特定的方式移动。这就保证了环境可以源源不断地产生随机性来保证 agent 训练过程中能够遇到足够多的情况。
  • 总结一下就是:state transition 引入了随机性,而且这是游戏中定义的随机操作,对 agent 来说是无法预知的
  • 状态转移 同样是一个概率密度函数 p ( s ′ , s , a ) p(s^{'}, s, a) p(s,s,a),我们称它为 状态转移函数,形式化表达为: p ( s ′ ∣ s , a ) = P ( S ′ = s ′ ∣ S = s , A = a ) p(s^{'}|s, a)=\mathbb{P}(S^{'}=s^{'} | S=s, A=a) p(ss,a)=P(S=sS=s,A=a)
  • 也就是,基于环境状态 state s s s 的条件下,并采取了 action a a a,的情况下,下一刻的环境状态state' 将会是 s ′ s^{'} s 的概率

环境与 agent 的交互过程

在这里插入图片描述
在这里插入图片描述

  • 环境处于 s t s_t st
  • agent 根据环境状态,按照当前的 π ( s , a ) \pi(s,a) π(s,a) 策略函数随机抽样一个 action a t a_t at
  • 根据 a t a_t at 环境会给出当前时刻 agent 获得的 reward r t r_t rt,同时环境按照 p ( s ′ , s , a ) p(s^{'}, s, a) p(s,s,a) 状态转移函数 进行随机采样,得到新的环境状态 s t + 1 s_{t+1} st+1

强化学习中的随机性来源

  • 在上面的内容中已经强调过了,随机性来源于两个过程:
    • agent 根据 π ( s , a ) \pi(s, a) π(s,a) 策略函数得到当前 s s s 下所有 a a a 的概率分布,然后从这个分布中进行 随机采样 得到最终的 action,这个过程中的 随机采样 引入了 agent 行为的随机性
      在这里插入图片描述

    • 环境 根据 p ( s ′ , s , a ) p(s', s, a) p(s,s,a) 状态转移函数 得到当前 s s s a a a 确定了之后下个 state 所有情况的概率分布,然后从这个分布中 随机采样 获得 s',这个过程中的 随机采样 引入了 环境 变化的随机性
      在这里插入图片描述

如何用 agent 玩游戏

  • 我们的目的就是用深度学习构建一个网络,这个网络学习的目的就是一个 π ( s , a ) \pi(s, a) π(s,a) 函数,agent 在所有 s i s_i si 的行为 a i a_i ai 都有这个 π \pi π 函数随机抽样得到
  • 环境根据 a i a_i ai 给出 reward r i r_i ri 并且根据 环境内部提前定义好的 p ( s ′ , s , a ) p(s', s, a) p(s,s,a) 状态转移函数 生成 s i + 1 s_{i+1} si+1
  • 这样一直循环下去直到游戏结束。
  • 这个过程中会形成一个 轨迹(trajectory),轨迹中包含的是 s 1 , a 1 , r 1 , . . . , s T , a T , r T s_1, a_1, r_1,..., s_T, a_T, r_T s1,a1,r1,...,sT,aT,rT,这个轨迹记录了我们后面训练模型所需要的所有信息
    在这里插入图片描述

奖励(Rewards) & 收益(Returns)

在这里插入图片描述

  • t t t 时刻的 return 记作 U t U_t Ut,代表的是从 t t t 时刻到未来所有的 reward 的总和
    U t = R t + R t + 1 + R t + 2 + . . . U_t=R_t+R_{t+1}+R_{t+2}+... Ut=Rt+Rt+1+Rt+2+...

折扣回报(Discounted Return)

  • 但是我们并不能把 R t + 1 R_{t+1} Rt+1 R t R_t Rt 看做同等重要的存在,因此当前时刻的 reward R t R_t Rt 应该是比未来的 reward 更有价值,也就是未来的 reward 应该打一个折扣

  • γ \gamma γ 作为衰减(折扣)系数,未来时刻的 reward R t + 1 , . . . R_{t+1},... Rt+1,... 都要打折扣,因此我们得到 discounted return 也就是: U t = R t + γ R t + 1 + γ 2 R t + 2 + . . . U_t=R_t+\gamma R_{t+1}+\gamma^2R_{t+2}+... Ut=Rt+γRt+1+γ2Rt+2+...

  • 未来的某个时刻的 reward 离当前时刻 R t R_{t} Rt 越远,那么其 reward 对当前时刻的 return 影响就越小

  • γ \gamma γ 在实际操作中,是一个超参数,是我们人为设定的

  • 如果当前游戏已经结束,那么所有的 reward 应该表示为小写字母,代表对一个随机变量的观测值,但是目前我们尚且不知道未来的 reward,因此在公式里我们采用的还是大写字母 R t , R t + n , . . . R_t, R_{t+n},... Rt,Rt+n,...表示某一时刻的 reward 以及 U t U_t Ut 表示某一时刻的 return

在这里插入图片描述

  • 回顾上面的知识,我们再次强调 强化学习 中两个随机性的来源:
    • Action 是从一个 π ( s , a ) \pi(s,a) π(s,a) 中随机采样出来的,因此引入了随机性: P ( A = a ∣ S = s ) = π ( a ∣ s ) \mathbb{P}(A=a|S=s)=\pi(a|s) P(A=aS=s)=π(as)
    • 环境的 state 是从 p ( s ′ , s , a ) p(s',s,a) p(s,s,a) 中随机采样的,因此引入了随机性: P ( S ′ = s ′ ∣ S = s , A = a ) = p ( s ′ ∣ s , a ) \mathbb{P}(S'=s'|S=s,A=a)=p(s'|s,a) P(S=sS=s,A=a)=p(ss,a)
  • 所以针对任意时刻 i i i,其 reward R i R_i Ri, 是取决于 S i , A i S_i, A_i Si,Ai 的。直观理解就是:马里奥在时刻 i i i 获得的 reward 是与当前时刻的环境状态 S i S_i Si 以及马里奥采取的行动 A i A_i Ai 有关的。
  • 所以再考虑 U i U_i Ui R i R_i Ri 的关系,由于 U i U_i Ui 不仅和当前的 R i R_i Ri 有关,还与以后所有的时刻的 reward R i + 1 , R i + 2 , . . . , R i + n R_{i+1}, R_{i+2},...,R_{i+n} Ri+1,Ri+2,...,Ri+n) 相关,因此, U i U_i Ui随机变量 A i , A i + 1 , A i + 2 , . . . A_{i}, A_{i+1},A_{i+2},... Ai,Ai+1,Ai+2,... 以及 随机变量 S i , S i + 1 , S i + 2 , . . . S_{i},S_{i+1},S_{i+2},... Si,Si+1,Si+2,... 都有关

价值函数(Value Functions)

  • 这部分很绕很复杂,如果看不懂建议多看几遍,千万不要糊弄过去

动作价值函数(Action-Value Function)

在这里插入图片描述

  • 通常用 Q π ( s , a ) Q_{\pi}(s,a) Qπ(s,a) 来表示 动作价值函数,它与 agent 采取的 action 以及环境的状态 state,以及策略函数 π \pi π 有关

  • 动作价值函数 是从 U t U_t Ut 得到的

  • 因为 U t U_t Ut 可以表示从当前时刻 t t t 到未来的 reward 总和,因此,虽然我们目前并不知道这个 U t U_t Ut 的具体值(因为 R t , R t + 1 R_t, R_{t+1} Rt,Rt+1 这些还都是随机变量,并不是具体的观测值),但是如果我们能对 U t U_t Ut 求一个期望,不就能够估算出 U t U_t Ut 了么,而这种方式也可以帮我们间接评估当前的 action 是否会导致未来较好的结果。

  • 所以 动作价值函数 的定义就是 U t U_t Ut 在给定 a t , s t a_t, s_t at,st 下的 期望 Q π ( s t , a t ) = E [ U t ∣ S t = s t , A t = a t ] Q_{\pi}(s_t, a_t)=\mathbb{E}[U_t|S_t=s_t,A_t=a_t] Qπ(st,at)=E[UtSt=st,At=at]

  • 之所以是给定 a t , s t a_t, s_t at,st 是因为: 在当前 t t t 时刻,只有 a t , s t a_t, s_t at,st 是可以具体观测出来的值,而其他未来时刻的 A A A S S S 尚且还是 随机变量。对于这些 随机变量,会在我们求期望 E \mathbb{E} E 的过程中变成一个确定的值(这个过程我们称为:在求期望的过程中通过积分或求和把未来的 A A A S S S 的不确定性给消掉了)

    • 比如扔硬币,扔到 正面 给你 5 元,反面1 元,而正反面的概率都是 0.5 0.5 0.5,如果此时问你抛出硬币之后的收益是多少
    • 如果不采用 期望 的思想,你不知道未来这个硬币扔出去是多少钱,因为扔硬币这个动作是随机的
    • 但如果采用 期望 的思想,你就知道 E = 0.5 ∗ 5 + 0.5 ∗ 1 = 3 \mathbb{E}=0.5*5+0.5*1=3 E=0.55+0.51=3 元,这个 3 3 3 得出的同时消除了不确定性,因为你就可以认为你扔出去硬币的时候你可以拿到 3 3 3 元钱,此时你认为 3 3 3 就是你扔硬币的收益
    • 结合这个了例子和上述的 未来时刻不确定的 S 和 A 如果通过 E \mathbb{E} E 的方式将 t t t 时刻之后的 S S S A A A 的不确定性处理掉,我们就可以只关注 a t , s t a_t, s_t at,st 所造成的影响
  • 同时可以看到 Q π ( s t , a t ) = E [ U t ∣ S t = s t , A t = a t ] Q_{\pi}(s_t, a_t)=\mathbb{E}[U_t|S_t=s_t,A_t=a_t] Qπ(st,at)=E[UtSt=st,At=at] 中有一个 π \pi π 这说明 动作价值函数 除了 a t , s t a_t, s_t at,st 之外还与当前的 策略函数 有关。这个也是可以解释的:

    • 因为 a t a_t at 是从 π \pi π 中随机抽样出来的
    • 而当前的 策略 下的 a t a_t at 可能是一个能够使 U t U_t Ut 很大( U t = 100 U_t=100 Ut=100)的 action,但如果更换为另一个 π \pi π,那么 a t a_t at 可能导致 U t = 23 U_t=23 Ut=23,所以 策略 同样与 U t U_t Ut 结果息息相关。
  • 再花点时间把上面的思路整体捋一下:

    • U t U_t Ut 和当前时刻 t t t 以及未来的所有时刻的 a , s a, s a,s 都有关
    • 而我们实际上只能通过观察来获得当前时刻 t t t a t , s t a_t, s_t at,st,那么我们如何将 t t t 以后时刻(未来时刻)的 a , s a, s a,s 的不确定性消除掉呢?就是采用 期望 E \mathbb{E} E 这个工具,所以我们是对 t t t 以后的所有 a , s a, s a,s期望 而不包括 a t , s t a_t, s_t at,st 所以再公式中是 E ( U t ∣ a t , s t ) \mathbb{E}(U_t|a_t, s_t) E(Utat,st)
    • E ( U t ∣ a t , s t ) \mathbb{E}(U_t|a_t, s_t) E(Utat,st) 最终会得到一个数值,这个数值表示的是:在当前 t t t 时刻,环境状态为 s t s_t st 的情况下,采取动作 a t a_t at 在当前 策略 下对 agent 来说是不是一个好的 action 这个 action 如果能够导致 E \mathbb{E} E 的值越大,就反映出在当前状态下采取 action a t a_t at 越英明!
    • 但也需要注意, E \mathbb{E} E 的值还取决于当前 agent 采用的 策略 π \pi π

最优动作价值函数(Optimal action-value function)

在这里插入图片描述

  • 最优动作价值函数 Q ∗ ( s t , a t ) Q^{*}(s_t, a_t) Q(st,at) 是由 动作价值函数 Q π ( s t , a t ) Q_{\pi}(s_t, a_t) Qπ(st,at) 衍生而来。
  • 上一部分说了,当给定 s t , a t s_t, a_t st,at 如果采取不同的 π \pi π,得到的 E \mathbb{E} E 也会不同,那么很自然的我们就想到,要对 π \pi π 进行选择,选哪个能让 E \mathbb{E} E 最大的策略函数 π o p t i m a l \pi_{optimal} πoptimal,即: Q ∗ ( s t , a t ) = max ⁡ π Q π ( s t , a t ) Q^{*}(s_t, a_t) = \max_{\pi}Q_{\pi}(s_t, a_t) Q(st,at)=πmaxQπ(st,at)
  • 此时,由于取了最优的 π \pi π,所以 Q ∗ Q^{*} Q 也就与 π \pi π 无关了
  • Q ∗ ( s t , a t ) Q^{*}(s_t, a_t) Q(st,at) 能够说明:在时刻 t t t,当前 s t s_t st 的环境状态下,采取 a t a_t at 这个动作有多好(不受 策略 影响,因为策略已经是最优的)

状态价值函数(State-value Funciton)

在这里插入图片描述

  • 上面的知识中提到,对于 Q π ( s t , a t ) Q_{\pi}(s_t, a_t) Qπ(st,at),当前时刻是 t t t,对于此后的时刻的 A A A S S S 我们统统用 E \mathbb{E} E 来消掉,从而只关注当前 t t t 时刻的 a t , s t a_t, s_t at,st,因为只有 a t , s t a_t, s_t at,st 是当前时刻真实能够观测出的值。
  • 但是在这里,我们更进一步,我们不再通过从 π \pi π 中随机抽样出 a t a_t at 而是通过 期望 消掉所有的 a t a_t at 的随机性(比如在 s t s_t st 能够采取的动作有 5 5 5 个,那就通过 期望 算出这 5 5 5 种动作的期望取值,这就是 E A [ Q π ( s t , A ) ] \mathbb{E}_{A}[Q_{\pi}(s_t, A)] EA[Qπ(st,A)] 这样结果 V π ( s t ) V_{\pi}(s_t) Vπ(st) 仅与 π , s t \pi, s_t π,st 有关
  • 这样做的目的是,我们消除了 t t t 时刻在 π \pi π 策略 A A A 的随机性,只看 state,反映了在当前时刻 t t t 游戏的形势如何。换句话说:形势对我们有利、有害、还是双方赢面差不多。 V π ( s t ) V_{\pi}(s_t) Vπ(st) 越大代表在 t t t 时刻,采取 策略 π \pi π 越具有优势
  • 当然这是离散action 的情况,在连续action 情况下,我们采用积分来实现上述步骤。

价值函数总结(Summary)

在这里插入图片描述

  • 动作价值函数: Q π ( s t , a t ) Q_{\pi}(s_t, a_t) Qπ(st,at) 反映了在策略 π \pi π 下,面对环境状态 s t s_t st,采取action a t a_t at 是否明智
  • 最优动作价值函数: Q ∗ ( s t , a t ) Q^{*}(s_t, a_t) Q(st,at) 反映了在面对环境状态 s t s_t st,采取action a t a_t at 是否明智(消除了策略 π \pi π的影响)
  • 状态价值函数: V π ( s t ) V_{\pi}(s_t) Vπ(st) 反映了在当前策略 π \pi π下,面对环境 s t s_t st,我们是否处于劣势 / 优势
  • 当然如果我们面对 状态价值函数 再对 S S S 求期望,得到 E S [ V π ( S ) ] \mathbb{E}_{S}[V_{\pi}(S)] ES[Vπ(S)] 就与 S S S 都无关了,单纯反映 π \pi π 这个策略 的好坏了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暖仔会飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值