假如你和姐姐合开一家美食探店账号。姐姐有“职业病”——每进一家餐厅,她先不看菜单,而是环顾装修、观察服务员的脸色、感受地段人流,心里默默给“这家店整体值几分”打个底。妹妹则相反,她翻开菜单,每道菜都要和这家店的平均水平比一比:“这道招牌菜比普通菜高出一截,那道例汤就平平无奇。”你们最后发布的综合推荐分,恰好就是姐姐的“整店分”加上妹妹的“相对分”。 这个分工逻辑,就是强化学习里 Dueling DQN 的核心思想。传统的 DQN 网络像一个人同时包揽两件事:既评估“当前状况本身值多少钱”,又评估“每个具体动作比别的动作强多少”,结果两件事糊在一起,训练慢、还容易互相干扰。Dueling DQN 干脆把网络“末尾”拆成两条分支:一条输出状态价值 V(s)——姐姐的整店分,另一条输出动作优势 A(s,a)——妹妹的相对分,最后再合并成总评分 Q(s,a)。这样一来,哪怕某个状态下几个动作都差不多(妹妹无话可说),姐姐的整店分依然在持续提供有效信息,训练效率和稳定性都明显提升。 这套思路在自动驾驶、云资源调度、游戏 AI 等场景中已经成为主流基本功。对 AI 从业者来说,理解 Dueling DQN 不只是多背一个网络结构,而是学会一种“把问题按信息角色拆解”的建模直觉——这正是从调参选手走向算法设计者的关键一步。
学会 Dueling DQN,你将理解如何通过“先评估全局、再比较局部”的结构设计,让强化学习在动作差异小的场景中训练更快、估计更准,这是实际工程中提升模型性价比的必修课。
可视化演示
展示Dueling DQN核心原理:Q值分解为状态价值V(s)与动作优势A(s,a)、Dueling网络架构(共享层→价值流+优势流→均值去耦合并)和与标准DQN训练对比(稳定性提升/方差降低),三模式理解Dueling DQN。
本节配有交互动效(进入视口后自动加载,约 3KB)。
'+C1+'
从 Q 表到 DQN
姐姐的探店小本本一开始只有薄薄几页:固定的三家餐厅、固定的几道菜,每道菜记一个分数,点菜时直接翻本本找最高分。这就是最原始的 Q 学习——用一张表格记录“在哪个状态、做哪个动作”值多少分。可真实世界太大了:餐厅从三家变成三万家,每家的菜单还天天更新。小本本根本记不下,就算记下了,翻找也来不及。姐姐改用“经验直觉”:吃过的菜足够多之后,看到一家新店、一道新菜,凭感觉就能估出分数。这份“直觉”就是神经网络,而用神经网络代替 Q 表的方法,正是 DQN。
DQN 的核心理念是“用数据修正直觉”。它每次获得一条经验——在某个状态 s 做了动作 a,得到奖励 r,跳到下一个状态 s'——然后问自己:我这次的估计准不准?衡量准不准的依据,是经典的 TD 目标:当前的奖励加上“下一状态能拿到的最优未来收益”。两者之差就是需要修正的方向,专业上叫 TD 误差。
\displaystyle \theta^{-}\leftarrow \theta \ \text{每隔若干步}\ \Leftarrow
- 预测值 Q(s,a;θ)当前网络对“状态 s 下做动作 a 值多少分”的估计。θ 是网络的所有参数(权重),预测值就是神经网络的前向输出。
- 目标值 yr 是刚拿到的即时奖励,后面那项是“到了新状态 s′ 后,未来还能拿到的最大收益”——两者相加才是更接近真相的分数。
- 目标网络参数 θ⁻计算未来收益时用的是另一个“冻结”的网络,参数固定一段时间再同步,避免“一边追自己尾巴一边跑”造成的震荡。
双分支架构
\displaystyle Q(s,a)=V(s)+A(s,a)
> 总评分 = 状态本身的分数 + 这个动作相对平均水平的加分或减分。就像探店总分 = 整店分 + 菜品相对分。1. 总评分 Q(s,a):在状态 s 下选择动作 a 的综合分数,是最终用于决策的值。$$\displaystyle Q(s,a)=V(s)+A(s,a)$$2. 整店分 V(s):与具体动作无关,只评估"身处状态 s 本身值多少",由 V 分支输出一个标量。$$\displaystyle V(s)\in \mathbb{R}$$3. 相对分 A(s,a):每个动作 a 对比该状态平均水平的优势或劣势,由 A 分支输出一个向量(每个动作一个值)。$$\displaystyle A(s,a)\in \mathbb{R}^{|\mathcal{A}|}$$从网络图上看,输入经过共享层后,上面一条线通向 V 节点,下面一条线通向 A 节点,最后汇合到 Q 节点。数据流像一条河分成两条支流,再汇入同一个湖泊。这个"分叉"结构,就是 Dueling(决斗)二字的由来——两个头各司其职,不再混为一谈。状态价值 V
姐姐的工作说起来简单:一进店门,不管点什么菜,先在心里给这家店打一个“底分”。地段好不好、装修新不新、服务员热不热情——这些因素和具体点哪道菜没有关系,却决定了你这一餐的体验下限。如果这是一家开在犄角旮旯、卫生堪忧的小馆子,哪怕有一道菜惊为天人,整体体验也要打个折扣。状态价值 V(s) 就是这个底分:它衡量的是“当你到达状态 s 时,未来所有可能收益的期望总和”,至于后续选哪个动作,它一概不管。
在数学上,V(s) 是从状态 s 出发、按照某个策略行动时,未来折扣奖励总和的期望值。折扣因子 γ 像一个“时间的贬值率”:一年后的 100 块,折算到现在可能只值 90 块。离现在越远的奖励,对当下决策的影响越小,这符合直觉——谁会在意十年后的一顿饭呢?
姐姐的底分有个好处:它能被反复复用。哪怕妹妹对每道菜的评价都变了,只要这家店的环境没变,姐姐的底分就不用重新算。这种“一次评估,处处受益”的特性,正是后面训练效率提升的关键。
- 条件期望在已知当前状态是 s 的前提下,对未来的随机收益取平均。
- 折扣奖励总和从下一时刻开始,把每个时刻的奖励 r 乘上折扣率 γ 的 k 次方再加起来——越远越不值钱。
- V 分支的输出整个 V 分支最终只输出这一个标量,它告诉决策者“现在这个局面本身值不值得期待”。
优势函数 A
妹妹的工作笔记上总是写满“相对”两个字。她从来不给一道菜打绝对分——“这道菜好不好”要看跟谁比。在这家米其林三星餐厅,一道普通的炒时蔬可能只值 3 分;换到路边小馆,同样的炒时蔬可能算得上惊艳。所以妹妹的评分方式是:先看这家店所有菜的平均水平,然后给每道菜打一个“比平均水平高多少或低多少”的分数。这个相对分就是优势函数 A(s,a)。
从数学上讲,优势函数就是“动作的总分”减去“状态价值”:A(s,a) = Q(s,a) - V(s)。它回答的问题是:在状态 s 下,动作 a 到底比“随便怎么选的平均水平”强多少?如果 A 是正数,说明这个动作优于平均水平,值得优先考虑;如果 A 是负数,说明这个动作拖后腿。注意一个关键细节:最终决策时,由于 V(s) 对所有动作一视同仁,比较 argmax 时 V 会直接抵消——也就是说,动作的选择只取决于优势函数的相对排序,与整店分无关。
有了妹妹的相对分,点菜就有章法了:妹妹说“这道菜比其他菜高出一大截”,那就点它。但这里出现了一个新问题——如果姐姐的底分和妹妹的相对分可以随意“你减我加凑总和”,那姐妹俩的账不就对不上了吗?这正是下一节要解决的难题。
- 差值定义把 Q(总评分)拆掉 V(状态底分),剩下的就是“动作带来的额外贡献”。
- 正负含义A > 0 表示该动作优于状态平均水平,A < 0 表示劣于平均水平。
- 决策等价因为 V(s) 与动作无关,选择 Q 最大的动作等价于选择 A 最大的动作。
聚合与约束
姐妹俩第一次试运行时就吵了起来。姐姐说这家店给 8 分,妹妹说招牌菜比平均高 2 分,总分 10。可妹妹转头一想:我要是说招牌菜比平均高 7 分,姐姐把整店分改成 3 分,总分不还是 10?读者看不出任何区别,但姐姐觉得自己白干了。这在数学上叫“可辨识性问题”:给定一个 Q 值,V 和 A 的拆法有无穷多种,加个常数再减掉同一个常数,Q 纹丝不动。如果网络不加以约束,梯度会在两个分支之间“打架”,训练不稳定。
解决思路很简单:给妹妹的评分定一个参考基准。常见有两种做法。第一种是 max 约束:规定“这家店里最好那道菜相对分是 0”,其他菜的相对分都是负数或零。第二种更常用的是均值约束:规定“所有菜的平均相对分是 0”,也就是把 A 的中心拉到 0 的位置。这样做之后,V 和 A 的组合就唯一了,梯度方向也清晰了。
定下“平均菜为 0 分”的规矩之后,姐妹俩的账终于对上了。姐姐安心评环境,妹妹专心比菜品,两个分支各学各的,训练过程也变得顺滑。这个均值约束,如今是 Dueling DQN 里最常用的标准配置。
- 不唯一性问题如果不做约束,V 加常数 C、A 减常数 C,Q 不变,网络不知道该往哪个方向更新。
- 均值项对所有动作的优势取平均,得到当前状态下动作优势的中心。
- 中心化后的 Q让 A 的分围绕 0 波动,V 才能真正承载“状态本身的价值”,二者不再相互混淆。
训练效率
妹妹曾经抱怨:“以前没有分工的时候,每评估一道新菜,都要把餐厅整体环境重新考察一遍,太浪费了!”这话说到点子上了。在普通 DQN 中,Q 值包含状态和动作两部分信息,如果某个状态下所有动作的 Q 值都差不多,网络更新时梯度会非常小,学习缓慢——就像一家餐厅的菜都很平庸,很难从评分中分辨差异。而 Dueling DQN 把 V 独立出来后,无论动作优势多么接近,V 分支每步都能从 TD 误差中获得有效梯度,持续学习“这个状态整体值多少”。
从梯度角度看,聚合公式 Q = V + A - mean(A) 直接嵌入 TD 目标。对选中动作 a,优势分支的梯度带一个系数 (1 - 1/n);对未选中的动作,由于均值项的存在,也会收到一个 -1/n 的小梯度。更重要的是,V 分支的梯度就是完整的 TD 误差 δ——它不依赖具体选择了哪个动作,因此状态价值的信息能被反复利用。这种“冗余梯度减少”特性,让 Dueling DQN 在样本利用率上明显优于普通 DQN。
姐姐的底分成了训练里的“定海神针”:即使某个状态下动作差异微乎其微,底分也在持续积累经验。这正是 Dueling 网络在大量场景中比 DQN 收敛更快、曲线更稳的根本原因。
- TD 误差 δ表示当前估计与目标之间的差距,是所有梯度的源头。
- V 分支的梯度对 V 求导,梯度就是 δ,与动作无关,因此每个状态访问都能稳定更新。
- A 分支的梯度选中动作的梯度含 (1 - 1/n) 因子,未选中动作收到 -δ/n 的“分摊信号”,来自均值项的回传。
实战应用
既然姐妹俩分工这么高效,是不是所有餐厅探店都该请她们?不一定。如果一家餐厅每道菜差异极大——比如一道菜封神、其余都是雷——妹妹的相对分信息量就非常大,姐姐的整店分反而可有可无。反之,如果餐厅整体环境千差万别、但菜与菜之间都差不多(比如连锁快餐),姐姐的整店分就成了决定性的信息。这个判断准则,正是 Dueling DQN 的适用条件:状态价值差异大、动作优势差异小的场景,收益最大。
一个经典的例子是游戏 Atari 中的赛车游戏 Enduro:画面里路况每时每刻都在剧烈变化(状态价值 V 差异大),但驾驶动作(左转、右转、加速、刹车)之间的相对优势差异比较小。Dueling DQN 在这种游戏中大幅超越了 DQN。相反,如果在乒乓球游戏中,动作的选择(上移、下移)直接决定胜负、优势差异极大,Dueling 的提升就有限。选型时记住这个判据,能帮你少走弯路。
那对姐妹最终成了探店圈的金字招牌——她们明白自己的方法强在哪里、弱在哪里。工程上也是一样,Dueling DQN 不是银弹,但当你面对“整体形势主导、细节动作次要”的决策问题时,它就是那把最顺手的刀。
- 聚合决策把 V 和中心化后的 A 相加,取最大 Q 对应的动作作为策略。
- 公共项约去V 与均值项都与 a 无关,比较时相互抵消,只剩下 A 的排序。
- 适用判据当状态间 V 的差异远大于同状态下 A 的差异时,Dueling 的收益最明显。
AI 应用场景
云平台自动扩缩容
阶段:在线决策 / 策略学习
解决的问题:传统基于 CPU 阈值的扩缩容规则滞后且容易抖动——负载飙升时来不及扩容,突发结束后又迟迟不缩容。Dueling DQN 将“当前负载状态值得投入多少资源”(V)与“扩容、缩容、保持不变”三种动作的相对优劣(A)分开建模。当动作间优势差异较小时,V 分支依然能稳定更新,避免梯度消失。
具体案例:某云平台每 10 秒采集 CPU、内存、请求量作为状态,Dueling DQN 输出扩缩容动作。训练初期负载较低时,三个动作的 Q 值接近,普通 DQN 学习缓慢;Dueling 的 V 分支迅速学会了“请求量持续上升时状态价值变高”,提前数分钟完成扩容决策,资源浪费减少约 20%。
自动驾驶路口决策
阶段:模型训练 / 仿真验证
解决的问题:无人车在路口的决策中,路况整体信息(是否绿灯、前方是否有行人、车流密度)对收益影响巨大,而“左转、直行、右转”这几个动作的相对优势差异往往较小。Dueling 结构让 V 分支快速捕捉全局形势,A 分支专注比较各动作的细微差别。
具体案例:在 Carla 仿真环境中,某团队用 Dueling DQN 训练路口通行策略,比普通 DQN 提前约 30% 的训练轮数达到相同的通过率,且高峰期“犹豫不决”(频繁切换动作)的现象明显减少。
短视频推荐排序
阶段:离线训练 / 在线推理
解决的问题:推荐系统中,用户状态的价值(活跃度、疲劳度、兴趣浓度)在很大程度上决定用户是否会继续刷,而具体推荐内容的相对优势差异相对小且稀疏。Dueling DQN 将“用户状态理解”沉淀在 V 分支,将“内容间的相对吸引力”放在 A 分支,两者共享特征层,减少重复训练。
具体案例:某短视频平台在模拟环境中用 Dueling DQN 优化推荐策略,发现只需训练原来一半的步数就能达到 DQN 的效果,且在用户疲劳状态(V 低)下不再盲目推热门视频(A 差异小),而是主动推送轻松内容。
Python 演示
import numpy as np # Toy env: 4 states in a ring, action 0 moves forward, action 1 stays.# State 3 gives reward +1. Dueling DQN learns to favor action 0.N_STATE, N_ACT, GAMMA = 4, 2, 0.9EPS_INIT, EPS_MIN = 0.4, 0.05HID = 8 # hidden size of shared layer def env_step(s, a): ns = (s + 1) % N_STATE if a == 0 else s r = 1.0 if ns == 3 else 0.0 return ns, r # Dueling network: one-hot input -> shared tanh layer -> V head + A headWc = np.random.randn(N_STATE, HID) * 0.3bc = np.zeros(HID)Wv = np.random.randn(HID, 1) * 0.3bv = np.zeros(1)Wa = np.random.randn(HID, N_ACT) * 0.3ba = np.zeros(N_ACT) def forward(x): h = np.tanh(x @ Wc + bc) v = float(h @ Wv + bv) adv = h @ Wa + ba q = v + adv - adv.mean() # mean-centering constraint return h, v, adv, q def act(s, eps): if np.random.rand() < eps: return np.random.randint(N_ACT) _, _, _, q = forward(np.eye(N_STATE)[s]) return int(np.argmax(q)) def train(episodes=400, max_steps=40, lr=0.08): global Wc, bc, Wv, bv, Wa, ba for ep in range(episodes): eps = max(EPS_MIN, EPS_INIT * (1.0 - ep / episodes)) s = 0 for _ in range(max_steps): a = act(s, eps) ns, r = env_step(s, a) x = np.eye(N_STATE)[s] h, v, adv, q = forward(x) target = r + GAMMA * float(np.max(forward(np.eye(N_STATE)[ns])[3])) delta = float(q[a] - target) dA = np.zeros(N_ACT) dA[a] = delta * (1.0 - 1.0 / N_ACT) dA[np.arange(N_ACT) != a] = -delta / N_ACT dV = delta dh = dV * Wv[:, 0] + dA @ Wa.T dh_raw = dh * (1.0 - h * h) # tanh derivative Wv -= lr * dV * h.reshape(-1, 1) bv -= lr * dV Wa -= lr * np.outer(h, dA) ba -= lr * dA Wc -= lr * np.outer(x, dh_raw) bc -= lr * dh_raw s = ns if ep % 50 == 0: _, v, adv, q = forward(np.eye(N_STATE)[1]) print('ep %d | V(1)=%.3f | A(1,0)=%.3f | Q(1,0)=%.3f' % (ep, v, adv[0], q[0])) train()
q = v + adv - adv.mean()均值中心化聚合,等价于论文中推荐的公式(9),让 V 与 A 的分解唯一。target = r + GAMMA * float(np.max(forward(np.eye(N_STATE)[ns])[3]))TD 目标依然是 DQN 的 max Q,证明 Dueling 只改了网络结构,没改学习准则。dA[a] = delta * (1.0 - 1.0 / N_ACT)选中动作优势的梯度带 (1 - 1/n) 因子,来自对 Q 中 A 项的求导。dA[np.arange(N_ACT) != a] = -delta / N_ACT未选中动作也收到 -δ/n 的梯度,这是均值约束带来的“分摊信号”。dh_raw = dh * (1.0 - h * h)共享层梯度先汇聚 V 和 A 两个分支的回传,再过 tanh 导数,体现“共享层间接受益于两个头的信息”。Wc -= lr * np.outer(x, dh_raw)共享层参数更新依赖于两个头的合力,这正是 Dueling “一次特征提取、双头复用”的落点。
常见误区
误区我一开始以为 Dueling 网络把 TD 目标从 r + γ max Q(s',a') 换成了新的复杂公式,训练逻辑完全不同。
正解TD 目标并没有变,变的只是对 Q 值的估计方式——把网络末尾的单头输出换成 V、A 双分支再聚合。就像餐厅点评的“口味核对标准”没变,只是姐妹俩作了分工。训练时依然用同样的 TD 误差做反向传播,只是 Q 的内部结构换成了 V + A - mean(A)。
为何常见:看到网络结构从单头变成双头,直觉上以为学习目标也配套升级了,其实“结构改”和“目标改”是两回事。
误区A 分支输出的就是“这个动作值多少分”,分数越高越值得选,跟 Q 差不多。
正解A 是优势(advantage),是一个相对量:A = Q - V。它表示“该动作比这个状态的平均水平好多少”,完全可以是负数——甚至所有动作的 A 都可能是负的(整店分高,但整体菜品平庸)。决策时虽然只比较 A 的相对大小,但 A 的绝对值并不等于动作的真实回报。
为何常见:“优势”这个词容易让人联想到“优点/分数”,忽略了它本质是差值,而不是独立估值。
误区网络有两个输出头,那应该给 V 头设计一个损失、给 A 头设计另一个损失,各自更新。
正解两个分支共享同一条反向传播路径,只有一个 TD 误差。对选中动作,V 分支收到完整的梯度 δ,A 分支按 (1 - 1/n) 和 -1/n 的系数分摊信号。比喻:姐妹俩看的是同一份顾客反馈(TD 误差),只是各自按职责记录不同维度的信息。
为何常见:结构图画着两条独立分支线,容易以为训练时也是两条独立的流水线。
误区论文在 Atari 上拿了 SOTA,那不管什么任务,直接换成 Dueling 架构肯定不吃亏。
正解Dueling 的优势有前提条件:状态价值差异大、动作优势差异小。如果动作之间的优势差异本身就主导了收益(比如乒乓球游戏中上移下移直接决定输赢),拆分后的提升就很有限。比喻:整店环境都差不多、菜与菜差距悬殊的餐厅,姐姐的整店分就提供不了太多新信息。
为何常见:看到 SOTA 结论就以为普适,忽略了算法适用的任务结构前提,这也是“拿着锤子看什么都像钉子”的常见毛病。
面试题
Q1. Dueling DQN 相比普通 DQN 最大的结构变化是什么?
- A.加大了网络深度
- B.将 Q 值分解为 V(s) 与 A(s,a) 两条分支← 正确答案
- C.增加了 LSTM 层
- D.使用双网络更新参数
答案:B。Dueling 的核心是把网络末端拆成 V 头与 A 头,最后再聚合成 Q,这正是“姐姐评整店、妹妹比菜品”的分工。加大深度、加 LSTM、双网络都不是 Dueling 的标识性改动。
Q2. 优势函数 A(s,a) 的定义式是下列哪一个?
- A.Q(s,a) - V(s)← 正确答案
- B.V(s) + Q(s,a)
- C.r + γV(s')
- D.Q(s,a) / V(s)
答案:A。A 描述的是“动作相对状态平均水平的增量”,所以是总评分减去状态价值。B 是加法不对,C 是 TD 目标,D 的除法没有定义优势。
Q3. Dueling DQN 最终选择动作时,主要依据以下哪一项?
- A.V(s) 的大小
- B.A(s,a) 的相对排序← 正确答案
- C.即时奖励 r
- D.折扣因子 γ
答案:B。因为 V(s) 对所有动作是公共项,比较 argmax 时会被约掉,所以决策只由优势函数的排序决定,就像点菜时只看妹妹的相对分排序。
Q4. 为什么 Q = V + A 直接训练会出现可辨识性问题?
- A.V 和 A 的组合不唯一,存在无穷多种分解← 正确答案
- B.神经网络无法拟合 Q 函数
- C.动作空间太大导致计算爆炸
- D.奖励信号始终为负
答案:A。给 V 加上常数 C、A 减去同一个 C,Q 值不变,所以同一份 Q 可以对应无数种 V/A 拆法,梯度会在两分支间拉扯。神经网络能拟合 Q,问题在于分解不唯一,与动作空间大小、奖励正负无关。
Q5. 均值中心化约束 Q = V + A - mean(A) 的主要作用是什么?
- A.加速 GPU 矩阵运算
- B.让 V 与 A 的分解唯一,训练更稳定← 正确答案
- C.增加探索噪声
- D.降低奖励的方差
答案:B。减去所有动作优势的平均值,等于强制“平均优势为 0”,给妹妹的相对分定了基准,分解就唯一了。它与计算速度、探索、奖励方差没有直接关系。
Q6. 在下列哪种场景中,Dueling DQN 相对普通 DQN 的提升最明显?
- A.动作间优势差异极大、状态间差异小
- B.状态价值差异大、动作间优势差异小← 正确答案
- C.任意随机场景都能稳定提升
- D.只有连续动作空间才能体现优势
答案:B。当整体状态的价值主导收益、动作的相对差异较小时,V 分支能持续提供有效梯度,这是 Dueling 的最佳舞台。动作差异极大时 A 分支已经够用,拆分收益有限;它不是银弹,也不限于连续动作。
Q7. Dueling DQN 中 V 分支的价值体现在哪些方面?
- A.提供与具体动作无关的状态评估← 正确答案
- B.在动作优势差异小时仍持续获得有效梯度← 正确答案
- C.可以直接用于选择最优动作
- D.减少冗余梯度更新← 正确答案
答案:ABD。V 分支给状态打底分,与动作无关,所以在 A 差异小时依然能学习,也减少了重复更新,因此 A、B、D 都正确。选择动作靠的是 A 分支的相对排序,C 错误。
Q8. 关于 Dueling DQN 的训练,下列说法正确的有哪些?
- A.TD 目标仍为 r + γ max Q(s',a')← 正确答案
- B.共享层提取的特征同时提供给 V 与 A 两个分支← 正确答案
- C.使用均值约束不会改变 argmax 决策← 正确答案
- D.V 分支需要单独用监督信号训练
答案:ABC。TD 目标确实没变,只是 Q 的内部结构换了;共享层的确同时向两个分支输送特征;均值约束只是整体平移,不影响动作排序,所以 A、B、C 正确。V 分支与 A 分支共用同一个 TD 误差联合训练,不需要单独的监督信号,D 错误。
Q9. 若 Dueling 网络采用 max 约束(Q = V + A - max A),下列说法正确的是?
- A.最优动作的优势被强制为 0,其余动作的优势为非正值← 正确答案
- B.所有动作的优势都大于 0
- C.V 的值等于平均回报
- D.max A 等于 V
答案:A。max 约束让所有 A 减去最大值,于是最大 A 变为 0,其余动作的 A 小于等于 0。它只是给 A 定了“最优为 0”的基准,不要求 V 等于平均回报,B、C、D 都不成立。
Q10. 在实现 Dueling DQN 时,关于反向传播梯度,下列说法正确的有哪些?
- A.选中动作 a 的 A 分支梯度带 (1 - 1/n) 因子← 正确答案
- B.未选中动作的 A 也会收到 -1/n × δ 的梯度← 正确答案
- C.V 分支只接收未选中动作的梯度信号
- D.共享层同时收到来自 V 与 A 两个分支回传的梯度← 正确答案
答案:ABD。对 Q = V + A - mean(A) 求导,选中动作的 A 梯度系数是 (1 - 1/n),未选中的是 -1/n,A、B 正确。V 分支的梯度就是完整的 δ(来自选中动作的 TD 误差),不是只接收未选中动作的信号,C 错误。共享层的梯度由 dV·Wv 与 dA·Wa 两部分相加得到,确实同时接收两个分支的回传,D 正确。