深入理解BERT:从自注意力机制到迁移学习
立即解锁
发布时间: 2025-08-30 00:48:21 阅读量: 5 订阅数: 24 AIGC 

### 深入理解BERT:从自注意力机制到迁移学习
#### 1. 自注意力机制:分析不同标记的“相关性”
自注意力机制是理解文本语义的重要工具。以文本 “The mouse eats cheese” 为例,对于输入的 \(T = 4\) 个标记 \(u_1, \ldots, u_T\),其静态输入嵌入 \(x_1, \ldots, x_T\) 通过查找并添加位置嵌入来确定。位置嵌入由不同频率的正弦和余弦曲线的值定义,不同标记位置对应不同的位置嵌入值。
接下来,输入嵌入 \(x_t\) 分别与三个矩阵 \(Q\)、\(K\) 和 \(V\) 相乘,得到三个向量:“查询”(橙色)、“键”(浅蓝色)和 “值”(深蓝色),计算公式如下:
\[
q_t = Q \cdot x_t \\
k_t = K \cdot x_t \\
v_t = V \cdot x_t
\]
通常,查询向量 \(q_t\) 和键向量 \(k_t\) 长度相同,但比输入嵌入 \(x_t\) 短。若要计算第二个标记 \(v_2 = \) “mouse” 的新嵌入,需计算 “mouse” 的查询向量 \(q_2\) 与其他标记的键向量 \(k_t\) 的标量积,以此确定两个嵌入之间的 “相关性”。
标量积的计算结果为标量值 \(\alpha_t\),这些值通过 softmax 函数归一化为正权重 \((\gamma_1, \ldots, \gamma_T)\),且权重之和为 1.0,公式如下:
\[
(\gamma_1, \ldots, \gamma_T) = \text{softmax}(\alpha_1, \ldots, \alpha_T)
\]
然后,使用这些权重对值向量 \(v_t\) 进行加权求和,得到新的嵌入向量 \(\breve{x}_2\)。新的嵌入向量 \(\breve{x}_2\) 是上下文敏感的,因为它包含了其他标记 “The”、“eats” 和 “cheese” 的信息。例如,由于 “eats” 标记通常与生物一起出现,“mouse” 的嵌入会被转换为动物嵌入,而不是计算机设备或漫画角色。
这个计算过程会并行地对输入文本的所有标记 \(v_1, \ldots, v_T\) 重复进行,从而为每个标记生成新的嵌入 \(\breve{x}_1, \ldots, \breve{x}_T\)。矩阵 \(Q\)、\(K\) 和 \(V\) 是需要学习的参数。
与 RNN 注意力模型相比,自注意力机制有三个方面的不同:
- 注意力计算始终针对与单个标记相关的嵌入,而不是结合不同标记信息的隐藏向量。
- 嵌入在开始时就与矩阵 \(Q\)、\(K\) 和 \(V\) 相乘,这在定义 “相关性” 时提供了更大的灵活性。
- 为了获得更具表现力的嵌入,会对输入文本的所有标记对进行自注意力计算。
为了增加灵活性,不仅在每层进行一次注意力计算,而是使用 \(r\) 个不同的矩阵 \(Q_j\)、\(K_j\) 和 \(V_j\)(\(j = 1, \ldots, r\))同时进行计算,这被称为多头注意力。值向量的长度选择为 \(\text{length}(x_t)/r\),通过将 \(r\) 个加权平均值的结果连接起来,可以形成新的嵌入 \(\breve{x}_t\)。
下面是自注意力机制的计算流程:
```mermaid
graph TD;
A[输入标记] --> B[确定静态输入嵌入并添加位
```
0
0
复制全文
相关推荐









