事件驱动优化:理论

EBO 的理论和强化学习很像,也是 value function(性能势)和 Q function(Q 因子)。

估计熟悉 RL 的朋友已经想象出画面了,但是要注意三点:

  1. value function 不代表 “特定状态下的预期收益”,而是 “特定事件发生后的预期收益”;同样,Q function 代表 “特定事件发生后、做出特定动作的预期收益”。
  2. EBO 的 value function 和 Q function 没法 bootstrap 迭代(一步更新),得用整个轨迹做 Monte Carlo 估计。
  3. 目前本人还不知 EBO 是否要加 gamma discount,综述论文没有加,而是“对足够长的 N 步收益求和”。

我会在下文罗列数学公式,写自己对 性能势、Q 因子 的理解。

1 性能势 / value function

1.1 性能势的定义、优化思路

先从我们 RLer 熟悉的 value function 开始,状态 i 的性能势定义如下。其中,d 是策略,X 是系统状态,E 是事件, N 是远大于 1 的正整数。注意,这里是 状态性能势 而非 事件性能势,先从这里开始推导。

\[g^d_N(i)=\mathbb E\bigg\{\sum_{n=0}^{N-1}f(X_n,d(E_n))|X_0=i\bigg\} \tag{1} \]

然后,定义 \(\pi^d(i|e)\) 为策略 d 下发生事件 e 时,系统处于状态 i 的概率。可以得到事件 e 的性能势:

\[\sum_{i\in I(e)}\pi^d(i|e)\bigg(f(i,d(e))+\sum_{j\in O_i(e)}p(j|i,e,d(e))g_N^d(j)\bigg) \tag{2} \]

因为策略 d 对每个事件 响应一个特定动作,是字典的映射关系;因此,如果我们已知概率 \(\pi^d(i|e)\)、收益 f、系统转移概率 \(p(j|i,e,d(e))\)、状态性能势 \(g_N^d(j)\),就可以遍历所有动作,找一个让上式 argmax 的动作。

1.2 优化细节的讨论

可以和 RL 的 value iteration 一样,迭代地更新策略:更新状态性能势、同时更新策略。

然而有个大问题:

  • 如果没法对任意策略 d 都给出 \(\pi^d(i|e)\),自然想到用 Monte Carlo 采样估算 \(\pi^d(i|e)\)
  • 假如我们希望,从策略 d 更新得到更优策略 h,即对每个事件,h 的 (2)式 大于等于 d 的 (2)式,这样 h 比 d 更优。
  • 然而,为了判断 h 确实比 d 更优,需要知道 \(\pi^h(i|e)\) 来计算 (2)式,即,用策略 h 的轨迹估算 \(\pi^h(i|e)\)
  • 但,计算 (2)式 本来就是为了得到 更优策略 h,为了得到更优策略(迭代更新策略),需要得到更优策略(确保得到“更优”策略),直接逻辑矛盾了 😂

只有系统满足

\[\pi^d(i|e) = \pi^h(i|e) \tag{3} \]

时,即,事件发生时处于特定状态的概率 不随策略变化,才能不管前面的 \(\pi^d(i|e)\),遍历所有动作,通过 argmax 方式实现迭代更新。

这个条件其实不好满足。举个反例:比如,事件 e 只在 状态 i1 i2 下发生,但策略 d 奇奇怪怪,在 i1 下使劲触发 e,在 i2 下静若处子,策略 h 相反,在 i2 下使劲触发 e;这样,当 e 发生时,对策略 d,系统在状态 i1 下的概率为 100%,对策略 h,系统在状态 i2 下的概率为 100%。

这个条件在后面 Q 因子也会讨论,大家可以留个印象。

2 Q 因子 / Q function

2.0 性能势的问题 / 使用 Q 因子的动机

  • 算性能势的困难:
    • 算性能势需要观测系统状态,很多现实系统不方便观测准确状态,这一点非常致命。
    • 即使可以观测准确状态,算性能势需要得知 系统转移概率 \(p(j|i,e,d(e))\),一般我们并不知道(不过也可 Monte Carlo 近似)。注意区分,系统转移概率和 \(\pi^d(i|e)\) 不一样,它是完全客观的,和策略没关系。
    • 即使 状态可观测 + 已知系统转移概率,现实场景的状态往往多的爆炸,对每个状态算性能势,会出现维数灾难。Q 因子方法中,只需对每个事件计算 Q 因子;通过定义合适的事件,可使事件数量远少于状态数量,因此可以有效缓解维数灾难。
  • 迭代更新的困难:
    • 只有系统满足 (3)式,才能进行迭代更新;否则,性能势(如果能算)只提供 评价策略好坏 的思路,最多基于性能势,用用进化算法。

2.1 Q 因子的定义

于是,我们转而采用 Q Function 的思路。事件 e + 行动 a 的 Q 因子定义如下,基本照搬 性能势公式,只不过将 d(e) 换成了给定动作 a:

\[Q_N^d(e,a)=\sum_{i\in I(e)}\pi^d(i|e)\bigg(f(i,a)+\mathbb E\bigg\{\sum_{n=0}^{N-1}f(X_n,d(E_n))|X_0=i,E_0=e\bigg\}) \tag{4} \]

2.2 优化思路、细节的讨论

按照 RL 思路,得到 事件-行动 元组的 Q 因子后,对动作 a 取 Q 的 argmax,继续采用 value iteration 的迭代优化思想,即可改进策略。但是,仍然有前面 (3)式 的问题,\(\pi^d(i|e)\) 概率可能随着策略 d 变化。

同时,还有一个问题:假如策略 d 是确定性策略,即,对每个给定事件 e,采取唯一的、确定的动作 a,那么,对每个事件 e 只能得到这个动作 a 的 \(Q_N^d(e,a)\)。因此,在进行策略采样 + Monte Carlo 估计 Q 因子时,需要采取随机性策略,确保能估算每个 \(Q_N^d(e,a)\)综述使用了 epsilon greedy 的随机策略,其中 epsilon>0 且远小于 1。

回过头看 (3)式 的问题。如果 (3)式 不成立,我们可以根据策略梯度,搜索局部最优策略:设策略 δ 是一个随机策略,以概率 1-δ 采取策略 d,以概率 δ 采取策略 h。这个算法详见综述原文,本人并没细看。

3 对性能势 / Q 因子的思考

  • 在理论角度,直接把 状态+事件 捆绑作为 state,就可以彻底套用强化学习了,包括做 bootstrap 的一步迭代。
    • 然而,现实场景状态太多/不好观测,这也是我们提出 EBO、并希望 完全基于事件决策 的初心。
  • 关于 (3)式,不知它是否是那种 不严谨 但可以应用 的条件。比如说,水位有 低中高 三档,定义事件 e 为 水位从其他档到了第 e 档,是否可以直接认为 原先状态处于其他两档的概率都为 50%,这样做在实际应用中是否合理?
    • 感觉并不合理,现实场景并不这样,比如本人的手机电量 常常在中高档位 😎
  • 综述原文还提到:前面的讨论都在 系统为 Markov Chain 的假设下,如果系统没有 Markov 性质,则可以将 EBO 视为 POMDP;强行定义新 state 为从古到今的所有状态,那么就是 MDP 了,只不过 partially observable。
    • 其实,直接忘记系统的 状态;假设只能看见事件,把事件当 state,其他和状态有关的因素都视作 系统随机性 / partially observable,是不是也(理论上)可以做呢 🤔

返回目录→

posted @ 2022-05-28 19:44  MoonOut  阅读(185)  评论(0编辑  收藏  举报