强化学习
参考视频:强化学习 周博磊
基本概念
State
s
s
s :表示当前状态
Action
a
a
a :表示当前当前行为
Policy
π
\pi
π :
A
∼
π
(
a
∣
s
)
A\sim\pi(a|s)
A∼π(a∣s) 表示根据当前状态做出行为a的概率分布策略,
A
A
A为离散型随机变量时,
π
\pi
π为一个概率,
A
A
A为连续型随机变量时,
π
\pi
π为概率密度。
return
G
t
G_t
Gt :
G
t
=
R
t
+
1
+
γ
R
t
+
2
+
.
.
.
γ
k
R
t
+
k
+
1
G_t = R_{t+1}+\gamma R_{t+2}+...\gamma^{k}R_{t+k+1}
Gt=Rt+1+γRt+2+...γkRt+k+1
State-value function状态价值函数,用来评估当前状态的好坏
V
π
(
s
)
V_\pi(s)
Vπ(s)
V
π
(
s
)
=
E
π
[
G
t
∣
S
t
=
s
]
V_\pi(s) = E_\pi[G_t|S_t=s]
Vπ(s)=Eπ[Gt∣St=s]
Action-value function 动作价值函数
Q
π
(
s
,
a
)
Q_\pi(s,a)
Qπ(s,a)
Q
π
(
s
,
a
)
=
E
[
G
t
∣
S
t
=
s
,
A
t
=
a
]
Q_\pi(s,a) = E[G_t|S_t=s,A_t=a]
Qπ(s,a)=E[Gt∣St=s,At=a]
二者关系:
V
π
(
s
)
=
∑
a
π
(
a
∣
s
)
Q
π
(
s
,
a
)
V_\pi(s)= \sum_a \pi(a|s)Q_\pi(s,a)
Vπ(s)=a∑π(a∣s)Qπ(s,a)
状态价值函数求解
将
G
t
G_t
Gt表达式代入
V
π
(
s
)
=
E
π
[
G
t
∣
S
t
=
s
]
V_\pi(s) = E_\pi[G_t|S_t=s]
Vπ(s)=Eπ[Gt∣St=s]中可得到Bellman Equation:
V
π
(
s
)
=
R
(
s
)
+
∑
s
′
γ
p
(
s
′
∣
s
)
V
π
(
s
′
)
V_\pi(s) = R(s) + \sum _{s'}\gamma p(s'|s)V_\pi(s')
Vπ(s)=R(s)+s′∑γp(s′∣s)Vπ(s′)
将上式写成矩阵形式:
从理论上能够得出状态价值函数的值,但是由于真实模型很多时候不可知,或者模型并非马尔科夫决策过程(MDP),
R
R
R和
P
P
P是无法获得的,即便可以得到,利用这种计算方式往往计算量会很大。
对于MDP的状态价值函数计算有两种常用的方法:蒙特卡洛(MC),和动态规划(DP)
MC:根据某一状态
s
1
s_1
s1,自助采样生成一系列轨迹,计算return值,取平均值作为
V
(
s
1
)
V(s_1)
V(s1),用同样的办法得到其他的
V
(
S
t
)
V(S_t)
V(St)
DP:利用迭代的办法计算
V
π
(
s
)
=
R
(
s
)
+
∑
s
′
γ
p
(
s
′
∣
s
)
V
π
(
s
′
)
V_\pi(s) = R(s) + \sum _{s'}\gamma p(s'|s)V_\pi(s')
Vπ(s)=R(s)+∑s′γp(s′∣s)Vπ(s′)或者迭代计算
V
π
(
s
)
=
∑
a
{
π
(
a
∣
s
)
[
R
(
s
)
+
∑
s
′
γ
p
(
s
′
∣
s
)
V
π
(
s
′
)
]
}
V_\pi(s) = \sum_a\{ \pi(a|s)[R(s) + \sum _{s'}\gamma p(s'|s)V_\pi(s')]\}
Vπ(s)=∑a{π(a∣s)[R(s)+∑s′γp(s′∣s)Vπ(s′)]},这种方法考虑了所有状态的转移,因此无模型时候,无法使用DP。
当不需要考虑实际决策时候,用Bellman Equation即可获得状态价值函数,但当决策需要被考虑时,用Bellman Expectation Equation来导出:
V
π
(
s
)
=
∑
a
{
π
(
a
∣
s
)
[
R
(
s
)
+
∑
s
′
γ
p
(
s
′
∣
s
)
V
π
(
s
′
)
]
}
V_\pi(s) = \sum_a\{ \pi(a|s)[R(s) + \sum _{s'}\gamma p(s'|s)V_\pi(s')]\}
Vπ(s)=a∑{π(a∣s)[R(s)+s′∑γp(s′∣s)Vπ(s′)]}
Q
π
(
s
,
a
)
=
R
(
s
,
a
)
+
γ
∑
s
′
p
(
s
′
∣
s
,
a
)
∑
a
′
π
(
a
′
∣
s
′
)
Q
π
(
s
′
,
a
′
)
Q_\pi(s,a) = R(s,a)+\gamma \sum_{s'} p(s'|s,a)\sum_{a'} \pi(a'|s')Q_\pi(s',a')
Qπ(s,a)=R(s,a)+γs′∑p(s′∣s,a)a′∑π(a′∣s′)Qπ(s′,a′)
对于无模型的状态价值函数计算有三种常用的方法:蒙特卡洛(MC)和TD
MC:用实验方法,基于某个状态,采样许多轨迹,得到这些轨迹的返回值,将其平均作为该状态的状态价值函数,MC方法只能用于有终止的马尔科夫决策过程
TD:每完成一步状态变化更新一次状态价值函数,状态的转移同MC一样是通过自助采样法得到的,但不同于MC需要完成整个轨迹才能更新状态价值函数,因此TD可以在完整的序列进行学习。n-step的TD算法,当n趋向于轨迹的所有步时,就是MC算法。