【引言】上一篇文章利用马尔可夫决策过程这一数学工具对强化学习进行了形式化描述,并给出了强化学习智能体的目标函数。那么如何找到最优策略来最大化目标函数?最优策略存在吗?是唯一的吗?在回答这些问题之前,先引入价值函数和贝尔曼方程这两个工具对强化学习进行更加具体的过程性描述。在此基础上,介绍最优价值函数和最优策略等概念。
目录
中英文术语对照表
中文 | 英文 | 缩写或符号 |
---|---|---|
状态价值函数 | state value function | v π ( s ) v_\pi(s) vπ(s) |
动作价值函数 | action value function | q π ( s , a ) q_\pi(s,a) qπ(s,a) |
贝尔曼方程 | Bellman equation | |
最优状态价值函数 | optimal state value function | v ∗ ( s ) v_*(s) v∗(s) |
最优动作价值函数 | optimal action value function | q ∗ ( s , a ) q_*(s,a) q∗(s,a) |
1. 价值函数
图1 智能体于环境交互逻辑图
几乎所有的强化学习算法都涉及价值函数的计算。价值函数是状态(或者状态-动作二元组)的函数,用来评估智能体在当前给定状态的(或者给定状态-动作)下有多好。这里的“有多好”就是未来预期的收益,更确切地说,是回报的期望值。
1.1 状态价值函数
给定
t
t
t时刻的(环境)状态
S
t
=
s
S_t=s
St=s,智能体使用策略
π
\pi
π与环境的按照图1所示的逻辑进行交互,将所形成的一条轨迹记为
τ
:
S
t
,
A
t
,
R
t
+
1
,
S
t
+
1
,
A
t
+
1
,
R
t
+
1
,
⋯
\tau: S_t,A_t,R_{t+1},S_{t+1},A_{t+1},R_{t+1},\cdots
τ:St,At,Rt+1,St+1,At+1,Rt+1,⋯,此时的回报我们在上一篇文章中定义为
G
t
≐
R
t
+
1
+
γ
R
t
+
2
+
γ
2
R
t
+
3
+
⋯
=
∑
k
=
0
∞
γ
k
R
t
+
k
+
1
{G_t} \doteq {R_{t + 1}} + \gamma {R_{t + 2}} + {\gamma ^2}{R_{t + 3}} + \cdots = \sum\limits_{k = 0}^\infty {{\gamma ^k}} {R_{t + k + 1}}
Gt≐Rt+1+γRt+2+γ2Rt+3+⋯=k=0∑∞γkRt+k+1
这种轨迹可能会非常多,我们取回报的期望即为状态价值函数:
v
π
(
s
)
≐
E
π
[
G
t
∣
S
t
=
s
]
=
E
π
[
∑
k
=
0
∞
γ
k
R
t
+
k
+
1
∣
S
t
=
s
]
\begin{aligned}v_\pi(s)&\doteq\mathbb E_\pi \left[G_t|S_t=s\right]\\&=\mathbb E_\pi \left[\sum_{k=0}^{\infty}\gamma^{k}R_{t+k+1}\bigg|S_t=s\right]\end{aligned}
vπ(s)≐Eπ[Gt∣St=s]=Eπ[k=0∑∞γkRt+k+1∣
∣St=s]
1.2 动作价值和函数
类似的,状态
S
t
=
s
S_t=s
St=s,采取动作
A
t
=
a
A_t=a
At=a,未来回报的期望即为动作价值函数:
q
π
(
s
,
a
)
≐
E
π
[
G
t
∣
S
t
=
s
,
A
t
=
a
]
=
E
π
[
∑
k
=
0
∞
γ
k
R
t
+
k
+
1
∣
S
t
=
s
,
A
t
=
a
]
\begin{aligned}q_\pi(s,a)&\doteq\mathbb E_\pi \left[G_t|S_t=s, A_t=a\right]\\&=\mathbb E_\pi \left[\sum_{k=0}^{\infty}\gamma^{k}R_{t+k+1}\bigg|S_t=s, A_t=a\right]\end{aligned}
qπ(s,a)≐Eπ[Gt∣St=s,At=a]=Eπ[k=0∑∞γkRt+k+1∣
∣St=s,At=a]
2. 贝尔曼方程
2.1 基于状态价值函数的贝尔曼方程
为了简化符号,将下一时刻状态取值记为
s
′
≐
s
t
+
1
s^{\prime}\doteq s_{t+1}
s′≐st+1,下一时刻动作取值记为
a
′
≐
a
t
+
1
a^{\prime}\doteq a_{t+1}
a′≐at+1。下面推导
v
π
(
s
)
v_\pi(s)
vπ(s)和
v
π
(
s
′
)
v_\pi(s^{\prime})
vπ(s′)之间的关系:
v
π
(
s
)
=
E
π
[
G
t
∣
S
t
=
s
]
=
E
π
[
R
t
+
1
+
γ
G
t
+
1
∣
S
t
=
s
]
=
∑
a
∈
A
π
(
a
∣
s
)
∑
s
′
∈
S
p
(
s
′
∣
s
,
a
)
[
r
+
γ
E
[
G
t
+
1
∣
S
t
+
1
=
s
′
]
]
=
∑
a
∈
A
π
(
a
∣
s
)
∑
s
′
∈
S
p
(
s
′
∣
s
,
a
)
[
r
+
γ
v
π
(
s
′
)
]
\begin{aligned}v_\pi(s)&=\mathbb E_\pi \left[G_t|S_t=s\right] \\&=\mathbb E_\pi \left[R_{t+1}+\gamma G_{t+1}\big|S_t=s\right] \\&=\sum_{a\in\mathcal{A}}\pi(a|s)\sum_{s^{\prime}\in\mathcal{S}}p(s^{\prime}|s,a)\left[r+\gamma\mathbb E\left[G_{t+1}|S_{t+1}=s^{\prime}\right]\right] \\&=\sum_{a\in\mathcal{A}}\pi(a|s)\sum_{s^{\prime}\in\mathcal{S}}p(s^{\prime}|s,a)\left[r+\gamma v_\pi(s^{\prime})\right] \end{aligned}
vπ(s)=Eπ[Gt∣St=s]=Eπ[Rt+1+γGt+1∣
∣St=s]=a∈A∑π(a∣s)s′∈S∑p(s′∣s,a)[r+γE[Gt+1∣St+1=s′]]=a∈A∑π(a∣s)s′∈S∑p(s′∣s,a)[r+γvπ(s′)]
上式称为基于状态价值函数 v π v_\pi vπ的贝尔曼方程,表达了状态价值函数前后时间步之间的关系。贝尔曼方程的推到主要使用了概率论中的全概率公式,如图2所示。
图2 基于状态价值函数的贝尔曼方程图解
在图2中,一开始环境的状态为 s s s,能够执行的动作有三个 { a 1 a 2 , a 3 } \{a^1a^2,a^3\} {a1a2,a3},执行每个动作的概率为 π ( a i ∣ s ) , i = 1 , 2 , 3 \pi(a^i|s),\quad i=1,2,3 π(ai∣s),i=1,2,3。当智能体选择了动作 a 3 a^3 a3并执行,环境会可能转移的下一个状态有两个,假设环境以概率 p ( s ′ ∣ s , a 3 ) p(s^{\prime}|s,a^3) p(s′∣s,a3)转移到了 s ′ s^{\prime} s′,将获得奖励 r r r。
上面描述的动作选择和状态转移不是唯一的路径,选择不同的动作结合环境的随机性,马尔可夫决策过程的演进存在非常多不同的路径,而每一条不同的路径可能获得不同的回报。智能体需要评估当前状态下未来回报的期望,就要把此后所有的情况都考虑进去,即每一种情况发生的概率乘以对应的回报。这里面实际上使用了两次全概率公式进行计算。
2.2 用 v π ( s ) v_\pi(s) vπ(s)表示 q π ( s , a ) q_\pi(s,a) qπ(s,a)
q π ( s , a ) = E π [ G t ∣ S t = s , A t = a ] = E π [ R t + 1 + γ G t + 1 ∣ S t = s , A t = a ] = ∑ s ′ ∈ S p ( s ′ ∣ s , a ) [ r + γ E [ G t + 1 ∣ S t + 1 = s ′ ] ] = ∑ s ′ ∈ S p ( s ′ ∣ s , a ) [ r + γ v π ( s ′ ) ] \begin{aligned}q_\pi(s,a)&=\mathbb E_\pi \left[G_t|S_t=s,A_t=a\right] \\&=\mathbb E_\pi \left[R_{t+1}+\gamma G_{t+1}\big|S_t=s,A_t=a\right] \\&=\sum_{s^{\prime}\in\mathcal{S}}p(s^{\prime}|s,a)\left[r+\gamma\mathbb E\left[G_{t+1}|S_{t+1}=s^{\prime}\right]\right] \\&=\sum_{s^{\prime}\in\mathcal{S}}p(s^{\prime}|s,a)\left[r+\gamma v_\pi(s^{\prime})\right] \end{aligned} qπ(s,a)=Eπ[Gt∣St=s,At=a]=Eπ[Rt+1+γGt+1∣ ∣St=s,At=a]=s′∈S∑p(s′∣s,a)[r+γE[Gt+1∣St+1=s′]]=s′∈S∑p(s′∣s,a)[r+γvπ(s′)]
2.3 基于动作价值函数的贝尔曼方程
先用
v
π
(
s
)
v_\pi(s)
vπ(s)表示
q
π
(
s
,
a
)
q_\pi(s,a)
qπ(s,a),然后利用全概率公式展开得到与
q
π
(
s
′
,
a
′
)
q_\pi(s^{\prime},a^{\prime})
qπ(s′,a′)的关系:
q
π
(
s
,
a
)
=
E
π
[
G
t
∣
S
t
=
s
,
A
t
=
a
]
=
E
π
[
R
t
+
1
+
γ
G
t
+
1
∣
S
t
=
s
,
A
t
=
a
]
=
∑
s
′
∈
S
p
(
s
′
∣
s
,
a
)
[
r
+
γ
E
[
G
t
+
1
∣
S
t
+
1
=
s
′
]
]
=
∑
s
′
∈
S
p
(
s
′
∣
s
,
a
)
[
r
+
γ
v
π
(
s
′
)
]
=
∑
s
′
∈
S
p
(
s
′
∣
s
,
a
)
[
r
+
γ
∑
a
′
∈
A
π
(
a
′
∣
s
′
)
q
π
(
s
′
,
a
′
)
]
\begin{aligned}q_\pi(s,a)&=\mathbb E_\pi \left[G_t|S_t=s,A_t=a\right] \\&=\mathbb E_\pi \left[R_{t+1}+\gamma G_{t+1}\big|S_t=s,A_t=a\right] \\&=\sum_{s^{\prime}\in\mathcal{S}}p(s^{\prime}|s,a)\left[r+\gamma\mathbb E\left[G_{t+1}|S_{t+1}=s^{\prime}\right]\right] \\&=\sum_{s^{\prime}\in\mathcal{S}}p(s^{\prime}|s,a)\left[r+\gamma v_\pi(s^{\prime})\right] \\&=\sum_{s^{\prime}\in\mathcal{S}}p(s^{\prime}|s,a)\left[r+\gamma \sum_{a^{\prime}\in\mathcal{A}}\pi(a^{\prime}|s^{\prime})q_\pi(s^{\prime},a^{\prime})\right] \end{aligned}
qπ(s,a)=Eπ[Gt∣St=s,At=a]=Eπ[Rt+1+γGt+1∣
∣St=s,At=a]=s′∈S∑p(s′∣s,a)[r+γE[Gt+1∣St+1=s′]]=s′∈S∑p(s′∣s,a)[r+γvπ(s′)]=s′∈S∑p(s′∣s,a)[r+γa′∈A∑π(a′∣s′)qπ(s′,a′)]
图3 基于动作价值函数的贝尔曼方程图解
3. 最优价值函数与最优策略
解决一个强化学习问题就意味着要找出一个策略,使智能体在与环境长期交互过程中最大化收益。那么怎么确定一个策略比另外一个策略更好呢?==如果策略
π
\pi
π不比另一个策略
π
′
\pi^{\prime}
π′差,策略
π
\pi
π应当在所有状态上的期望回报都不比
π
′
\pi^{\prime}
π′差。==也就是说,如果策略
π
\pi
π满足:对所有的
s
∈
S
s\in\mathcal{S}
s∈S,
v
π
(
s
)
≥
v
π
′
(
s
)
v_\pi(s)\ge v_{\pi^{\prime}}(s)
vπ(s)≥vπ′(s),那么它就是最优策略,记为
π
∗
\pi_*
π∗。
arg
max
π
[
G
t
∣
S
t
=
s
]
=
arg
max
π
E
τ
∼
π
[
∑
k
=
0
∞
γ
k
R
t
+
k
+
1
∣
S
t
=
s
]
(
2.7
)
\mathop {\arg \max }\limits_\pi[{G_t}|{S_t} = s] = \mathop {\arg \max }\limits_\pi\mathbb{E}{_{\tau\sim\pi} }\left[ {\sum\limits_{k = 0}^\infty {{\gamma ^k}} {R_{t + k + 1}}|{S_t} = s} \right]\quad(2.7)
πargmax[Gt∣St=s]=πargmaxEτ∼π[k=0∑∞γkRt+k+1∣St=s](2.7)
3.1 最优价值函数与贝尔曼最优方程
最优策略可能不止一个,但是它们有相同的状态价值函数,记为
v
∗
v_*
v∗。对于任意
s
∈
S
s\in\mathcal{S}
s∈S,对应的最优状态价值函数定义为
v
∗
(
s
)
≐
max
π
v
π
(
s
)
v_*(s)\doteq\mathop {\max }\limits_\pi v_\pi(s)
v∗(s)≐πmaxvπ(s)
类似地,可以定义最优动作价值函数
q
∗
(
s
,
a
)
≐
max
π
q
π
(
s
,
a
)
q_*(s,a)\doteq\mathop {\max }\limits_\pi q_\pi(s,a)
q∗(s,a)≐πmaxqπ(s,a)
上面这个式子,定义了在状态
s
s
s下,先采取动作
a
a
a,环境会以一定的概率转移到下一个状态
s
′
s^{\prime}
s′。在新的状态
s
′
s^{\prime}
s′及之后都按照最优策略去决策就会的到新的新状态的最有状态价值函数
v
∗
(
s
′
)
v_*(s^{\prime})
v∗(s′)。如果所有的
v
∗
(
s
′
)
v_*(s^{\prime})
v∗(s′)都是已知的,那么很容易就能计算出
q
∗
(
s
,
a
)
q_*(s,a)
q∗(s,a):
q
∗
(
s
,
a
)
=
∑
s
′
∈
S
p
(
s
′
∣
s
,
a
)
[
r
+
γ
v
∗
(
s
′
)
]
\begin{aligned}q_*(s,a)&=\sum_{s^{\prime}\in\mathcal{S}}p(s^{\prime}|s,a)\left[r+\gamma v_*(s^{\prime})\right] \end{aligned}
q∗(s,a)=s′∈S∑p(s′∣s,a)[r+γv∗(s′)]
那么问题来了,
v
∗
(
s
′
)
v_*(s^{\prime})
v∗(s′)怎么计算?很简单
v
∗
(
s
′
)
=
max
a
′
∈
A
q
∗
(
s
′
,
a
′
)
v_*(s^{\prime})=\mathop {\max }\limits_{a^{\prime}\in\mathcal{A}} q_*(s^{\prime},a^{\prime})
v∗(s′)=a′∈Amaxq∗(s′,a′)
怎么理解这个式子呢?这里直接把最大的作为结果,当然不会比求期望的结果更差。比如随机变量
x
x
x以概率0.2,0.3,0.5分别取值4,2,2。那么
E
[
x
]
=
0.2
×
4
+
0.3
×
2
+
0.5
×
2
=
2.4
\mathbb E[x]=0.2\times4+0.3\times2+0.5\times2=2.4
E[x]=0.2×4+0.3×2+0.5×2=2.4,而
max
(
x
)
=
4
\max(x)=4
max(x)=4。
有了上面这个式子,我们可以写出基于动作价值函数的贝尔曼最优方程
q
∗
π
(
s
,
a
)
=
∑
s
′
∈
S
p
(
s
′
∣
s
,
a
)
[
r
+
γ
∑
a
′
∈
A
π
(
a
′
∣
s
′
)
q
∗
(
s
′
,
a
′
)
]
\begin{aligned}q_*\pi(s,a)=\sum_{s^{\prime}\in\mathcal{S}}p(s^{\prime}|s,a)\left[r+\gamma \sum_{a^{\prime}\in\mathcal{A}}\pi(a^{\prime}|s^{\prime})q_*(s^{\prime},a^{\prime})\right] \end{aligned}
q∗π(s,a)=s′∈S∑p(s′∣s,a)[r+γa′∈A∑π(a′∣s′)q∗(s′,a′)]
可能有人会觉得这里是套娃,实际上不是的。考虑倒数第二个状态 S T − 1 S_{T-1} ST−1,那么直接遍历所有动作找到即使奖励最大的那个就能计算出 q ∗ ( s T − 1 , a T − 1 ) q_*(s_{T-1},a_{T-1}) q∗(sT−1,aT−1),此后回溯即可。但是状态和动作空间非常大,交互轨迹很长的时候,这种回溯太难了,而且需要知道环境是如何转移的。如果状态转移的模型不知道,就需要后面介绍的蒙特卡洛、时间差分等方法加以解决。
3.2 最优策略
直观地,最优策略是
π
∗
=
arg
max
π
E
τ
∼
π
[
∑
k
=
0
∞
γ
k
R
t
+
k
+
1
∣
S
t
=
s
]
\pi_*= \mathop {\arg \max }\limits_\pi\mathbb{E}{_{\tau\sim\pi} }\left[ {\sum\limits_{k = 0}^\infty {{\gamma ^k}} {R_{t + k + 1}}|{S_t} = s} \right]
π∗=πargmaxEτ∼π[k=0∑∞γkRt+k+1∣St=s]
但是我们既然有了最优动作价值函数
q
∗
(
s
,
a
)
q_*(s,a)
q∗(s,a),那么
π
∗
\pi_*
π∗直接按照以下贪婪的方式进行决策:
a ∗ = arg max a ∈ A q ∗ ( s , a ) a_*=\mathop {\arg\max }\limits_{a\in\mathcal{A}} q_*(s,a) a∗=a∈Aargmaxq∗(s,a)