【周博磊】强化学习纲要 一至六讲笔记

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] π(as)=P[At=aSt=s] (第t步状态位St时做出行为At的概率)进行采样
  • deterministic policy 决定性策略, a ∗ = arg ⁡ max ⁡ a π ( a ∣ s ) a^*=\arg\max\limits_{a}\pi(a|s) a=argamaxπ(as)(直接取概率最大的那一个)
Value 价值函数

在策略函数 π \pi π的前提下,对当前状态的评估
v π ( s ) = E π [ G t ∣ S t = s ] v_\pi(s)=\mathbb E_\pi[G_t|S_t=s] vπ(s)=Eπ[GtSt=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π[GtSt=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] Pssa=P[St+1=sSt=s,At=a]Rsa=E[Rt+1St=s,At=a]
注意到此处的R是与策略无关的,仅是对环境的预测

这些构成了一个马尔科夫决策过程(MDPs)

马尔科夫过程是全可观测的

Maze example 走迷宫例子

Rewards: R t ≡ − 1 R_t\equiv -1 Rt1(时间越长越不好)

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+1st)=p(st+1ht)p(st+1st,at)=p(st+1ht,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[rtst=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 γsSP(ss)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π(ss)=aAπ(as)P(ss,a)=E[P(ss)]Rπ(s)=aAπ(as)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)=aAπ(as)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(AS)是不可接受的

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)=aAπi(as)(R(s,a)+γsSP(ss,a)vπi1(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)+γsSP(ss,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)+γsSP(ss,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)

基于压缩映射定理:

image-20220120113444315

完备度量空间——满足柯西收敛准则

压缩映射: 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)=smaxu(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,tv(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...πt1生成的轨迹
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) ExP[f(x)]=f(x)P(x)dxn1if(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)dxn1iQ(x)P(x)f(xi)=ExQ[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| SA

如何避免 学习/存储每一个状态 的信息呢

  • 包括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)π(as)

想利用插值的办法将没有出现过的状态也估计出来

疑惑:这个 w \mathbf w w是什么?可以理解成类似神经网络的参数。 s , a s,a s,a是输入

w \mathbf w w需要通过MC/TD不断学习的东西

几种不同的设计方法

image-20220127112103729

如何拟合这些函数呢

  • 参数线性组合
  • 神经网络
  • 决策树
  • 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=1nxi(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

image-20220127165740415

是否保证收敛到最优价值函数——括号表示近似最优价值函数

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+γamaxQ^(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,argamaxQ(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) πθ(as),其中$\theta $是可以学习的

相比于value-based,以策略为基础的RL没有价值函数,而是直接学习策略

Advantages:

  • 更好的收敛性
  • 策略梯度在高维空间更有效(?)
  • 策略梯度可以学习随机策略

Disadvantages:

  • 通常收敛到局部最优
  • 评估一个策略的方差较大

在第一章中提过策略分为确定性策略和随机策略

在一些游戏中确定性策略是非常容易被击败的,如剪刀石头布,反而随机策略能达到纳什均衡

而在另一些情况下,由于agent不是全知的,可能出现在两个不同的情况下,感知到的是一样的,但最优决策是不同的,在这种情况下需要随机性。

image-20220201002528803

如图,假设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(θ)sdπθ(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(θ)=sdπθ(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τπθ[tR(stτ,atτ)]m1mtR(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τπθ[tR(stτ,atτ)]
J ( θ ) J(\theta) J(θ)求argmax

如果 J ( θ ) J(\theta) J(θ)可微,则可以用梯度方法

  • 梯度上升
  • 共轭梯度
  • 拟牛顿法

如果 J ( θ ) J(\theta) J(θ)不可微或者很难求梯度,那么一些无导数黑箱优化方法可以使用( J ( θ ) J(\theta) J(θ)看做黑箱

  • 交叉熵方法(根据某个分布撒点,再根据撒点结果调整分布,目标是最小化撒点得到的数据分布与实际分布的交叉熵)
    • image-20220202165320446
    • 对初始分布 μ \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) πθ(as)

注意到
∇ θ π θ ( 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]=sSd(s)aAπθ(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(θ)=sSd(s)aAπθ(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,...,sT1,aT1,rT,sT)(πθ,P(st+1st,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)πθ(atst)p(st+1st,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=0T1θlnπθ(atst)
利用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=1mR(τi)θlnP(τi;θ)=m1i=1mR(τi)t=0T1θlnπθ(atst)
再利用 ( 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=1m(t=1Trt)(t=0T1θlnπθ(atst))
当按步拆开来时,注意到前面的reward的后面的步骤的似然是没有关系的—— r 1 r_1 r1 π θ ( a 2 ∣ s 2 ) \pi_\theta(a_2|s_2) πθ(a2s2)显然无关。那么把这一层时序关系引入应当是不改变结果的,即 ( 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=1Trtt=0t1θlnπθ(atst)=τP(τ)t=0T1Gtθlnπθ(atst)
( 52 ) (52) (52)式同样可以写成采样平均的形式,这里不再赘述。

去掉了无关项,减小了方差

REINFORCE Algorithm

基于MC方法

输入approximator π ( a ∣ s , θ ) \pi(a|s,\theta) π(as,θ)(这即是说,如何近似策略函数是人为设计的),初始化 θ \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=0T1(Gtb(st))θlnπθ(atst)
可以减去 b ( s t ) b(s_t) b(st)的原因是 b ( s t ) b(s_t) b(st)与幕无关,那么按照 s t s_t st相同的对所有幕合并同类项,和为1,求梯度为0.

image-20220211011030201

对一个状态 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

image-20220213012543058

第四步的来源是 ( 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 θ的更新式就改为

image-20220213013043610

其中 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

image-20220213193047634

对于Critic而言,根据不同的时间尺度,得到不同的G,进而用梯度方法更新 V V V,以线性方法为例

image-20220215145841497

对于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) πθ(as),这是一个概率分布,从这个分布中采样得到Action。优化目标是 J ( θ ) = E [ R ( τ ) ] J(\theta)=\mathbb E[R(\tau)] J(θ)=E[R(τ)],可以用之前提到的一系列步骤(取对数、利用MC/TD)得到梯度

Summary of Policy gradient Algorithm 策略梯度算法小结
image-20220215150451450
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=1nP(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)ni1
证明是简单的,把 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=1nP(xi)logQ(xi)i=1nP(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=1nP(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[PQ]=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(θ)Td21λ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=0d=λ1F1θ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+αF1θ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} α=DTF1D2c
其中 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+DTF1D2c F1D
注意到这里的 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π^[π^(atst)πθ(atst)Rt]

这里的 t t t可能是任何一步,只要乘上在这个分布下这一步出现的概率即可(对整个状态空间求和然后平均

直接利用过去的轨迹进行学习

两个概率相除结果太大怎么办?

利用KL散度进行限制

TRPO Trust Region Policy Optimization

另一个问题是, F − 1 F^{-1} F1需要矩阵求逆,计算复杂度较大,注意到 F − 1 D F^{-1}D F1D总是作为整体出现,我们有
x = F − 1 D , F x = D x=F^{-1}D,Fx=D x=F1D,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=argxmin21xTFxDTx
因为上式对 x x x求导恰好是 F x − D Fx-D FxD(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原论文中证明了这样一个事情

image-20220226130624740

我们通过每轮最大化 M M M,保证了 J J J是单调不降的。

ACKTR
PPO
DDPG
TD3
SAC
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值