PPT 截取有用信息。 课程网站做习题。总体 MOOC 过一遍
- 1、学堂在线 视频 + 习题
 - 2、相应章节 过电子书 复习 【下载: 本章 PDF GitHub 页面链接】
 - 3、 MOOC 习题
 - 跳过的 PDF 内容
 
学堂在线 课程页面链接
 中国大学MOOC 课程页面链接
 B 站 视频链接
PPT和书籍下载网址: 【GitHub链接】
文章目录
- 8.1 值表示: 表格 ——> 函数
 - 8.2 状态值 估计
 - 8.4 Deep Q-leaning 【DQN】
 

第 7 章: 基于表格的 TD 学习算法
 本章: 基于函数的 TD 学习算法
神经网络
DQN

8.1 值表示: 表格 ——> 函数

表格:直接重写表中相应的条目
 函数:通过更新  
     
      
       
       
         w 
        
       
      
        w 
       
      
    w 间接地更改值
优点: 直观,便于分析。
 缺点: 难以处理 大的 或 连续的 状态或动作
 两个方面:1) 存储; 2) 泛化能力。
有很多的 状态-动作 对, 不可能都访问到。
曲线近似, 节省存储空间。
- 无法精确表示 状态值。
 
函数近似法通过牺牲精度来提高存储效率。
idea: 使用参数化函数 v ^ ( s , w ) ≈ v π ( s ) \hat v(s, w)\approx v_\pi(s) v^(s,w)≈vπ(s) 近似 状态和动作值,其中 w ∈ R m w \in \mathbb R^m w∈Rm 是参数向量。
优点:
 1) 存储  
     
      
       
       
         w 
        
       
      
        w 
       
      
    w 的维数可能比  
     
      
       
       
         ∣ 
        
       
         S 
        
       
         ∣ 
        
       
      
        |\mathcal S| 
       
      
    ∣S∣小得多。
 2) 泛化:
 当一个状态  
     
      
       
       
         s 
        
       
      
        s 
       
      
    s 被访问时,参数  
     
      
       
       
         w 
        
       
      
        w 
       
      
    w 被更新,这样其他一些未访问状态的值也可以被更新。通过这种方式,学习值 可以推广到 未访问状态。
8.2 状态值 估计
P2
真实状态值 v π ( s ) v_\pi(s)~~~ vπ(s) 估计值 v ^ ( s , w ) \hat v(s, w) v^(s,w)
为了找到最优的  
     
      
       
       
         w 
        
       
      
        w 
       
      
    w,我们需要两个步骤:
 1、定义一个目标函数。
 2、推导 优化目标函数 的算法。
目标函数: J ( w ) = E [ ( v π ( S ) − v ^ ( S , w ) ) 2 ] J(w) =\mathbb E[(v_\pi(S)-\hat v(S, w))^2] J(w)=E[(vπ(S)−v^(S,w))2]
误差 的平方。
——————
 期望是 关于 随机变量  
     
      
       
       
         S 
        
       
         ∈ 
        
       
         S 
        
       
      
        S\in \mathcal S 
       
      
    S∈S 的, 那么  
     
      
       
       
         S 
        
       
      
        S 
       
      
    S 的概率分布是什么?
平均分布。 每个 状态的 权重都是 1 ∣ S ∣ \frac{1}{|\mathcal S|} ∣S∣1
J ( w ) = E [ ( v π ( S ) − v ^ ( S , w ) ) 2 ] = 1 ∣ S ∣ ∑ s ∈ S ( v π ( s ) − v ^ ( s , w ) ) 2 J(w) =\mathbb E[(v_\pi(S)-\hat v(S, w))^2]=\frac{1}{|\mathcal S|}\sum\limits_{s\in\mathcal S}(v_\pi(s)-\hat v(s, w))^2 J(w)=E[(vπ(S)−v^(S,w))2]=∣S∣1s∈S∑(vπ(s)−v^(s,w))2
给重要的状态 更大的权重。
平稳分布:稳态分布, 极限分布
马尔可夫过程 的长期行为
在代理执行给定策略足够长的时间后,代理处于任何状态的概率可以用这个平稳分布来描述。
基于策略 π \pi π 的马尔可夫过程 的平稳分布: { d π ( s ) } s ∈ S \{d_\pi(s)\}_{s\in\mathcal S} {dπ(s)}s∈S
d π ( s ) ≥ 0 d_\pi(s) \geq 0 dπ(s)≥0 且 ∑ s ∈ S d π ( s ) = 1 \sum\limits_{s\in\mathcal S}d_\pi(s) =1 s∈S∑dπ(s)=1
J ( w ) = E [ ( v π ( S ) − v ^ ( S , w ) ) 2 ] = ∑ s ∈ S d π ( s ) ( v π ( s ) − v ^ ( s , w ) ) 2 J(w) =\mathbb E[(v_\pi(S)-\hat v(S, w))^2]=\sum\limits_{s\in\mathcal S}\textcolor{blue}{d_\pi(s)}(v_\pi(s)-\hat v(s, w))^2 J(w)=E[(vπ(S)−v^(S,w))2]=s∈S∑dπ(s)(vπ(s)−v^(s,w))2
这个函数是加权平方误差。
 由于访问频率越高的状态具有更高的  
     
      
       
        
        
          d 
         
        
          π 
         
        
       
         ( 
        
       
         s 
        
       
         ) 
        
       
      
        d_\pi(s) 
       
      
    dπ(s) 值,因此它们在目标函数中的权重也高于 访问频率越低 的状态。


——————
 优化目标函数
最小化 梯度下降

 用 随机梯度 替换 真实梯度, 避免 计算期望。
w t + 1 = w t + α t ( v π ( s t ) − v ^ ( s t , w t ) ) ∇ w v ^ ( s t , w t ) w_{t+1}=w_t+\alpha_t(v_\pi(s_t)-\hat v(s_t,w_t))\nabla _w\hat v(s_t, w_t) wt+1=wt+αt(vπ(st)−v^(st,wt))∇wv^(st,wt)
问题:  
     
      
       
        
        
          v 
         
        
          π 
         
        
       
      
        v_\pi 
       
      
    vπ 未知。——> 用 近似值 替换
 方式一:基于 MC 学习。 用 episode 中从  
     
      
       
        
        
          s 
         
        
          t 
         
        
       
      
        s_t 
       
      
    st 开始的 折扣回报  
     
      
       
        
        
          g 
         
        
          t 
         
        
       
      
        g_t 
       
      
    gt 替换  
     
      
       
        
        
          v 
         
        
          π 
         
        
       
         ( 
        
        
        
          s 
         
        
          t 
         
        
       
         ) 
        
       
      
        v_\pi(s_t) 
       
      
    vπ(st)。
 即  
     
      
       
        
        
          w 
         
         
         
           t 
          
         
           + 
          
         
           1 
          
         
        
       
         = 
        
        
        
          w 
         
        
          t 
         
        
       
         + 
        
        
        
          α 
         
        
          t 
         
        
       
         ( 
        
        
         
         
           g 
          
         
           t 
          
         
        
       
         − 
        
        
        
          v 
         
        
          ^ 
         
        
       
         ( 
        
        
        
          s 
         
        
          t 
         
        
       
         , 
        
        
        
          w 
         
        
          t 
         
        
       
         ) 
        
       
         ) 
        
        
        
          ∇ 
         
        
          w 
         
        
        
        
          v 
         
        
          ^ 
         
        
       
         ( 
        
        
        
          s 
         
        
          t 
         
        
       
         , 
        
        
        
          w 
         
        
          t 
         
        
       
         ) 
        
       
      
        w_{t+1}=w_t+\alpha_t(\textcolor{blue}{g_t}-\hat v(s_t,w_t))\nabla _w\hat v(s_t, w_t) 
       
      
    wt+1=wt+αt(gt−v^(st,wt))∇wv^(st,wt)
 方式二: 基于 TD 学习。
  
     
      
       
        
        
          v 
         
        
          π 
         
        
       
         ( 
        
        
        
          s 
         
        
          t 
         
        
       
         ) 
        
       
      
        v_\pi(s_t) 
       
      
    vπ(st)。
 即  
     
      
       
        
        
          w 
         
         
         
           t 
          
         
           + 
          
         
           1 
          
         
        
       
         = 
        
        
        
          w 
         
        
          t 
         
        
       
         + 
        
        
        
          α 
         
        
          t 
         
        
       
         [ 
        
        
         
         
           r 
          
          
          
            t 
           
          
            + 
           
          
            1 
           
          
         
        
          + 
         
        
          γ 
         
         
         
           v 
          
         
           ^ 
          
         
        
          ( 
         
         
         
           s 
          
          
          
            t 
           
          
            + 
           
          
            1 
           
          
         
        
          , 
         
         
         
           w 
          
         
           t 
          
         
        
          ) 
         
        
       
         − 
        
        
        
          v 
         
        
          ^ 
         
        
       
         ( 
        
        
        
          s 
         
        
          t 
         
        
       
         , 
        
        
        
          w 
         
        
          t 
         
        
       
         ) 
        
       
         ] 
        
        
        
          ∇ 
         
        
          w 
         
        
        
        
          v 
         
        
          ^ 
         
        
       
         ( 
        
        
        
          s 
         
        
          t 
         
        
       
         , 
        
        
        
          w 
         
        
          t 
         
        
       
         ) 
        
       
      
        w_{t+1}=w_t+\alpha_t[\textcolor{blue}{r_{t+1}+\gamma \hat v(s_{t+1},w_t)}-\hat v(s_t,w_t)]\nabla _w\hat v(s_t, w_t) 
       
      
    wt+1=wt+αt[rt+1+γv^(st+1,wt)−v^(st,wt)]∇wv^(st,wt)

——————
 如何选择  
     
      
       
        
        
          v 
         
        
          ^ 
         
        
       
         ( 
        
       
         s 
        
       
         , 
        
       
         w 
        
       
         ) 
        
       
      
        \hat v(s,w) 
       
      
    v^(s,w) ?
方式一: 线性近似。 v ^ ( s , w ) = ϕ T ( s ) w \hat v(s, w)=\phi^T(s)w v^(s,w)=ϕT(s)w
- 特征向量 ϕ ( s ) \phi(s) ϕ(s)。 系数
 
方式二: 非线性 近似。 神经网络。
- 神经网络的输入为 状态, 输出为 v ^ ( s , w ) \hat v(s, w) v^(s,w), 网络参数为 w w w。
 

线性近似的优缺点:
 缺点:难以选择合适的特征向量。
 优点:易于理解。
表格表示 是 线性函数近似 的 特例。
考虑 状态 s s s 的特征向量的特殊情况。
ϕ ( s ) = e s ∈ R ∣ S ∣ \phi(s)=e_s\in\mathbb R^{|\mathcal S|} ϕ(s)=es∈R∣S∣
e s e_s es: 第 s s sth 个数为 1 , 其它为 0 的向量。
v ^ ( s , w ) = ϕ T ( s ) w = e s T w = w ( s ) \hat v(s, w)=\phi^T(s)w=e^T_sw=w(s) v^(s,w)=ϕT(s)w=esTw=w(s)
w ( s ) w(s) w(s): w w w 的 第 s s sth 个数

——————
 例子:
 
 
 
 
 
——————
TD-Linear 算法最小化的是 投影 贝尔曼误差。

P3 Sarsa + 值函数近似
w t + 1 = w t + α t [ r t + 1 + γ q ^ ( s t + 1 , a t + 1 , w t ) − q ^ ( s t , a t , w t ) ] ∇ w q ^ ( s t , a t , w t ) w_{t+1}=w_t+\alpha_t[r_{t+1}+\gamma\hat q(s_{t+1}, a_{t+1}, w_t)-\hat q(s_t,a_t,w_t)] \nabla_w\hat q(s_t, a_t, w_t) wt+1=wt+αt[rt+1+γq^(st+1,at+1,wt)−q^(st,at,wt)]∇wq^(st,at,wt)

Q 学习 + 函数近似
w t + 1 = w t + α t [ r t + 1 + γ max  a ∈ A ( s t + 1 ) q ^ ( s t + 1 , a , w t ) − q ^ ( s t , a t , w t ) ] ∇ w q ^ ( s t , a t , w t ) w_{t+1}=w_t+\alpha_t[r_{t+1}+\gamma \textcolor{blue}{\max\limits_{a\in\mathcal A(s_{t+1})}}\hat q(s_{t+1},\textcolor{blue}{a} , w_t)-\hat q(s_t,a_t,w_t)] \nabla_w\hat q(s_t, a_t, w_t) wt+1=wt+αt[rt+1+γa∈A(st+1)maxq^(st+1,a,wt)−q^(st,at,wt)]∇wq^(st,at,wt)

8.4 Deep Q-leaning 【DQN】
Deep Q-learning、deep Q-network (DQN)
最成功地将 深度神经网络 引入强化学习的算法之一。
应用 和 方法
 应用: 在一系列游戏控制上 达到人类控制的水平。
 方法: 关键技术 后续被广泛使用。

目标函数:
 
 优化:
 
我们可以在计算梯度时假设 y y y 中的 w w w 是固定的(至少在一段时间内是固定的)。

 使用两个网络, 分别 估计  
     
      
       
       
         w 
        
       
      
        w 
       
      
    w
 主网络的  
     
      
       
       
         w 
        
       
      
        w 
       
      
    w: 一直更新
 目标网络的  
     
      
       
        
        
          w 
         
        
          T 
         
        
       
      
        w_T 
       
      
    wT: 隔一段时间 更新

DQN 的基本思想是使用梯度下降算法最小化目标函数。
2 个重要技巧:
1、两个网络:一个主网络和一个目标网络。
 实现细节:
 令  
     
      
       
       
         w 
        
       
      
        w 
       
      
    w 和  
     
      
       
        
        
          w 
         
        
          T 
         
        
       
      
        w_T 
       
      
    wT 分别表示主网络和目标网络的参数。它们最初被设置为相同的。
 在每次迭代中,我们从重放缓冲区中提取一小批样本  
     
      
       
       
         { 
        
       
         ( 
        
       
         s 
        
       
         , 
        
       
         a 
        
       
         , 
        
       
         r 
        
       
         , 
        
        
        
          s 
         
        
          ′ 
         
        
       
         ) 
        
       
         } 
        
       
      
        \{(s, a, r, s')\} 
       
      
    {(s,a,r,s′)}。
 网络的输入包括状态  
     
      
       
       
         s 
        
       
      
        s 
       
      
    s 和动作  
     
      
       
       
         a 
        
       
      
        a 
       
      
    a,目标输出为  
     
      
       
        
        
          y 
         
        
          T 
         
        
       
         = 
        
       
         r 
        
       
         + 
        
       
         γ 
        
        
         
         
           max 
          
         
            
          
         
         
         
           a 
          
         
           ∈ 
          
          
          
            A 
           
          
            ( 
           
           
           
             s 
            
           
             ′ 
            
           
          
            ) 
           
          
         
        
        
        
          q 
         
        
          ^ 
         
        
       
         ( 
        
        
        
          s 
         
        
          ′ 
         
        
       
         , 
        
       
         a 
        
       
         , 
        
        
        
          w 
         
        
          T 
         
        
       
         ) 
        
       
      
        y_T =r+ \gamma \max\limits_{a\in \cal A(s') }\hat q(s',a,w_T) 
       
      
    yT=r+γa∈A(s′)maxq^(s′,a,wT)。然后,我们直接最小化 小批次  
     
      
       
       
         { 
        
       
         ( 
        
       
         s 
        
       
         , 
        
       
         a 
        
       
         , 
        
        
        
          y 
         
        
          T 
         
        
       
         ) 
        
       
         } 
        
       
      
        \{(s, a,y_T)\} 
       
      
    {(s,a,yT)} 上的 TD 误差或称为损失函数  
     
      
       
       
         ( 
        
        
        
          y 
         
        
          T 
         
        
       
         − 
        
        
        
          q 
         
        
          ^ 
         
        
       
         ( 
        
       
         s 
        
       
         , 
        
       
         a 
        
       
         , 
        
       
         w 
        
       
         ) 
        
        
        
          ) 
         
        
          2 
         
        
       
      
        (y_T - \hat q(s, a, w))^2 
       
      
    (yT−q^(s,a,w))2。
2、经验回放
replay buffer 回放缓冲 B = { ( s , a , r , s ′ ) } \mathcal B=\{(s, a, r, s^\prime)\} B={(s,a,r,s′)}
每次我们训练神经网络时,我们都可以从回放缓冲区中抽取一小批随机样本。
均匀分布 经验回放。
为什么 DQN 需要经验回放?为什么重播必须遵循均匀分布?

 然而,样本并不是统一收集的,因为它们是由某些策略生成的。
 为了打破后续样本之间的相关性,我们可以使用经验重放技术,从重放缓冲区中均匀地提取样本。
更充分地使用数据

 
再强大的算法 也需要 好的数据 才能 work。
8.6
目标函数 涉及到 状态的概率分布, 该分布通常选为 平稳分布。
为什么深度 Q-learning 需要经验回放?
 原因在于 (8.37) 中的目标函数。特别是,为了很好地定义目标函数,我们必须指定  
     
      
       
       
         S 
        
       
         , 
        
       
         A 
        
       
         , 
        
       
         R 
        
       
         , 
        
        
        
          S 
         
        
          ′ 
         
        
       
      
        S, A, R, S' 
       
      
    S,A,R,S′ 的概率分布。
 当  
     
      
       
       
         ( 
        
       
         S 
        
       
         , 
        
       
         A 
        
       
         ) 
        
       
      
        (S, A) 
       
      
    (S,A) 给定时,由系统模型确定  
     
      
       
       
         R 
        
       
      
        R 
       
      
    R 和  
     
      
       
        
        
          S 
         
        
          ′ 
         
        
       
      
        S' 
       
      
    S′ 的分布。
 描述 状态-行为对  
     
      
       
       
         ( 
        
       
         S 
        
       
         , 
        
       
         A 
        
       
         ) 
        
       
      
        (S, A) 
       
      
    (S,A) 分布的最简单方法是假设它是均匀分布的。然而,状态-动作样本在实践中可能不是均匀分布的,因为它们是由行为策略作为一个序列生成的。为了满足均匀分布的假设,有必要打破序列中样本之间的相关性。为此,我们可以使用经验重放技术,从重放缓冲区中均匀地抽取样本。经验回放的一个好处是,每个经验样本可以被多次使用,这可以提高数据效率。
 
——————
 习题笔记
表格表示 可以看作是 函数表示 的特例
难以直接计算目标函数的梯度:先固定目标函数中的一部分,这样求解梯度更容易。




















