Skip to content

Transformers

:material-circle-edit-outline: 约 628 个字 :material-clock-time-two-outline: 预计阅读时间 2 分钟

自注意力架构

我们可以将 attention 的机制看成一个 soft query

image-20250311180148665

image-20250311182150791

attention 有些问题需要解决,否则不能直接用于模型

一个问题是 attention 处理语句时忽了单词的绝对顺序,集合内单词的任意排列得到的输出是一样的,所以我们需要对词语的位置信息进行编码

我们设计一个向量来表示位置信息,只需在第一层进行编码即可得到

image-20250311183123980

具体向量是什么样子的有很多种,例如正弦表示:

image-20250311192109215

左侧公式

  • i 表示当前单词的位置(第 iii 个单词)。
  • d 表示嵌入向量的维度(例如 512 维)。

右侧的图

  • 横轴是 序列索引(Index in the sequence),表示不同单词在句子中的位置。
  • 纵轴是 维度(Dimension),表示嵌入向量的不同维度。
  • 颜色表示值的大小(深色 = 低值,浅色 = 高值)。
  • 底部是平行的红色条纹:表示低维度的编码变化比较慢,频率较低,编码短距离依赖。
  • 上方的黑白交替条纹:表示高维度的编码变化更快,频率更高,编码长期依赖。

当然,实际上我们更加关注相对位置而非绝对位置

如何我们需要为自注意力机制添加经典深度学习中的非线性元素

image-20250311193305345

然后对于机器翻译或语言建模等选哟定义序列概率分布的任务,我们不能让模型提前查看未来信息,这是一种作弊

没搞明白,训练时提供上下文参数不会更准确?推理时也没办法获得未来信息

哦哦,因为注意力分数是所有 token 都有输出,我们训练时不应该使用后面单词的

实现方式就是设计一个注意力分数矩阵作为输出

image-20250311194709891

这个只在解码器用,因为会出现计算自回归式概率,即 P(a1)P(a2|a1)P(a3|a2a1)...

编码器还是允许看未来信息的,让元素能互相观察

解决了三个问题后,我们就得到了一个最简单的自注意力架构

image-20250311195651954

但实际上没人会使用这个架构,性能不太够

Transformers

有一部分数学推导没听 [08]2023 _ Lecture 8 - Self-Attention and Transformers.zh_en_哔哩哔哩_bilibili

【超详细】【原理篇&实战篇】一文读懂Transformer-CSDN博客

image-20250313102349363