强化学习基础-有模型学习
1 马尔科夫决策过程(MDP)
通常用马尔科夫决策过程Markov Decision process,MDP描述强化学习问题。一个基本的MDP问题可以用一个五元组 ( S , A , P , R , γ ) (S,A,P,R,\gamma) (S,A,P,R,γ)来表示,其中
- S 有限状态空间
- A 有限动作空间
- P 状态转移概率矩阵
P a ( s , s ′ ) = P ( s t + 1 = s ′ ∣ s t = s , a t = a ) P_a(s, s')=P(s_{t+1}=s'|s_t=s, a_t=a) Pa(s,s′)=P(st+1=s′∣st=s,at=a) 表示在状态 s s s下执行 a a a动作,从状态 s s s转移到 s ′ s' s′的概率
- R 表示奖励函数
- γ \gamma γ 表示折扣因子
用来衡量当前奖励与未来奖励,可以理解为权重,一般会将未来的奖励权重调低
这样,MDP的目标就是找到一种
π
(
s
)
\pi(s)
π(s),使得agent在状态
s
s
s下能做出对应动作
a
a
a,使得回报
G
t
G_t
Gt能够达到最大
(1)
G
t
=
R
t
+
1
+
γ
1
R
t
+
2
+
γ
2
R
t
+
3
+
.
.
.
=
∑
k
=
0
∞
γ
k
R
t
+
k
+
1
\begin{aligned} G_t &= R_{t+1}+\gamma^1R_{t+2}+\gamma^2R_{t+3}+...\\ &= \sum^{\infty}_{k=0}{\gamma^kR_{t+k+1}} \end{aligned} \tag{1}
Gt=Rt+1+γ1Rt+2+γ2Rt+3+...=k=0∑∞γkRt+k+1(1)
价值函数(Value Function),定义为回报的期望,表示当前状态的未来潜在价值
(2)
V
(
s
)
=
E
[
G
t
∣
S
t
=
s
]
V(s)=E[G_t|S_t=s] \tag{2}
V(s)=E[Gt∣St=s](2)
Reward(奖励)指agent采取某个动作后的奖励,是短期的即时的奖励
Return(回报)指各个短期奖励加权之和可以视为长远的奖励
Value(价值)指的是上述长远奖励的期望
当前,强化学习的有两种思路:基于策略(Policy)函数的强化学习和基于价值(Value)函数的强化学习。
- 基于价值(Value)函数的强化学习,它需要首先对价值进行估计,然后间接地去求解如何选择动作。
- 基于策略(Policy)梯度的强化学习,其基本原理是通过反馈调整策略,具体来说就是在得到正向奖励时,增加相应的动作的概率;得到负向的奖励时,降低相应动作的概率。
2 Bellman方程
将公式(1)代入公式(2),得
(3)
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
+
γ
(
R
t
+
2
+
γ
R
t
+
3
+
.
.
.
)
∣
S
t
=
s
]
=
E
[
R
t
+
1
+
γ
G
t
+
1
∣
S
t
=
s
]
\begin{aligned} V(s)&=E[G_t|S_t=s]\\ &=E[R_{t+1}+\gamma R_{t+2}+\gamma^2 R_{t+3}+...|S_t=s]\\ &=E[R_{t+1}+\gamma (R_{t+2}+\gamma R_{t+3}+...)|S_t=s]\\ &=E[R_{t+1}+\gamma G_{t+1}|S_t=s] \end{aligned}\tag{3}
V(s)=E[Gt∣St=s]=E[Rt+1+γRt+2+γ2Rt+3+...∣St=s]=E[Rt+1+γ(Rt+2+γRt+3+...)∣St=s]=E[Rt+1+γGt+1∣St=s](3)
又
V
(
s
t
+
1
)
=
E
[
G
t
+
1
]
V(s_{t+1})=E[G_{t+1}]
V(st+1)=E[Gt+1],所以有
(4)
V
(
S
)
=
E
[
R
t
+
1
+
γ
G
t
+
1
∣
S
t
=
s
]
=
E
[
R
t
+
1
+
γ
V
(
S
t
+
1
)
∣
S
t
=
s
]
\begin{aligned} V(S)&=E[R_{t+1}+\gamma G_{t+1}|S_t=s]\\ &=E[R_{t+1}+\gamma V(S_{t+1})|S_t=s] \end{aligned} \tag{4}
V(S)=E[Rt+1+γGt+1∣St=s]=E[Rt+1+γV(St+1)∣St=s](4)
上式即Bellman方程。从Bellman方程可以发现一个规律:当前状态的价值(Value)与两个因素有关:1) 当前的奖励(Reward);2) 下一个迭代时刻的价值(Value)。
3 MDP问题建模
假设已知了状态转移概率矩阵P和奖励函数R,结合Bellman方程,有
(5)
π
(
s
)
=
a
r
g
m
a
x
a
∑
s
′
P
a
(
s
,
s
′
)
[
R
a
(
s
,
s
′
)
+
γ
⋅
V
(
S
′
)
]
=
a
r
g
m
a
x
a
E
[
R
a
(
s
,
s
′
)
+
γ
⋅
V
(
s
′
)
]
=
a
r
g
m
a
x
a
V
(
s
)
\begin{aligned} \pi(s)&= \mathop{argmax}_{a} \sum_{s'}P_a(s,s')[R_a(s,s')+\gamma\cdot V(S')]\\ &= \mathop{argmax}_{a} E[R_a(s,s')+\gamma \cdot V(s')]\\ &= \mathop{argmax}_{a} V(s) \end{aligned} \tag{5}
π(s)=argmaxas′∑Pa(s,s′)[Ra(s,s′)+γ⋅V(S′)]=argmaxaE[Ra(s,s′)+γ⋅V(s′)]=argmaxaV(s)(5)
在状态 s s s,agent会以某种概率执行a,从而到达状态 s ′ s' s′。于是,可根据新的状态计算相应的Reward和Value。agent需要在当前状态 s s s下做出一个动作a,使得价值(Value)达到最大。
为了后续方便,将公式(5)最后一行针对价值
V
(
s
)
V(s)
V(s)的展开部分独立出来,有
(6)
V
(
s
)
=
E
[
R
a
(
s
,
s
′
)
+
γ
⋅
V
(
s
′
)
]
=
∑
s
′
P
a
(
s
,
s
′
)
[
R
a
(
s
,
s
′
)
+
γ
⋅
V
(
s
′
)
]
\begin{aligned} V(s) &= E[R_a(s,s')+\gamma \cdot V(s')] \\ &= \sum_{s'}P_a(s,s')[R_a(s,s')+\gamma \cdot V(s')] \end{aligned} \tag{6}
V(s)=E[Ra(s,s′)+γ⋅V(s′)]=s′∑Pa(s,s′)[Ra(s,s′)+γ⋅V(s′)](6)
4 价值迭代(Value Iteration)
(7) V i + 1 ( s ) = max a ∑ s ′ P a ( s , s ′ ) [ R a ( s , s ′ ) + γ ⋅ V i ( s ′ ) ] V_{i+1}(s)=\max_{a}\sum_{s'}P_a(s,s')[R_a(s,s')+\gamma \cdot V_i(s')] \tag{7} Vi+1(s)=amaxs′∑Pa(s,s′)[Ra(s,s′)+γ⋅Vi(s′)](7)
基于价值迭代的求解方法中,迭代过程中仅仅更新价值(Value)
Initialization
array
V
V
V arbitrary(e.g.
V
(
s
)
=
0
V(s)=0
V(s)=0 for all
s
∈
S
+
s \in S^+
s∈S+)
repeat
Δ
←
0
\Delta \leftarrow 0
Δ←0
for each
s
∈
S
s \in S
s∈S
v
←
V
(
s
)
v \leftarrow V(s)
v←V(s) #当前状态的价值
V
(
s
)
←
max
a
∑
s
′
,
r
p
(
s
′
,
r
∣
s
,
a
)
[
r
+
γ
⋅
V
(
s
′
)
]
V(s) \leftarrow \max_{a} \sum_{s',r} p(s',r|s,a) [r+\gamma \cdot V(s')]
V(s)←maxa∑s′,rp(s′,r∣s,a)[r+γ⋅V(s′)]#在所有可能的动作中找出期望价值最大的案例
Δ
←
max
(
Δ
,
∣
v
−
V
(
s
)
∣
)
\Delta \leftarrow \max(\Delta ,|v-V(s)|)
Δ←max(Δ,∣v−V(s)∣) #当前状态价值与新状态价值的差距的最大值
end for
until
Δ
<
θ
,
θ
\Delta<\theta,\theta
Δ<θ,θ is a small positive umber #状态趋于稳定
output: a deterministic policy
π
(
s
)
\pi (s)
π(s)
价值迭代方法在求解时,会遍历状态集S,将其具有最大价值所对应的动作保留下来形成策略 π ( s ) \pi (s) π(s)
5 策略迭代(Policy Iteration)
与价值迭代不同,策略迭代的方法在迭代过程中要同时更新价值和策略。通常它分为如下两个主要步骤
5.1 策略评估
对应公式(6)
(6)
V
(
s
)
=
E
[
R
a
(
s
,
s
′
)
+
γ
⋅
V
(
s
′
)
]
=
∑
s
′
P
a
(
s
,
s
′
)
[
R
a
(
s
,
s
′
)
+
γ
⋅
V
(
s
′
)
]
\begin{aligned} V(s) &= E[R_a(s,s')+\gamma \cdot V(s')] \\ &= \sum_{s'}P_a(s,s')[R_a(s,s')+\gamma \cdot V(s')] \end{aligned} \tag{6}
V(s)=E[Ra(s,s′)+γ⋅V(s′)]=s′∑Pa(s,s′)[Ra(s,s′)+γ⋅V(s′)](6)
策略评估的内涵就是在给定的策略下,迭代更新价值(Value)直至收敛,从而得到稳定的价值函数。这么做的意义在于更好地估计当前策略的价值(Value)。
5.2 策略改进
对应公式(5)
(5)
π
(
s
)
=
a
r
g
m
a
x
a
∑
s
′
P
a
(
s
,
s
′
)
[
R
a
(
s
,
s
′
)
+
γ
⋅
V
(
S
′
)
]
=
a
r
g
m
a
x
a
E
[
R
a
(
s
,
s
′
)
+
γ
⋅
V
(
s
′
)
]
=
a
r
g
m
a
x
a
V
(
s
)
\begin{aligned} \pi(s)&= \mathop{argmax}_{a} \sum_{s'}P_a(s,s')[R_a(s,s')+\gamma\cdot V(S')]\\ &= \mathop{argmax}_{a} E[R_a(s,s')+\gamma \cdot V(s')]\\ &= \mathop{argmax}_{a} V(s) \end{aligned} \tag{5}
π(s)=argmaxas′∑Pa(s,s′)[Ra(s,s′)+γ⋅V(S′)]=argmaxaE[Ra(s,s′)+γ⋅V(s′)]=argmaxaV(s)(5)
在策略改进步骤中,代理利用步骤1中更新后的价值(Value)函数,更新每种状态下的策略并迭代,直到策略稳定下来。其迭代算法描述如下所示:
- Intialization
V ( s ) ∈ R V(s) \in \R V(s)∈R and π ( s ) ∈ A ( s ) \pi (s) \in A(s) π(s)∈A(s) arbitray for all s ∈ S s \in S s∈S - Policy Evaluation
repeat
Δ ← 0 \Delta \leftarrow 0 Δ←0
for each s ∈ S s \in S s∈S
v ← V ( s ) v \leftarrow V(s) v←V(s)
V ( s ) ← ∑ s ′ , r p ( s ′ , r ∣ s , π ( s ) ) [ r + γ ⋅ V ( s ) ] V(s) \leftarrow \sum_{s',r}p(s',r|s,\pi (s)) [r+\gamma \cdot V(s)] V(s)←∑s′,rp(s′,r∣s,π(s))[r+γ⋅V(s)]
Δ ← m a x ( Δ , ∣ v − V ( s ∣ ) \Delta \leftarrow max(\Delta,|v-V(s|) Δ←max(Δ,∣v−V(s∣)
end for
until Δ < θ \Delta<\theta Δ<θ , θ \theta θ is a small positive number
对于每个状态s不断迭代直至状态稳定,记录其价值
- Policy Improvement
p o l i c y s t a b l e ← t r u e policystable\leftarrow true policystable←true
for each s ∈ S s \in S s∈S
a ← π ( s ) a \leftarrow \pi(s) a←π(s) #当前策略(动作)
π ( s ) ← a r g m a x a ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ ⋅ V ( s ′ ) ] \pi (s) \leftarrow argmax_{a} \sum_{s',r}p(s',r|s,a)[r+\gamma \cdot V(s')] π(s)←argmaxa∑s′,rp(s′,r∣s,a)[r+γ⋅V(s′)] #选择下一个策略,基于2
if a ≠ π ( s ) a \ne \pi(s) a̸=π(s) then #如果状态没有稳定继续迭代
p o l i c y s t a b l e ← f a l s e policystable\leftarrow false policystable←false
end if
end for
if p o l i c y s t a b l e policystable policystable, then #如果状态稳定
stop and return V V V and π \pi π
else
go to 2
end if
6 价值迭代与策略迭代
- Policy Iteration 中两个步骤都有Policy直接关联,首先利用一个给定的Policy,通过迭代方法得到其Value Function; 接下来利用这个价值函数不断迭代各种Policy,最终确定最佳的Policy。
- Value Iteration 不与Policy直接打交道,这种方法当value最后收敛,也相当于得到最优的policy。
- 两者在迭代计算中都需要知道状态转移矩阵和奖励函数,即P与R。
- 如果已知转移概率矩阵P被称为获得了Model,通过模型获取最佳Policy的方法称为Model-based方法。
然而,现实场景下概率转移矩阵很难获得,所以人们需要采用Model-Free的方法来找到最佳Policy。譬如Q-learning,Policy Gradient,Actor-Critic。
参考文献
强化学习笔记