王树森强化学习笔记

【王树森】深度强化学习(DRL)_哔哩哔哩_bilibili

王树森深度强化学习笔记 - 知乎

深度强化学习

1、RL术语

X是随机变量,x是观测值

state s

Action a,a是agent做的,以马里奥为例,left right up

policy π\pi π:(s,a)=p(A=aS=s)\pi:(s,a)=p(A=a|S=s) 即给定状态s,做出动作a的概率

reward 以马里奥为例,捡到金币+1,赢了+1w,输了扣1w

state transition 状态转移

强化学习中两个随机性来源:动作的随机性,状态转移的随机。随机产生a,随机产生s

trajectory:每一步是s,a,rs,a,r 直到游戏结束有s1,a1,r1,s2,a2,r2,...sT,aT,rTs_1,a_1,r_1,s_2,a_2,r_2, ... s_T,a_T,r_T

Return: cumulative future reward RtR_t 是当前的回报,未来的回报具有不确定性,所以加了一个超参数

Ut=Rt+γRt+1+γ2Rt+2+...U_t = R_t+\gamma R_{t+1} + \gamma^2 R_{t+2} + ...

Acition-Value Function for policy π\pi Q(s,a)Q(s,a) ,对UtU_t的期望,因为它与当前t时刻与未来每个时刻的A和S都有关,求期望得到动作价值函数的定义

Qπ(s,a)=E[UtSt=st,At=at]Q_\pi(s,a) = \mathbb{E}[U_t| S_t =s_t,A_t=a_t]

Optimal action-value function Q最大的时候

Q(s,a)=maxπQπ(st,at)Q^*(s,a) =\mathop{max}\limits_{\pi} Q_\pi (s_t,a_t)

State-Value function

Vπ(S)=EA[Qπ(s,A)]V_\pi(S) = \mathbb{E_A}[Q_\pi(s,A)]

总结就是,动作价值函数是状态sts_t下,采取动作ata_t,能够得到多少回报,当然这个值越大越好。而状态价值函数是只固定了状态sts_t,动作A是随机,因此状态价值函数的结果是,当前状态下,能够得到的平均回报

强化学习任务,一是学习策略函数,二是学习Q函数。学习两者之一即可。

value-based learning: DQN,任务是最大化Q 用到temporal different TD算法

Policy-based learning :任务是最大化π\pi 用到policy gradient,梯度上升

Actor-critic method: policy network + value network

2、Value-Based RL

用一个神经网络去近似Q(s,a)Q^{*}(s,a)

如果我们知道了Q(s,a)Q^*(s,a)那么很明显最优动作就是

但是我们现在没有Q(s,a)Q^*(s,a) 所以只能用一个神经网络去近似

但是怎么训练?用TD训练,目的是让TD error越小越好

类比driving time例子,TD公式一般类似于这样,左边是T时刻的估计,右边是TD target,包含一个真实值和T+1时刻的估计

TNYC>ATLTNYC>DC+TDC>ATLT_{NYC->ATL} \approx T_{NYC->DC} + T_{DC->ATL}

而在强化学习中

Q(st,at;w)rt+γQ(st+1,at+1;w)Q(s_t,a_t;w) \approx r_t + \gamma \cdot Q(s_{t+1},a_{t+1};w)

yt=rt+γQ(st+1,at+1;wt)y_t = r_t + \gamma \cdot Q(s_{t+1},a_{t+1};w_t)

y_t = r_t + \gamma \cdot \max_\limits{a} Q(s_{t+1},a;w_t)

注意到这里,为什么要求一个max?我的理解是,因为我们的目标就是训练一个最优的Q?

怎么训呢?

图1 图2

3、Policy-Based RL

策略函数π(as)\pi(a|s)是一个概率分布函数 给定状态s,做出动作a

如果状态有限,直接用一个表记录就行,超级马里奥需要用函数去近似

回顾一下状态价值函数

Vπ(st)=EA[Qπ(st,A)]=aπ(ast)Qπ(st,a)V_\pi(s_t) = \mathbb{E_A}[Q_\pi(s_t,A)]=\sum_a\pi(a|s_t) \cdot Q_\pi(s_t,a)

通过神经网络去近似策略函数π(a,st;θ)\pi(a,s_t;\theta)

V(st;θ)=aπ(ast;θ)Qπ(st,a)V(s_t;\theta) =\sum_a\pi(a|s_t;\theta) \cdot Q_\pi(s_t,a)

Policy-based learning:Learn θ\theta that maximizes J(θ)=ES[V(S;θ)]J(\theta) = \mathbb{E_S}[V(S;\theta)]

那么算policy gradient的时候,需要用到梯度上升,不严谨的推导可以得到两个公式,分别对应离散和连续

V(s;θ)θ=aπ(a;s,θ)θQπ(s,a)\frac{\partial V(s;\theta)}{\partial \theta} = \sum_a \frac{\partial \pi(a;s,\theta)}{\partial \theta} \cdot Q_\pi(s,a)

V(s;θ)θ=EAπ(s;θ)[logπ(As,θ)θQπ(s,A)]\frac{\partial V(s;\theta)}{\partial \theta} = \mathbb{E_{A\sim\pi(\cdot|s;\theta)}}[\frac{\partial \log\pi(A|s,\theta)}{\partial \theta} \cdot Q_\pi(s,A)]

这里策略函数很复杂,积分求不出来,只能用MC去近似期望,MC就是抽一个或很多个样本,去近似期望

图3

步骤如下

图4

但问题是第三步中的Q咋算的?有两种方式

图5 图6

4、Actor-Critic methods

结合了价值学习和策略学习

图7 图8 图9

总结一下算法步骤,还有一个值得注意的点是,第九步中用qtq_t或者δt\delta_t都是可以的

前者是标准算法,后者被称为Policy Gradient with baseline,收敛的更快

图10 图11

5、AlphaGo

蒙特卡洛 Monte Carlo

第一个例子是均匀抽样估算Pi值

第二个例子是Buffon’s Needle Problem估算Pi值

第三个例子是求阴影面积

第四个例子是Monte Carlo求Pi

Monte Carlo可能是错的,但是离真实值很接近,我们不需要那么精确,在机器学习中够用了。

Random Permutation和 Fisher-Yates

推导待续

TD Learning

DQN高级技巧

大幅提升DQN的表现

回顾一下DQN,是学习一个Q star函数

1、Expeirence Replay 经验回放

img

两个好处:1.打破了序列的相关性 2.可以重复利用经验

2、Prioritized Expeirence Replay 优先经验回访

用非均匀抽样代替均匀抽样:用TD error去给经验值打一个权重,因为越少见的场景,TD error越大,这样的经验是比较重要的

两种抽样方式

img

img

2、DQN高估问题 Bootstrapping

img

两个高估来源

img

总结来说就是,DQN估计QQ^*的时候,因为是估计,所以存在噪声,最大值被高估,最小值被低估

均匀高估和非均匀高估,而均匀高估其实是无所谓的

解决方法也有两种,分别是target network和double DQN

img

本质上都是再用一个新的netwrok去解决高估问题。区别就在于求TD Target的时候,更新参数的时候,有一些区别,细节如下。

img

3、Dueling Network

img img

回顾一下Qπ(st,at)Q_\pi(s_t,a_t)Vπ(st)V_\pi(s_t) 以及最优的定义

Qπ(st,at)Q_\pi(s_t,a_t)是给定状态和动作下的期望回报

Vπ(st)V_\pi(s_t) 更进一步,只考虑了状态,对动作又做了一次期望

其实到这里就能够理解了,一个是单次动作得到的回报,一个是平均回报

然后假设已知了最优的策略函数,由此引申出优势函数的定义,其中可以理解为是一个baseline。而优势函数可以理解为采取动作aa的情况下,相对baseline的好坏,aa越好,优势越大

img img

Dueling Network定义

img

对网络结构的改进

img

根因是解决不唯一性,为了保证两个网络训练更稳定,实际使用中一般用mean而不用max,因为mean效果更好

img img img

策略梯度中的baseline

1、Policy Gradient with Baseline

目的:引入baseline,降低方差,收敛更快

复习一下

img

baseline的性质

img img

公式里面有期望,求起来会比较困难,实际使用过程中,会使用蒙特卡洛近似。

image-20250708010304508 image-20250708010220490

实际上使用的时候,都是用g(at)g(a_t)去计算梯度上升,如果baseline选的够好,g(at)g(a_t)的方差就会比较小,这样收敛的更快?

b的两种选择方式

image-20250708010534541 image-20250708010547454

2、REINFORCE with Baseline

总结就是三次近似

image-20250720131729027

两次蒙特卡洛近似,因为是无偏估计。

还一次神经网络近似。

image-20250720131848879

两个网络:一个策略网路,一个价值网络

怎么更新呢?

image-20250720132459390

3、Advantage Actor-Critic(A2C)

image-20250720132635872

怎么训练的?

image-20250720133307978

理论证明暂略。。。

4、REINFORCE with Baseline和A2C的异同

其实从上面5和6就能看出来区别,求TD target的时候,不一样

前者是完全基于观测,而A2C一部分是观测,一部分是网路的估计。

A2C和REINFORCE是相互特例

image-20250720153530935

连续控制

1、离散控制和连续控制

2、确定策略梯度Deterministic Policy Gradient, DPG

3、随机策略做连续控制

TRPO