公告栏
文章列表
从策略梯度到 PPO 算法原理与实现
上一篇博客中,我们介绍了 DQN 及其改进算法。DQN 的核心思路是学习动作价值函数 Q(s,a)Q(s,a)Q(s,a),再根据价值函数选择动作。这类方法在离散动作空间中非常有效,但当动作空间变为连续时,直接枚举所有动作并取最大值就不再现实。
本文将转向另一类强化学习方法:Policy-based 方法。本文会从策略梯度和 Actor-Critic 出发,进一步介绍 TRPO 如何用信赖域约束控制策略更新幅度,最后重点推导 PPO 如何用更简单的目标函数近似 TRPO 的优化思想,并给出一个可运行的 PPO 实现框架。
# 策略梯度算法
Q-learning、DQN 及 DQN 改进算法都是
more...DQN 及其改进算法
上一篇博客中,我们已经介绍了 Q-learning 和 Deep Q-learning 的基本形式。Q-learning 的核心是估计最优动作价值函数 q∗(s,a)q^*(s,a)q∗(s,a),再通过贪心策略选择动作;DQN 则是将表格形式的 q(s,a)q(s,a)q(s,a) 替换为神经网络近似函数 q(s,a,w)q(s,a,w)q(s,a,w)。
本文将从 Q-learning 的 Bellman 最优方程出发,回顾 DQN 的目标函数、梯度更新、经验回放、目标网络,以及 Double DQN、Dueling DQN、Prioritized Experience Replay 和
more...【斯坦福 CS336】Assignment-1:Transformer 模型构建与训练
# 概述
本篇博客基于 2025 斯坦福 CS336 课程的第一章节作业要求,系统梳理了其中关于 Transformer 模型构建与训练的核心内容。该部分涵盖了词嵌入层、RoPE 位置编码、注意力机制等基础模块,并在此基础上逐步搭建一个标准的 Transformer 模型,同时实现相应的优化器等,完成语言模型的端到端训练流程。
原始作业内容包含了大量底层模块的实现,例如线性层、交叉熵损失函数等,旨在帮助初学者通过亲手实践加深对原理的理解。由于本文定位为总结与梳理,因此不会面面俱到,而是选取我个人认为较为关键、具有代表性的部分进行介绍与归纳。
# Transformer 基础模块
本章节将介
more...【斯坦福 CS336】Assignment-1:BPE 分词器算法原理与实现
# 概述
在自然语言处理领域,分词器(Tokenizer) 承担着至关重要的 “桥梁” 作用:它将人类的自然语言(字符串)转化为大型语言模型能够识别和处理的整数序列。该整数序列就是大模型的输入,而 token 指的就是这些整数数字。
在众多分词策略中,字节对编码(Byte Pair Encoding, BPE) 以其高效、可控的词汇表构建机制,成为了现代预训练模型(如 BERT,GPT,T5 等)的基石。BPE 成功解决了传统分词方法在处理海量词汇和未登录词时的痛点。
本篇博客基于 2025 斯坦福 CS336 课程的第一章节作业要求,整理 BPE 分词器的原理与实现流程,并从零开始实现一个基
more...【斯坦福 CS336】第一章:模型架构与基础
# 概述
本章是 2025 斯坦福 CS336 课程的第一章,也是本系列笔记的开篇章节。我们将介绍模型架构与基础知识,探讨模型设计的核心原则和常见的架构模式,为后续章节的学习奠定基础。
事先声明,本笔记并不会覆盖课程中的所有细节,不属于手把手的教程,而是重点总结和提炼出核心内容,帮助大家更好地理解和应用所学知识。好了,废话不多说,我们直接进入正题。
本系列笔记的代码仓库位于链接。
# Tokenizer
Tokenizer 是自然语言处理中的一个重要组件,负责将文本转换为模型可以理解的输入格式。这部分内容属于模型架构的基础知识,理解 Tokenizer 的工作原理对于设计和优化模型至关
more...PyTorch 模型训练之并行篇
现如今,深度学习模型的规模和复杂度正以前所未有的速度增长,从简单的线性模型到如今动辄数百数千亿参数的大模型,单 GPU 的计算能力已难以满足高效训练的需求。并行训练技术应运而生,它合理分配计算任务到多个 GPU 或多台机器上,显著提升了训练效率。本文将介绍 PyTorch 中几种常见的并行训练方法,包括数据并行(Data Parallel)、分布式数据并行(Distributed Data Parallel,DDP)、Hugging Face 的 Accelerate 工具库等。通过对比和代码示例,帮助读者快速掌握这些技术的原理和使用方法。
# 前期准备
为了演示不同的并行训练方案,首先需要准
more...





