为什么会出现Q值高估?

为什么会存在高估(低估现象)

TL;DR

在带噪声的 Q 估计上做最大化,会更容易选中被误差偶然抬高的动作,从而产生系统性正偏差。

一切的起源

零均值假设:

\[\hat{Q}(s,a)=Q(s,a)+\epsilon_a, \quad \mathbb{E}[\epsilon_a] = 0 \]

从 Q-Learning 的角度看每次都会选去哪些最大的 Q 值,而这里的 Q 值是估计的,所以自然会选择哪些 \(\epsilon_a>0\) 的,进过 booststrap 误差一步步积累 :

\[y = r+\gamma \max_{a^\prime} {Q}(s^\prime,a^\prime), \\ Q(s,a) \leftarrow Q(s,a)+\alpha(y-Q(s,a)) \]

这时必有

\[\mathbb{E}[\max_{a^\prime} (Q(s,a)+\epsilon_a)] \geq \max_{a^\prime}[Q(s^\prime,a^\prime)] \]

也就是说 max 算子更容易选中 恰好被噪声抬高的那个动作,所以造成了Q高估。

一般的 Actor-Critic

上面仅仅讲了 Q-Learning 的情况,这是因为取 max(min) 算法造成的高估(低估),那一般的AC是否也存在高估或者低估呢,答案是肯定呢,AC算法本质上也是在做同样的优化,即最大化或者最小化某一个全局的(长时域的)目标函数,但 AC 的高估或者低估与 Q-learning 中的不同,主要的原因是 Actor 倾向于选择 Critic 高估的动作,Actor 会让更新朝着

\[\arg\max_a Q(s,a) \]

的方向走,再加上 critic 是 booststrap 更新,这个高估会通过 TD Target 往前传播,

\[y = r+\gamma \hat{Q}(s^\prime,\pi(s^\prime)) \]

所以一般的解决方法是使用备份的 Q, 也就是两套 Q-net(包含 Critic和Target critic)。

综上,AC的高估机制总结如下:

\[\begin{equation} \boxed{\text{函数逼近误差} \rightarrow \text{Actor选择高估动作} \rightarrow \text{booststrap传播误差} \rightarrow \text{持续高估}} \end{equation} \]

高估或低估并非绝对的坏

Q高估和低估并非只有绝对的好坏,这是双面性的。

从探索方面看,高估抑制探索,低估鼓励探索。对于安全强化学习,其目标可以理解为两个:a. 最大化奖励 b. 最小化安全cost,由此可以理由偏差来鼓励探索或者抑制探索,再高cost区域可以对cost critic的低估做处理提高Q值抑制探索。

高估(低估) 和采样的关系

从直觉上来说,如果某些区域采样很少,那么Q估计的方差会很大,一旦某个cost被偶然低估策略就更愿意去那里,于是增加对这些区域的探索,

posted @ 2026-10-07 10:44  boerduo  阅读(3)  评论(0)    收藏  举报