Arganzheng's Blog

stay hungry, stay foolish

算法工程师的数学(07):导数、梯度与链式法则——softmax 的梯度与策略梯度

Derivatives, Gradients and the Chain Rule: The Softmax Gradient and the Policy Gradient

前两篇给了目标:交叉熵、KL、DPO 的 loss。这一篇讲怎么让参数朝着目标变好——求导,然后往导数的反方向走一小步。全部工具只有三件:导数(一个数变一点,函数变多少)、梯度(很多个数一起变时的导数)、链式法则(复合函数的导数是局部导数的乘积)。用它们推两个后面反复出现的结果:softmax + 交叉熵的梯度是 \(p - y\)(简洁到令人怀疑),以及目标是期望时的梯度——策略梯度,RL 的全部算法都建立在它上面。最后讲用梯度更新参数的最简单方法与学习率。 这一篇是机器学习的发动机:没有梯度就没有训练。所以每个概念都配一张图、一个能手算的数字例子和一段能跑的代码——文中的全部数字与图由 math-for-ai/07_gradients_and_policy_g...

算法工程师的数学(06):熵、交叉熵与 KL——从困惑度到 DPO

Entropy, Cross-Entropy and KL Divergence: From Perplexity to the DPO Loss

信息论在这张地图上看起来最”理论”,却是后训练的主语言:SFT 的 loss 是交叉熵,RLHF 与 DPO 的约束项是 KL,蒸馏的目标是 KL,投机解码的接受率是两个分布的总变差。它们全部建立在三个量上——熵、交叉熵、KL 散度——以及一条把三者连起来的等式。这一篇从定义讲起,讲清 KL 的两个方向为什么行为完全不同,然后走完一条完整的推导链:从”最大化奖励且不偏离参考模型”的目标,推出它的闭式最优解,再推出 DPO 的 loss。 全篇的核心问题是: 能不能分清熵、交叉熵、KL 各是什么?1 能不能从 KL 约束的最优策略推出 DPO 的 loss?2 一、总览 1. 三个量一条等式 熵、交叉熵与 KL 的定义、含义与 LLM 里的角色 ...

算法工程师的数学(05):从最大似然到交叉熵——第一个要会推的 loss

From Maximum Likelihood to Cross-Entropy: The First Loss You Should Be Able to Derive

训练日志里跳动的那个数字——loss 从 11 降到 2 点几——是什么?它从哪来?为什么是那个公式?这一篇给出完整的答案:从上一篇”语言模型是条件分布”的定义出发,用一个自然的原则(让训练数据出现的概率最大),三步推出它。这三步是后面所有 loss 的模板:SFT、奖励模型、DPO 都是同一个式子换一个概率。然后讲模型是怎么把一堆实数变成概率的(softmax),以及温度、top-k、top-p 在这个分布上做了什么。 这一篇是全系列最重要的一篇之一:loss 是训练的全部驱动力——模型的每一次参数更新,都是朝着”让这个数变小”的方向走的。不理解它,就看不懂训练曲线、看不懂 SFT 为什么要 mask、看不懂奖励模型和 DPO 的公式为什么长那样。所以本文不吝篇...

算法工程师的数学(04):概率入门——语言模型是一个条件分布

Probability Basics: A Language Model Is a Conditional Distribution

前三篇讲的是模型怎么算——一堆矩阵乘法。这一篇讲模型是什么。答案只有一句话:语言模型是一个条件分布 \(p(x_t \mid x_{<t})\)——给定前面的文字,输出下一个 token 的概率。这句话里每个词都需要概率的语言来定义;而一旦定义清楚,训练目标(第五篇)、采样方式、KV cache 为什么能增量、attention 为什么除以 \(\sqrt{d_k}\),都是它的直接推论。 本篇从零建立这套语言。全篇的核心问题是: “语言模型是一个条件分布”这句话的每个词是什么意思?1 它决定了哪些事?2 一、总览 1. 本文的对象 本文只讲五组概念,每一组在语言模型里都有一个对应物: 本文的五组概念与它们在语言模型里的对应物 ...

算法工程师的数学(03):正交与旋转、特征值与 SVD——从 RoPE 到 LoRA

Orthogonal Matrices, Rotations, Eigenvalues and SVD: Why RoPE Encodes Relative Position and Why LoRA Works

前两篇把矩阵当作”一堆数”,讨论它的形状、成本和向量之间的比较。这一篇看矩阵的两种结构:一种是正交——矩阵只旋转、不拉伸,内积在它作用下不变;另一种是低秩——一个巨大的矩阵其实只由少数几个方向撑起来。前者解释了现代 LLM 的位置编码 RoPE 为什么只用一个旋转就让 attention 只依赖相对位置;后者解释了 LoRA 为什么能用半个百分点的参数微调一个 8B 模型。 全篇的核心问题是: RoPE 为什么能编码相对位置?1 LoRA 的 \(r = 16\) 在 Llama-3-8B 上加了多少参数、为什么够用?2 一、总览 1. 两条线 本文只讲两件事,各是一条五步的推理链,终点分别是开头那两个问题: 正交线(二、三、四章):正...

算法工程师的数学(02):内积、范数与余弦相似度

Inner Product, Norms and Cosine Similarity: One Language for Attention, Retrieval, Regularization and Quantization Error

上一篇说一个 token 是一个向量。这一篇回答一个自然的问题:两个向量怎么比较?1“这个 token 该看那个 token 多少”(attention)、”这段文本和查询有多相关”(检索)、”这两张图和这两句话配不配”(CLIP)、”量化后的权重离原来差多远”(压缩)、”参数是不是太大了”(正则化)——五个看起来不同的问题,用的是同一套只有三个词的语言:内积、范数、余弦相似度。 全篇的核心问题是: 两个向量”像不像”有几种算法?2 各在哪里用?3 为什么 attention 用内积、检索用余弦、量化误差用 Frobenius 范数?4 一、总览 1. 三个词一张图 先把符号认全(后面各章逐个展开): 三个词的公式、读法与各自保留的信息 ...

算法工程师的数学(01):向量、矩阵与形状——一个 token 过一层要算多少

Vectors, Matrices and Shapes: How Much Compute Does One Token Through One Layer Take

打开任何一个大模型的结构图,看到的全是矩阵乘法:一个 token(模型处理文字的最小单位,大致是一个词或半个词——”我爱北京”约 3 个 token——不是一字一个,常用词”北京”通常整个是一个 token,”我”“爱”各一个;反过来英文长词 “tokenizer” 会被切成两三个。切法由分词器(tokenizer)的词表决定,不同模型不同;模型读到的不是字,而是 token 在词表里的编号)变成一个向量,向量乘一个矩阵变成另一个向量,再乘一个矩阵……几十层之后输出下一个 token 的概率。所以线性代数在 AI 里的第一个用处不是什么高深的定理,而是两条极其朴素的规则:形状规则(什么形状乘什么形状得到什么形状)与成本规则(这一乘要算多少次)。会了这两条,读模型结构...

算法工程师的数学:读公式不卡壳的最小集(总纲)

Mathematics for AI Algorithm Engineers: The Minimal Set to Read Papers and Derive Losses

内容简介 《算法工程师的数学:读公式不卡壳的最小集》是一组共八篇的系列文章,对应《AI 算法工程师学习地图》的第 L0 层,也是整张地图的第一个系列。它面向会一门编程语言、大学数学基本忘光、还没有碰过 AI 的读者,讲的是后面所有层——深度学习、Transformer、预训练、后训练、压缩、多模态——会反复用到的那一小块数学:它们是什么、在 AI 里长什么样、怎么代进一个真实模型算出一个数字。 它回答的问题是: 拿到一篇 LLM 论文,能不能读懂它的每一个公式;给一个建模假设,能不能推出它的训练 loss;给一个评测结果,能不能判断差异是真的还是噪声?1 问算法工程师”需要多少数学”,得到的答案通常在两个极端之间摇摆:要么”不需要,调库就行”,要么”...

AI 应用工程师学习地图:在非确定性组件之上做可靠产品

A Learning Roadmap for AI Application Engineers

内容简介 这是三张 AI 学习地图中的第三张(三张的总览与分工见《AI 全栈学习地图》)。第一张《AI 算法工程师学习地图》面向造模型的人,第二张《AI-Infra 工程师学习地图》面向跑模型的人,这一张面向用模型做产品的人——AI 应用工程师。它假设读者有后端工程的基础(服务、数据库、API、部署),同时关心产品:什么场景值得做、用户怎么用、效果怎么衡量。 “AI 应用”在这里取宽的定义:用模型改变现有的流程与体验。模型可以是 LLM,也可以是自动驾驶里的感知模型、VLA 与世界模型;动作可以是调用一个 API,也可以是控制一台车;输入可以是用户敲的字,也可以是传感器的每一帧。这张地图以 LLM 应用为主要案例展开,因为它当前的工程实践最成体系,但每一层的问题...

AI-Infra 工程师学习地图:从后端工程师到基础设施贡献者

A Learning Roadmap for AI Infrastructure Engineers

内容简介 这是一张给后端工程师——尤其是 Java、Go 等托管语言背景的工程师——转向 AI-Infra 方向的学习地图。它把这个方向需要的知识组织成十二个系列,说明每个系列解决什么问题、为什么放在那个位置、彼此之间如何依赖,以及按不同目标应该走哪条路径。 它是三张 AI 学习地图中的第二张(三张的总览与分工见《AI 全栈学习地图》):第一张《AI 算法工程师学习地图》面向造模型的人,这一张面向跑模型的人(AI-Infra 工程师),第三张《AI 应用工程师学习地图》面向用模型的人。本地图的 01 Python、03 PyTorch、04 Transformer 与 LLM 三个系列与算法地图共享。三张地图有重叠的名词,分工在本文末尾的《与算法工程师地图的关系...

×