绪论
试错学习:
- 尝试:采取一系列动作或行为来尝试解决问题或实现目标。
- 错误:在尝试的过程中可能会出现错误,这些错误可能是环境的不确定性导致的,也可能是自身的不当行为导致的。
- 结果:每次尝试的后果,无论是积极的还是消极的,都会对下一次尝试产生影响。
- 学习:通过不断地尝试并出现错误,自身会逐渐积累经验,了解哪些动作或行为会产生有利的结果,从而在下一次尝试中做出更加明智的选择。
一次次的决策来实现目标,这个目标通常是以最大化累积的奖励来呈现的,这个过程就是序列决策过程,而强化学习就是解决序列决策问题的有效方法之一。
分类:基于价值的和基于策略梯度的算法
方向:
- 多智能体强化学习(MARL):非静态问题,信号问题,信誉分配问题,博弈场景
- 从数据中学习(从演示中学习):以模仿学习为代表的从专家数据中学习策略、以逆强化学习( inverse reinforcement learning,IRL )为代表的从人类数据中学习奖励函数和以及从人类反馈中学习(reinforcement learning from huamn feedback,RLHF)为代表的从人类标注的数据中学习奖励模型来进行微调(fine-tune)。此外,还包括离线强化学习(offline reinforce learning)、世界模型(world model)等等。
探索策略( exploration strategy ):常用的方法有 ϵ \epsilon ϵ−greedy和置信上界( upper confidence bound,UCB )等等
实时环境( real-time environment ):离线强化学习( offline reinforcement learning ),世界模型( world model )
多任务强化学习( multi-task reinforcement learning ):联合训练( joint training )和分层强化学习( hierarchical reinforcement learning )、
马尔可夫决策过程
最大化累积的奖励:目标是使得在交互过程中得到的奖励之和 r 1 + r 2 + ⋯ + r T r_1+r_2+⋯+r_T r1+r2+⋯+rT尽可能最大,其中T表示当前交互过程中的最后一个时步,也就是最大步数,从 t=0 和 t+T 这一段时步我们称为一个回合( episode )。t=0 和 t+1之间和现实时间无关,取决于反馈所需时间。
马尔可夫性质
在给定历史状态
s
0
,
s
1
,
⋯
,
s
t
s_0,s_1,\cdots,s_t
s0,s1,⋯,st 的情况下,某个状态的未来只与当前状态
s
t
s_t
st有关,与历史的状态无关。
P
(
s
t
+
1
∣
s
t
)
=
P
(
s
t
+
1
∣
s
0
,
s
1
,
⋯
,
s
t
)
P(s_{t+1}|s_t)=P(s_{t+1}|s_0,s_1,\cdots,s_t)
P(st+1∣st)=P(st+1∣s0,s1,⋯,st)
回报
有限步数:
G
t
=
r
t
+
r
t
+
1
+
⋯
+
r
T
G_t=r_t+r_{t+1}+⋯+r_T
Gt=rt+rt+1+⋯+rT
持续性任务(
T
=
∞
T=\infty
T=∞):引入折扣因子
γ
∈
[
0
,
1
]
\gamma\in[0,1]
γ∈[0,1]
G
t
=
R
t
+
1
+
γ
R
t
+
2
+
γ
2
R
t
+
3
+
⋯
=
∑
k
=
0
∞
γ
k
R
t
+
k
+
1
G_t=R_{t+1}+\gamma R_{t+2}+\gamma^2R_{t+3}+\cdots=\sum_{k=0}^\infty\gamma^kR_{t+k+1}
Gt=Rt+1+γRt+2+γ2Rt+3+⋯=k=0∑∞γkRt+k+1
γ
\gamma
γ考虑未来奖励的重要程度,
γ
=
0
\gamma=0
γ=0只会关心当前的奖励,
γ
\gamma
γ接近 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}& \doteq R_{t+1}+\gamma R_{t+2}+\gamma^2R_{t+3}+\gamma^3R_{t+4}+\cdots \\ &=R_{t+1}+\gamma\left(R_{t+2}+\gamma R_{t+3}+\gamma^2R_{t+4}+\cdots\right) \\ &=R_{t+1}+\gamma 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
状态转移矩阵
大多数强化学习场景用的是有限状态马尔可夫决策过程
马尔可夫链(Markov Chain) 用图表示马尔可夫决策过程中的状态流向而不包括动作、奖励等元素(离散时间的马尔可夫过程(Markov Process))
状态转移矩阵(同一个状态所有状态转移概率加起来是等于 1 的)
P
s
s
′
=
(
p
11
p
12
⋯
p
1
n
p
21
p
22
⋯
p
2
n
⋮
⋮
⋱
⋮
p
n
1
p
n
2
⋯
p
n
n
)
P_{ss^{\prime}}=\begin{pmatrix}p_{11}&p_{12}&\cdots&p_{1n}\\p_{21}&p_{22}&\cdots&p_{2n}\\\vdots&\vdots&\ddots&\vdots\\p_{n1}&p_{n2}&\cdots&p_{nn}\end{pmatrix}
Pss′=
p11p21⋮pn1p12p22⋮pn2⋯⋯⋱⋯p1np2n⋮pnn
状态转移矩阵是环境的一部分
马尔可夫链
→
奖励
马尔可夫奖励过程
→
动作
马尔可夫决策过程
马尔可夫链\xrightarrow{奖励}马尔可夫奖励过程\xrightarrow{动作}马尔可夫决策过程
马尔可夫链奖励马尔可夫奖励过程动作马尔可夫决策过程
五元组
<
S
,
A
,
R
,
P
,
γ
>
<S,A,R,P,\gamma>
<S,A,R,P,γ> 来表示马尔可夫决策过程:其中S表示状态空间,即所有状态的集合,A表示动作空间,R 表示奖励函数,P 表示状态转移矩阵,
γ
\gamma
γ 表示折扣因子
习题2
1.强化学习所解决的问题一定要严格满足马尔可夫性质吗?请举例说明。
强化学习所解决的问题不一定要严格满足马尔可夫性质。例如一个强化学习的问题是在一个扑克牌游戏中赢得对手,那么这个问题就不满足马尔可夫性质,因为机器人在每一轮只能观察到自己的牌和公共的牌,而不能观察到对手的牌和之前的出牌顺序,而这些信息都会影响未来的状态和奖励。
2.马尔可夫决策过程主要包含哪些要素?
S状态空间,A动作空间,R 奖励函数,P 状态转移矩阵, γ \gamma γ 折扣因子
3.马尔可夫决策过程与金融科学中的马尔可夫链有什么区别与联系?
马尔可夫链
(
状态及其转移
)
→
奖励,动作
马尔可夫决策过程
<
S
,
A
,
R
,
P
,
γ
>
马尔可夫链(状态及其转移)\xrightarrow{奖励,动作}马尔可夫决策过程<S,A,R,P,\gamma>
马尔可夫链(状态及其转移)奖励,动作马尔可夫决策过程<S,A,R,P,γ>
马尔可夫链是一种随机过程,它具有马尔可夫性质,即未来的状态只依赖于当前的状态,而与过去的状态和动作无关。马尔可夫链可以用一个状态空间S和一个状态转移概率矩阵P来描述,其中S是所有可能的状态的集合,P是一个S×S的矩阵,P[i,j]表示从状态i转移到状态j的概率。
马尔可夫决策过程是马尔可夫链的推广,它不仅考虑了状态的转移,还考虑了动作的选择和奖励的激励。在每个时间步,决策者可以在当前状态下选择一个动作,然后根据状态转移概率函数进入下一个状态,并获得一个即时奖励。马尔可夫决策过程的目标是找到一个最优策略,即在每个状态下选择一个最优动作,使得长期累积的奖励最大化。
动态规划
在强化学习中,动态规划被用于求解值函数和最优策略。常见的动态规划算法包括值迭代(Value Iteration)、策略迭代(Policy Iteration)和 Q-learning 算法等。
动态规划问题有三个性质,最优化原理、无后效性和有重叠子问题
最优化原理:
G
t
=
R
t
+
1
+
γ
G
t
+
1
G_{t} = R_{t+1}+\gamma G_{t+1}
Gt=Rt+1+γGt+1
我们要解决 G t + 1 G_{t+1} Gt+1的问题,可以一次拆分成解决 G t , G t − 1 , ⋯ , G 1 G_{t}, G_{t-1},\cdots,G_{1} Gt,Gt−1,⋯,G1的问题
编程思想
m×n 网格到达终点的路径数目问题:确定状态,写出状态转移方程和寻找边界条件
机器人处于(i,j)的位置时,它的前一个坐标只能是上边一格(i,j-1)或者左边一格(i-1,j)
f
(
i
,
j
)
=
f
(
i
−
1
,
j
)
+
f
(
i
,
j
−
1
)
f(i,j) = f(i-1,j) + f(i,j-1)
f(i,j)=f(i−1,j)+f(i,j−1)
考虑边界条件后:起始点
(
0
,
0
)
(0,0)
(0,0) 为0,第一行/列上的点为1
f ( i , j ) = { 0 , i = 0 , j = 0 1 , i = 0 , j ≠ 0 1 , i ≠ 0 , i = 0 f ( i − 1 , j ) + f ( i , j − 1 ) f(i,j)=\left\{\begin{array}{c} 0, i=0, j=0 \\ 1, i=0, j \neq 0 \\ 1, i \neq 0, i=0 \\ f(i-1,j) + f(i,j-1) \end{array}\right. f(i,j)=⎩ ⎨ ⎧0,i=0,j=01,i=0,j=01,i=0,i=0f(i−1,j)+f(i,j−1)
def solve(m,n):
# 初始化边界条件
f = [[1] * n] + [[1] + [0] * (n - 1) for _ in range(m - 1)]
# 状态转移
for i in range(1, m):
for j in range(1, n):
f[i][j] = f[i - 1][j] + f[i][j - 1]
return f[m - 1][n - 1]
解释
f = [[1] * n] + [[1] + [0] * (n - 1) for _ in range(m - 1)]
- 列表推导式,语法是
[表达式 for 变量 in 可迭代对象 if 条件]
,它可以根据一个已有的列表或其他可迭代对象来生成一个新的列表。 [[1] * n]
表示一个只有一个元素的列表,这个元素是一个包含 n 个 1 的列表,例如[[1] * 3]
就是[[1, 1, 1]]
。[[1] + [0] * (n - 1) for _ in range(m - 1)]
表示一个包含 m - 1 个元素的列表,每个元素都是一个包含 n 个元素的列表,其中第一个元素是 1,其余元素都是 0,例如[[1] + [0] * (3 - 1) for _ in range(3 - 1)]
就是[[1, 0, 0],[1, 0, 0]]
。+
把两个列表合并成一个更长的列表。因此,这行代码的结果mxn矩阵,其中第一行和第一列都是 1,其余元素都是 0,例如f = [[1] * 3] + [[1] + [0] * (3 - 1) for _ in range(2 - 1)]
就是[[1, 1, 1], [1, 0, 0],[1, 0, 0]]
。
状态价值函数和动作价值函数
奖励函数是下一次的奖励,价值函数是累计的奖励,都是预测一个期望
状态价值函数用于评估智能体进 入某个状态后,可以对后面的奖励带来多大的影响。价值函数值越大,说明智能体进入这个状态越有利。
状态价值函数(state-value function),从特定状态出发,按照某种策略 π \pi π进行决策所能得到的回报 G t G_t Gt期望值,注意这里的回报是带有折扣因子 γ \gamma γ的,越往后的奖励折扣越多。
折扣因子 γ \gamma γ作用:避免无穷奖励,对未来的不确定而打个折扣,希望尽快奖励。(超参)
期望
E
π
\mathbb{E}_{\pi}
Eπ 的下标是
π
\pi
π 函数,
π
\pi
π 函数的值可反映在我们使用策略
π
\pi
π 的时候,到底可以得到多少奖励
V
π
(
s
)
=
E
π
[
R
t
+
γ
R
t
+
1
+
γ
2
R
t
+
2
+
⋯
∣
S
t
=
s
]
=
E
π
[
G
t
∣
S
t
=
s
]
\begin{aligned} V_\pi(s) &=\mathbb{E}_{\pi}[R_t+\gamma R_{t+1}+\gamma^2 R_{t+2} + \cdots |S_t=s ] \\ &=\mathbb{E}_{\pi}[G_t|S_t=s ] \end{aligned}
Vπ(s)=Eπ[Rt+γRt+1+γ2Rt+2+⋯∣St=s]=Eπ[Gt∣St=s]
动作价值函数(action-value function):预测的奖励不仅考虑状态还考虑动作
Q π ( s , a ) = E π [ G t ∣ s t = s , a t = a ] Q_\pi(s, a)=\mathbb{E}_\pi\left[G_t \mid s_t=s, a_t=a\right] Qπ(s,a)=Eπ[Gt∣st=s,at=a]
关系:给定状态
s
s
s的情况下,智能体所有动作的价值期望(所有动作价值函数乘以对应动作的概率之和)就等于该状态的价值(全期望公式)
V
π
(
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
Q
π
(
s
,
a
)
V_\pi(s)=\sum_{a \in A} \pi(a \mid s) Q_\pi(s, a)
Vπ(s)=a∈A∑π(a∣s)Qπ(s,a)
π
(
a
∣
s
)
\pi(a|s)
π(a∣s)表示随机性策略函数,一般指在状态
s
s
s下执行动作
a
a
a的概率分布。比如可能是有 0.7 的概率往左,0.3 的概率往右,那么通过采样就可以得到智能体将采取的动作.
贝尔曼方程
满足动态规划的最优化原理,即将前后两个状态价值函数之间联系起来,以便于递归地解决问题。
贝尔曼方程(Bellman Equation)
状态价值函数:
V
π
(
s
)
=
E
π
[
G
t
∣
S
t
=
s
]
=
E
π
[
R
t
+
1
+
γ
R
t
+
2
+
γ
2
R
t
+
3
+
⋯
∣
S
t
=
s
]
=
E
[
R
t
+
1
∣
s
t
=
s
]
+
γ
E
[
R
t
+
2
+
γ
R
t
+
3
+
γ
2
R
t
+
4
+
⋯
∣
S
t
=
s
]
=
R
(
s
)
+
γ
E
[
G
t
+
1
∣
S
t
=
s
]
=
R
(
s
)
+
γ
E
[
V
π
(
s
t
+
1
)
∣
S
t
=
s
]
=
R
(
s
)
+
γ
∑
s
′
∈
S
P
(
S
t
+
1
=
s
′
∣
S
t
=
s
)
V
π
(
s
′
)
=
R
(
s
)
⏟
即时奖励
+
γ
∑
s
′
∈
S
p
(
s
′
∣
s
)
V
(
s
′
)
⏟
未来奖励的折扣总和
\begin{aligned} V_{\pi}(s) & =\mathbb{E}_{\pi}\left[G_t \mid S_t=s\right] \\ & =\mathbb{E}_{\pi}\left[R_{t+1}+\gamma R_{t+2}+\gamma^2 R_{t+3}+\cdots \mid S_t=s\right] \\ & =\mathbb{E}\left[R_{t+1} \mid s_t=s\right]+\gamma \mathbb{E}\left[R_{t+2}+\gamma R_{t+3}+\gamma^2 R_{t+4}+\cdots \mid S_t=s\right] \\ & =R(s)+\gamma \mathbb{E}\left[G_{t+1} \mid S_t=s\right] \\ & =R(s)+\gamma \mathbb{E}\left[V_{\pi}\left(s_{t+1}\right) \mid S_t=s\right] \\ & =R(s)+\gamma \sum_{s^{\prime} \in S} P\left(S_{t+1}=s^{\prime} \mid S_{t}=s\right) V_{\pi}\left(s^{\prime}\right)\\ & =\underbrace{R(s)}_{\text {即时奖励}}+\underbrace{\gamma \sum_{s^{\prime} \in S} p\left(s^{\prime} \mid s\right) V\left(s^{\prime}\right)}_{\text {未来奖励的折扣总和}} \end{aligned}
Vπ(s)=Eπ[Gt∣St=s]=Eπ[Rt+1+γRt+2+γ2Rt+3+⋯∣St=s]=E[Rt+1∣st=s]+γE[Rt+2+γRt+3+γ2Rt+4+⋯∣St=s]=R(s)+γE[Gt+1∣St=s]=R(s)+γE[Vπ(st+1)∣St=s]=R(s)+γs′∈S∑P(St+1=s′∣St=s)Vπ(s′)=即时奖励
R(s)+未来奖励的折扣总和
γs′∈S∑p(s′∣s)V(s′)
动作价值函数:
Q
π
(
s
,
a
)
=
R
(
s
,
a
)
+
γ
∑
s
′
∈
S
p
(
s
′
∣
s
,
a
)
∑
a
′
∈
A
π
(
a
′
∣
s
′
)
Q
π
(
s
′
,
a
′
)
Q_{\pi}(s,a) = R(s,a) + \gamma \sum_{s^{\prime} \in S} p\left(s^{\prime} \mid s,a\right) \sum_{a^{\prime} \in A} \pi\left(a^{\prime} \mid s ^{\prime} \right)Q_{\pi}\left(s^{\prime},a'\right)
Qπ(s,a)=R(s,a)+γs′∈S∑p(s′∣s,a)a′∈A∑π(a′∣s′)Qπ(s′,a′)
贝尔曼最优方程(Bellman optimality equation)
在最优策略下,状态价值函数也是最优的,相应的动作价值函数也最优。
最优策略下累积的回报最大化的状态价值函数可以表示为:
V
∗
(
s
)
=
max
a
E
[
R
t
+
1
+
γ
V
∗
(
S
t
+
1
)
∣
S
t
=
s
,
A
t
=
a
]
=
max
a
∑
s
′
,
r
p
(
s
′
,
r
∣
s
,
a
)
[
r
+
γ
V
∗
(
s
′
)
]
\begin{aligned} V^{*}(s)&=\max _a \mathbb{E}\left[R_{t+1}+\gamma V^{*}\left(S_{t+1}\right) \mid S_t=s, A_t=a\right] \\ &=\max_a \sum_{s',r}p(s',r|s,a)[r+\gamma V^{*}(s')] \end{aligned}
V∗(s)=amaxE[Rt+1+γV∗(St+1)∣St=s,At=a]=amaxs′,r∑p(s′,r∣s,a)[r+γV∗(s′)]
动作价值函数:
Q
∗
(
s
,
a
)
=
E
[
R
t
+
1
+
γ
max
a
′
Q
∗
(
S
t
+
1
,
a
′
)
∣
S
t
=
s
,
A
t
=
a
]
=
∑
s
′
,
r
p
(
s
′
,
r
∣
s
,
a
)
[
r
+
γ
max
a
′
Q
∗
(
s
′
,
a
′
)
]
\begin{aligned} Q^{*}(s, a) & =\mathbb{E}\left[R_{t+1}+\gamma \max _{a^{\prime}} Q^{*}\left(S_{t+1}, a^{\prime}\right) \mid S_t=s, A_t=a\right] \\ & =\sum_{s^{\prime}, r} p\left(s^{\prime}, r \mid s, a\right)\left[r+\gamma \max _{a^{\prime}} Q^{*}\left(s^{\prime}, a^{\prime}\right)\right] \end{aligned}
Q∗(s,a)=E[Rt+1+γa′maxQ∗(St+1,a′)∣St=s,At=a]=s′,r∑p(s′,r∣s,a)[r+γa′maxQ∗(s′,a′)]
策略和价值迭代
策略迭代比价值迭代收敛要快一些。因为其可以几乎不花时间在 π \pi π和 V V V之间跳跃从而越过中间可能存在的点 V 12 ′ , V 12 ′ ′ , V 12 ′ ′ ′ V_{12}^{\prime},V_{12}^{\prime\prime},V_{12}^{\prime\prime\prime} V12′,V12′′,V12′′′.
习题3
1.动态规划问题的主要性质有哪些?
最优子结构性质:如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具有最优子结构性质。这意味着我们可以通过求解子问题的最优解,来构造原问题的最优解。
重叠子问题性质:如果在用递归算法自顶向下求解问题时,每次产生的子问题并不总是新问题,有些子问题会被重复计算多次,我们就称该问题具有重叠子问题性质。这意味着我们可以通过记忆化存储已经求解过的子问题的解,来避免重复计算,提高效率。
无后效性:如果某个状态一旦确定,就不受这个状态以后的决策的影响,我们就称该问题具有无后效性。这意味着我们可以只关注当前的状态,而不用考虑未来的状态。
2.状态价值函数和动作价值函数之间的关系是什么?
V π ( s ) = ∑ a ∈ A π ( a ∣ s ) Q π ( s , a ) V_\pi(s)=\sum_{a \in A} \pi(a \mid s) Q_\pi(s, a) Vπ(s)=∑a∈Aπ(a∣s)Qπ(s,a)状态价值函数是所有可能动作的动作价值函数的期望
3.策略迭代和价值迭代哪个算法速度会更快?
策略迭代的优点是收敛速度较快,但是计算量较大,需要对整个状态空间进行遍历。价值迭代的优点是计算量较小,只需要一次迭代就可以进行策略改进,但是收敛速度较慢。