逆强化学习(Inverse Reinforcement Learning,简称 IRL)是机器学习中一个相对特殊的方向。它与常规强化学习相反:常规强化学习是在已知奖励函数的情况下去寻找最优策略,而逆强化学习是在已经观察到专家行为的前提下,试图反推出专家所遵循的奖励函数。这个奖励函数往往是隐藏的,因为人类专家在执行任务时并不会显式地告诉我们每一步得了多少分,我们只能从他们的动作序列里猜测其偏好与目标。

在真实场景中,很多任务难以用简单的规则写出奖励。例如自动驾驶中,我们很难用公式表达“平稳礼让行人且不影响后车通行”的具体分数;又比如机械臂泡茶,专家的手法包含大量微妙权衡。逆强化学习的价值就在于,它把奖励设计问题转化成了参数估计问题,让机器从示范中自己提炼价值标准,从而摆脱人工调参的困境。
逆强化学习的核心假设与数学框架
逆强化学习的基本输入是一组专家演示轨迹 τ = {s_1, a_1, s_2, a_2, ...},以及环境的状态空间与动作空间。它假设专家是在某个未知奖励函数 R(s,a) 下执行近似最优策略的。我们的目标就是找到一个 R,使得在该 R 下通过强化学习得到的策略,所产生的行为与专家行为无法被区分。这里最棘手的问题是“奖励歧义”:任何把专家轨迹上所有状态都赋予常数奖励的平凡函数,都会让专家看起来是最优的,但这毫无意义。
为了打破歧义,研究者引入了结构化假设。最常见的是线性奖励假设,即 R(s,a) = θ · φ(s,a),其中 φ 是人工设计的特征函数,θ 是待求权重。此时问题转化为估计权重向量 θ。另一种思路是不假设线性,而用高斯过程或神经网络表示奖励,但这会带来更难的优化。数学上,我们常把专家策略 π_E 与候选策略 π 的差异用 occupancy measure 来刻画,IRL 就是寻找让 π_E 的占用度量优于其他策略的奖励参数。
从优化视角看,早期方法如 Ng 等人提出的最大边际法,要求专家的期望回报比次优策略高出至少一个边际 ε。这可以写成线性规划:在 θ 空间中寻找满足约束的解,并尽量让 θ 的范数小以避免过拟合。这类方法虽然直观,但对噪声敏感,且容易找到退化解。后续的最大熵逆强化学习则改用概率建模,假设专家在多个合理轨迹中按指数加权随机选,从而导出更平滑的奖励估计。
最大熵逆强化学习的原理与代码实现
最大熵 IRL 由 Ziebart 等人提出,它的核心思想是:在所有能解释专家行为的奖励函数中,选择那个让轨迹分布熵最大的,即最不偏不倚的一个。具体来说,给定参数 θ,轨迹 τ 的概率为 p(τ|θ) ∝ exp(R_θ(τ))。专家演示被用来最大化该模型的似然。由于直接计算配分函数困难,实践中常用动态规划或采样近似状态访问频率,再用梯度上升更新 θ。
下面用一段简化的 Python 伪代码展示最大熵 IRL 的梯度计算逻辑。该代码假设已有环境模型与特征提取器,通过迭代更新奖励权重来匹配专家状态访问频率。
import numpy as np
def maxent_irl(feature_matrix, expert_state_freq, n_iter=100, lr=0.01):
# feature_matrix: 形状为 (n_states, n_features) 的特征矩阵
# expert_state_freq: 专家在每个状态的访问频率,形状 (n_states,)
theta = np.zeros(feature_matrix.shape[1])
for it in range(n_iter):
# 计算当前奖励并软最大化得到策略状态频率
rewards = feature_matrix.dot(theta)
# 这里用简单 softmax 近似,真实场景需结合转移矩阵做规划
probs = np.exp(rewards) / np.sum(np.exp(rewards))
pred_state_freq = probs * expert_state_freq.sum()
# 梯度为专家频率与预测频率之差乘以特征
grad = feature_matrix.T.dot(expert_state_freq - pred_state_freq)
theta += lr * grad
return theta
# 示例调用
feat = np.random.randn(50, 4)
exp_freq = np.random.rand(50)
exp_freq /= exp_freq.sum()
theta_learned = maxent_irl(feat, exp_freq)
print(theta_learned)
这段代码省略了环境动态,真实应用中需要利用反向强化学习中的期望状态访问频率,通过值迭代计算最优策略下的占用度量。最大熵方法的优点是能自然处理多模态行为,并且对专家偶尔的次优动作有一定容忍度。缺点是计算配分函数代价高,在大规模状态空间下需用近似推理或神经网络替代。
与最大熵相对的是最大边际规划(Maximum Margin Planning)。它不建模概率,而是直接要求专家轨迹的累积奖励高于其他轨迹一个常数。这种方法在离散网格世界表现稳定,但在连续控制里容易因约束过多而无解。实践中,如果专家数据干净且任务单一,最大边际更轻便;若行为有随机性,最大熵更合适。
逆强化学习的典型应用与局限
逆强化学习已被用于机器人模仿学习、自动驾驶意图理解以及游戏 AI 分析。在机器人领域,通过采集人类示教的运动捕捉数据,IRL 能推断出“省电”“避障”“平滑”等隐藏偏好,再交给强化学习器训练策略。相比行为克隆,它不容易在分布外状态崩溃,因为奖励函数提供了泛化信号。在自动驾驶中,从人类驾驶日志反推奖励,可以帮助系统理解为何在某路口选择减速,从而提升决策可解释性。
然而 IRL 有明显局限。首先是计算复杂,大多数算法需要内层强化学习循环,导致训练成本数倍于普通 RL。其次是奖励可辨识性:当特征设计不足时,学出的奖励可能在未见过状态上给出错误指导。再者,专家数据若含偏见,奖励函数会忠实放大这些偏见。因此工业界常把 IRL 与行为克隆结合,或用生成式对抗 imitation learning(GAIL)这类免显式奖励的方法替代。
从系统架构看,若要在生产线部署 IRL,建议先以小批量专家数据验证特征工程是否充分,再逐步扩大。同时要监控学出奖励下策略的实际表现,防止“奖励黑客”——即策略找到了满足推断奖励却违背真实意图的漏洞。只有把逆强化学习当作理解专家的工具,而非全自动奖励生成器,才能发挥其真正价值。
inverse_reinforcement_learningreward_functionexpert_demonstration修改时间:2026-08-14 14:27:34