Uncertainty-aware Grounded Action Transformation towards Sim-to-Real Transfer for Traffic Signal Control
根据这段伪代码(Algorithm 1)和描述提供的信息,以下是对动作选择流程的详细分析,以及如何解决策略 $ \pi_\theta $ 和逆向模型 $ h_{\phi-} $ 在动作生成和修正中的作用:
UGAT 算法的核心流程
-
预训练策略 $ \pi_\theta $(第1行)
- 在虚拟环境 $ E_\text{sim} $ 中,用强化学习对策略 $ \pi_\theta $ 进行预训练,进行 $ M $ 次迭代。
- $ \pi_\theta $ 的预训练确保其在仿真环境中具备初步的动作选择能力。
-
数据收集和模型更新(第3-7行)
- 同时在仿真环境 $ E_\text{sim} $ 和真实环境 $ E_\text{real} $ 中运行策略 $ \pi_\theta $,生成状态转移数据 $ (s_t, a_t, s_{t+1}) $:
- 仿真环境中的数据存储到 $ D_\text{sim} $。
- 真实环境中的数据(可能是离线日志)存储到 $ D_\text{real} $。
- 根据收集的数据,训练或更新前向模型 $ f_{\phi+} $ 和逆向模型 $ h_{\phi-} $。
- 同时在仿真环境 $ E_\text{sim} $ 和真实环境 $ E_\text{real} $ 中运行策略 $ \pi_\theta $,生成状态转移数据 $ (s_t, a_t, s_{t+1}) $:
-
动作修正(Action Grounding Step)(第12-19行)
- 核心问题:如何确定执行的动作是策略 $ \pi_\theta $ 的输出,还是通过逆向模型修正的动作?
- 根据描述,动作修正依赖于模型的不确定性 $ u_t $。
- 如果 $ u_t \geq \alpha $,说明当前模型的预测不可靠,直接使用策略 $ \pi_\theta $ 的动作 $ a_t $。
- 否则,使用逆向模型 $ h_{\phi-} $ 提供的修正动作 $ \hat{a}_t $。
- 核心问题:如何确定执行的动作是策略 $ \pi_\theta $ 的输出,还是通过逆向模型修正的动作?
-
策略更新(第20行)
- 策略 $ \pi_\theta $ 使用仿真环境的交互数据,通过强化学习进一步优化。
-
不确定性调整(第23行)
- 根据公式 (8),更新不确定性阈值 $ \alpha $,以适应下一轮的策略训练。
动作选择的具体流程分析
在这个算法中,动作选择的流程如下:
1. 初始动作选择:通过策略 $ \pi_\theta $
- 第13行:
- 策略 $ \pi_\theta $ 根据当前状态 $ s_t $ 输出动作 $ a_t \(:
\)
a_t = \pi_\theta(s_t)
$
- 策略 $ \pi_\theta $ 根据当前状态 $ s_t $ 输出动作 $ a_t \(:
\)
2. 动作修正:通过逆向模型 $ h_{\phi-} $
-
计算修正动作和不确定性:
- 使用 $ g_\phi $,结合当前状态 $ s_t $ 和策略动作 $ a_t $,计算:
- 修正动作 $ \hat{a}_t $。
- 动作预测的不确定性 $ u_t $。
- 根据 Equation (7),不确定性 $ u_t $ 表示当前预测的可靠性。
- 使用 $ g_\phi $,结合当前状态 $ s_t $ 和策略动作 $ a_t $,计算:
-
不确定性检查(第15行):
- 如果 $ u_t \geq \alpha $,说明模型预测不够可靠:
- 丢弃修正动作 $ \hat{a}_t $,直接执行原始动作 $ a_t $。
- 如果 $ u_t < \alpha $,说明修正动作 $ \hat{a}_t $ 是可信的:
- 使用 $ \hat{a}_t $ 替代原始动作。
- 如果 $ u_t \geq \alpha $,说明模型预测不够可靠:
3. 动作在仿真环境中的执行
- 无论是策略输出的动作 $ a_t $,还是修正后的动作 $ \hat{a}t $,最终都会被传递到仿真环境 $ E\text{sim} $,用于更新仿真状态 $ s_{t+1} $。
总结:伪代码和框架图的统一
通过详细分析,我们可以看出伪代码和框架图的关系实际上是协同的,而不是矛盾的:
-
策略 $ \pi_\theta $ 是主要的动作生成器:
- 在每一步中,策略 $ \pi_\theta $ 根据状态 $ s_t $ 首先生成动作 $ a_t $。
- 这符合伪代码第13行的描述。
-
逆向模型 $ h_{\phi-} $ 是动作修正器:
- 通过 $ g_\phi $ 计算逆向模型修正动作 $ \hat{a}_t $ 和不确定性 $ u_t $。
- 如果 $ u_t < \alpha $,修正后的动作 $ \hat{a}_t $ 被执行。
- 如果 $ u_t \geq \alpha $,则直接执行策略的原始动作 $ a_t $。
- 这对应框架图中 $ h_{\phi-} $ 的作用。
-
两者的最终执行关系:
- 在大多数情况下,策略 $ \pi_\theta $ 输出的动作 $ a_t $ 是主要执行的动作。
- 逆向模型 $ h_{\phi-} $ 仅在动作需要修正时提供辅助。
算法的作用总结
-
策略 $ \pi_\theta $:
- 是主要的动作生成器,直接输出动作 $ a_t $。
-
逆向模型 $ h_{\phi-} $:
- 提供动作修正能力,避免策略 $ \pi_\theta $ 在不确定情况下的错误动作执行。
-
模型的不确定性量化 $ u_t $:
- 决定是否接受修正动作 $ \hat{a}_t $。
- $ u_t $ 是连接策略和逆向模型的核心参数。
希望这个解释清晰地消除了你的疑惑!如果还有其他细节需要讨论,可以进一步展开!