值迭代 (Value Iteration) 和策略迭代 (Policy Iteration) 强化学习算法的两个经典类别。
值迭代
值迭代通常包括求最优价值函数和策略提取两部分。在每次迭代中,值迭代算法会通过某种方式更新状态价值函数 或状态动作价值函数 ,该价值函数可能是表格,也可能是函数近似器 (如神经网络) 。值迭代最终提取出的目标策略是基于最优价值函数的贪心策略,显然,一旦价值函数是最优的,那么贪心策略也是最优的。这里包含更多关于值迭代的内容。
值迭代所使用的行为策略和提取出来的目标策略可能不同,例如探索策略可能是 -贪心策略。详见行为策略与目标策略。
策略迭代
策略网络 由 参数化,给出状态 下采取动作 的概率。如果动作空间是离散的,通常网络会将状态 映射到一个向量,向量的每个元素对应一个动作的概率。
策略迭代 (策略梯度方法) 希望最大化以下目标:
我们可以用梯度上升来更新策略参数 :
其中策略梯度
策略梯度定理
策略梯度定理将策略梯度 表示为期望的形式:
其中
- 是马尔科夫链的稳态分布
- 是策略网络的参数
- 是状态动作价值函数
在实际使用中,系数 无关紧要(被学习率吸收),而且我们通常省略 ,所以通常将策略梯度定理简写为:
近似策略梯度
尽管策略梯度定理给出了一个计算策略梯度的式子,但是解析求解该期望是不可能的,因为我们不知道 ,即使知道,使用求和或积分求期望也是不现实的。因此,我们通常使用采样的方法来估计策略梯度。
我们每次从环境中观察到一个状态 ,然后根据策略网络 采样一个动作 ,然后计算随机梯度:
它是策略梯度 的一个无偏估计。我们可以使用这个梯度来更新策略参数 :
其中 是学习率。
为了计算 ,我们通常有两类方法,其代表分别为 REINFORCE (用观测到的回报近似) 和 actor-critic (用神经网络近似)。