强化学习9——免模型预测算法介绍(蒙特卡洛方法和时步差分方法)
对于大部分情况来说,环境是未知的,也就是说状态转移概率未知,对于这种情况的算法称为免模型预测算法。免模型算法与环境不断交互学习,但是需要大量的运算。
蒙特卡洛方法
蒙特卡罗方法通过重复随机抽选,之后运用统计概率此方法来从抽样结果中归纳我们想要得到的数值估计。如下图所示,圆面积与正方形面积的比等于落入圆内的点与落入正方形的内的点的比

一个状态的价值是它的期望回报,可以采样多条序列,计算从这个状态出发的回报,再求期望,如下式所示:
  
      
       
        
         
         
           V 
          
         
           π 
          
         
        
          ( 
         
        
          s 
         
        
          ) 
         
        
          = 
         
         
         
           E 
          
         
           π 
          
         
        
          [ 
         
         
         
           G 
          
         
           t 
          
         
        
          ∣ 
         
         
         
           S 
          
         
           t 
          
         
        
          = 
         
        
          s 
         
        
          ] 
         
        
          ≈ 
         
         
         
           1 
          
         
           N 
          
         
         
         
           ∑ 
          
          
          
            i 
           
          
            = 
           
          
            1 
           
          
         
           N 
          
         
         
         
           G 
          
         
           t 
          
          
          
            ( 
           
          
            i 
           
          
            ) 
           
          
         
        
       
         V^\pi(s)=\mathbb{E}_\pi[G_t|S_t=s]\approx\frac{1}{N}\sum_{i=1}^NG_t^{(i)} 
        
       
     Vπ(s)=Eπ?[Gt?∣St?=s]≈N1?i=1∑N?Gt(i)?
 在采样得到的某一序列中,可能没有我们想要计算的状态,也可能出现一次这个状态,当然也可能出现多次这个状态。我们介绍的蒙特卡洛价值估计方法在该状态每一次出现时计算他的回报,如以下流程所示:
- 先通过策略采用若干条序列
- 在对每一条序列中的每一个状态s进行以下操作 
  - 更新状态s的计数器 N ( s ) ← N ( s ) + 1 N(s)\gets N(s)+1 N(s)←N(s)+1
- 更新状态s的总回报 M ( s ) ← M ( a ) + G t M(s)\gets M(a)+G_t M(s)←M(a)+Gt?
 
- 每一个状态的价值被估计为回报的平均值 V ( s ) = M ( s ) / N ( s ) V(s)=M(s)/N(s) V(s)=M(s)/N(s)
根据大数定律,当 N ( s ) → ∞ N(s)\to \infty N(s)→∞ ,有 V ( s ) → ∞ V(s)\to \infty V(s)→∞,计算回报的期望时,可以采用增量更新的方式:
- N ( s ) ← N ( s ) + 1 N(s)\gets N(s)+1 N(s)←N(s)+1
- V ( s ) ← V ( s ) + 1 N ( s ) ( G ? V ( s ) ) V(s)\gets V(s)+\frac{1}{N(s)}(G-V(s)) V(s)←V(s)+N(s)1?(G?V(s))
这种方式的原理在多臂老虎机中推导过:
  
      
       
        
         
          
           
            
            
              Q 
             
            
              k 
             
            
           
          
          
           
            
             
            
              = 
             
             
             
               1 
              
             
               k 
              
             
             
             
               ∑ 
              
              
              
                i 
               
              
                = 
               
              
                1 
               
              
             
               k 
              
             
             
             
               r 
              
             
               i 
              
             
            
           
          
         
         
          
           
            
           
          
          
           
            
             
            
              = 
             
             
             
               1 
              
             
               k 
              
             
             
             
               ( 
              
              
              
                r 
               
              
                k 
               
              
             
               + 
              
              
              
                ∑ 
               
               
               
                 i 
                
               
                 = 
                
               
                 1 
                
               
               
               
                 k 
                
               
                 ? 
                
               
                 1 
                
               
              
              
              
                r 
               
              
                i 
               
              
             
               ) 
              
             
            
           
          
         
         
          
           
            
           
          
          
           
            
             
            
              = 
             
             
             
               1 
              
             
               k 
              
             
            
              ( 
             
             
             
               r 
              
             
               k 
              
             
            
              + 
             
            
              ( 
             
            
              k 
             
            
              ? 
             
            
              1 
             
            
              ) 
             
             
             
               Q 
              
              
              
                k 
               
              
                ? 
               
              
                1 
               
              
             
            
              ) 
             
            
           
          
         
         
          
           
            
           
          
          
           
            
             
            
              = 
             
             
             
               1 
              
             
               k 
              
             
            
              ( 
             
             
             
               r 
              
             
               k 
              
             
            
              + 
             
            
              k 
             
             
             
               Q 
              
              
              
                k 
               
              
                ? 
               
              
                1 
               
              
             
            
              ? 
             
             
             
               Q 
              
              
              
                k 
               
              
                ? 
               
              
                1 
               
              
             
            
              ) 
             
            
           
          
         
         
          
           
            
           
          
          
           
            
             
            
              = 
             
             
             
               Q 
              
              
              
                k 
               
              
                ? 
               
              
                1 
               
              
             
            
              + 
             
             
             
               1 
              
             
               k 
              
             
            
              [ 
             
             
             
               r 
              
             
               k 
              
             
            
              ? 
             
             
             
               Q 
              
              
              
                k 
               
              
                ? 
               
              
                1 
               
              
             
            
              ] 
             
            
           
          
         
        
       
         \begin{aligned} Q_{k}& =\frac1k\sum_{i=1}^kr_i \\ &=\frac{1}{k}\left(r_k+\sum_{i=1}^{k-1}r_i\right) \\ &=\frac1k(r_k+(k-1)Q_{k-1}) \\ &=\frac1k(r_k+kQ_{k-1}-Q_{k-1}) \\ &=Q_{k-1}+\frac1k[r_k-Q_{k-1}] \end{aligned} 
        
       
     Qk??=k1?i=1∑k?ri?=k1?(rk?+i=1∑k?1?ri?)=k1?(rk?+(k?1)Qk?1?)=k1?(rk?+kQk?1??Qk?1?)=Qk?1?+k1?[rk??Qk?1?]?
在使用时,一般不严格按照期望的方法计算,而是将 
     
      
       
        
        
          1 
         
         
         
           N 
          
         
           ( 
          
         
           s 
          
         
           ) 
          
         
        
       
         → 
        
       
         α 
        
       
      
        \frac{1}{N(s)} \to \alpha 
       
      
    N(s)1?→α ,即转化为一个常数:
  
      
       
        
        
          V 
         
        
          ( 
         
         
         
           s 
          
         
           t 
          
         
        
          ) 
         
        
          ← 
         
        
          V 
         
        
          ( 
         
         
         
           s 
          
         
           t 
          
         
        
          ) 
         
        
          + 
         
        
          α 
         
        
          [ 
         
         
         
           G 
          
         
           t 
          
         
        
          ? 
         
        
          V 
         
        
          ( 
         
         
         
           s 
          
         
           t 
          
         
        
          ) 
         
        
          ] 
         
        
       
         V(s_t)\leftarrow V(s_t)+\alpha[G_t-V(s_t)] 
        
       
     V(st?)←V(st?)+α[Gt??V(st?)]
 即:
  
      
       
        
        
          新的估计值 
         
        
          ← 
         
        
          旧的估计值 
         
        
          + 
         
        
          步长? 
         
        
          ? 
         
        
          ( 
         
        
          目标值 
         
        
          ? 
         
        
          旧的估计值 
         
        
          ) 
         
        
       
         \text{新的估计值} \gets 旧的估计值+步长 \ *(目标值-旧的估计值) 
        
       
     新的估计值←旧的估计值+步长??(目标值?旧的估计值)
 通过添加学习率的方式,可以避免因为个别不好的样本而导致更新的急剧变化,从而导致学习得不稳定。
时序差分方法
在时序差分算法时,使用当前获得的奖励和下一个状态的价值估计来作为当前状态会获得回报:
  
      
       
        
        
          V 
         
        
          ( 
         
         
         
           s 
          
         
           t 
          
         
        
          ) 
         
        
          ← 
         
        
          V 
         
        
          ( 
         
         
         
           s 
          
         
           t 
          
         
        
          ) 
         
        
          + 
         
        
          α 
         
        
          [ 
         
         
         
           r 
          
         
           t 
          
         
        
          + 
         
        
          γ 
         
        
          V 
         
        
          ( 
         
         
         
           s 
          
          
          
            t 
           
          
            + 
           
          
            1 
           
          
         
        
          ) 
         
        
          ? 
         
        
          V 
         
        
          ( 
         
         
         
           s 
          
         
           t 
          
         
        
          ) 
         
        
          ] 
         
        
       
         V(s_t)\leftarrow V(s_t)+\alpha[r_t+\gamma V(s_{t+1})-V(s_t)] 
        
       
     V(st?)←V(st?)+α[rt?+γV(st+1?)?V(st?)]
 时序差分算法将时序差分误差 
     
      
       
        
        
          r 
         
        
          t 
         
        
       
         + 
        
       
         γ 
        
       
         V 
        
       
         ( 
        
        
        
          s 
         
         
         
           t 
          
         
           + 
          
         
           1 
          
         
        
       
         ) 
        
       
         ? 
        
       
         V 
        
       
         ( 
        
        
        
          s 
         
        
          t 
         
        
       
         ) 
        
       
      
        r_t+\gamma V(s_{t+1})-V(s_t) 
       
      
    rt?+γV(st+1?)?V(st?) 与步长的乘积作为状态价值的更新量。
  
      
       
        
         
          
           
            
             
             
               V 
              
             
               π 
              
             
            
              ( 
             
            
              s 
             
            
              ) 
             
            
           
          
          
           
            
             
            
              = 
             
             
             
               E 
              
             
               π 
              
             
            
              [ 
             
             
             
               G 
              
             
               t 
              
             
            
              ∣ 
             
             
             
               S 
              
             
               t 
              
             
            
              = 
             
            
              s 
             
            
              ] 
             
            
           
          
         
         
          
           
            
           
          
          
           
            
             
            
              = 
             
             
             
               E 
              
             
               π 
              
             
            
              [ 
             
             
             
               ∑ 
              
              
              
                k 
               
              
                = 
               
              
                0 
               
              
             
               ∞ 
              
             
             
             
               γ 
              
             
               k 
              
             
             
             
               R 
              
              
              
                t 
               
              
                + 
               
              
                k 
               
              
             
            
              ∣ 
             
             
             
               S 
              
             
               t 
              
             
            
              = 
             
            
              s 
             
            
              ] 
             
            
           
          
         
         
          
           
            
           
          
          
           
            
             
            
              = 
             
             
             
               E 
              
             
               π 
              
             
            
              [ 
             
             
             
               R 
              
             
               t 
              
             
            
              + 
             
            
              γ 
             
             
             
               ∑ 
              
              
              
                k 
               
              
                = 
               
              
                0 
               
              
             
               ∞ 
              
             
             
             
               γ 
              
             
               k 
              
             
             
             
               R 
              
              
              
                t 
               
              
                + 
               
              
                k 
               
              
                + 
               
              
                1 
               
              
             
            
              ∣ 
             
             
             
               S 
              
             
               t 
              
             
            
              = 
             
            
              s 
             
            
              ] 
             
            
           
          
         
         
          
           
            
           
          
          
           
            
             
            
              = 
             
             
             
               E 
              
             
               π 
              
             
            
              [ 
             
             
             
               R 
              
             
               t 
              
             
            
              + 
             
            
              γ 
             
             
             
               V 
              
             
               π 
              
             
            
              ( 
             
             
             
               S 
              
              
              
                t 
               
              
                + 
               
              
                1 
               
              
             
            
              ) 
             
            
              ∣ 
             
             
             
               S 
              
             
               t 
              
             
            
              = 
             
            
              s 
             
            
              ] 
             
            
           
          
         
        
       
         \begin{aligned} V_{\pi}(s)& =\mathbb{E}_\pi[G_t|S_t=s] \\ &=\mathbb{E}_\pi[\sum_{k=0}^\infty\gamma^kR_{t+k}|S_t=s] \\ &=\mathbb{E}_\pi[R_t+\gamma\sum_{k=0}^\infty\gamma^kR_{t+k+1}|S_t=s] \\ &=\mathbb{E}_\pi[R_t+\gamma V_\pi(S_{t+1})|S_t=s] \end{aligned} 
        
       
     Vπ?(s)?=Eπ?[Gt?∣St?=s]=Eπ?[k=0∑∞?γkRt+k?∣St?=s]=Eπ?[Rt?+γk=0∑∞?γkRt+k+1?∣St?=s]=Eπ?[Rt?+γVπ?(St+1?)∣St?=s]?
 蒙特卡洛以第一步为更新目标,计算所有状态后得到回报,时序差分算法以上式最后一行作为更新目标,在用策略和环境交互时,每采样一步,我们就可以用时序差分算法来更新状态价值估计。
n步时序差分
可以将一步调整为两步,利用两步得到回报来更新状态的价值,调整n步就是n步时序差分。
  
      
       
        
         
          
           
            
           
          
          
           
            
             
            
              n 
             
            
              = 
             
            
              1 
             
            
              ( 
             
             
             
               T 
              
             
               D 
              
             
            
              ) 
             
             
             
             
               G 
              
             
               t 
              
              
              
                ( 
               
              
                1 
               
              
                ) 
               
              
             
            
              = 
             
             
             
               r 
              
              
              
                t 
               
              
                + 
               
              
                1 
               
              
             
            
              + 
             
            
              γ 
             
            
              V 
             
             
             
               ( 
              
              
              
                s 
               
               
               
                 t 
                
               
                 + 
                
               
                 1 
                
               
              
             
               ) 
              
             
            
           
          
         
         
          
           
            
           
          
          
           
            
             
            
              n 
             
            
              = 
             
            
              2 
             
             
             
             
               G 
              
             
               t 
              
              
              
                ( 
               
              
                2 
               
              
                ) 
               
              
             
            
              = 
             
             
             
               r 
              
              
              
                t 
               
              
                + 
               
              
                1 
               
              
             
            
              + 
             
            
              γ 
             
             
             
               r 
              
              
              
                t 
               
              
                + 
               
              
                2 
               
              
             
            
              + 
             
             
             
               γ 
              
             
               2 
              
             
            
              V 
             
             
             
               ( 
              
              
              
                s 
               
               
               
                 t 
                
               
                 + 
                
               
                 2 
                
               
              
             
               ) 
              
             
            
           
          
         
         
          
           
            
           
          
          
           
            
             
            
              n 
             
            
              = 
             
            
              ∞ 
             
            
              ( 
             
             
             
               M 
              
             
               C 
              
             
            
              ) 
             
             
             
             
               G 
              
             
               t 
              
             
               ∞ 
              
             
            
              = 
             
             
             
               r 
              
              
              
                t 
               
              
                + 
               
              
                1 
               
              
             
            
              + 
             
            
              γ 
             
             
             
               r 
              
              
              
                t 
               
              
                + 
               
              
                2 
               
              
             
            
              + 
             
            
              ? 
             
            
              + 
             
             
             
               γ 
              
              
              
                T 
               
              
                ? 
               
              
                t 
               
              
                ? 
               
              
                1 
               
              
             
             
             
               r 
              
             
               T 
              
             
            
           
          
         
        
       
         \begin{aligned} &n=1(\mathrm{TD})\quad G_t^{(1)}=r_{t+1}+\gamma V\left(s_{t+1}\right) \\ &n=2\quad G_t^{(2)}=r_{t+1}+\gamma r_{t+2}+\gamma^2V\left(s_{t+2}\right) \\ &n=\infty(\mathrm{MC})\quad G_t^\infty=r_{t+1}+\gamma r_{t+2}+\cdots+\gamma^{T-t-1}r_T \end{aligned} 
        
       
     ?n=1(TD)Gt(1)?=rt+1?+γV(st+1?)n=2Gt(2)?=rt+1?+γrt+2?+γ2V(st+2?)n=∞(MC)Gt∞?=rt+1?+γrt+2?+?+γT?t?1rT??
 当n趋近于无穷大时,我们会发现所用到的就是蒙特卡洛方法了。
我们一般用 λ \lambda λ 表示n,有一些方法可以筛选出合适的 λ \lambda λ :
- 网格搜索(Grid Search):给定一组值,依次遍历取最佳
- 随即搜索:随机选择值,在验证集上评估每个值对应的算法性能
时序差分和蒙特卡洛的比较
蒙特卡洛是取N个序列进行运算,得到价值;时序差分通过每一步的更新使用下一个状态的估计值 V ( s t + 1 ) V(s_{t+1}) V(st+1?)得到价值的预估值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!