PMD-MEAN(Policy Mirror Descent-Mean)是一种基于策略镜像下降的强化学习算法,其核心创新点在于设计了特殊的损失函数结构。这个损失函数不是简单地衡量策略与最优策略的差距,而是通过引入均值偏差项∆y/τ来建立更精细的优化目标。
在实际应用中,我发现这种设计有三大优势:
关键提示:τ的选择需要与奖励尺度匹配,通常建议初始设置为平均奖励的1/10,再根据训练效果调整
原始论文给出的损失函数定义为:
math复制L^{mean}_t(\pi) = \frac{1}{2}\mathbb{E}_{\pi_t}[(s^\pi - \frac{\Delta y}{\tau})^2]
其中sπ是策略π的评分函数,∆y = r(y) - pt表示即时奖励与基线期望的偏差。
这个看似简单的二次型损失实际上包含精妙设计:
通过引入拉格朗日乘子λ,我们可以得到最优策略π*必须满足的KKT条件:
math复制s^*(y) - \frac{\Delta y}{\tau} = -\frac{\lambda}{\tau^2}e^{s^*(y)}
这个条件揭示了几个重要性质:
在实际coding时,我常用这样的Python代码片段来验证KKT条件:
python复制def check_kkt(s_star, delta_y, tau, lambda_):
left = s_star - delta_y/tau
right = -lambda_/(tau**2) * np.exp(s_star)
return np.allclose(left, right, atol=1e-5)
在证明Lemma D.1的过程中,出现了KL散度项:
math复制\frac{\lambda}{\tau^2}KL(\pi^*_{t+1}\|\pi)
这一项的实际意义是:
避坑指南:当λ设置过大时,可能导致策略更新停滞。建议初始设为1.0,每100步乘以0.99衰减
算法采用留一法构造辅助目标:
math复制\tilde{s}^*_{-i}(y_i) = \frac{1}{\tau}(r(y_i) - p_{-i})
其中p_{-i}是排除第i个样本后的平均奖励。这种设计带来了:
公式(41)的分解:
math复制|\hat{L}_t(\pi) - \hat{L}^{mean}_t(\pi)| \leq \frac{1}{n}\sum|a_i||\Delta^{loo}_i| + \frac{1}{2n}\sum(\Delta^{loo}_i)^2
揭示了算法控制泛化误差的两大途径:
实际应用中发现,当样本量n<1000时,第二项往往占主导地位,此时可以:
最终的收敛界(38)表明误差上界为:
math复制O(\frac{M_\tau^2\log(|\Pi|/\delta)}{n} + \epsilon_{opt} + \frac{\epsilon_n}{\tau}(B+\frac{p_t}{\tau}) + \frac{\epsilon_n^2}{\tau^2})
这给出了几个重要insight:
基于理论分析,建议采用以下初始化方案:
python复制def initialize_parameters():
params = {
'tau': max(0.1, np.mean(initial_rewards)/10),
'lambda': 1.0,
'B': 2.0 # 评分函数边界
}
return params
python复制pt = np.mean([r(y) for y in samples])
python复制p_loo = [np.mean([r(y) for y in samples if y != yi]) for yi in samples]
python复制grad = (s_pi - (r(y)-pt)/tau) * grad_s_pi
python复制new_pi = project_to_kl_ball(old_pi, updated_pi, lambda_/tau**2)
在真实业务场景中应用PMD-MEAN时,我发现将理论上的τ、λ等参数与业务指标挂钩非常关键。比如在电商推荐系统中,可以将τ与用户点击率的波动幅度关联,这样参数调整就更有业务意义。