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′⇒τ,b​r 我们能与环境互动! s,a⇒π,ps′s, a \Rightarrow_{\pi, p} s's,a⇒π,p​s′ 类似于人类的学习机制 “如果好吃你就多吃点”: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):=argamax​s′∑​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​