ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Awesome-ML-SYS-Tutorial 强化学习笔记:Dyna-Q 与 DQN 算法详解

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),仅供参考
返回列表