Reinforcement Learning
文章目录
据说本质上是一个动态规划最优解的求解器
1 Introduction
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bdkvJJI5-1649514448238)(C:\Users\rog\AppData\Roaming\Typora\typora-user-images\image-20220116111602275.png)]
Major component of an agent
Policy(策略)
决定agent的行为模式
一个从agent自身状态映射到行动的函数 π \pi π
- stochastic policy 随机策略,对概率分布 π ( a ∣ s ) = P [ A t = a ∣ S t = s ] \pi(a|s)=P[A_t=a|S_t=s] π(a∣s)=P[At=a∣St=s] (第t步状态位St时做出行为At的概率)进行采样
- deterministic policy 决定性策略, a ∗ = arg max a π ( a ∣ s ) a^*=\arg\max\limits_{a}\pi(a|s) a∗=argamaxπ(a∣s)(直接取概率最大的那一个)
Value 价值函数
在策略函数
π
\pi
π的前提下,对当前状态的评估
v
π
(
s
)
=
E
π
[
G
t
∣
S
t
=
s
]
v_\pi(s)=\mathbb E_\pi[G_t|S_t=s]
vπ(s)=Eπ[Gt∣St=s]
其中
G
t
G_t
Gt表示未来的总回报,
R
t
R_t
Rt表示单步回报,那么
G
t
G_t
Gt可以这样定义(需要注意的是这里全都是期望,G和R不是定值)
G
t
=
∑
k
=
0
+
∞
R
t
+
k
+
1
G_t=\sum\limits_{k=0}^{+\infty}R_{t+k+1}
Gt=k=0∑+∞Rt+k+1
我们通常更希望更短时间内得到更多回报,于是引入折现因子
γ
∈
[
0
,
1
]
\gamma\in [0,1]
γ∈[0,1]
G
t
=
∑
k
=
0
+
∞
γ
k
R
t
+
k
+
1
G_t=\sum\limits_{k=0}^{+\infty}\gamma^kR_{t+k+1}
Gt=k=0∑+∞γkRt+k+1
折现因子的目的:
- 避免在某些带环的马尔科夫过程中的无穷奖励
- 尽可能快的得到更多奖励
也可以定义动作价值函数
q
π
(
s
,
a
)
=
v
π
(
s
)
=
E
π
[
G
t
∣
S
t
=
s
,
A
t
=
a
]
q_\pi(s,a)=v_\pi(s)=\mathbb E_\pi[G_t|S_t=s,A_t=a]
qπ(s,a)=vπ(s)=Eπ[Gt∣St=s,At=a]
Model(模型)
模型实际上是agent对环境的认知
预测环境内在的转移方程——做出这一步以后未来的环境(状态、回报)
可以表示为下面两个函数
P
s
s
′
a
=
P
[
S
t
+
1
=
s
′
∣
S
t
=
s
,
A
t
=
a
]
R
s
a
=
E
[
R
t
+
1
∣
S
t
=
s
,
A
t
=
a
]
P_{ss'}^a=\mathbb P[S_{t+1}=s'|S_t=s,A_t=a]\\ R_s^a=\mathbb E[R_{t+1}|S_t=s,A_t=a]
Pss′a=P[St+1=s′∣St=s,At=a]Rsa=E[Rt+1∣St=s,At=a]
注意到此处的R是与策略无关的,仅是对环境的预测
这些构成了一个马尔科夫决策过程(MDPs)
马尔科夫过程是全可观测的
Maze example 走迷宫例子
Rewards: R t ≡ − 1 R_t\equiv -1 Rt≡−1(时间越长越不好)
Actions: N E S W
状态就是当前位置
根据Agent学习目标的不同进行分类
- Value-based agent:价值函数是显式的,直接去学习价值函数,策略是隐式的(通过估计函数得到)
- policy-based agent:直接学习策略,没有学习价值函数
- Actor-Critic agent:同时学习策略函数和价值函数,通过两者交互得到最佳行为
根据Agent是否学习环境模型进行分类
- Model-based :学习了环境状态的转移
- Model-free:没有学习转移,直接学习policy/value
Exploration and Exploitation
探索新的行动/采取已知的能达到最优解的行动
trade-off :平衡二者
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vMIevG3q-1649514448241)(C:\Users\rog\AppData\Roaming\Typora\typora-user-images\image-20220116104520315.png)]
RL Framework with openAI gym
import torch
env = gym.make("...")
observation = env.reset()
agent = load_agent() #defined by yourself
for step in range(100):
action = agent(observation)
observation, reward, done, info = env.step(action)
2 Markov Decision Process 马尔科夫决策过程
Markov Property
h
t
=
{
s
1
,
.
.
.
,
s
t
}
h_t=\{s_1,...,s_t\}
ht={s1,...,st}
p
(
s
t
+
1
∣
s
t
)
=
p
(
s
t
+
1
∣
h
t
)
p
(
s
t
+
1
∣
s
t
,
a
t
)
=
p
(
s
t
+
1
∣
h
t
,
a
t
)
p(s_{t+1}|s_t)=p(s_{t+1}|h_t)\\ p(s_{t+1}|s_t,a_t)=p(s_{t+1}|h_t,a_t)
p(st+1∣st)=p(st+1∣ht)p(st+1∣st,at)=p(st+1∣ht,at)
描述一个马尔科夫链——可以用带权(概率)的有向图
也可以用一个N*N的状态转移矩阵(即有向图的邻接矩阵)
Markov reward process (MRP)
马尔科夫链+奖励函数R
R
(
s
t
=
s
)
=
E
[
r
t
∣
s
t
=
s
]
R(s_t=s)=\mathbb E[r_t|s_t=s]
R(st=s)=E[rt∣st=s]
价值函数
V
(
s
)
V(s)
V(s),同先前的公式
(
1
)
(1)
(1),是对未来所有可能的回报R的期望
Bellman equation 贝尔曼等式
V ( s ) = R ( s ) ⏟ Immediate reward + γ ∑ s ′ ∈ S P ( s ′ ∣ s ) V ( s ′ ) ⏟ Discounted sum of future reward V(s)=\underbrace {R(s)}_{\text{Immediate reward}}+\underbrace{\gamma\sum\limits_{s'\in S}P(s'|s)V(s')}_{\text{Discounted sum of future reward}} V(s)=Immediate reward R(s)+Discounted sum of future reward γs′∈S∑P(s′∣s)V(s′)
实际上就是将 ( 1 ) ( 3 ) (1)(3) (1)(3)式写成了仅含 V V V和单步回报 R R R的状态转移方程
——RL本质上是一个动态规划最优解求解器
也可以把
(
8
)
(8)
(8)式写成矩阵形式
V
=
R
+
γ
P
V
(
V
,
R
:
N
×
1
,
P
:
N
×
N
)
V=R+\gamma PV\ (V,R:N\times 1,P:N\times N)
V=R+γPV (V,R:N×1,P:N×N)
因而存在解析解
V
=
(
I
−
γ
P
)
−
1
R
V=(I-\gamma P)^{-1}R
V=(I−γP)−1R
但是复杂度很大
O
(
N
3
)
O(N^3)
O(N3),当状态数很多时不适用
有迭代方法
- 动态规划(不断迭代直至V收敛)
- 蒙特卡洛(随机采样)
MDP
在MRP的基础上加入决策(Decision)
MDP可以用一个tuple来描述: ( S , A , P , R , γ ) (S,A,P,R,\gamma) (S,A,P,R,γ)
- 分别表示状态集S、动作集A、模型P,奖励R,折现因子 γ \gamma γ
- P的定义同 ( 5 ) (5) (5)式
对于一个在MDP中进行决策的agent,还需要有一个Policy function π \pi π,是一个概率分布
带策略
π
\pi
π的P,R可写为
P
π
(
s
′
∣
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
P
(
s
′
∣
s
,
a
)
=
E
[
P
(
s
′
∣
s
)
]
R
π
(
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
R
(
s
,
a
)
=
E
[
R
(
s
)
]
P^{\pi}(s'|s)=\sum\limits_{a\in A}\pi(a|s)P(s'|s,a) = \mathbb{E}[P(s'|s)] \\ R^{\pi}(s)=\sum\limits_{a\in A}\pi(a|s)R(s,a)=\mathbb E[R(s)]
Pπ(s′∣s)=a∈A∑π(a∣s)P(s′∣s,a)=E[P(s′∣s)]Rπ(s)=a∈A∑π(a∣s)R(s,a)=E[R(s)]
这里就直接省略了Action的部分,将Decision用概率分布
π
\pi
π表示,转移方程回到了MRP的样子
(
1
)
(
4
)
(1)(4)
(1)(4)式已经给出了价值函数
V
V
V的表达形式,容易得到
v
π
(
s
)
v^\pi(s)
vπ(s)和
q
π
(
s
,
a
)
q^\pi(s,a)
qπ(s,a)的关系
v
π
(
s
)
=
∑
a
∈
A
π
(
a
∣
s
)
q
π
(
s
,
a
)
v^\pi(s)=\sum\limits_{a\in A}\pi(a|s)q^{\pi}(s,a)
vπ(s)=a∈A∑π(a∣s)qπ(s,a)
把
q
,
v
q,v
q,v展开到含
P
,
R
P,R
P,R的式子也是可以的,都比较简单
Optimal Value Function / Policy
v ∗ ( s ) = max π v π ( s ) v^*(s)=\max\limits_{\pi} v^{\pi}(s) v∗(s)=πmaxvπ(s)
π ∗ ( s ) = arg max π v π ( s ) \pi^*(s)=\arg\max\limits_{\pi}v^\pi(s) π∗(s)=argπmaxvπ(s)
现在的问题是如何寻找optimal policy/value function,在初始时,这些都是不知道的。
策略和价值,求出了一个就求出了另一个。
穷举法 O ( ∣ A ∣ ∣ S ∣ ) O(|A|^{|S|}) O(∣A∣∣S∣)是不可接受的
MDP Control 控制
Policy Iteration 策略迭代
与EM算法非常类似
根据当前的 π i \pi_i πi计算期望得到 v , q π i v,q^{\pi_i} v,qπi,再对计算出的 q q q取argmax得到新一轮 π i + 1 \pi_{i+1} πi+1
具体来说分成两部分
Policy Evaluation,策略评估
v
π
i
(
s
)
=
∑
a
∈
A
π
i
(
a
∣
s
)
(
R
(
s
,
a
)
+
γ
∑
s
′
∈
S
P
(
s
′
∣
s
,
a
)
v
π
i
−
1
(
s
′
)
)
v^{\pi_i}(s)=\sum\limits_{a\in A}\pi_i(a|s)(R(s,a)+\gamma\sum\limits_{s'\in S}P(s'|s,a)v^{\pi_{i-1}}(s'))
vπi(s)=a∈A∑πi(a∣s)(R(s,a)+γs′∈S∑P(s′∣s,a)vπi−1(s′))
q
π
i
(
s
,
a
)
=
R
(
s
,
a
)
+
γ
∑
s
′
∈
S
P
(
s
′
∣
s
,
a
)
v
π
i
(
s
′
)
q^{\pi_i}(s,a)=R(s,a)+\gamma\sum\limits_{s'\in S}P(s'|s,a)v^{\pi_i}(s')
qπi(s,a)=R(s,a)+γs′∈S∑P(s′∣s,a)vπi(s′)
( 15 ) (15) (15)式被称为贝尔曼期望方程
Policy Improvement,策略提升
π
i
+
1
(
s
)
=
arg
max
a
q
π
i
(
s
,
a
)
\pi_{i+1}(s)=\arg\max\limits_{a}q^{\pi_i}(s,a)
πi+1(s)=argamaxqπi(s,a)
直到最终收敛
(凸函数局部最优能保证全局最优)
Value Iteration
直接对V进行迭代
具体来说
q
k
+
1
(
s
,
a
)
←
R
(
s
,
a
)
+
γ
∑
s
′
∈
S
P
(
s
′
∣
s
,
a
)
v
k
(
s
′
)
q_{k+1}(s,a)\leftarrow R(s,a)+\gamma\sum\limits_{s'\in S}P(s'|s,a)v_k(s')
qk+1(s,a)←R(s,a)+γs′∈S∑P(s′∣s,a)vk(s′)
v k + 1 ( s ) ← max a q k + 1 ( s , a ) v_{k+1}(s)\leftarrow \max\limits_{a}q_{k+1}(s,a) vk+1(s)←amaxqk+1(s,a)
由于价值函数是由策略决定的,因而在策略不定的时候上式并不是一个等号,只是通过不断迭代使其收敛
( 18 ) (18) (18)式被称为贝尔曼最优方程
收敛性证明
有两个需要关注的疑问:如何保证这样迭代每次更优,如何保证迭代的收敛性呢?
这两个是一个问题,只需要保证每次更优,根据单调有界就能得到(证明在https://zhuanlan.zhihu.com/p/3927961)
基于压缩映射定理:
完备度量空间——满足柯西收敛准则
压缩映射: d ( f ( x ) , f ( y ) ) ≤ k d ( x , y ) d(f(x),f(y))\leq kd(x,y) d(f(x),f(y))≤kd(x,y),其中d为度量,k为Lipschitz常数
考虑值函数空间 V V V,其中每个向量代表一个价值函数v,可以表示为在每个状态下的值,它是 ∣ S ∣ |S| ∣S∣维的,定义度量为无穷范数——绝对值最大的那个分量。
d ( u , v ) = max s ∣ u ( s ) − v ( s ) ∣ d(u,v)=\max\limits_{s}|u(s)-v(s)| d(u,v)=smax∣u(s)−v(s)∣,容易知道它是完备的。
合并
(
12
)
(
15
)
(12)(15)
(12)(15)式,贝尔曼期望方程可以写成矩阵形式
v
n
e
w
=
T
(
v
)
=
R
π
+
γ
P
π
v
v_{new}=T(v)=R^{\pi}+\gamma P^{\pi}v
vnew=T(v)=Rπ+γPπv
R
π
,
P
π
R^{\pi},P^{\pi}
Rπ,Pπ见
(
11
)
(11)
(11)式
只需要说明 T T T是一个压缩映射。推导略
对于贝尔曼最优方程是类似的
(不过貌似可以举出一些反例Bellman算子不是压缩映射)
最优性证明
有策略提升定理——每次策略迭代都会达到更优的结果。
3 Model-free Prediction and Control 无模型价值函数估计和预测
不管是策略迭代还是值迭代,都假设P和R是已知的,并且需要对所有的状态S进行估计
在实际情况中,许多MDP模型都无法全知/太过于复杂,状态数太多
一句话来说,就是转移方式是未知的。
回到最上面的图,没有了P
与环境的交互轨迹需要被记录
一个轨迹包括 { S 1 , A 1 , R 1 , S 2 , A 2 , R 2 , . . . , S T , A T , R T } \{S_1,A_1,R_1,S_2,A_2,R_2,...,S_T,A_T,R_T\} {S1,A1,R1,S2,A2,R2,...,ST,AT,RT}
- 这里有点奇怪,根据下面的式子 R 1 R_1 R1应该是 R 2 R_2 R2
Model-free Prediction
蒙特卡洛方法:
进行若干次轨迹(直到终止)的采样,更新采样路径上所有的情况
学习方法:
v
(
S
t
)
←
v
(
S
t
)
+
α
(
G
i
,
t
−
v
(
S
t
)
)
v(S_t)\leftarrow v(S_t)+\alpha(G_{i,t}-v(S_t))
v(St)←v(St)+α(Gi,t−v(St))
其中
G
i
,
t
G_{i,t}
Gi,t表示第i次采样中的第
t
t
t轮后的总回报,
α
\alpha
α是某个步长,相当于一个学习率
若是平均值的话, α = 1 / N ( S t , A t ) \alpha=1/N(S_t,A_t) α=1/N(St,At)
注意蒙特卡洛是离线方法——先进行轨迹的采样,每次采样更新经过路径上所有的 v v v
Temporal-learning 时间差分方法:
对当前所在的
S
t
S_t
St,根据策略
π
\pi
π给出
A
t
A_t
At,观察
R
t
,
S
t
+
1
R_t,S_{t+1}
Rt,St+1
v
(
S
t
)
←
v
(
S
t
)
+
α
(
R
t
+
1
+
γ
v
(
S
t
+
1
)
−
v
(
S
t
)
)
v(S_t)\leftarrow v(S_t)+\alpha(R_{t+1}+\gamma v(S_{t+1})-v(S_t))
v(St)←v(St)+α(Rt+1+γv(St+1)−v(St))
基于现在已有的经验进行迭代,而不需要采样整个轨迹
可以发现TD方法的初始化很重要
TD方法是在线方法——只评估当前节点,采样一步
n-step TD:
上述方法的折中——从当前节点采样n步
Model-free Control
MC Policy Iteration
策略迭代方法与MDP的方法是一致的,不过在policy evaluation这一步采用蒙特卡洛方法估计 v π ( S t ) v_{\pi}(S_t) vπ(St)
另外在exploration 和 exploitation 之间trade-off ,对策略 π \pi π引入一定的随机性: ϵ \epsilon ϵ-Greedy
有 1 − ϵ 1-\epsilon 1−ϵ的概率贪心选择,有 ϵ \epsilon ϵ的概率在所有选项中随机选一个
- 依然能够推导出策略提升定理
Sarsa Algorithm
对 Q ( S t , A t ) Q(S_t,A_t) Q(St,At)进行预测,基本方法与TD是一样的
对于初始的 S t S_t St,按照优化策略(如epsilon-贪心)选出一个 A t A_t At,然后对每一步循环
每次观察采取行动
A
t
A_t
At得到
R
t
,
S
t
+
1
R_t,S_{t+1}
Rt,St+1是什么,再继续得到
A
t
+
1
A_{t+1}
At+1,持续下去直到结束
Q
(
S
t
,
A
t
)
←
Q
(
S
t
,
A
t
)
+
α
[
R
t
+
1
+
γ
Q
(
S
t
+
1
,
A
t
+
1
)
−
Q
(
S
t
,
A
t
)
]
Q(S_t,A_t)\leftarrow Q(S_t,A_t)+\alpha[R_{t+1}+\gamma Q(S_{t+1},A_{t+1})-Q(S_t,A_t)]
Q(St,At)←Q(St,At)+α[Rt+1+γQ(St+1,At+1)−Q(St,At)]
同样也有n-step Sarsa(修改
(
23
)
(23)
(23)式为后多少步的情况)
它是自更新的
Off-policy Learning
前面提到的都是On-policy Learning:通过对一个策略的实验结果来了解评估这个策略
另一个重要的方法是off-policy learning:
利用两个不同的策略——一个正在被学习,并且将成为最优化策略,另一个更加具有探索性,用于生成轨迹。
用来自另一个策略 μ \mu μ的采样轨迹评估策略 π \pi π, π \pi π被称为target policy, μ \mu μ是behavior policy
这有一些好处:
- 可以通过观察其他agent的轨迹来学习
- 可以充分利用先前的策略 π 1 . . . π t − 1 \pi_1...\pi_{t-1} π1...πt−1生成的轨迹
Q-Learning
对于每一个已有的轨迹 S S S
循环每一步, A t A_t At是已知的(由生成S的那个策略决定)
再使用greedy的方法生成
A
t
+
1
A_{t+1}
At+1进行预测。
Q
(
S
t
,
A
t
)
←
Q
(
S
t
,
A
t
)
+
α
[
R
t
+
1
+
γ
max
a
Q
(
S
t
+
1
,
a
)
−
Q
(
S
t
,
A
t
)
]
Q(S_t,A_t)\leftarrow Q(S_t,A_t)+\alpha[R_{t+1}+\gamma \max\limits_{a} Q(S_{t+1},a)-Q(S_t,A_t)]
Q(St,At)←Q(St,At)+α[Rt+1+γamaxQ(St+1,a)−Q(St,At)]
也就是说,在当前已知的局面,基于现在的价值函数Q(与生成轨迹时的Q可能不同)做出可能不同的尝试,进而更新Q
Importance Sampling 重要性采样
蒙特卡洛积分:
定积分是分割求和取极限,蒙特卡洛积分就是通过大量采样估计积分值。
直接均匀采样未必准确,因为可能积分值集中在少数峰值区域,或者说函数本身就是定义在某种分布 P ( x ) P(x) P(x)上的
应该在贡献大的地方多采一些,在贡献小的地方少采一些
估计结果会是这样
E
x
∼
P
[
f
(
x
)
]
=
∫
f
(
x
)
P
(
x
)
d
x
←
1
n
∑
i
f
(
x
i
)
\mathbb E_{x\sim P}[f(x)]=\int f(x)P(x)\text dx\leftarrow {1\over n}\sum\limits_{i} f(x_i)
Ex∼P[f(x)]=∫f(x)P(x)dx←n1i∑f(xi)
其中
x
i
x_i
xi是按照
P
P
P采样的
但 P P P可能不太容易采样(这个分布可能比较奇怪)
引入一个接近P的概率分布 Q ( x ) Q(x) Q(x)进行采样
那么上式
=
∫
f
(
x
)
P
(
x
)
Q
(
x
)
Q
(
x
)
d
x
←
1
n
∑
i
P
(
x
)
Q
(
x
)
f
(
x
i
)
=
E
x
∼
Q
[
P
(
x
)
Q
(
x
)
f
(
x
i
)
]
=\int f(x){P(x)\over Q(x)}Q(x)\text dx\leftarrow {1\over n}\sum\limits_{i} {P(x)\over Q(x)}f(x_i)=\mathbb E_{x\sim Q}\left[{P(x)\over Q(x)}f(x_i)\right]
=∫f(x)Q(x)P(x)Q(x)dx←n1i∑Q(x)P(x)f(xi)=Ex∼Q[Q(x)P(x)f(xi)]
4 Value Function Approximation (VFA) 价值函数逼近
实际情况中很难获得准确值,由于状态数过多,问题过于复杂等等
在先前我们用一个lookup table来表示价值函数 q ( s , a ) q(s,a) q(s,a),它的定义域是 ∣ S ∣ ∗ ∣ A ∣ |S|*|A| ∣S∣∗∣A∣的
如何避免 学习/存储每一个状态 的信息呢
- 包括model, value function, state-action function, policy
换句话说,泛化性能不好,无法估计没有采样到的状态
Function Approximation
用函数逼近的办法(将函数参数化)
v
^
(
s
,
w
)
≈
v
π
(
s
)
q
^
(
s
,
a
,
w
)
≈
q
π
(
s
,
a
)
π
^
(
a
,
s
,
w
)
≈
π
(
a
∣
s
)
\hat v(s,\mathbf w)\approx v^{\pi}(s)\\ \hat q(s,a,\mathbf w)\approx q^{\pi}(s,a)\\ \hat \pi(a,s,\mathbf w)\approx \pi(a|s)
v^(s,w)≈vπ(s)q^(s,a,w)≈qπ(s,a)π^(a,s,w)≈π(a∣s)
想利用插值的办法将没有出现过的状态也估计出来
疑惑:这个 w \mathbf w w是什么?可以理解成类似神经网络的参数。 s , a s,a s,a是输入
w \mathbf w w需要通过MC/TD不断学习的东西
几种不同的设计方法
如何拟合这些函数呢
- 参数线性组合
- 神经网络
- 决策树
- Nearest neighbor
Focus on前两种,因为它们是differentiable 可微分的,可以利用梯度下降更新
以下默认梯度下降公式
Δ
w
=
−
1
2
α
∇
w
J
(
w
)
\Delta \mathbf w=-{1\over 2}\alpha\nabla_\mathbf w J(\mathbf w)
Δw=−21α∇wJ(w)
其中
J
J
J为需要最小化的函数
用已知状态近似 Approximation with an “Oracle”
对于已知的少量状态 s s s,我们假设已知它们的 v π ( s ) v^{\pi}(s) vπ(s)(有监督),目标是找到一个最合适的逼近
一种简单的方法是利用均方差
w
=
arg
min
J
(
w
)
=
arg
min
E
[
(
v
π
(
s
)
−
v
^
(
s
,
w
)
)
2
]
\mathbf w=\arg \min J(\mathbf w)=\arg\min\mathbb E\left[(v^{\pi}(s)-\hat v(s,\mathbf w))^2\right]
w=argminJ(w)=argminE[(vπ(s)−v^(s,w))2]
再利用梯度下降更新
w
\mathbf w
w
首先定义一个状态的特征向量 Feature Vector
x
(
s
)
=
(
x
1
(
s
)
,
x
2
(
s
)
,
.
.
.
,
x
n
(
s
)
)
T
\mathbf x(s)=(x_1(s),x_2(s),...,x_n(s))^T
x(s)=(x1(s),x2(s),...,xn(s))T
线性组合的方式就是
v
^
(
s
,
w
)
=
x
(
s
)
T
w
=
∑
i
=
1
n
x
i
(
s
)
w
j
\hat v(s,\mathbf w)=\mathbf x(s)^T\mathbf w=\sum\limits_{i=1}^{n}x_i(s)w_j
v^(s,w)=x(s)Tw=i=1∑nxi(s)wj
容易知道梯度更新值为
Δ
w
=
α
(
v
π
(
s
)
−
v
^
(
s
,
w
)
)
x
(
s
)
\Delta \mathbf w=\alpha(v^{\pi}(s)-\hat v(s,\mathbf w))\mathbf x(s)
Δw=α(vπ(s)−v^(s,w))x(s)
可以推广到神经网络
Approximation with Model-Free Prediction
实际情况中,我们并不知道 v π v^{\pi} vπ的真实值
- RL中只有来自环境的回报Reward,没有监督者Supervisor
回顾model-free prediction的过程
- 目标是估计在固定策略 π \pi π下的价值函数 v π v^{\pi} vπ
- 维护一个lookup table存储 v , q v,q v,q的估计值
- 用若干个轨迹更新估计值(MC),或是每一步更新估计值(TD)
我们可以在这个过程中加入函数近似的步骤
在MC中,用 G i , t G_{i,t} Gi,t替代 v π ( S t ) v^{\pi}(S_t) vπ(St)
在TD(0)中,用 R t + 1 + γ ( v ^ ( s t + 1 , w ) ) R_{t+1}+\gamma(\hat v(s_{t+1},\mathbf w)) Rt+1+γ(v^(st+1,w))替代
MC采样是无偏的(均值等于真实值)。在线性和非线性的 v v v均能收敛
TD方法是有偏的,因为更新基于当前的估计值不断迭代。在线性的 v v v能够收敛
要近似动作价值函数
q
q
q,对每个不同的
a
a
a使用均方差
J
(
w
)
=
E
π
[
(
q
π
(
s
,
a
)
−
q
^
(
s
,
a
,
w
)
)
2
]
J(\mathbf w)=\mathbb E_\pi[(q^\pi(s,a)-\hat q(s,a,\mathbf w))^2]
J(w)=Eπ[(qπ(s,a)−q^(s,a,w))2]
Control with funtion approximation
讲完预测部分,再讲控制部分(即优化策略的部分)
在控制过程也进行相应的替换
三种方式:MC、Sarsa、Q-Learning
以Sarsa为例描述算法步骤:
- 从某一个初始状态 S S S开始循环,选取初始行动 A A A
- 执行行动 A A A,观察 R , S ′ R,S' R,S′
- 如果 S ′ S' S′终止,那么R就是逼近目标,按照前面约定的逼近方式(线性组合,神经网络)更新 w \mathbf w w
- 否则按照优化策略(如epsilon-贪心)选出一个 A ′ A' A′,逼近目标为 R + γ q ^ ( S ′ , A ′ , w ) R+\gamma\hat q(S',A',\mathbf w) R+γq^(S′,A′,w),(线性组合,神经网络)更新 w \mathbf w w
- 迭代循环
Deadly Traid 强化学习不稳定的死亡三角
潜在的不确定因素
- Function approximation 函数近似,引入误差
- Bootstapping,基于先前的估计来估计当前(自举),可能导致网络over confident
- Off-policy training
课本11.3
是否保证收敛到最优价值函数——括号表示近似最优价值函数
Exp:Least Square Prediction 最小二乘预测
给出价值函数的线性近似 v ^ ( s , w ) ≈ v π \hat v(s,\mathbf w)\approx v^{\pi} v^(s,w)≈vπ
经验
D
D
D由若干个
<
s
t
a
t
e
,
v
a
l
u
e
>
<state,value>
<state,value>的pairs描述
D
=
{
<
s
1
,
v
1
π
>
,
.
.
.
,
}
\mathcal D=\{<s_1,v^{\pi}_1>,...,\}
D={<s1,v1π>,...,}
优化参数
w
\mathbf w
w,使得均方差最小。
用梯度下降法,以一个学习率
α
\alpha
α更新,每次更新随机选取D中的一个pair
<
s
,
v
π
>
<s,v^\pi>
<s,vπ>进行学习
Δ
w
=
α
(
v
π
−
v
^
(
s
,
w
)
)
∇
w
v
^
(
s
,
w
)
\Delta \mathbf w=\alpha(v^\pi-\hat v(s,\mathbf w))\nabla_\mathbf w \hat v(s,\mathbf w)
Δw=α(vπ−v^(s,w))∇wv^(s,w)
看起来非常Naive。
Deep Reinforcement Learning
函数的线性近似VS非线性近似
线性近似在选取正确的特征集时表现良好——在某个空间中是正交的
但需要手动设计这些特征
非线性近似拥有更强的拟合能力,能够直接从状态中学习,而不需要设计特征
非线性近似使用深度神经网络
Deep Q-Network DQN
用深度神经网络做动作价值函数的近似
DQN采用经验回放,固定的Q-targets(目标
Δ
w
=
α
(
r
+
γ
max
a
′
Q
^
(
s
′
,
a
′
,
w
−
)
−
Q
(
s
,
a
,
w
)
)
∇
w
Q
^
(
s
,
a
,
w
)
\Delta \mathbf w=\alpha(r+\gamma\max \limits_{a'}\hat Q(s',a',\mathbf w^-)-Q(s,a,\mathbf w))\nabla_\mathbf w \hat Q(s,a,\mathbf w)
Δw=α(r+γa′maxQ^(s′,a′,w−)−Q(s,a,w))∇wQ^(s,a,w)
即目标中的
w
−
\mathbf w^-
w−是一个固定的参数,从而目标Q也是固定的
用记录的所有转移 ( s , a , r , s ′ ) (s,a,r,s') (s,a,r,s′)来学习,从转移中随机采样,通过MSE进行优化
还有一些改进方法
以Double DQN为例
Δ
w
=
α
(
r
+
γ
Q
^
(
s
′
,
arg
max
a
′
Q
(
s
,
a
′
,
w
)
,
w
−
)
−
Q
(
s
,
a
,
w
)
)
∇
w
Q
^
(
s
,
a
,
w
)
\Delta \mathbf w=\alpha(r+\gamma\hat Q(s',\arg\max\limits_{a'}Q(s,a',\mathbf w),\mathbf w^-)-Q(s,a,\mathbf w))\nabla_\mathbf w \hat Q(s,a,\mathbf w)
Δw=α(r+γQ^(s′,arga′maxQ(s,a′,w),w−)−Q(s,a,w))∇wQ^(s,a,w)
用两个不同的网络将目标Q函数和动作选择分离。
5 Policy Optimization I 策略优化基础
Value Based RL vs Policy-based RL 基于策略的强化学习
先前我们的策略一般采用的是简单的根据价值函数贪心
我们可以将策略函数 π \pi π参数化, π θ ( a ∣ s ) \pi_\theta(a|s) πθ(a∣s),其中$\theta $是可以学习的
相比于value-based,以策略为基础的RL没有价值函数,而是直接学习策略
Advantages:
- 更好的收敛性
- 策略梯度在高维空间更有效(?)
- 策略梯度可以学习随机策略
Disadvantages:
- 通常收敛到局部最优
- 评估一个策略的方差较大
在第一章中提过策略分为确定性策略和随机策略
在一些游戏中确定性策略是非常容易被击败的,如剪刀石头布,反而随机策略能达到纳什均衡
而在另一些情况下,由于agent不是全知的,可能出现在两个不同的情况下,感知到的是一样的,但最优决策是不同的,在这种情况下需要随机性。
如图,假设agent仅知道相邻格子,那么它是无法分辨两个灰色格子的。如果分别以50%的概率向左和向右,则无论从起点在哪里,期望到达目标的步数最小。
Objective of Optimizing Policy 策略优化目标
对于直接学习策略的RL,如何评价一个策略的好坏(假设已知一个价值函数 V π θ ( s ) V^{\pi_\theta}(s) Vπθ(s))
对于幕式环境 episodic environments,使用初始状态的价值函数期望值
J
1
(
θ
)
=
V
π
θ
(
s
1
)
=
E
π
θ
[
v
1
]
J_1(\theta)=V^{\pi_\theta}(s_1)=\mathbb E_{\pi_\theta}[v_1]
J1(θ)=Vπθ(s1)=Eπθ[v1]
对于持续的环境,可以使用平均状态价值
J
a
v
V
(
θ
)
∑
s
d
π
θ
(
s
)
V
π
θ
(
s
)
J_{avV}(\theta)\sum\limits_{s}d^{\pi_\theta}(s)V^{\pi_\theta}(s)
JavV(θ)s∑dπθ(s)Vπθ(s)
或者平均单步回报
J
a
v
R
(
θ
)
=
∑
s
d
π
θ
(
s
)
∑
a
π
θ
(
s
,
a
)
R
(
s
,
a
)
J_{avR}(\theta)=\sum\limits_{s}d^{\pi_\theta}(s)\sum\limits_{a}\pi_\theta(s,a)R(s,a)
JavR(θ)=s∑dπθ(s)a∑πθ(s,a)R(s,a)
其中
d
d
d表示在该策略下,状态
s
s
s在马尔科夫链中的stationary distribution。
一个更明确的定义
J ( θ ) = E τ ∼ π θ [ ∑ t R ( s t τ , a t τ ) ] ≈ 1 m ∑ m ∑ t R ( s t m , a t m ) J(\theta)=\mathbb E_{\tau\sim\pi_\theta}[\sum\limits_{t}R(s_t^{\tau},a_t^{\tau})]\approx {1\over m}\sum\limits_{m}\sum\limits_{t}R(s_t^m,a^m_t) J(θ)=Eτ∼πθ[t∑R(stτ,atτ)]≈m1m∑t∑R(stm,atm)
其中 τ \tau τ是根据策略 π \pi π的轨迹采样, m m m是采样编号
The Goal is
θ
∗
=
arg
max
θ
E
τ
∼
π
θ
[
∑
t
R
(
s
t
τ
,
a
t
τ
)
]
\theta^*=\arg\max\limits_{\theta}\mathbb E_{\tau\sim\pi_\theta}[\sum_tR(s^\tau_t,a^\tau_t)]
θ∗=argθmaxEτ∼πθ[t∑R(stτ,atτ)]
对
J
(
θ
)
J(\theta)
J(θ)求argmax
如果 J ( θ ) J(\theta) J(θ)可微,则可以用梯度方法
- 梯度上升
- 共轭梯度
- 拟牛顿法
如果 J ( θ ) J(\theta) J(θ)不可微或者很难求梯度,那么一些无导数黑箱优化方法可以使用(将 J ( θ ) J(\theta) J(θ)看做黑箱)
- 交叉熵方法(根据某个分布撒点,再根据撒点结果调整分布,目标是最小化撒点得到的数据分布与实际分布的交叉熵)
- 对初始分布 μ \mu μ采样,得到若干个策略参数 θ \theta θ,根据这些参数得到策略函数,与环境进行交互,可取结果在前10%的参数出来,将 μ \mu μ对这几个进行极大似然估计得到新的分布。
- 爬山法
- 进化算法
- Finite Difference 有限差分:
- 通过在第k维上细微扰动估计目标函数的第k维偏导
- 拉格朗日中值定理
Policy gradient
我们还尝试求 ∇ θ π θ ( s , a ) \nabla_\theta \pi_\theta(s,a) ∇θπθ(s,a)
严格来说应该写成 π θ ( a ∣ s ) \pi_\theta(a|s) πθ(a∣s)
注意到
∇
θ
π
θ
(
s
,
a
)
=
π
θ
(
s
,
a
)
∇
θ
π
θ
(
s
,
a
)
π
θ
(
s
,
a
)
=
π
θ
(
s
,
a
)
∇
θ
ln
π
θ
(
s
,
a
)
\nabla_\theta\pi_\theta(s,a)=\pi_\theta(s,a){\nabla_\theta\pi_\theta(s,a)\over \pi_\theta(s,a)}=\pi_\theta(s,a)\nabla_\theta\ln\pi_\theta(s,a)
∇θπθ(s,a)=πθ(s,a)πθ(s,a)∇θπθ(s,a)=πθ(s,a)∇θlnπθ(s,a)
我们知道 π θ ( s , a ) \pi_\theta(s,a) πθ(s,a)是一个概率分布,此时 ∇ θ ln π θ ( s , a ) \nabla_\theta\ln\pi_\theta(s,a) ∇θlnπθ(s,a)称为score function
一些Policy Example
-
Softmax Policy——有限个Action+权重,权重由 θ \theta θ参数化,取exp,再算比例,得到一个概率分布
-
Gaussian Policy——连续的状态空间,均值是关于状态 s s s,被 θ \theta θ参数化的函数,方差也可以参数化,服从高斯分布
One step MDPs
考虑一个简单的单步MDP:
- 从一个随机状态出发,状态 s s s的分布为 d ( s ) d(s) d(s)
- 在一步之后结束,回报 r = R ( s , a ) r=R(s,a) r=R(s,a)
J
(
θ
)
=
E
π
θ
[
r
]
=
∑
s
∈
S
d
(
s
)
∑
a
∈
A
π
θ
(
s
,
a
)
r
J(\theta)=\mathbb E_{\pi_\theta}[r]=\sum_{s\in S}d(s)\sum_{a\in A}\pi_\theta(s,a)r
J(θ)=Eπθ[r]=s∈S∑d(s)a∈A∑πθ(s,a)r
计算梯度得(利用前面的Trick,
(
43
)
(43)
(43)式)
∇
θ
J
(
θ
)
=
∑
s
∈
S
d
(
s
)
∑
a
∈
A
π
θ
(
s
,
a
)
∇
θ
ln
π
θ
(
s
,
a
)
r
=
E
π
θ
[
r
∇
θ
ln
π
θ
(
s
,
a
)
]
\nabla_\theta J(\theta)=\sum_{s\in S}d(s)\sum_{a\in A}\pi_\theta(s,a)\nabla_\theta\ln\pi_\theta(s,a)r=\mathbb E_{\pi_\theta}[r\nabla_\theta\ln\pi_\theta(s,a)]
∇θJ(θ)=s∈S∑d(s)a∈A∑πθ(s,a)∇θlnπθ(s,a)r=Eπθ[r∇θlnπθ(s,a)]
Multi-step MDPs
对于多部MDP
每幕都服从
τ = ( s 0 , a 0 , r 1 , . . . , s T − 1 , a T − 1 , r T , s T ) ∼ ( π θ , P ( s t + 1 ∣ s t , a t ) ) \tau =(s_0,a_0,r_1,...,s_{T-1},a_{T-1},r_{T},s_T)\sim (\pi_\theta,P(s_{t+1}|s_t,a_t)) τ=(s0,a0,r1,...,sT−1,aT−1,rT,sT)∼(πθ,P(st+1∣st,at))
这样的分布,设
R
(
τ
)
=
∑
r
t
R(\tau)=\sum r_t
R(τ)=∑rt,那么目标函数为
J
(
θ
)
=
E
π
θ
[
R
(
τ
)
]
=
∑
τ
P
(
τ
;
θ
)
R
(
τ
)
J(\theta)=\mathbb E_{\pi_\theta}[R(\tau)]=\sum_{\tau}P(\tau;\theta)R(\tau)
J(θ)=Eπθ[R(τ)]=τ∑P(τ;θ)R(τ)
要优化
θ
\theta
θ,即取argmax
计算梯度
∇
θ
J
(
θ
)
=
∇
θ
E
[
R
(
τ
)
]
=
∑
τ
P
(
τ
;
θ
)
R
(
τ
)
∇
θ
ln
P
(
τ
;
θ
)
\nabla_\theta J(\theta)=\nabla_\theta\mathbb E[R(\tau)]=\sum_\tau P(\tau;\theta)R(\tau)\nabla_\theta\ln P(\tau;\theta)
∇θJ(θ)=∇θE[R(τ)]=τ∑P(τ;θ)R(τ)∇θlnP(τ;θ)
注意到
ln
P
(
τ
;
θ
)
=
ln
(
μ
(
s
0
)
∏
π
θ
(
a
t
∣
s
t
)
p
(
s
t
+
1
∣
s
t
,
a
t
)
)
\ln P(\tau;\theta)=\ln(\mu(s_0)\prod\pi_\theta(a_t|s_t)p(s_{t+1}|s_t,a_t))
lnP(τ;θ)=ln(μ(s0)∏πθ(at∣st)p(st+1∣st,at))
取对数以后就是加和(这就是取ln的意义所在),再对
θ
\theta
θ求梯度后只剩下
π
θ
\pi_\theta
πθ项,即
∇
θ
ln
P
(
τ
;
θ
)
=
∑
t
=
0
T
−
1
∇
θ
ln
π
θ
(
a
t
∣
s
t
)
\nabla_\theta \ln P(\tau;\theta)=\sum_{t=0}^{T-1} \nabla_\theta \ln\pi_\theta(a_t|s_t)
∇θlnP(τ;θ)=t=0∑T−1∇θlnπθ(at∣st)
利用MC的方法,采样采了
m
m
m幕,
τ
1
,
.
.
.
,
τ
m
\tau_1,...,\tau_m
τ1,...,τm
关键在于环境转移是未知的,即
p
p
p未知,我们只有采样结果,那么就无法计算出准确的
P
P
P,但我们可以按照
π
\pi
π进行采样,得到的结果是服从这一分布的,那么便有
∇
θ
J
(
θ
)
≈
1
m
∑
i
=
1
m
R
(
τ
i
)
∇
θ
ln
P
(
τ
i
;
θ
)
=
1
m
∑
i
=
1
m
R
(
τ
i
)
∑
t
=
0
T
−
1
∇
θ
ln
π
θ
(
a
t
∣
s
t
)
\nabla_\theta J(\theta)\approx{1\over m}\sum_{i=1}^m R(\tau_i)\nabla_\theta\ln P(\tau_i;\theta)={1\over m}\sum_{i=1}^mR(\tau_i)\sum_{t=0}^{T-1} \nabla_\theta \ln\pi_\theta(a_t|s_t)
∇θJ(θ)≈m1i=1∑mR(τi)∇θlnP(τi;θ)=m1i=1∑mR(τi)t=0∑T−1∇θlnπθ(at∣st)
再利用
(
49
)
(49)
(49)式化为只含
π
\pi
π的项,是可以计算的,这样就与环境无关了,从而可以利用梯度方法优化
θ
\theta
θ。
(似然——likelihood,即可能性)
与最大似然估计进行对比:最大似然没有 R R R这一项权重——我们认为表现越好的越可能出现。这可以理解成一种加权的最大似然估计
Reduce the variance of policy gradient
由于前面几条式子可以看出,策略梯度方法是无偏的,但噪声很大
考虑
(
50
)
(50)
(50)式继续化,把
R
R
R也按步拆开
=
1
m
∑
i
=
1
m
(
∑
t
′
=
1
T
r
t
′
)
(
∑
t
=
0
T
−
1
∇
θ
ln
π
θ
(
a
t
∣
s
t
)
)
={1\over m}\sum\limits_{i=1}^m\left(\sum_{t'=1}^T r_{t'}\right)\left(\sum_{t=0}^{T-1}\nabla_\theta \ln\pi_\theta(a_t|s_t)\right)
=m1i=1∑m(t′=1∑Trt′)(t=0∑T−1∇θlnπθ(at∣st))
当按步拆开来时,注意到前面的reward的后面的步骤的似然是没有关系的——
r
1
r_1
r1与
π
θ
(
a
2
∣
s
2
)
\pi_\theta(a_2|s_2)
πθ(a2∣s2)显然无关。那么把这一层时序关系引入应当是不改变结果的,即
(
47
)
(47)
(47)式还等于
∇
θ
J
(
θ
)
=
∇
θ
E
[
R
(
τ
)
]
=
∑
τ
P
(
τ
)
∑
t
′
=
1
T
r
t
′
∑
t
=
0
t
′
−
1
∇
θ
ln
π
θ
(
a
t
∣
s
t
)
=
∑
τ
P
(
τ
)
∑
t
=
0
T
−
1
G
t
∇
θ
ln
π
θ
(
a
t
∣
s
t
)
\nabla_\theta J(\theta)=\nabla_\theta\mathbb E[R(\tau)]=\sum_\tau P(\tau)\sum_{t'=1}^T r_{t'}\sum_{t=0}^{t'-1}\nabla_\theta\ln \pi_\theta(a_t|s_t)=\sum_\tau P(\tau)\sum_{t=0}^{T-1} G_t \nabla_\theta\ln \pi_\theta(a_t|s_t)
∇θJ(θ)=∇θE[R(τ)]=τ∑P(τ)t′=1∑Trt′t=0∑t′−1∇θlnπθ(at∣st)=τ∑P(τ)t=0∑T−1Gt∇θlnπθ(at∣st)
(
52
)
(52)
(52)式同样可以写成采样平均的形式,这里不再赘述。
去掉了无关项,减小了方差
REINFORCE Algorithm
基于MC方法
输入approximator π ( a ∣ s , θ ) \pi(a|s,\theta) π(a∣s,θ)(这即是说,如何近似策略函数是人为设计的),初始化 θ \theta θ
不断循环,每次生成一幕,按步循环,根据 ( 52 ) (52) (52)式,可以用一个学习率 α \alpha α不断更新每一步的增量—— ( 52 ) (52) (52)式本身就是对一幕里每一步求和。
即
θ
=
θ
+
α
∇
θ
log
π
θ
(
s
t
,
a
t
)
G
t
θ=θ+α∇_θ\logπ_θ(s_t,a_t)G_t
θ=θ+α∇θlogπθ(st,at)Gt
Using Baseline
抽象出一个baseline作为基准,从而减小方差
(
52
)
(52)
(52)式化为
=
∑
τ
P
(
τ
)
∑
t
=
0
T
−
1
(
G
t
−
b
(
s
t
)
)
∇
θ
ln
π
θ
(
a
t
∣
s
t
)
=\sum_\tau P(\tau)\sum_{t=0}^{T-1} (G_t-b(s_t)) \nabla_\theta\ln \pi_\theta(a_t|s_t)
=τ∑P(τ)t=0∑T−1(Gt−b(st))∇θlnπθ(at∣st)
可以减去
b
(
s
t
)
b(s_t)
b(st)的原因是
b
(
s
t
)
b(s_t)
b(st)与幕无关,那么按照
s
t
s_t
st相同的对所有幕合并同类项,和为1,求梯度为0.
对一个状态 s s s提出预期,根据 G t G_t Gt比预期好多少来增加行动的比例
方差大的原因是 G t G_t Gt由采样得到,本身方差很大(以绝对大小来作为权重更新梯度不合适)
自然地,一个好的 b ( s t ) b(s_t) b(st)应当等于 E [ G t ] \mathbb E[G_t] E[Gt]
Actor-critic Policy gradient
Actor:策略函数,生成动作
Critic:价值函数,评估动作
同时做两组近似: π θ ( s , a ) , Q w ( s , a ) \pi_\theta(s,a),Q_\mathbf w(s,a) πθ(s,a),Qw(s,a),类似于TD方法。
一直循环下去,每次通过采样 s , a , r , s ′ , a ′ s,a,r,s',a' s,a,r,s′,a′,以线性估计为例( Q ( s , a ) = ψ ( s , a ) T w Q(s,a)=\psi(s,a)^T\mathbf w Q(s,a)=ψ(s,a)Tw
第四步的来源是 ( 32 ) (32) (32)式,第五步则是Policy gradient优化
(与REINFORCE算法不同点就在于 G t G_t Gt也是通过近似,不断自学习得到,而不是通过MC采样得到)
Reducing the variance of Actor-critic
对于每个状态 s s s,同样设一个Baseline V π , γ ( s ) V_{\pi,\gamma}(s) Vπ,γ(s),理由与之前baseline是一样的,这个V也可以通过另一套参数近似得到
因而价值函数 V π ( s ) = E a ∼ π [ Q ( s , a ) ] V^{\pi}(s)=\mathbb E_{a\sim \pi}[Q(s,a)] Vπ(s)=Ea∼π[Q(s,a)]是一个天然的baseline
那么对于 θ \theta θ的更新式就改为
其中 A A A是 Q ( s , a ) − V ( s ) Q(s,a)-V(s) Q(s,a)−V(s),Advantage Function 优势函数
Advantage Actor-Critic
注意到对TDerror取期望后有
E
π
θ
[
δ
π
θ
∣
s
,
a
]
=
E
[
r
+
γ
V
π
θ
(
s
′
)
∣
s
,
a
]
−
V
π
θ
(
s
)
=
Q
(
s
,
a
)
−
V
(
s
)
=
A
π
θ
(
s
,
a
)
\mathbb E_{\pi_\theta}[\delta^{\pi_\theta}|s,a]=\mathbb E[r+\gamma V^{\pi_\theta}(s')|s,a]-V^{\pi_\theta}(s)\\=Q(s,a)-V(s)\\=A^{\pi_\theta}(s,a)
Eπθ[δπθ∣s,a]=E[r+γVπθ(s′)∣s,a]−Vπθ(s)=Q(s,a)−V(s)=Aπθ(s,a)
解释上式:本来TD error是
Q
(
s
′
,
a
′
)
Q(s',a')
Q(s′,a′),取了期望以后变成
V
(
s
′
)
V(s')
V(s′),加上
r
r
r变成
Q
(
s
,
a
)
Q(s,a)
Q(s,a)
那么梯度值里的A就可以替换成TD error δ \delta δ,
我们此时便不需要对 a ′ a' a′进行采样,直接用 V ( s ′ ) V(s') V(s′)代替 Q ( s ′ , a ′ ) Q(s',a') Q(s′,a′),将更新过程变成bootstrapping过程,只需要去近似 V V V即可(只需要一套参数就够了),这也提高了训练的稳定性。
在先前讲过TD方法可以拓展到n-step,进而变成MC
对于Critic而言,根据不同的时间尺度,得到不同的G,进而用梯度方法更新 V V V,以线性方法为例
对于Actor也是类似, ∇ J ( θ ) \nabla J(\theta) ∇J(θ)有不同的表达形式
6 Policy Optimization II State of the Art 策略优化进阶 前沿算法
Value-based vs Policy-based
在value-based中,策略通常直接采用贪心/epsilon-贪心
在策略优化中,我们直接去得到策略 π θ ( a ∣ s ) \pi_\theta(a|s) πθ(a∣s),这是一个概率分布,从这个分布中采样得到Action。优化目标是 J ( θ ) = E [ R ( τ ) ] J(\theta)=\mathbb E[R(\tau)] J(θ)=E[R(τ)],可以用之前提到的一系列步骤(取对数、利用MC/TD)得到梯度
Summary of Policy gradient Algorithm 策略梯度算法小结
The State of Art RL Methods 前沿RL方法
两条线:
Policy gradient(训练不够稳定)——Natural Policy gradient/TRPO——ACKTR——PPO
Q-learning——DDPG——TD3——SAC
Policy gradient 改进
Problems of PG 存在的问题
- Poor Sample Efficiency as PG is on-policy learning 采样效率低(不能学习他人经验),只能用自己的轨迹进行学习
- 过大的policy更新或者不恰当的step size会导致整个训练过程崩溃
- 与supervised Learning(样本之间的关联性很弱,噪声影响没那么大)有很大不同
- 策略本身对数据影响很大。只要一步太大,导致了坏策略,那么也会采集到很坏的数据。很难从错误的Policy中恢复
上述问题如何解决?
- 如何让训练更稳定?Trust region (保证梯度一个安全的较小区域内)and natural policy gradient。
- 如何变成off-policy?TRPO方法中引入重要性采样
Natural Policy Gradient
Policy Gradient 是在 欧式度量下参数空间(parameter space) 上升最快的方向。形式化地
d
∗
=
∇
θ
J
(
θ
)
=
lim
ϵ
→
0
1
ϵ
arg
max
J
(
θ
+
d
)
,
s
.
t
.
∣
∣
d
∣
∣
≤
ϵ
d^*=\nabla _\theta J(\theta)=\lim_{\epsilon\to 0}{1\over \epsilon} \arg\max J(\theta+d),s.t.||d||\leq \epsilon
d∗=∇θJ(θ)=ϵ→0limϵ1argmaxJ(θ+d),s.t.∣∣d∣∣≤ϵ
d
∗
d^*
d∗对策略函数的拟合方式非常敏感(高斯拟合?softmax?)
换句话说,由于 π θ \pi_\theta πθ是一个概率分布,梯度更新后的 π θ \pi_\theta πθ未必能够更加得到更加优秀的结果,这个结果和参数更新没有联系起来。
因此我们提出了另一种方法:在distribution space(policy output)中优化它
d
∗
=
arg
max
J
(
θ
+
d
)
,
s
.
t
.
K
L
(
π
θ
∣
∣
π
θ
+
d
)
=
c
d^*=\arg\max J(\theta+d),s.t. KL(\pi_\theta||\pi_{\theta+d})=c
d∗=argmaxJ(θ+d),s.t.KL(πθ∣∣πθ+d)=c
衡量两个策略的近似距离不再采用参数空间欧式距离(因为参数空间欧氏距离小不能推出策略之间更接近),而是采用它们的KL散度,要求它等于一个较小的常数。
固定KL散度保证了在策略在distribution space中移动的速度恒定,与曲率没有关系(啥意思?)。
补充: 概率论相关
来自Blog:https://www.jianshu.com/p/0123c6ee18c3
信息量:消除了多少不确定性。“概率为 p p p的事件发生” 包含多少信息?
应该满足
-
S ( 1 ) = 0 S(1)=0 S(1)=0,必然事件发生没有任何信息
-
S ( p ) S(p) S(p)随着 p p p递减,概率越大的事件发生,信息越少
-
p , q p,q p,q独立,那么 S ( p q ) = S ( p ) + S ( q ) S(pq)=S(p)+S(q) S(pq)=S(p)+S(q)
直觉告诉我们可以这样定义—— S ( p ) = − log p S(p)=-\log p S(p)=−logp,当底取 2 2 2时 S ( p ) S(p) S(p)的单位为比特——一个p=0.5的二项分布信息量为1 bit。
信息熵
假定一个随机变量 X X X,可能取值为 x 1 , . . . , x n x_1,...,x_n x1,...,xn,概率为 P ( x i ) P(x_i) P(xi)
采样得到了一个值,它的平均信息量?每种取值概率乘以信息,即
H
(
X
)
=
−
∑
i
=
1
n
P
(
x
i
)
log
P
(
x
i
)
H(X)=-\sum_{i=1}^nP(x_i)\log P(x_i)
H(X)=−i=1∑nP(xi)logP(xi)
定义为X的信息熵。
当离散型变为连续型,概率变为概率密度函数时,把求和换成积分也是一样的。
编码定理
通信中的编码:随机变量 X X X,有n种取值,分别有概率,要设计一个编码系统将取值二进制编码,要求满足任一个编码不能是另一个的前缀。(直观来说,若建一棵Trie,任意一个不能是另一个的祖先)
设第
i
i
i种取值编码长度为
n
i
n_i
ni,则编码必有解的充要条件为
∑
(
1
2
)
n
i
≤
1
\sum\left(1\over 2\right)^{n_i}\leq 1
∑(21)ni≤1
证明是简单的,把
2
n
i
2^{n_i}
2ni乘到右边去,考虑解的情况。
无噪声编码定理:编码期望码长不小于信息熵。
字符 x x x的编码长度实际上就是 − log P ( x i ) -\log P(x_i) −logP(xi)上取整
进而可以证明误差不超过1。
KL-Divergence
KL散度(相对熵)用来衡量两个分布之间的相关度和近似程度
对于一个随机变量,一个是预估概率
P
P
P,一个是实际概率
Q
Q
Q,那么根据编码的最优性(利用Jensen不等式和对数函数的上凸性证明),这样的期望码长会多一些,即
−
∑
i
=
1
n
P
(
x
i
)
log
Q
(
x
i
)
≥
−
∑
i
=
1
n
P
(
x
i
)
log
P
(
x
i
)
-\sum_{i=1}^nP(x_i)\log Q(x_i)\geq -\sum_{i=1}^{n}P(x_i)\log P(x_i)
−i=1∑nP(xi)logQ(xi)≥−i=1∑nP(xi)logP(xi)
移项得到一个非负量
∑
i
=
1
n
P
(
x
i
)
log
P
(
x
i
)
Q
(
x
i
)
≥
0
\sum_{i=1}^nP(x_i)\log {P(x_i)\over Q(x_i)}\ge 0
i=1∑nP(xi)logQ(xi)P(xi)≥0
即
K
L
[
P
∣
∣
Q
]
=
E
p
[
log
P
]
−
E
p
[
log
Q
]
KL[P||Q]=\mathbb E_p[\log P]-\mathbb E_p[\log Q]
KL[P∣∣Q]=Ep[logP]−Ep[logQ]
在连续情况下是积分形式。
上式称为分布P(X)和Q(X)的KL散度,实际意义为平均每个字符多用的比特数。
KL散度并不是一个度量——不满足三角不等式,也不对称。但当 d d d足够小时,可以近似的认为是对称的。
续 Natural Policy Gradient
我们要求 K L [ π θ ∣ π θ + d ] = c KL[\pi_\theta|\pi_{\theta+d}]=c KL[πθ∣πθ+d]=c,但是KL散度计算并不容易
利用 ( 62 ) (62) (62)式进行Taylor展开(过程不会x)
得到
c
=
K
L
[
π
θ
∣
π
θ
+
d
]
≈
1
2
d
T
F
d
c=KL[\pi_\theta|\pi_{\theta+d}]\approx {1\over 2}d^TFd
c=KL[πθ∣πθ+d]≈21dTFd
其中
F
F
F为KL散度的二阶导,也是Fisher信息矩阵,
F
=
E
π
θ
[
∇
log
π
θ
∇
log
π
θ
T
]
F=\mathbb E_{\pi_\theta}[\nabla\log \pi_\theta\nabla \log \pi_\theta^T]
F=Eπθ[∇logπθ∇logπθT]
要优化
(
57
)
(57)
(57)式,利用拉格朗日乘数法
d
∗
=
arg
max
d
(
J
(
θ
+
d
)
−
λ
(
K
L
(
π
θ
∣
∣
π
θ
+
d
)
−
c
)
)
d^*=\arg\max_d \left(J(\theta+d)-\lambda(KL(\pi_\theta||\pi_{\theta+d})-c)\right)
d∗=argdmax(J(θ+d)−λ(KL(πθ∣∣πθ+d)−c))
J
(
θ
+
d
)
J(\theta+d)
J(θ+d)用一阶Taylor公式近似,KL散度用之前的近似
≈
arg
max
d
(
J
(
θ
)
+
∇
θ
J
(
θ
)
T
d
−
1
2
λ
d
T
F
d
+
λ
c
)
\approx \arg\max_d \left(J(\theta)+\nabla_\theta J(\theta)^Td-{1\over 2}\lambda d^TFd+\lambda c\right)
≈argdmax(J(θ)+∇θJ(θ)Td−21λdTFd+λc)
把与
d
d
d无关的项去掉,对
d
d
d求导,取极值点
∇
θ
J
(
θ
)
T
−
λ
F
d
=
0
⟹
d
=
1
λ
F
−
1
∇
θ
J
(
θ
)
\nabla_\theta J(\theta)^T-\lambda Fd=0\Longrightarrow d={1\over \lambda} F^{-1}\nabla_\theta J(\theta)
∇θJ(θ)T−λFd=0⟹d=λ1F−1∇θJ(θ)
这被称作Natural Policy Gredient 自然梯度。
自然梯度方法是一种二阶优化,更加精确,而且不论模型是如何参数化的,自然梯度方法均有效。(model invariant)无论参数本身变化多大,模型的变化都是限制在一定范围内的。
λ
\lambda
λ并不需要实际得到,我们可以用一个学习率
α
\alpha
α替换
1
λ
1\over \lambda
λ1,
θ
t
+
1
=
θ
t
+
α
F
−
1
∇
θ
J
(
θ
)
\theta_{t+1}=\theta_t+\alpha F^{-1}\nabla_\theta J(\theta)
θt+1=θt+αF−1∇θJ(θ)
- Fisher 信息矩阵 F衡量了策略相对于模型参数 θ \theta θ的曲率
- 注意我们并没有解出一个精确的解,由于使用了TayLor公式近似,我们需要保证d比较小。而学习率对更新的影响是会随着度量变化而变化的.
还可以继续推导——联立
(
67
)
(
63
)
(67)(63)
(67)(63),代入解得
α
=
2
c
D
T
F
−
1
D
\alpha=\sqrt{2c\over D^TF^{-1}D}
α=DTF−1D2c
其中
D
=
∇
θ
J
(
θ
)
D=\nabla_\theta J(\theta)
D=∇θJ(θ)
那么
θ
t
+
1
=
θ
t
+
2
c
D
T
F
−
1
D
F
−
1
D
\theta_{t+1}=\theta_t+\sqrt{2c\over D^TF^{-1}D} F^{-1}D
θt+1=θt+DTF−1D2cF−1D
注意到这里的
c
c
c是直接限制在KL散度下,不受D,F的尺度的影响,相当于对学习率进行了标准化。
Policy Gredient with Importance Sampling
可以通过重要性采样将PG从on-policy变成off-policy的——可以用别的轨迹进行学习
假设一个轨迹服从策略 π ^ \hat\pi π^
我们可以这样
J
(
θ
)
=
E
a
∼
π
θ
[
R
t
]
=
E
a
∼
π
^
[
π
θ
(
a
t
∣
s
t
)
π
^
(
a
t
∣
s
t
)
R
t
]
J(\theta)=\mathbb E_{a\sim \pi_\theta}[R_t]=\mathbb E_{a\sim \hat\pi}\left[{ \pi_\theta(a_t|s_t)\over \hat\pi(a_t|s_t)}R_t\right]
J(θ)=Ea∼πθ[Rt]=Ea∼π^[π^(at∣st)πθ(at∣st)Rt]
这里的 t t t可能是任何一步,只要乘上在这个分布下这一步出现的概率即可(对整个状态空间求和然后平均)
直接利用过去的轨迹进行学习
两个概率相除结果太大怎么办?
利用KL散度进行限制
TRPO Trust Region Policy Optimization
另一个问题是,
F
−
1
F^{-1}
F−1需要矩阵求逆,计算复杂度较大,注意到
F
−
1
D
F^{-1}D
F−1D总是作为整体出现,我们有
x
=
F
−
1
D
,
F
x
=
D
x=F^{-1}D,Fx=D
x=F−1D,Fx=D
相当于
x
=
arg
min
x
1
2
x
T
F
x
−
D
T
x
x=\arg\min_x{1\over 2}x^TFx-D^Tx
x=argxmin21xTFx−DTx
因为上式对
x
x
x求导恰好是
F
x
−
D
Fx-D
Fx−D(F是正定矩阵,因而也是对称的,所以
F
T
=
F
F^{T}=F
FT=F)
对于二次式可以利用共轭梯度法求最优解(比梯度下降更快)
注意矩阵乘法求导方法:
- 标量y对向量x求导——y对x的每个分量求导,结果按照x的形状排。
- 向量y对向量x求导——y的每个分量对x求导,结果按照y的形状排
- d x T d x = I ≠ 1 {\text dx^T\over \text dx}=I\not=1 dxdxT=I=1
- d A x d x = A T {\text dAx\over \text dx}=A^T dxdAx=AT
- d x A d x = A {\text dxA\over \text dx}=A dxdxA=A
- d A T x B d x = A B T {\text dA^TxB\over \text dx}=AB^T dxdATxB=ABT(上述AB均为常量)
- 微分求导法,取trace
TRPO原论文中证明了这样一个事情
我们通过每轮最大化 M M M,保证了 J J J是单调不降的。