正如我们讨论的,离线强化学习中的一个主要难题是分布不匹配。当标准离策略算法,如Q学习或Actor-Critic方法,在评估或改进策略时,它们经常查询与所收集数据分布相去甚远的状态-动作对 $(s, a)$ 的价值(即,在状态 $s$ 下行为策略 $\pi_b$ 很少采取或从不采取的动作 $a$)。由于离线数据集没有这些“分布外”行为的结果信息,价值估计(如Q值)会变得非常不准确,导致外推误差,从而导致学习不稳定并产生较差的最终策略。策略约束方法直接应对这一挑战,通过明确限制学习到的策略 $\pi$ 来选择被认为是“在分布内”或被离线数据集“支持”的行为。基本思路是:如果我们没有关于给定状态下某个动作的数据,我们就不应该信任我们对其价值的估计,因此,我们的学习策略就不应该选择它。通过贴近行为策略的动作分布,这些方法旨在避免因查询动作空间中不熟悉区域而导致的误差累积。核心思想:贴近数据设想有一个驾驶行为的数据集。一种策略约束方法,在从这些数据中学习驾驶时,会努力确保它选择的动作(如转向角度或加速度)与数据集中在类似情况下观察到的行为相似。如果收集到的轨迹中从未出现过极端的操纵,它会避免提出此类操纵。这种约束可以通过多种方式实现:显式行为策略建模: 一种做法是首先直接从数据集中学习行为策略的估计 $\hat{\pi}_b(a|s)$(例如,使用行为克隆等监督学习技术)。然后,学习到的策略 $\pi$ 在优化过程中受到约束,不能与 $\hat{\pi}_b$ 偏离过多,通常通过KL散度等指标衡量。隐式动作约束: 其他方法将约束直接融入到策略学习或价值更新步骤中。它们不一定需要 $\pi_b$ 的显式模型,而是使用机制来筛选或生成在 $\pi_b$ 下可能出现的动作。批量约束深度Q学习 (BCQ)隐式动作约束方法的一个典型例子是批量约束深度Q学习(BCQ)。BCQ 调整了标准的深度Q网络(DQN)框架以适应离线环境,着重确保Q值目标计算中选择的动作与数据集保持一致。BCQ 通常对连续动作空间采用三个主要组成部分:Q网络 ($Q_\theta(s, a)$): 类似于DQN,它估计动作价值函数。通常使用两个Q网络(如在TD3/双Q学习中)以减轻过高估计偏差。条件变分自编码器 (CVAE) ($G_\omega(s)$): 这个生成模型在离线数据集 $(s, a, r, s')$ 上进行训练,以学习在状态 $s$ 中实际采取的动作 $a$ 的分布。给定一个状态 $s$,CVAE $G_\omega(s)$ 可以生成一批在行为策略 $\pi_b$ 下可能出现的合理动作 ${\tilde{a}_i}$。扰动网络 ($\xi_\phi(s, a, \Phi)$): 这个网络学习对CVAE生成的动作进行微小调整。它以状态 $s$ 和生成的动作 $\tilde{a}_i$ 作为输入,并输出一个小的扰动 $\Delta a_i$,该扰动被限制在范围 $[-\Phi, \Phi]$ 内。最终的候选动作是 $a_i = \tilde{a}_i + \Delta a_i$。这允许对行为策略的动作进行轻微修改,可能找到改进,但避免了大幅偏离到不受支持的动作区域。BCQ如何约束动作:重要的修改在于贝尔曼更新的目标Q值是如何计算的。BCQ 不会对所有可能的动作 $a'$ 进行最大化,而是只对生成模型和扰动网络认为合理的动作集合进行最大化:$$ y(s, a, r, s') = r + \gamma \max_{a'i \in {\tilde{a}i + \xi\phi(s', \tilde{a}i, \Phi)}{i=1..k}} Q{\theta'}(s', a'_i) $$这里:$k$ 个动作 ${\tilde{a}i}{i=1..k}$ 从 CVAE $G_\omega(s')$ 中采样。每个采样的动作 $\tilde{a}i$ 由网络 $\xi\phi$ 进行扰动。仅从这批 $k$ 个受约束动作 $a'_i$ 中选取最大的Q值。$Q_{\theta'}$ 是目标Q网络。这确保了用于训练 $Q_\theta$ 的目标Q值是基于与状态 $s'$ 数据集中发现的动作相似的动作,从而阻止了与分布外动作相关的任意高Q值的传播。也存在BCQ的离散版本,其中生成模型预测在 $\pi_b$ 下可能出现的动作,策略只选择 $G_\omega(a|s)$ 超过某个阈值 $\tau$ 的动作。digraph BCQ_Concept { rankdir=LR; node [shape=box, style=rounded, fontname="Arial", fontsize=10]; edge [fontname="Arial", fontsize=9]; subgraph cluster_offline_data { label = "离线数据集 (s, a, r, s')"; style=filled; color="#e9ecef"; node [style=filled, color="#ced4da"]; Data [label="{(s, a, r, s'), ...}"]; } subgraph cluster_bcq_training { label = "BCQ训练循环"; style=filled; color="#e9ecef"; Q_Network [label="Q网络(s, a)", style=filled, color="#a5d8ff"]; Target_Q [label="目标Q'(s', a')", style=filled, color="#a5d8ff"]; CVAE [label="CVAE G(s')", style=filled, color="#b2f2bb"]; Perturb [label="扰动网络 ξ(s', ã)", style=filled, color="#b2f2bb"]; Sampler [label="采样k个动作\nã ~ G(s')", shape=ellipse, style=filled, color="#ffd8a8"]; Perturber [label="扰动动作\na' = ã + ξ(s', ã)", shape=ellipse, style=filled, color="#ffd8a8"]; Max_Q [label="对受约束的a'求最大Q'(s', a')", shape=ellipse, style=filled, color="#ffc9c9"]; Loss [label="计算TD损失\n(y - Q(s,a))^2", shape=ellipse, style=filled, color="#ffc9c9"]; Update [label="更新 Q, ξ, G", shape=ellipse, style=filled, color="#ffc9c9"]; Data -> CVAE [label="训练CVAE"]; Data -> Q_Network [label="采样批次"]; Data -> Perturb [label="训练扰动网络"]; Q_Network -> Loss; Target_Q -> Max_Q; CVAE -> Sampler [label="输入 s'"]; Sampler -> Perturber [label="输出 ã"]; Perturb -> Perturber [label="输入 (s', ã)"]; Perturber -> Max_Q [label="受约束动作 a'"]; Max_Q -> Loss [label="目标值 y"]; Loss -> Update [label="梯度"]; Update -> Q_Network [label="更新 θ"]; Update -> Target_Q [label="更新 θ' (慢速)"]; Update -> Perturb [label="更新 φ"]; } Q_Network -> Policy [style=dashed, arrowhead=none]; Policy [label="学习到的策略 π(s)\nargmax_{a'} Q(s, a')\n(受约束的a')", shape=note, style=filled, color="#ffec99"]; }批量约束深度Q学习 (BCQ) 的流程。CVAE和扰动网络生成与数据集中相似的动作,用于目标Q值计算,从而约束最大化步骤。其他策略约束方法尽管BCQ是一个知名的例子,其他方法也采用类似原理。例如:自举误差累积减少 (BEAR): BEAR 侧重于确保学习到的策略 $\pi$ 保持在行为策略 $\pi_b$ 的支持范围内。它旨在使 $\pi$ 产生的动作分布与数据集中观察到的分布相匹配,通常使用最大均值差异(MMD)等指标。BEAR 约束策略更新,使得学习策略的动作分布与行为策略的动作分布之间的MMD保持在阈值以下。行为正则化Actor-Critic (BRAC): 这些方法通常在策略优化目标中添加一个正则化项,惩罚与单独学习的行为策略估计 $\hat{\pi}b$ 的偏差。目标可能类似于优化标准策略目标,再减去一个形如 $\alpha \cdot D{KL}(\pi(\cdot|s) || \hat{\pi}_b(\cdot|s))$ 的项,其中 $\alpha$ 控制正则化的强度。优点与缺点优点:稳定性提升: 通过将动作限制在数据支持的范围内,策略约束方法在很大程度上避免了困扰离线环境中朴素离策略算法的外推误差。性能更佳: 与简单的行为克隆或朴素离策略强化学习相比,这些方法通常通过平衡策略改进与数据一致性来实现显著更好的性能。缺点:潜在的保守性: 主要缺点是约束策略可能会阻止其找到真正最优的动作,如果这些动作在离线数据集中表示不佳或完全缺失。性能本质上受行为策略数据的质量和覆盖范围限制。复杂性: 实现这些方法,特别是那些涉及VAE等生成模型或MMD等散度估计器的方法,可能比标准算法更复杂。超参数敏感性: 约束程度(例如,BCQ中的扰动范围 $\Phi$,BEAR中的MMD阈值,或BRAC中的正则化权重 $\alpha$)通常是一个敏感的超参数,需要仔细调整。策略约束方法代表着使离线强化学习变得实用的一大步。通过动作筛选或正则化直接解决分布不匹配问题,它们提供了一种更可靠的方式来从固定数据集中学习策略,与早期的离策略方法相比。然而,它们对数据分布的内在依赖意味着如果数据集本身次优或缺乏对重要状态-动作区域的覆盖,它们可能无法总是找到绝对最优的策略。这促使了其他方法的产生,例如价值正则化方法,我们将在接下来进行讨论。