[PyTorch][chapter 63][强化学习-时序差分学习]

目录:

  1.    蒙特卡罗强化学习的问题
  2.    基于转移的策略评估
  3.    时序差分评估
  4.     Sarsa-算法
  5.     Q-学习算法

一  蒙特卡罗强化学习的的问题

     有模型学习: Bellman 等式 

      V_{T}^{\pi}(s)= \sum_{a \in A} \pi (s,a) \sum_{s^{'} \in S}P_{s \to s^{'} }^{a}(R_{s \to s^{'}}^a+\gamma V_{\gamma}^{\pi}(s^{'}))

     免模型学习: 蒙特卡罗强化学习

   迭代:

       使用策略 \pi 生成一个轨迹,\begin{Bmatrix} s_0,a_0,r_1,s_1,a_1,r_2,...a_{T-1},r_T,s_T \end{Bmatrix}

       for t = 0,1,...T-1 do #完成多次采样的动作

               R=\frac{1}{T-t}\sum_{i=t+1}^{T}r_i : 累积奖赏

               Q(s_t,a_t)=\frac{Q(s_t,a_t)*count(s_t,a_t)+R}{count(s_t,a_t)+1}求平均累积奖赏作为期望累积奖赏(有模型学习)的近似

              count(s_t,a_t)=count(s_t,a_t)+1

       

     1.1 优点:
            便于理解
            样本数足够时可以保证收敛性
   
       2.2  缺点
            状态值的学习互相独立
            没有充分状态之间的联系

   例4次采样:

   B 和 E 状态同样转移到C 状态,但是最后的平均累积奖赏却相差很大

   V(E)=(4-98)/2=-47

   V(B)=(4+4)/2=4

[PyTorch][chapter 63][强化学习-时序差分学习]_第1张图片

小样本对强化学习最终的结果影响特别大,B和E 都转移到C状态

能否用C 来辅助估计B和E, 这也是有模型学习里面的状态转移概率的思想 P_{s \to s^{'}}^{a} 

 如下C 出现的次数最多(大数定理),能否用出现次数多的来辅助估计出现次数少的

状态 更新次数
C 2
E 2
B 2

二 基于转移的策略评估

     通过策略评估提升我们对策略的评估

      v^{\pi}(s)= R(s,a)+\gamma \sum_{s^{'}}p(s^{'}|s,a)v^{\pi}(s^{'})(bellman 公式: 即时奖励+转移概率*下一刻状态的累积奖赏)

    思路: 采样所有到达s^{'}的转移做平均

    假设采样转移为

   sample1: (s,a,r_1,s_1^{'})

  sample2: (s,a,r_2,s_2^{'})

   sample3: (s,a,r_3,s_3^{'})

   则:

   sample1: =r_1+\gamma V^{\pi}(s_1^{'})

   sample2: =r_2+\gamma V^{\pi}(s_2^{'})

   sample3: =r_3+\gamma V^{\pi}(s_3^{'})

   v^{\pi}(s)=\frac{1}{N}(\sum_{i=1} sample_{i})  跟bellman 很相似,少了转移概率,但是思想一样

如果 s 更高的转移到某个状态,该状态会更高的出现在样本库里面

  


三 时序差分评估TD

    3.1 原理

     当我们经历一个从状态s 出发的转移样本的四元组(s,a,s',r) ,更新v^{\pi}(s)
转移概率更大的状态s' 的值对s的更新影响更大.

     时序差分评估: 将状态值朝着后续出现的状态值靠近

     采用滑动平均的方案

[PyTorch][chapter 63][强化学习-时序差分学习]_第2张图片

 采样:

         v^{\pi}(s):  sample =r_1+\gamma v^{\pi}(s^{'})

 更新:

        v^{\pi}(s)=(1-\alpha)v^{\pi}(s)+\alpha*sample(历史的价值函数+ 当前的价值函数)

                      =v^{\pi}(s)+\alpha(sample-v^{\pi}(s))

  3.2 总结

     [PyTorch][chapter 63][强化学习-时序差分学习]_第3张图片

    3.3 算法

 [PyTorch][chapter 63][强化学习-时序差分学习]_第4张图片


四 Sarsa-算法

  同策略

    4.1 输入:

         环境E

         动作空间A

         起始状态s_0

         奖赏折扣\gamma : 通常为(0.8,1]

         更新步长\alpha: 通常为0.5

     过程:

               Q(s,a)=0,\pi(s,a)=\frac{|}{|A(s)|}

                s=s_0,a=\pi(s)

               for \, \, \, \, t=1,2,...do

                                r,s^{'}= 在E中执行动作a 产生的奖赏与转移的状态

                                得到四元组样本:(s,a,r,s^{'})

                                 a^{'}=\pi^{\epsilon }(s^{'})

                                 Q(s,a)=Q(s,a)+\alpha(r+\gamma Q(s^{'},a{'})-Q(s,a))

                                 \pi(s)= argmax_{a^{

                                  s=s^{'},a=a^{'}

             end \, \, for 


五  Q-学习算法

    异策略(这种更常用)

    4.1 输入:

         环境E

         动作空间A

         起始状态s_0

         奖赏折扣\gamma : 通常为(0.8,1]

         更新步长\alpha: 通常为0.5

     过程:

               Q(s,a)=0,\pi(s,a)=\frac{|}{|A(s)|}

                s=s_0

               for \, \, \, \, t=1,2,...do

                                r,s^{'}= 在E中执行动作a=\pi^{\epsilon }(s)产生的奖赏与转移的状态

                                得到四元组样本:(s,a,r,s^{'})

                                 a^{'}=\pi(s^{'})

                                 Q(s,a)=Q(s,a)+\alpha(r+\gamma Q(s^{'},a{'})-Q(s,a))

                                 \pi(s)= argmax_{a^{

                                  s=s^{'}

             end \, \, for 

你可能感兴趣的:(学习)