• [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

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

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

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

    状态更新次数
    C2
    E2
    B2

    二 基于转移的策略评估

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

          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的更新影响更大.

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

         采用滑动平均的方案

     采样:

             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 总结

         

        3.3 算法

     


    四 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 

  • 相关阅读:
    CorelDRAW2023最新版矢量设计软件
    向毕业妥协系列之机器学习笔记:监督学习-回归与分类(一)
    php &&和and的区别
    elastic,为什么from,size要限制10000
    java图片转pdf ,pdf 导出
    华为机试 - 数字字符串组合倒序
    合作QA是大聪明?撸个接口校验工具保命(5)
    基于微调技术打造自己的私有LLM大模型
    A3纸内容分2页打在A4纸上
    Springboot整合jdbc和Mybatis
  • 原文地址:https://blog.csdn.net/chengxf2/article/details/134435039