定义
-
X:大写字母表示随机变量
-
x:小写字母表示随机变量的观测值
Agent:
一个嵌入在环境中的系统,并采取行动以改变环境的状态。
状态 ( State S ):
状态可以被视为系统历史的摘要,它决定了系统的未来演变。
状态空间 S 是包含所有可能状态的集合。
- 在时间步 t,过去的状体被观察到,因此我们知道它们的值:s1,⋯,st;
- 然而,未来的状态 St+1,St+2,⋯ 是未观察到的随机变量。
Action (A):
基于状态和其他考虑因素的代理决策。
动作空间 A 是包含所有动作的集合。
- 动作空间可以是离散集,如 {left,right,up},可以是连续集,如 [0,1]×[−90,90]。
- 在时间步 t,过去的动作被观察到:a1,⋯,at,
- 未来的动作 At+1,At+2,⋯ 是未观察到的随机变量。
奖励 (Reward R):
奖励是代理从环境中直接响应其动作而收到的值。
- 在时间步 t,所有的过去奖励都被观察到:r1,r2,⋯,rt。
- 未来的奖励 Ri(对于 i>t)是未观察到的,它取决于随机变量 St+1 和 At+1。因此,在时间步 t,未来的奖励 Rt+1,Rt+2,⋯ 是随机变量。
策略函数 Policy function (π):
Agent 的决策函数。策略是概率密度函数 (PDF):
π(a∣s)=P(A=a∣S=s)
策略函数将观察到的状态 S=s 映射到集合 A 中所有动作上的概率分布。由于 π 是一个 PDF,∑a∈Aπ(a∣s)=1。
对于所有 a∈A,Agent 将以概率 π(a∣s) 执行动作 a。
动作 A 根据策略函数随机采样。新状态 S′ 根据状态转移函数随机采样。
状态转移 State transition (p):
给定当前状态 S=s,代理的动作 A=a 将导致环境给出的新状态 S′。
状态转移函数是概率密度函数 (PDF)
p(s′∣s,a)=P(S′=s′∣S=s,A=a)
对于所有 s′∈S,环境以概率 p(s′∣s,a) 使 s′ 成为新状态。
轨迹 (Trajectory):
代理与环境的交互产生一系列 (状态,动作,奖励) 三元组: s1,a1,r1,s2,a2,r2,s3,a3,r3,⋯
回报 ( Return U):
回报(即累积未来奖励 cumulative future reward)定义为
Ut=Rt+Rt+1+Rt+2+Rt+3+⋯
折现回报(即累积折现未来奖励 cumulative discounted future reward)定义为
Ut=Rt+γ⋅Rt+1+γ2⋅Rt+2+γ3⋅Rt+3+⋯
γ∈(0,1) 是折现率。
回报 Ut 是一个随机变量,因为未来的奖励 Rt,Rt+1,Rt+2,⋯ 是未观测的随机变量。回想一下,Ri (i≥t) 中的随机性来自未来的状态 Si 和动作 Ai。
动作价值函数 (Action-value function Qπ):
动作价值函数 Qπ(st,at) 衡量给定状态 st 和策略 π 下,动作 at 的优劣。
Qπ(st,at)=E[Ut∣St=st,At=at]
期望是相对于未来的动作 At+1,At+2,⋯ 和未来的状态 St+1,St+2,⋯ 取的,它们是随机变量。
注意 Qπ(st,at) 依赖于策略函数 π 和状态转移函数 p。
最优动作价值函数(Optimal action-value function Q∗):
最优动作价值函数 Q∗(st,at) 衡量在状态 st 下动作 at 的优劣。
Q∗(s,a)=πmaxQπ(s,a).
Q∗(s,a) 与策略函数 π 无关。
已知 st 和 at,不论未来采取什么样的策略 π,回报 Ut 的期望不可能 超过 Q∗。
状态价值函数(State-value function Vπ):
状态价值函数 Vπ(st) 在给定策略 π 的情况下衡量当前状态 st 的优劣。ES[Vπ(S)] 评估了策略 π 有多好。
Vπ(st)=EA∼π(⋅∣st)[Qπ(st,A)]
动作是离散的:
Vπ(st)=EA[Qπ(st,A)]=a∑π(a∣st)⋅Qπ(st,a)
动作是连续的:
Vπ(st)=EA[Qπ(st,A)]=∫π(a∣st)⋅Qπ(st,a)da
最优状态价值函数(Optimal state-value function V∗):
最优状态价值函数 V∗(st) 衡量当前状态 st 的优劣。
V∗(s)=πmaxVπ(s).
请注意,V∗(s) 与策略函数 π 无关。
同策略(On-policy)与异策略(Off-policy)
行为策略:
控制智能体与环境交互的策略被称作行为策略。行为策略的作用是收集经验(experience),即观测的状态、动作、奖励。
目标策略:
强化学习的目标是得到一个策略函数,用这个策略函数来控制智能体。这个策略函数就叫做目标策略。
同策略:行为策略和目标策略相同。
异策略:行为策略和目标策略不同。
异策略的好处是可以用行为策略收集经验,把 (st,at,rt,St+1) 这样的四元组记录到一个数组里,在事后反复利用这些经验去更新目标策略。
经验回放数组(replay buffer): (st,at,rt,St+1) 四元组。经验回放只适用于异策略,不适用于同策略,其原因是收集经验时用的行为策略不同于想要训练出的目标策略。
价值学习
动作价值函数 Qπ(st,at) 衡量给定状态 st 和策略 π 下,动作 at 的优劣
Qπ(st,at)=E[Ut∣St=st,At=at]
最优动作价值函数 Q∗(st,at) 衡量在状态 st 下动作 at 的优劣。
Q∗(s,a)=πmax Qπ(s,a)
已知 st 和 at,不论未来采取什么样的策略 π,回报 Ut 的期望不可能 超过 Q∗。
最优动作价值函数 Q∗(s,a) 可以用于控制 agent:观察状态 st ,agent执行 :
at=arga∈AmaxQ∗(st,a)
TD 算法是一大类算法,常见的有 Q-learning 和 SARSA。
-
Q-learning 的目的是学习最优动作价值函数 Q∗(st,at)。
-
SARSA 的目的是学习动作价值函数 Qπ(st,at)。
贝尔曼方程
Discounted Return
Ut=Rt+γ⋅Rt+1+γ2⋅Rt+2+γ3⋅Rt+3+γ4⋅Rt+4+⋯=Rt+γ⋅(Rt+1+γ⋅Rt+2+γ2⋅Rt+3+γ3⋅Rt+4+⋯)=Rt+γ(Ut+1)
- γ∈(0,1) 是折现率。
- Ri(对于 i>t)是未来的奖励,是随机变量。
贝尔曼方程 1
假设 Rt 是 St、At、St+1 的函数。那么
Qπ(st,at)=ESt+1,At+1[Rt+γ⋅Qπ(St+1,At+1) ∣ St=st,At=at]
贝尔曼方程 2(将 Qπ 表示成 Vπ)
由于 Vπ(St+1)=EAt+1[Qπ(St+1,At+1)]:
Qπ(st,at)=ESt+1[Rt+γ⋅Vπ(St+1) ∣ St=st,At=at]
贝尔曼方程 3(将 Qπ 表示成 Vπ)
由于 Vπ(St)=EAt[Qπ(St,At)]:
Vπ(st)=EAt,St+1[Rt+γ⋅Vπ(St+1) ∣ St=st]
最优贝尔曼方程
Q⋆(st,at) = ESt+1∼p(⋅∣st,at)[Rt+γ⋅A∈Amax Q⋆(St+1,A) ∣ St=st,At=at].
Q-learning
Q-learning 的目的是学习最优动作价值函数 Q∗(st,at)。
Q∗(s,a)=πmax Qπ(s,a)
实践中使用 深度 Q 网络(deep Q network,DQN) Q(s,a;w) 近似最优动作价值函数 Q∗(st,at),其中的 w 表 示神经网络中的参数。
TD 训练 DQN
根据最优贝尔曼方程
Ut的期望Q⋆(st,at)= ESt+1∼p(⋅∣st,at)[Rt+γ⋅Ut+1的期望A∈Amax Q⋆(St+1,A) ∣ St=st,At=at].
做蒙特卡洛近似:
-
当智能体执行动作 at 之后,环境通过状态转移函数 p(st+1∣st,at) 计算出新状态 st+1。
-
奖励 Rt 最多只依赖于 St、At、St+1。那么当我们观测到 st、at、st+1 时,则奖励 Rt 也被观测到,记作 rt。
-
用 4 元组 (st,at,rt,st+1) 计算出
rt+γ⋅A∈AmaxQ⋆(st+1,A)
作为最优贝尔曼方程 右边期望的蒙特卡洛近似,得到:
Q⋆(st,at)≈rt+γ⋅A∈AmaxQ⋆(st+1,a)
把最优动作价值函数 Q∗(s,a) 替换成神经网络 Q(s,a;w), 得到:
预测 q^tQ(st,at;w) ≈ TD目标 y^trt+γ⋅a∈Amax Q(st+1,a;w)
损失函数:
L(w)=21[Q(st,at;w)−y^t]2
L 关于 w 的梯度:
∇wL(w)=TD 误差 δt(q^t−y^t)⋅∇wQ(st,at;w).
SARSA 算法
State-Action-Reward-State-Action,SARSA 的目的是学习动作价值函数 Qπ(st,at)
Qπ(st,at)=E[Ut∣St=st,At=at]
实践中使用 价值网络(value network) q(s,a;w) 近似 动作价值函数 Qπ(st,at) ,其中的 w 表示神经网络中的参数。
SARSA 算法
根据 贝尔曼方程 1 :
Qπ(st,at)=ESt+1,At+1[Rt+γ⋅Qπ(St+1,At+1) ∣ St=st,At=at]
做蒙特卡洛近似:
-
给定当前状态 st ,智能体执行动作 at ,环境会给出奖励 rt 和新的状态 st+1 。然后基于 st+1 做随机抽样:
a~t+1 ∼ π(⋅∣st+1)
-
SARSA 算法用到了 5 元组:(st,at,rt,st+1,a~t+1) 计算出:
rt+γ⋅Qπ(st+1,a~t+1)
作为贝尔曼方程 右边期望的蒙特卡洛近似,得到:
Qπ(st,at) ≈ rt+γ⋅Qπ(st+1,a~t+1)
把动作价值函数 Qπ(s,a) 替换成价值网络 q(s,a;w), 得到:
预测 q^tq(st,at;w) ≈ TD目标 y^trt+γ⋅q(st+1,a~t+1;w)
损失函数:
L(w)=21[q(st,at;w)−y^t]2
L 关于 w 的梯度:
∇wL(w)=TD 误差 δt(q^t−y^t)⋅∇wq(st,at;w)
Q-learning 与 SARSA 的对比:
| | | |
|---|
Q-learning | 近似 Q∗ | 异策略 | 可以使用经验回放 |
| SARSA | 近似 Qπ | 同策略 | 不能使用经验回放 |
| {.table-hover} | | | |
-
Q-learning的目标是学习 DQN Q(s,a;w) ,作为最优动作价值函数 Q∗(st,at) 的近似。因为 Q∗ 与策略 π 无关,所以在理想情况下,不论收集经验用的行为策略 π 是什么,都不影响 Q-learning 得到的最优动作价值函数。
Q-learning 中损失函数 L 关于 w 的梯度与 π 无关 ( Q(s,a;w) 与 π 无关 ):
∇wL(w)=TD 误差 δt(q^t−y^t)⋅∇wQ(st,at;w).
因此,Q-learning属于 异策略(off-policy),允许行为策略区别于目标策略,可以用经验回放。
-
SARSA 算法的目标是学习 价值网络(value network) q(s,a;w) ,作为 动作价值函数 Qπ(st,at) 的近似。Qπ 与策略 π 相关,不同的策略 π 对应 Qπ 不同。策略 π 越好,Qπ 的值越大。
经验回放数组里的经验 (sj,aj,rj,sj+1) 是过时的行为策略 πold 收集到的,与当前策略 πnow 及其对应的价值 Qπnow 对应不上。想要学习 Qπ 的话,必须用与当前策略 πnow 收集到的经验,而不能用过时的 πold 收集到的经验。
SARSA 中损失函数 L 关于 w 的梯度与 π 相关 ( q(s,a;w) 与 π 相关 ):
∇wL(w)=TD 误差 δt(q^t−y^t)⋅∇wq(st,at;w)
因此,SARSA 属于 同策略(on-policy),不允许行为策略区别于目标策略,不能用经验回放。
多步 TD 目标
回报 Ut 可以写成:
Ut=(Rt+γRt+1+⋯+γm−1Rt+m−1)+(γmRt+m+⋯+γn−tRn)=(i=0∑m−1γiRt+i)+γm(Rt+m+γRt+m+1+⋯+γn−t−mRn)=(i=0∑m−1γiRt+i)+γmUt+m
不难得出定理:
设 Rk 是 Sk, Ak, Sk+1 的函数,∀k=1,⋯,n。那么
Ut 的期望Qπ(st,at)=E(i=0∑m−1γiRt+i)+γm⋅Ut+1 的期望Qπ(St+m,At+m) ∣ St=st,At=at
公式中的期望是关于随机变量 St+1,At+1,⋯,St+m,At+m 求的。
多步TD目标
在 t 时刻,价值网络做出预测 q^t=q(st,at;w),它是对 动作价值函数 Qπ(st,at) 的估计。
已知当前状态 st,用策略 π 控制智能体与环境交互 m 次,得到轨迹:
rt,st+1,at+1,rt+1,⋯,st+m−1,at+m−1,rt+m−1,st+m,at+m.
在 t+m 时刻,用观测到的轨迹对上式右边的期望做蒙特卡洛近似,把近似的结果记作:
(i=0∑m−1γirt+i)+γm⋅Qπ(st+m,at+m).
用 q(st+m,at+m;w) 近似 Qπ(st+m,at+m),得到:
yt^≜(i=0∑m−1γirt+i)+γm⋅q(st+m,at+m;w).
yt^ 即为 m 步 TD 目标。
qt=q(st,at;w) 和 yt 分别是价值网络在 t 时刻和 t+m 时刻做出的预测,两者都是对 Qπ(st,at) 的估计值。
- qt^ 是纯粹的预测。
- yt^ 基于 m 组实际观测,因此 yt 比 qt 更可靠。
我们鼓励 qt 接近 yt。设损失函数为
L(w)≜21[q(st,at;w)−yt]2.
做一步梯度下降更新价值网络参数 w:
w←w−α⋅(qt−yt)⋅∇wq(st,at;w).
价值学习高级技巧
经验回放(experience replay)
收集训练数据
可以用任何策略函数 π 去控制智能体与环境交互,这个 π 是行为策略(behavior policy)。
比较常用的是 ϵ-greedy 策略:
at=⎩⎨⎧argmaxa Q(st,a;w),均匀抽取 A 中的一个动作,以概率 (1−ϵ);以概率 ϵ.
经验回放数组(replay buffer)
把 agent 与环境交互的记录(即经验)储存到 一个数组里,事后反复利用这些经验训练 agent。
这个数组被称为经验回放数组(replay buffer)。
- 把智能体的轨迹划分成 (st,at,rt,st+1) 这样的 4 元组,存入一个数组,指定数组的大小 b。
- 数组中只保留最近 b 条数据;当数组存满之后,删除掉最旧的数据。
- 数组的大小 b 是个需要调的超参数,会影响训练的结果。通常设置 b 为 105 ∼ 106。
- 在回放数组中的 4 元组数量不够的时候,
DQN 只与环境交互,DQN 参数不更新,否则实验效果不好。
经验回放的优点
-
打破序列的相关性。agent 收集经验的时候,相邻两个 4 元组 (st,at,rt,st+1) 和 (st+1,at+1,rt+1,st+2) 有很 的相关性。
经验回放每次从数组里随机抽取一个4 元组,用来对 DQN 参数做一次更新。
这样随机抽到的 4 元组都是独立的,消除了相关性。
-
重复利用收集到的经验。
经验回放的局限性
经验回放适用于异策略,不适用于同策略。
经验回放数组里的数据全都是用行为策略(behavior policy)控制 agent 收集到的。策略的变化导致收集经验时用的行为策略是过时的策略,不同于当前我们想要更新的策略——即目标策略(target policy)。
优先经验回放
普通经验回放每次均匀抽样得到一个样本——即 4 元组 (sj,aj,rj,sj+1) , 用来更新参数。
优先经验回放给每个 4 元组一个权重,然后根据权重做非均匀随机抽样。如果 DQN 对 (sj,aj) 的价值判断不准确,即 Q(s,a;w) 离 Q∗(st,at) 较远, 则 4 元组 (sj,aj,rj,sj+1) 应当有较高的权重。
4 元组 (sj,aj,rj,sj+1) 的权重是 TD 误差的绝对值 ∣δj∣:
δj ≜ Q(sj,aj;wnow)−[rt+γ⋅a∈Amax Q(sj+1,a;wnow)].
有两种方法设置抽样概率,两种方式的原理是一样的,∣δj∣ 大的样本被抽样到的概率大。
-
ϵ 是个很小的数,防止抽样概率接近零,用于保证所有样本都以非零的概率被抽到。
pj∝∣δj∣+ϵ
-
先对 ∣δj∣ 做降序排列,然后计算
pj∝rank(j)1
此处 rank(j) 是 ∣δj∣ 的序号。大的 ∣δj∣ 的序号小,小的 ∣δj∣ 的序号大。
学习率
不同的样本有不同的抽样概率,会导致 DQN 的预测有偏差。应该相应调整学习率,抵消掉不同抽样概率造成的偏差。如果一条样本被抽样的概率大,那么它的学习率就应该比较小:
αj=(b⋅pj)βα
b 是经验回放数组中样本的总数,β∈(0,1) 是个需要调的超参数。(论文里建议一开始让 β 比较小,最终增长到 1。)
TD 算法改进
Q-learning 中的 TD 目标:
yj=rj+γ⋅a∈Amax Q(sj+1,a;w)
将最大化拆成两步:
-
选择——即基于状态 sj+1,选出一个动作使得 DQN 的输出最大化:
a∗=arga∈Amax Q(sj+1,a;w)
-
求值——即计算 (sj+1,a∗) 的值,从而算出 TD 目标:
y^j=rj+Q(sj+1,a∗;w)
目标网络
定义目标网络 (target network):
Q(s,a;w−)
目标网络的神经网络结构与 DQN 完全相同,但是参数 w− 不同于 w。
使用目标网络 计算 TD 目标。
选择和求值都用目标网络:
-
选择:
a−=arga∈Amax Q(sj+1,a;w−)
-
求值:
y^j=rj+Q(sj+1,a−;w−)
双 Q-learning 算法
第 1 步的选择用 DQN,第 2 步的求值用目标网络:
-
选择:
a∗=arga∈Amax Q(sj+1,a;w)
-
求值:
yj=rj+Q(sj+1,a∗;w−)
双 Q-learning 可以缓解最大化造成的高估是因为:
双 Q-learningQ(sj+1,a∗;w−) ≤ 用目标网络的 Q-learning a∈Amax Q(sj+1,a;w−)
因此
双 Q-learningy~t ≤ 用目标网络的 Q-learning y~t−
即 双 Q-learning 得到的 TD 目标更小。因此,与用目标网络的 Q-learning 相比,双 Q-learning 缓解了高估。
| 选择 | 求值 | 自举造成偏差 | 最大化造成高估 |
|---|
原始 Q-learning | DQN | DQN | 严重 |
Q-learning + 目标网络 | 目标网络 | 目标网络 | 不严重 |
双 Q-learning | DQN | 目标网络 | 不严重 |
| {.table-hover} | | | |
DQN 网络结构改进
最优优势函数 (optimal advantage function) D∗ :
D∗(s,a)≜Q∗(s,a)−V∗(s)
易得:
Q∗(s,a)=V∗(s)+D∗(s,a)−≡ 0a∈Amax D∗(s,a),∀s∈S, a∈A
【对决网络 (Dueling Network)】
对决网络 (dueling network) 也是对最优动作价值函数 Q∗ 的近似。对决网络与 DQN 的区别在于神经网络结构不同。对决网络由两个神经网络组成:
-
D(s,a;wD):对最优优势函 数 D∗(s,a) 的近似。
-
V(s;wV):对最优状态价值函数 V∗(s,a) 的 近似。
对决网络 (dueling network):
Q(s,a;w) ≜ V(s;wV)+D(s,a;wD)−a∈Amax D(s,a;wD)
它的参数记作 w≜(wV;wD)
maxa∈A D(s,a;wD) 的作用:
保证训练的过程中, V 和 D 不能随意上下波动,从而保证参数的稳定。
实际实现对决网络:
Q(s,a;w) ≜ V(s;wV)+D(s,a;wD)−meana∈A D(s,a;wD)
【噪声网络(noisy net)】
把神经网络中的参数 w 替换成 μ+σ∘ξ。此处的 μ, σ, ξ 的形状与 w 完全相同。
-
μ, σ 分别表示均值和标准差,它们是神经网络的参数,需要从经验中学习。
-
ξ 是随机噪声,它的每个元素独立从标准正态分布 N(0,1) 中随机抽取。
-
符号“ ∘ ”表示逐项乘积。
如果 w 是矩阵,那么有
wij=μij+σij⋅ξij.
噪声 DQN
把标准的 DQN Q(s,a;w) 中的 w 替换成 μ+σ∘ξ 得到噪声 DQN,记作:
Q~(s,a,ξ;μ,σ) ≜ Q(s,a;μ+σ∘ξ).
-
μ 和 σ 是参数,一开始随机初始化,然后从经验中学习;
-
ξ 随机生成,每个元素都从 N(0,1) 中抽取。
噪声 DQN 的参数数量比标准 DQN 多一倍。
收集经验
噪声 DQN 本身带有随机性,可以鼓励探索,起到与 ϵ-greedy 策略相同的作用。直接用
at=arga∈Amax Q~(s,a,ξ;μ,σ)
作为行为策略,效果比 ϵ-greedy 更好。每做一个决策,要重新随机生成一个 ξ。
Q-learning
训练时,每一轮从经验回放数组中随机抽样出一个 4 元组(sj,aj,rj,sj+1)。
从标准正态分布中做抽样,得到 ξ′ 的每一个元素。
计算 TD 目标:
yj=rj+γ⋅a∈Amax Q~(sj+1,a,ξ′;μ,σ).
损失函数:
L(μ,σ)=21[Q~(sj,aj,ξ;μ,σ)−yj]2,
其中的 ξ 也是随机生成的噪声,但是它与 ξ′ 不同。
梯度下降更新参数:
μ←μ−αμ⋅∇μL(μ,σ)σ←σ−ασ⋅∇σL(μ,σ).
做决策
噪声 DQN 做决策的时候不再需要噪声,因此可以把参数 σ 设置成全零,只保留参数 μ。此时,噪声 DQN 就变成标准的 DQN:
噪声 DQNQ~(s,a,ξ′;μ,0) = 标准 DQNQ(s,a;μ).
噪声可以让 DQN 有更强的鲁棒性的原因:
当训练的过程中不加入噪声,学出的参数严格等于 μ 时,DQN 可以对最优动作价值做出较为准确的估计。但是对 μ 做较小的扰动,可能会让 DQN 的输出偏离很远。
噪声 DQN 训练的过程中,参数带有噪声:ω=μ+σ∘ξ。训练迫使 DQN 在参数带噪声的情况下最小化 TD 误差,也就是迫使 DQN 容忍对参数的扰动。训练出的 DQN 具有鲁棒性:参数不严格等于 μ 也没关系,只要参数在 μ 的邻域内,DQN 做出的预测都应该比较合理。
策略学习
策略学习的 目标函数:
J(θ)=ES[Vπ(S)]
J(θ) 只依赖于 θ,不依赖于状态 S 和动作 A。
策略学习可以表述为这样一个优化问题:
θmax{J(θ)≜ES[Vπ(S)]}
求解这个最大化问题最简单的算法就是梯度上升:
θ→θ+β⋅∇θJ(θ).
【策略梯度定理】(不严谨的表述)
∂θ∂J(θ)=ES[EA∼π(⋅∣S;θ)[∂θ∂lnπ(A∣S;θ)⋅Qπ(S,A)]].
【策略梯度定理】(严谨的表述)
∂θ∂J(θ)=(1+γ+γ2+⋯+γn−1)⋅ES∼d(⋅)[EA∼π(⋅∣S;θ)[∂θ∂lnπ(A∣S;θ)⋅Qπ(S,A)]].
使用蒙特卡洛近似。
把从环境中观测到的状态 s,作为随机变量 S 的观测值。
再根据当前的策略网络(策略网络的参数必须是最新的)随机抽样得出一个动作:a∼π(⋅∣s;θ))。
计算随机梯度:
g(s,a;θ) ≜ Qπ(s,a)⋅∇θlnπ(a∣s;θ)
显然随机梯度 g(s,a;θ) 是策略梯度 ∇θJ(θ) 的无偏估计:
∇θJ(θ)=ES[EA∼π(⋅∣S;θ)[g(S,A;θ)]]
策略学习方法
REINFORCE
t 时刻的折扣回报 Ut
Ut=k=t∑nγk−t⋅Rk
动作价值函数定义为 Ut 的条件期望:
Qπ(st,at)=E[Ut∣St=st,At=at]
REINFORCE 方法用蒙特卡洛近似动作价值函数 Qπ(s,a)。
-
从时刻 t 开始,agent 完成一局游戏,观测到全部奖励 rt,⋯,rn,然后可以计算 ut=∑k=tnγk−t⋅rk。
-
因为 ut 是随机变量 Ut 的观测值,所以 ut 是 Ut 的条件期望的蒙特卡洛近似。
那么随机梯度 g(st,at;θ) 可近似成:
g~(st,at;θ)=ut⋅∇θlnπ(at∣st;θ)
g~ 是 g 的无偏估计,所以也是策略梯度 ∇θJ(θ) 的无偏估计;g~ 也是一种随机梯度。于是我们 可以实际计算出随机梯度 g~ 的值。
- 反向传播计算出 lnπ 关于 θ 的梯度。
- 实际观测到 ut
Actor-Critic
Actor-critic 方法用一个价值网络 q(s,a;w) 近似动作价值函数 Qπ(s,a)。
价值网络 q(s,a;w) 的输入是状态 s,输出是每个动作的价值。动作空间 A 中有多少种动作,那么价值网络的输出就是多少维的向量,向量每个元素对应一个动作。
-
策略网络 π(at∣st;θ) 相当于 actor,它基于状态 s做出动作 a。
-
价值网络 q(s,a;w) 相当于 critic,它给演员的表现打分,评价在状态 s 的情况下做出动作 a 的好坏程度。
价值网络 q(s,a;w) 与 DQN 有相同的结构,但意义不同。
-
价值网络 q(s,a;w) 是对 动作价值函数 Qπ(s,a) 的近似。而 DQN 则是对最优动作价值函数 Q∗(s,a) 的近似。
-
价值网络 q(s,a;w) 的训练使用 SARSA 算法,它属于同策略,不能用经验回放。DQN 训练使用的是 Q-learnin 算法,它属于异策略,可以用经验回放。
将动作价值函数 Qπ(s,a) 替换成 价值网络 q(s,a;w) 得到近似策略梯度:
g^(st,at;θ)=q(st,at;w)⋅∇θlnπ(at∣st;θ)
带基线的策略梯度
带基线的策略梯度定理
设 b 是任意的函数,但是 b 不依赖于动作 A。把 b 作为动作价值函数 Qπ(S,A) 的基线(baseline),对策略梯度没有影响:
∇θJ(θ)=ES[EA∼π(⋅∣S;θ)[(Qπ(S,A)−b)⋅∇θlnπ(A∣S;θ)]].
使用状态价值 Vπ(s) 作基线(baseline),得到策略梯度的一个无偏估计:
g(s,a;θ)=[Qπ(s,a)−Vπ(s)]⋅∇θlnπ(a∣s;θ).
公式中的 Qπ−Vπ 被称为优势函数(advantage function)。
带基线的 REINFORCE 算法
-
使用实际观测的回报 u 来代替动作价值 Qπ(s,a)。
-
使用神经网络 v(s;w) 近似状态 价值函数 Vπ(s)。
此时,g(s,a;θ) 被近似为:
g~(s,a;θ)=[u−v(s;w)]⋅∇θlnπ(a∣s;θ).
Advantage Actor-Critic (A2C)
g(s,a;θ)=[优势函数Qπ(s,a)−Vπ(s)]⋅∇θlnπ(a∣s;θ).
基于上面公式得到的 actor-critic 方法被称为 advantage actor-critic,缩写 A2C。
由 贝尔曼公式 :
Qπ(st,at) =ESt+1∼p(⋅∣st,at)[Rt+γ⋅Vπ(St+1)]
得到:
g(s,a;θ)=[Qπ(s,a)−Vπ(s)]⋅∇θlnπ(a∣s;θ)=[ESt+1[Rt+γ⋅Vπ(St+1)]−Vπ(st)]⋅∇θlnπ(at∣st;θ).
当智能体执行动作 at 之后,环境给出新的状态 st+1 和奖励 rt;利用 st+1 和 rt 对上面的期望做蒙特卡洛近似,得到:
g(st,at;θ)≈[rt+γ⋅Vπ(st+1)−Vπ(st)]⋅∇θlnπ(at∣st;θ).
把状态值函数 Vπ(s) 替换成价值网络 v(s;w),得到
g~(st,at;θ)≜[TD 目标 yt^rt+γ⋅v(st+1;w)−v(st;w)]⋅∇θlnπ(at∣st;θ).
两个神经网络的结构与 Actor-critic 中的完全相同,但训练方法不一样。
TRPO
TRPO 的优势:
-
TRPO 表现更稳定,收敛曲线不会剧烈波动,而且对学习率不敏感;
-
TRPO用更少的经验(即智能体收集到的状态、动作、奖励)就能达到与策略梯度方法相同的表现。
策略学习的 目标函数:
J(θ)=ES[Vπ(S)]
可以等价写成:
J(θ)=ES[EA∼π(⋅∣s;θnow)[π(A∣s;θnow)π(A∣s;θ)⋅Qπ(s,A)]].
TRPO 训练策略网络的流程:TRPO 需要重复做近似和最大化这两个步骤:
- 近似
对期望做蒙特卡洛近似,用策略网络 π(A∣S;θnow) 控制智能体跟环境交互,从头到尾玩完一局游戏, 观测到一条轨迹:
s1,a1,r1, s2,a2,r2, ⋯ ,sn,an,rn
其中的状态 {st}t=1n 均为从环境中观测,其中的动作 {at}t=1n 均为根据策略网络 π(⋅∣st;θnow) 抽取的样本。
所以 π(at∣st;θnow)π(at∣st;θ)⋅Qπ(st,at) 是 对期望 J(θ) 的无偏估计。
所以 n 项的均值 L 也是对期望 J(θ) 的无偏估计:
L(θ∣θnow)=n1t=1∑nπ(at∣st;θnow)π(at∣st;θ)⋅Qπ(st,at)
做 2 次近似:
Qπ(st,at)⇒Qπold(st,at)⇒ut
-
Qπ 中的策略是 π(at∣st;θ)。
-
Qπold 中的策略是旧策略 π(at∣st;θnow)。
-
用旧策略 π(at∣st;θnow) 生成轨迹 {(sj,aj,rj,sj+1)}j=1n。
折扣回报 ut=rt+γ⋅rt+1+γ2⋅rt+2+⋯+γn−t⋅rn 是对 Qπold 的近似。当 θ 接近 θnow 时,即 θ 在 θnow 的邻域中时 (置信域),ut 是 Qπ 的有效近似。
用 ut 替代 Qπ(st,at) 得到:
L~(θ∣θnow)=n1t=1∑nπ(at∣st;θnow)π(at∣st;θ)⋅ut.
-
最大化
把 L~(θ∣θnow) 作为目标函数 J(θ) 的近似,求解带约束的最大化问题:
θmaxL~(θ∣θnow);s.t.θ∈N(θnow)
置信域 N(θnow) 的选择:
-
以 θnow 为球心、以 Δ 为半径的球:
θmaxL~(θ∣θnow);s.t.∥θ−θnow∥2≤Δ
-
使用 KL 散度衡量两个概率质量函数 π(⋅∣si;θnow) 和 π(⋅∣si;θ) 的距离:
θmaxL~(θ∣θnow);s.t.t1i=1∑tKL[π(⋅∣si;θnow)∥π(⋅∣si;θ)]≤Δ
TRPO 中的超参数 ( TRPO 对超参数的设置不敏感):
熵正则 (Entropy Regularization)
以用 熵 (Entropy) 来衡量概率分布的不确定性,熵小说明概率质量很集中,熵大说明随机性很大。
我们希望策略网络输出的概率分布的熵不要太小,因此把熵作为正则项,放到策略学习的目标函数中。
策略网络的输出是维度等于 ∣A∣ 的向量,它表示定义在动作空间上的离散概率分布。这个概率分布的熵定义为:
H(s;θ)≜Entropy[π(⋅∣s;θ)]=−a∈A∑π(a∣s;θ)⋅lnπ(a∣s;θ)
熵 H(s;θ) 只依赖于状态 s 与策略网络参数 θ。
使用熵正则的策略学习:
θmaxJ(θ)+λ⋅ES[H(S;θ)]
此处的 λ 是个超参数。
带熵正则的策略梯度
g(θ)≜∇θ[J(θ)+λ⋅ES[H(S;θ)]]
观测到状态 s,按照策略网络做随机抽样,得到动作 a∼π(⋅∣s;θ)。那么 g~(s,a;θ) 是梯度 g(θ) 的无偏估计
g~(s,a;θ)≜[Qπ(s,a)−λ⋅lnπ(a∣s;θ)−λ]⋅∇θlnπ(a∣s;θ)
∇θ[J(θ)+λ⋅ES[H(S;θ)]]=ES[EA∼π(⋅∣s;θ)[g~(S,A;θ)]]
连续控制
确定策略梯度DPG
策略网络
对于确定的状态 s,策略网络 μ(s;θ) 输出的 动作 a 是 确定的 d 维向量,d 为问题的自由度。动作 a 直接由 μ 输出,而非随机抽样得到。它的第 i 个元素记作 μ^i=[μ(s;θ)]i。
定义随机策略:
π(a∣s;θ,σ)=i=1∏d2πσi1⋅exp(−2σi2[ai−μ^i]2)
这个随机策略是均值为 μ(s;θ)、协方差矩阵为 diag(σ1,⋯,σd) 的多元正态分布。本节的确定策略可以看做是上述随机策略在 σ=[σ1,⋯,σd] 为全零向量时的特例。
价值网络
价值网络 q(s,a;w) 是对动作价值函数 Qπ(s,a) 的近似。
输入是状态 s 和动作 a ,输出的价值 q^=q(s,a;w) 是个实数, 可以反映动作的好坏;动作 a 越好,价值 q^ 越大。
DPG 属于 异策略(off-policy) 方法:
策略网络的学习
θmax J(θ)=θmax ES[q(S,μ(S;θ);w)]
这里只训练策略网络,所以价值网络的参数 w 被固定住。
用梯度上升来增大 J(θ)。每次用随机变量 S 的一个观测值(记作 sj)来计算梯度:
gj ≜ ∇θq(sj,μ(sj;θ);w) = ∇θμ(sj;θ)⋅∇aq(sj,a^j;w),其中a^j=μ(sj;θ).
gj 即 确定策略梯度(deterministic policy gradient, DPG) ,它是 ∇θJ(θ) 的无偏估计。
改进方法
-
TD 算法改进。
-
往动作中加噪声。
a^j+1−=μ(sj+1;θ−)+ξ
ξ 是个随机向量,表示噪声,它的每一个元素独立随机从截断正态分布(clipped normal distribution) CN(0,σ2,−c,c) 中抽取。
CN(0,σ2,−c,c) 表示均值为 0,标准差为 σ 的正态分布,但是变量落在区间 [−c,c] 之外的概率为零。
使用截断正态分布,是为了防止噪声 ξ 过大,保证噪声大小不会超过 −c 和 c。
-
减小更新策略网络和目标网络的频率。
让策略网络 μ 以及 3 个目标网络的更新慢于价值网络 q。
每 1 轮更新一次价值网络,但是每隔 k 轮更新一次策略网络和 3 个目标网络。k 是 超参数。
双延时确定策略梯度 (Twin Delayed Deep Deterministic Policy GradientTD3)
TD3 使用目标网络 (Target Networks) 计算 TD 目标 yj,2 个目标网络:
q(s,a;w−) , μ(s;θ−)
TD 目标:
yj=rj+γ⋅q(sj+1,a^j+1;w−),其中 a^j+1=μ(sj+1;θ−)
截断双 Q-learning(Clipped double Q-learning)
使用 2 个价值网络和 1 个策略网络
q(s,a;w1) , q(s,a;w2) , μ(s;θ)
3 个神经网络各对应 1 个目标网络:
q(s,a;w1−) ,q(s,a;w2−) , μ(s;θ−)
用目标策略网络计算动作:
a^j+1−=μ(sj+1;θ−).
用 2 个目标价值网络计算:
yj,1=rj+γ⋅q(sj+1,aj+1;w1)yj,2=rj+γ⋅q(sj+1,aj+1;w2)
取两者较小者为 TD 目标:
yj=min{yj,1,yj,2}.
随机高斯策略网络
简单的情形:自由度等于 1,即动作 a 是实数,动作空间 A⊂R。
用正态分布的概率密度函数作为策略函数:
π(a∣s)=2π⋅σ(s)1⋅exp(−2⋅σ2(s)[a−μ(s)]2).
如果函数 μ(s) 和 σ(s) 的解析表达式已知,可以这样做控制:
- 观测到当前状态 s,预测均值 μ^=μ(s) 和标准差 σ^=σ(s)。
- 从正态分布中做随机抽样:a∼N(μ^,σ^2);智能体执行动作 a。
用神经网络来近似这两个函数,记作 μ(s;θ) 和 σ(s;θ)。
实践中通常使用近似方差对数 ρ=lnσ2 替代标准差 σ。
自由度等于 d
定义两个神经网络:μ(s;θ) 和 ρ(s;θ) , 输出均为 d 维向量。
- 标量 ai 表示动作向量 a 的第 i 个元素。
- 函数 μi(s;θ) 和 ρi(s;θ) 分别表示 μ(s;θ) 和 ρ(s;θ) 的第 i 个元素。
用多元正态分布的概率密度函数作为策略网络:
π(a∣s;θ)=i=1∏d2π⋅exp[ρi(s;θ)]1⋅exp(−2⋅exp[ρi(s;θ)][ai−μi(s;θ)]2).
定义辅助网络:
f(s,a;θ) = −21i=1∑d(ρi(s;θ)+exp[ρi(s;θ)][ai−μi(s;θ)]2)= lnπ(a∣s;θ)+Constant
使用辅助网络替代策略网络。
策略梯度
g(s,a;θ) = Qπ(s,a)⋅∇θlnπ(a∣s;θ) = Qπ(s,a)⋅∇θf(s,a;θ)
Reference
github.com/wangshusen/…