目录
- 随机近似与随机梯度下降
- Mean estimation
- Robbins-Monro 算法
- 用 Robbins-Monro 算法解释 Mean estimation
- 用 Robbins-Monro 算法解释 Batch Gradient descent
- 用 SGD 解释 Mean estimation
- SGD 的一个有趣的性质
- 时序差分方法
- Sarsa 算法
- 一个例子
- Expected Sarsa 算法
- n-step Sarsa 算法
- Q-learning 算法
- off-policy 和 on-policy
- 总结
系列笔记:
【强化学习的数学原理】课程笔记–1(基本概念,贝尔曼公式)
【强化学习的数学原理】课程笔记–2(贝尔曼最优公式,值迭代与策略迭代)
【强化学习的数学原理】课程笔记–3(蒙特卡洛方法)
随机近似与随机梯度下降
这个部分主要是为了下一章 时序差分方法 做铺垫,其内容也适用于机器学习等方向。
Mean estimation
上一节 中我们已经讨论过,在 model-free 的情况下,为了求解
q
π
k
(
s
,
a
)
=
E
[
G
t
∣
S
t
=
s
,
A
t
=
a
]
q_{\pi_k}(s,a) = E[G_t | S_t = s, A_t =a]
qπk(s,a)=E[Gt∣St=s,At=a]
我们需要利用 大数定律 的结论,通过大量的采样
g
π
k
(
i
)
(
s
,
a
)
,
i
=
1
,
2
,
3...
g^{(i)}_{\pi_k}(s,a), i = 1,2,3...
gπk(i)(s,a),i=1,2,3...,来估计
q
π
k
(
s
,
a
)
q_{\pi_k}(s,a)
qπk(s,a):
q
π
k
(
s
,
a
)
=
1
n
∑
i
=
1
n
g
π
k
(
i
)
(
s
,
a
)
q_{\pi_k}(s,a) = \frac{1}{n} \sum_{i=1}^n g^{(i)}_{\pi_k}(s,a)
qπk(s,a)=n1i=1∑ngπk(i)(s,a)
我们将上述问题简记为:
E
(
X
)
≈
x
ˉ
=
1
n
∑
i
=
1
n
x
i
E(X) \approx \bar{x} = \frac{1}{n} \sum_{i=1}^n x_i
E(X)≈xˉ=n1i=1∑nxi
上述式子在实际中有一个效率的问题:需要等到所有的样本
x
i
x_i
xi 全都采集完毕才能计算。而上述式子有一个 等价 的迭代式子:
w
k
+
1
=
w
k
−
1
k
(
w
k
−
x
k
)
w_{k+1} = w_k - \frac{1}{k} (w_k -x_k)
wk+1=wk−k1(wk−xk)
其中
w
k
=
1
k
−
1
∑
i
=
1
k
−
1
x
i
w_k = \frac{1}{k-1} \sum_{i=1}^{k-1} x_i
wk=k−11∑i=1k−1xi 。证明也很容易:
w
k
+
1
=
1
k
∑
i
=
1
k
x
i
=
1
k
(
∑
i
=
1
k
−
1
x
i
+
x
k
)
=
1
k
(
(
k
−
1
)
w
k
+
x
k
)
=
w
k
−
1
k
(
w
k
−
x
k
)
w_{k+1} = \frac{1}{k} \sum_{i=1}^{k} x_i = \frac{1}{k} (\sum_{i=1}^{k-1} x_i + x_k) = \frac{1}{k} ((k-1)w_k + x_k) = w_k - \frac{1}{k} (w_k -x_k)
wk+1=k1i=1∑kxi=k1(i=1∑k−1xi+xk)=k1((k−1)wk+xk)=wk−k1(wk−xk)
作为上式的延展,我们提出一个更广泛使用的迭代式:
w
k
+
1
=
w
k
−
α
k
(
w
k
−
x
k
)
w_{k+1} = w_k - \alpha_k (w_k -x_k)
wk+1=wk−αk(wk−xk)
在下面的 Robbins-Monro 算法 中,我们会展示:在满足一定条件时,上式依然满足 lim k → ∞ w k = E [ X ] \lim_{k \rightarrow \infin} w_k = E[X] limk→∞wk=E[X]
Robbins-Monro 算法
Robbins-Monro 算法提出了以下框架:
要求解 g ( w ) = 0 g(w) = 0 g(w)=0
如果不知道 g g g 的具体形式,但可以拿到足够多的采样 g ( w k ) , k = 1 , 2 , 3... g(w_k), k = 1,2,3... g(wk),k=1,2,3...,那么可以用迭代式:
w k + 1 = w k − a k ( g ( w k ) + η k ) , a k > 0 w_{k+1} = w_k - a_k (g(w_k) + \eta_k), \quad a_k > 0 wk+1=wk−ak(g(wk)+ηk),ak>0
来求解,其中随机变量 η ∈ R \eta \in \mathbb{R} η∈R 是观测误差。当以下条件满足时,可以保证 w k w_k wk 收敛到 w ∗ w^* w∗ ( w ∗ w^* w∗ 满足 g ( w ∗ ) = 0 g(w^*) = 0 g(w∗)=0):
\quad
- 0 < c 1 ≤ ∇ w g ( w ) ≤ c 2 , ∀ w 0 < c_1 \leq \nabla_w g(w) \leq c_2,\forall w 0<c1≤∇wg(w)≤c2,∀w
\quad- ∑ k = 1 ∞ a k = ∞ \sum_{k=1}^{\infin} a_k = \infin ∑k=1∞ak=∞ 并且 ∑ k = 1 ∞ a k 2 < ∞ \sum_{k=1}^{\infin} a_k^2 < \infin ∑k=1∞ak2<∞
\quad- E [ η k ∣ H k ] = 0 E[\eta_k|\mathcal{H}_k] = 0 E[ηk∣Hk]=0 并且 E [ η k 2 ∣ H k ] < ∞ E[\eta_k^2|\mathcal{H}_k] < \infin E[ηk2∣Hk]<∞,其中 H k = { w k , w k − 1 , . . . } \mathcal{H}_k = \{w_k, w_{k-1}, ...\} Hk={wk,wk−1,...}
下面我们依次来直观理解一下每个条件:
-
0
<
c
1
≤
∇
w
g
(
w
)
≤
c
2
,
∀
w
0 < c_1 \leq \nabla_w g(w) \leq c_2,\forall w
0<c1≤∇wg(w)≤c2,∀w:前半部分
0
<
c
1
≤
∇
w
g
(
w
)
0 < c_1 \leq \nabla_w g(w)
0<c1≤∇wg(w) 是要求
g
(
w
)
g(w)
g(w) 是单调递增函数,而由于常用的场景是求解
min
w
J
(
w
)
\min_w J(w)
minwJ(w) 时,转化为求解
∇
w
J
(
w
)
=
0
\nabla_w J(w) = 0
∇wJ(w)=0,因此
0
<
c
1
≤
∇
w
2
J
(
w
)
≤
c
2
0 < c_1 \leq \nabla_w^2 J(w) \leq c_2
0<c1≤∇w2J(w)≤c2 即要求
J
(
w
)
J(w)
J(w) 是 凸函数。而后半部分
∇
w
g
(
w
)
≤
c
2
\nabla_w g(w) \leq c_2
∇wg(w)≤c2 则限制了
g
(
w
)
g(w)
g(w) 的增长率不会发散,否则会影响
w
k
w_k
wk 的收敛性。
\quad
\quad -
∑
k
=
1
∞
a
k
=
∞
\sum_{k=1}^{\infin} a_k = \infin
∑k=1∞ak=∞ 并且
∑
k
=
1
∞
a
k
2
<
∞
\sum_{k=1}^{\infin} a_k^2 < \infin
∑k=1∞ak2<∞:这其实是希望
a
k
a_k
ak 是一个趋于 0,但又不会过快趋于 0 的序列。要求
a
k
a_k
ak 趋于 0 很好理解,因为
w
k
+
1
−
w
k
=
a
k
(
g
(
w
k
)
+
η
k
)
w_{k+1} - w_k = a_k (g(w_k) + \eta_k)
wk+1−wk=ak(g(wk)+ηk) 因此
a
k
a_k
ak 趋于 0 才能保证
w
k
w_k
wk 能收敛。那
a
k
a_k
ak 不会过快趋于 0 有什么作用呢?由于
w
k
+
1
−
w
k
=
−
a
k
(
g
(
w
k
)
+
η
k
)
w_{k+1} - w_k = - a_k (g(w_k) + \eta_k)
wk+1−wk=−ak(g(wk)+ηk),因此
w
1
−
w
∞
=
∑
k
=
1
∞
a
k
(
g
(
w
k
)
+
η
k
)
w_1 - w_{\infin} = \sum_{k=1}^{\infin} a_k (g(w_k) + \eta_k)
w1−w∞=k=1∑∞ak(g(wk)+ηk),如果
a
k
a_k
ak 很快就趋于 0 了,由于
∇
w
g
(
w
)
≤
c
2
\nabla_w g(w) \leq c_2
∇wg(w)≤c2 ,因此
∑
k
=
1
∞
a
k
(
g
(
w
k
)
+
η
k
)
\sum_{k=1}^{\infin} a_k (g(w_k) + \eta_k)
∑k=1∞ak(g(wk)+ηk) 有上界,即
∣
w
1
−
w
∞
∣
≤
b
|w_1 - w_{\infin}| \leq b
∣w1−w∞∣≤b 由此带来的问题是
w
1
w_1
w1 不能任意选择,因为若选的
w
1
w_1
w1 离
w
∗
w^*
w∗ 太远,那么
∣
w
1
−
w
∞
∣
≤
b
|w_1 - w_{\infin}| \leq b
∣w1−w∞∣≤b 就不成立了,因而是否能收敛到
w
∗
w^*
w∗ 也无法保证 (NOTE:
a
k
=
1
k
a_k = \frac{1}{k}
ak=k1 就是一个满足条件的例子)
\quad
\quad - E [ η k ∣ H k ] = 0 E[\eta_k|\mathcal{H}_k] = 0 E[ηk∣Hk]=0 并且 E [ η k 2 ∣ H k ] < ∞ E[\eta_k^2|\mathcal{H}_k] < \infin E[ηk2∣Hk]<∞:这个条件比较弱,甚至不要求 η \eta η 满足高斯分布,只要 { η k } \{\eta_k\} {ηk} 独立同分布,且满足 E [ η k ] = 0 , E [ η k 2 ] < ∞ E[\eta_k] = 0, E[\eta_k^2] < \infin E[ηk]=0,E[ηk2]<∞ 即可。本质是希望 η \eta η 中不要包含有效信息,有效的信息应该都包含在 g ( w ) g(w) g(w) 中。
抛开上述条件,Robbins-Monro 算法的想法也很简单,就是:对于一个单调递增函数,随便取一个点
w
1
w_1
w1,如果
g
(
w
1
)
+
η
1
<
0
g(w_1) + \eta_1 < 0
g(w1)+η1<0,说明
w
∗
w^*
w∗ 在
w
1
w_1
w1的右边,那么下一步应该往右走,而
w
2
=
w
1
−
a
1
(
g
(
w
1
)
+
η
1
)
w_{2} = w_1 - a_1 (g(w_1) + \eta_1)
w2=w1−a1(g(w1)+η1)
由于
g
(
w
1
)
+
η
1
<
0
g(w_1) + \eta_1 < 0
g(w1)+η1<0,因此
−
a
1
(
g
(
w
1
)
+
η
1
)
>
0
- a_1 (g(w_1) + \eta_1) > 0
−a1(g(w1)+η1)>0,即方向向右。同理,如果
g
(
w
1
)
+
η
1
>
0
g(w_1) + \eta_1 > 0
g(w1)+η1>0,则下一步会往左走一点
图示:
用 Robbins-Monro 算法解释 Mean estimation
为了能将 Mean estimation 囊括到 Robbins-Monro 的框架下,我们需要定义:
g
(
w
)
=
w
−
E
[
X
]
g(w) = w - E[X]
g(w)=w−E[X]
这样求解
g
(
w
∗
)
=
0
g(w^*) = 0
g(w∗)=0 就等价于求解
w
∗
=
E
[
X
]
w^* = E[X]
w∗=E[X]。由此 Robbins-Monro 中的迭代式
w
k
+
1
=
w
k
−
a
k
(
g
(
w
k
)
+
η
k
)
w_{k+1} = w_k - a_k (g(w_k) + \eta_k)
wk+1=wk−ak(g(wk)+ηk)
其中
g
(
w
k
)
=
w
k
−
E
[
X
]
g(w_k) = w_k - E[X]
g(wk)=wk−E[X],
η
k
\eta_k
ηk 是样本
x
k
x_k
xk 的观测误差
E
[
X
]
−
x
k
E[X] - x_k
E[X]−xk(易证
E
[
η
k
]
=
0
E[\eta_k] = 0
E[ηk]=0 且
E
[
η
k
2
]
<
∞
E[\eta_k^2] < \infin
E[ηk2]<∞),再取
a
k
=
1
k
a_k = \frac{1}{k}
ak=k1,因此有
w
k
+
1
=
w
k
−
a
k
(
g
(
w
k
)
+
η
k
)
=
w
k
−
1
k
(
w
k
−
E
[
X
]
+
E
[
X
]
−
x
k
)
=
w
k
−
1
k
(
w
k
−
x
k
)
\begin{aligned} w_{k+1} &= w_k - a_k (g(w_k) + \eta_k)\\ &= w_k - \frac{1}{k} (w_k - E[X] + E[X] - x_k)\\ &= w_k - \frac{1}{k} (w_k - x_k) \end{aligned}
wk+1=wk−ak(g(wk)+ηk)=wk−k1(wk−E[X]+E[X]−xk)=wk−k1(wk−xk)
即 Mean estimation
用 Robbins-Monro 算法解释 Batch Gradient descent
机器学习中常用的 Gradient descent 算法描述如下:
min
w
J
(
w
)
=
E
[
f
(
w
,
X
)
]
\min_w J(w) = E[f(w,X)]
wminJ(w)=E[f(w,X)]
其中
f
f
f 即损失函数,
w
w
w 是模型中的待优化参数。求解的迭代式是:
w
k
+
1
=
w
k
−
α
k
∇
w
J
(
w
)
=
w
k
−
α
k
E
[
∇
w
f
(
w
k
,
X
)
]
=
w
k
−
α
k
⋅
1
n
∑
i
=
1
n
∇
w
f
(
w
k
,
x
i
)
\begin{aligned} w_{k+1} =& w_k - \alpha_k \nabla_w J(w)\\ =& w_k - \alpha_k E[\nabla_w f(w_k,X)] \\ =& w_k - \alpha_k \cdot \frac{1}{n} \sum_{i=1}^n \nabla_w f(w_k,x_i) \end{aligned}
wk+1===wk−αk∇wJ(w)wk−αkE[∇wf(wk,X)]wk−αk⋅n1i=1∑n∇wf(wk,xi)
其中
(
x
i
,
f
(
w
k
,
x
i
)
)
(x_i, f(w_k,x_i))
(xi,f(wk,xi)) 即一对样本。由于每次更新
w
w
w 都需要将所有的样本都计算到,因此也叫 Batch Gradient descent。 但跟 Mean estimation 类似,Batch Gradient descent 要求所有样本采样完毕才能计算,效率比较低。因此提出了每次只使用一个样本来更新参数的算法:Stochastic Gradient Descent (SGD)
w
k
+
1
=
w
k
−
α
k
∇
w
f
(
w
k
,
x
k
)
w_{k+1} = w_k - \alpha_k \nabla_w f(w_k,x_k)
wk+1=wk−αk∇wf(wk,xk)
为了将 SGD 囊括到Robbins-Monro 的框架下,只需要定义
g
(
w
)
=
∇
w
J
(
w
)
g(w) = \nabla_w J(w)
g(w)=∇wJ(w)
那么求解
g
(
w
∗
)
=
∇
w
J
(
w
∗
)
=
0
g(w^*) = \nabla_w J(w^*) = 0
g(w∗)=∇wJ(w∗)=0 就等价于求解
min
w
J
(
w
)
\min_w J(w)
minwJ(w) (当
J
(
w
)
J(w)
J(w) 是凸函数时),可以推导:
w
k
+
1
=
w
k
−
a
k
(
g
(
w
k
)
+
η
k
)
=
w
k
−
α
k
(
E
[
∇
w
f
(
w
k
,
X
)
]
+
(
∇
w
f
(
w
k
,
x
k
)
−
E
[
∇
w
f
(
w
k
,
X
)
]
)
)
=
w
k
−
α
k
⋅
∇
w
f
(
w
k
,
x
k
)
\begin{aligned} w_{k+1} =& w_k - a_k (g(w_k) + \eta_k)\\ =& w_k - \alpha_k (E[\nabla_w f(w_k,X)] + (\nabla_w f(w_k,x_k) - E[\nabla_w f(w_k,X)])) \\ =& w_k - \alpha_k \cdot \nabla_w f(w_k,x_k) \end{aligned}
wk+1===wk−ak(g(wk)+ηk)wk−αk(E[∇wf(wk,X)]+(∇wf(wk,xk)−E[∇wf(wk,X)]))wk−αk⋅∇wf(wk,xk)
即 SGD。上式中 η k = ∇ w f ( w k , x k ) − E [ ∇ w f ( w k , X ) ] \eta_k = \nabla_w f(w_k,x_k) - E[\nabla_w f(w_k,X)] ηk=∇wf(wk,xk)−E[∇wf(wk,X)],同样易证 E [ η k ] = 0 E[\eta_k] = 0 E[ηk]=0 且 E [ η k 2 ] < ∞ E[\eta_k^2] < \infin E[ηk2]<∞。这里同时也说明了 SGD的收敛性,跟随 Robbins-Monro 框架的收敛性而成立
用 SGD 解释 Mean estimation
注意到如果想将 Mean estimation 套入 SGD 的框架,需要找到一个
f
(
w
,
X
)
f(w,X)
f(w,X) 使得满足:
∇
w
f
(
w
,
X
)
=
w
−
X
\nabla_w f(w,X) = w - X
∇wf(w,X)=w−X
因为这样就有:
w
k
+
1
=
w
k
−
α
k
⋅
∇
w
f
(
w
k
,
x
k
)
=
w
k
−
α
k
(
w
k
−
x
k
)
w_{k+1} = w_k - \alpha_k \cdot \nabla_w f(w_k,x_k) = w_k - \alpha_k (w_k - x_k)
wk+1=wk−αk⋅∇wf(wk,xk)=wk−αk(wk−xk)
上式即 Mean estimation 的迭代式。因此我们可以构造:
min
w
J
(
w
)
=
E
[
1
2
∣
∣
w
−
X
∣
∣
2
]
\min_w J(w) = E[\frac{1}{2}||w-X||^2]
wminJ(w)=E[21∣∣w−X∣∣2]
这个从直观也比较好理解, 即求解 w = E [ X ] w = E[X] w=E[X] 等价于求解 min w E [ 1 2 ∣ ∣ w − X ∣ ∣ 2 ] \min_w E[\frac{1}{2}||w-X||^2] minwE[21∣∣w−X∣∣2]
SGD 的一个有趣的性质
尽管上面我们说明了 SGD 的收敛性,但它的收敛速度呢?是否也足够快呢?这里有一个有趣的结论:
当 w k w_k wk 距离 w ∗ w^* w∗ 较远时,SGD 向 w ∗ w^* w∗ 靠近的速度与一般的 GD 差不多,但是当 w k w_k wk 离 w ∗ w^* w∗ 比较近时,其收敛会呈现一定的 随机性
定义
δ
k
=
∣
∇
w
f
(
w
k
,
x
k
)
−
E
[
∇
w
f
(
w
k
,
X
)
]
∣
∣
E
[
∇
w
f
(
w
k
,
X
)
]
∣
\delta_k = \frac{|\nabla_wf(w_k,x_k) - E[\nabla_w f(w_k,X)]|}{|E[\nabla_w f(w_k,X)]|}
δk=∣E[∇wf(wk,X)]∣∣∇wf(wk,xk)−E[∇wf(wk,X)]∣
来描述 SGD 和 GD 算法的相对误差,
δ
k
\delta_k
δk 越小,表明 SGD 与 GD 的收敛速度越接近。
由于
g
(
w
∗
)
=
∇
w
J
(
w
∗
)
=
E
[
∇
w
f
(
w
∗
,
X
)
]
=
0
g(w^*) = \nabla_w J(w^*) = E[\nabla_w f(w^*,X)] = 0
g(w∗)=∇wJ(w∗)=E[∇wf(w∗,X)]=0,因此
δ
k
=
∣
∇
w
f
(
w
k
,
x
k
)
−
E
[
∇
w
f
(
w
k
,
X
)
]
∣
∣
E
[
∇
w
f
(
w
k
,
X
)
]
−
E
[
∇
w
f
(
w
∗
,
X
)
]
∣
=
∣
∇
w
f
(
w
k
,
x
k
)
−
E
[
∇
w
f
(
w
k
,
X
)
]
∣
E
[
∇
w
2
f
(
w
k
^
,
X
)
(
w
k
−
w
∗
)
]
\delta_k = \frac{|\nabla_wf(w_k,x_k) - E[\nabla_w f(w_k,X)]|}{|E[\nabla_w f(w_k,X)] - E[\nabla_w f(w^*,X)]|} = \frac{|\nabla_wf(w_k,x_k) - E[\nabla_w f(w_k,X)]|}{E[\nabla^2_w f(\hat{w_k},X)(w_k - w^*)]}
δk=∣E[∇wf(wk,X)]−E[∇wf(w∗,X)]∣∣∇wf(wk,xk)−E[∇wf(wk,X)]∣=E[∇w2f(wk^,X)(wk−w∗)]∣∇wf(wk,xk)−E[∇wf(wk,X)]∣
其中总存在 w k ^ ∈ ( w k , w ∗ ) \hat{w_k} \in (w_k,w^*) wk^∈(wk,w∗) ,使得 E [ ∇ w f ( w k , X ) ] − E [ ∇ w f ( w ∗ , X ) ] = E [ ∇ w 2 f ( w k ^ , X ) ( w k − w ∗ ) ] E[\nabla_w f(w_k,X)] - E[\nabla_w f(w^*,X)] = E[\nabla^2_w f(\hat{w_k},X)(w_k - w^*)] E[∇wf(wk,X)]−E[∇wf(w∗,X)]=E[∇w2f(wk^,X)(wk−w∗)] 是 中值定理 的结论。
由于
w
k
−
w
∗
w_k - w^*
wk−w∗ 不是随机变量,且由 Robbins-Monro 框架的收敛性条件,
0
<
c
≤
∇
w
2
f
0 < c \leq \nabla^2_w f
0<c≤∇w2f,可得:
∣
E
[
∇
w
2
f
(
w
k
^
,
X
)
(
w
k
−
w
∗
)
]
∣
=
E
[
∇
w
2
f
(
w
k
^
,
X
)
]
∣
∣
w
k
−
w
∗
∣
≥
c
∣
w
k
−
w
∗
∣
|E[\nabla^2_w f(\hat{w_k},X)(w_k - w^*)]| = E[\nabla^2_w f(\hat{w_k},X)]||w_k - w^*| \geq c |w_k - w^*|
∣E[∇w2f(wk^,X)(wk−w∗)]∣=E[∇w2f(wk^,X)]∣∣wk−w∗∣≥c∣wk−w∗∣
⇒ δ k ≤ ∣ ∇ w f ( w k , x k ) − E [ ∇ w f ( w k , X ) ] ∣ c ∣ w k − w ∗ ∣ \Rightarrow \delta_k \leq \frac{|\nabla_wf(w_k,x_k) - E[\nabla_w f(w_k,X)]|}{c |w_k - w^*|} ⇒δk≤c∣wk−w∗∣∣∇wf(wk,xk)−E[∇wf(wk,X)]∣
因此我们可以发现:
- 当 ∣ w k − w ∗ ∣ |w_k - w^*| ∣wk−w∗∣ 比较大时, δ k \delta_k δk 的上界比较小,即此时 SGD 与 GD 的收敛速度比较接近
- 当 ∣ w k − w ∗ ∣ |w_k - w^*| ∣wk−w∗∣ 比较小时, δ k \delta_k δk 的上界比较大,即此时 SGD 的收敛速度不太能保证,有较强的 随机性
时序差分方法
时序差分方法也是一种 model-free 方法,类似 蒙特卡洛方法,我们有一个足够长的 trajectory ( s 0 , r 1 , s 1 , . . . , s t , r t + 1 , s t + 1 , . . . ) (s_0, r_1, s_1, ..., s_t, r_{t+1}, s_{t+1},...) (s0,r1,s1,...,st,rt+1,st+1,...) 来作为样本集。回忆求解贝尔曼最优公式时的 策略迭代 过程
已知 π k → ( v π k ( 0 ) → v π k ( 1 ) → . . . → v π k ( ∞ ) = v π k ) → 求解 q π k ( s , a ) → π k + 1 = { 1 , a = a ∗ ( s ) 0 , a ≠ a ∗ ( s ) → . . . 已知 \pi_k \rightarrow (v_{\pi_k}^{(0)} \rightarrow v_{\pi_k}^{(1)} \rightarrow ... \rightarrow v_{\pi_k}^{(\infin)} = v_{\pi_k}) \rightarrow 求解 q_{\pi_k}(s,a) \rightarrow \pi_{k+1}= \begin{cases} 1, \quad a = a^*(s)\\ 0, \quad a \neq a^*(s) \end{cases} \rightarrow ... 已知πk→(vπk(0)→vπk(1)→...→vπk(∞)=vπk)→求解qπk(s,a)→πk+1={1,a=a∗(s)0,a=a∗(s)→...
其中
(
v
π
k
(
0
)
→
v
π
k
(
1
)
→
.
.
.
→
v
π
k
(
∞
)
=
v
π
k
)
(v_{\pi_k}^{(0)} \rightarrow v_{\pi_k}^{(1)} \rightarrow ... \rightarrow v_{\pi_k}^{(\infin)} = v_{\pi_k})
(vπk(0)→vπk(1)→...→vπk(∞)=vπk) 即是通过迭代求解一个求解一个贝尔曼公式:
v
π
k
(
1
)
=
r
π
k
+
γ
P
π
k
v
π
k
(
0
)
v
π
k
(
2
)
=
r
π
k
+
γ
P
π
k
v
π
k
(
1
)
…
贝尔曼公式
⟵
v
π
k
(
∞
)
=
r
π
k
+
γ
P
π
k
v
π
k
(
∞
)
\begin{aligned} v_{\pi_k}^{(1)} &= r_{\pi_k} + \gamma P_{\pi_k} v_{\pi_k}^{(0)}\\ v_{\pi_k}^{(2)} &= r_{\pi_k} + \gamma P_{\pi_k} v_{\pi_k}^{(1)}\\ & \dots \\ \text{贝尔曼公式} \quad \longleftarrow \quad v_{\pi_k}^{(\infin)} &= r_{\pi_k} + \gamma P_{\pi_k} v_{\pi_k}^{(\infin)}\\ \end{aligned}
vπk(1)vπk(2)贝尔曼公式⟵vπk(∞)=rπk+γPπkvπk(0)=rπk+γPπkvπk(1)…=rπk+γPπkvπk(∞)
但现在由于是 model-free 了,我们只能通过样本来求解
v
π
k
v_{\pi_k}
vπk。在 第一节 中,
v
π
k
v_{\pi_k}
vπk 的原始定义是在 Policy 为
π
k
{\pi_k}
πk, 从状态 s 出发时,所有可能的 trajectory 的 discounted return
G
t
G_t
Gt 的期望值:
v
π
(
s
)
=
E
[
G
t
∣
S
t
=
s
]
=
E
[
R
t
+
1
+
γ
G
t
+
1
∣
S
t
=
s
]
v_{\pi}(s) = E[G_t|S_t=s] = E[R_{t+1} + \gamma G_{t+1}|S_t = s]
vπ(s)=E[Gt∣St=s]=E[Rt+1+γGt+1∣St=s]
又由于
E
[
G
t
+
1
∣
S
t
=
s
]
=
v
π
(
S
t
+
1
)
E[G_{t+1}|S_t = s] = v_{\pi}(S_{t+1})
E[Gt+1∣St=s]=vπ(St+1)
因此:
v
π
(
s
)
=
E
[
R
t
+
1
+
γ
v
π
(
S
t
+
1
)
∣
S
t
=
s
]
v_{\pi}(s) = E[R_{t+1} + \gamma v_{\pi}(S_{t+1})|S_t = s]
vπ(s)=E[Rt+1+γvπ(St+1)∣St=s]
上式可以用 Robbins-Monro 框架来迭代求解:
记 g ( v π ( s t ) ) = v π ( s t ) − E [ R t + 1 + γ v π ( S t + 1 ) ∣ S t = s t ] g(v_{\pi}(s_t)) = v_{\pi}(s_t) - E[R_{t+1} + \gamma v_{\pi}(S_{t+1})|S_t = s_t] g(vπ(st))=vπ(st)−E[Rt+1+γvπ(St+1)∣St=st]
目标是求解: g ( v π ( s t ) ) = 0 g(v_{\pi}(s_t)) = 0 g(vπ(st))=0
上式就是我们前面讨论的 Mean estimation,每来一个样本
(
s
t
,
r
t
+
1
,
s
t
+
1
)
(s_t, r_{t+1}, s_{t+1})
(st,rt+1,st+1),其更新式为:
v
t
+
1
(
s
t
)
=
v
t
(
s
t
)
−
α
t
(
s
t
)
(
v
t
(
s
t
)
−
[
r
t
+
1
+
γ
v
t
(
s
t
+
1
)
]
)
v_{t+1}(s_t) = v_t(s_t) - \alpha_t(s_t) (v_t(s_t) - [r_{t+1} + \gamma v_t(s_{t+1})])
vt+1(st)=vt(st)−αt(st)(vt(st)−[rt+1+γvt(st+1)])
其中
v
t
ˉ
=
r
t
+
1
+
γ
v
t
(
s
t
+
1
)
\bar{v_t} = r_{t+1} + \gamma v_t(s_{t+1})
vtˉ=rt+1+γvt(st+1) 称为 TD target,
δ
t
=
v
t
(
s
t
)
−
v
t
ˉ
\delta_t = v_t(s_t) - \bar{v_t}
δt=vt(st)−vtˉ 则称为 TD error。注意这里:
v
t
+
1
(
s
)
=
v
t
(
s
)
, if
s
≠
s
t
v_{t+1}(s) = v_t(s), \text { if } s \neq s_t
vt+1(s)=vt(s), if s=st
即,每学习一个样本,
v
t
+
1
v_{t+1}
vt+1 相比
v
t
v_t
vt 只会更新当前样本涉及到的 state 的 state value(这是当然的)。
如前面 Robbins-Monro 所讨论的,迭代的目标是减小 TD error,由于 g ( v π ( s t ) ) g(v_{\pi}(s_t)) g(vπ(st)) 是单调递增函数:
- 当 v t ( s t ) − v t ˉ < 0 v_t(s_t) - \bar{v_t} < 0 vt(st)−vtˉ<0 时, v t + 1 ( s t ) v_{t+1}(s_t) vt+1(st) 往 v t ( s t ) v_t(s_t) vt(st) 右边移一点
- 当 v t ( s t ) − v t ˉ > 0 v_t(s_t) - \bar{v_t} > 0 vt(st)−vtˉ>0 时, v t + 1 ( s t ) v_{t+1}(s_t) vt+1(st) 往 v t ( s t ) v_t(s_t) vt(st) 左边移一点
从数学上来说,因为当
v
t
=
v
π
v_t = v_{\pi}
vt=vπ 时:
E
[
δ
t
∣
S
t
=
s
t
]
=
E
[
v
π
(
S
t
)
−
(
R
t
+
1
+
γ
v
π
(
S
t
+
1
)
)
∣
S
t
=
s
t
]
=
v
π
(
s
t
)
−
E
[
R
t
+
1
+
γ
v
π
(
S
t
+
1
)
∣
S
t
=
s
t
]
=
0
\begin{align} E[\delta_t | S_t=s_t] &= E[v_{\pi}(S_t) - (R_{t+1} + \gamma v_{\pi}(S_{t+1})) | S_t=s_t] \\ &= v_{\pi}(s_t) - E[R_{t+1} + \gamma v_{\pi}(S_{t+1}) | S_t=s_t] \\ &= 0 \end{align}
E[δt∣St=st]=E[vπ(St)−(Rt+1+γvπ(St+1))∣St=st]=vπ(st)−E[Rt+1+γvπ(St+1)∣St=st]=0
因此减小 TD error 即使得 v t v_t vt 向 v π v_{\pi} vπ 靠近。
与蒙特卡洛算法的区别
- 首先最主要的区别:TD 算法摆脱了蒙特卡洛算法中 需要等到所有的样本都采完,才能进行一轮更新。TD 算法中,每增加一个样本就可以进行一次 value state 更新
- TD 算法由于每次只更新了一个样本,所以其开始的时候,是对 R t + 1 + γ G t + 1 R_{t+1} + \gamma G_{t+1} Rt+1+γGt+1 的有偏估计,当学习的样本量足够多时,才逐渐变成无偏估计;而蒙特卡洛算法一条 trajectory 就采到足够多的样本,且一次迭代就全部使用,因此直接就是无偏估计
- TD 算法估计的 state value,而蒙特卡洛方法是直接估计 action value
Sarsa 算法
上述 TD 算法只是求解了贝尔曼方程,但这不足以找到最优的 Policy,要找最优 Policy,需要知道所有 state 的 action value,回忆蒙特卡洛算法:
已知 π k → 从 ( s , a ) 出发,做 n 次实验,有 n 个结果 g π k ( i ) ( s , a ) → 估计 q π k ( s , a ) = 1 n ∑ i g π k ( i ) ( s , a ) → π k + 1 = { 1 , a = a π k ( s ) 0 , a ≠ a π k ( s ) → . . . 已知 \pi_k \rightarrow 从 (s,a) 出发,做n次实验,有n个结果 g_{\pi_k}^{(i)}(s,a) \rightarrow 估计 q_{\pi_k}(s,a) = \frac{1}{n}\sum_i g_{\pi_k}^{(i)}(s,a) \rightarrow \pi_{k+1}= \begin{cases} 1, \quad a = a_{\pi_k}(s)\\ 0, \quad a \neq a_{\pi_k}(s) \end{cases} \rightarrow ... 已知πk→从(s,a)出发,做n次实验,有n个结果gπk(i)(s,a)→估计qπk(s,a)=n1i∑gπk(i)(s,a)→πk+1={1,a=aπk(s)0,a=aπk(s)→...
这里我们也是想估计 q π k ( s , a ) q_{\pi_k}(s,a) qπk(s,a),但类似 TD 算法的想法,Sarsa 算法也是来一个样本就学一点,而不是像蒙特卡洛算法一样等所有的样本都生成完了,再一起学。
第一节 当中,我们推到过 action value 形式的贝尔曼公式,首先看常见的 state value 的贝尔曼公式:
v
π
(
s
)
=
∑
a
π
(
a
∣
s
)
[
∑
r
P
(
r
∣
s
,
a
)
r
+
γ
∑
s
′
P
(
s
′
∣
s
,
a
)
v
π
(
s
′
)
]
,
∀
s
\begin{aligned} v_{\pi}(s) = \sum_{a} \pi(a|s) [\sum_{r} P(r|s,a)r + \gamma \sum_{s'} P(s'|s,a) v_{\pi}(s')], \quad \forall s \end{aligned}
vπ(s)=a∑π(a∣s)[r∑P(r∣s,a)r+γs′∑P(s′∣s,a)vπ(s′)],∀s
由于
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)
因此上式等价于
q
π
(
s
,
a
)
=
∑
r
P
(
r
∣
s
,
a
)
r
+
γ
∑
s
′
P
(
s
′
∣
s
,
a
)
v
π
(
s
′
)
=
∑
r
P
(
r
∣
s
,
a
)
r
+
γ
∑
s
′
P
(
s
′
∣
s
,
a
)
∑
a
′
q
π
(
s
′
,
a
′
)
π
(
a
′
∣
s
′
)
=
∑
r
P
(
r
∣
s
,
a
)
r
+
γ
∑
s
′
∑
a
′
q
π
(
s
′
,
a
′
)
P
(
s
′
∣
s
,
a
)
P
(
a
′
∣
s
′
)
=
∑
r
P
(
r
∣
s
,
a
)
r
+
γ
∑
s
′
∑
a
′
q
π
(
s
′
,
a
′
)
P
(
s
′
∣
s
,
a
)
P
(
a
′
∣
s
′
,
s
,
a
)
=
∑
r
P
(
r
∣
s
,
a
)
r
+
γ
∑
s
′
∑
a
′
q
π
(
s
′
,
a
′
)
P
(
s
′
,
a
′
∣
s
,
a
)
=
E
[
R
+
γ
q
π
(
S
′
,
A
′
)
∣
s
,
a
]
\begin{aligned} q_{\pi}(s,a) &= \sum_{r} P(r|s,a)r + \gamma \sum_{s'} P(s'|s,a) v_{\pi}(s')\\ &= \sum_{r} P(r|s,a)r + \gamma \sum_{s'} P(s'|s,a) \sum_{a'} q_{\pi}(s',a') \pi(a'|s')\\ &= \sum_{r} P(r|s,a)r + \gamma \sum_{s'}\sum_{a'} q_{\pi}(s',a') P(s'|s,a) P(a'|s')\\ &= \sum_{r} P(r|s,a)r + \gamma \sum_{s'}\sum_{a'} q_{\pi}(s',a') P(s'|s,a) P(a'|s',s,a)\\ &= \sum_{r} P(r|s,a)r + \gamma \sum_{s'}\sum_{a'} q_{\pi}(s',a') P(s',a'|s,a)\\ &= E[R + \gamma q_{\pi}(S',A')|s,a] \end{aligned}
qπ(s,a)=r∑P(r∣s,a)r+γs′∑P(s′∣s,a)vπ(s′)=r∑P(r∣s,a)r+γs′∑P(s′∣s,a)a′∑qπ(s′,a′)π(a′∣s′)=r∑P(r∣s,a)r+γs′∑a′∑qπ(s′,a′)P(s′∣s,a)P(a′∣s′)=r∑P(r∣s,a)r+γs′∑a′∑qπ(s′,a′)P(s′∣s,a)P(a′∣s′,s,a)=r∑P(r∣s,a)r+γs′∑a′∑qπ(s′,a′)P(s′,a′∣s,a)=E[R+γqπ(S′,A′)∣s,a]
因此 Sarsa 算法的 Robbins-Monro 框架为:
记 g ( q π ( s t , a t ) ) = q π ( s t , a t ) − E [ R t + 1 + γ q π ( S t + 1 , A t + 1 ) ∣ S t = s t , A t = a t ] g(q_{\pi}(s_t,a_t)) = q_{\pi}(s_t,a_t) - E[R_{t+1} + \gamma q_{\pi}(S_{t+1},A_{t+1})|S_t = s_t, A_t = a_t] g(qπ(st,at))=qπ(st,at)−E[Rt+1+γqπ(St+1,At+1)∣St=st,At=at]
目标是求解: g ( q π ( s t , a t ) ) = 0 g(q_{\pi}(s_t,a_t)) = 0 g(qπ(st,at))=0
\quad
每来一个样本 { s t , a t , r t + 1 , s t + 1 , a t + 1 } \{s_t, a_t, r_{t+1}, s_{t+1}, a_{t+1}\} {st,at,rt+1,st+1,at+1},更新式为: q t + 1 ( s t , a t ) = q t ( s t , a t ) − α t ( s t , a t ) [ q t ( s t , a t ) − ( r t + 1 + γ q t ( s t + 1 , a t + 1 ) ) ] q_{t+1}(s_t,a_t) = q_t(s_t,a_t) - \alpha_t(s_t,a_t) [q_t(s_t,a_t) - (r_{t+1} + \gamma q_t(s_{t+1},a_{t+1}))] qt+1(st,at)=qt(st,at)−αt(st,at)[qt(st,at)−(rt+1+γqt(st+1,at+1))]
同样有: q t + 1 ( s , a ) = q t ( s , a ) , ∀ ( s , a ) ≠ ( s t , a t ) q_{t+1}(s,a) = q_t(s,a), \qquad \forall (s,a) \neq (s_t,a_t) qt+1(s,a)=qt(s,a),∀(s,a)=(st,at)
Sarsa 算法的完整实现为:
这里面有一点需要注意,我们每采到一个样本 ( s t , a t , r t + 1 , s t + 1 , a t + 1 ) (s_t, a_t, r_{t+1}, s_{t+1}, a_{t+1}) (st,at,rt+1,st+1,at+1),就会立即更新 q t + 1 ( s t , a t ) q_{t+1}(s_t,a_t) qt+1(st,at) 然后立马就更新 Policy π t + 1 \pi_{t+1} πt+1,并且由这个 Policy 来采下一个样本,这里采用 ϵ \epsilon ϵ-greedy 方法来更新策略也是这个原因(即 Sarsa 是 on-policy 的,迭代中的策略同时也要用来生成下一步的样本)。
另外不难看出 Sarsa 找的 仅仅是从某一个 state 出发,到 target state 的最优路线,而不是求所有 state 的最优路线。因此 Sarsa 往往会主要在 start state 和 target state 附近寻找,因为一般情况下,最优路线也不会绕路。但理论上来说,不把所有的 state 都“走”足够多次,是 不能保证 Sarsa 找到的路径是 “全局最优” 的,有时也会出现只找到局部最优的情况。
一个例子
左边展示了 Sarsa 的结果,可以看出,它只是找到了从 start state 开始的一个最优路径,但是其他 state 的 policy 很多并不是最优的。右图显示了随着算法迭代,一个 episode 的长度和 reward,可以看到,随着迭代步数增加,episode 的长度减少,reward 增加,这些都说明,Policy 在不断变好。
Expected Sarsa 算法
Expected Sarsa 算法的迭代式与 Sarsa 非常接近:
q t + 1 ( s t , a t ) = q t ( s t , a t ) − α t ( s t , a t ) [ q t ( s t , a t ) − ( r t + 1 + γ E [ q t ( s t + 1 , A ) ] ) ] q t + 1 ( s , a ) = q t ( s , a ) , ∀ ( s , a ) ≠ ( s t , a t ) \begin{align} q_{t+1}(s_t,a_t) &= q_t(s_t,a_t) - \alpha_t(s_t,a_t) [q_t(s_t,a_t) - (r_{t+1} + \gamma E[q_t(s_{t+1},A)])]\\ q_{t+1}(s,a) &= q_t(s,a), \qquad \forall (s,a) \neq (s_t,a_t) \end{align} qt+1(st,at)qt+1(s,a)=qt(st,at)−αt(st,at)[qt(st,at)−(rt+1+γE[qt(st+1,A)])]=qt(s,a),∀(s,a)=(st,at)
其中 E [ q t ( s t + 1 , A ) ] = ∑ a π t ( a ∣ s t + 1 ) q t ( s t + 1 , a ) = v t ( s t + 1 ) E[q_t(s_{t+1},A)] = \sum_{a} \pi_t(a|s_{t+1})q_t(s_{t+1},a) = v_t(s_{t+1}) E[qt(st+1,A)]=∑aπt(a∣st+1)qt(st+1,a)=vt(st+1)
上述迭代式也是基于求解贝尔曼公式:
q π ( s , a ) = E [ R t + 1 + γ E [ q π ( S t + 1 , A t + 1 ) ∣ S t + 1 ] ∣ S t = s , A t = a ] = E [ R t + 1 + γ v π ( S t + 1 ) ∣ S t = s , A t = a ] \begin{align} q_{\pi}(s,a) &= E[R_{t+1} + \gamma E[q_{\pi}(S_{t+1},A_{t+1})|S_{t+1}] | S_t = s, A_t = a]\\ &= E[R_{t+1} + \gamma v_{\pi}(S_{t+1}) | S_t = s, A_t = a]\\ \end{align} qπ(s,a)=E[Rt+1+γE[qπ(St+1,At+1)∣St+1]∣St=s,At=a]=E[Rt+1+γvπ(St+1)∣St=s,At=a]
上式等价于贝尔曼公式的原因是:
v
π
(
s
)
=
E
[
R
t
+
1
+
γ
v
π
(
S
t
+
1
)
∣
S
t
=
s
]
=
∑
a
π
(
a
∣
s
)
E
[
R
t
+
1
+
γ
v
π
(
S
t
+
1
)
∣
S
t
=
s
,
A
t
=
a
]
=
∑
a
π
(
a
∣
s
)
q
π
(
s
,
a
)
\begin{align} v_{\pi}(s) &= E[R_{t+1} + \gamma v_{\pi}(S_{t+1})|S_t = s]\\ &= \sum_{a} \pi(a|s) E[R_{t+1} + \gamma v_{\pi}(S_{t+1})|S_t = s, A_t = a]\\ &= \sum_{a} \pi(a|s) q_{\pi}(s,a) \end{align}
vπ(s)=E[Rt+1+γvπ(St+1)∣St=s]=a∑π(a∣s)E[Rt+1+γvπ(St+1)∣St=s,At=a]=a∑π(a∣s)qπ(s,a)
Expected Sarsa 跟 Sarsa 相比:
- TD target 计算更复杂了
- 采样样本从 { s t , a t , r t + 1 , s t + 1 , a t + 1 } \{s_t, a_t, r_{t+1}, s_{t+1}, a_{t+1}\} {st,at,rt+1,st+1,at+1} 变成了 { s t , a t , r t + 1 , s t + 1 } \{s_t, a_t, r_{t+1}, s_{t+1}\} {st,at,rt+1,st+1},estimation variance 变小了
n-step Sarsa 算法
n-step Sarsa 是 Sarsa 的另一个重要变体,回忆 action value 的原始定义:
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]
G
t
G_t
Gt 可以分解成
G
t
=
R
t
+
1
+
γ
R
t
+
2
+
γ
2
R
t
+
3
+
.
.
.
G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + ...
Gt=Rt+1+γRt+2+γ2Rt+3+...
或者更细的拆分:
Sarsa
←
G
t
(
1
)
=
R
t
+
1
+
γ
q
π
(
S
t
+
1
,
A
t
+
1
)
G
t
(
2
)
=
R
t
+
1
+
γ
R
t
+
2
+
γ
2
q
π
(
S
t
+
2
,
A
t
+
2
)
…
n-step Sarsa
←
G
t
(
n
)
=
R
t
+
1
+
γ
R
t
+
2
+
.
.
.
+
γ
n
q
π
(
S
t
+
n
,
A
t
+
n
)
…
蒙特卡洛算法
←
G
t
(
∞
)
=
R
t
+
1
+
γ
R
t
+
2
+
γ
2
R
t
+
3
+
γ
3
R
t
+
4
+
.
.
.
\begin{aligned} \text{Sarsa} \leftarrow \quad G_t^{(1)} &= R_{t+1} + \gamma q_{\pi}(S_{t+1},A_{t+1})\\ G_t^{(2)} &= R_{t+1} + \gamma R_{t+2} + \gamma^2 q_{\pi}(S_{t+2},A_{t+2})\\ \dots\\ \text{n-step Sarsa} \leftarrow \quad G_t^{(n)} &= R_{t+1} + \gamma R_{t+2} + ... + \gamma^n q_{\pi}(S_{t+n},A_{t+n})\\ \dots\\ \text{蒙特卡洛算法} \leftarrow \quad G_t^{(\infin)} &= R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \gamma^3 R_{t+4} + ... \end{aligned}
Sarsa←Gt(1)Gt(2)…n-step Sarsa←Gt(n)…蒙特卡洛算法←Gt(∞)=Rt+1+γqπ(St+1,At+1)=Rt+1+γRt+2+γ2qπ(St+2,At+2)=Rt+1+γRt+2+...+γnqπ(St+n,At+n)=Rt+1+γRt+2+γ2Rt+3+γ3Rt+4+...
即 Sarsa 是每拿到一个样本就更新,蒙特卡洛算法 是拿到所有样本再更新,而 n-step Sarsa 是拿到 n 个样本再更新
因此 n-step Sarsa 的效果也介于 Sarsa 和蒙特卡洛算法之间:
- 当 n 比较大时,更接近蒙特卡洛算法,此时其 bias 比较小,但 estimate variance 比较大
- 当 n 比较小时,更接近 Sarsa,此时其 bias 比较大,但 estimate variance 比较小
Q-learning 算法
Q-learning 跟上述 Sarsa 算法及其变种最主要的区别是:它是直接求的 optimal action value,这就意味着,它不需要像 Sarsa 一样,在每一步迭代后,专门再更新一下 Policy π \pi π ,而是每次迭代直接就可得本次迭代后的最优的 Policy 了
直接给出 Q-learning 的迭代式:
q t + 1 ( s t , a t ) = q t ( s t , a t ) − α t ( s t , a t ) [ q t ( s t , a t ) − ( r t + 1 + γ max a q t ( s t + 1 , a ) ) ] q t + 1 ( s , a ) = q t ( s , a ) , ∀ ( s , a ) ≠ ( s t , a t ) \begin{align} q_{t+1}(s_t,a_t) &= q_t(s_t,a_t) - \alpha_t(s_t,a_t) [q_t(s_t,a_t) - (r_{t+1} + \gamma \max_{a} q_t(s_{t+1},a))]\\ q_{t+1}(s,a) &= q_t(s,a), \qquad \forall (s,a) \neq (s_t,a_t) \end{align} qt+1(st,at)qt+1(s,a)=qt(st,at)−αt(st,at)[qt(st,at)−(rt+1+γamaxqt(st+1,a))]=qt(s,a),∀(s,a)=(st,at)
Q-learning 的本质是 贝尔曼最优公式,这是因为:
q
(
s
,
a
)
=
E
[
R
t
+
1
+
γ
max
a
q
(
S
t
+
1
,
a
)
∣
S
t
=
s
,
A
t
=
a
]
=
∑
r
P
(
r
∣
s
,
a
)
r
+
γ
∑
s
′
P
(
s
′
∣
s
,
a
)
max
a
q
(
s
′
,
a
)
\begin{aligned} q(s,a) &= E[R_{t+1} + \gamma \max_{a} q(S_{t+1},a) |S_t = s, A_t=a ]\\ &= \sum_r P(r|s,a)r + \gamma \sum_{s'} P(s'|s,a) \max_{a} q(s',a)\\ \end{aligned}
q(s,a)=E[Rt+1+γamaxq(St+1,a)∣St=s,At=a]=r∑P(r∣s,a)r+γs′∑P(s′∣s,a)amaxq(s′,a)
由于 贝尔曼最优公式 :
v
∗
(
s
)
=
max
a
q
(
s
,
a
)
v^*(s) = \max_a q(s,a)
v∗(s)=maxaq(s,a),因此上式等价于
v
∗
(
s
)
=
max
a
[
∑
r
P
(
r
∣
s
,
a
)
r
+
γ
∑
s
′
P
(
s
′
∣
s
,
a
)
v
∗
(
s
′
)
]
=
max
π
∑
a
π
(
a
∣
s
)
[
∑
r
P
(
r
∣
s
,
a
)
r
+
γ
∑
s
′
P
(
s
′
∣
s
,
a
)
v
∗
(
s
′
)
]
\begin{aligned} v^*(s) &= \max_a [\sum_r P(r|s,a)r + \gamma \sum_{s'} P(s'|s,a) v^*(s')]\\ &= \max_{\pi} \sum_a \pi(a|s) [\sum_r P(r|s,a)r + \gamma \sum_{s'} P(s'|s,a) v^*(s')] \end{aligned}
v∗(s)=amax[r∑P(r∣s,a)r+γs′∑P(s′∣s,a)v∗(s′)]=πmaxa∑π(a∣s)[r∑P(r∣s,a)r+γs′∑P(s′∣s,a)v∗(s′)]
即为 第二节 中讨论的贝尔曼最优公式。
off-policy 和 on-policy
这是强化学习中一个比较基础而重要的概念。与深度学习不同,强化学习中其实有两种 Policy:
- behavior policy:用于生成样本的 Policy
- target policy:实际优化的 Policy
\quadoff-policy 和 on-policy 分别指:
- off-policy:behavior policy 和 target policy 不同
- on-policy:behavior policy 和 target policy 是同一 Policy(我们前面讨论的绝大部分算法都是这种,这也是这些算法要用 ϵ \epsilon ϵ-greedy 而不是直接 greedy 算法更新策略的原因)
Q-learning 是目前为止的第一个 off-policy 算法,核心原因就是因为它求解的是贝尔曼 最优 公式 ,而其他算法求解的只是贝尔曼公式,对比 Q-learning 和 Sarsa 的迭代式
Q-learning :
q
t
+
1
(
s
t
,
a
t
)
=
q
t
(
s
t
,
a
t
)
−
α
t
(
s
t
,
a
t
)
[
q
t
(
s
t
,
a
t
)
−
(
r
t
+
1
+
γ
max
a
q
t
(
s
t
+
1
,
a
)
)
]
Sarsa :
q
t
+
1
(
s
t
,
a
t
)
=
q
t
(
s
t
,
a
t
)
−
α
t
(
s
t
,
a
t
)
[
q
t
(
s
t
,
a
t
)
−
(
r
t
+
1
+
γ
q
t
(
s
t
+
1
,
a
t
+
1
)
)
]
\begin{aligned} \text{Q-learning : } q_{t+1}(s_t,a_t) &= q_t(s_t,a_t) - \alpha_t(s_t,a_t) [q_t(s_t,a_t) - (r_{t+1} + \gamma \max_{a} q_t(s_{t+1},a))]\\ \text{Sarsa : } q_{t+1}(s_t,a_t) &= q_t(s_t,a_t) - \alpha_t(s_t,a_t) [q_t(s_t,a_t) - (r_{t+1} + \gamma q_t(s_{t+1},a_{t+1}))] \end{aligned}
Q-learning : qt+1(st,at)Sarsa : qt+1(st,at)=qt(st,at)−αt(st,at)[qt(st,at)−(rt+1+γamaxqt(st+1,a))]=qt(st,at)−αt(st,at)[qt(st,at)−(rt+1+γqt(st+1,at+1))]
Sarsa 的一个样本是
{
s
t
,
a
t
,
r
t
+
1
,
s
t
+
1
,
a
t
+
1
}
\{s_t, a_t, r_{t+1}, s_{t+1}, a_{t+1}\}
{st,at,rt+1,st+1,at+1},其中
s
t
,
a
t
s_t, a_t
st,at 是当前步给定的,而
r
t
+
1
,
s
t
+
1
r_{t+1}, s_{t+1}
rt+1,st+1 是仅依赖于 model:
P
(
R
∣
s
,
a
)
P(R|s,a)
P(R∣s,a) 和
P
(
S
′
∣
s
,
a
)
P(S'|s,a)
P(S′∣s,a),与 Policy 无关。重点在于
a
t
+
1
a_{t+1}
at+1 ,一方面它依赖 behavior policy 生成,另一方面,它又用来更新了 target policy 的 action value,这就要求
a
t
+
1
a_{t+1}
at+1 实际也是 target policy 在给定
s
t
,
a
t
s_t, a_t
st,at 的选择(否则定义就不对了)
反观 Q-learning,由于它求解的是贝尔曼最优公式,所以它需要的样本为 { s t , a t , r t + 1 , s t + 1 } \{s_t, a_t, r_{t+1}, s_{t+1}\} {st,at,rt+1,st+1},在给定 s t , a t s_t, a_t st,at 时是不依赖 Policy 的,因此这里 target policy 可以和 behavior policy 解耦。因此它的 behavior policy 可以取得非常 exploration,这样可以使得取到的样本对每一个 state 都充分访问,也更有利于 target policy 的效果,以下是一个例子:
左边一列是 behavior policy,中间是生成的 episodes,右边一列是用于看 target policy 随着迭代的效果,可以看到,当 ϵ \epsilon ϵ 比较大时, behavior policy 探索性较强,对各个 state 的访问比较充分,其找到的 target policy 效果也更好。
下面再看一个例子,这个例子里,直接将 ϵ \epsilon ϵ 取为了1 (因此各个 action 概率均等):
可以看到,此时 behavior policy 生成的 episodes 覆盖性更好,这使得 target policy 也能很快收敛
总结
下面我们给上述的各种时序差分算法一个综合的框架,并在这框架下看下每个算法的核心差别是什么:
q t + 1 ( s t , a t ) = q t ( s t , a t ) − α ( s t , a t ) [ q t ( s t , a t ) − q ˉ t ] q_{t+1}(s_t,a_t) = q_t(s_t,a_t) - \alpha(s_t,a_t) [q_t(s_t,a_t) - \bar{q}_t] qt+1(st,at)=qt(st,at)−α(st,at)[qt(st,at)−qˉt]
不难总结上述时序差分算法的迭代式都满足上述情况,具体来看:
Reference:
1.强化学习的数学原理