Arganzheng's Blog

stay hungry, stay foolish

深度学习基础(07):正则化与泛化——为什么参数比样本多却不过拟合

Regularization and Generalization: Double Descent, Implicit Bias, Dropout, Weight Decay and When Overfitting Comes Back

L2 经典机器学习系列讲过经典机器学习的第一定律:模型容量超过数据量就会过拟合。一个 160 万参数的网络在 4000 个样本上训练,按这条定律应该背下每一个样本、在测试集上一败涂地。第九章的实验里它做到了前半句——训练错误率 0.0%——却没有做到后半句:测试错误率 14.5%,是所有宽度里最好的。而一个参数只有样本两倍的小网络,测试错误率 43%。 这个现象——参数越多泛化越好,越过某个点之后——在 2017 年前后被系统地记录下来(Zhang 等 2017;Belkin 等 2019),它推翻的不是”过拟合”这个概念,而是”容量”这个度量。本篇讲三件事:为什么深网络在参数远多于样本时不过拟合(隐式正则化与 double descent);显式正则化手段各自在...

深度学习基础(06):优化器——从 SGD 到 AdamW 与学习率调度

Optimizers: From SGD to AdamW, Warmup, Clipping and the Batch-Learning-Rate Scaling Rule

打开任何一份 LLM 技术报告的训练配置,会看到同一组数字:AdamW,\(\beta_1 = 0.9\),\(\beta_2 = 0.95\),weight decay 0.1,梯度裁剪 1.0,warmup 2000 步,cosine 衰减到峰值的 10%。这组数字从 GPT-3 到 Llama-3 几乎没变过,以至于很少有人再问它们是从哪来的。本篇把每一个数字拆开:它在公式里的位置、它解决的问题、改了会怎样、以及为什么优化器状态要占每参数 8 字节。 主线从最简单的 SGD 开始,每加一个优化器或训练策略就问两个问题——它改变了更新量的哪个性质、代价是什么。Momentum 改变了方向的平滑度,Adam 改变了每个参数的步长尺度,weight decay 改...

深度学习基础(05):训练为什么不稳定——初始化、归一化与残差

Why Deep Training Is Unstable: Variance Propagation, Initialization, Normalization and Residual Connections

《深度学习基础(03):反向传播——手推一个两层网络》的那个两层网络怎么训都能训。把它加深到 64 层,同样的代码会出现四种结局:loss 停在 \(\ln 10\) 一步不动;第三步变成 NaN;能动但慢得像没训;正常收敛。四种结局对应的网络只差三样东西——权重初始化的标准差、有没有归一化层、有没有残差连接——而这三样东西恰好是 1990 年代到 2016 年深度学习解决”深了就训不动”这个问题的三步。 本篇把这三步各自推到公式、算到数字、在同一个 64 层网络上测出来。推导的主线只有一条:信号的方差在层间怎么传播,梯度作为一串 Jacobian 的乘积怎么放大或缩小。三种方案各自动了这条链上的哪一环,决定了它们能修什么、修不了什么。最后落到当前 LLM 的标准...

深度学习基础(04):激活函数——从 sigmoid 到 SwiGLU

Activation Functions: From Sigmoid to SwiGLU

两层 Linear 中间放一个 ReLU,和把两层直接乘起来,表达能力完全不同。差别不在层数,而在中间那一下非线性。本篇把常见激活函数按这条线串起来:它们怎样让网络学到弯曲的边界,又怎样改变梯度、显存和算子开销。 如果把 100 层 Linear 叠起来,为什么它仍只能表示一个线性 / 仿射变换?1 sigmoid、ReLU、GELU 和 SwiGLU 分别解决了什么问题?2 一、总览:为什么需要非线性 线性层负责混合输入维度;激活函数打破线性,才让层叠起来的网络表示复杂函数。若每层之间没有非线性,任意多层 Linear 都能折叠成一个 Linear(带 bias 时是仿射变换)。 所以层数再多,也只相当于一个 \(W\) 和一个 \(b\)。《深度...

深度学习基础(03):反向传播——手推一个两层网络

Backpropagation by Hand: Shapes, the 2x Rule and Why Activations Must Be Saved

loss.backward() 是训练代码里最短的一行。它沿计算图反向应用链式法则,一次得到 loss 对所有参数的梯度。理解它要抓住三件事:梯度的形状与自变量相同、反向矩阵乘的计算量约为前向的两倍、前向中间结果要留到反向使用。第一件帮助读梯度公式,第二件连接到训练 FLOPs 等于 \(6ND\),第三件解释激活显存与重算。 上一篇《深度学习基础(02):损失函数——怎样把「好」写成一个可求导的数》给出了优化目标;本篇从梯度怎样计算开始。 本文用一个两层 MLP(Linear、ReLU、Linear、softmax、交叉熵)把这些规则推到底。它足够小,每一步形状都能写清楚;又足够完整,Transformer 里的 Linear、激活函数、norm 和 loss...

深度学习基础(02):损失函数——怎样把「好」写成一个可求导的数

Loss Functions: How to Write 'Good' as a Differentiable Number

训练代码里 loss.backward() 的前提是 loss 存在——是一个标量、可求导、而且”更小”恰好意味着”模型更好”。把任务翻译成这样一个数,这件事本身有将近两百年的历史:最小二乘、最大似然、交叉熵、Huber、focal、InfoNCE、DPO,每一个损失函数背后都是同一个问题的回答——「好」在这件事上到底怎么量化。 上一篇《深度学习基础(01):深度模型演进史——从感知机到 Transformer》把网络结构从感知机追到 Transformer;这一篇回到所有结构共有的那一端:输出之后、反向传播之前,那个决定”往哪调”的数是怎么写出来的。 分工先说清楚,避免重复:最大似然 → 交叉熵的推导在《算法工程师的数学(05):从最大似然到交叉熵——第一个要...

深度学习基础(01):深度模型演进史——从感知机到 Transformer

A History of Deep Models: From the Perceptron to the Transformer

Transformer 不是突然出现的。它接过了感知机、反向传播、卷积、Embedding、循环网络与 attention 留下的问题。本篇沿时间线看这些结构为什么出现;公式推导和可复现实验放在后续文章。 为什么单层感知机会遇到 XOR?多层网络何时变得可训练?Transformer 又从哪些旧结构中继承了组件? 一、总览:三起两落 神经网络的发展不是平滑上升。感知机带来第一次热潮,能力边界、资金收缩与英国的研究评估共同构成第一次寒冬;反向传播带来第二次兴起,但算力、数据与训练稳定性仍有限;2006 年逐层预训练重燃深层网络研究,随后 GPU、ImageNet 与更可靠的训练方法让深度学习进入第三次兴起。 本文讲历史与动机;感知机、ADALINE...

深度学习基础:从反向传播到残差(总纲)

Deep Learning Foundations: From Backpropagation to Residual Connections

内容简介 《深度学习基础:从反向传播到残差》是一组十篇正文加一篇总结的系列文章,对应《AI 算法工程师学习地图》的第 L3 层。它面向已经有 L0 数学、L1 工具、L2 经典机器学习基础、准备进入 Transformer 与 LLM 的读者,讲的是训练一个深度神经网络时会发生什么、为什么、以及怎么算出来。 它回答的问题是: 一个几十层甚至上百层的网络,为什么能训、什么时候不能训、训不动的时候该看哪个数字?1 深度学习教材通常按”模型”组织:感知机、MLP、CNN、RNN、Transformer。这个系列先用第一篇沿着感知机到 Transformer 回看深度模型的演进与动机,再用六篇讲训练动力学——梯度、激活、深层稳定性、优化与泛化,最后用三篇回看...

LLM 时代的经典机器学习(11):系列总结与通关自测

Classical Machine Learning in the LLM Era: Series Recap and Final Self-Test

十篇正文回答了一个问题:LLM 工作里的哪些问题其实是经典机器学习的老问题,它们的经典解法在 LLM 上还成立吗。第一篇讲什么是学习与泛化;第二、三篇讲线性回归与逻辑回归并指出奖励模型就是后者;第四到六篇从三个基础分类器到 SVM 到树的集成,并算清数据过滤为什么用小模型;第七、八篇讲聚类与降维;第九篇把 MinHash 与 LSH 的概率算清楚;第十篇讲评估——一切结论是否成立的最后一道关。十篇合起来对应《AI 算法工程师学习地图》的 L2 层,也是总纲那张”重现表”的逐行展开。 本文不讲新内容,做三件事:把十篇压成一张表与十段回顾,把贯穿十篇的几条线拎出来,然后给一套三段式的通关自测——判断与计算、跨篇综合、面试题。各篇末尾的自测检验的是”这一篇读懂了没有”,...

LLM 时代的经典机器学习(10):评估——从混淆矩阵到 judge 的一致性

Evaluation: Confusion Matrices, Thresholds, Calibration, Paired Tests, and Every LLM Pitfall They Predict

前九篇训了很多模型,每次都报一个”准确率”。这一篇专门讲怎么评估——准确率什么时候会骗人,一个分类器的”好”怎么拆成几个能各自回答问题的数,一个概率输出可不可信,两个模型差 3 个点算不算真的差。每个概念都用几行 NumPy 手写一遍、与 scikit-learn 对数,然后对到 LLM 评测里那些反复出现的坑:过滤器的漏放与误杀、奖励模型准确率的上限是什么、judge 的一致性与位置偏差、benchmark 分数的置信区间、”20 个 benchmark 里领先 12 个”。 全篇的核心问题是: 一个安全分类器准确率 95%,能上线吗?1 LLM-as-judge 与人的一致率 80%,够不够?2 两个模型在 20 个 benchmark 上比,领先 1...

×