机器学习中的Transformer改进模型深度解析
立即解锁
发布时间: 2025-08-31 02:06:02 阅读量: 14 订阅数: 20 AIGC 


Transformer深度学习实战
# 机器学习中的Transformer改进模型深度解析
## 1. 通用Transformer与Transformer-XL
### 1.1 通用Transformer(Universal Transformer)
通用Transformer利用自注意力机制整合不同位置的信息,并应用循环转换函数。它为每个位置引入了受Graves的ACT启发的动态ACT停止机制,能根据符号的复杂度来调整每个符号的计算。研究表明,通用Transformer在自然语言处理(NLP)和自然语言理解(NLU)的广泛任务中表现优于标准Transformer,在诸如LAMBADA语言建模等复杂任务中达到了新的先进水平。
### 1.2 Transformer-XL
#### 1.2.1 解决的问题
标准Transformer架构的固定宽度上下文窗口限制了其学习窗口外依赖关系的能力。而Transformer-XL能够处理比标准Transformer长450%的依赖关系,推理速度约快1800倍,同时还能尊重句子边界。
#### 1.2.2 段级循环(Segment-level recurrence)
- **原理**:Transformer-XL通过段级循环方法将上下文扩展到固定窗口之外。在处理当前文本段时,会将前一个文本段作为额外的上下文,并缓存前一个段以及该段每一层的Transformer输出。
- **公式变化**:
- 标准Transformer中,第n层Transformer的输入是第n - 1层的输出:
\[h^{(n)}_t = Transformer(h^{(n - 1)}_t)\]
内部从 \(h^{(n - 1)}_t\) 生成查询、键和值:
\[Q^{(n)}_t = h^{(n - 1)}_tW_q\]
\[K^{(n)}_t = h^{(n - 1)}_tW_k\]
\[V^{(n)}_t = h^{(n - 1)}_tW_v\]
其中,n = 1为第一层Transformer,n = 0为第一层的输入,即 \(h^{(0)}_t = X\)。
- 当包含前一个段时,计算当前段第n层Transformer的输出时,会有前一个段第n - 1层输出的贡献:
\[h^{(n)}_{t + 1} = TransformerXL(h^{(n - 1)}_{t + 1}, h^{(n - 1)}_t)\]
计算当前段的键和值时:
\[Q^{(n)}_{t + 1} = h^{(n - 1)}_{t + 1}W_q\]
\[K^{(n)}_{t + 1} = \tilde{h}^{(n - 1)}_{t + 1}W_k\]
\[V^{(n)}_{t + 1} = \tilde{h}^{(n - 1)}_tW_v\]
其中,\(\tilde{h}^{(n - 1)}_{t + 1} = [StopGradient(h^{(n - 1)}_t); h^{(n - 1)}_{t + 1}]\),StopGradient表示在操作过程中不计算梯度。
| 层 (n) | S1 | S2 | S3 | S4 |
| --- | --- | --- | --- | --- |
| 0 (输入) | \(h^{(0)}_1 = S1\) | \(h^{(0)}_2 = S2\) | \(h^{(0)}_3 = S3\) | \(h^{(0)}_4 = S4\) |
| 1 | \(h^{(1)}_1 = T(h^{(0)}_1)\) | \(h^{(1)}_2 = T(h^{(0)}_2, h^{(0)}_1)\) | \(h^{(1)}_3 = T(h^{(0)}_3, h^{(0)}_2)\) | \(h^{(1)}_4 = T(h^{(0)}_4, h^{(0)}_3)\) |
| 2 | \(h^{(2)}_1 = T(h^{(1)}_1)\) | \(h^{(2)}_2 = T(h^{(1)}_2, h^{(1)}_1)\) | \(h^{(2)}_3 = T(h^{(1)}_3, h^{(2)}_2)\) | \(h^{(2)}_4 = T(h^{(1)}_4, h^{(1)}_3)\) |
| 3 | \(h^{(3)}_1 = T(h^{(2)}_1)\) | \(h^{(3)}_2 = T(h^{(2)}_2, h^{(2)}_1)\) | \(h^{(3)}_3 = T(h^{(2)}_3, h^{(3)}_2)\) | \(h^{(3)}_4 = T(h^{(2)}_4, h^{(2)}_3)\) |
从表中可以看出,随着Transformer层数的增加,模型能够处理的有效上下文大小也在增加。形式上,第t段第n层Transformer的输出会受到最远t - n段的影响。
#### 1.2.3 Transformer-XL中的位置编码
- **绝对位置编码的问题**:由于Transformer没有循环或卷积层,通过位置编码显式地构建词序。每个输入序列有位置编码 \(P \in R^{L \times d}\) 和词嵌入 \(E \in R^{L \times d}\),完整输入序列表示为 \(X = E + P\)。但绝对位置编码是确定性的,与序列中的标记无关,这会导致段级循环出现问题。例如,在连接两个连续文本序列时,会拼接相同的位置编码,从而使模型丢失词序信息。
- **相对位置编码**:早期工作引入了相对位置编码,让注意力机制从序列中两个位置的相对距离中学习,而不是依赖标准Transformer的绝对位置编码。Transformer XL修改了注意力矩阵的计算,使用正弦相对位置编码。
- 展开 \(QK^T\) 的 (i, j) 项:
\[A_{ij} = (e_iW_q + p_iW_q)(W_k^Te_j^T + W_k^Tp_j^T)\]
\[= e_iW_qW_k^Te_j^T + e_iW_qW_k^Tp_j^T + p_iW_qW_k^Te_j^T + p_iW_qW_k^Tp_j^T\]
- Transformer XL将 \(A_{ij}\) 重新参数化为五个新的量:\(
0
0
复制全文
相关推荐










