👀参考视频&博客
📝相关前文导航
📚传统Q学习的局限性
- 在强化学习中,智能体通过试错学习策略,Q学习算法通过维护一个Q表(表格记录每个状态-动作对的预期收益)来指导决策。但Q表存在致命缺陷:
- 维度灾难:当状态空间庞大(如游戏画面是像素级输入)时,Q表无法存储所有可能的状态-动作对。传统Q表存储的Q值数量为 ∣ S ∣ × ∣ A ∣ ∣S∣×∣A∣ ∣S∣×∣A∣,当状态空间 S S S是连续或高维时,存储和更新Q表变得不可行。
- 泛化能力差:无法通过已有经验推理类似但未见过的情况。传统Q学习无法通过“相似状态”推理未见过的情况,例如在迷宫中,两个结构相似但位置不同的状态需要重新学习,而DQN的神经网络可通过特征提取自动泛化。
- Q表就像一个只能靠死记硬背的学生,面对一本百科全书厚度的题目(复杂状态),它需要记住每一题的答案(动作价值),但现实是题目太多根本记不住,遇到新题时更是一筹莫展。
📚DQN介绍
🐇核心思想
- DQN用神经网络替代Q表,实现从状态到动作价值的映射(Q函数近似)。DQN用神经网络 Q ( s , a ; θ ) Q(s,a;θ) Q(s,a;θ)替代Q表,输入状态 s s s,输出所有动作的Q值。目标是最小化预测Q值与目标Q值的均方误差(MSE):
- L ( θ ) = E [ ( r + γ max a ′ Q t a r g e t ( s ′ , a ′ ) − Q ( s , a ; θ ) ) 2 ] L(\theta) = \mathbb{E}\left[ \left( r + \gamma \operatorname*{max}_{a'} Q_{\mathrm{target}}(s', a') - Q(s, a; \theta) \right)^2 \right] L(θ)=E[(r+γmaxa′Qtarget(s′,a′)−Q(s,a;θ))2],其中 θ θ θ是主网络参数。
- 优势与意义:
- 处理高维状态:神经网络可处理图像、声音等复杂输入。
- 样本高效:经验回放允许重复利用历史数据。
- 稳定训练:目标网络缓解了「追逐移动目标」的问题。
- 🌟 DQN就像一个「会总结经验的老司机」:
- 它把每次开车经历(经验)记录到笔记本(经验池)中,随机翻阅不同路况(随机采样),避免只记住最近一次事故(打破相关性)。
- 同时,它有一个「驾驶教科书」(目标网络),每隔一段时间更新一次,而不是每天改交规(稳定学习目标),最终练就了稳定驾驶技术。
🐇关键技术
- 经验回放(Experience Replay)
- 原理:智能体将每一步的经验(状态、动作、奖励、下一状态)存储在一个经验池中。 训练时,从经验池中随机抽取一批历史经验(而非按顺序使用),打破数据间的相关性,避免模型陷入局部最优(如连续相似状态导致梯度更新方向偏差)。
- 🌟经验回放就像一个厨师做菜:
- 传统Q学习是「边买菜边做菜」,食材(经验)按顺序处理,可能重复用同一种食材,导致菜品(模型)味道单一。
- DQN的厨师会先把各种食材(不同时间、不同状态的经验)存放到冰箱(经验池),每次随机取出不同食材混合烹饪(随机采样),最终菜品更均衡稳定。
- 目标网络(Target Network)
- 原理 :使用两个结构相同的神经网络,主网络(Main Network)负责选择动作和实时更新参数。目标网络(Target Network)用于计算TD目标(Q目标值),参数定期从主网络同步。 目标网络的参数更新频率远低于主网络(如每1000步同步一次)。
- 🌟目标网络就像一个「参考答案库」:
- 如果学生(主网络)每次做题时,答案(目标值)都根据自己当前的知识随时变化,会导致学习混乱(如今天说1+1=2,明天说1+1=3)。
- DQN的解决方案是:定期从老师(目标网络)那里获取一份固定答案(冻结参数),学生在一段时间内基于这份答案学习,避免自我干扰。
🐇DQN的工作流程
⭐️流程分步讲解
- 当前状态(S) :就像司机看到的路况(如红灯、行人、车道线),输入到Q网络中,网络会给出每个动作的“驾驶评分”(Q值)。
- 动作选择(A) ——ε-greedy策略:
- ε概率:Q-Netwiork,选评分最高的动作(如绿灯直行)。
- 1-ε概率:随机选动作(如突然左转,探索未知操作)。
- 初始新手爱乱试,随着训练降低,老司机更信任经验。
- 与环境互动
- 执行动作后,环境反馈奖励(R)和新状态(S’)。
- 奖励像交规打分(安全驾驶+1分,闯红灯-10分)。
- 新状态是下一步的路况(如变绿灯、出现障碍物)。
- 经验存储(Experience Replay)
- 将这次经历(S, A, R, S’)存入经验池(D),类似司机的行车记录仪。
- 池子容量有限,新经验会覆盖旧数据(保留近期和多样化的驾驶片段)。
- 训练Q网络
- 随机抽取一批经验:避免“只记得最近事故”,综合不同场景学习。
- 计算目标Q值(y): y = R + γ ⋅ max a ′ Q target ( S ′ , a ′ ) y = R + \gamma \cdot \max_{a'} Q_{\text{target}}(S', a') y=R+γ⋅maxa′Qtarget(S′,a′)
- γ(折扣因子):像司机的远见(0.9表示重视未来奖励,0.1则短视)。
- 目标网络(Target Q-Network):提供稳定的参考Q值(类似驾校教材,定期更新,避免答案总变)。
- 计算损失(Loss):KaTeX parse error: Expected 'EOF', got '}' at position 5: Loss}̲ = \frac{1}{N} …,相当于对比“司机预测的驾驶评分”和“实际应得的评分”,误差越大,调整越迫切。
- 梯度下降更新主网络:
- 通过反向传播计算梯度(分析错误来源),用优化器(如Adam)调整主网络参数,减少预测误差。
- 类似学生通过错题本修正知识漏洞,下次遇到类似路况时评分更准。
- 更新参数(硬更新)
- 每隔一段时间,将主网络参数( ω ω ω)复制给目标网络( ω T ω_T ωT),就像教练根据学员进步修订教材。
- 训练目标是让主网络的预测Q值接近目标Q值(减少预测误差)。
🔄 整体流程循环小结
- 交互:观察状态 → 选择动作 → 获得反馈(R, S’)。
- 存储:记录经验(S, A, R, S’)到池子。
- 学习:随机抽经验 → 计算目标值(y) → 计算损失 → 梯度下降更新主网络。
- 同步:定期同步目标网络参数。
🐇DQN的局限性及改进方向
- 局限性
- 过高估计(Overestimation):因 max 操作导致Q值被系统性高估,影响策略稳定性(Double DQN通过解耦动作选择与评估解决此问题)。
- 灾难性遗忘(Catastrophic Forgetting):神经网络在更新后可能遗忘早期经验(可通过持续经验回放缓解)。
- 改进算法
算法 核心改进 效果 Double DQN 使用主网络选择动作,目标网络评估值 减少Q值高估计 Dueling DQN 分离状态价值与动作优势函数 提升策略评估效率 Noisy DQN 在网络参数中引入噪声 替代ε-greedy,实现自适应探索