TOC
什么是 / 为什么是 “强化学习”?
线性二次调节器(LQR)
了解世界
==DAgger==
独当一面
Markov 决策过程
==策略梯度==
什么是 / 为什么是 “强化学习”?
What? And why?
maximize r\text{maximize } rmaximize r
问题解释:假设你在玩 地球OL,如何成为人生赢家?
我们受现实制约:s∈Ss \in \mathbb{S}s∈S
而且时常我们无法得知事情的真相:o⊂s or o∼so \subset s \text{ or } o \sim so⊂s or o∼s
我们能做的事情有限:a∈Aa \in \mathbb{A}a∈A
我们心里对自己有数:s,a,s′⇒τ,brs, a, s' \Rightarrow_{\tau, b} rs,a,s′⇒τ,br
我们能与环境互动! s,a⇒π,ps′s, a \Rightarrow_{\pi, p} s's,a⇒π,ps′
类似于人类的学习机制
“如果好吃你就多吃点”:if r⋆↑, then ↑p(s∣r≈r⋆)\text{if } r^\star \uparrow, \text{ then } \uparrow p(s\vert_{r \approx r^\star})if r⋆↑, then ↑p(s∣r≈r⋆)
一种可能的达成 GAI 的途径
线性二次调节器
Linear Quadratic Regulator
最优设计算法
控制论
世界模型:xt+1=f(xt,ut)=Ft[xt ut]+ft\mathbf{x}_{t+1} = f(\mathbf{x}_t, \mathbf{u}_t) = \mathbf{F}_t \begin{bmatrix} \mathbf{x}_t \ \mathbf{u}_t \end{bmatrix} + \mathbf{f}_txt+1=f(xt,ut)=Ft[xt ut]+ft
允许包含高阶项 x˙,x¨,⋯\dot{x}, \ddot{x}, \cdotsx˙,x¨,⋯
评判标准:c(xt,ut)=12[xt ut]TCt[xt ut]+[xt ut]Tctc(\mathbf{x}_t, \mathbf{u}_t) = \frac{1}{2} \begin{bmatrix} \mathbf{x}_t \ \mathbf{u}_t \end{bmatrix}^T \mathbf{C}_t \begin{bmatrix} \mathbf{x}_t \ \mathbf{u}_t \end{bmatrix} + \begin{bmatrix} \mathbf{x}_t \ \mathbf{u}_t \end{bmatrix}^T \mathbf{c}_tc(xt,ut)=21[xt ut]TCt[xt ut]+[xt ut]Tct
目标:minτ∑c\min_\tau \sum cminτ∑c
注意对 x\mathbf{x}x 递归带入 fff
iterative LQR:如果不能线性,就用泰勒展开
是的,对轨迹上每个点展开
了解世界
Learn about the world
Version 1.0
采集数据 D=(x,u,x′)i\mathcal{D} = { (\mathbf{x}, \mathbf{u}, \mathbf{x}')_i }D=(x,u,x′)i
从数据 D\mathcal{D}D 学习世界模型 f←minf∑i∥f(xi,ui)−x′∥2f \leftarrow \min_f \sum_i \lVert f(\mathbf{x}_i, \mathbf{u}_i) - \mathbf{x}' \rVert^2f←minf∑i∥f(xi,ui)−x′∥2
Version 1.0 出了什么问题?
想想巴甫洛夫的狗...
D0,:=(ring bell and food,⋯)\mathcal{D}_0 , := { (\text{ring bell and food}, \cdots})D0,:=(ring bell and food,⋯)
fD0=(bell=food)f_{\mathcal{D}_0} = (\text{bell} = \text{food})fD0=(bell=food)
πD0=(if bell, then go to front door for food)\pi_{\mathcal{D}_0} = (\text{if bell, then go to front door for food})πD0=(if bell, then go to front door for food)
被训练集教坏的模型!
D\mathcal{D}D 并不能代表 S\mathbb{S}S,因为 xD⊂S\mathbf{x}_{\mathcal{D}} \subset \mathbb{S}xD⊂S
Version 2.0 - DAgger
Data Aggregation
初始化 π0\pi_0π0
跑 π0\pi_0π0 采集数据 D\mathcal{D}D
从 D\mathcal{D}D 学习 fff
更新 π\piπ 为 πi\pi_iπi
跑 πi\pi_iπi 采集数据 Di\mathcal{D}_iDi
[DAgger] D:=D∪Di\mathcal{D} := \mathcal{D} \cup \mathcal{D}_iD:=D∪Di
回到步骤 3,直至收敛
独当一面
Be the master of yourself
Markov Decision Process
π(s):=argmaxa∑s′Pa(s,s′)(Ra(s,s′)+γV(s′))\pi(s) := \arg \max_a { \sum_{s'} P_a(s, s') ( R_a(s, s') + \gamma V(s') ) }π(s):=argamaxs′∑Pa(s,s′)(Ra(s,s′)+γV(s′))
V(s):=∑s′Pπ(s)(Rπ(s)(s,s′)+γV(s′))V(s) := \sum_{s'} P_{\pi(s)} ( R_{\pi(s)}(s, s') + \gamma V(s') )V(s):=s′∑Pπ(s)(Rπ(s)(s,s′)+γV(s′))
from WikiPedia
评价方法
策略表现:η(π)=E[∑tγtrt]\eta(\pi) = \mathbb{E} [ \sum_t \gamma^t r_t ]η(π)=E[∑tγtrt]
状态评分:Vπ(s)=E[∑tγtrt∣s0=s]V_\pi(s) = \mathbb{E} [ \sum_t \gamma^t r_t | s_0 = s ]Vπ(s)=E[∑tγtrt∣s0=s]
状态-动作评分:Qπ(s,a)=E[∑tγtrt∣s0=s,a0=a]Q_\pi(s, a) = \mathbb{E} [ \sum_t \gamma^t r_t | s_0 = s, a_0 = a ]Qπ(s,a)=E[∑tγtrt∣s0=s,a0=a]
γ\gammaγ 为衰减因子
策略梯度
Prolicy Gradient
maximize E[R∣πθ]\text{maximize } \mathbb{E} [ R | \pi_\theta ]maximize E[R∣πθ]
基本思路
让好的轨迹更容易发生
让好的动作更容易发生
改善不好的动作
将 f(x)f(x)f(x) 替换为我们需要的任务目标
g^:=∇θEτ[R(τ)]=Eτ[∇θlogp(τ∣θ)R(τ)]\hat{g} := \nabla_\theta \mathbb{E}_\tau [ R(\tau) ] = \mathbb{E}_\tau [ \nabla_\theta \log{p(\tau | \theta)} R(\tau) ]g^:=∇θEτ[R(τ)]=Eτ[∇θlogp(τ∣θ)R(τ)]
f→Rf \rightarrow Rf→R
x→τ:=(s0,a0,r0,s1,a1,r1,⋯,sT−1,aT−1,rT−1,sT)x \rightarrow \tau := (s_0, a_0, r_0, s_1, a_1, r_1, \cdots, s_{T-1}, a_{T-1}, r_{T-1}, s_T)x→τ:=(s0,a0,r0,s1,a1,r1,⋯,sT−1,aT−1,rT−1,sT)
g^:=∇θEτ[R(τ)]=Eτ[∇θlogp(τ∣θ)R(τ)]\hat{g} := \nabla_\theta \mathbb{E}_\tau [ R(\tau) ] = \mathbb{E}_\tau [ \nabla_\theta \log{p(\tau | \theta)} R(\tau) ]g^:=∇θEτ[R(τ)]=Eτ[∇θlogp(τ∣θ)R(τ)]
现在研究 p(τ∣θ)p(\tau | \theta)p(τ∣θ)
在当前策略 πθ\pi_\thetaπθ 下,当前关注的轨迹 τ\tauτ 发生的概率
g^:=∇θEτ[R(τ)]=Eτ[R(τ)∑t∇θlogπθ(at∣st)]\hat{g} := \nabla_\theta \mathbb{E}_\tau [ R(\tau) ] = \mathbb{E}_\tau [ R(\tau) \sum_t \nabla_\theta \log{\pi_\theta(a_t | s_t)} ]g^:=∇θEτ[R(τ)]=Eτ[R(τ)t∑∇θlogπθ(at∣st)]
现在需要定义 R(τ)R(\tau)R(τ) 了
Q函数 / 状态-动作评分
Qπ,γ(s,a)=Eπ[r0+γr1+γ2r2+⋯∣s0=s,a0=a] Q_{\pi, \gamma}(s, a) = \mathbb{E}_\pi [ r_0 + \gamma r_1 + \gamma^2 r_2 + \cdots | s_0 = s, a_0 = a ] Qπ,γ(s,a)=Eπ[r0+γr1+γ2r2+⋯∣s0=s,a0=a]
状态评分
Vπ,γ(s)=Ea∼π[Qπ,γ(s,a)] V_{\pi, \gamma}(s) = \mathbb{E}_{a \sim \pi} [ Q_{\pi, \gamma}(s, a) ]Vπ,γ(s)=Ea∼π[Qπ,γ(s,a)]
进步评分
在状态 sss 时采取动作 a=π(s)a=\pi(s)a=π(s) 所能产生的评分提升
Aπ,γ(s,a)=Qπ,γ(s,a)−Vπ,γ(s)A_{\pi, \gamma}(s, a) = Q_{\pi, \gamma}(s, a) - V_{\pi, \gamma}(s)Aπ,γ(s,a)=Qπ,γ(s,a)−Vπ,γ(s)
取其中一种形式
Q函数
reward-to-go
平均基准评分
得到
g^=∇θEτ[R]≈Eτ[∑t=0T−1∇θlogπθ(at∣st)(∑t′=tT−1γt′−trt′−b(st))]\hat{g} = \nabla_\theta \mathbb{E}_\tau[R] \approx \mathbb{E}_\tau \bigg[ \sum_{t=0}^{T-1} \nabla_\theta \log{\pi_\theta(a_t | s_t)} \bigg( \sum_{t' = t}^{T-1} \gamma^{t' - t} r_{t'} - b(s_t) \bigg) \bigg]g^=∇θEτ[R]≈Eτ[t=0∑T−1∇θlogπθ(at∣st)(t′=t∑T−1γt′−trt′−b(st))]
其中
b(st)≈E[rt+γrt+1+γ2rt+2+⋯+γT−1−trT−1]b(s_t) \approx \mathbb{E} [ r_t + \gamma r_{t+1} + \gamma^2 r_{t+2} + \cdots + \gamma^{T-1-t} r_{T-1} ]b(st)≈E[rt+γrt+1+γ2rt+2+⋯+γT−1−trT−1]
构建算法流程
初始化策略网络参数 θ\thetaθ,评价基准 bbb
(训练循环)
在环境 ppp 中跑当前策略 π\piπ 得到轨迹数据 τ\tauτ
离散:at∼M(πθ(st),pa)a_t \sim \mathrm{M}\big( \pi_\theta(s_t), \mathbf{p}_a \big)at∼M(πθ(st),pa)
连续:at∼N(πθ(st),σ)a_t \sim \mathrm{N}\big( \pi_\theta(s_t), \sigma \big)at∼N(πθ(st),σ)
对轨迹 τ\tauτ 中每一步 ttt 计算
环境评分 Rt=∑t′=tT−1γt′−trt′R_t = \sum_{t'=t}^{T-1} \gamma^{t'-t} r_{t'}Rt=∑t′=tT−1γt′−trt′
策略进步评价 A^t=Rt−b(st)\hat{A}_t = R_t - b(s_t)A^t=Rt−b(st)
更新评价基准 b←argminb∑t∈τ∥Rt−b(st)∥2b \leftarrow \arg \min_b \sum_{t \in \tau} \lVert R_t - b(s_t) \rVert^2b←argminb∑t∈τ∥Rt−b(st)∥2
即将进步评价(的期望)归零
使用计算的策略梯度 g^\hat{g}g^ 更新策略网络参数 θ\thetaθ
离散:losst:=xent(at,πθ(st))⋅A^t\mathrm{loss}_t := \mathrm{xent}\big( a_t , \pi_{\theta}(s_t) \big) \cdot \hat{A}_tlosst:=xent(at,πθ(st))⋅A^t
连续:losst:=−logπθ(at∣st)⋅A^t\mathrm{loss}_t := - \log{\pi_\theta(a_t | s_t)} \cdot \hat{A}_tlosst:=−logπθ(at∣st)⋅A^t