在我们开始之前,先来快速了解一下令牌化(Tokenization)!
原始文本 → 令牌化 → 嵌入(Embedding) → 模型
嵌入是使用一系列数字对每个令牌(大致上是一个单词)进行有意义的表示。
这种嵌入是我们提供给语言模型的输入。
语言建模的核心思想是理解语言内部的结构和模式。
通过建模句子中单词(令牌)之间的关系,我们可以捕捉到文本的上下文和含义。
现在,自注意力是一种沟通机制,帮助建立这些关系,以概率分数表示。
每个令牌都给自己分配最高分,并根据其他令牌的相关性分配额外分数。
你可以把它想象成一个有向图 要理解这些概率/注意力分数是如何获得的:
我们必须理解3个关键术语:
- 查询向量(Query Vector) - 键向量(Key Vector) - 值向量(Value Vector)
这些向量是通过将输入嵌入乘以三个可训练的权重矩阵来创建的。
现在,这里是一个关于如何将输入嵌入与键(Keys)、查询(Queries)和值(Values)结合以获得实际注意力分数的更广阔的图景。
在获取键、查询和值之后,我们将它们合并以创建一组新的、有上下文感知的嵌入。
使用PyTorch实现自注意力,再简单不过了!
非常直观!
|