【Transformer 与注意力机制】04. 函数与神经网络:从 y=f(x) 到一台可学习的拟合机器
如果你问我「神经网络到底是什么」,我会先把所有教材合上,然后给你一句朴素得近乎敷衍的话——神经网络就是一个函数。
发布来自土法炼钢兴趣小组的知识、笔记、进展和应用。主题包括数据结构和算法、编程语言、网络安全、密码学等。
共 23 篇文章 · 返回首页
如果你问我「神经网络到底是什么」,我会先把所有教材合上,然后给你一句朴素得近乎敷衍的话——神经网络就是一个函数。
上一篇我们论证了一件事——纯线性的网络再深,也只是一个线性变换。把 $W2(W1\mathbf{x} + \mathbf{b}1) + \mathbf{b}2$ 展开就是 $W'\mathbf{x} + \mathbf{b}'$。线性的复合还是线性,这是线性代数的铁律。
这是【Transformer 与注意力机制】系列的第一篇,承担两件事:一是把这套五十多篇文章为谁写、解决什么问题、彼此之间是什么关系交代清楚;二是为完全没基础的读者画出一条从向量、点积、矩阵乘法走到自注意力、再走到大语言模型的爬升路径,让你在投入时间之前先知道终点在哪、路上要经过哪些坎、读完之后你会、还不会做什么事。
从《Attention Is All You Need》出发,把注意力机制、Transformer 架构、训练范式、模型变体、推理工程、可解释性与未来架构串成一条 58 篇的深度博客线。
embedding 是把离散的词变成稠密向量的桥梁。从 one-hot 的痛苦出发,经过 Firth 的分布假设、word2vec、GloVe、ELMo、BERT,一路走到现代 LLM 的 embedding 矩阵,本文把这条 70 年的演化讲清楚。
RNN 三难(长程依赖、梯度稳定、训练并行)的系统分析;attention 如何作为补丁逐步把 RNN 推向极限;Vaswani 2017 抛弃循环的范式革命
很多人第一次读 Vaswani 2017 的公式时,都会卡在那一个 √dk 上。
神经网络真正会「学习」靠的是两件事:把误差变成可微分的损失函数,再沿着这个损失对参数的梯度方向一点点往下挪。本文从一维抛物线讲到多变量梯度,从两层网络的手算反向传播讲到为什么 backprop 是 O(参数量),再到 Transformer 为什么几乎一律选 Adam/AdamW,希望把「网络是怎么学的」这件事彻底讲透。
Softmax 不是一个孤立的归一化函数,而是把任意实数分数变成概率分布的一座桥。本文从'为什么需要它'出发,讲清楚公式、几何、温度、稳定性、与交叉熵的配合,以及它在 Transformer 注意力里扮演的关键角色。
在 Transformer 出现之前,序列建模属于 RNN 的世界。本文从 Vanilla RNN 讲起,经过 BPTT、梯度消失爆炸、LSTM、GRU,到 Sutskever 2014 的 Seq2Seq 框架,完整讲述 RNN 时代的故事和它留下的工程经验。
从人类阅读时的眼动出发,把「注意力」拆成视觉生理、翻译对齐、加权平均三件事。讲清楚为什么权重必须满足非负与和为一、为什么 softmax 不是审美选择而是可微优先的工程结果,以及为什么我们要选软选择而不是 argmax。
把 Bahdanau, Cho, Bengio 2014 那篇「Neural Machine Translation by Jointly Learning to Align and Translate」逐项拆开。固定 context vector 的瓶颈、双向 RNN 编码、additive attention 公式 vᵀtanh(W₁s + W₂h)、与 Luong 2015 multiplicative attention 的取舍,以及为什么这是 Q/K/V 的雏形。
信息检索类比 → Bahdanau 到 Q/K/V 的演化 → 为什么要分开 Q/K/V → softmax(QKᵀ/√d_k)V 公式逐项拆解 → 维度走查 → 三 token、d_k=2 的玩具示例手算 → additive vs multiplicative 取舍 → 自注意力时 Q/K/V 同源的特殊性。这是整个系列最重要的一篇。
从 cross-attention 到 self-attention 的退化路径 → 为什么 self-attention 是 O(1) 跳数 → 为什么它对位置完全无知(permutation-equivariant) → 「The cat sat on the mat. It was tired.」中 it→cat 的共指消解 → 为什么需要位置编码 → attention 不等于解释(向第 52 篇预告)。
单头注意力一次只能学一种关系,但语言里同时存在句法、指代、语义、位置等多重模式。Multi-Head Attention 把 d_model 切成 h 份并行做 attention,让模型在不增加参数量的前提下,同一步内同时形成多个独立的注意力分布。本文从直觉、数学、代码、可视化四个层面讲清楚为什么 Transformer 一定要多头。
为什么 attention 是 O(n²),O(n²) 到底贵在哪里,5 类降复杂度方案的优劣,FlashAttention 不是 O(n) 这件事,长上下文是怎么把架构师逼疯的。
回到 2017 年 6 月那篇论文:八位作者、Google Brain/Translate 的内部背景、LSTM 时代的工程困境、为什么这篇在当年是「机器翻译的论文」、为什么七年后却被读成了「大模型时代的圣经」。
把 18 篇文章里讲过的所有零件——QKV、多头注意力、causal mask、位置编码、FFN、残差、归一化——拼成一张完整的 Transformer 图。跟随一个 token 走完从输入到输出的全部旅程,建立对架构的「身体记忆」。
从「self-attention 是排列等变的」这件几乎被忽视的事实出发,推导出位置编码不是装饰、不是工程小技巧,而是结构性必需。原论文为什么选正弦、那个奇怪的 10000 是怎么来的、PE 与 embedding 是相加还是拼接、可学习位置和 sinusoidal 的本质差别在哪、为什么训练 512 推理 2048 会让模型崩溃——这一篇把这些问题一次讲完,并把读者交到现代位置编码(RoPE、ALiBi)的门口。
把 Transformer block 里那个看起来最不起眼的两层 MLP 真正讲清楚——4 倍扩张比的来历、逐位置而不是跨位置的设计、Geva 等人 2021 年提出的「键值记忆」视角、SwiGLU/GLU/GeGLU 的现代变体、参数量分布、可解释性研究、量化时的瓶颈,以及它和 MoE 的关系。
把 2017 年 Transformer 原论文的训练配方完整复现一遍——数据集、硬件、优化器、学习率公式、warmup、label smoothing、dropout、batching by tokens、beam search 推理。重点解释那个看起来很神秘的学习率公式 lr = d^(-0.5) · min(step^(-0.5), step · warmup^(-1.5)),以及为什么 warmup_steps=4000 这个魔法常数不能去掉。
全参数微调的代价 → Adapter / Prefix Tuning / Prompt Tuning 的早期尝试 → LoRA 低秩分解的核心洞察 → r 与 alpha 的真实关系 → QLoRA 与 DoRA 的工程演进 → 与全参数微调的效果对比 → 灾难性遗忘与多任务部署。这一篇把「为什么不再有人对 7B 模型做全参数 SFT」讲清楚。
把时序深度学习放回量化系统里讨论:TCN 的因果卷积/扩张/残差三件套、Transformer 在金融上的位置编码与稀疏注意力改造、IC loss 与分位数损失、训练-推理偏移与多种子集成、与传统因子的残差融合、ONNX/TorchScript 部署与延迟监控。给出可直接套用的 PyTorch 代码与 vectorbt 评估骨架。