zoukankan      html  css  js  c++  java
  • 强化学习-价值迭代

    1. 前言

    策略迭代最后我们发现策略迭代的收敛过程比较慢,那我们就会想有没更好更快的迭代方法,今天我们介绍的价值迭代就是另一种寻找最优策略的解决方案。

    2. 动态规划

    价值迭代需要用到动态规划的思想,那我们简单的回顾下动态规划的特点。

    1. 最优子结构:是指一个子问题的最优解是可以得到的。对应蛇棋的问题,可以理解为是“从某个位置出发行走一步能够获得的最大奖励”的问题,由于只走一步,这个问题很容易计算。

    2. 重复子结构:是指一个更大的问题是由一些小问题组成的,而求解不同的大问题时可能会用上同一个子问题,子问题被重复利用,计算量也就减少了。对应蛇棋的问题,可以理解为是“从某个位置出发行走两步能够获得的最大奖励”的大问题,利用前面已经得到的子问题,这个大问题可以用伪代码表示:

      “某个位置走两步的最大奖励”=max([这一步的奖励+从这个位置出发走一步获得的最大奖励 for 走法 in 可能的走法])

    3. 价值迭代原理

    理解价值迭代原理的思路,可以从策略迭代的缺点出发。

    1. 策略迭代的策略评估需要值函数完全收敛才进行策略提升的步骤,能不能对策略评估的要求放低,这样如果可以实现的话,速度会有所提升。
    2. 我们在策略迭代中关注的是最优的策略,如果说我们找到一种方法,让最优值函数和最优策略同时收敛,那样我们就可以只关注值函数的收敛过程,只要值函数达到最优,那策略也达到最优,值函数没有最优,策略也还没有最优。这样能简化了迭代步骤。

    价值函数就是通过以上2点优化思路开发出来的,具体证明读者可以自己搜索。

    3.1 价值迭代公式

    我们继续先回顾策略迭代的公式

    • 策略评估

    [v^T_{pi}(s_t)=sum_{a_t}pi^{T-1}(a_t|s_t)sum_{s_{t+1}}p(s_{t+1}|s_t,a_t)[r_{a_t}^{s_{t+1}} + gamma * v^{T-1}_{pi}(s_{t+1})];;;;;;(1) ]

    • 策略提升

    [q^T_{pi}(s_t,a_t)=sum_{s_{t+1}}p(s_{t+1}|s_t,a_t)[r_{a_t}^{s_{t+1}} + gamma * v^T_{pi}(s_{t+1})];;;;;;(2) ]

    [pi^{T+1}(s) = argmax_aq^T_{pi}(s,a);;;;;;(3) ]

    通过(2)(3)我们得到

    [pi^{T+1}(s) =argmax_{a} sum_{s_{t+1}}p(s_{t+1}|s_t,a_t)[r_{a_t}^{s_{t+1}} + gamma * v^T_{pi}(s_{t+1})];;;;;;(4) ]

    有因为值函数和策略时同步提升的,这时候(4)就可以替换为

    [v^{T+1}(s) =max_{a} sum_{s_{t+1}}p(s_{t+1}|s_t,a_t)[r_{a_t}^{s_{t+1}} + gamma * v^T_{pi}(s_{t+1})];;;;;;(5) ]

    公式(5)就是我们价值迭代的推导公式。

    价值迭代的大概过程:

    image

    4. 广义策略迭代

    • 策略迭代法的中心是策略函数,它通过反复执行“策略评估+策略提升”两个步骤使策略变得越来越好;
    • 价值迭代法的中心是值函数,它通过利用动态规划的方法迭代更新值函数,并最终求出策略函数。由此可以看出两者有如下特点。
    1. 两个方法最终都求出策略函数和值函数。
    2. 最优的策略函数都是由收敛的值函数得到的。
    3. 值函数通过Bellman公式收敛。

    由此发现一个关键:两者都需要训练和更新策略函数和值函数,只是侧重点不同。策略迭代的核心是策略,为了提升策略,值函数可以求解得准确,也可以求解得不那么准确;价值迭代的核心是价值,算法的核心部分根本没有出现与策略有关的内容,直到算法最后通过值函数求出策略

    两种方法都十分看重自己关心的那部分,可以选择忽略另一部分,因此可以看出两个方法都比较极端。既然找到了两个极端的方法,可不可以找到两种方法的中间地带呢?当然可以,这就是本小节要介绍的广义策略迭代法。

    广义策略迭代法:就是定义一个迭代算法族,其中的算法都是由策略迭代和价值迭代算法组合而成的。组合的方法有很多,可以形成的方法也有很多,而前面提到的两种算法是广义策略迭代法的一种特例。由于其中的算法很多,这些算法中很有可能存在一些比前面两种算法速度更快的方法。

  • 相关阅读:
    待完成
    [NOI2006]神奇口袋
    [UVA 10529]Dumb Bones
    概率与期望习题总结
    [SHOI2012]随机树
    [luogu3412]仓鼠找sugar II
    [CF908D]New Year and Arbitrary Arrangement
    [清华集训]小 Y 和恐怖的奴隶主
    [SDOI2015]序列统计
    [luogu3600]随机数生成器
  • 原文地址:https://www.cnblogs.com/huangyc/p/10386739.html
Copyright © 2011-2022 走看看