\documentclass[a4paper]{article}

\usepackage[fontset=fandol]{ctex}
\usepackage{amsmath, amssymb}
\usepackage{graphicx}
\usepackage[margin=2.5cm]{geometry}
\usepackage[most]{tcolorbox}
\usepackage{etoolbox}
\usepackage{listings}
\usepackage{hyperref}
\usepackage{booktabs}
\usepackage{subcaption}
\usepackage{float}

\newtcolorbox{knowledgebox}[1]{
    enhanced, colback=blue!5!white, colframe=blue!75!black, colbacktitle=blue!75!black,
    coltitle=white, fonttitle=\bfseries, title=#1, attach boxed title to top left={yshift=-2mm, xshift=2mm},
    boxrule=1pt, sharp corners
}

\newtcolorbox{importantbox}[1]{
    enhanced, colback=yellow!10!white, colframe=yellow!80!black, colbacktitle=yellow!80!black,
    coltitle=black, fonttitle=\bfseries, title=#1, sharp corners
}

\newtcolorbox{warningbox}[1]{
    enhanced, colback=red!5!white, colframe=red!75!black, colbacktitle=red!75!black,
    coltitle=white, fonttitle=\bfseries, title=#1, sharp corners
}

\lstset{
    language=Python,
    basicstyle=\ttfamily\small,
    keywordstyle=\color{blue},
    stringstyle=\color{red!60!black},
    commentstyle=\color{green!60!black},
    breaklines=true,
    frame=single,
    numbers=left,
    numberstyle=\tiny\color{gray},
    captionpos=b,
    extendedchars=false
}

\newcommand{\notetitle}{[CS25 V1] Introduction to Transformers --- Instructors}
\newcommand{\noteauthors}{基于公开课程资料整理}
\newcommand{\notedate}{2021}
\newcommand{\videochannel}{Stanford Online}
\newcommand{\videopublishdate}{2021}
\newcommand{\videoduration}{约30分钟}
\newcommand{\videourl}{https://www.youtube.com/playlist?list=PLoROMvodv4rNiJRchCzutFw5ItR\_Z27CM}
\newcommand{\videocoverpath}{cover.jpg}
\newcommand{\repourl}{https://github.com/hqhq1025/ai-course-notes}


% Footer with repo info
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyfoot[C]{\thepage}
\fancyfoot[R]{\footnotesize\color{gray}\href{\repourl}{AI Course Notes}}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}

\begin{document}

\begin{titlepage}
\centering
{\Large 课程笔记\par}
\vspace{1.2cm}
{\huge\bfseries \notetitle\par}
\vspace{0.8cm}
{\large \noteauthors\par}
\vspace{0.3cm}
{\large \notedate\par}
\vspace{1.2cm}

\ifdefempty{\videocoverpath}{
{\small 请在生成笔记时填入视频封面图的本地路径。\par}
}{
\includegraphics[width=0.82\textwidth,height=0.45\textheight,keepaspectratio]{\videocoverpath}\par
}

\vfill
\begin{tcolorbox}[width=0.9\textwidth, colback=black!2!white, colframe=black!60, sharp corners]
\textbf{视频作者/频道}：\videochannel\par
\textbf{发布日期}：\videopublishdate\par
\textbf{视频时长}：\videoduration\par
\textbf{视频链接}：
\ifdefempty{\videourl}{}{
\url{\videourl}
}\par
\textbf{项目主页}：\href{\repourl}{\nolinkurl{\repourl}}\par
\end{tcolorbox}
\end{titlepage}

\tableofcontents
\newpage

\section{课程简介}

CS25: Transformers United 是由 Stanford 的三位讲师（Advair、Div、Chaitanya）于 2021 年秋季创建并教授的一门研讨课。课程主题并非科幻电影中的变形机器人，而是关于深度学习中的 Transformer 模型——一类彻底革新了自然语言处理、计算机视觉、强化学习等多个领域的架构。

\begin{knowledgebox}{课程目标}
本课程希望学生达成三个目标：
\begin{enumerate}
    \item 理解 Transformer 的工作原理；
    \item 了解 Transformer 如何被应用于 NLP 之外的领域；
    \item 从各位嘉宾的演讲中获得研究灵感。
\end{enumerate}
\end{knowledgebox}

\section{注意力机制的演进}

\subsection{前 Transformer 时代}

在 2017 年 Transformer 出现之前，序列建模的主流架构是循环神经网络（RNN）及其变体——LSTM 和 GRU。这些模型擅长编码一定程度的"记忆"，但在处理长序列时存在严重缺陷：

\begin{itemize}
    \item \textbf{长距离依赖问题}：对于句子 ``I grew up in France ... so I speak fluent \_\_\_''，模型需要从很远处的上下文推断答案为 ``French''，但 LSTM 往往做不到。
    \item \textbf{代词消解困难}：当遇到代词 ``it'' 时，模型难以正确关联到先前出现的名词（如 ``animal''）。
\end{itemize}

\begin{warningbox}{RNN 的根本局限}
RNN 系列模型按顺序处理序列，信息必须通过隐藏状态逐步传递。序列越长，早期信息的衰减越严重，这是梯度消失问题的直接体现。
\end{warningbox}

\subsection{早期注意力机制}

在自注意力机制之前，已有几种注意力变体被提出：

\begin{itemize}
    \item \textbf{软注意力（Soft Attention）}：为图像的每个像素学习一个 $[0, 1]$ 之间的注意力权重。计算量大，但可微分。
    \item \textbf{硬注意力（Hard Attention）}：直接对感兴趣区域赋值 1，其余为 0。计算更高效，但不可微分，训练更困难。
    \item \textbf{全局注意力（Global Attention）}：对序列中每个隐藏层输出学习注意力权重 $\alpha$，与当前输出做逐元素加权。
    \item \textbf{局部注意力（Local Attention）}：仅在一个小窗口内计算注意力，而非整个序列。
\end{itemize}

\subsection{本章小结}

从简单的软/硬注意力到全局/局部注意力，研究者逐步探索如何让模型"聚焦"于输入中最相关的部分。但这些机制仍然依赖于 RNN 的顺序处理框架，无法从根本上解决长距离依赖和并行化问题。

\section{自注意力与 Transformer 架构}

\subsection{自注意力机制（Self-Attention）}

\begin{importantbox}{核心思想：Query-Key-Value}
自注意力可以被理解为一个\textbf{检索问题}：给定查询（Query）$Q$，找到与之最相似的键（Key）$K$，返回对应的值（Value）$V$。

$$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$$

其中：
\begin{itemize}
    \item $Q$：查询矩阵，表示"我在找什么"
    \item $K$：键矩阵，表示"我有什么可以被查找"
    \item $V$：值矩阵，表示"找到后返回什么"
    \item $d_k$：键向量的维度，用于缩放以防止点积过大
\end{itemize}
\end{importantbox}

$Q$、$K$、$V$ 三个向量均由同一输入 $X$ 通过不同的线性变换得到，这使模型能够在序列的不同位置之间捕获复杂的交互关系。

\subsection{多头注意力（Multi-Head Attention）}

多头注意力是指在每一层中\textbf{并行执行多次}自注意力计算，每个"头"可以关注不同的语义信息：

\begin{itemize}
    \item 一个头可能学习词性（Part of Speech）；
    \item 另一个头可能学习句法结构；
    \item 又一个头可能关注语义角色。
\end{itemize}

这种设计使模型能够同时学习多个表示子空间。

\subsection{Transformer 的关键组件}

除自注意力外，Transformer 还依赖以下三个关键组件：

\begin{enumerate}
    \item \textbf{位置编码（Positional Encoding）}：由于自注意力对所有位置一视同仁，需要额外注入位置信息。RNN 天然按顺序处理，而 Transformer 需要显式的位置表示。
    \item \textbf{前馈网络（Feed-Forward Network）}：自注意力本质上是线性运算（矩阵乘法），需要非线性层（MLP）来学习更复杂的输入-输出映射。
    \item \textbf{掩码机制（Masking）}：在解码器中，防止当前位置"偷看"未来位置的信息，避免数据泄露。
\end{enumerate}

\subsection{编码器-解码器架构}

Vaswani 等人 2017 年的论文提出了编码器-解码器架构：

\textbf{编码器（Encoder）}由以下子组件构成：
\begin{itemize}
    \item 多头自注意力层
    \item 前馈网络层
    \item 层归一化（Layer Norm）
    \item 残差连接（Residual Connection）
\end{itemize}

\textbf{解码器（Decoder）}与编码器类似，但多了一层\textbf{交叉注意力}——它不仅关注解码器前序层的输出，还关注编码器的输出。此外，解码器使用掩码机制确保生成过程的自回归特性。

\subsection{优缺点分析}

\begin{importantbox}{Transformer 的核心优势}
\begin{itemize}
    \item \textbf{常数路径长度}：序列中任意两个位置之间的路径长度为 1（每个 token 都直接关注其他所有 token），彻底解决了长距离依赖问题。
    \item \textbf{高度并行化}：不同于 RNN 的顺序处理，Transformer 的计算可以充分利用 GPU 并行能力，训练速度大幅提升。
\end{itemize}
\end{importantbox}

\begin{warningbox}{$O(n^2)$ 的代价}
自注意力的时间复杂度为 $O(n^2)$（$n$ 为序列长度），因为每个 token 需要与其他所有 token 计算注意力分数。这在长序列场景下成为瓶颈。已有多项工作尝试将其降低到线性或准线性复杂度，如 BigBird、Linformer、Reformer 等。
\end{warningbox}

\subsection{本章小结}

Transformer 通过自注意力机制实现了"全局视野"，让序列中任意位置都能直接交互，同时借助并行化显著加速训练。其代价是 $O(n^2)$ 的计算复杂度，但这一问题正在被后续研究逐步缓解。

\section{基于 Transformer 的里程碑模型}

\subsection{GPT 系列}

GPT（Generative Pre-trained Transformer）由 OpenAI 提出，仅使用 Transformer 的\textbf{解码器}部分，通过自回归语言建模进行预训练——即给定前 $t$ 个 token，预测第 $t+1$ 个 token。

\begin{importantbox}{上下文学习（In-Context Learning）}
GPT-3 展示了一种令人惊讶的能力：无需梯度更新，仅通过在输入中提供少量示例（few-shot），模型就能"学会"执行新任务。例如：
\begin{itemize}
    \item 给出几个加法示例后，模型能完成新的加法计算；
    \item 展示拼写纠错的样例后，模型能纠正新的拼写错误；
    \item 提供翻译对照后，模型能进行翻译。
\end{itemize}
\end{importantbox}

GPT-3 的应用包括代码生成（如 VS Code Copilot）、文本生成、对话系统等。

\subsection{BERT}

BERT（Bidirectional Encoder Representations from Transformers）由 Google 提出，仅使用 Transformer 的\textbf{编码器}部分。

\begin{knowledgebox}{BERT 的预训练策略}
由于编码器能看到整个序列，不能使用标准的自回归语言建模（会导致数据泄露）。BERT 采用了两种预训练任务：
\begin{enumerate}
    \item \textbf{掩码语言建模（Masked LM）}：随机遮蔽部分 token，让模型根据上下文预测被遮蔽的词。
    \item \textbf{下一句预测（Next Sentence Prediction）}：给定两段文本，判断第二段是否是第一段的后续。
\end{enumerate}
\end{knowledgebox}

\subsection{本章小结}

GPT 和 BERT 分别代表了 Transformer 的两种使用范式：仅解码器（生成式）和仅编码器（判别式）。此后，领域迅速涌现了 ELECTRA、DeBERTa 等改进模型，Transformer 也被拓展到视觉、语音、蛋白质折叠等多个模态。

\section{Transformer 的未来展望}

课程讲师们指出了几个值得关注的研究方向：

\begin{itemize}
    \item \textbf{外部记忆}：类比人脑的海马体，为 Transformer 引入外部记忆单元（如 Neural Turing Machine）。
    \item \textbf{线性化注意力}：将 $O(n^2)$ 的自注意力降至线性复杂度。
    \item \textbf{与人类价值对齐}：确保语言模型的输出符合人类意图和价值观。
    \item \textbf{跨领域应用}：视频理解、金融建模、蛋白质结构预测（AlphaFold）、离线强化学习、文本到图像生成等。
\end{itemize}

\subsection{如何把导论转成后续学习框架}

这节导论课的价值不只在于回顾 ``Attention Is All You Need''，更在于给整门 CS25 建立一张问题地图。后续所有讲次虽然会分别讨论 scaling、alignment、multimodality、biology、robotics 等主题，但都可以回到三个底层问题：

\begin{enumerate}
    \item \textbf{表示问题}：模型怎样把序列、图像、动作和结构化对象表示成可计算的 token 或 latent？
    \item \textbf{计算问题}：在上下文越来越长、参数越来越多时，如何控制训练与推理成本？
    \item \textbf{行为问题}：模型学到的不只是统计规律，还会呈现工具使用、规划、偏差和对齐等复杂行为。
\end{enumerate}

\begin{knowledgebox}{CS25 后续主题的阅读坐标}
\begin{table}[H]
\centering
\begin{tabular}{p{0.2\textwidth} p{0.28\textwidth} p{0.34\textwidth}}
\toprule
主题簇 & 需要持续追问的问题 & 对应能力成长 \\
\midrule
架构与机制 & 注意力、位置编码、记忆机制如何改变信息流动？ & 读懂模型结构与复杂度取舍 \\
预训练与 scaling & 数据、算力、参数如何共同塑造能力涌现？ & 形成系统视角，而不是只看单篇论文 \\
应用与 agent & 模型如何从 ``会补全'' 走向 ``会调用工具和执行任务''？ & 连接研究原理与真实产品 \\
对齐与安全 & 训练目标与部署目标为何经常不一致？ & 识别能力增强背后的行为风险 \\
\bottomrule
\end{tabular}
\caption{把导论课中的核心问题映射到后续课程模块}
\end{table}
\end{knowledgebox}

\begin{importantbox}{听这门课的正确姿势}
如果只把每一讲当成独立主题，容易得到零散知识点；更有效的做法是始终追问：\textit{这一讲是在回答 Transformer 系统中的哪一个瓶颈？它改变的是表示、训练、推理，还是对齐？} 这样看完整门课后，才能形成真正可迁移的模型直觉。
\end{importantbox}

\subsection{本章小结}

Transformer 的未来并不只是在 NLP 中继续堆大模型，而是在效率、记忆、对齐和跨模态应用上持续扩展。课程把这节开篇课的意义放得很明确：理解 Transformer，不只是理解一种架构，而是理解未来十年大模型技术栈的共同语言。

\section{总结与延伸}

本讲作为 CS25 系列的开篇，从注意力机制的历史演变讲起，系统介绍了自注意力和 Transformer 架构的核心原理，并以 GPT 和 BERT 为例展示了 Transformer 的两种基本范式。

Transformer 的成功源于两个关键设计：（1）自注意力机制带来的全局信息交互能力，解决了 RNN 的长距离依赖瓶颈；（2）高度可并行的计算结构，使得大规模预训练成为可能。

\subsection{课程开篇总览表}

\begin{table}[H]
\centering
\begin{tabular}{p{0.2\textwidth} p{0.24\textwidth} p{0.28\textwidth}}
\toprule
主题 & 本讲给出的核心答案 & 对后续课程的意义 \\
\midrule
为什么需要注意力 & 让模型按需聚焦输入的关键部分 & 为自注意力和 Transformer 奠定直觉基础 \\
为什么 Transformer 取代 RNN & 解决长依赖与并行训练问题 & 解释大规模预训练为何可行 \\
GPT 与 BERT 有何不同 & 分别代表生成式和判别式范式 & 为后续语言模型与编码模型路线做铺垫 \\
未来研究方向是什么 & 效率、记忆、对齐与跨模态扩展 & 把 Transformer 放入更长的研究时间线中 \\
\bottomrule
\end{tabular}
\caption{CS25 Lecture 1 的核心问题与答案}
\end{table}

\subsection{后续学习路线}

\begin{enumerate}
    \item 先彻底掌握 self-attention 的数学形式和多头注意力的分工
    \item 再对照 GPT/BERT 理解 decoder-only 与 encoder-only 的差异
    \item 最后把 Transformer 放回更大的模型系统里，关注效率、对齐和跨模态扩展
\end{enumerate}

\subsection{拓展阅读}
\begin{itemize}
    \item Jay Alammar, \textit{The Illustrated Transformer}: \url{http://jalammar.github.io/illustrated-transformer/}
    \item Vaswani et al., \textit{Attention Is All You Need}, NeurIPS 2017
    \item BigBird, Linformer, Reformer 等高效 Transformer 论文
\end{itemize}

\end{document}
