| 机器学习与 |
| --- |
|  |
| 范式
* 监督学习
* 無監督學習
* 線上機器學習
* 元学习（英语：）
* 半监督学习
* 自监督学习
* 强化学习
* 基于规则的机器学习（英语：）
* 量子機器學習
 |
| 问题
* 统计分类
* 生成模型
* 迴歸分析
* 聚类分析
* 降维
* 密度估计（英语：）
* 异常检测
* 数据清洗
* 自动机器学习
* 关联规则学习
* 語意分析
* 结构预测（英语：）
* 特征工程
* 表征学习
* 排序学习（英语：）
* 语法归纳（英语：）
* 本体学习（英语：）
* 多模态学习（英语：）
 |
| 监督学习(**分类** · **回归**)
* 学徒学习（英语：）
* 决策树学习
* 集成学习
	+ Bagging
	+ 提升方法
	+ 随机森林
* *k*-NN
* 線性回歸
* 朴素贝叶斯
* 人工神经网络
* 邏輯斯諦迴歸
* 感知器
* 相关向量机（RVM）
* 支持向量机（SVM）
* 迁移学习
* 微调
 |
| 聚类分析
* BIRCH
* CURE算法（英语：）
* 层次
* *k*-平均
* Fuzzy
* 期望最大化（EM）
* DBSCAN
* OPTICS
* 均值飘移（英语：）
 |
| 降维
* 因素分析
* CCA
* ICA
* LDA
* NMF（英语：）
* PCA
* PGD（英语：）
* t-SNE（英语：）
* SDL
 |
| 结构预测（英语：）
* 圖模式
	+ 貝氏網路
	+ 條件隨機域
	+ 隐马尔可夫模型
 |
| 异常检测
* RANSAC
* *k*-NN
* 局部异常因子（英语：）
* 孤立森林（英语：）
 |
| 人工神经网络
* 自编码器
* 認知計算
* 深度学习
* DeepDream（英语：）
* 多层感知器
* RNN
	+ LSTM
	+ GRU（英语：）
	+ ESN（英语：）
	+ 储备池计算（英语：）
* 受限玻尔兹曼机
* GAN
* SOM
* CNN
	+ U-Net
* Transformer
	+ Vision transforme（英语：）
* 脉冲神经网络（英语：）
* Memtransistor（英语：）
* 电化学RAM（英语：）（ECRAM）
 |
| 强化学习
* Q学习
* SARSA
* 时序差分（TD）
* 多智能体（英语：）
	+ Self-play（英语：）
* RLHF
 |
| 与人类学习
* 主动学习（英语：）
* 众包
* Human-in-the-loop（英语：）
 |
| 模型诊断
* 学习曲线（英语：）
 |
| 数学基础
* 内核机器（英语：）
* 偏差–方差困境（英语：）
* 计算学习理论（英语：）
* 经验风险最小化
* 奥卡姆学习（英语：）
* PAC学习（英语：）
* 统计学习
* VC理论
 |
| 大会与出版物
* NeurIPS
* ICML（英语：）
* ICLR
* ML（英语：）
* JMLR（英语：）
 |
| 相关条目
* 人工智能术语（英语：）
* 机器学习研究数据集列表（英语：）
* 机器学习概要（英语：）
 |
| * 
* 论
* 编
 |

**Transformer模型**（直译为"变换器"）是一种采用注意力机制的深度学习模型，这一机制可以按输入数据各部分重要性的不同而分配不同的权重。该模型主要用于自然语言处理（NLP）与计算机视觉（CV）领域。

与循环神经网络（RNN）一样，Transformer模型旨在处理自然语言等顺序输入数据，可应用于翻译、文本摘要等任务。而与RNN不同的是，Transformer模型能够一次性处理所有输入数据。注意力机制可以为输入序列中的任意位置提供上下文。如果输入数据是自然语言，则Transformer不必像RNN一样一次只处理一个单词，这种架构允许更多的并行计算，并以此减少训练时间。

Transformer模型于2017年由谷歌大脑的一个团队推出，现已逐步取代长短期记忆（LSTM）等RNN模型成为了NLP问题的首选模型。并行化优势允许其在更大的数据集上进行训练。这也促成了BERT、GPT等预训练模型的发展。这些系统使用了维基百科、Common Crawl（英语：）等大型语料库进行训练，并可以针对特定任务进行微调。

背景
--

在Transformer模型之前，大多数最先进的NLP系统都依赖于诸如LSTM、门控循环单元（英语：）（GRU）等门控RNN模型，并在此基础上增加了注意力机制。Transformer正是在注意力机制的基础上构建的，但其没有使用RNN结构，这表明仅依靠注意力机制就能在性能上比肩加上了注意力机制的RNN模型。

### 顺序处理

门控RNN模型按顺序处理每一个标记（token）并维护一个状态向量，其中包含所有已输入数据的表示。如要处理第{\textstyle n}个标记，模型将表示句中到第{\textstyle n-1}个标记为止的状态向量与最新的第{\textstyle n}个标记的信息结合在一起创建一个新的状态向量，以此表示句中到第{\textstyle n}个标记为止的状态。从理论上讲，如果状态向量不断继续编码每个标记的上下文信息，则来自一个标记的信息可以在序列中不断传播下去。但在实践中，这一机制是有缺陷的：梯度消失问题使得长句末尾的模型状态会缺少前面标记的精确信息。此外，每个标记的计算都依赖于先前标记的计算结果，这也使得其很难在现代深度学习硬件上进行并行处理，这导致了RNN模型训练效率低下。

### 自注意力机制

注意力机制解决了上述这些问题。这一机制让模型得以提取序列中任意先前点的状态信息。注意力层能够访问所有先前的状态并根据学习到的相关性度量对其进行加权，从而提供相距很远的标记的相关信息。

翻译是一个能够突显注意力机制优势的例子，其中上下文对于句子中单词的含义至关重要。例如在一个将英语翻译为法语的系统中，法语输出的第一个词很可能取决于英语输入的前几个词。然而在经典的LSTM模型中，为了产生法语输出的第一个单词，模型需要访问处理完最后一个英语单词后得到的状态向量。理论上这个向量包含了整个英语句子的信息，从而为模型提供所有必要的知识。然而在实践中，LSTM通常无法很好地保存这些信息。可以通过添加注意力机制来解决这个问题：解码器可以访问每个英语输入单词的状态向量，而不仅仅是最后一个单词。同时模型可以学习注意力权重，这些权重决定了对每个英语输入状态向量的关注程度。

在RNN模型中添加注意力机制能提高模型的性能。而Transformer架构的发展表明，注意力机制本身就足够强大，并且不需要像RNN模型一样再对数据进行顺序循环处理。Transformer模型采用了没有RNN模型的注意力机制，它能够同时处理所有标记并计算它们之间的注意力权重。由于注意力机制仅使用来自之前层中其他标记的信息，因此可以并行计算所有标记以提高训练速度。

架构
--

### 输入

输入文本使用字节对编码以进行标记化，每个标记通过词嵌入转换为向量。然后，将标记的位置信息添加到嵌入向量中。

### 编码器-解码器架构

与早期的seq2seq模型一样，原始的Transformer模型使用**编码器-解码器**（encoder–decoder）架构。编码器由逐层迭代处理输入的编码层组成，而解码器则由对编码器的输出执行相同操作的解码层组成。

每个编码层的功能是确定输入数据的哪些部分彼此相关。它将其编码作为输入再传递给下一个编码层。每个解码层的功能则相反，读取被编码的信息并使用整合好的上下文信息来生成输出序列。为了实现这一点，每个编码层和解码层都使用了注意力机制。

对于每个输入，注意力会权衡每个其他输入的相关性，并从中提取信息以产生输出。每个解码层都包含一个额外的注意力机制，它会在从编码层提取信息之前先从之前解码器的输出中提取信息。

编码层和解码层都有一个前馈神经网络用于对输出进行额外处理，并包含残差连接和层归一化步骤。

### 缩放点积注意力

Transformer模型的基本构建单元是缩放点积注意力（scaled dot-product attention）单元。当一个句子被传递到一个Transformer模型中时，可以同时计算所有标记互相之间的注意力权重。注意力单元为上下文中的每个标记生成嵌入，其中包含有关标记本身的信息以及由注意力权重加权得到的其他相关标记的信息。

对于每个注意力单元，Transformer模型学习三个权重矩阵，分别为查询（query）权重{\displaystyle W\_{Q}}、键（key）权重{\displaystyle W\_{K}}以及值（value）权重{\displaystyle W\_{V}}。对于每个标记{\displaystyle i}，输入词嵌入{\displaystyle x\_{i}}分别与三个权重矩阵相乘以得到查询向量{\displaystyle q\_{i}=x\_{i}W\_{Q}}、键向量{\displaystyle k\_{i}=x\_{i}W\_{K}}与值向量{\displaystyle v\_{i}=x\_{i}W\_{V}}。再使用查询向量和键向量计算注意力权重，即计算{\displaystyle q\_{i}}和{\displaystyle k\_{j}}的点积以得到从标记{\displaystyle i}到标记{\displaystyle j}的注意力权重{\displaystyle a\_{ij}}。之后再将注意力权重除以向量维度的平方根{\displaystyle {\sqrt {d\_{k}}}}以在训练期间稳定梯度，并通过softmax函数对权重进行归一化。{\displaystyle W\_{Q}}与{\displaystyle W\_{K}}的不同意味着注意力是非对称的：如果标记{\displaystyle i}很关注标记{\displaystyle j}（即{\displaystyle q\_{i}\cdot k\_{j}}很大）并不一定意味着标记{\displaystyle j}也反过来关注标记{\displaystyle i}（即{\displaystyle q\_{j}\cdot k\_{i}}可能很小）。对每一个标记{\displaystyle i}而言，注意力单元的输出是以{\displaystyle a\_{ij}}（标记{\displaystyle i}到每一个标记的注意力）加权所有标记的值向量得到的加权和。

对所有标记的注意力计算可以表示为使用softmax函数的一个大型矩阵计算，由于可以对矩阵运算速度进行优化，这十分利于训练速度的提升。矩阵{\displaystyle Q}、{\displaystyle K}和{\displaystyle V}可分别定义为第{\displaystyle i}行是向量{\displaystyle q\_{i}}、{\displaystyle k\_{i}} 和{\displaystyle v\_{i}}的矩阵。

{\displaystyle {\begin{aligned}{\text{Attention}}(Q,K,V)={\text{softmax}}\left({\frac {QK^{\mathrm {T} }}{\sqrt {d\_{k}}}}\right)V\end{aligned}}}

#### 多头注意力

一组{\displaystyle \left(W\_{Q},W\_{K},W\_{V}\right)}矩阵称为一个注意力头（attention head），Transformer模型中每一层都包含多个注意力头。每个注意力头都表示不同标记相互之间的注意力，而多个注意力头则可以针对不同的"相关性"计算不同的注意力权重。许多注意力头编码的相关性信息是人类可以理解的，例如某个注意力头可能主要关注下一个单词，而另一个注意力头则可能主要关注动词与其直接宾语之间的关系。每个注意力头的计算可以并行执行，这使得处理速度得以加快。注意力层的输出被连接起来传递到前馈神经网络层。

### 编码器

每个编码器由一个自注意力机制和一个前馈神经网络两个主要部分组成。自注意力机制接受来自前一个编码器的输入编码，并计算它们之间相关性的权重以生成输出编码。前馈神经网络则进一步单独处理每个输出编码。然后将这些输出编码作为输入传递给下一个编码器以及解码器。

第一个编码器将输入序列的位置信息和嵌入作为其输入。位置信息向Transformer模型提供了序列的顺序信息，这是模型中唯一利用这一信息的部分。

编码器是双向的，这意味着当前标记的注意力可以放在之前或之后的标记上。

### 解码器

每个解码器由一个自注意力机制、一个针对编码器的注意力机制和一个前馈神经网络三个主要部分组成。解码器的功能与编码器类似，但插入了一个额外的注意力机制，它从编码器生成的编码中提取相关信息。这种机制也可以称为编码器-解码器注意力（encoder-decoder attention）。

与第一个编码器一样，第一个解码器也将输出序列的位置信息和嵌入作为其输入。因为模型不能使用当前或未来的输出来预测输出，因此必须对输出序列进行部分屏蔽以防止这种反向信息流。这使得自回归文本生成成为可能。最后一个解码器之后是最终的线性变换和softmax层以产生所有词汇的输出概率。

GPT是一种仅具有解码器的架构。

### 替代架构

训练基于Transformer模型的架构可能很昂贵，尤其是对于长输入而言。替代架构包括Reformer模型、ETC/BigBird模型等，前者可以将计算复杂度从{\displaystyle O(N^{2})}减少为{\displaystyle O(N\ln N)} ，后者则可以减少到{\displaystyle O(N)}，其中{\displaystyle N}表示序列长度。其实现得益于局部敏感哈希（英语：）与可逆层。

原始的Transformer模型需要与上下文窗口大小成二次方的内存大小。无注意力Transformer模型（Attention Free Transformer）则将对内存的需求减少为线性依赖，同时通过连接链与值保留了Transformer模型的优势。

2020年底推出了用于比较不同Transformer架构的基准测试。

训练
--

Transformer模型通常会进行自监督学习，包括无监督预训练和监督微调。由于监督微调时使用的带标签训练数据一般比较有限，预训练通常会在比微调时所用的更大的数据集上完成。预训练和微调的任务通常包括：

* 语言建模
* 下一句预测
* 问答系统
* 阅读理解
* 文本情感分析
* 文本改写（英语：）

应用
--

Transformer模型在自然语言处理（NLP）领域取得了巨大成功，例如机器翻译与时间序列预测任务。包括GPT-2、GPT-3、BERT、XLNet与RoBERTa在内的许多预训练模型展示了Transformer模型执行各种NLP相关任务的能力，并有很多潜在实际应用。这些应用包括：

* 机器翻译
* 文本摘要（英语：）
* 文本生成
* 命名实体识别
* 生物序列分析
* 视频理解

2020年，Transformer架构（更具体地说是GPT-2）被证明可以通过微调执行下象棋的任务。Transformer模型也已应用于图像处理，其结果可与卷积神经网络相媲美。

实现
--

Transformer模型已在TensorFlow、PyTorch等标准深度学习框架中实现。

Transformers是由Hugging Face制作的一个库，提供基于Transformer的架构和预训练模型。

参见
--

* 注意力机制
* GPT-3
* BERT
* 悟道预训练模型
* OpenAI
* ChatGPT
* 深度学习

参考文献
----

1. ↑  He, Cheng.. Transformer in CV. Towards Data Science. 31 December 2021  [2022-06-08]. （原始内容存档于2023-04-16）.
2. 1 2 3 4 5  Vaswani, Ashish; Shazeer, Noam; Parmar, Niki; Uszkoreit, Jakob; Jones, Llion; Gomez, Aidan N.; Kaiser, Lukasz; Polosukhin, Illia.. 2017-06-12. arXiv:1706.03762 可免费查阅 [cs.CL].
3. 1 2  Wolf, Thomas; Debut, Lysandre; Sanh, Victor; Chaumond, Julien; Delangue, Clement; Moi, Anthony; Cistac, Pierric; Rault, Tim; Louf, Remi.. 2020: 38–45. doi:10.18653/v1/2020.emnlp-demos.6.
4. 1 2 3 4 . Google AI Blog.  [2019-08-25]. （原始内容存档于2021-01-13）.
5. 1 2 3 . OpenAI. 2019-02-14  [2019-08-25]. （原始内容存档于2020-12-19）.
6. ↑ . Indico. 2016-04-18  [2019-10-15]. （原始内容存档于2020-10-21）.
7. 1 2 3  Alammar, Jay.. jalammar.github.io.  [2019-10-15]. （原始内容存档于2020-10-18）.
8. ↑  Clark, Kevin; Khandelwal, Urvashi; Levy, Omer; Manning, Christopher D.. Proceedings of the 2019 ACL Workshop BlackboxNLP: Analyzing and Interpreting Neural Networks for NLP (Florence, Italy: Association for Computational Linguistics). August 2019: 276–286  [2022-06-08]. doi:10.18653/v1/W19-4828 可免费查阅. （原始内容存档于2020-10-21）.
9. ↑ . Google AI Blog.  [2021-05-28]. （原始内容存档于2021-09-18） （英语）.
10. ↑ . Coursera.  [2022-06-08]. （原始内容存档于2020-10-26）.
11. ↑ . Google AI Blog.  [2020-10-22]. （原始内容存档于2020-10-22） （英语）.
12. ↑  Zhai.. arXiv:2105.14103 可免费查阅.
13. ↑  Tay.. arXiv:2011.04006 可免费查阅.
14. 1 2  Wang, Alex; Singh, Amanpreet; Michael, Julian; Hill, Felix; Levy, Omer; Bowman, Samuel.. Proceedings of the 2018 EMNLP Workshop BlackboxNLP: Analyzing and Interpreting Neural Networks for NLP (Stroudsburg, PA, USA: Association for Computational Linguistics). 2018: 353–355. S2CID 5034059. arXiv:1804.07461 可免费查阅. doi:10.18653/v1/w18-5446.
15. ↑  Allard, Maxime.. Medium. 2019-07-01  [2019-10-21]. （原始内容存档于2020-10-17） （英语）.
16. ↑  Yang, Zhilin Dai, Zihang Yang, Yiming Carbonell, Jaime Salakhutdinov, Ruslan Le, Quoc V.. 2019-06-19. OCLC 1106350082.
17. ↑  Monsters, Data.. Medium. 2017-09-26  [2019-10-21]. （原始内容存档于2020-10-17） （英语）.
18. ↑  Rives, Alexander; Goyal, Siddharth.. bioRxiv 10.1101/622803 可免费查阅.
19. ↑  Nambiar, Ananthan; Heflin, Maeve; Liu, Simon; Maslov, Sergei; Hopkins, Mark; Ritz, Anna.. 2020. S2CID 226283020. doi:10.1145/3388440.3412467 可免费查阅.
20. ↑  Rao, Roshan; Bhattacharya, Nicholas.. bioRxiv 10.1101/676825 可免费查阅.
21. ↑  Bertasias; Wang; Torresani.. 2021. arXiv:2102.05095 可免费查阅 [cs.CV].
22. ↑  Noever, David; Ciolino, Matt; Kalin, Josh.. 2020-08-21. arXiv:2008.04057 可免费查阅 [cs.AI].
23. ↑  Dosovitskiy, Alexey; Beyer, Lucas; Kolesnikov, Alexander; Weissenborn, Dirk; Zhai, Xiaohua; Unterthiner, Thomas; Dehghani, Mostafa; Minderer, Matthias; Heigold, Georg; Gelly, Sylvain; Uszkoreit, Jakob; Houlsby, Neil.. 2020. arXiv:2010.11929 可免费查阅 [cs.CV].
24. ↑  Touvron, Hugo; Cord, Matthieu; Douze, Matthijs; Massa, Francisco; Sablayrolles, Alexandre; Jégou, Hervé.. 2020. arXiv:2012.12877 可免费查阅 [cs.CV].

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * 
* 论
* 编
可微分计算 |
| --- |
|  |
| 概论 | 
* 可微分编程
* 自動微分
* 张量微积分（英语：）
* 信息几何
* 统计流形
* 神经形态工程（英语：）
* 模式识别
* 运算学习理论（英语：）
* 归纳偏置

 |
|  |
| 概念 | 
* 梯度下降
	+ SGD（英语：）
* 聚类
* 回归
	+
* 幻觉
* 对抗（英语：）
* 注意力
* 卷积
* 損失函數
* 反向传播
* + softmax
	+ sigmoid
	+ ReLU
* 正则化
* 
* 扩散（英语：）
* 自回归

 |
|  |
| 应用 | 
* 机器学习
* 人工神经网络
	+ 深度学习
* 科学计算
* 人工智能
* 語言模型
	+ 大型语言模型

 |
|  |
| 硬件 | 
* TPU
* VPU
* IPU（英语：）
* 憶阻器
* SpiNNaker（英语：）

 |
|  |
| 软件库 | 
* Theano
* TensorFlow
	+ Keras
* PyTorch
* JAX
* Flux.jl（英语：）

 |
|  |
| 实现 | 

|  |  |
| --- | --- |
| 视觉·语音 | 
* AlexNet
* WaveNet
* 人像合成
* 手寫
* OCR
* 语音合成
* 
* 
* AlphaFold
* DALL-E
* Midjourney
* Stable Diffusion
* Sora
* Whisper（英语：）

 |
|  |
| 自然语言 | 
* Word2vec
* Seq2seq
* BERT
* LaMDA
	+ Bard
* NMT
* 辩手项目（英语：）
* 沃森
* GPT
	+ GPT-1
	+ GPT-2
	+ GPT-3
	+ GPT-4
* GPT-J（英语：）
* ChatGPT
* 文心一言
* Chinchilla AI（英语：）
* PaLM（英语：）
* BLOOM（英语：）
* LLaMA

 |
|  |
| 决策 | 
* AlphaGo
* Q学习
* SARSA
* OpenAI Five（英语：）
* 自动驾驶
* MuZero
* 行动选择（英语：）
	+ Auto-GPT
* 机器人控制（英语：）

 |

 |
|  |
| 人物 | 
* 约书亚·本希奥
* 杰弗里·辛顿
* 杨立昆
* 艾力克斯·格雷夫斯
* 伊恩·古德费洛
* 吴恩达
* 杰米斯·哈萨比斯
* 大衛·席爾瓦
* 李飛飛
* 于尔根·施密德胡伯
* 伊爾亞·蘇茨克維

 |
|  |
| 组织 | 
* Anthropic
* DeepMind
* EleutherAI（英语：）
* Google Brain
* Meta AI（英语：）
* Mila（英语：）
* MIT CSAIL
* OpenAI
* Hugging Face

 |
|  |
| 架构 | 
* 多层感知器（MLP）
* 循环神经网络（RNN）
* 長短期記憶（LSTM）
* 门控循环单元（英语：）（GRU）
* 卷积神经网络（CNN）
* 残差神经网络（ResNet）
* 变换器
* 自编码器
* 变分自编码器（VAE）
* 生成对抗网络（GAN）
* 图神经网络（英语：）（GNN）
* 回响状态网络（英语：）（ESN）
* 神经图灵机（NTM）
* 可微分神经计算机（英语：）（DNC）

 |
|  |
| 
* 主题 主题
	+ 计算机编程
	+ 技术
* 分类 分类
	+ 人工神经网络
	+ 机器学习

 |

 |