为智能体提供内在激励,是强化学习中一种强大的行动引导方法,它与UCB和Thompson采样等主要通过对价值不确定性进行推理来引导行动的方法不同。智能体不再仅仅依赖环境提供的外部奖励($ r^e $),这些奖励可能稀疏或延迟,而是生成自己的内部奖励信号($ r^i $)来指导其行动。内在激励的一种常见形式是好奇心,智能体因遇到其认为令人惊讶或无法预测的情况而获得奖励。一种突出的好奇心形式化方式是通过预测误差。核心思想很简单:如果智能体能够准确预测其在状态空间特定部分的行动后果,它很可能对该区域已有充分理解,从而减少了进一步行动的动力。相反,如果其预测不佳,则表明其知识存在空白,使得该区域“有趣”并值得进一步行动。智能体的内在奖励与其预测未来的能力不足成正比。内在好奇心模块 (ICM)这种想法的一个知名实现是内在好奇心模块 (ICM)。ICM不是直接处理原始、高维状态(如图像),这些状态可能包含与智能体任务无关的干扰信息,而是在学习到的特征空间中运行。这有助于智能体将其好奇心集中在环境的某些方面,即它能够实际影响或影响其未来行为路径的方面。ICM通常由三个主要组成部分构成,它们常作为神经网络实现:特征编码器 ($ \phi $): 该网络将原始状态 $ s_t $ 映射到低维特征向量 $ \phi(s_t) $。其目标是捕获关于状态的紧凑、相关信息。正向动力学模型: 接收当前特征表示 $ \phi(s_t) $ 和智能体的行动 $ a_t $,并预测下一状态的特征表示 $ \hat{\phi}(s_{t+1}) $。 $$ \hat{\phi}(s_{t+1}) = f_{forward}(\phi(s_t), a_t) $$逆向动力学模型: 接收当前状态 $ \phi(s_t) $ 和下一状态 $ \phi(s_{t+1}) $ 的特征表示,并预测智能体在两者之间进行转换所采取的行动 $ \hat{a}t $。 $$ \hat{a}t = f{inverse}(\phi(s_t), \phi(s{t+1})) $$这些组成部分如何协同运作:digraph ICM { rankdir=LR; node [shape=box, style=rounded, fontname="sans-serif", color="#adb5bd", fontcolor="#495057"]; edge [fontname="sans-serif", color="#868e96"]; subgraph cluster_state { label = "输入"; style=dashed; color="#ced4da"; s_t [label="状态 s_t", shape=ellipse, style=filled, fillcolor="#a5d8ff"]; a_t [label="行动 a_t", shape=ellipse, style=filled, fillcolor="#ffec99"]; s_tp1 [label="下一状态 s_{t+1}", shape=ellipse, style=filled, fillcolor="#a5d8ff"]; } subgraph cluster_icm { label = "内在好奇心模块 (ICM)"; style=filled; color="#e9ecef"; Encoder_t [label="特征编码器 φ", style=filled, fillcolor="#bac8ff"]; Encoder_tp1 [label="特征编码器 φ", style=filled, fillcolor="#bac8ff"]; ForwardModel [label="正向模型\n预测下一特征", style=filled, fillcolor="#b2f2bb"]; InverseModel [label="逆向模型\n预测行动", style=filled, fillcolor="#d8f5a2"]; phi_t [label="φ(s_t)", shape=ellipse, style=filled, fillcolor="#dee2e6"]; phi_tp1 [label="φ(s_{t+1})", shape=ellipse, style=filled, fillcolor="#dee2e6"]; phi_hat_tp1 [label="预测的\nφ̂(s_{t+1})", shape=ellipse, style=filled, fillcolor="#ced4da"]; a_hat_t [label="预测的\nâ_t", shape=ellipse, style=filled, fillcolor="#ced4da"]; s_t -> Encoder_t; s_tp1 -> Encoder_tp1; Encoder_t -> phi_t; Encoder_tp1 -> phi_tp1; {phi_t, a_t} -> ForwardModel; ForwardModel -> phi_hat_tp1 [label=" 预测"]; {phi_t, phi_tp1} -> InverseModel; InverseModel -> a_hat_t [label=" 预测"]; subgraph cluster_loss { label = "训练损失"; style=dashed; color="#ced4da"; ForwardLoss [label="正向损失\n(预测误差)", shape=note, style=filled, fillcolor="#ffc9c9"]; InverseLoss [label="逆向损失\n(行动预测)", shape=note, style=filled, fillcolor="#ffc9c9"]; phi_hat_tp1 -> ForwardLoss [style=invis]; // To position loss node a_hat_t -> InverseLoss [style=invis]; // To position loss node } } RewardCalc [label="计算\n内在奖励 r^i", shape=cds, style=filled, fillcolor="#ffd8a8"]; phi_tp1 -> RewardCalc [label="实际"]; phi_hat_tp1 -> RewardCalc [label="预测"]; RewardCalc -> IntrinsicReward [label="∝ 误差"]; IntrinsicReward [label="r^i_t", shape=diamond, style=filled, fillcolor="#fd7e14"] // Connect losses for training phi_hat_tp1 -> ForwardLoss [style=dashed, label=" 误差 vs φ(s_{t+1})"]; a_hat_t -> InverseLoss [style=dashed, label=" 误差 vs a_t"]; // Indicate model training flow ForwardLoss -> ForwardModel [label=" 更新"]; InverseLoss -> InverseModel [label=" 更新"]; InverseLoss -> Encoder_t [label=" 更新"]; // Encoder trained by Inverse Loss InverseLoss -> Encoder_tp1 [label=" 更新"]; // Encoder trained by Inverse Loss // Make connections clearer phi_t -> InverseModel [style=solid]; phi_tp1 -> InverseModel [style=solid]; phi_t -> ForwardModel [style=solid]; a_t -> ForwardModel [style=solid]; phi_tp1 -> RewardCalc [style=solid]; phi_hat_tp1 -> RewardCalc [style=solid]; }内在好奇心模块 (ICM) 架构。原始状态被编码为特征。正向模型根据当前特征和行动预测下一特征。逆向模型根据连续特征预测行动。正向模型的预测误差生成内在奖励信号。正向和逆向模型同时进行训练,逆向模型的损失也促进了特征编码器的训练。训练ICM:正向模型被训练以最小化其预测的下一特征表示 $ \hat{\phi}(s_{t+1}) $ 与通过编码器计算得出的实际下一特征表示 $ \phi(s_{t+1}) $ 之间的差异。损失函数通常是平方欧几里得距离: $$ L_{Forward} = \frac{1}{2} || \hat{\phi}(s_{t+1}) - \phi(s_{t+1}) ||^2_2 $$逆向模型被训练以最小化预测实际行动 $ a_t $ 所产生的误差。如果行动是离散的,这通常是交叉熵损失;对于连续行动,它可能是均方误差。 $$ L_{Inverse} = \text{Loss}(\hat{a}_t, a_t) $$重要的是,特征编码器 ($ \phi $) 仅通过从逆向动力学损失 $ L_{Inverse} $ 反向传播的梯度进行训练。它不通过正向动力学损失进行训练。为什么?用逆向模型训练编码器,鼓励它学习与预测智能体自身行动相关的特征。那些不可预测地变化但智能体无法影响的特征(例如背景中树叶随机沙沙作响)不太可能被编码,从而防止智能体纠结于预测环境中固有不可预测的方面(“嘈杂电视问题”)。生成内在奖励:在时间 $ t $ 给予RL智能体的内在奖励 $ r^i_t $ 根据正向动力学模型在特征空间中的预测误差计算: $$ r^i_t = \frac{\eta}{2} || \hat{\phi}(s_{t+1}) - \phi(s_{t+1}) ||^2_2 $$ 这里,$ \eta > 0 $ 是一个缩放因子,控制好奇心奖励的量级。更高的预测误差表示智能体更大的“意外”,从而导致更大的内在奖励,鼓励它了解那些其结果理解不足的转换。与RL智能体整合:内在奖励 $ r^i_t $ 通常添加到从环境接收的外部奖励 $ r^e_t $ 中。智能体的策略(例如,在A2C或PPO中)随后被训练以最大化折扣未来奖励的总和,其中每一步的奖励为 $ r_t = r^e_t + r^i_t $。有时,会使用一个权重因子 $ \beta $:$ r_t = \beta r^e_t + (1-\beta) r^i_t $。这种结合的奖励信号促使智能体既要实现外部任务目标,又要通过了解不熟悉的状态-行动转换来满足其好奇心。优点与考量使用预测误差作为内在激励具有多项益处:密集奖励: 即使外部奖励稀疏或不存在,它也能提供密集的学习信号,促进在困难环境中的行动。定向行动: 它引导行动走向智能体模型不准确的区域,相比于随机行动,可能导致更有效地找到有奖励的状态。关注可控动态: 通过使用逆向动力学模型训练特征表示,它倾向于将行动集中在智能体能够实际影响的环境方面。然而,也有一些需要考量的点:模型复杂性: 相比于标准RL算法,实现和训练ICM组件增加了复杂性。超参数敏感性: 性能可能对网络架构、学习率、特征空间维度和缩放因子 $ \eta $ 的选择很敏感。潜在的干扰: 尽管逆向模型有所帮助,如果设计不慎,智能体可能仍然会被环境中那些难以预测但最终与主要任务无关的部分所吸引。以ICM为例的基于预测误差的好奇心,代表了在构建智能体方面的重要一步,这些智能体能够在缺乏频繁外部反馈的情况下积极地了解复杂环境。它是应对行动挑战的有力工具,适用于从机器人操作到复杂游戏场景中的行动。