Arganzheng's Blog

stay hungry, stay foolish

深度学习基础(06):RNN——从 LSTM 到 attention 的诞生

RNN: Backpropagation Through Time, the LSTM Gate as a Residual Path, and How Attention Was Born from the seq2seq Bottleneck

Attention 不是为 Transformer 发明的。2014 年它被加到一个循环神经网络的翻译模型上,目的很具体:encoder 把整句话压进一个固定长度的向量,句子长了向量装不下,翻译质量随句长下降——attention 让 decoder 每生成一个词都回头看 encoder 的全部隐状态,绕过这个瓶颈。三年后 Vaswani 等发现,有了 attention 之后循环本身可以不要了。 所以理解 RNN 的意义在于理解 attention 解决了什么。本篇按这条线走:循环网络怎么处理序列,它的梯度在时间上怎么传播(第二篇的 Jacobian 连乘在时间维上的版本),为什么记不住 20 步之外的东西,LSTM 的门控为什么能记更远——以及那个门在数学上就...

深度学习基础(05):CNN——从 LeNet 到 ResNet,再到 ViT

CNN: Convolution as a Constrained Linear Layer, the ResNet Legacy and How ViT Turns Images into Tokens

前四篇讲训练动力学,用的网络全是 MLP。这一篇和下一篇回看 Transformer 之前的两条结构史——卷积与循环——不是为了怀旧,而是因为 Transformer 的每个部件都有来历:残差连接、归一化、”堆同样的块”来自卷积这条线;attention 来自循环那条线。理解一个部件当初解决了什么问题,才知道它今天还在解决什么、什么时候可以拿掉。 卷积网络的故事可以压缩成三句话:卷积是一个被强约束的线性层,约束带来的参数节省与归纳偏置让它在数据不多时远胜 MLP;深度是为了感受野(receptive field,一个输出位置能看到输入的范围),而深了就训不动,ResNet 用残差解决了它;数据足够多时约束成了负担,ViT 把图切成 patch、当成 token 送...

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

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);显式正则化手段各自在...

深度学习基础(03):优化器——从 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 改变了参数范数...

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

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

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

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

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

loss.backward() 是训练代码里最短的一行,也是被理解得最少的一行。它做的事在 1986 年就已经写清楚了:沿着计算图反向应用链式法则。但只有自己推过一遍、写过一遍、用有限差分验证过一遍,才会真的知道三件后面每一篇都要用的事——梯度的形状与被求导的量相同、反向的计算量是前向的两倍、前向的中间结果必须保留到反向。第一件决定了怎么读任何一个梯度公式,第二件是训练 FLOPs 等于 \(6ND\) 的来源,第三件是激活显存与激活重算的全部原因。 本篇用一个两层 MLP(Linear → ReLU → Linear → softmax → 交叉熵)把这三件事推到底。选它是因为它足够小——每一步的形状能写在一行里——又足够完整:Transformer 里除了 a...

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

Deep Learning Foundations: From Backpropagation to Residual Connections

内容简介 《深度学习基础:从反向传播到残差》是一组共六篇的系列文章,对应《AI 算法工程师学习地图》的第 L3 层。它面向已经有 L0 数学、L1 工具、L2 经典机器学习基础、准备进入 Transformer 与 LLM 的读者,讲的是训练一个深度神经网络时会发生什么、为什么、以及怎么算出来。 它回答的问题是: 一个几十层甚至上百层的网络,为什么能训、什么时候不能训、训不动的时候该看哪个数字?1 深度学习教材通常按”模型”组织:感知机、MLP、CNN、RNN、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...

LLM 时代的经典机器学习(09):去重——MinHash 与 LSH 的概率

Deduplication: Jaccard, MinHash as an Unbiased Estimator, and the LSH S-Curve

预训练语料里有大量重复:同一篇文章的几十个转载、改了几个词的模板页、复制粘贴的代码。重复的数据让模型记忆而不是学习,去重是数据工程里收益最确定的一步。精确去重(对整段文本取 hash)只能抓完全一样的副本;近似去重要处理”大部分一样”的文本,标准做法是 MinHash + LSH。它是无监督学习里”相似度估计”的一个漂亮应用——三个经典元素(集合相似度、随机化估计、用概率分桶换掉两两比较)没有一个是深度学习,但在 15T token 上做去重,没有它寸步难行。这一篇把它的概率算清楚,每一步都有一个能手算的例子和几十行能跑的代码。 全篇的核心问题是: 两段文本”相似”到什么程度算重复?1 MinHash 的阈值怎么定?2 为什么不用两两比较?3 一、总览...

×