从 Bellman-Ford 到 DQN:为什么 Target 值比当前 Q 值更值得信?
很多人第一次接触强化学习中的 DQN (Deep Q-Network) 时,都会卡在同一个更新公式上:
Q(st,at)←rt+γmaxaQ(st+1,a)Q(s_t, a_t) \leftarrow r_t + \gamma \max_a Q(s_{t+1}, a)Q(st,at)←rt+γamaxQ(st+1,a)
直击灵魂的疑问:
为什么左边的估计值 Q(st,at)Q(s_t, a_t)Q(st,at),要向右边的 target\text{target}target 靠拢?
右边明明也带有一个 QQQ 啊,它也是神经网络自己估出来的,凭什么右边的 target 就更配当"参考答案"?
要真正想通这个问题,最好的切入口不是深度神经网络,而是一个在经典计算机图论中更古老、更朴素的算法------Bellman-Ford(贝尔曼-福特最短路算法)。
虽然严格来说,DQN 直接对应的是 Bellman 最优方程;但通过 Bellman-Ford 的"松弛与信息传播",我们能以最直观的方式,看清楚真实世界的信息是如何一轮轮扩散开来的。
1. 先看 Bellman-Ford:一个"真值"是如何逐步铺满全图的?
假设我们有一张简单的有向图,需要求从起点 SSS 出发到达各个节点的最短距离。
节点的连接与边权如下:
- 起点 S→2AS \xrightarrow{2} AS2 A,权重为 222;同时 S→5BS \xrightarrow{5} BS5 B,权重为 555
- A→2CA \xrightarrow{2} CA2 C,权重为 222;同时 B→1CB \xrightarrow{1} CB1 C,权重为 111
- 终点节点 C→3DC \xrightarrow{3} DC3 D,权重为 333
这里边上的权重,全部是真实、确定的物理代价。
在算法最开始,除起点外,所有距离都是未知的:
d(S)=0,d(A)=∞,d(B)=∞,d(C)=∞,d(D)=∞d(S) = 0, \quad d(A) = \infty, \quad d(B) = \infty, \quad d(C) = \infty, \quad d(D) = \inftyd(S)=0,d(A)=∞,d(B)=∞,d(C)=∞,d(D)=∞
现在,Bellman-Ford 开始逐轮进行"边松弛(Relaxation)":
第 1 轮:由 SSS 探索相邻的 AAA 和 BBB
通过起点 SSS 的真实边,我们获得了第一批确定信息:
d(A)=d(S)+2=2d(A) = d(S) + 2 = 2d(A)=d(S)+2=2
d(B)=d(S)+5=5d(B) = d(S) + 5 = 5d(B)=d(S)+5=5
此时全图最短距离更新为:S=0,A=2,B=5,C=∞,D=∞S=0, A=2, B=5, C=\infty, D=\inftyS=0,A=2,B=5,C=∞,D=∞。
第 2 轮:由 AAA 和 BBB 更新 CCC
到达节点 CCC 有两条支路:
- 走 B→CB \to CB→C:距离为 d(B)+1=5+1=6d(B) + 1 = 5 + 1 = 6d(B)+1=5+1=6
- 走 A→CA \to CA→C:距离为 d(A)+2=2+2=4d(A) + 2 = 2 + 2 = 4d(A)+2=2+2=4
算法自然取最小值(最优解):
d(C)=min(6,4)=4d(C) = \min(6, 4) = 4d(C)=min(6,4)=4
细节亮点 :即使我们先看到了 5+1=65+1=65+1=6 的次优路径,也会立刻被更优的 2+2=42+2=42+2=4 成功纠偏!
此时全图距离更新为:S=0,A=2,B=5,C=4,D=∞S=0, A=2, B=5, C=4, D=\inftyS=0,A=2,B=5,C=4,D=∞。
第 3 轮:由 CCC 更新终点 DDD
顺着最优的 CCC 继续往前走一步:
d(D)=d(C)+3=4+3=7d(D) = d(C) + 3 = 4 + 3 = 7d(D)=d(C)+3=4+3=7
最终全图的最短距离完全收敛锁定:
S=0,A=2,B=5,C=4,D=7S=0, A=2, B=5, C=4, D=7S=0,A=2,B=5,C=4,D=7

看完整张图的演化,最重要的不是代码怎么写,而是它背后的哲学内核:
💡 核心洞察 :
我不需要在一开始就知道通往终点的完整路径有多长。
我只需要拿到**"眼前这一步真实的边权",再加上 "下一站当前的距离估计"**。
只要在全图中反复松弛迭代,局部的真实信息就会像水波涟漪一样,一层一层向远处扩散,最终修正整张图的估计!
也就是:
新的估计=眼前真实的一步+后续状态的当前估计\text{新的估计} = \text{眼前真实的一步} + \text{后续状态的当前估计}新的估计=眼前真实的一步+后续状态的当前估计
理解了这一点,你就已经掌握了 DQN 最核心的秘密。
2. DQN 做的,其实是同一件事
现在,我们把目光从图论切回深度强化学习。
DQN 每次更新时的标杆目标值(Target)写做:
Target=rt+γmaxaQ(st+1,a)\text{Target} = r_t + \gamma \max_a Q(s_{t+1}, a)Target=rt+γamaxQ(st+1,a)
两相对照,你会发现它们的结构完全一致:
| 视角 | 核心公式 | 构成拆解 |
|---|---|---|
| Bellman 视角 | V(s)←minac(s,a,s′)+V(s′)V(s) \leftarrow \min_a \big c(s,a,s') + V(s') \\bigV(s)←minac(s,a,s′)+V(s′) | 一步真实代价 (来自真实边)+ 后续估计(来自当前值) |
| DQN 视角 | Q(st,at)←rt+γmaxaQ(st+1,a)Q(s_t, a_t) \leftarrow r_t + \gamma \max_a Q(s_{t+1}, a)Q(st,at)←rt+γmaxaQ(st+1,a) | 一步真实奖励 (环境即时反馈)+ 未来价值估计 (后继状态的 QQQ) |

在 DQN 中,智能体与环境交互的真实流程是:
- 当前处于状态 sts_tst,执行动作 ata_tat;
- 真实环境向前推进了一步 :智能体真真切切拿到了即时奖励 rtr_trt,并且真的来到了下一个状态 st+1s_{t+1}st+1;
- 到了新状态 st+1s_{t+1}st+1 之后,未来还能拿多少奖励?此时只能再借助神经网络进行估计:maxaQ(st+1,a)\max_a Q(s_{t+1}, a)maxaQ(st+1,a)。
因此,这个 Target 可以被精准地拆成两截:
Target=rt⏟真实发生的一步+γmaxaQ(st+1,a)⏟后续仍然是估计\text{Target} = \underbrace{r_t}{\text{真实发生的一步}} + \underbrace{\gamma \max_a Q(s{t+1}, a)}_{\text{后续仍然是估计}}Target=真实发生的一步 rt+后续仍然是估计 γamaxQ(st+1,a)
而等号左边智能体当前的 Q(st,at)Q(s_t, a_t)Q(st,at) 呢?
它只是网络在迈出这一步之前,凭空脑补出来的"纯预测"!
3. 为什么 Target 比当前 Q 更值得信一点?
答案可以用一句话说明白:
🎯 DQN 每次用真实环境走一步,把一个"纯预测",纠正成了"1步真实 + 后续预测"。
它并不是绝对真理(因为后半截依然包含神经网络的估计),但它切切实实融入了一步现实世界的客观事实!
举一个形象的数值例子:
text
网络原先猜:
Q(s_t, a_t) = 10 分 (这只是网络旧参数下的主观臆测)
智能体在真实环境里走了这一步:
1. 真的拿到了即时奖励 r_t = 3 分
2. 真的落到了新状态 s_{t+1},网络评估这个新状态未来大约值 8 分
计算新参考答案(假设折扣因子 γ = 0.9):
Target = 3 + 0.9 × 8 = 10.2 分
你看,新算出来的标杆 10.210.210.2 分,是用**"落地拿到的 3 分真金白银"**替换掉了原来那部分空中楼阁的猜测。
即便环境带有随机性,这一步也是一次来自物理现实的客观采样。通过海量经验样本的反复回放迭代,真实世界的信息就会一步步倒灌并校准整个 Q 网络。

4. 既然 Target 更好,为什么还需要 Target Network?
既然 Target 的形式是 r+γmaxQ(s′,a)r + \gamma \max Q(s', a)r+γmaxQ(s′,a),那直接用当前正在训练的 Q 网络来计算 Target 不就行了吗?为什么 DQN 还要大费周章地搞出两个网络?
在标准 DQN 中,通常存在结构完全相同的两个网络:
- Online Q Network(在线网络 / 评估网络):参数时刻在通过梯度下降被更新,智能体探索选动作也主要靠它。
- Target Q Network(目标网络):参数被冻结,只负责安安静静地计算训练目标,慢半拍才同步一次。
为什么不能"自己给自己出题并打分"?
因为如果同一个网络既负责被训练,又同时负责生成它自己的参考答案,损失函数就会变成:
Loss=Qonline(st,at)−(rt+γmaxaQonline(st+1,a))2\text{Loss} = \left Q_{\\text{online}}(s_t, a_t) - \\left(r_t + \\gamma \\max_a Q_{\\text{online}}(s_{t+1}, a)\\right) \\right^2Loss=Qonline(st,at)−(rt+γamaxQonline(st+1,a))2
仔细看这个公式:等号两边都在跟着同一个网络参数实时变动!
这就好比一个人在追逐自己的影子:
你刚调整参数让左边往右边靠了一点,右边的 Target 马上因为同一个参数的改动又跑远了。目标不断晃动甚至相互放大,训练极易发散、崩溃!
5. 贪吃蛇追苹果:Target Network 的"慢镜头哲学"
理解 Target Network 的精髓,可以用**"贪吃蛇追苹果"**的绝妙比喻:

场景 A:没有 Target Network(追动态靶)
想象一条蛇在追苹果。如果蛇每往前挪动半步,苹果就像幽灵一样跟着瞬间位移:
- 蛇走一步 →\to→ 苹果移位;
- 蛇再走一步 →\to→ 苹果又漂移;
- 蛇甚至分不清到底是在抓苹果,还是在追自己乱动的尾巴!
学习过程充满震荡,极难收敛。
场景 B:引入 Target Network(追相对固定靶)
DQN 的做法非常朴素而优雅:
- 苹果先钉在桌上一动不动:把 Target Network 的参数暂时冻结(一段时间内不更新);
- 蛇朝着稳定的苹果全力靠近:Online Network 专心致志地进行梯度下降,朝固定的标杆逼近;
- 定期同步:经过几千个 step 之后,再把 Online Network 的最新参数一把拷贝给 Target Network(把苹果挪到下一个更新的位置);
- 循环往复。
此时的损失函数变成了:
Loss=Qonline(st,at)−(rt+γmaxaQtarget(st+1,a))2\text{Loss} = \left Q_{\\text{online}}(s_t, a_t) - \\left(r_t + \\gamma \\max_a Q_{\\text{target}}(s_{t+1}, a)\\right) \\right^2Loss=Qonline(st,at)−(rt+γamaxQtarget(st+1,a))2
🌟 核心结论 :
Target Network 绝不是因为"它比 Online Network 更聪明",它仅仅是一个**"慢一点的自己"**。
它的全部价值就在于------提供一个短时间内不会乱跑的稳定标杆,让复杂的非线性神经网络能够在稳定的水温中完成策略迭代。
6. 最后,把整个 DQN 压缩成三句话
读完本文,如果合上屏幕只能带走三句话,请记住它们:
- Bellman-Ford 启示:局部的真实信息,完全可以通过反复松弛迭代,逐步浸润并铺满整张全局图。
- DQN Target 为什么可信:因为每一次环境交互,都把原本虚无缥缈的"纯预测",替换成了**"1步真实世界反馈 + 后续预测"**。
- Target Network 的本质:它故意慢半拍,不是为了更聪明,而是为了把标杆暂时钉住,避免陷入"自己追自己尾巴"的震荡陷阱。
下次再看到强化学习里复杂的数学公式时,不妨在脑海中浮现出这两个画面:
- 终点湖面上被投下一颗石子,真值像涟漪一样一圈一圈泛回起点;
- 一条小蛇正坚定地爬向一颗被稳稳固定在桌面上的红苹果。