本分类专栏博客系列是学习《深入浅出强化学习原理入门》的学习总结。
书籍链接:链接:https://pan.baidu.com/s/1p0qQ68pzTb7_GK4Brcm4sw 提取码:opjy
文章目录
马尔科夫决策过程
1. 强化学习的基本原理
强化学习过程
智能体在完成某项任务时,⾸先通 过动作A与周围环境进⾏交互,在动作A和环境的作⽤下,智能体会产⽣新 的状态,同时环境会给出⼀个⽴即回报。如此循环下去,智能体与环境不 断地交互从⽽产⽣很多数据。强化学习算法利⽤产⽣的数据修改⾃⾝的动 作策略,再与环境交互,产⽣新的数据,并利⽤新的数据进⼀步改善⾃⾝ 的⾏为,经过数次迭代学习后,智能体能最终学到完成相应任务的最优动 作(最优策略)
强化学习与监督、非监督学习的区别?
在监督学习和⾮监督学习中,数据是静态的、 不需要与环境进⾏交互,⽐如图像识别,只要给出⾜够的差异样本,将数据输⼊深度⽹络中进⾏训练即可。然⽽,强化学习的学习过程是动态的、 不断交互的过程,所需要的数据也是通过与环境不断交互所产⽣的。
强化学习更像是⼈的学习过程: ⼈类通过与周围环境交互,学会了⾛路,奔跑,劳动;⼈类与⼤⾃然,与 宇宙的交互创造了现代⽂明。
深度学习如图像识别和语⾳识别解决 的是感知的问题,强化学习解决的是决策的问题。⼈⼯智能的终极⽬的是 通过感知进⾏智能决策。
2. ⻢尔科夫性
所谓⻢尔科夫性是指系统的下⼀个状态 s t + 1 s_{t+1} st+1 仅与当前状态 s t s_t st 有关,⽽与以前的状态⽆关。
状态 s t s_t st 是⻢尔科夫的,当且仅当: P [ s t + 1 ∣ s t ] = P [ s t + 1 ∣ s 1 , … , s t ] P[s_{t+1} |s_t ]=P[s_{t+1} |s_1 ,…,s_t ] P[st+1∣st]=P[st+1∣s1,…,st]。
3. ⻢尔科夫过程
⻢尔科夫过程的定义:⻢尔科夫过程是⼀个⼆元组
(
S
,
P
)
(S,P)
(S,P),且满 ⾜:
S
S
S是有限状态集合,
P
P
P是状态转移概率。状态转移概率矩阵为:
如图2.2所⽰为⼀个学⽣的7种状态{娱乐,课程1,课程2,课程3,考过,睡觉,论⽂},每种状态之间的转换概率如图所⽰。则该⽣从课程 1 开始⼀天可能的状态序列为:
课1-课2-课3-考过-睡觉
课1-课2-睡觉
以上状态序列称为⻢尔科夫链。当给定状态转移概率时,从某个状态出发存在多条⻢尔科夫链。
4. ⻢尔科夫决策过程
将动作(策略)和回报考虑在内的⻢尔科夫过程称为⻢尔科夫决策过程。
4.1 符号化描述
⻢尔科夫决策过程由元组
(
S
,
A
,
P
,
R
,
γ
)
(S,A,P,R,γ)
(S,A,P,R,γ)描述,其中:
S
S
S 为有限的状态集
A
A
A 为有限的动作集
P
P
P 为状态转移概率
R
R
R 为回报函数
γ
γ
γ 为折扣因⼦,⽤来计算累积回报。
注意,跟⻢尔科夫过程不同的是,⻢尔科夫决策过程的状态转移概率 是包含动作的,即:
P
S
S
′
a
=
P
[
S
t
+
1
=
s
′
∣
S
t
=
s
,
A
t
=
a
]
P_{SS'}^a = P[{S_{t + 1}} = s'|{S_t} = s,{A_t} = a]
PSS′a=P[St+1=s′∣St=s,At=a]
在图2.3中, 学⽣有五个状态,状态集为S={s1 ,s2 ,s3 ,s4 ,s5 },动作集为A= {玩,退出,学习,发表,睡觉},在图2.3中⽴即回报⽤R标记。
强化学习的⽬标是给定⼀个⻢尔科夫决策过程,寻找最优策略。所谓 策略是指状态到动作的映射,策略常⽤符号
π
π
π表⽰,它是指给定状态
s
s
s时, 动作集上的⼀个分布,即:
π
(
a
∣
s
)
=
p
[
A
t
=
a
∣
S
t
=
s
]
\pi (a|s) = p[{A_t} = a|{S_t} = s]
π(a∣s)=p[At=a∣St=s]
策略 π π π在每个状态 s s s指定⼀个动作概 率。如果给出的策略 π π π是确定性的,那么策略 π π π在每个状态 s s s指定⼀个确定的动作。例如其中⼀个学⽣的策略为 π 1 ( 玩 ∣ s 1 ) = 0.8 π_1(玩|s_1)=0.8 π1(玩∣s1)=0.8,是指该学⽣在状态 s 1 s_1 s1 时玩的概率为 0.8 0.8 0.8,不玩的概率是 0.2 0.2 0.2,显然这个学⽣更喜欢玩。
强化学习是找到最优的策略,这⾥的最优是指得到的总回报最⼤。
4.2 累积回报
当给定⼀个策略
π
π
π时,我们就可以计算累积回报了。⾸先定义累积回报
当给定策略
π
π
π时,假设从状态
s
1
s_1
s1 出发,学⽣状态序列可能为
此时,在策略 π π π下,利⽤ G t G_t Gt那个公式可以计算累积回报 G 1 G_1 G1 ,此时 G 1 G_1 G1 有 多个可能值。由于策略 π π π是随机的,因此累积回报也是随机的。为了评价状态 s 1 s_1 s1 的价值,我们需要定义⼀个确定量来描述状态 s 1 s_1 s1 的价值,很⾃然的想法是利⽤累积回报来衡量状态 s 1 s_1 s1 的价值。然⽽,累积回报 G 1 G_1 G1 是个随机变 量,不是⼀个确定值,因此⽆法描述,但其期望是个确定值,可以作为状态值函数的定义。
4.3 价值函数:状态值函数与状态-⾏为值函数
1. 状态值函数的定义
当智能体采⽤策略
π
π
π时,累积回报服从⼀个分布,累积回报在状态
s
s
s处的期望值定义为状态值函数:
注意:状态值函数是与策略
π
π
π相对应的,这是因为策略π决定了累积回报
G
G
G的状态分布。图2.4是与图2.3相对应的状态值函数图。图中空⼼圆圈中的数值为该状 态下的值函数。即:
υ
π
(
s
1
)
=
−
2.3
,
υ
π
(
s
2
)
=
−
1.3
,
υ
π
(
s
3
)
=
2.7
,
υ
π
(
s
4
)
=
7.4
,
υ
π
(
s
5
)
=
0
υ_π (s_1 )=-2.3,υ_π (s_2 )=-1.3,υ_π (s_3 )=2.7,υ_π (s_4 )=7.4,υ_π (s_5 )=0
υπ(s1)=−2.3,υπ(s2)=−1.3,υπ(s3)=2.7,υπ(s4)=7.4,υπ(s5)=0
2. 状态-⾏为值值函数的定义
相应地,状态-⾏为值函数为
上面分别给出了状态值函数和状态-⾏为值函数的定 义计算式,但在实际真正计算和编程的时候并不会按照定义式编程。接下 来我们会从不同的⽅⾯对定义式进⾏解读。
3. 状态值函数和状态-行为值函数的区别
-
状态值函数V:从状态 x 0 x_0 x0 开始, 所有的动作 a a a,都是执行某个策略 π π π的结果,最后求每个动作带来累积奖赏;
-
状态-动作函数Q:从状态 x 0 x_0 x0 开始,先执行动作 a 0 a_0 a0, 然后再执行某个策略 π π π,再求相应的积累奖赏。
4. 状态值函数的具体推导过程
如下图所示:其中空⼼圆圈表⽰状态,实⼼圆圈表⽰状态-⾏为对。
图2.5为值函数的计算分解⽰意图,图2.5B计算公式为
上式中,
π
(
a
∣
s
)
\pi(a|s)
π(a∣s)表示在状态
s
s
s时做动作
a
a
a的概率。
q
π
(
s
,
a
)
q_{\pi}(s,a)
qπ(s,a)表示状态-行为值函数。我们可以理解为求解离散型随机变量的期望:概率乘以值。
图2.5B给出了状态值函数与状态-⾏为值函数的关系。图2.5C计算状态- ⾏为值函数为
在这里,回顾一下状态行为值函数:从状态
x
0
x_0
x0 开始,先执行动作
a
0
a_0
a0, 然后再执行某个策略
π
π
π,再求相应的积累奖赏。
我们可以理解为,当前状态的积累奖赏加上转移状态的行为奖赏。
将(2.8)式代⼊(2.7)式可以得到:
公式(2.9)可以在图2.4中进⾏验证。选择状态
s
4
s_4
s4 处。由图2.4知道
v
(
s
4
)
=
7.4
v(s4 )=7.4
v(s4)=7.4,由公式(2.9)得
保留⼀位⼩数为7.4。 计算状态值函数的⽬的是为了构建学习算法从数据中得到最优策略。 每个策略对应着⼀个状态值函数,最优策略⾃然对应着最优状态值函数。
4. 状态-行为值函数的具体推导过程
在2.6C中,
将(2.10)代⼊(2.8)中,得到状态-⾏为值函数:
4.4 状态值函数与状态-⾏为值函数的⻉尔曼⽅程
我们先来讲一下什么是贝尔曼方程:贝尔曼方程,又叫动态规划方程,是以Richard Bellman命名的,表示动态规划问题中相邻状态关系的方程。某些决策问题可以按照时间或空间分成多个阶段,每个阶段做出决策从而使整个过程取得效果最优的多阶段决策问题,可以用动态规划方法求解。某一阶段最优决策的问题,通过贝尔曼方程转化为下一阶段最优决策的子问题,从而初始状态的最优决策可以由终状态的最优决策(一般易解)问题逐步迭代求解。存在某种形式的贝尔曼方程,是动态规划方法能得到最优解的必要条件。绝大多数可以用最优控制理论解决的问题,都可以通过构造合适的贝尔曼方程来求解。
首先我们从value function的角度进行理解,value function可以分为两部分:
- 立即回报 R t + 1 R_{t+1} Rt+1
- 后继状态的折扣价值函数 γ v ( S t + 1 ) \gamma v(S_{t+1}) γv(St+1)
由状态值函数的定义式(2.3)可以得到状态值函数的⻉尔曼⽅程:
解释一下,
- 从状态 s s s到状态 s + 1 s+1 s+1是不确定的,比如掷骰子游戏,当前点数是1的情况下,下一个状态有可能是1,2,3,4,5,6的任意一种状态可能,所以最外层会有一个期望符号。
- 如果我们跟着一直推下来的话:有疑问的会在导出最后一行时,将 G t + 1 G_{t+1} Gt+1 变成了 v t + 1 v_{t+1} vt+1 。其理由是收获的期望等于收获的期望的期望。参考叶强童鞋的理解。
通过方程可以看出 v ( s ) v(s) v(s)由两部分组成,一是该状态的即时奖励期望,即时奖励期望等于即时奖励,因为根据即时奖励的定义,它与下一个状态无关;这里解释一下为什么会有期望符合,是因为从状态 s s s到下一个状态 s + 1 s+1 s+1可能有多个状态,比如掷骰子,下一个状态可能有1,2,3,4,5,6,从 s s s到下一个状态都是有一定概率,所以会有期望符合。
另一个是下一时刻状态的价值期望,可以根据下一时刻状态的概率分布得到其期望,比如在上面掷骰子例子中,从状态1到下一个状态1,2,3,4,5,6求期望的做法,我们可以直接用概率公式 p ( 1 → 1 ) , p ( 1 → 2 ) , p ( 1 → 3 ) , p ( 1 → 4 ) , p ( 1 → 5 ) , p ( 1 → 6 ) p(1 \to 1),p(1 \to 2),p(1 \to 3),p(1 \to 4),p(1 \to 5),p(1 \to 6) p(1→1),p(1→2),p(1→3),p(1→4),p(1→5),p(1→6)然后乘以对应下一状态的价值函数即可。
如果用
s
’
s’
s’表示
s
s
s状态下一时刻任一可能的状态,那么Bellman方程可以写成:
同样我们可以得到状态-动作值函数的⻉尔曼⽅程:
4.5 最优策略的选择
计算状态值函数的⽬的是为了构建学习算法从数据中得到最优策略。 每个策略对应着⼀个状态值函数,最优策略⾃然对应着最优状态值函数。
定义:最优状态值函数 v ∗ ( s ) v^*(s) v∗(s) 为在所有策略中值最⼤的值函数,即 v ∗ ( s ) = max π v π ( s ) {v^*}(s) = \mathop {\max }\limits_\pi {v_\pi }(s) v∗(s)=πmaxvπ(s) ,最优状态-⾏为值函数 q ∗ ( s , a ) q^*(s,a) q∗(s,a)为在所有策略中最⼤的状态-⾏为值函数,即 q ∗ ( s , a ) = max π q π ( s , a ) {q^*}(s,a) = \mathop {\max }\limits_\pi {q_\pi }(s,a) q∗(s,a)=πmaxqπ(s,a)
我们由(2.9)式和(2.11)式分别得到最优状态值函数和最优状态-⾏动值函数的⻉尔曼最优⽅程:
若已知最优状态-动作值函数,最优策略可通过直接最⼤化
q
∗
(
s
,
a
)
q^*(s,a)
q∗(s,a)来决定。
如图2.7所⽰为最优状态值函数⽰意图,图中虚线箭头所⽰的动作为最 优策略。
⾄此,我们将强化学习的基本理论即⻢尔科夫决策过程介绍完毕。现 在该对强化学习算法进⾏形式化描述了。
我们定义⼀个离散时间有限范围的折扣⻢尔科夫决策过程:
M
=
(
S
,
A
,
P
,
r
,
ρ
0
,
γ
,
T
)
M=(S, A,P,r,ρ0 ,γ,T)
M=(S,A,P,r,ρ0,γ,T),
- S S S:状态集
- A A A:动作集
- P : S × A × S → R P:S×A×S→R P:S×A×S→R是转移概率
- r : S × A → [ − R m a x , R m a x ] r:S×A→[-Rmax ,Rmax ] r:S×A→[−Rmax,Rmax]为⽴即回报函数
- ρ 0 : S → R ρ0 :S→R ρ0:S→R是初始状 态分布
- γ ∈ [ 0 , 1 ] γ∈[0,1] γ∈[0,1]:折扣因⼦
- T T T:⽔平范围(其实就是步数)
- τ \tau τ:⼀个轨迹序列,即 τ = ( s 0 , a 0 , s 1 , a 1 , … ) \tau=(s_0 ,a_0 ,s_1, a_1 ,…) τ=(s0,a0,s1,a1,…)
- 累积回报: R = ∑ t = 0 T γ t r t R = \sum\limits_{t = 0}^T {{\gamma ^t}{r_t}} R=t=0∑Tγtrt
强化学习的⽬标是找到最优策略 π π π,使得该策略下的累积回报期望最⼤,即: max π ∫ R ( τ ) p π ( τ ) d τ \mathop {\max }\limits_\pi \int {R(\tau ){p_\pi }(\tau )d\tau } πmax∫R(τ)pπ(τ)dτ