神经网络发展历程
逐渐能够处理的问题
强化学习
马尔可夫决策过程
基本定义
一个马尔可夫决策过程由五元组组成 ( S , A , { P s 2 } , γ , R ) \left(S, A,\left\{P_{s 2}\right\}, \gamma, R\right) (S,A,{Ps2},γ,R)
- S:表示状态集(states)
- A:表示一系列动作(actions)
-
P
s
a
P_{s a}
Psa:表示状态转移概率。表示的是在当前s ∈ S状态下,经过a ∈ A作用后,会转移到的其他状态的概率分布情况。比如,在状态s下执行动作a,转移到s’的概率可以表示为p(s’|s,a)。
(dicount factor):表示阻尼系数[0,1) - R: S × A → R S \times A \rightarrow \mathbb{R} S×A→R,表示回报函数(reward function)
MDP 的动态过程如下:某个智能体(agent)的初始状态为
s
0
s_{0}
s0,然后从 A 中挑选一个动作
a
0
a_{0}
a0执行,执行后,agent 按
P
s
a
P_{s a}
Psa概率随机转移到了下一个s1状态,s1∈
P
s
a
P_{s a}
Psa。然后再执行一个动作
a
1
a_{1}
a1,就转移到了
s
2
s_{2}
s2,接下来再执行
a
2
a_{2}
a2…,我们可以用下面的图表示状态转移的过程。
s
0
⟶
a
0
s
1
⟶
a
1
s
2
⟶
a
2
s
3
⟶
a
3
…
s_{0} \stackrel{a_{0}}{\longrightarrow} s_{1} \stackrel{a_{1}}{\longrightarrow} s_{2} \stackrel{a_{2}}{\longrightarrow} s_{3} \stackrel{a_{3}}{\longrightarrow} \dots
s0⟶a0s1⟶a1s2⟶a2s3⟶a3…
如果回报r是根据状态s和动作a得到的,则MDP还可以表示成下图:
值函数
上面我们给出了MDP的定义,作为一个智能体(agent),当它在决定下一步应该走什么时,最简单的方式就是看下Reward函数的值是多少,即比较走不同动作的回报,从而做出决定。但是就像下棋的时候,我们每走一步都会向后考虑,所谓“走一步看三步”,所以这里我们只看一步即一次Reward函数是不够的,这就引出了值函数(Value Function)也叫折算累积回报(discounted cumulative reward)。
状态值函数(state value function)
当我们遵循某个策略
π
\pi
π,我们将值函数定义如下:
V
π
(
s
)
=
E
[
R
(
s
0
)
+
γ
R
(
s
1
)
+
γ
2
R
(
s
2
)
+
⋯
∣
s
0
=
s
,
π
]
V^{\boldsymbol{\pi}}(s)=E\left[R\left(s_{0}\right)+\gamma R\left(s_{1}\right)+\gamma^{2} R\left(s_{2}\right)+\cdots | s_{0}=s, \pi\right]
Vπ(s)=E[R(s0)+γR(s1)+γ2R(s2)+⋯∣s0=s,π]
我们将上面的式子写作递推的样子如下:
V
π
(
s
)
=
R
(
s
0
)
+
γ
V
π
(
s
′
)
V^{\pi}(s)=R\left(s_{0}\right)+\gamma V^{\pi}\left(s^{\prime}\right)
Vπ(s)=R(s0)+γVπ(s′)
另外当策略,在状态s时,我们可以确定唯一的动作a,但是s经过动作a会进入哪个状态是不唯一的,比如同样是掷骰子操作,可能得到的状态有6种,那么利用Bellman等式我们便可以得到下面的公式:
V
π
(
s
)
=
R
(
s
)
+
γ
∑
s
′
∈
S
P
s
π
(
s
)
(
s
′
)
V
π
(
s
′
)
V^{\pi}(s)=R(s)+\gamma \sum_{s^{\prime} \in S} P_{s \pi(s)}(s^{\prime}) V^{\pi}(s^{\prime})
Vπ(s)=R(s)+γs′∈S∑Psπ(s)(s′)Vπ(s′)
再根据我们最初增强学习的目的,我们便可以得出,求V的目的就是想找到一个当前状态s下,最优的行动策略,表示如下:
V
∗
(
s
)
=
R
(
s
)
+
max
Q∈A
γ
∑
s
′
∈
S
P
S
Q
(
s
′
)
V
∗
(
s
′
)
V^{*}(s)=R(s)+\max _{\operatorname{Q \in A} } \gamma \sum_{s^{\prime} \in S} P_{SQ}(s^{\prime}) V^{*}(s^{\prime})
V∗(s)=R(s)+Q∈Amaxγs′∈S∑PSQ(s′)V∗(s′)
动作值函数(action value function)
上面我们的值函数的只与状态s有关,如果与状态s和动作a都有关,便称为动作值函数,即所谓的Q函数,如下:
Q
π
(
s
,
a
)
=
E
[
R
(
s
0
,
a
0
)
+
γ
R
(
s
1
,
a
0
)
+
γ
2
R
(
s
2
,
a
2
)
+
⋯
∣
s
0
=
s
,
a
0
=
a
,
π
]
Q^{\pi}(s, a)=E\left[R\left(s_{0}, a_{0}\right)+\gamma R\left(s_{1}, a_{0}\right)+\gamma^{2} R\left(s_{2}, a_{2}\right)+\cdots | s_{0}=s, a_{0}=a, \pi\right]
Qπ(s,a)=E[R(s0,a0)+γR(s1,a0)+γ2R(s2,a2)+⋯∣s0=s,a0=a,π]
=
R
(
s
0
,
a
0
)
+
γ
Q
π
(
s
′
,
a
′
)
=R\left(s_{0}, a_{0}\right)+\gamma Q^{\pi}\left(s^{\prime}, a^{\prime}\right)
=R(s0,a0)+γQπ(s′,a′)
从上式我们可以看出,我们不仅仅依赖状态s和策略,并且还依赖于动作a。
综上我们可以将MDP的最优策略定义如下:
π
∗
=
arg
max
π
V
π
(
s
)
,
(
∀
s
)
\pi^{*}=\arg \max _{\boldsymbol{\pi}} V^{\boldsymbol{\pi}}(s),(\forall s)
π∗=argπmaxVπ(s),(∀s)
关于MDP的求解主要分为值迭代和策略迭代,分别站在不同的角度对MDP进行求解,这里我们不在赘述,网上有很多相关资料。下面我们简单阐述下动作值函数的值迭代求解方式,即所谓的Q-learning
Q学习
Q学习的基本迭代公式如下:
Q
(
s
t
,
a
t
)
←
Q
(
s
t
,
a
t
)
⎵
old value
+
α
⎵
learning rate
⋅
(
r
t
+
1
⎵
reward
+
γ
⎵
discount factor
⋅
max
a
Q
(
s
t
+
1
,
a
)
⎵
estimate of optimal future value
⏞
learned value
−
Q
(
s
t
,
a
t
)
⎵
old value
)
Q\left(s_{t}, a_{t}\right) \leftarrow \underbrace{Q\left(s_{t}, a_{t}\right)}_{\text { old value }}+\underbrace{\alpha}_{\text { learning rate }} \cdot \left (\overbrace{\underbrace{r_{t+1}}_{\text { reward }}+\underbrace{\gamma}_{\text { discount factor }} \cdot \underbrace{\max _{a} Q\left(s_{t+1}, a\right)}_{\text { estimate of optimal future value }}}^\text{learned value} -\underbrace{Q\left(s_{t}, a_{t}\right)}_{\text { old value }}\right)
Q(st,at)← old value
Q(st,at)+ learning rate
α⋅⎝⎜⎜⎛ reward
rt+1+ discount factor
γ⋅ estimate of optimal future value
amaxQ(st+1,a)
learned value− old value
Q(st,at)⎠⎟⎟⎞
从公式中我们也可以看出它是一种值迭代方式,因为我们每次更新的是Q函数的值,而非策略。简单起见,整理一个简单的例子加以说明。