小猫都能懂的大模型原理 3 - 自注意力机制

本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI

Transformer 的核心创新就是自注意力机制,如果忽略数学层面的问题,其实不难理解。

过去的深度学习框架对文字的处理,没有考虑到(大范围的)上下文,例如 RNN 就会一直循环计算前面的文字的影响力,但是距离一长,前面内容的记忆会丢失得比较多,而且 RNN 这个串行逻辑也跑不快。

自注意力

自注意力的突破点就在这里,它让整个上下文里的 Token 互相理解 ,计算过程是可以并行进行的。

之前说 GPT2 一个词维度有七百多,在下面这个例子里面,我们假设一个词维度只有 3。首先在词向量的基础上加上同样维度的位置向量,然后我们就要开始子注意力里面最精彩的 QKV 计算了。

我们从 Token 的向量开始:

  • • "Your" →
  • • "journey" →
  • • "step" →

然后,每个 都会通过三个矩阵(每个注意力头都有自己的三个矩阵,这三个矩阵是可训练的):

分别点积得到:

  • • Query 向量
  • • Key 向量
  • • Value 向量

Query 其他 Token

以当前词 "journey" 为例,就是用它的 query 向量 ,去点乘整个上下文其他词key 向量

  • • "Your" →
  • • "journey" →
  • • "step" →

这就等于计算每个词与当前 query 的相似度

例如:

  • • ...

这些结果代表了当前词("journey")与其他词的"相关程度"。

点积: 点积不仅被视为一种将两个向量转化为标量值的数学工具,而且也是度量相似度的一种方 式,因为它可以量化两个向量之间的对齐程度:点积越大,向量之间的对齐程度或相似度就 越高。在自注意机制中,点积决定了序列中每个元素对其他元素的关注程度:点积越大,两 个元素之间的相似度和注意力分数就越高。

归一化注意力权重

接着对所有相似度 进行 Softmax 归一化(公式不用细看,归一化就是让所有值加起来等于 1):

得到:

  • • ...

这些值称为 注意力权重(attention weights) ,表示模型在处理当前词"journey"时,对其他词的关注程度。

上下文向量

最后一步: 每个词都有自己的 value 向量 ,将它与对应的注意力权重相乘并求和:

如图中:

  • • ...

计算后得到:

这个向量 就是 "journey" 的上下文向量(context vector)它综合了句子中各个词的语义信息,并且根据注意力权重动态决定了"关注谁"。

在点积之后,为了防止数值过大导致 Softmax 算出来的梯度太小(难以训练),我们通常会把结果除以一个缩放系数(通常是维度的根号,即 ),然后再做归一化。

经过上面一同操作,就得出了著名得注意力公式:

掩码

因果注意力就是把每个字后面的字都盖住,防偷看。

因果掩码让大模型只考虑前面的内容,不是因为后面的内容没有用,而是因为训练的目标就是从前面的内容生成后面的内容,所以即使有用,在这个运行机理上后面的内容就是不可访问的,大模型必须在后面不可知的情况下进行学习。

另一种掩码是 dropout,指每个头都随机选一些词盖住,让模型的注意力能集中到某些词上。

多头

前面也说每个头的 QKV 矩阵都是不一样,因为在初始化 QKV 矩阵时数值就是随机的 ,那么通过反向传播得到的值就不一样,所以各个头注意到的东西自然也不一样

虽说人类不好理解注意力,但还是可以通过注意力可视化找到一些提示,例如某些头会学习到被动语态,又有某些头会学习到词性分析。

最后系统会把多个头的信息汇总,最后输出到下一步。

参考资料

  • • 从零构建大模型

学习资源推荐

如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。

本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI

相关推荐
FITA阿泽要努力28 分钟前
动手体验:5min实现第一个智能体——1
json·api·agent·requests·查询天气·pprint·f-string
程序员:钧念2 小时前
深度学习与大语言模型LLM的区别
人工智能·python·深度学习·语言模型·自然语言处理·transformer·agent
人工干智能2 小时前
LangChain 中的「工具(Tool)」和「工具包(Toolkit)」漫谈
langchain·llm
laplace01233 小时前
向量库 Qdrant + 图数据库Neo4j+Embedding阿里百炼text-embedding-v3
数据库·embedding·agent·neo4j
山顶夕景13 小时前
【VLM】Format Decoupled Reinforcement Learning for Document OCR
大模型·llm·ocr·多模态·文档智能·vlm
laplace012313 小时前
第七章 构建自己的agent智能体框架
网络·人工智能·microsoft·agent
笔墨新城14 小时前
Agent Spring Ai 开发之 (一) 基础配置
人工智能·spring·agent
laplace012314 小时前
# 第六章 agent框架开发实践 - 学习笔记
人工智能·笔记·学习·语言模型·agent
用什么都重名19 小时前
「实战指南」使用 Python 调用大模型(LLM)
python·大模型·llm·api调用
mumu-hn19 小时前
浅说LLM-Agent(大模型-智能体)
人工智能·llm·agent