强化学习中的基本概念
状态(state)和动作(action)
一个状态可以想象成游戏中的一帧画面,整个游戏就是由多帧画面组成的。值的注意的是,
t
t
t时刻的画面可能有多种,它与智能体选择的动作有关,因此,状态具有随机性。我们将
t
t
t时刻的状态记作
S
t
St
St。动作是智能体与环境交互时所发出的,好的动作能够使智能体适应环境,从而获取较高的奖励,而坏的动作可能使得智能体在游戏局中失败
例如在上面的图片中,这张图片就是当前状态,马里奥做成的动作就是action。所以有三种动作:向上、向左和向右。
策略(policy π \pi π)
我们知道当前马里奥的状态如何控制它做出动作?策略
π
\pi
π就是根据观测到的状态(state)做出决策,控制智能体(agent)做出动作(action)。策略一般定义为一个概率密度函数。
π
(
a
∣
s
)
=
P
(
A
=
a
∣
S
=
s
)
\pi(a|s)=\mathbb{P}(A=a|S=s)
π(a∣s)=P(A=a∣S=s)
例如在上面的图片中,我们输入当前状态 s s s,可以得出向上、向右和向左的概率。
- π ( l e f t ∣ s ) = 0.2 \pi(left|s)=0.2 π(left∣s)=0.2
- π ( r i g h t ∣ s ) = 0.1 \pi(right|s)=0.1 π(right∣s)=0.1
-
π
(
u
p
∣
s
)
=
0.7
\pi(up|s)=0.7
π(up∣s)=0.7
强化学习主要是学习这个策略函数,根据策略函数我们可以根据当前状态做出决策。
奖励(reward)
agent做出一个动作,游戏就会给出奖励,这个奖励通常由我们自己来定义,还是以超级玛丽的游戏作为例子,我们可以定义如下奖励:
- 吃到金币: R = 1 R=1 R=1
- 赢得游戏: R = 10000 R=10000 R=10000
- 碰到敌人: R = − 10000 R=-10000 R=−10000
- 什么没发生: R = 0 R=0 R=0
状态转移(state transition)
智能体做出一个动作,游戏就会从一个状态(state)转移到一个新的状态(state)。也就是马里奥执行一个动作(例如向上跳),游戏就会显示到另一个画面。我们通常认为状态转移是随机的,随机性取决于环境。
p
(
s
′
,
a
)
=
P
(
S
′
=
s
′
∣
S
=
s
,
A
=
a
)
p(s^\prime,a)=\mathbb{P}(S^\prime=s^\prime|S=s,A=a)
p(s′,a)=P(S′=s′∣S=s,A=a)
这个公式是观测到当前的状态 s s s和动作 a a a,状态变成 s ′ s^\prime s′的概率
回报(return)
回报(return)定义为未来的累计奖励,英文为:cumulative future reward。(注意和奖励的区别)。我们把
t
t
t时刻的奖励记为:
U
t
U_t
Ut
U
t
=
R
t
+
R
t
+
1
+
R
t
+
2
+
⋯
U_t=R_t+R_{t+1}+R_{t+2}+\cdots
Ut=Rt+Rt+1+Rt+2+⋯
也就是把从t时刻的奖励加起来,直到游戏结束。下面思考一个问题:
R
t
R_t
Rt和
R
t
+
1
R_{t+1}
Rt+1同样重要吗?这个问题相当于你是选择我现在给你100元还是我一年后给你100元。大部分人会选择现在得到100元,因为未来有太多不确定性。所以未来的奖励没有现在的奖励重要,因此我们要给
R
t
+
1
R_{t+1}
Rt+1较小的权重。所以我们通常使用折扣回报(Discounted return)这个概念,定义一个折扣系数
γ
(
0
<
γ
<
1
)
\gamma(0<\gamma<1)
γ(0<γ<1),也就是上面说的权重。
U
t
=
R
t
+
γ
R
t
+
1
+
γ
2
R
t
+
2
+
⋯
U_t=R_t+\gamma R_{t+1}+\gamma ^2R_{t+2}+\cdots
Ut=Rt+γRt+1+γ2Rt+2+⋯
当然回报也具有随机性,随机性主要有两个来源动作(action)和状态(state)
- 动作的随机: π ( a ∣ s ) = P ( A = a ∣ S = s ) \pi(a|s)=\mathbb{P}(A=a|S=s) π(a∣s)=P(A=a∣S=s)
- 状态的随机: p ( s ′ , a ) = P ( S ′ = s ′ ∣ S = s , A = a ) p(s^\prime,a)=\mathbb{P}(S^\prime=s^\prime|S=s,A=a) p(s′,a)=P(S′=s′∣S=s,A=a)
这两个公式意思就是:根据当前状态得出一个随机的动作,更具当前的动作和状态得出一个状态转移。所以奖励 R i R_i Ri 取决于 S i S_i Si和 A i A_i Ai。
价值函数(Value Function)
动作价值函数(Action-Value Function)
动作价值函数记作
Q
(
s
,
a
)
Q(s,a)
Q(s,a)。首先上面所讲的回报
U
t
U_t
Ut只是一个随机变量,它取决于未来所有的动作和状态,由于
U
t
U_t
Ut是一个随机变量,在
t
t
t时刻我并不知道
U
t
U_t
Ut是什么,所以我们可以对
U
t
U_t
Ut求期望,把随机性用积分积掉,最后得到的就是一个数。
Q
π
(
s
t
,
a
t
)
=
E
[
U
t
∣
S
t
=
s
t
,
A
t
=
a
t
]
Q_\pi(s_t,a_t)=\mathbb{E}[U_t|S_t=s_t,A_t=a_t]
Qπ(st,at)=E[Ut∣St=st,At=at]
根据这个式子求出的期望就是动作价值函数,除了
s
t
s_t
st和
a
t
a_t
at其余的随机变量都被积分积掉了。所以动作价值函数
Q
π
Q_\pi
Qπ与当前状态
s
t
s_t
st和当前动作
a
t
a_t
at有关,还与策略函数policy
π
\pi
π有关,因为积分时会用到。那么如何将这个策略函数去掉?我们可以取最大值。
Q
∗
(
s
t
,
a
t
)
=
m
a
x
π
Q
π
(
s
t
,
a
t
)
Q^*(s_t,a_t)=\underset{\pi}{max} Q_\pi(s_t,a_t)
Q∗(st,at)=πmaxQπ(st,at)
也就是我们取能使 Q Q Q最大化的策略函数
状态价值函数(State-Value Function)
状态价值函数记作
V
(
s
)
V(s)
V(s),是动作价值函数
Q
π
Q_\pi
Qπ的期望
V
π
=
E
A
[
Q
π
(
s
t
,
A
)
]
=
∑
a
π
(
a
∣
s
t
)
⋅
Q
π
(
s
t
,
a
)
V_\pi=\mathbb{E}_A[Q_\pi(s_t,A)]= {\textstyle \sum_{a}}\pi(a|s_t)\cdot Q_\pi(s_t,a)
Vπ=EA[Qπ(st,A)]=∑aπ(a∣st)⋅Qπ(st,a)
V
π
=
E
A
[
Q
π
(
s
t
,
A
)
]
=
∫
π
(
a
∣
s
t
)
⋅
Q
π
(
s
t
,
a
)
d
a
V_\pi=\mathbb{E}_A[Q_\pi(s_t,A)]= \int \pi(a|s_t)\cdot Q_\pi(s_t,a) da
Vπ=EA[Qπ(st,A)]=∫π(a∣st)⋅Qπ(st,a)da
这里的期望是根据随机变量
A
A
A求的,上面的两种情况分别对应变量离散和连续的两种情况。
两种价值函数的对比
里的期望是根据随机变量 A A A求的,上面的两种情况分别对应变量离散和连续的两种情况。
两种价值函数的对比
动作价值函数 Q π Q_\pi Qπ,告诉我们,使用价值函数policy π \pi π,智能体处于状态s时做出动作a是否明智,可以给该动作打分。状态价值函数 V π V_\pi Vπ,如果使用价值函数 π \pi π,可以评价当前状态是好还是坏(游戏是快赢了还是快输了)。还可以评价价值函数 π \pi π的好坏,如果 π \pi π越好,那么 E S [ V π ( S ) ] \mathbb{E}_S[V_\pi(S)] ES[Vπ(S)],也就是 V π V_\pi Vπ的平均值就越大。