Attention Is All You Need
记录论文《Attention Is All You Need》阅读过程中的一些思考。
简介
Transformer 领域的开山之作,证明了纯注意力机制无需递归和卷积即可完成序列转换任务,且更高效、更易并行化。
概念
词嵌入 / Embedding
因为模型无法直接处理文本,需要将其数字化,即所谓的编码(Encoding)。编码过程一般分几步:
- 使用
分词器(tokenizer)将文本按词、子词、字符切分为词元(tokens) - 利用
词表(Vocabulary)将tokens映射为对应的token IDs,对于词表未收录的词元,即超出词表(Out of Vocabulary, OOV)情形,按专用保留词元处理,即罕见词标记([UNK]),当然在现代子分词技术加持下,大部分词都可分解为已知子词,这种情况已经较为少见
而(子)词嵌入,就是将其 token ID 映射到一个可学习的矩阵中的一个向量的过程。一般而言,该矩阵的行数对应于词表的大小,而列数对应于(子)词的特征维度。
衡准
探微
Q1: 分词器是如何切分文本?
A:
按词切分(Word-based)策略是指按照空格直接将文本切分为一系列单词,每个独立单词都作为一个token。但这种方式会膨胀词表,因为很多相关的单词,比如 “dog” 和 “dogs”、“run” 和 “running” 这种有相关意义的单词被不必要的重复收录。按字符切分(Character-based)策略顾名思义就是切分到最小字符而不是单词,这样的词表相对较小。但从直觉来看,字符(尤其是英文等)本身不具备明确的意义,以其作为token使得绑定某种意义到该token变得困难。按子词切分(Subword tokenization)策略则是一种折中,对于高频词直接保留,而低频词被切分为更具意义的子词。例如 “annoyingly” 是一个低频词,将其切分为 “annoying” 和 “ly”,它们不仅出现频率更高,且词义也得以保留。
分词策略的选择主要取决于三个因素:书写系统、形态复杂度、任务目标。虽然不同的语言类型(分析语、屈折语、黏着语)会影响策略,但现代大模型里常用的子词分词(字节对编码(Byte Pair Encoding, BPE)、WordPiece、Unigram)本质都是在“语言学词边界”和“统计压缩效率”间折中。
Q2: 在经典 Transformer 框架中,嵌入矩阵的应用有什么技巧么?
A: 在标准框架中,词嵌入的矩阵在使用时有两个特点:
权重共享:因为论文采用了共享的源-目标词表,所以在编码器(Encoder)和解码器(Decoder)中的嵌入层(embedding layers)以及softmax前的线性转换中可以使用同一份权重权重缩放:在嵌入层中,作者经验性地将查表得到的词向量乘以 $\sqrt{d_{model}}$ 进行缩放,再与位置编码相加。对于这一点,可能是源于工程直觉:学习词特征向量时,一般会使用L2 Norm对其进行归一化,因此随着特征维度的增加,会使得向量元素趋小。而该权重后续会叠加量级相对稳定的位置编码,为了使它们量级匹配需要缩放。
补充说明:
原作中能使用共享的源-目标
词表,是因为英语和德语属于同一语系(印欧语系日耳曼语支),尤其在子词(subword)层面有很多重叠:- 大量公共词根、前/后缀,例如 “national” / “national-ismus”
- 数字、标点、专有名词往往完全相同
- 字符 n-gram 在两种语言中高度共享
这为使用
joint BPE在双语语料上构建一个高覆盖率的语料库提供了基础,最终能得到一个约 $37,000$ 个token的共享词表。
位置编码 / Positional Encoding
由于 Transformer 中没有循环结构和卷积,为了让模型利用序列顺序,需要注入位置信息。论文采用正余弦位置编码:
$$PE_{(pos, 2i)} = \sin\left(\frac{pos}{10000^{2i/d_{model}}}\right)$$$$PE_{(pos, 2i+1)} = \cos\left(\frac{pos}{10000^{2i/d_{model}}}\right)$$
其中:
- $pos$ 是序列中
token的绝对位置 $\in [0, m-1]$($m$为序列长度) - $i$ 是维度索引 $\in [0, d_{model}/2)$($d_{model}$为隐藏层维度)
- 设 $\omega_i = \frac{1}{10000^{2i/d_{model}}}$,则上式可简化为:
- 偶数维:$\sin(pos \cdot \omega_i)$
- 奇数维:$\cos(pos \cdot \omega_i)$
衡准
良好的位置编码需要满足:
- 能够表示
token在序列中的绝对位置 - 对于不定长度的序列,其中不同
token间的相对位置的表达最好数值稳定 - 能够表示即使在训练过程中没有出现过的序列长度
而上述基于三角函数的正余弦编码方法可以:
- 构造足够低频的三角函数,不同位置 $pos$ 可以产生不同的编码向量,以表达绝对位置
- 对于同一奇偶组(第 $2i$ 和 $2i+1$ 特征维)的不同的位置 $pos$ 和 $pos+k$,利用三角和差公式,可以表达相对位置: $$\sin((pos+k)\omega_i) = \sin(pos\cdot\omega_i)\cos(k\cdot\omega_i) + \cos(pos\cdot\omega_i)\sin(k\cdot\omega_i)$$$$\cos((pos+k)\omega_i) = \cos(pos\cdot\omega_i)\cos(k\cdot\omega_i) - \sin(pos\cdot\omega_i)\sin(k\cdot\omega_i)$$ 写成矩阵形式: $$PE_{pos+k} = \begin{bmatrix} \cos(k\omega_i) & \sin(k\omega_i) \\ -\sin(k\omega_i) & \cos(k\omega_i) \end{bmatrix} PE_{pos} = R_k \cdot PE_{pos}$$ 显见,$R_k$ 是一个旋转矩阵,且其只依赖于相对距离 $k$,不依赖绝对位置。
- 多频率三角函数既保证编码唯一,以表达绝对位置,又使数值恒在区间 $[-1, 1]$,这种有界性赋予了处理更长序列时的数值稳定性和外推能力。
探微
Q1: 为什么需要位置编码?
A: 单词在句子中的顺序会影响语义,而 Attention 操作中 $softmax(\frac{QK^T}{\sqrt{d_k}})V$ 的矩阵操作对 token 的顺序不敏感,因此需要额外注入位置信息。
Q2: 这种正余弦编码有什么缺点?
A: 主要有外推性有限、高频维度退化、与 Attention 机制的适配性问题等
- 外推性指模型能处理训练时未见过的更长序列。虽然旋转矩阵 $R_k$ 对任意相对距离 $k \in \mathbb{R}$ 都有数学定义,但实践中
- 当处理 $L_{test} \gg L_{train}$ 时,模型在训练中从未见过高位置索引的
token,这些token的编码在Attention计算中产生的分布与训练分布显著偏离 - 频率 $\omega_i = \frac{1}{10000^{2i/d}}$ 固定,无法根据实际序列长度自适应
- 当处理 $L_{test} \gg L_{train}$ 时,模型在训练中从未见过高位置索引的
- 高频维度退化指 $i$ 较大的维度,其
- 变化周期非常短(仅为 $\frac{2\pi}{\omega_i}$),位置间的区分度低,即相邻
token在高频维度上的差异可能不够显著 - 梯度流通过高频维度时容易衰减或爆炸,难以有效传播
- 变化周期非常短(仅为 $\frac{2\pi}{\omega_i}$),位置间的区分度低,即相邻
- 与
Attention机制的适配性问题包括- 位置编码是加法注入,可能存在信息混淆
- 不同频率的维度对
Attention贡献不均 - 缺乏显式的相对位置约束
Q3: 位置编码有哪些改进?
A: 比较成功的有 RoPE (旋转位置编码)、ALiBi (Attention with Linear Biases) 等
RoPE的核心思想是直接对Query和Key向量应用旋转变换,具备优势:- 纯相对位置编码,相对距离 $k=m-n$ 对
Attention score的贡献只依赖于 $m-n$ - 理论清晰,旋转矩阵对任意长序列有定义
- 参数少,计算高效
- 大模型标配
但有缺点:
- 对极长序列外推仍有限制
- 需要在计算
Attention前预先旋转 $Q$、$K$ 向量
- 纯相对位置编码,相对距离 $k=m-n$ 对
ALiBi的核心思想是直接在Attention score中加入线性相对位置偏差,不用位置编码,即 $$\text{Attention}(Q,K,V) = \text{softmax}\left(\frac{QK^T + m(i,j)}{\sqrt{d_k}}\right)V$$ 其中,$m(i,j) = -\alpha \cdot |i - j|$ 且 $\alpha$ 可学习或固定,具备优势:- 最强的外推性,可以处理远长于训练长度的序列
- 无需位置编码,参数极少
- MPT、BLOOM等模型验证有效
但有缺点:
- 相对位置信息过于简化,精度有时不如
RoPE - 硬编码在
Attention层,灵活性较差
注意力 / Attention
注意力(Attention)是将一个查询(Query)和一组键值对(Key-Value pairs)映射到输出的函数,其中输出是 Value 的加权和,而权重则由 Query 与对应于 Value 的 Key 之间的相似度决定。
可表达为: $$\text{Attention}(Q, K, V) = \sum_i \alpha_i V_i$$ 其中 $\alpha_i = f(Q, K_i)$,且满足 $\sum_i \alpha_i = 1$ 。
从定义不难看出,不同注意力机制的区别在于相似度的定义和 $Q$、$K$、$V$ 的来源。

经典 Transformer 论文中采用一种叫带缩放的点积注意力(Scaled Dot-Product Attention)机制。设批大小为 $1$ ,对于输入矩阵 $X \in \mathbb{R}^{s \times d_{model}}$,则其数学形式:
$$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$$
其中:
- $Q\coloneqq XW^Q$ :代表当前
token想要寻找的信息 - $K\coloneqq XW^K$ :代表当前
token供外部识别的标签 - $V\coloneqq XW^V$ :代表当前
token真实携带的语义 - $QK^T$ :兼容性,用点积计算
token之间的相似度 - $\sqrt{d_k}$ :缩放因子,论文作者怀疑较大的 $d_k$ 会使得 $QK^T$ 的数值变大,进而导致反向传播时的梯度消失
显见,这是一种乘性(multiplicative)注意力,而另一种常用的是加性(additive)注意力。加性注意力使用单隐藏层的前馈神经网络(feed-forward neural network)计算相似度。作者采用乘性注意力而不是加性注意力主要是考虑到,虽然它们的理论复杂度相近,但乘性注意力可以利用高度优化的矩阵乘法实现,在实践中更快、更省空间。

相比于仅通过一次注意力函数就得到输出,多头注意力(Multi-Head Attention)是通过 $h$ 次可学习的线性映射将 Query、Key、Value 分别映射到 $d_k,d_k,d_v$ 维投影子空间,再并行地计算 $h$ 个注意力函数(即 $h$ 头)以学习不同类型的依赖关系,得到多头的输出后再拼接起来并线性映射回模型维度 $d_{model}$ 。同样令批大小为 $1$ ,对于输入矩阵 $X \in \mathbb{R}^{s \times d_{model}}$,则其数学形式:
$$\text{MultiHead}(Q,K,V) = \text{Concat}(\text{head}_1, \ldots, \text{head}_h)\,W^O$$
其中 $\text{head}_i = \text{Attention}(Q_i\coloneqq XW_i^Q,\; K_i\coloneqq XW_i^K,\; V_i\coloneqq XW_i^V)$ ,且 $W_i^Q \in \mathbb{R}^{d_{model} \times d_k},\,W_i^K \in \mathbb{R}^{d_{model} \times d_k},\,W_i^V \in \mathbb{R}^{d_{model} \times d_v},\,W^O \in \mathbb{R}^{hd_v \times d_{model}}$ 。
而带掩码的自注意力(Masked Self-Attention)是在 Self-Attention 的相似度打分矩阵上施加一个掩码矩阵(mask),将不允许关注的位置置为 $-\infty$(或一个足够小的负数),使其经过 softmax 后权重近似为 $0$ 。以自回归(auto-regressive)生成常用的因果掩码(causal mask)为例,其核心是第 $t$ 个位置只能看见 $\le t$ 的位置,不能看未来信息,可写作:
$$\text{MaskedAttention}(Q,K,V)=\text{softmax}\left(\frac{QK^T+M}{\sqrt{d_k}}\right)V$$
其中:
- $M_{ij}=0$ (当 $j \le i$)
- $M_{ij}=-\infty$ (当 $j > i$)
衡准
探微
Q1: 自注意力的“自”什么含义?
A: 自注意力(Self-Attention)的“自”指其 $Q$、$K$、$V$ 全部来自同一个序列自身。
Q2: 在经典 Transformer 框架中,为什么使用自注意力?
A: 主要有三点原因:
- 并行性强:
Self-Attention在训练时可以并行计算整个序列,避免了RNN按时间步串行依赖带来的吞吐瓶颈 - 长程依赖建模有效:任意两个
token之间的信息交互路径长度为常数级(单层内可直接交互),相比循环结构更容易捕获远距离依赖 - 表达灵活且可解释:每个位置可对全序列动态分配权重,不同注意力头可学习不同类型的关系,
Attention map也提供了一定可解释性
在经典 Transformer 中,Encoder 采用全局 Self-Attention,Decoder 采用带因果掩码的 Self-Attention,并在此基础上通过 Cross-Attention 融合源序列信息。
Q3: 在经典 Transformer 框架中,为什么使用带因果掩码的自注意力?
在经典 Transformer 中,每个 Decoder block 的第一层注意力都会使用这种带因果掩码的自注意力。它允许训练时并行计算整个序列,同时保持与推理阶段“逐 token 生成”的因果约束一致。
在训练时,会并行的喂整句,未来 token 是实际存在的,如果某一层未进行掩码,则位置 $t$ 就能直接看到 $t+1...n$ 的信息,造成信息泄漏。而一旦某层泄漏,后层的输入就会被污染,层层传递,无法保证严格的自回归。
Q4: 在经典 Transformer 框架中,选择缩放因子为 $\sqrt{d_k}$ 有什么依据?
A: 设批大小为 $1$ ,对于矩阵 $Q, K \in \mathbb{R}^{s \times d_k}$ ,有:
$$(QK^T)_{ij} = \sum_{l=1}^{d_k} Q_{il} K_{jl}$$
由于模型初始化时, $Q$ 和 $K$ 往往都从独立同分布(Independent and identically distributed, i.i.d)的分布(如正态分布 $\mathcal{N}(0, \sigma^2)$ )采样,因此:
$$E[Q_{il}K_{jl}] = E[Q_{il}]E[K_{jl}] = 0$$
$$\text{Var}(Q_{il}K_{jl}) = E[(Q_{il}K_{jl})^2] - E[Q_{il}K_{jl}]^2 = E[Q_{il}^2 K_{jl}^2] = E[Q_{il}^2]E[K_{jl}^2] = \sigma^2 \cdot \sigma^2 = \sigma^4$$
则有:
$$\text{Var}\left((QK^T)_{ij}\right) = \text{Var}\left(\sum_{l=1}^{d_k} Q_{il}K_{jl}\right) = \sum_{l=1}^{d_k} \text{Var}(Q_{il}K_{jl}) = d_k \cdot \sigma^4$$
其标准差为 $\sqrt{d_k} \cdot \sigma^2$ 。
由中心极限定理(central limit theorem, CLT)可知,只要 $Q_{il}K_{jl}$ 是独立,且有限二阶矩,那么无论原始分布是什么形状,当 $d_k$ 足够大时,其点积值都近似服从高斯分布,亦即:
$$\frac{\sum_{l=1}^{d_k} Q_{il}K_{jl}}{\sqrt{d_k}\,\sigma_Q\sigma_K} \xrightarrow{d} \mathcal{N}(0, 1) \quad (d_k \to \infty)$$
可见随着维度 $d_k$ 增大,结合正态分布的形状和其线性增大的方差, $QK^T$ 的元素随之增大的概率增加。而当其中某个元素 $z$ 很大时 $\text{softmax}(z) \approx 1$ ,其它位置则 $\approx 0$ ,按链式法则反向传播时(此处梯度实际为 Jacobian 矩阵,仅用单分量近似说明):
$$\frac{\partial L}{\partial z} = \text{softmax}(z)(1 - \text{softmax}(z)) \cdot \frac{\partial L}{\partial \text{softmax}} \approx 1 \cdot 0 \cdot (\cdots) = 0$$
梯度消失了。
如果施加缩放因子,则有: $$\text{Var}\left(\frac{(QK^T)_{ij}}{\sqrt{d_k}}\right) = \frac{1}{d_k} \text{Var}\left((QK^T)_{ij}\right) = \frac{1}{d_k} \cdot d_k \cdot \sigma^4 = \sigma^4$$ 自此,方差与 $d_k$ 无关。
拓展:
若零均值假设不满足,即 $E[Q_{il}] = \mu_Q \neq 0$ 且 $E[K_{il}] = \mu_K \neq 0$ ,则: $$\text{Var}(Q_{il}K_{jl}) = E[Q^2]E[K^2] - \mu_Q^2\mu_K^2$$ 因此有: $$\text{Var}((QK^T)_{ij}) = d_k\left[(\sigma_Q^2+\mu_Q^2)(\sigma_K^2+\mu_K^2) - \mu_Q^2\mu_K^2\right]$$ 可见,方差线性正比于 $d_k$ 同样不依赖零均值假设,采用这个假设仅仅是为了保持系数干净。
前馈神经网络 / Feed-Forward Network
在文中每个编码器、解码器层都包含一个前馈神经网络(Feed-Forward Network, FFN),其由两个全连接层,中间夹一个 ReLU 激活层构成。其数学形式为:
$$\text{FFN}(\mathbf{x}) = \max(0,\ \mathbf{x}\mathbf{W}_1 + \mathbf{b}_1)\ \mathbf{W}_2 + \mathbf{b}_2$$
衡准
探微
Q1: 如何理解经典 Transformer 框架中 Position-wise Feed-Forward Network 的 Position-wise 的含义?
文中强调这一层是 Position-wise ,因为其数据处理是沿着位置维度逐点处理,不同位置间的数据在这一步不会交互。相比于 Attention 负责“信息抽取”,FFN 可以认为负责“信息加工”。如此把“跨位置关系建模”交给 Attention ,把“逐位置非线性变换”交给 FFN的职责分离设计,可以使得模型结构稳定且易于训练。
Q2: 为什么说 FFN 相当于 $1 \times 1$ 的卷积?
当核的大小为 $1$ 时,卷积过程中不会涉及计算位置的邻域,且核的参数不变,只是将同一组参数在每个位置重复应用,这与 FFN “逐位置、共享权重”的计算非常相似。
归一化 / Normalization
归一化(Normalization, Norm)是一种将待处理数据经处理后限制到某个范围的数据处理方式。
归一化将数据转换到同一量级,可以:
- 使梯度流更稳定,即寻求最优解的过程更平稳,从而更快的收敛到最优解
- 更稳定的梯度流也允许更高的学习率,从而使模型对学习率更鲁棒
按计算方式分,常见的归一化有:
| 名称 | 计算方法 | 输出范围 | 场景 |
|---|---|---|---|
Min-max Normalization (Rescaling) | $\hat{x} = \frac{x - x_{min}}{x_{max} - x_{min}}$ | $[0,\quad 1]$ | 已知范围 且需保留分布形状 |
Mean Normalization | $\hat{x} = \frac{x - \text{mean}}{x_{max} - x_{min}}$ | $[-1,\quad 1]$ | Min-max Norm 的变体 |
Z-score Standardization | $\hat{x} = \frac{x - \mu}{\sigma}$ | $(-\infty,\quad \infty)$ | 假设属于高斯分布 |
Vector Normalization | $\hat{x} = \frac{x}{\lVert x \rVert}$ | 单位超球面 | 只关心方向信息 |
按施加位置分,常见的归一化有:
| 名称 | 统计维度 | 计算方法 | 特点 |
|---|---|---|---|
Batch Norm | 在“批”维度求 $\mu,\sigma$ | $\hat{x}_{b,c,h,w} = \frac{x_{b,c,h,w} - \mu_c}{\sqrt{\sigma_c^2 + \epsilon}}$ $y_{b,c,h,w} = \gamma_c \cdot \hat{x}_{b,c,h,w} + \beta_c$ | 依赖“批大小” 训练和推理不一致 需动态统计 |
Layer Norm | 在“特征”维度求 $\mu,\sigma$ | $\hat{x}_{b,t,d} = \frac{x_{b,t,d} - \mu_{b,t}}{\sqrt{\sigma_{b,t}^2 + \epsilon}}$ $y_{b,t,d} = \gamma_d \cdot \hat{x}_{b,t,d} + \beta_d$ | 不依赖“批” 训练和推理一致 |
Instance Norm | 样本内单通道计算 | $\hat{x}_{b,c,h,w} = \frac{x_{b,c,h,w} - \mu_{b,c}}{\sqrt{\sigma_{b,c}^2 + \epsilon}}$ $y_{b,c,h,w} = \gamma_c \cdot \hat{x}_{b,c,h,w} + \beta_c$ | 移除样本特有统计信息 (如风格迁移) |
经典 Transformer 中,采用基于 Z-score 的 Layer Norm 计算归一化,可以避免因为序列数据长度不一致带来的问题。
其中 $\epsilon$ 为数值稳定项,可以:
- 防止 $\sigma = 0$ 时带来的除零问题
- 避免 $\sigma$ 很小导致梯度爆炸,提高反向传播时的数值稳定性
- 对 $\sigma$ 作隐式下界,限制归一化强度,避免过渡压缩特征
衡准
探微
Q1: 为什么归一化会使梯度流更稳定?
参考文档
以房价预测为例,假设房价仅考虑房子到地铁站的距离 $x_1$ 和房子的房间数量 $x_2$ ,且定义房价预测模型为 $y=\theta{_1}\cdot x_1+\theta{_2}\cdot x_2$ ,则损失函数为: $$J=(\theta{_1}\cdot x_1+\theta{_2}\cdot x_2-y_{label})^2$$ 则对该损失函数的优化过程可作如下可视化,图中红色圈为损失函数等高线,而蓝色折线为梯度更新路径,且箭头方向总正交于所在位置的等高线,为梯度更新方向。

在未归一化时,距离 $x_1 \in [0, 5000], x_2 \in [0, 10]$ ,由于 $x_1, x_2$ 的量级差异巨大,其损失函数的等高线呈现为一个瘦窄的椭圆(左图),如点 $x_1=1000, x_2=3$ 处的等高线为 $J=(1000\cdot\theta{_1}+3\cdot\theta{_2}-y_{label})^2$ ,梯度下降过程会呈之字形,导致下降曲折缓慢。
而数据若经 Min-max Norm 处理后处于同一量级,在 $x'_1=\frac{1000-0}{5000-0}=0.2, x_2=\frac{3-0}{10-0}=0.3$ 处的损失函数等高线则为 $J=(0.2\cdot\theta{_1}+0.3\cdot\theta{_2}-y_{label})^2$ ,为一矮胖的椭圆形(右图),梯度更新方向更为稳定,求解优化过程变得更加迅速且平缓。
Q2: 为什么归一化后需要施加参数为 $\gamma,\beta$ 的仿射变换?
假设只做改进后的 Z-score Norm ,即 $\hat{x} = \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}}$ 会有几个问题:
- 模型被迫接受“标准化”后的分布
- 不同神经元都使用相同的 $\sigma$ ,限制了神经元的精细表达能力
- 模型无法自主关闭
归一化
而使用仿射变换后,即
$$y = \gamma \cdot \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} + \beta$$
展开后
$$y = \frac{\gamma}{\sqrt{\sigma^2 + \epsilon}} \cdot x + \left( \beta - \frac{\gamma \mu}{\sqrt{\sigma^2 + \epsilon}} \right)$$
显然,这还是线性变换,但模型通过学习 $\gamma,\beta$ 具备了学习最优斜率和截距的能力。
甚至更进一步,若模型决定“关闭这一层的归一化”,它可以学到 $\gamma = \sqrt{\sigma^2 + \epsilon}, \quad \beta = \mu$ 则
$$y = \sqrt{\sigma^2 + \epsilon} \cdot \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} + \mu = x$$
即可恢复原始值。
正如论文中所说:“归一化后,我们不能假设层的输入分布是固定的;模型应该利用 $\gamma,\beta$ 参数的灵活性来调整输入的均值和方差。”
正则化 / Regularization
正则化(Regularization)不是一个具体的技术,而是指任何用于减少模型过拟合、提高泛化能力的技术。
常见的有:
L1、L2正则:通过约束权重大小Dropout:通过随机移除单元Early Stopping:通过提前停止训练数据增强(Data Augmentation):通过扩展训练集
衡准
探微
暂退法 / Dropout
暂退法(Dropout)是指训练过程中,以一定概率 $p$ 随机关闭神经元(即输出置 $0$),在推理时使用所有神经元但是缩放激活值。
其数学形式为:
$$y = \frac{x \cdot \text{Mask}}{1-p}, \quad \text{Mask} \sim \text{Bernoulli}(1-p)$$
经典 Transformer 中,对每一子层的输出施加一个 $p=0.1$ 的 Dropout 然后再连接残差并做 Layer Norm 。此外,文中还对编码器和解码器块中叠加了位置编码的 embedding 同样施加了 dropout ,以小幅增加随机性。
衡准
探微
标签平滑 / Label Smoothing
标签平滑(Label Smoothing)是深度学习中的一种正则化技术,它通过平滑值替换独热(one-hot)编码的 $0/1$ 标签来防止过度拟合(overfitting)和过渡自信(overconfident)的预测,从而达到改善模型泛化能力的目的。
在使用 Softmax 回归处理多分类任务时,如果使用标准 one-hot 标签,如 $y_i = [0, 1, 0, \ldots]$ ,会使模型为正确类别的输出学习到 $\to \infty$ ,无疑会:
- 增加过拟合风险
- 模型对对抗样本敏感
- 难以学习类别间的关系
若使用平滑后的值 $\tilde{y}_i = (1 - \alpha) \cdot y_i + \alpha \cdot \frac{1}{K}$ ,其中
- $\alpha$ 是平滑系数,常为 $0.1$
- $K$ 是类别总数
能够避免;
- 防止模型
overconfident - 避免模型学出尖锐的决策边界以改善泛化能力
衡准
探微
思路
