想象2015年的一个街机厅里,一位名叫“小Q”的少年坐在一台复古游戏机前。屏幕上是花花绿绿的打砖块画面,小Q一开始只会乱按按钮,屏幕上得分的数字忽高忽低。但神奇的是,几个小时后,小Q的操作行云流水,分数飙到了人类玩家望尘莫及的高度——他是怎么做到的? 小Q的秘密在于,他把自己练成了两个“师父”的得意弟子:一个叫“深度学习”,负责看懂画面;一个叫“强化学习”,负责从结果中学习。深度学习让他能从密密麻麻的像素中自动看出“球在左边”“砖块快清完了”,强化学习让他不断试错、根据得分调整策略。这两者合体,就是今天的主角——DQN(Deep Q-Network,深度Q网络)。 这篇文章会带你认识小Q的完整修炼手册:他从一本记满分数的笔记本(Q表),升级为一台能预测分数的“直觉引擎”(神经网络);他还会备好一本“记忆相册”(经验回放)、请一位“稳定教练”(目标网络),并在“尝试新招”和“用稳招”之间找到平衡。你会发现,这些听起来高深的概念,其实都来自生活中最朴素的智慧。
对 AI 从业者而言,DQN 是深度强化学习的基石。掌握它,你就拥有了让 AI 通过“试错+复盘”学会决策的能力,这是自动驾驶、游戏 AI、机器人控制等热门方向的核心入场券。
目录
可视化演示
展示DQN三大核心创新:深度网络近似Q函数(CNN处理像素状态)、经验回放(缓冲区随机采样打破相关性)、目标网络(稳定TD目标),及完整训练循环。
本节配有交互动效(进入视口后自动加载,约 3KB)。
'+captions.arch+'
DQN起源:深度学习遇见强化学习
小Q第一次坐在Atari街机前时,眼前是几十万个像素组成的画面。如果让他用“记笔记”的老办法来学习——把每一种画面、每一种按键、每一种得分都记下来——他记一辈子也记不完。幸运的是,2013年DeepMind的科学家们给小Q请来了两位师父:一位是“视觉大师”深度学习,负责把像素变成有用的线索;一位是“试错大师”强化学习,负责从得分中总结策略。两人联手,小Q终于能驾驭高维的游戏画面了。
在强化学习的标准框架里,小Q的每一局游戏都可以抽象成一个数学故事。这个故事里有小Q能看到的所有画面(状态)、能做的所有操作(动作)、画面切换的规律(状态转移)、每回合的得分(奖励),以及一个决定“当下得分和未来得分谁更重要”的折扣因子。把它们打包在一起,就得到了马尔可夫决策过程(MDP)——强化学习的通用语言。
正是这五位“说明书成员”,让深度学习和强化学习有了合作的接口。画面是神经网络的输入,得分是回传给网络的信号。小Q的“直觉引擎”就是从这份说明书中学会了如何玩转街机。可以说,没有MDP这个框架,深度学习根本不知道该如何“看懂游戏”。
- 状态集合 S智能体观察到的所有可能情况,如同一款游戏里所有可能的画面帧。
- 动作集合 A智能体在每个画面下可以执行的操作,比如“向左”“向右”“开火”。
- 状态转移概率 P执行某个动作后,从当前画面跳转到下一画面的可能性分布。
- 奖励 R 与折扣因子 γ奖励函数给出即时得分,γ 决定“眼前的分”与“未来的分”哪个更重要。
Q函数演进:从笔记本到直觉引擎
小Q最初学打游戏时,随身带了一本厚厚的笔记本。每当他看到一个画面、按下一个按键,就会在对应的格子里记下一个分数估计值——这就是经典的Q表(Q-Table)。Q-Learning算法就是靠不断翻阅这张表来学习的:每次得到新分数,就用它修正旧估计。但问题很快出现了:Atari画面有天文数字种组合,笔记本根本写不下,小Q翻到哪一页、怎么定位都成了噩梦。
于是小Q做了一个改变一生的决定:把笔记本扔掉,换成一个“直觉引擎”。这个引擎不需要记住每一个画面,而是像老练的球手一样,看到一个陌生画面就能凭经验估出“这个局面大概值多少分”。这就是函数近似——用神经网络把“画面→动作分数”的映射泛化到从未见过的状态上。Q函数也从一张死板的表格,进化成了一个灵活的神经网络。
在DQN中,Q表的“格子”被替换成了神经网络的参数,更新方式也从“翻笔记本改数字”变成了“调整神经网络连接强度”。小Q不再需要记住每一帧画面,他拥有了泛化的直觉。这也是DQN面对高维状态空间时最大的底气——见过类似的局面,就能举一反三。
- 旧估计值 Q(s,a)当前画面 s 下做动作 a,笔记本上记录的旧分数。
- 学习率 α每次修正的步子大小,α太大会走过头、太小会学得慢。
- 时序差分目标现实给的即时奖励 r,加上未来最优情况的折扣估计,是这次学习的“参考答案”。
- 时序差分误差参考答案与旧估计的差,差值越大说明越需要修正。
神经网络结构:小Q的直觉引擎
这台“直觉引擎”长什么样?它是一台层层加工的打分机器。游戏画面先进入卷积层——就像小Q的眼睛,自动扫描画面中的局部图案:球在哪、挡板在哪、砖块还剩几排。卷积层像一层层放大镜,从细小纹理中拼出“局面特征”。这些特征再被送到全连接层——相当于小Q的“决策中枢”,把各路信息汇总,最终为每个按键输出一个预测分数:按左得几分、按右得几分、开火得几分。
从训练目标来看,DQN做的其实不是分类,而是回归——预测一个具体的分数数值。它不像图像分类那样输出“这是猫的概率”,而是输出“当前局面下每个动作的长期回报估计”。神经网络的输出层有4个节点(对应Atari的4个动作),每个节点就是一个Q值。整个网络的训练,就是让这些预测分数越来越接近真实的回报。
卷积层负责“看”,全连接层负责“想”,二者合作让小Q从一个像素小白变成能够机敏应对的街机高手。值得一提的是,这个“直觉引擎”不仅看单帧画面——为了捕捉球的运动轨迹,DQN通常会把连续4帧画面叠在一起作为输入,就像小Q不仅看眼前,还记得前几帧的残影。
- 网络参数 θ神经网络里所有连接权重和偏置的集合,相当于直觉引擎的“肌肉记忆”。
- 当前预测 Q(s,a;θ)输入画面 s 后,网络给出的动作 a 的预测分数。
- 最优Q值 Q\*(s,a)理论上在画面 s 下做动作 a 能获得的最完美长期回报,是学习的终极目标。
经验回放:小Q的记忆相册
小Q训练时有一个坏习惯:总是只回忆刚刚发生过的事。刚撞了墙,他就只记得撞墙;刚得分,他就只想着得分。这导致他的学习忽左忽右、摇摆不定。科学家们给他支了一招——准备一本记忆相册(经验回放池)。小Q每走一步,就把“当时画面、按了什么键、得了多少分、之后变成什么画面”这一组经历拍成一张照片,夹进相册里。学习的时候,他不看最近的经历,而是从相册里随机抽出几张旧照片来回味。
这本相册带来两个巨大的好处。第一,它打破了样本之间的相关性:如果按时间顺序学习,相邻样本高度相似,网络会被某个局部的“突发情况”带偏;而随机抽取让每次学习的样本来自天南地北,网络看到的是“均衡的百态人生”。第二,它让一份经验被反复使用:一局游戏产生的照片可以被抽出来学很多次,小Q复盘的效率大大提升,这在数据昂贵的现实场景中尤其珍贵。
经验回放简直就是“复盘式学习”的极致体现:学得慢没关系,但要学得广、学得稳。小Q靠这本相册,把每一局的经验都榨出了最大价值。可以说,没有经验回放,DQN的训练早就被“连吃败仗后的情绪化记忆”搅得天翻地覆。
- 经验元组一条完整记录——当前画面、采取的动作、得到的奖励、结束后的画面。
- 经验池 D装下最近 N 条经验的“大相册”,容量有限,新照片进来、旧照片被挤走。
- 均匀随机采样每次学习从相册中随机抽一小批,而不是按时间顺序取。
目标网络:小Q的稳定教练
小Q在训练中还遇到过一个问题:他给自己打分时,标准一直在变。这一秒他觉得“向右走值10分”,下一秒又把同样局面改成“向右走值8分”——他用自己飘忽不定的预测去纠正自己的预测,结果越学越乱。这就好比一个人拿一面哈哈镜来校对自己,永远不知道真实长相。为了解决这个问题,小Q请来了一位教练(目标网络)。
教练手里有一套固定的评分标准(参数 θ⁻),小Q学习时,先让教练打分,再把教练的分数当作“参考答案”来调整自己。教练的评分标准不是每时每刻都在变的——每隔固定的 C 步,教练才更新一次自己的标准(把主网络最新的参数复制过来)。这样一来,小Q有了一段“标准稳定”的学习窗口,不会因为目标值天天变而陷入震荡。
教练的存在,让小Q的学习从“追逐一个移动靶”变成了“瞄准一个固定靶”。目标网络和主网络这对“师生组合”,是DQN训练稳定性的定海神针:老师负责给标准,学生负责追赶,每隔一段周期师徒再切磋一次、交换心得。
- 目标值计算用目标网络(教练)算出的折扣最优未来分数,加上即时奖励,作为参考答案。
- 预测值主网络(小Q)自己给出的当前动作分数。
- TD误差平方预测与参考答案之差的平方,误差越大、损失越大、需要调整的幅度越大。
- 期望与平均对从经验池中随机采出的整批样本求平均损失。
探索利用平衡:尝试新招还是走老路
小Q玩到中期遇到了一个灵魂拷问:每次轮到操作时,到底是选自己最拿手的按键(利用探索过的经验),还是故意乱按一个新键(探索未知)?如果一直用老招,他可能永远发现不了“连招”的新大陆;如果一直乱按,他则永远学不会任何有效套路。这个矛盾,在强化学习里叫作“探索与利用的平衡”。
DQN的解法很简单粗暴却极其有效:ε-greedy策略。小Q平时带着一枚“命运硬币”——以概率 ε 决定“这步我要乱按”,以概率 1-ε 决定“这步用我目前认为最好的按键”。训练刚开始时,ε 设得比较大(比如0.5),小Q像个好奇宝宝到处乱试;随着水平提高,ε 逐渐衰减到很小的值,小Q开始收敛——把精力放在打磨已知的好策略上,只在极少数时候用新点子冒冒险。
探索和利用就像小Q生活中的“尝鲜”与“吃老本”:年轻气盛时什么都想试,成熟稳健后才懂得深耕。ε-greedy看似简单,却藏着强化学习最深奥的哲学——没有足够的探索,你永远不知道自己错过了什么;没有果断的利用,你永远无法把发现变成分数。
- 最优动作选择选择让 Q 值预测最大的动作,即以当前认知执行最佳策略。
- 随机动作在所有动作中等概率随机选一个,制造“意外”的探索机会。
- 概率 ε 控制ε大则探索多、ε小则利用多,训练中让ε从高位缓慢下降。
损失函数训练:让直觉越来越准
有了稳定的教练和丰富的经验相册,小Q的日常训练就变成了一个循环:主网络给出预测分数,目标网络给出参考答案,两者一比,差距就是损失。小Q的目标只有一个——让这个损失越来越小。这背后的数学工具,就是深度学习中大名鼎鼎的梯度下降:沿着损失函数下降最快的方向,微调神经网络里的每一根“神经连接”。
具体来说,小Q每次从经验池抽出一批样本,算出平均损失,然后计算损失对每个参数的梯度——也就是“每个参数往哪个方向调一点点,能让预测离参考答案更近”。然后,他按学习率 α 的步长更新所有参数。这样重复成千上万次,神经网络对“哪个动作值多少分”的直觉就越来越敏锐。
整个训练过程就像小Q日复一日的“肌肉记忆”练习:每一次偏差被计算、被纠正,神经网络中的“手感”就被雕琢一分。值得注意的是,DQN的训练大量依赖经验回放和目标网络这两个“稳定器”,否则梯度下降就会在剧烈波动的目标值中迷失方向。可以说,损失函数是方向盘,而两名稳定器是底盘。
- 梯度向量损失对所有参数的偏导数,指明了“最陡的上升方向”。
- 负梯度方向取反后就是下降最快的方向,参数朝这里调整损失降得最快。
- 学习率步长控制每次调整的幅度,步长太大容易震荡、太小则收敛缓慢。
应用与局限:从街机到现实世界
小Q在Atari街机上大放异彩——49款经典游戏中,DQN在超过半数的游戏里超越了人类职业玩家的水平,而且它只看原始像素、没有任何人工设计的游戏特征。这个成果在2015年登上了《自然》杂志,让世界第一次看到“深度学习+强化学习”的威力。此后,小Q的兄弟姐妹们走出了街机厅,开始在真实世界里大显身手。
在机器人控制中,DQN让机械臂通过试错学会抓取物体;在自动驾驶中,DQN被用于学习变道和超车的决策策略;在推荐系统中,DQN把“要不要推送给用户”看成一系列长期决策,从而优化用户的长期留存。但小Q也远非完美:他的训练需要海量样本——在真实的机器人上试错一万次可能早就摔坏了设备;他对超参数敏感,学习率、批大小、网络层数稍一调就可能不收敛;遇到奖励稀疏的任务(比如一局棋只赢在最后一步),他的学习会异常缓慢。这些短板也催生了Double DQN、Dueling DQN、Rainbow等一大波改进,推动强化学习不断进化。
小Q的故事告诉我们:街机游戏只是起点,真正的挑战在现实世界的复杂性中。读懂DQN,你就拿到了打开深度强化学习大门的钥匙——之后的PPO、SAC等更强大的算法,都是在DQN的骨架上添砖加瓦。从像素到决策,从小小街机到广袤世界,这就是深度强化学习的浪漫。
- 累积折扣奖励从当前时刻起,把未来每一步的奖励按 γ^t 打折后加总,越远的分越“不值钱”。
- 期望因为环境有随机性,所以要对多次尝试取平均。
- 最大化寻找一组网络参数,让策略的长期期望回报最高。
AI 应用场景
自动驾驶中的智能决策
阶段:模型训练与策略部署
解决的问题:传统自动驾驶决策模块依赖大量人工编写规则(如“车距小于X就刹车”),面对复杂路口、加塞车辆等突发情况时规则穷举不完。DQN将驾驶建模为“状态(传感器/画面)→动作(油门/刹车/转向)→奖励(安全到达/平稳驾驶)”的序贯决策,通过经验回放模拟各种罕见路况、用目标网络稳定学习,最终学会人类司机的驾驶直觉。
具体案例:某自动驾驶创业公司在仿真环境中用DQN训练高速路变道策略。智能体每秒观察前方车辆位置、相对速度等状态;奖励函数给“安全变道成功”加分、给“碰撞或急刹”扣分。经过数百万个仿真时段的经验回放训练,其变道成功率达到95%以上,显著优于手写规则基线。
游戏AI打造王牌陪练
阶段:智能体训练与在线对战
解决的问题:传统游戏AI依赖预定义的有限状态机,行为刻板、容易被玩家摸透规律。DQN让游戏AI通过自我对弈学习策略——从原始操作界面直接学习,用ε-greedy保持探索,用目标网络稳定训练,最终形成灵活多变、能适配不同玩家水平的游戏对手。
具体案例:某游戏公司要用DQN训练一个“陪练AI”对抗《坦克大战》玩家。AI先随机操作收集经验,放入经验池;随后每步从池中随机采样、结合目标网络更新参数。训练5000局后,AI能够主动躲避炮弹、绕后偷袭,玩家评价“像真人队友一样聪明”。
推荐系统中的长期价值优化
阶段:策略优化与在线推理
解决的问题:传统推荐系统只优化“本次点击率”,容易陷入信息茧房——用户只看到同质内容,长期留存反而下降。DQN把推荐看作序贯决策:状态是用户近期行为序列,动作是推荐哪类内容,奖励是包含“点击、收藏、观看时长”的综合反馈,从而学习让用户在长期内更满意的策略。
具体案例:某短视频平台的强化学习团队用DQN优化首页推荐。他们将用户会话切分成决策序列,用经验回放存储各种“推荐动作→用户行为”的反馈;目标网络提供稳定的长期价值参考。实验表明,引入DQN后用户日均活跃时长提升了12%,长尾内容分发效率显著提高。
Python 演示
import randomimport numpy as npimport torchimport torch.nn as nn # 4x4网格世界:0起点 / 15终点 / 5/6/9/10为陷阱SIZE = 4START, GOAL, TRAPS = 0, 15, {5, 6, 9, 10} def step(pos, act): r, c = divmod(pos, SIZE) if act == 0: r = max(r - 1, 0) elif act == 1: r = min(r + 1, SIZE - 1) elif act == 2: c = max(c - 1, 0) else: c = min(c + 1, SIZE - 1) nxt = r * SIZE + c if nxt == GOAL: return nxt, 1.0, True if nxt in TRAPS: return nxt, -1.0, True return nxt, 0.0, False class DQNet(nn.Module): def __init__(self): super().__init__() self.net = nn.Sequential( nn.Linear(SIZE * SIZE, 32), nn.ReLU(), nn.Linear(32, 4)) def forward(self, x): return self.net(x) def one_hot(pos): v = np.zeros(SIZE * SIZE, dtype=np.float32) v[pos] = 1.0 return v online = DQNet()target = DQNet()target.load_state_dict(online.state_dict())optimizer = torch.optim.Adam(online.parameters(), lr=0.01) replay, gamma, eps, C = [], 0.9, 0.5, 10 def train_step(): if len(replay) < 8: return batch = random.sample(replay, 8) s = torch.tensor([one_hot(e[0]) for e in batch]) a = torch.tensor([e[1] for e in batch]).unsqueeze(1) r = torch.tensor([e[2] for e in batch], dtype=torch.float32) s2 = torch.tensor([one_hot(e[3]) for e in batch]) done = torch.tensor([e[4] for e in batch], dtype=torch.float32) q_pred = online(s).gather(1, a).squeeze(1) with torch.no_grad(): q_next = target(s2).max(1)[0] q_target = r + gamma * q_next * (1 - done) loss = ((q_pred - q_target) ** 2).mean() optimizer.zero_grad() loss.backward() optimizer.step() for episode in range(150): pos, total = START, 0.0 while True: if random.random() < eps: act = random.randint(0, 3) else: act = int(torch.argmax(online(torch.tensor(one_hot(pos))))) nxt, reward, done = step(pos, act) replay.append((pos, act, reward, nxt, done)) if len(replay) > 200: replay.pop(0) train_step() pos, total = nxt, total + reward if done: break if episode % C == 0: target.load_state_dict(online.state_dict()) eps = max(0.01, eps * 0.9) print(f"episode {episode}: reward={total:.1f}")
target = DQNet()建立目标网络,作为提供稳定评分参考的“教练”。target.load_state_dict(online.state_dict())每 C 步把主网络参数复制给目标网络,完成一次“教练标准同步”。replay.append((pos, act, reward, nxt, done))将“画面、动作、奖励、下一画面”存入经验池,相当于小Q往记忆相册里夹照片。batch = random.sample(replay, 8)关键一行的随机采样,打破时间相关性,让每次学习都看到“均衡百态”。q_target = r + gamma * q_next * (1 - done)用目标网络算出参考答案:即时奖励加上折扣后的未来最优分;(1-done)让终止时刻未来贡献归零。loss = ((q_pred - q_target) ** 2).mean()计算均方误差损失,衡量预测值与参考答案的差距。eps = max(0.01, eps * 0.9)探索率逐回合衰减:前期多乱试,后期多利用已学到的策略。
常见误区
误区我听说DQN用“经验回放”,那它是不是像普通深度学习一样,给一堆现成数据就能离线训练了?不需要游戏环境也可以吧?
正解经验回放池中的数据,恰恰是智能体与环境交互产生的。DQN的训练循环必须是“交互→采样→学习→再交互”:由行为策略在环境中执行动作、收集状态转移样本存入经验池,再从中随机采样更新网络。如果完全没有环境交互,经验池就是空的,网络根本无从学起。可以把DQN想象成一个球员:他可以反复看自己的比赛录像(回放),但前提是他必须先上场踢球(交互)。
为何常见:经验回放看起来像“读取历史数据”,让人误以为它等同于监督学习中的离线数据集。但只要细想数据从哪来,就能发现它始终依赖在线交互。
误区目标网络不就是复制主网络吗?那应该每步都更新才对,这样目标值最新最准确呀,为什么还要专门设一个旧参数的网络?
正解如果目标值每步都跟着主网络的最新参数变,那主网络在预测时,目标和预测都会同步波动——相当于用一个移动靶来练习射击,误差信号会剧烈震荡,训练极易发散。目标网络的精髓恰恰是“用一个相对固定的标准”来约束更新方向,让主网络在一段窗口内安心追赶。这就是为什么标准的DQN每 C 步才同步一次参数。
为何常见:直觉上“数据越新越准”,但强化学习的训练动态不同于监督学习,稳定性有时比准确性更重要。
误区DQN输出层给每个动作一个分数,那这个分数是不是和分类模型一样,代表每个动作的概率?Q值差0.2是不是就意味着选它的概率大0.2?
正解Q值衡量的是“长期期望回报”,代表执行该动作后未来累计折扣奖励的预测值,它既不是概率,也不满足马尔可夫链式的归一化约束。DQN选动作时使用argmax找最大Q值,而不是按Q值比例做概率采样。这就像两个投资方案的预期收益分别是100万和99万,你选择前者,并不代表前者有“51%的概率被选中”。
为何常见:神经网络分类任务的输出常用softmax变成概率,容易让人把“输出分数”与“概率”混为一谈。
误区探索是新知识的来源,那我把ε设为0.9甚至1.0,让智能体大量随机探索,不是学得更快吗?
正解ε过大意味着绝大多数时间在乱按,学到的最优策略根本得不到利用和巩固——就像学生每道题都翻新解法但从不练习标准答案,测验时连基本分都拿不到。DQN的训练既需要探索未知区域,也需要利用已知的好策略来积累高质量数据。标准做法是ε从较高值(如0.5~1.0)开始,随训练进度指数衰减到较小值(如0.01),做到“前期广撒网、后期精打磨”。
为何常见:看到“探索”一词带有正面色彩,便忽略了强化学习对探索与利用的动态平衡,而并非越多越好。
面试题
Q1. DQN 用何种结构近似 Q 函数?
- A.哈希查找表格
- B.深度神经网络← 正确答案
- C.线性回归模型
- D.决策树分类器
答案:B。DQN 的核心创新就是用深度神经网络代替传统 Q 表来近似 Q 函数,从而应对高维状态空间。哈希表和决策树不适合做连续泛化,线性模型表达能力有限。想象小Q扔掉记不完分数的笔记本,换成了能举一反三的“直觉引擎”,这个引擎便是深度神经网络。
Q2. 经验回放的核心作用是什么?
- A.减少神经网络层数
- B.打破样本间的相关联← 正确答案
- C.提高画面渲染速度
- D.让智能体探索状态
答案:B。经验回放从记忆中随机抽取历史样本,打破时间上相邻样本的高度相关性,避免网络被近期局部经验带偏,同时让经验被反复利用。它既不减少层数,也不管渲染,更不只是“探索状态”——探索由 ε-greedy 负责。
Q3. 目标网络在 DQN 中的作用是什么?
- A.加速网络训练过程
- B.提供稳定学习目标← 正确答案
- C.代替主网络去决策
- D.降低网络资源消耗
答案:B。目标网络用一组延迟更新的参数提供稳定的 Q 值目标,防止目标值随主网络每步波动导致训练发散。它不加速训练、不参与决策,也没减少计算量。就像教练给学生的不是“每次最新成绩”,而是一套稳定的评分标准。
Q4. ε-greedy 策略中 ε 通常随时间如何变化?
- A.保持恒定不会变化
- B.随着训练逐渐增大
- C.随着训练逐渐减小← 正确答案
- D.变化规律没有定论
答案:C。训练早期需要大量随机探索,ε 设得较高;随着策略变好,ε 指数衰减到接近 0,让智能体专注利用已学策略。若 ε 恒定或增大,智能体会一直乱试、难以收敛。
Q5. DQN 目标 Q 值的标准计算公式是?
- A.r + γ × max Q(s',a')← 正确答案
- B.r − γ × max Q(s',a')
- C.γ × max Q(s,a) ÷ r
- D.r + max Q(s',a') ÷ γ
答案:A。目标 Q 值 = 即时奖励 r 加上折扣因子 γ 乘以下一状态的最优 Q 值估计(由目标网络算出),B 把加号变减号、C/D 的运算结构都违背了“累加未来折扣回报”的含义。想象小Q的答案是“教练给的参考答案”:现在得的分加上未来收益的折扣值。
Q6. 下列哪些是 DQN 训练稳定性的关键技术?
- A.经验回放随机采样← 正确答案
- B.目标网络稳定目标← 正确答案
- C.全统一恒定学习率
- D.固定随机数生成器
答案:AB。经验回放打破样本相关性,目标网络提供稳定目标值,二者共同消除训练发散。学习率通常需要调度或调参,并非恒定最优;固定随机种子只在复现实验中用,与稳定性无关。
Q7. 以下哪些属于 DQN 解决高维状态空间的方式?
- A.卷积提取画面特征← 正确答案
- B.表格存储全部状态
- C.网络泛化相似状态← 正确答案
- D.人工设计状态特征
答案:AC。DQN 用卷积层从原始像素自动提取特征,并用神经网络对相似状态进行泛化,无需也无法枚举存储所有状态。表格方案在 Atari 级状态空间下会爆炸,人工设计特征正是 DQN 想摆脱的传统做法。
Q8. 经验回放中为什么必须随机采样?
- A.顺序采样计算更快
- B.打破样本间的相关性← 正确答案
- C.所有样本价值相同
- D.减小经验池的容量
答案:B。若按时间顺序采样,连续样本高度相似,网络会被局部模式带偏、陷入震荡。随机采样让每批样本来自不同时间点,经验分布更均匀。小Q从相册中随机抽旧照片,正是为了避免只记得“刚摔的那一跤”。
Q9. DQN 在 Atari 游戏上取得成功的主要因素包括?
- A.直接从像素中学习← 正确答案
- B.经验回放稳定训练← 正确答案
- C.手工设计游戏特征
- D.端到端的深度训练← 正确答案
答案:ABD。DQN 以原始像素为输入、以深度网络进行端到端训练,配合经验回放和目标网络实现了稳定收敛。它恰恰不是靠人工设计特征取胜——这是 DQN 相对传统 RL 的最大突破之一。
Q10. 目标网络的参数通常如何更新?
- A.每一步都立即更新
- B.每固定C步同步一次← 正确答案
- C.初始化后不再更新
- D.按随机频率来更新
答案:B。标准 DQN 每固定 C 步把主网络参数复制给目标网络。每步更新会让目标值随心波动、失去“稳定标准”的意义;完全不更新则教练水平跟不上学生;随机频率缺乏理论依据。