Reference

马可夫决策过程(MDP)

一个马可夫决策过程由一个元组定义,其中:

  • :是一系列状态
  • :是一系列动作
  • :是状态转换可能,对于是当下状态所有可能转换的状态的可能性
  • :是discount factor
  • :是奖励函数 MDP的动态过程如下:我们从某个状态开始,然后在MDP中选择一个动作 执行。然后 MDP 的状态随机转移到某个后继状态,根据 抽取。然后选择另一个动作。由于这个动作,状态再次转移,现在转移到某个 ,依此类推。可以将这个过程表示为:

以动作序列 遍历状态序列 后,总收益由下式给出

或者,将奖励写成仅关于状态的函数时,则变为

在强化学习中,目标是随着时间推移选择动作以最大化总收益的期望值:

状态价值函数

定义:

含义:
在初始状态为 的条件下,遵循策略 时,期望获得的 累计折扣回报。用来衡量某个状态本身的“好坏”。

状态-动作价值函数

定义:

含义:
在状态 下先执行动作 ,之后遵循策略 ,期望获得的 累计折扣回报。用来衡量某个动作在某个状态下的“好坏”。

策略目标函数

定义:

含义:
策略 整个初始状态分布 下的期望累计回报,是强化学习中需要最大化的最终目标。 因此,我们的目标是最大化这个函数:(假定所有智能体共享同样的奖励函数)

J(\pi) \triangleq \mathbb{E}_{s_{0:\infty} \sim \rho_{\pi}^{0:\infty}, a_{0:\infty} \sim \pi} \left[ \sum_{t=0}^{\infty} \gamma^t r_t \right].$$ 同时定义$A$优势函数,对于单智能体和多智能体,定义分别为:

A_{\pi}(s,a) = Q_{\pi}(s,a)-V_{\pi}(s)

A_{\pi}^{i1:m}\left(s, \mathbf{a}^{j1:k}, \mathbf{a}^{i1:m}\right) \triangleq Q_{\pi}^{j1:k,i1:m}\left(s, \mathbf{a}^{j1:k}, \mathbf{a}^{i1:m}\right) - Q_{\pi}^{j1:k}\left(s, \mathbf{a}^{j1:k}\right).$$

Bellman 方程

策略 (policy) 是一个函数 ,它将状态映射到动作。当处于状态 时,如果执行 (executing) 某个策略 ,则采取动作 。同时定义策略 的价值函数 (value function) 为

表示从状态 开始并按照策略 采取动作所获得的折扣奖励的期望总和。\footnote{请注意,这里以 为条件的写法并不完全正确,因为 不是随机变量,但这在文献中是相当标准的用法。

有了这个策略后,要怎么估计一个策略的总价值呢,不可能真的把所有状态的价值真的按照概率加权,那样太慢了。Bellman 方程就是为了解决这个问题而产生的,其利用了 MDP 的马尔可夫性质,即本状态可以只由上个状态决定。

给定一个固定的策略 ,其价值函数 满足贝尔曼方程 (Bellman equation):

这表明从状态 开始的折扣奖励期望总和 由两部分组成:第一部分是从状态 开始即刻获得的即时奖励 (immediate reward) ;第二部分是未来折扣奖励的期望总和。仔细考察第二项,可以看到上面的求和项可以重写为 。这是从状态 开始的折扣奖励的期望总和,其中 的分布由 给出,也就是在 MDP 中从状态 执行第一个动作 后将到达的状态分布。因此,上面的第二项给出的是在 MDP 中执行第一步后获得的折扣奖励的期望总和。

贝尔曼公式利用了Bootstrap(自举) 的思想,它不再依赖长期问题,而是将长期问题分解为下一状态的价值,变成了一种递归的求发。具体来说,其核心为用当前已有的价值估计,去更新另一个价值估计。 最后可以有效收敛成正确的奖励。

贝尔曼方程可以有效地用于求解 。具体来说,在一个有限状态 MDP () 中,可以为每个状态 写出一个关于 的方程。这给出了 个线性方程组,其中包含 个变量(未知的 ),可以有效地求解这些变量。

为了表示线性公式,可以把贝尔曼方程拆成:

此时,对于如下图所示系统,可以写出每个状态对应本策略的总奖励: image.png

矩阵需要满足两个性质:

  • 非负,因为概率不可能是负数:
  • 每行的和为1,因为每个状态的转移概率总和为1 :

但是现实中不会直接求闭式解,因为求逆会消耗很大算力。实际上是使用迭代的方式,最开始先随便赋值 ,然后通过:

来不断更新总价值。最后可以迭代收敛到真正的

同样地,定义最优价值函数 (optimal value function)为

换句话说,这是使用任何策略可以达到的最佳期望折扣奖励总和。对于最优价值函数,也有一个贝尔曼方程:

上面的第一项是即时奖励。第二项是在执行动作 之后获得的期望未来折扣奖励总和在所有动作 上的最大值。应该确保理解这个方程及其合理性。 同时定义策略 如下:

注意, 给出了在方程eq:15.2中的 “max” 中达到最大值的动作

事实证明,对于每一个状态 和每一个策略 ,有

第一个等号表示,对于每个状态 ,策略 的价值函数 都等于最优价值函数 。此外,不等号表示 的价值至少与任何其他策略的价值一样大。换句话说,方程所定义的 是最优策略 (optimal policy)。

BOE

Bellman Optimal Equation,用于表示某个状态或者动作是最优的,即所获得的即时奖励加上后续状态的折扣最优价值的期望是最低的。

具有两种形态:

  • 状态价值函数():在状态 下,最优价值等于遍历所有动作 ,取「即时奖励 + 折扣后继状态最优价值期望」的最大值。
  • 动作价值函数():在状态 执行动作 的最优价值,等于即时奖励加上到达下一个状态后、再选最优动作的折扣期望价值。

两者的关系很直接:

至于为什么是最优,最优是否是唯一的等问题,可以看书。

随之可以自然地推出 Value iteration 和 Policy iteration 的方程:

通过这个 Value iteration 方程迭代后可以用 Policy iteration 同时更新局部最佳策略:

最后当两个值都不再变化后即可判断为收敛了。

可以见书67页的例子,方便理解。

首先,我们通过列出它们的步骤来比较值迭代和策略迭代算法。

  • 策略迭代:选择一个任意的初始策略 。在第 次迭代中,执行以下两个步骤。

    • 步骤1:策略评估(PE)。给定 ,求解
    • 步骤2:策略改进(PI)。给定 ,求解
  • 值迭代:选择一个任意的初始值 。在第 次迭代中,执行以下两个步骤。

    • 步骤1:策略更新(PU)。给定 ,求解
    • 步骤2:值更新(VU)。给定 ,求解

上述两种算法的步骤可以用如下方式表示:

可以看出,两种算法的流程非常相似。

这种策略由于以下几点,不会陷入局部最优解中,虽然其只是贪心地找局部最优中:

  • Bellman 方程的收缩映射性质(Contraction Mapping):Bellman optimality operator ∗ 是一个 γ-contraction,根据 Banach 不动点定理,反复迭代必然收敛到唯一的不动点 。唯一不动点意味着根本不存在”局部最优”这个概念——最优解只有一个,你一定会收敛到它。
  • Policy Improvement Theorem:对 Policy Iteration 来说,每次 greedy improvement 保证 对所有 成立。这个不等式意味着 value 是 单调不减的。而有限 MDP 的策略数量有限( 个),单调不减 + 有限集合 = 必然在有限步内收敛到全局最优
  • 本质原因——问题结构的凸性:在 tabular MDP 中,value function 关于 policy 的优化问题可以等价为一个线性规划(LP)。LP 的可行域是凸的,所以任何局部最优就是全局最优。这也是为什么贪心在这里是安全的。