Awesome-ML-SYS-Tutorial 强化学习笔记:Dyna-Q 与 DQN 算法详解
文档教程人工智能大模型RLHF【免费下载链接】Awesome-ML-SYS-TutorialMy learning notes for ML SYS.项目地址https://gitcode.com/gh_mirrors/aw/Awesome-ML-SYS-Tutorial点击查看免费下载本指南基于 Awesome-ML-SYS-Tutorial 仓库中 rlhf/rl-walk-through/part-5.md 展开聚焦两条从表格型价值方法走向实用化的重要路径一是引入环境模型的Dyna-QQ-planning二是用神经网络做函数拟合的DQN深度 Q 网络。读完本文你将掌握基于模型与无模型强化学习的区别、Dyna-Q 如何用模拟采样降低样本复杂度以及 DQN 中经验回放与目标网络两大稳定训练模块的设计动机与完整实现流程为后续理解策略梯度、Actor-Critic 乃至 PPO/GRPO 等现代 RLHF 算法建立直观基础。一、背景基于模型 vs 无模型的强化学习在强化学习中模型通常指与智能体交互的环境模型即对环境的状态转移概率和奖励函数进行建模。根据是否具有环境模型强化学习算法分为两类基于模型的强化学习model-based模型可以是事先已知的也可以是根据智能体与环境交互采样到的数据学习得到的然后用这个模型帮助策略提升或价值估计。动态规划中的策略迭代与价值迭代见 part-3.md便是基于模型的强化学习方法但其中环境模型是事先已知的。无模型的强化学习model-free不依赖环境模型直接根据与环境交互采样到的数据做策略提升或价值估计。时序差分算法 Sarsa 和 Q-learning见 part-4.md便是两种典型代表它们在状态转移概率无法写出的场景下直接使用交互采样的数据来学习。本小结介绍的Dyna-Q 算法是非常基础的基于模型的强化学习算法其独特之处在于它的环境模型是通过采样数据估计得到的而非事先给定。二、强化学习的两个评价指标强化学习算法有两个重要的评价指标期望回报算法收敛后的策略在初始状态下的期望回报样本复杂度算法达到收敛结果需要在真实环境中采样的样本数量。基于模型的强化学习算法由于具有一个环境模型智能体可以额外和环境模型交互对真实环境中样本的需求量往往就会减少因此通常会比无模型的强化学习算法具有更低的样本复杂度。但需要注意环境模型可能并不准确不能完全代替真实环境因此基于模型的强化学习算法收敛后其策略的期望回报可能不如无模型的强化学习算法——这构成了基于模型方法省样本与模型误差之间的根本权衡。从 ML SYS 视角看样本复杂度的直接含义是 rollout采样成本真实环境交互例如 RLHF 中调用大模型生成数据昂贵若能用廉价的环境模型替代部分采样可显著降低训练成本这正是 Dyna-Q 思想的实用价值所在。三、Dyna-Q用 Q-planning 与模型模拟数据共同改进策略3.1 Q-planning 的核心思想Dyna-Q 算法采用一种叫做Q-planning的方法来基于模型生成模拟数据然后用模拟数据和真实数据一起改进策略。Q-planning 每次选取一个曾经访问过的状态采取一个曾经在该状态下执行过的动作通过模型得到转移后的状态以及奖励并根据这个模拟数据用 Q-learning 的更新方式来更新动作价值函数。简单来说Dyna-Q 在每次迭代中会进行一步真实采样和多步与模型进行的模拟采样然后利用模拟采样数据和真实采样数据一起改进策略。3.2 Dyna-Q 完整伪代码- 初始化 Q(s, a)初始化模型 M(s, a) - for 序列 e 1 - E do: - 得到初始状态 s - for t 1 - T do: - 用 ε-贪婪策略根据 Q 选择当前状态 s 下的动作 a - 得到环境反馈的 rs - Q(s, a) ← Q(s, a) α [r γ max_{a} Q(s, a) - Q(s, a)] - M(s, a) ← r, s - for 次数 n 1 - N do: 1. 随机选择一个曾经访问过的状态 s_m 2. 获取一个曾经在状态 s_m 下执行过的动作 a_m 3. r_m, s_m ← M(s_m, a_m) 4. Q(s_m, a_m) ← Q(s_m, a_m) α [r_m γ max_{a} Q(s_m, a) - Q(s_m, a_m)] - end for - s ← s - end for - end for可以看到在每次环境反馈交互执行一次 Q-learning 之后Dyna-Q 会进行n 次 Q-planning第 3 行真实环境交互得到的转移 $(s, a, r, s)$ 先用来按 Q-learning 更新规则更新一次 $Q(s, a)$这是无模型学习部分第 4 行同一经验同时用来投射/更新环境模型$M(s, a) \leftarrow r, s$这是模型学习部分第 59 行从已访问过的状态-动作对中随机取样让模型 $M$ 产生模拟转移 $(s_m, a_m) \to (r_m, s_m)$再按同样的 Q-learning 规则更新 $Q(s_m, a_m)$这是基于模型的规划planning部分。Q-planning 次数 N 是一个可调节的参数当 N 0 时Dyna-Q 就退化为普通的 Q-learning。需要特别指出上述 Dyna-Q 算法执行在一个简单且确定的环境中所以当看到一条经验数据 $(s, a, r, s)$ 时可以直接投射模型做出更新即 $M(s, a) \leftarrow r, s$在随机环境中模型通常需要记录多次转移的统计信息如频率计数而不能用单条经验直接覆盖。衔接前文第 1 步的 ε-贪婪策略是 exploration/exploitation 平衡的标准做法其 Q 值增量式更新的思想来自多臂老虎机一节见 part-1.md第 2 步的 Q-learning 更新公式正是 off-policy 的时序差分更新见 part-4.mdDyna-Q 的 Q-planning 沿用了同一更新算子。四、DQN用神经网络函数拟合解决连续状态问题4.1 动机Q 表格的局限Q-learning 算法需要将每个状态下所有动作的 Q 值表格存储下来当状态空间过大时这个表格会非常大而实际上很多情况下动作和状态都不是离散的根本无法穷举。因此只能通过函数来拟合估计 Q 值。这里介绍的 DQNdeep Q network用于解决连续状态、离散动作的问题。CartPole 是一个非常经典的连续状态和离散动作问题智能体的任务是通过左右移动保持车上的杆竖直若杆的倾斜度数过大或车子离初始位置左右的偏离程度过大或坚持时间到达 200 帧则游戏结束。智能体的状态是一个维数为 4 的向量每一维都是连续的动作是离散的只能左移或右移动作空间大小为 2。4.2 函数拟合思想与 Q 网络假设小车的动作价值函数为 $Q(s, a)$由于状态是连续的无法使用表格记录一个常见的解决方法是使用**函数拟合function approximation**思想即用一个神经网络来表示 Q若动作是**连续无限**的神经网络的输入是状态 $s$ 和动作 $a$输出一个标量表示在状态 $s$ 下采取动作 $a$ 能获得的价值若动作是离散有限的除了上述状态动作输入的方式还可以在状态 $s$ 输入到神经网络后使其同时输出每一个动作的 Q 值。需要注意的是DQN以及 Q-learning只能处理动作离散的情况因为在 Q 的更新过程中有 $\max_a$ 这一操作。假设神经网络参数为 $w$即单个状态 $s$ 下所有可能动作 $a$ 的 Q 值都可以表示为 $Q_w(s, a)$我们将用于拟合函数的神经网络称为Q 网络。4.3 从 Q-learning 更新规则构造损失函数回顾 Q-learning 的更新规则$$Q(s, a) \leftarrow Q(s, a) \alpha \left[ r \gamma \max_{a \in A} Q(s, a) - Q(s, a) \right]$$上述公式用时序差分temporal difference, TD学习目标 $r \gamma \max_{a \in A} Q(s, a)$ 来增量式更新 $Q(s, a)$也就是说要使 $Q(s, a)$ 和 TD 目标 $r \gamma \max_{a \in A} Q(s, a)$ 靠近。于是对于一组数据 ${(s_i, a_i, r_i, s_i)}$可以很自然地将 Q 网络的损失函数构造为均方误差形式$$\omega^* \arg \min_{\omega} \frac{1}{2N} \sum_{i1}^N \left[ Q_{\omega}(s_i, a_i) - \left( r_i \gamma \max_{a} Q_{\omega}(s_i, a) \right) \right]^2$$至此就可以将 Q-learning 扩展到神经网络形式——深度 Q 网络deep Q network, DQN算法。由于 DQN 是off-policy 算法因此在收集数据的时候可以使用一个 ε-贪婪策略来平衡探索与利用将收集到的数据存储起来在后续的训练中使用。DQN 中还有两个非常重要的模块——经验回放和目标网络它们能够帮助 DQN 取得稳定、出色的性能。五、经验回放Experience Replay在一般的有监督学习中假设训练数据是独立同分布的每次训练神经网络时从训练数据中随机采样一个或若干个数据来进行梯度下降随着学习的不断进行每一个训练数据会被使用多次。而在原来的 Q-learning 算法中每一个数据只会用来更新一次值。为了更好地将 Q-learning 和深度神经网络结合DQN 采用了**经验回放experience replay**方法维护一个回放缓冲区将每次从环境中采样得到的四元组数据状态、动作、奖励、下一状态存储到回放缓冲区中训练 Q 网络时再从回放缓冲区中随机采样若干数据进行训练。这样做有两个作用使样本满足独立假设在 MDP 中交互采样得到的数据本身不满足独立假设因为这一时刻的状态和上一时刻的状态有关。非独立同分布的数据对训练神经网络影响很大会使神经网络拟合到最近训练的数据上。采用经验回放可以打破样本之间的相关性让其满足独立假设。提高样本效率每一个样本可以被使用多次十分适合深度神经网络的梯度学习。注意到Q-learning 是 off-policy 算法但off-policy 并不意味着经验会被反复利用——离线策略与经验复用是两个不同的概念DQN 正是通过经验回放机制显式地将二者结合起来。六、目标网络Target NetworkDQN 最终更新的目标是让 $Q_w(s, a)$ 逼近 $r \gamma \max_{a} Q_w(s, a)$。由于 TD 误差目标本身就包含神经网络的输出因此在更新网络参数的同时目标也在不断被改变这非常容易造成神经网络训练的不稳定性和震荡性。为了解决这一问题DQN 使用了目标网络target network的思想既然训练过程中 Q 网络的不断更新会导致目标不断变化不如暂时先将 TD 目标中的 Q 网络固定住。为了实现这一思想需要利用两套 Q 网络训练网络 $Q_w(s, a)$用于计算损失函数 $\frac{1}{2} \left[ Q_w(s, a) - \left( r \gamma \max_{a} Q_w(s, a) \right) \right]^2$ 中的 $Q_w(s, a)$目标网络 $Q_{\hat{w}}(s, a)$用于计算 TD 误差目标 $r \gamma \max_{a} Q_{\hat{w}}(s, a)$ 的值其中 $\hat{w}$ 表示目标网络的参数。如果两套网络的参数始终保持一致则仍然会出现震荡的情况因此可以定期更新目标网络的参数$\hat{w}$比如每隔若干步更新一次即 $\hat{w} \leftarrow w$。这样做的目的是让目标网络的参数相对稳定从而使得 TD 误差目标的计算稳定下来。这一固定 TD 目标、定期同步参数的设计在此仓库笔记系列中持续复用在 part-7.md 的 Actor-Critic 一节中Critic 价值网络的更新同样采取了类似于目标网络的方法将 $r \gamma V_w(s_{t1})$ 作为不含梯度的 TD 目标来稳定训练可见该思想是深度价值学习方法的核心工程手段。七、DQN 完整算法流程综合以上模块DQN 的完整流程如下- 用随机初始参数 w 初始化网络 Q_w(s, a) - 复制相同的参数 w^- ← w 来初始化目标网络 Q_{w^-} - 初始化经验回放池 R - for 序列 e 1 - E do: - 获取环境初始状态 s_1 - for 时间步 t 1 - T do: 1. 根据当前网络 Q_w(s, a) 以 ε-贪婪策略选择动作 a_t 2. 执行动作 a_t获得环境反馈 r_t环境状态变为 s_{t1} 3. 将 (s_t, a_t, r_t, s_{t1}) 存入经验回放池 R 中 4. 若 R 中数据足够从 R 中采样 N 个数据 {(s_i, a_i, r_i, s_{i1})}_{i1,...,N} 5. for 每个数据 i do: - 计算目标值 y_i r_i γ max_{a} Q_{w^-}(s_{i1}, a) - 最小化目标损失 L (1/N) Σ_i (y_i - Q_w(s_i, a_i))^2以此更新当前网络 Q_w 6. 更新目标网络 - end for - end for关键流程拆解如下步骤 13数据收集用当前 Q 网络配合 ε-贪婪策略与环境交互并把四元组存入经验回放池——ε-贪婪是 off-policy 数据收集的标配见 part-1.md 多臂老虎机一节步骤 4经验采样只有当回放池中数据足够时才开始训练从池中随机采样 N 个数据打破时间相关性步骤 5损失与更新目标值 $y_i$ 使用目标网络$Q_{w^-}$ 计算参数被固定而损失项 $Q_w(s_i, a_i)$ 使用训练网络计算对 $w$ 求梯度做梯度下降步骤 6目标同步定期将训练网络参数拷贝到目标网络保证 TD 目标相对稳定。八、总结与系列衔接本小结覆盖了两条价值方法的核心演进路径Dyna-Q 回答了如何减少真实采样通过一个由经验数据学习到的环境模型 $M$在每次真实交互后额外执行 N 次 Q-planning 模拟更新N 从 0 调大即从纯 Q-learning 逐步走向基于模型的强化学习属于价值函数方法与规划的结合。DQN 回答了状态连续时 Q 值如何表示用神经网络 $Q_w$ 替代 Q 表格通过均方误差损失最小化 TD 误差经验回放解决样本相关性与样本效率问题目标网络解决训练目标漂移导致的震荡问题二者共同保证了深度价值网络训练的稳定性。在整个笔记系列中本小结承上启下前承 part-1.mdMDP 与价值函数定义、part-3.md动态规划策略迭代/价值迭代、part-4.mdSarsa/Q-learning 时序差分与 on/off-policy 概念后启 part-6.md策略梯度与 REINFORCE转向基于策略的方法、part-7.mdActor-Critic、TRPO、PPO。理解本小结的 off-policy、TD 目标、函数拟合与稳定训练思想是理解后续策略优化乃至现代 RLHF如 PPO/GRPO算法的必要基础。赞分享文档教程人工智能大模型RLHF【免费下载链接】Awesome-ML-SYS-TutorialMy learning notes for ML SYS.项目地址https://gitcode.com/gh_mirrors/aw/Awesome-ML-SYS-Tutorial点击查看免费下载相关推荐无模型强化学习奠基从时序差分到 Sarsa 与 Q-learning 的同/异策略辨析Awesome-ML-SYS-Tutorial 学习笔记 part-4无模型强化学习奠基从时序差分到 Sarsa 与 Q learning 的同/异策略辨析Awesome ML SYS Tutorial 学习笔记 part 4文档教程人工智能大模型RLHF如何从零开始学习QEMU内部原理这份完整教程让你快速上手如何从零开始学习QEMU内部原理这份完整教程让你快速上手 QEMU是一款功能强大的开源系统模拟器能够在不同架构之间实现硬件虚拟化和指令翻译。对于想要深入理解从被动笔记到可交互学习系统Awesome-ML-SYS-Tutorial 的 /learn Agent 设计与实现方案从被动笔记到可交互学习系统Awesome ML SYS Tutorial 的 /learn Agent 设计与实现方案 本文导读这是一篇关于「如何把一套学习文档教程人工智能大模型RLHF创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

folium AntPath 插件指南:用蚂蚁线动画绘制风场轨迹与动态路径

folium AntPath 插件指南:用蚂蚁线动画绘制风场轨迹与动态路径

数据可视化数据分析GIS 【免费下载链接】folium Python Data. Leaflet.js Maps. 项目地址: https://gitcode.com/gh_mirrors/fo/folium 点击查看 免费下载 AntPath(蚂蚁线/蚂蚁路径)是 folium 提供的一款地图插件,它把 Leaflet …

2026/9/29 2:33:18 阅读更多 →
Atmosphère 1.8.0 新版升级完整指南:19.0.1 固件兼容更新

Atmosphère 1.8.0 新版升级完整指南:19.0.1 固件兼容更新

Atmosphre 1.8.0 新版升级完整指南:19.0.1 固件兼容更新 【免费下载链接】Atmosphere Atmosphre is a work-in-progress customized firmware for the Nintendo Switch. 项目地址: https://gitcode.com/GitHub_Trending/at/Atmosphere Switch 系统更新到 19.…

2026/9/29 2:33:18 阅读更多 →
2012 款 MacBook Pro 装上 macOS 15:OCLP 安装步骤与长期维护

2012 款 MacBook Pro 装上 macOS 15:OCLP 安装步骤与长期维护

2012 款 MacBook Pro 装上 macOS 15:OCLP 安装步骤与长期维护 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 参照机状态:一台 2012 款…

2026/9/29 2:33:18 阅读更多 →

最新新闻

CSS选择器权重计算与!important实战:H5样式冲突排查指南

CSS选择器权重计算与!important实战:H5样式冲突排查指南

你是否经历过这种情形:在 H5 页面开发中,明明写好了.nav-box { color: red },结果页面死活不渲染,F12 打开控制台一看,元素上还残留着一条被划掉的红色样式,取而代之的是某个你不认识的选择器写的蓝色。这种…

2026/9/30 4:55:12 阅读更多 →
全排列与素数判断:P2118排列字母的最大素数求解详解

全排列与素数判断:P2118排列字母的最大素数求解详解

P2118这道题,光看“排列字母”四个字还挺迷惑人的。第一次在题库里刷到它,我以为是让你去排列一串英文字母,结果点进去才发现核心只有一句话:给一串数字字符,重新排列所有位,找出能组成的最大素数。听起来简…

2026/9/30 4:55:12 阅读更多 →
二分查找到底快在哪:从猜数字到边界写法一次讲透

二分查找到底快在哪:从猜数字到边界写法一次讲透

1. 二分算法到底快在哪:先把问题想清楚再写代码刚入行的头两年,我对二分算法的态度是"能用就行"。直到有一次线上排查一个库存扣减的接口,数据量到了百万级,遍历查找直接把响应时间拖到了秒级,我才痛下决心把…

2026/9/30 4:55:12 阅读更多 →
DeepSeek-V2-7B保险话术生成实战:合规、实时与情感精准闭环

DeepSeek-V2-7B保险话术生成实战:合规、实时与情感精准闭环

简介:本资源是一份面向保险科技从业者、AI算法工程师及数字化转型决策者的深度技术方案,系统阐述DeepSeek-V3大模型在保险销售全链路的落地实践,聚焦销售话术生成与客户情感分析两大核心能力,解决代理人话术合规性不足、客户意图识…

2026/9/30 4:55:12 阅读更多 →
iPhone真的能玩PC游戏吗?Madeira iOS x86模拟器实测结果深度解读

iPhone真的能玩PC游戏吗?Madeira iOS x86模拟器实测结果深度解读

iPhone真的能玩PC游戏吗?Madeira iOS x86模拟器实测结果深度解读 【免费下载链接】Madeira Run x86-64 Windows PC games on jailed iOS via FEX-Emu Wine DXMT 项目地址: https://gitcode.com/GitHub_Trending/mad/Madeira Madeira 是一个运行在未越狱 iP…

2026/9/30 4:55:12 阅读更多 →
用Claude搭建AI备课工作流:从提示词到自动化教案生成

用Claude搭建AI备课工作流:从提示词到自动化教案生成

在教师圈子里,问得最多的不是“AI能不能帮我备课”,而是“AI到底怎么帮我备课”。过去一年,我陆续试过不少AI工具,也组织过教研组做小范围试点,最后真正能稳定留在日常工作里的,反而是最不起眼的流程化用法…

2026/9/30 4:54:11 阅读更多 →

日新闻

Base64 图片头部特征识别:从文件头到格式判断的完整指南

Base64 图片头部特征识别:从文件头到格式判断的完整指南

1. 项目概述:为什么说看懂 base64 图片头部是基本功这几年跟 base64 打交道的机会越来越多,后端接口返回图片、前端渲染验证码、小程序里存小图、还有一些老系统导出报表,动不动就给你一段长到怀疑人生的 base64 字符串。很多人拿到字符串就直…

2026/9/30 0:00:35 阅读更多 →
Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

简介:本资源是一份面向Java初学者与课程设计学生的公交站牌广告灯箱管理系统毕业设计文档,聚焦城市公共广告资源信息化管理痛点,提供从需求分析到技术实现的完整方案。文档采用标准学术论文结构,含摘要、英文摘要、目录及五章正文…

2026/9/30 0:00:35 阅读更多 →
用 Redis Lua 构建大模型 API 多租户原子配额治理体系

用 Redis Lua 构建大模型 API 多租户原子配额治理体系

我去年年底接了一个内部 AI 平台的治理需求,背景很直接:公司把 DeepSeek、MiniMax 这类大模型 API 统一封装成内部网关,开放给几个业务团队用。结果第一个月账单出来,额度直接超了 4 倍。仔细查日志,发现原因并不复杂—…

2026/9/30 0:00:35 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 8:16:59 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 16:41:41 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/29 8:24:48 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/29 19:29:29 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/29 5:58:00 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/29 3:55:56 阅读更多 →