大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型新阅读。而最新科技(Mamba,xLSTM,KAN)则提供了大模型领域最新技术跟踪。若对于具身智能感兴趣的请移步具身智能专栏。技术宅麻烦死磕AI架构设计。
本模块的核心目标之一是掌握如何构建和训练基础的Transformer模型。在我们深入讨论模型之前,有必要先来探讨一下注意力机制,这是Transformer模型中至关重要的组成部分。Transformer块在处理完输入序列后,会生成一系列不同的向量,这些向量实际上是用于所谓的“交叉注意力”机制的。本文分为两大部分,前部分则是通俗易懂的解释,后面的部分则是采用数学的视野去阐述。
小白解读(数学免疫)
给没有数学或者计算机背景的人解释注意力机制其实也不难。大模型某种意义上相当于人脑,很多模型的结构设计都来源于人脑。打个不恰当的比方,任何人看到一幅画面,或多或少都会被某个部分吸引,而且这个吸引点因人而异。这个被吸引的部分就是注意力机制。在大模型的训练过程中,通过样本不断地训练注意力机制相关的参数,让大模型能够快速的抓住上下文的重点,以便生成最妥当的后续内容。
从上图中可以看到注意力机制是任何自然语言处理的核心基石。
再举个例子,图书馆(语料)里有藏书(Value)。为了方便检索,每一本书都被做了标记(Key)。当任何人想要了解“漫威”(Query),系统(参数矩阵)会给根据要求给出相关条目以及条目的优先级,例如动漫有所关联,电影也有关联及乃至二战历史也有关联。
这时候大模型为提高效率,并不是所有的书都会仔细看。而是将一些关联度高的条目认真阅读,而关联度低的条目做概要扫描,然后就就对检索内容有全面的了解,之后就可以开始自动生成相关的内容。而注意力机制则是对应落地实现的一种高效算法。
注意力机制很早其实就有了,但是最有影响力的论文是2017年《Attention Is All You Need》,里面展示了如何将样例提炼最重要的信息。
注意力机制数学推理
首先,我们需要明确我们所使用的向量是什么,它代表了我们当前正在处理的标记。假设我们处于模型的第一层,那么输入的词嵌入向量就是我们所说的注意力向量。
注意力机制是通过三种类型的向量构建的:查询向量(Query)、键向量(Key)和值向量(Value)。对于当前处理的每个标记,我们都有一个查询向量;对于序列中的每个标记,我们都有一系列的键向量和值向量。通过将输入的词嵌入向量与特定的权重矩阵相乘,我们得到了查询向量。而查询向量(Q)、键向量(K)和值向量(V)都是通过模型学习得到的,这些权重在训练过程中不断调整。
文中有三个输入向量,每个向量4维。输入乘以权重矩阵之后得到各自的K和V向量。然后查询Q分别和K做点积运算(如图第1个蓝色框框的值为1*0+0*1+2*1=2)
分别求出每个蓝色框框的值之后,则将三个蓝色框架的值根据softmax归一化,即0+0.5+0.5=1
在注意力的计算公式中,使用查询向量(Q)与键向量(K)的转置进行点积运算,并应用softmax函数来获取每个键向量与查询向量的相关性得分。这样,我们就得到了一个与序列长度相同的注意力分数向量。然后用这些注意力分数对相应的值向量进行加权求和,得到最终的输出向量。
紧接着将蓝色框架的数值和V相差,然后累加得到第一个输出向量
注意力机制的关键在于,使用一个查询向量与序列中所有其他标记的键向量进行比较,以判断它们之间的相关性。这个过程在序列中的每个标记都可以并行计算,速度快,效果好。因此,在每次计算注意力时,我们会关注当前的查询向量,并将这个查询向量与所有的键向量进行比较,从而确定每个键向量与查询向量的相关程度。
以此类推,三个Q输入的时候,依次输出三个结果向量。注意的是,注意力机制可以多层,也就是这只是中间的某层。输出的结果可以作为下一层的输入。
总结一下,注意力机制其实要学习的就是三个矩阵,Q矩阵,K矩阵和V矩阵。它们用于和输入相乘,然后提炼出有效的信息存储于矩阵。
注意力机制的关键在于,使用一个查询向量与序列中所有其他标记的键向量进行比较,以判断它们之间的相关性。这个过程在序列中的每个标记都可以并行计算,速度快,效果好。
因此在每次计算注意力时需要关注当前的查询向量,并将这个查询向量与所有的键向量进行比较,从而确定每个键向量与查询向量的相关程度。