笔记参考链接https://nndl.github.io/的14章内容
文章目录
4.2 基于值函数的学习方法
值函数是对策略
π
\pi
π的评估,如果策略
π
\pi
π有限,即状态数和动作数都有限,可以对所有的策略进行评估并选出最优策略
π
∗
\pi^*
π∗。
∀
s
,
π
∗
=
arg
max
π
V
π
(
s
)
\forall s,\pi^{*}=\underset{\pi}{\arg \max } V^{\pi}(s)
∀s,π∗=πargmaxVπ(s)
但这种方式在实践中很难实现,一种可行的方式是通过迭代的方法不断优化策略,直到选出最优策略。对于一个策略
π
(
a
∣
s
)
\pi(a|s)
π(a∣s),其
Q
Q
Q函数为
Q
π
(
s
,
a
)
Q^\pi(s,a)
Qπ(s,a),我们可以设置一个新的策略
π
′
(
a
∣
s
)
\pi'(a|s)
π′(a∣s),
π
’
(
a
∣
s
)
=
{
1
if
a
=
arg
max
a
Q
π
(
s
,
a
^
)
0
otherwise
\pi’(a|s)= \left\{\begin{array}{ll} 1 & \text { if } a=\underset {a}{\arg \max } Q^{\pi}(s, \hat{a}) \\ 0 & \text { otherwise } \end{array}\right.
π’(a∣s)={10 if a=aargmaxQπ(s,a^) otherwise
即
π
’
(
a
∣
s
)
\pi’(a|s)
π’(a∣s)是一个确定性的策略,也可以直接写为:
π
’
(
a
∣
s
)
=
arg
max
a
Q
π
(
s
,
a
)
\pi’(a|s)=\underset {a}{\arg \max } Q^{\pi}(s, {a})
π’(a∣s)=aargmaxQπ(s,a)
如果执行
π
′
\pi'
π′,会有
∀
s
,
V
π
′
(
s
)
≥
V
π
(
s
)
\forall s,V^{\pi'}(s)\ge V^{\pi}(s)
∀s,Vπ′(s)≥Vπ(s)
这是因为V值是Q值的期望,如果找使得每一个Q值都是最大的策略,就可以让该策略下的任意V值都是比之前策略要好的。
因此,我们可以通过下面方式来学习最优策略:先随机初始化一个策略,计算该策略的值函数,并根据值函数来设置新的策略,然后一直反复迭代直到收敛。
基于值函数的策略最关键的是如何计算策略
π
\pi
π的值函数,一般有动态规划
或蒙特卡洛
两种计算方式.
4.2.1 动态规划算法-Model-based
从贝尔曼方程可知,如果直到马尔可夫决策过程中的,状态转移概率 p ( s ′ ∣ s , a ) p(s'|s,a) p(s′∣s,a)和奖励 r ( s , a , s ′ ) r(s,a,s') r(s,a,s′),我们直接可以通过贝尔曼方程来计算其值函数,这种模型已知的强化学习算法也称为基于模型的强化学习,模型指的是马尔可夫决策过程。
在模型已知时,可以通过动态规划的方法来计算,常用的方法主要有策略迭代
算法和值迭代
算法。
4.2.1.1 策略迭代算法
策略迭代算法,每次迭代可以分为两步:
- 策略评估:计算当前策略下每个状态的值函数(3-6步)。策略评估可以根据贝尔曼方程进行迭代计算 V π ( s ) V^\pi(s) Vπ(s).
- 策略改进:根据值函数来更新策略(7-8步)
收敛是因为折扣系数使得最后V值不变了(或者在很小的误差之内)
14.18 V π ( s ) = E a ∼ π ( a ∣ s ) E s ′ ∼ p ( s ′ ∣ s , a ) [ r ( s , a , s ′ ) + γ V π ( s ’ ) ] 14.18\ V^{\pi}(s)=E_{a\sim \pi(a|s)}E_{s'\sim p(s'|s,a)}[r(s,a,s')+\gamma V^{\pi}(s’)] 14.18 Vπ(s)=Ea∼π(a∣s)Es′∼p(s′∣s,a)[r(s,a,s′)+γVπ(s’)]
14.19 Q π ( s , a ) = E s ′ ∼ p ( s ′ ∣ s , a ) [ r ( s , a , s ′ ) + γ V π ( s ′ ) ] 14.19\ Q^{\pi}(s,a)=E_{s'\sim p(s'|s,a)}[r(s,a,s')+\gamma V^{\pi}(s')] 14.19 Qπ(s,a)=Es′∼p(s′∣s,a)[r(s,a,s′)+γVπ(s′)]
4.2.1.2 值迭代算法
策略迭代算法中的策略评估和策略改进是交替轮流进行,其中策略评估也是通过一个内部迭代来进行计算,其中策略评估也是通过一个内部迭代来进行计算,其计算量比较大,事实上,我们不需要每次计算出策略对应的精确的值函数,也就是说,内部迭代不需要执行到完全收敛。
值迭代
算法将策略评估和策略改进两个过程合并,来直接计算出最优策略。其最优策略
π
∗
\pi^*
π∗对应的函数为最优值函数
,其中包括最优状态值函数
V
∗
(
s
)
V^*(s)
V∗(s)和最优状态-动作值函数
Q
∗
(
s
,
a
)
Q^*(s,a)
Q∗(s,a),它们之间的关系为:
V
∗
(
s
)
=
m
a
x
a
Q
∗
(
s
,
a
)
V^*(s)=\underset{a}{max}Q^*(s,a)
V∗(s)=amaxQ∗(s,a)
根据贝尔曼方程,我们可以通过迭代的方式来计算最优状态值函数
V
∗
(
s
)
V^*(s)
V∗(s)和最优状态-动作值函数
Q
∗
(
s
,
a
)
Q^*(s,a)
Q∗(s,a):
V
∗
(
s
)
=
E
a
∼
π
(
a
∣
s
)
E
s
′
∼
p
(
s
′
∣
s
,
a
)
[
r
(
s
,
a
,
s
′
)
+
γ
V
∗
(
s
’
)
]
V^{*}(s)=E_{a\sim \pi(a|s)}E_{s'\sim p(s'|s,a)}[r(s,a,s')+\gamma V^{*}(s’)]
V∗(s)=Ea∼π(a∣s)Es′∼p(s′∣s,a)[r(s,a,s′)+γV∗(s’)]
Q ∗ ( s , a ) = E s ′ ∼ p ( s ′ ∣ s , a ) [ r ( s , a , s ′ ) + γ E a ′ ∼ π ( a ′ ∣ s ′ ) Q ∗ ( s ′ , a ′ ) ] Q^{*}(s,a)=E_{s'\sim p(s'|s,a)}[r(s,a,s')+\gamma E_{a'\sim \pi(a'|s')}Q^{*}(s',a')] Q∗(s,a)=Es′∼p(s′∣s,a)[r(s,a,s′)+γEa′∼π(a′∣s′)Q∗(s′,a′)]
这两个公式称为贝尔曼最优方程
。
值迭代算法通过直接优化贝尔曼最优方程,迭代计算最优值函数,值迭代算法如图所示。
14.19 Q π ( s , a ) = E s ′ ∼ p ( s ′ ∣ s , a ) [ r ( s , a , s ′ ) + γ V π ( s ′ ) ] 14.19\ Q^{\pi}(s,a)=E_{s'\sim p(s'|s,a)}[r(s,a,s')+\gamma V^{\pi}(s')] 14.19 Qπ(s,a)=Es′∼p(s′∣s,a)[r(s,a,s′)+γVπ(s′)]
策略迭代 | 值迭代 | |
---|---|---|
复杂度与迭代次数 | 时间复杂度比策略迭代小,但迭代次数比策略迭代多 | |
更新值函数 | 根据贝尔曼方程更新值函数,并根据当前的值函数来改进策略 | 直接使用贝尔曼最优方程来更新值函数,收敛时的值函数就是最优的值函数,其对应的策略也就是最优的策略 |
策略迭代算法需要策略评估和改进两个步骤,而值迭代通过最优方程收敛的结果直接就是最优的策略。
基于模型的强化学习算法实际上是一种动态规划
算法,在实际应用中有以下两点限制:
(1) 要求模型已知,即要给出马尔可夫决策过程中的状态转移概率
和奖励函数
,但实际应用中这个要求很难满足,如果我们事先不知道模型,那么可以先让智能体与环境交互来估计模型,即估计状态转移概率和奖励函数。
一个简单的模型估计方法是 R − m a x R-max R−max,通过随机游走的方法来探索环境,每次随机一个策略并执行,然后收集状态转移和奖励的样本,在收集一定的样本后,就可以通过统计或监督学习来重构出马尔可夫决策过程。但是,这种基于重构过程的复杂度也非常高,只能应用于状态数非常少的场合。
(2) 效率问题,即状态数量较多时,算法效率比较低,但在实际应用中,很多问题的状态数量和动作状态非常多,不管是值迭代还是策略迭代,以当前计算机的计算能力,根本无法计算,一个有效的办法是通过一个函数,如神经网络来近似计算值函数,以减少复杂度并提高泛化能力。
4.2.2 蒙特卡洛方法-Model-free
在很多应用场景下,马尔可夫决策过程的状态转移概率 p ( s ′ ∣ s , a ) p(s'|s,a) p(s′∣s,a)和奖励函数 r ( s , a , s ′ ) r(s,a,s') r(s,a,s′)都是未知的,在这种情况下,我们一般需要智能体和环境进行交互,并收集一些样本,然后再根据这些样本来求解马尔可夫最优策略,这种情况未知,基于采样的学习算法也成为模型无关的强化学习算法。
Q
Q
Q函数
Q
π
(
s
,
a
)
Q^\pi(s,a)
Qπ(s,a)是初始状态为
s
s
s,并执行动作
a
a
a后所能得到的期望总回报:
Q
π
(
s
,
a
)
=
E
τ
∼
p
(
τ
)
[
G
(
τ
s
0
=
s
,
a
0
=
a
)
]
Q^\pi(s,a)=E_{\tau \sim p(\tau)}[G(\tau_{s_0=s,a_0=a})]
Qπ(s,a)=Eτ∼p(τ)[G(τs0=s,a0=a)]
其中,
τ
s
0
=
s
,
a
0
=
a
\tau_{s_0=s,a_0=a}
τs0=s,a0=a表示轨迹
τ
\tau
τ的起始状态和动作为
s
,
a
s,a
s,a
如果模型未知,
Q
Q
Q函数可以通过采样来计算,这就是蒙特卡洛算法。对于一个策略
π
\pi
π,智能体从状态
s
s
s,执行动作
a
a
a开始,然后通过随机游走的方法来探索环境,并计算其得到的总汇报。假设我们进行了
N
N
N次实验,得到
N
N
N个轨迹
τ
(
1
)
,
τ
(
2
)
,
.
.
.
τ
(
N
)
\tau^{(1)},\tau^{(2)},...\tau^{(N)}
τ(1),τ(2),...τ(N),其总汇报分别为
G
[
τ
(
1
)
]
,
G
[
τ
(
2
)
]
,
.
.
.
G
[
τ
(
N
)
]
G[\tau^{(1)}],G[\tau^{(2)}],...G[\tau^{(N)}]
G[τ(1)],G[τ(2)],...G[τ(N)]。
Q
Q
Q函数可以近似为:
Q
π
(
s
,
a
)
≈
Q
^
π
(
s
,
a
)
=
1
N
∑
n
=
1
N
G
(
τ
s
0
=
s
,
a
0
=
a
(
n
)
)
Q^{\pi}(s,a) \approx \hat{Q}^{\pi}(s,a)=\frac{1}{N}\sum_{n=1}^NG(\tau_{s_0=s,a_0=a}^{(n)})
Qπ(s,a)≈Q^π(s,a)=N1n=1∑NG(τs0=s,a0=a(n))
当
N
→
∞
N\rightarrow \infty
N→∞时候,
Q
^
π
(
s
,
a
)
→
Q
π
(
s
,
a
)
\hat{Q}^{\pi}(s,a)\rightarrow Q^{\pi}(s,a)
Q^π(s,a)→Qπ(s,a)。
在近似估计出 Q Q Q函数的 Q ^ π ( s , a ) \hat{Q}^{\pi}(s,a) Q^π(s,a)后,就可以进行策略改进,然后在新的策略下重新采样来估计 Q Q Q函数,并不断重复直至收敛。
- 利用和探索 Exploitation and exploration
π ( s ) \pi(s) π(s)为在状态 s s s下采取该策略 π \pi π的动作 a = π ( s ) a=\pi(s) a=π(s)
在蒙特卡洛算法中,如果采用确定性策略 π \pi π,每次实验得到的轨迹是一样的,只能计算出 Q π ( s , π ( s ) ) Q^\pi(s,\pi(s)) Qπ(s,π(s)),而无法计算其他动作 a ′ a' a′的 Q Q Q函数,因此也无法进一步改进策略。这样情况仅仅是对当前策略的利用,而缺少了对环境的探索,即实验的轨迹应该尽可能覆盖所有的状态和动作,以找到更好的策略。
为了平衡利用和探索,我们可以采用
ϵ
−
g
r
e
e
d
y
M
e
t
h
o
d
\epsilon-greedy Method
ϵ−greedyMethod,对于一个目标策略
π
\pi
π,其对应的贪心策略为:
π
ϵ
(
s
)
=
{
π
(
s
)
,
按概率
1
−
ϵ
,
随机选择中的动作,
按概率
ϵ
.
\pi^{\epsilon}(s)=\left\{\begin{array}{cc} \pi(s), & \text { 按概率 } 1-\epsilon, \\ \text { 随机选择中的动作, } & \text { 按概率 } \epsilon . \end{array}\right.
πϵ(s)={π(s), 随机选择中的动作, 按概率 1−ϵ, 按概率 ϵ.
这样,将一个仅利用的策略转为带探索的策略。
- 同策略 On-Policy
在蒙特卡洛算法中,如果采样策略是 π ϵ ( s ) \pi^{\epsilon}(s) πϵ(s),不断改进策略也是 π ϵ ( s ) \pi^{\epsilon}(s) πϵ(s)而不是目标策略 π ( s ) \pi(s) π(s),这种采样与改进策略相同的强化学习算法叫同策略方法,
- 异策略 Off-Policy
如果采样策略是 π ϵ ( s ) \pi^{\epsilon}(s) πϵ(s),而优化目标是策略 π \pi π,可以通过重要性采样,引入重要性权重来事先对目标策略 π \pi π的优化。这种采样与改进分别使用不同策略的强化学习方法叫异策略方法。
补充:重要性采样
如果采样的目的是计算分布 p ( x ) p(x) p(x)下函数的期望,那么实际上抽取的样本不需要严格服从分布 p ( x ) p(x) p(x),也可以通过另一个分布,即提议分布 q ( x ) q(x) q(x),直接采样并估计 E [ f ( x ) ] E_[f(x)] E[f(x)]。
函数
f
(
x
)
f(x)
f(x)在分布
p
(
x
)
p(x)
p(x)下的期望可以写为:
E
p
[
f
(
x
)
]
=
∫
x
f
(
x
)
p
(
x
)
d
x
=
∫
x
f
(
x
)
p
(
x
)
q
(
x
)
q
(
x
)
d
x
=
∫
x
f
(
x
)
w
(
x
)
q
(
x
)
d
x
=
E
q
[
f
(
x
)
w
(
x
)
]
\begin{aligned} E_p[f(x)]&=\int_xf(x)p(x)dx \\ &=\int_xf(x)\frac{p(x)}{q(x)}q(x)dx \\ &=\int_xf(x)w(x)q(x)dx \\ &=E_q[f(x)w(x)] \\ \end{aligned}
Ep[f(x)]=∫xf(x)p(x)dx=∫xf(x)q(x)p(x)q(x)dx=∫xf(x)w(x)q(x)dx=Eq[f(x)w(x)]
原来
f
(
x
)
∼
p
(
x
)
f(x)\sim p(x)
f(x)∼p(x),经过转换后
f
(
x
)
∼
q
(
x
)
f(x)\sim q(x)
f(x)∼q(x)。
其中
w
(
x
)
w(x)
w(x)为重要性权重
,重要性采样是通过引入重要性权重,将分布
p
(
x
)
p(x)
p(x)下
f
(
x
)
f(x)
f(x)的期望变为在分布
q
(
x
)
q(x)
q(x)下
f
(
x
)
w
(
x
)
f(x)w(x)
f(x)w(x)的期望,从而近似为
f
^
N
=
1
N
(
f
(
x
(
1
)
)
w
(
x
(
1
)
)
+
⋯
+
f
(
x
(
N
)
)
w
(
x
(
N
)
)
\hat{f}_{N}=\frac{1}{N}(f(x^{(1)}) w(x^{(1)})+\cdots+f(x^{(N)}) w(x^{(N)})
f^N=N1(f(x(1))w(x(1))+⋯+f(x(N))w(x(N))
其中,
x
(
1
)
,
x
(
2
)
,
.
.
.
x
(
N
)
x^{(1)},x^{(2)},...x^{(N)}
x(1),x(2),...x(N)为独立从
q
(
x
)
q(x)
q(x)中随机抽取的点。
重要性采样也可以在只知道为归一化的分布 p ^ ( x ) \hat{p}(x) p^(x)的情况下计算 f ( x ) f(x) f(x)的期望。
p ( x ) = p ^ ( x ) Z p(x)=\frac{\hat{p}(x)}{Z} p(x)=Zp^(x),Z为配分函数。第三行表示成了期望的定义。
E p [ f ( x ) ] = ∫ x f ( x ) p ( x ) d x = ∫ x f ( x ) p ^ ( x ) Z d x = ∫ x p ^ ( x ) f ( x ) d x ∫ x p ^ ( x ) d x ≈ ∑ n = 1 N f ( x ( n ) ) w ^ ( x ( n ) ) ∑ n = 1 N w ^ ( x ( n ) ) \begin{aligned} E_p[f(x)]&=\int_xf(x)p(x)dx \\ &=\int_xf(x)\frac{\hat{p}(x)}{Z}dx \\ &=\frac{\int_x\hat{p}(x)f(x)dx}{\int_x\hat{p}(x)dx} \\ &\approx\frac{\sum_{n=1}^{N} f(x^{(n)}) \hat{w}(x^{(n)})}{\sum_{n=1}^{N} \hat{w}(x^{(n)})} \end{aligned} Ep[f(x)]=∫xf(x)p(x)dx=∫xf(x)Zp^(x)dx=∫xp^(x)dx∫xp^(x)f(x)dx≈∑n=1Nw^(x(n))∑n=1Nf(x(n))w^(x(n))
其中 ω ^ ( x ) = p ^ ( x ) q ( x ) \hat{\omega}(x)=\frac{\hat{p}(x)}{q(x)} ω^(x)=q(x)p^(x)为独立从 q ( x ) q(x) q(x)中随机抽取的点。
4.2.3 时序差分学习方法-Temporal-Difference Learning
蒙特卡洛方法一般要拿到完整的轨迹,才能对策略进行评估并更新模型,因此效率也比较低。时序差分学习方法是蒙特卡洛方法的一种改进,通过引入动态规划
来提高学习效率,时序差分学习方法是模拟一段轨迹,每行动一步或者几步,就利用贝尔曼方程来评估行动前状态的价值。
首先,将蒙特卡洛方法中的
Q
Q
Q函数
Q
^
π
(
s
,
a
)
\hat{Q}^\pi(s,a)
Q^π(s,a)的估计改为增量的方式,假设第
N
N
N次实验后值函数
Q
^
π
(
s
,
a
)
\hat{Q}^\pi(s,a)
Q^π(s,a)的平均为:
Q
^
N
π
(
s
,
a
)
=
1
N
∑
n
=
1
N
G
(
τ
s
0
=
s
,
a
0
=
a
(
n
)
)
=
1
N
(
G
(
τ
s
0
=
s
,
a
0
=
a
(
N
)
)
+
∑
n
=
1
N
−
1
G
(
τ
s
0
=
s
,
a
0
=
a
(
n
)
)
)
=
1
N
(
G
(
τ
s
0
=
s
,
a
0
=
a
(
N
)
)
+
(
N
−
1
)
1
N
−
1
∑
n
=
1
N
−
1
G
(
τ
s
0
=
s
,
a
0
=
a
(
n
)
)
)
=
1
N
(
G
(
τ
s
0
=
s
,
a
0
=
a
(
N
)
+
(
N
−
1
)
Q
^
N
−
1
π
(
s
,
a
)
)
=
Q
^
N
−
1
π
(
s
,
a
)
+
1
N
(
G
(
τ
s
0
=
s
,
a
0
=
a
(
N
)
−
Q
^
N
−
1
π
(
s
,
a
)
)
\begin{aligned} \hat{Q}_{N}^\pi(s,a)&=\frac{1}{N}\sum_{n=1}^NG(\tau_{s_0=s,a_0=a}^{(n)}) \\ &=\frac{1}{N}\left(G(\tau_{s_0=s,a_0=a}^{(N)})+\sum_{n=1}^{N-1}G(\tau_{s_0=s,a_0=a}^{(n)})\right) \\ &=\frac{1}{N}\left(G(\tau_{s_0=s,a_0=a}^{(N)})+(N-1)\frac{1}{N-1}\sum_{n=1}^{N-1}G(\tau_{s_0=s,a_0=a}^{(n)})\right) \\ &=\frac{1}{N}\left(G(\tau_{s_0=s,a_0=a}^{(N)}+(N-1)\hat{Q}_{N-1}^\pi(s,a)\right)\\ &=\hat{Q}_{N-1}^\pi(s,a)+\frac{1}{N}\left(G(\tau_{s_0=s,a_0=a}^{(N)}-\hat{Q}_{N-1}^\pi(s,a)\right) \end{aligned}
Q^Nπ(s,a)=N1n=1∑NG(τs0=s,a0=a(n))=N1(G(τs0=s,a0=a(N))+n=1∑N−1G(τs0=s,a0=a(n)))=N1(G(τs0=s,a0=a(N))+(N−1)N−11n=1∑N−1G(τs0=s,a0=a(n)))=N1(G(τs0=s,a0=a(N)+(N−1)Q^N−1π(s,a))=Q^N−1π(s,a)+N1(G(τs0=s,a0=a(N)−Q^N−1π(s,a))
值函数
Q
^
π
(
s
,
a
)
\hat{Q}^\pi(s,a)
Q^π(s,a)在第
N
N
N次实验后的平均等于第
N
−
1
N-1
N−1次实验的平均加上一个增量,更一般地,我们将权重系数换位一个比较小的系数
α
\alpha
α,这样每次采用一个新的轨迹,就可以更新
Q
^
π
(
s
,
a
)
\hat{Q}^\pi(s,a)
Q^π(s,a)。
Q
^
π
(
s
,
a
)
←
Q
^
π
(
s
,
a
)
+
α
(
G
(
τ
s
0
=
s
,
a
0
=
a
−
Q
^
π
(
s
,
a
)
)
\hat{Q}^\pi(s,a) \leftarrow \hat{Q}^\pi(s,a)+\alpha\left(G(\tau_{s_0=s,a_0=a}-\hat{Q}^\pi(s,a)\right)
Q^π(s,a)←Q^π(s,a)+α(G(τs0=s,a0=a−Q^π(s,a))
其中增量称为蒙特卡洛误差,表示当前轨迹的真实回报
G
(
τ
s
0
=
s
,
a
0
=
a
)
G(\tau_{s_0=s,a_0=a})
G(τs0=s,a0=a)与期望回报
Q
^
π
(
s
,
a
)
\hat{Q}^\pi(s,a)
Q^π(s,a)之间的差距。
在上述的更新公式中,
G
(
τ
s
0
=
s
,
a
0
=
a
)
G(\tau_{s_0=s,a_0=a})
G(τs0=s,a0=a)为一次试验的完整轨迹所得到的总汇报,为了提高效率,可以借助动态规划的方法来计算
G
(
τ
s
0
=
s
,
a
0
=
a
)
G(\tau_{s_0=s,a_0=a})
G(τs0=s,a0=a),而不需要得到完整的轨迹,从
s
,
a
s,a
s,a开始,采样的下一步的状态和动作
(
s
′
,
a
′
)
(s',a')
(s′,a′),并得到奖励
r
(
s
,
a
,
s
′
)
r(s,a,s')
r(s,a,s′),然后利用白尔曼公式来近似估计
G
(
τ
s
0
=
s
,
a
0
=
a
)
G(\tau_{s_0=s,a_0=a})
G(τs0=s,a0=a),
贝
尔
曼
公
式
:
Q
π
(
s
,
a
)
=
E
s
′
∼
p
(
s
′
∣
s
,
a
)
[
r
(
s
,
a
,
s
′
)
+
γ
E
a
′
∼
π
(
a
′
∣
s
′
)
Q
π
(
s
′
,
a
′
)
]
贝尔曼公式:Q^{\pi}(s,a)=E_{s'\sim p(s'|s,a)}[r(s,a,s')+\gamma E_{a'\sim \pi(a'|s')}Q^{\pi}(s',a')]
贝尔曼公式:Qπ(s,a)=Es′∼p(s′∣s,a)[r(s,a,s′)+γEa′∼π(a′∣s′)Qπ(s′,a′)]
那么有:
G
(
τ
s
0
=
s
,
a
0
=
a
,
s
1
=
s
′
,
a
1
=
a
′
)
=
r
(
s
,
a
,
s
′
)
+
γ
G
(
τ
s
0
=
s
′
,
a
0
=
a
′
)
≈
r
(
s
,
a
,
s
′
)
+
γ
Q
^
π
(
s
′
,
a
′
)
\begin{aligned} G(\tau_{s_0=s,a_0=a,s_1=s',a_1=a'})&=r(s,a,s')+\gamma G(\tau_{s_0=s',a_0=a'}) \\ &\approx r(s,a,s')+\gamma \hat{Q}^{\pi}(s',a') \end{aligned}
G(τs0=s,a0=a,s1=s′,a1=a′)=r(s,a,s′)+γG(τs0=s′,a0=a′)≈r(s,a,s′)+γQ^π(s′,a′)
其中,
Q
^
π
(
s
′
,
a
′
)
\hat{Q}^{\pi}(s',a')
Q^π(s′,a′)是当前的
Q
Q
Q函数的近似估计,因此更新公式可以修改为:
Q
^
π
(
s
,
a
)
←
Q
^
π
(
s
,
a
)
+
α
(
r
(
s
,
a
,
s
′
)
+
γ
Q
^
π
(
s
′
,
a
′
)
−
Q
^
π
(
s
,
a
)
)
\hat{Q}^\pi(s,a) \leftarrow \hat{Q}^\pi(s,a)+\alpha\left(r(s,a,s')+\gamma \hat{Q}^{\pi}(s',a')-\hat{Q}^\pi(s,a)\right)
Q^π(s,a)←Q^π(s,a)+α(r(s,a,s′)+γQ^π(s′,a′)−Q^π(s,a))
因此,更新
Q
^
π
(
s
′
,
a
′
)
\hat{Q}^{\pi}(s',a')
Q^π(s′,a′)只需要知道当前的状态
s
s
s和动作
a
a
a,奖励
r
(
s
,
a
,
s
′
)
r(s,a,s')
r(s,a,s′),下一步的状态
s
′
s'
s′和动作
a
′
a'
a′。这种策略学习方法叫做SARSA
算法(State Action Reward State Action)。
4.2.3.1 SARSA(on-policy)
S
A
R
S
A
SARSA
SARSA算法的学习过程如图所示,其采样和优化的策略都是
π
ϵ
\pi^\epsilon
πϵ,因此这是一种同策略
算法(on-policy),为了提高计算效率,我们不需要对环境中所有的
s
,
a
s,a
s,a组合进行穷举,并计算值函数,只需要将当前探索
(
s
,
a
,
r
,
s
′
,
a
′
)
(s,a,r,s',a')
(s,a,r,s′,a′)中的
s
′
,
a
′
s',a'
s′,a′作为下一次估计的起始状态和动作。
时序差分学习是强化学习的主要学习方法,其关键步骤就是在每次迭代中优化 Q Q Q函数来减少现实与预期的差距。这和动物学系的机制十分相像,在大脑神经元中,多巴胺的释放机制和时序差分学习十分吻合,多巴胺的释放,来自对于实际奖励和预期奖励的差异,而不是奖励本身。
算法 | 不同 |
---|---|
时序差分TD | 只需要一步,其总汇报需要通过马尔可夫性质近似估计 |
蒙特卡洛MC | 需要一条完整的路径才知道其总回报 |
4.2.3.2 Q学习(off-policy)
Q
Q
Q学习算法是一种异策略的时序差分学习算法,在
Q
Q
Q学习中,
Q
Q
Q函数的估计方法为:
Q
(
s
,
a
)
←
Q
(
s
,
a
)
+
α
(
r
(
s
,
a
,
s
′
)
+
γ
m
a
x
Q
(
s
′
,
a
′
)
a
′
−
Q
(
s
,
a
)
)
{Q}(s,a) \leftarrow {Q}(s,a)+\alpha\left(r(s,a,s')+\gamma \underset{a'}{max{Q}(s',a')}-{Q}(s,a)\right)
Q(s,a)←Q(s,a)+α(r(s,a,s′)+γa′maxQ(s′,a′)−Q(s,a))
相当于让 Q ( s , a ) Q(s,a) Q(s,a)直接去估计最优状态值函数 Q ∗ ( s , a ) Q^*(s,a) Q∗(s,a)。
与 S A R S A SARSA SARSA算法不同, Q Q Q学习方法不通过 π ϵ \pi^\epsilon πϵ来选择下一步的动作 a ′ a' a′,而是直接选最优的 Q Q Q函数,因此更新后的 Q Q Q函数是关于策略 π \pi π的,而不是策略 π ϵ \pi^\epsilon πϵ的,因此是off-policy算法。
4.2.4 深度Q网络
为了在连续的状态和动作空间中计算值函数
Q
π
(
s
,
a
)
Q^\pi(s,a)
Qπ(s,a),我们可以用一个函数
Q
ϕ
(
s
,
a
)
Q_\phi(s,a)
Qϕ(s,a)来表示近似计算,称为值函数近似。
Q
ϕ
(
s
,
a
)
≈
Q
π
(
s
,
a
)
Q_\phi(s,a) \approx Q^\pi(s,a)
Qϕ(s,a)≈Qπ(s,a)
其中
s
,
a
s,a
s,a分别是状态和动作的向量表示,函数
Q
ϕ
(
s
,
a
)
Q_\phi(s,a)
Qϕ(s,a)通常是一个参数为
ϕ
\phi
ϕ的函数,比如神经网络,输出为一个实数,称为Q网络
如果动作为有限离散的
M
M
M个动作
a
1
,
.
.
.
a
M
a_1,...a_M
a1,...aM,我们可以让
Q
Q
Q网络输出一个
M
M
M维向量,其中第
m
m
m维表示
Q
ϕ
(
s
,
a
m
)
Q_\phi(s,a_m)
Qϕ(s,am),对应值函数$ Q^\pi(s,a_m)$的近似值。
Q
ϕ
(
s
)
=
[
Q
ϕ
(
s
,
a
1
)
⋮
Q
ϕ
(
s
,
a
M
)
]
≈
[
Q
π
(
s
,
a
1
)
⋮
Q
π
(
s
,
a
M
)
]
Q_{\phi}(\boldsymbol{s})=\left[\begin{array}{c} Q_{\phi}\left(\boldsymbol{s}, a_{1}\right) \\ \vdots \\ Q_{\phi}\left(\boldsymbol{s}, a_{M}\right) \end{array}\right] \approx\left[\begin{array}{c} Q^{\pi}\left(s, a_{1}\right) \\ \vdots \\ Q^{\pi}\left(s, a_{M}\right) \end{array}\right]
Qϕ(s)=⎣⎢⎡Qϕ(s,a1)⋮Qϕ(s,aM)⎦⎥⎤≈⎣⎢⎡Qπ(s,a1)⋮Qπ(s,aM)⎦⎥⎤
我们需要学习一个参数
ϕ
\phi
ϕ使得函数
Q
ϕ
(
s
,
a
)
Q_\phi(s,a)
Qϕ(s,a)可以逼近值函数
Q
π
(
s
,
a
)
Q^\pi(s,a)
Qπ(s,a)。
- 如果采用蒙特卡洛方法,就直接让 Q ϕ ( s , a ) Q_\phi(s,a) Qϕ(s,a)去逼近平均的总回报 Q ^ π ( s , a ) \hat{Q}^\pi(s,a) Q^π(s,a)
- 如果采用时序差分方法,就让 Q ϕ ( s , a ) Q_\phi(s,a) Qϕ(s,a)去逼近 E s ′ , a ′ [ r ( s , a , s ′ ) + γ Q ϕ ( s ′ , a ′ ) ] E_{s',a'}[r(s,a,s')+\gamma {Q}_{\phi}(s',a')] Es′,a′[r(s,a,s′)+γQϕ(s′,a′)]
以Q学习为例,采取随机梯度下降,其目标函数为:
L
(
s
,
a
,
s
′
∣
ϕ
)
=
(
r
+
γ
max
a
′
Q
ϕ
(
s
′
,
a
′
)
−
Q
ϕ
(
s
,
a
)
)
2
\mathcal{L}\left(s, a, s^{\prime} \mid \phi\right)=\left(r+\gamma \max _{a^{\prime}} Q_{\phi}\left(s^{\prime}, \boldsymbol{a}^{\prime}\right)-Q_{\phi}(\boldsymbol{s}, \boldsymbol{a})\right)^{2}
L(s,a,s′∣ϕ)=(r+γa′maxQϕ(s′,a′)−Qϕ(s,a))2
然而,这个目标函数存在两个问题:一个是目标不稳定,参数学习的目标依赖于参数本身;二是样本之间有很强的相关性。为了解决这两个问题,
D
Q
N
DQN
DQN网络采用了两个措施
- F r e e z i n g T a r g e t N e t w o r k s Freezing Target Networks FreezingTargetNetworks: 目标网络冻结,即在一个时间段内固定目标中的参数,来稳定学习目标
- E x p e r i e n c e R e p l a y Experience Replay ExperienceReplay:经验回放,即构建一个经验池( R e p l a y B u f f e r Replay Buffer ReplayBuffer)来取出数据相关性,经验池是由智能体最近的经历组成的数据集。
训练时,随机从经验吃中抽取样本来代替当前的样本用来进行训练,这样,就打破了和相邻训练样本的相似性,避免模型陷入局部最优。经验回放在一定程度的上类似于监督学习,先收集样本,然后在这些样本上进行训练。深度
Q
Q
Q网络的学习算法如下。
整体上,在基于值函数的学习方法中,策略一般为确定性策略。策略优化通常依赖于值函数,比如贪心策略 π ( s ) = a r g m a x Q ( s , a ) a \pi(s)=\underset {a}{argmaxQ(s,a)} π(s)=aargmaxQ(s,a)。最优策略一般需要遍历当前状态 s s s下的所有动作,并找出最优的 Q ( s , a ) Q(s,a) Q(s,a)。当动作空间离散但是很大时,遍历球最大需要很高的时间复杂度,当动作空间是连续的并且 Q Q Q为非凸时,也很难求解出最佳的策略。
4.3 基于策略函数的学习方法
强化学习的目标是学习到一个策略
π
θ
(
a
∣
s
)
\pi_\theta(a|s)
πθ(a∣s)来最大化期望回报。一种直接的方法是在策略空间直接搜索来得到最佳策略,称为策略搜索
,策略搜索本质是一个优化问题,可以分为基于梯度的优化
和无梯度优化
。策略搜索和基于值函数的方法相比,策略搜索可以不需要值函数,直接优化策略,参数化的策略能够处理连续状态和动作,可以直接学出随机性策略。
策略梯度(Policy Gradient)是一种基于梯度的强化学习算法,假设 π θ ( a ∣ s ) \pi_\theta(a|s) πθ(a∣s)是一个关于 θ \theta θ的连续可微函数,我们可以用梯度上升的方法来优化参数 θ \theta θ使得目标函数 J ( θ ) J(\theta) J(θ)最大。
回顾一下强化学习的目标函数为:
J
(
θ
)
=
E
τ
∼
p
θ
(
τ
)
[
G
(
τ
)
]
=
E
τ
∼
p
θ
(
τ
)
∑
t
=
0
T
−
1
γ
t
r
t
+
1
J(\theta)=E_{\tau\sim p_{\theta}(\tau)}[G(\tau)]=E_{\tau\sim p_{\theta}(\tau)}\sum_{t=0}^{T-1}\gamma^{t}r_{t+1}
J(θ)=Eτ∼pθ(τ)[G(τ)]=Eτ∼pθ(τ)t=0∑T−1γtrt+1
目标函数 J ( θ ) J(\theta) J(θ)关于策略参数 θ \theta θ的导数为:
期望就是概率和分布函数乘积的积分。
∂ J ( θ ) ∂ θ = ∂ ∂ θ ∫ p θ ( τ ) G ( τ ) d τ = ∫ ( ∂ ∂ θ p θ ( τ ) ) G ( τ ) d τ = ∫ p θ ( τ ) ( 1 p θ ( τ ) ∂ ∂ θ p θ ( τ ) ) G ( τ ) d τ = ∫ p θ ( τ ) ( ∂ ∂ θ l o g p θ ( τ ) ) G ( τ ) d τ = E τ ∼ p θ ( τ ) [ ∂ ∂ θ l o g p θ ( τ ) ) G ( τ ) ] \begin{aligned} \frac{\partial J(\theta)}{\partial\theta}&=\frac{\partial }{\partial\theta}\int p_\theta(\tau)G(\tau)d\tau \\&=\int (\frac{\partial}{\partial\theta}p_\theta(\tau))G(\tau)d\tau\\ &=\int p_\theta(\tau)(\frac{1}{p_\theta(\tau)}\frac{\partial}{\partial\theta}p_\theta(\tau))G(\tau)d\tau\\ &=\int p_\theta(\tau)(\frac{\partial}{\partial\theta}logp_\theta(\tau))G(\tau)d\tau\\ &=E_{\tau \sim p_\theta(\tau)}[\frac{\partial}{\partial\theta}logp_\theta(\tau))G(\tau)] \end{aligned} ∂θ∂J(θ)=∂θ∂∫pθ(τ)G(τ)dτ=∫(∂θ∂pθ(τ))G(τ)dτ=∫pθ(τ)(pθ(τ)1∂θ∂pθ(τ))G(τ)dτ=∫pθ(τ)(∂θ∂logpθ(τ))G(τ)dτ=Eτ∼pθ(τ)[∂θ∂logpθ(τ))G(τ)]
其中,参数 θ \theta θ优化的方向是使得总回报 G ( τ ) G(\tau) G(τ)最大的轨迹 τ \tau τ的概率 p θ ( τ ) p_\theta(\tau) pθ(τ)也越大。
∂
∂
θ
l
o
g
p
θ
(
τ
)
\frac{\partial}{\partial\theta}logp_\theta(\tau)
∂θ∂logpθ(τ)可以进一步分解为:
∂
∂
θ
l
o
g
p
θ
(
τ
)
=
∂
∂
θ
l
o
g
(
p
(
s
0
)
∏
t
=
0
T
−
1
π
θ
(
a
t
∣
s
t
)
p
(
s
t
+
1
∣
s
t
,
a
t
)
)
=
∂
∂
θ
(
l
o
g
(
p
(
s
0
)
+
∑
t
=
0
T
−
1
l
o
g
π
θ
(
a
t
∣
s
t
)
+
∑
t
=
0
T
−
1
l
o
g
p
(
s
t
+
1
∣
s
t
,
a
t
)
=
∂
∂
θ
∑
t
=
0
T
−
1
l
o
g
π
θ
(
a
t
∣
s
t
)
=
∑
t
=
0
T
−
1
∂
∂
θ
l
o
g
π
θ
(
a
t
∣
s
t
)
\begin{aligned} \frac{\partial}{\partial\theta}logp_\theta(\tau)&=\frac{\partial}{\partial\theta}log(p(s_0)\prod_{t=0}^{T-1}\pi_{\theta}(a_t|s_t)p(s_{t+1}|s_t,a_t))\\ &=\frac{\partial}{\partial\theta}(log(p(s_0)+\sum_{t=0}^{T-1}log\pi_\theta(a_t|s_t)+\sum_{t=0}^{T-1}logp(s_{t+1}|s_t,a_t)\\ &=\frac{\partial}{\partial\theta}\sum_{t=0}^{T-1}log\pi_\theta(a_t|s_t)\\ &=\sum_{t=0}^{T-1}\frac{\partial}{\partial\theta}log\pi_\theta(a_t|s_t) \end{aligned}
∂θ∂logpθ(τ)=∂θ∂log(p(s0)t=0∏T−1πθ(at∣st)p(st+1∣st,at))=∂θ∂(log(p(s0)+t=0∑T−1logπθ(at∣st)+t=0∑T−1logp(st+1∣st,at)=∂θ∂t=0∑T−1logπθ(at∣st)=t=0∑T−1∂θ∂logπθ(at∣st)
因此,
∂
∂
θ
l
o
g
p
θ
(
τ
)
\frac{\partial}{\partial\theta}logp_\theta(\tau)
∂θ∂logpθ(τ)是和状态转移概率无关,只和策略函数有关。
那么策略梯度 ∂ J ( θ ) ∂ θ \frac{\partial J(\theta)}{\partial\theta} ∂θ∂J(θ)可以写为:
回顾一下, G ( τ ) = ∑ t = 0 T − 1 γ t r t + 1 G(\tau)=\sum_{t=0}^{T-1}\gamma^{t}r_{t+1} G(τ)=∑t=0T−1γtrt+1
∂ J ( θ ) ∂ θ = ∂ ∂ θ ∫ p θ ( τ ) G ( τ ) d τ = ∫ ( ∂ ∂ θ p θ ( τ ) ) G ( τ ) d τ = ∫ p θ ( τ ) ( 1 p θ ( τ ) ∂ ∂ θ p θ ( τ ) ) G ( τ ) d τ = ∫ p θ ( τ ) ( ∂ ∂ θ l o g p θ ( τ ) ) G ( τ ) d τ = E τ ∼ p θ ( τ ) [ ∂ ∂ θ l o g p θ ( τ ) ) G ( τ ) ] = E τ ∼ p θ ( τ ) [ ∑ t = 0 T − 1 ∂ ∂ θ l o g π θ ( a t ∣ s t ) G ( τ ) ] = E τ ∼ p θ ( τ ) [ ∑ t = 0 T − 1 ∂ ∂ θ l o g π θ ( a t ∣ s t ) ( G ( τ 0 : t ) + γ t G ( τ t : T ) ) ] = E τ ∼ p θ ( τ ) [ ∑ t = 0 T − 1 ∂ ∂ θ l o g π θ ( a t ∣ s t ) ( γ t G ( τ t : T ) ) ] \begin{aligned} \frac{\partial J(\theta)}{\partial\theta}&=\frac{\partial }{\partial\theta}\int p_\theta(\tau)G(\tau)d\tau \\&=\int (\frac{\partial}{\partial\theta}p_\theta(\tau))G(\tau)d\tau\\ &=\int p_\theta(\tau)(\frac{1}{p_\theta(\tau)}\frac{\partial}{\partial\theta}p_\theta(\tau))G(\tau)d\tau\\ &=\int p_\theta(\tau)(\frac{\partial}{\partial\theta}logp_\theta(\tau))G(\tau)d\tau\\ &=E_{\tau \sim p_\theta(\tau)}[\frac{\partial}{\partial\theta}logp_\theta(\tau))G(\tau)]\\ &=E_{\tau \sim p_\theta(\tau)}[\sum_{t=0}^{T-1}\frac{\partial}{\partial\theta}log\pi_\theta(a_t|s_t)G(\tau)]\\ &=E_{\tau \sim p_\theta(\tau)}[\sum_{t=0}^{T-1}\frac{\partial}{\partial\theta}log\pi_\theta(a_t|s_t)(G(\tau_{0:t})+\gamma^tG(\tau_{t:T}))]\\ &=E_{\tau \sim p_\theta(\tau)}[\sum_{t=0}^{T-1}\frac{\partial}{\partial\theta}log\pi_\theta(a_t|s_t)(\gamma^tG(\tau_{t:T}))]\\ \end{aligned} ∂θ∂J(θ)=∂θ∂∫pθ(τ)G(τ)dτ=∫(∂θ∂pθ(τ))G(τ)dτ=∫pθ(τ)(pθ(τ)1∂θ∂pθ(τ))G(τ)dτ=∫pθ(τ)(∂θ∂logpθ(τ))G(τ)dτ=Eτ∼pθ(τ)[∂θ∂logpθ(τ))G(τ)]=Eτ∼pθ(τ)[t=0∑T−1∂θ∂logπθ(at∣st)G(τ)]=Eτ∼pθ(τ)[t=0∑T−1∂θ∂logπθ(at∣st)(G(τ0:t)+γtG(τt:T))]=Eτ∼pθ(τ)[t=0∑T−1∂θ∂logπθ(at∣st)(γtG(τt:T))]
时刻 t t t之前的回报和时刻 t t t之后的动作无关。
其中
G
(
τ
t
:
T
)
G(\tau_{t:T})
G(τt:T)表示从时刻
t
t
t作为起始时刻收到的总回报。
G
(
τ
t
:
T
)
=
∑
t
′
=
t
T
−
1
γ
t
′
−
t
r
t
′
+
1
G(\tau_{t:T})=\sum_{t'=t}^{T-1}\gamma^{t'-t}r_{t'+1}
G(τt:T)=t′=t∑T−1γt′−trt′+1
4.3.1 REINFORCE算法
期望可以通过采样的方式来近似,根据当前的策略
π
θ
\pi_\theta
πθ,通过随机游走
的方式来采集多个轨迹
τ
(
1
)
,
τ
(
2
)
,
.
.
.
τ
(
N
)
\tau^{(1)},\tau^{(2)},...\tau^{(N)}
τ(1),τ(2),...τ(N),其中每一条轨迹
τ
(
n
)
=
s
0
n
,
a
0
n
,
s
1
n
,
a
1
n
,
.
.
.
\tau^{(n)}=s_0^{n},a_0^{n},s_1^{n},a_1^{n},...
τ(n)=s0n,a0n,s1n,a1n,...那么策略梯度
∂
J
(
θ
)
∂
θ
\frac{\partial J(\theta)}{\partial\theta}
∂θ∂J(θ)可以写为:
∂
J
(
θ
)
∂
θ
≈
1
N
∑
n
=
1
N
[
∑
t
=
0
T
−
1
∂
∂
θ
l
o
g
π
θ
(
a
t
(
n
)
∣
s
t
(
n
)
)
(
γ
t
G
(
τ
t
:
T
(
n
)
)
)
]
\frac{\partial J(\theta)}{\partial\theta} \approx \frac{1}{N} \sum_{n=1}^N[\sum_{t=0}^{T-1}\frac{\partial}{\partial\theta}log\pi_\theta(a_t^{(n)}|s_t^{(n)})(\gamma^tG(\tau_{t:T}^{(n)}))]
∂θ∂J(θ)≈N1n=1∑N[t=0∑T−1∂θ∂logπθ(at(n)∣st(n))(γtG(τt:T(n)))]
结合随机梯度上升算法,我们可以每次采集一条轨迹,计算每个时刻的梯度并更新参数,称为
R
E
I
N
F
O
R
C
E
REINFORCE
REINFORCE算法。
4.3.2 带基准线的REINFORCE算法
R
E
I
N
F
O
R
C
E
REINFORCE
REINFORCE算法的一个主要缺点是不同路径之间的方差很大,导致训练不稳定,这是在高维空间中使用蒙特卡洛方法的通病。一种减少方差的通用方法是引入一个控制变量,假设要估计函数
f
f
f的期望,为了减少
f
f
f的方差,我们引入一个已知期望的函数
g
g
g,令
f
^
=
f
−
α
(
g
−
E
[
g
]
)
\hat{f}=f-\alpha(g-E[g])
f^=f−α(g−E[g])
因为
E
[
f
^
]
=
E
[
f
]
E[\hat{f}]=E[f]
E[f^]=E[f],可以用
f
^
\hat{f}
f^的期望来估计函数
f
f
f的期望,同时利用函数
g
g
g来减少
f
^
\hat{f}
f^的方差。
函数 f ^ \hat{f} f^的方差为:
补充期望和方差的公式, D ( x ) = E ( x 2 ) − [ E ( x ) 2 ] D(x)=E(x^2)-[E(x)^2] D(x)=E(x2)−[E(x)2],且 E [ g ] E[g] E[g]为常数,常数的方差为0。 g g g是参数,是变量,而 E ( g ) E(g) E(g)是一个常数
D ( f ^ ) = D ( f ) + D ( α ( g − E [ g ] ) ) − 2 c o v ( f , α ( g − E ( g ) ) ) = D ( f ) + α 2 D ( g − E [ g ] ) − 2 c o v ( f , α g ) + 2 c o v ( f , α E ( g ) ) = D ( f ) + α 2 [ D ( g ) + D ( E [ g ] ) − 2 c o v ( g , E ( g ) ) ] − 2 α c o v ( f , g ) + 2 α c o v ( f , E ( g ) ) = D ( f ) + α 2 D ( g ) + α 2 D ( E [ g ] ) − 2 α c o v ( f , g ) + 2 α c o v ( f , E ( g ) ) = D ( f ) + α 2 D ( g ) − 2 α c o v ( f , g ) \begin{aligned} D(\hat{f})&=D(f)+D(\alpha(g-E[g]))-2cov(f,\alpha(g-E(g)))\\ &=D(f)+\alpha^2D(g-E[g])-2cov(f,\alpha g)+2cov(f,\alpha E(g))\\ &=D(f)+\alpha^2[D(g)+D(E[g])-2cov(g,E(g))]-2\alpha cov(f,g)+2\alpha cov(f,E(g))\\ &=D(f)+\alpha^2D(g)+\alpha^2D(E[g])-2\alpha cov(f,g)+2\alpha cov(f,E(g))\\ &=D(f)+\alpha^2D(g)-2\alpha cov(f,g) \end{aligned} D(f^)=D(f)+D(α(g−E[g]))−2cov(f,α(g−E(g)))=D(f)+α2D(g−E[g])−2cov(f,αg)+2cov(f,αE(g))=D(f)+α2[D(g)+D(E[g])−2cov(g,E(g))]−2αcov(f,g)+2αcov(f,E(g))=D(f)+α2D(g)+α2D(E[g])−2αcov(f,g)+2αcov(f,E(g))=D(f)+α2D(g)−2αcov(f,g)
如果想让
D
(
f
^
)
D(\hat{f})
D(f^)最小,令
∂
D
(
f
^
)
∂
α
=
0
\frac{\partial D(\hat{f})}{\partial\alpha}=0
∂α∂D(f^)=0,则有:
α
=
c
o
v
(
f
,
g
)
D
(
g
)
\alpha=\frac{cov(f,g)}{D(g)}
α=D(g)cov(f,g)
因此
D
(
f
^
)
=
D
(
f
)
+
c
o
v
(
f
,
g
)
2
D
(
g
)
−
2
c
o
v
(
f
,
g
)
2
D
(
g
)
=
(
1
−
c
o
v
(
f
,
g
)
2
D
(
g
)
D
(
f
)
)
D
(
f
)
=
(
1
−
c
o
r
r
(
f
,
g
)
2
)
D
(
f
)
\begin{aligned} D(\hat{f})&=D(f)+\frac{cov(f,g)^2}{D(g)}-\frac{2cov(f,g)^2}{D(g)}\\ &=(1-\frac{cov(f,g)^2}{D(g)D(f)})D(f)\\ &=(1-corr(f,g)^2)D(f) \end{aligned}
D(f^)=D(f)+D(g)cov(f,g)2−D(g)2cov(f,g)2=(1−D(g)D(f)cov(f,g)2)D(f)=(1−corr(f,g)2)D(f)
其中,
c
o
r
r
(
f
,
g
)
corr(f,g)
corr(f,g)为函数
f
f
f和
g
g
g的相关性,如果相关性越高,则
f
^
\hat{f}
f^的方差越小。
带基准线的REINFORCE算法
在每个时刻
t
t
t,其策略梯度变为:
∂
J
(
θ
)
∂
θ
=
E
s
t
[
E
a
t
[
∂
∂
θ
l
o
g
π
θ
(
a
t
∣
s
t
)
(
γ
t
G
(
τ
t
:
T
)
]
]
\frac{\partial J(\theta)}{\partial\theta} =E_{s_t}\left[E_{a_t}[\frac{\partial}{\partial\theta}log\pi_\theta(a_t|s_t)(\gamma^tG(\tau_{t:T})]\right]
∂θ∂J(θ)=Est[Eat[∂θ∂logπθ(at∣st)(γtG(τt:T)]]
为了减少策略梯度的方差,我们引入一个与
a
t
a_t
at无关的基准函数
b
(
s
t
)
b(s_t)
b(st),
∂
J
^
(
θ
)
∂
θ
=
E
s
t
[
E
a
t
[
∂
∂
θ
l
o
g
π
θ
(
a
t
∣
s
t
)
(
γ
t
G
(
τ
t
:
T
)
−
b
(
s
t
)
]
]
\frac{\partial \hat{J}(\theta)}{\partial\theta} =E_{s_t}\left[E_{a_t}[\frac{\partial}{\partial\theta}log\pi_\theta(a_t|s_t)(\gamma^tG(\tau_{t:T})-b(s_t)]\right]
∂θ∂J^(θ)=Est[Eat[∂θ∂logπθ(at∣st)(γtG(τt:T)−b(st)]]
因为
b
(
s
t
)
b(s_t)
b(st)与
a
t
a_t
at无关,则有
∫ a t π θ ( a t ∣ s t ) d a t = 1 \int_{a_t}\pi_\theta(a_t|s_t)da_t=1 ∫atπθ(at∣st)dat=1,所有策略的积分是1。第三个等号处 b ( s t ) b(s_t) b(st) θ \theta θ无关,可以拿出来也可以放进去。
先积分后求导和先求导后积分是等价的。
E a t [ b ( s t ) ∂ ∂ θ l o g π θ ( a t ∣ s t ) ] = ∫ a t ( b ( s t ) ∂ ∂ θ l o g π θ ( a t ∣ s t ) ) π θ ( a t ∣ s t ) d a t = ∫ a t ( b ( s t ) ∂ ∂ θ π θ ( a t ∣ s t ) ) d a t = ∂ ∂ θ ( b ( s t ) ∫ a t π θ ( a t ∣ s t ) d a t ) = ∂ ∂ θ ( b ( s t ) ⋅ 1 ) = 0 \begin{aligned} E_{a_t}[b(s_t)\frac{\partial}{\partial\theta}log\pi_\theta(a_t|s_t)]&=\int_{a_t}\left(b(s_t)\frac{\partial}{\partial\theta}log\pi_\theta(a_t|s_t)\right)\pi_{\theta}(a_t|s_t)da_t\\ &=\int_{a_t}\left(b(s_t)\frac{\partial}{\partial\theta}\pi_\theta(a_t|s_t)\right)da_t\\ &=\frac{\partial}{\partial\theta}\left(b(s_t)\int_{a_t}\pi_\theta(a_t|s_t)da_t\right)\\ &=\frac{\partial}{\partial\theta}(b(s_t)\cdot 1)\\ &=0 \end{aligned} Eat[b(st)∂θ∂logπθ(at∣st)]=∫at(b(st)∂θ∂logπθ(at∣st))πθ(at∣st)dat=∫at(b(st)∂θ∂πθ(at∣st))dat=∂θ∂(b(st)∫atπθ(at∣st)dat)=∂θ∂(b(st)⋅1)=0
因此可以知道 ∂ J ^ ( θ ) ∂ θ = ∂ J ( θ ) ∂ θ \frac{\partial \hat{J}(\theta)}{\partial\theta}=\frac{\partial {J}(\theta)}{\partial\theta} ∂θ∂J^(θ)=∂θ∂J(θ)
为了有效减小方差,
b
(
s
t
)
b(s_t)
b(st)和
G
(
τ
t
:
T
)
G(\tau_{t:T})
G(τt:T)越相关越好,一个很自然的选择是令
b
(
s
t
)
b(s_t)
b(st)为值函数
V
π
θ
(
s
t
)
V^{\pi_\theta}(s_t)
Vπθ(st),而值函数未知,我们可以用一个科学系的函数
V
ϕ
(
s
t
)
V_\phi(s_t)
Vϕ(st)来近似值函数,目标函数为
L
(
ϕ
∣
s
t
,
π
θ
)
=
(
V
π
θ
(
s
t
)
−
V
ϕ
(
s
t
)
)
2
L(\phi|s_t,\pi_\theta)=(V^{\pi_\theta}(s_t)-V_\phi(s_t))^2
L(ϕ∣st,πθ)=(Vπθ(st)−Vϕ(st))2
其中,
V
π
θ
(
s
t
)
=
E
[
G
(
τ
t
:
T
)
]
V^{\pi_\theta}(s_t)=E[G(\tau_{t:T})]
Vπθ(st)=E[G(τt:T)]也用蒙特卡洛方法估计。采用随机梯度下降法,参数
ϕ
\phi
ϕ的梯度为:
其中的系数2已经不重要了。
∂
L
(
ϕ
∣
s
t
,
π
θ
)
∂
ϕ
=
−
(
G
(
τ
t
:
T
)
−
V
ϕ
(
s
t
)
)
∂
V
ϕ
(
s
t
)
∂
ϕ
\frac{\partial \mathcal{L}\left(\phi | s_{t}, \pi_{\theta}\right)}{\partial \phi}=-\left(G\left(\tau_{t: T}\right)-V_{\phi}\left(s_{t}\right)\right) \frac{\partial V_{\phi}\left(s_{t}\right)}{\partial \phi}
∂ϕ∂L(ϕ∣st,πθ)=−(G(τt:T)−Vϕ(st))∂ϕ∂Vϕ(st)
策略函数参数
θ
\theta
θ的梯度为:
∂
J
^
(
θ
)
∂
θ
=
E
s
t
[
E
a
t
[
∂
∂
θ
l
o
g
π
θ
(
a
t
∣
s
t
)
(
γ
t
G
(
τ
t
:
T
)
−
b
(
s
t
)
]
]
\frac{\partial \hat{J}(\theta)}{\partial\theta} =E_{s_t}\left[E_{a_t}[\frac{\partial}{\partial\theta}log\pi_\theta(a_t|s_t)(\gamma^tG(\tau_{t:T})-b(s_t)]\right]
∂θ∂J^(θ)=Est[Eat[∂θ∂logπθ(at∣st)(γtG(τt:T)−b(st)]]