大模型原理探究0x02:大模型是怎么读懂人类语言的(2-句子)?

47 阅读5分钟

问题回顾

上一篇 我们讲了大模型是怎么理解人类语言的词汇的。今天继续探究一下,AI大模型师怎么把这些词汇串起来理解的。

Transformer

当前的AI大模型基本是基于Transformer框架的,包括上一篇 讲到的词汇理解在Transformer架构中都有所体现。对于每一位想入坑AI大模型的人,Transformer架构论文Attention is all you need是必读不可的。这对我们理解其他的AI大模型大有裨益。

image.png

我们看以上架构图,发现主要有以下几个核心模块:

  1. 输入层

    • Embedding 词嵌入,我们上一篇 讲的词向量就是这一步来的。
    • Positional Encodding 位置编码,这也是我们今天着重要讲的重点。
  2. Encoder

    • MHA,多头注意力机制。也是我们今天要讲的第二个重点。也是Transformer架构的核心的核心。
    • FFN,前馈神经网络
    • 残差链接+层归一化
  3. Deccoder

  • 掩码注意力机制
  • 交叉注意力机制
  • 残差链接+层归一化
  1. 输出层
    • SoftMax

位置编码

我们今天核心看输入层和Encoder,这两部分和AI理解词汇组成的句子关联紧密。我们先看看上一次的例子:

  • 输入1:我有一个苹果,它很好

Embedding后,Token为:我 有 一个 苹果,它 很好。首先词向量维度是没有问题的,每个Token的词向量不同,不会产生歧义。

但是,如果是下面这个case呢:

  • 输入2:我画了一幅画

Embedding后,Token为:我 画 了 一幅 画。第一个”画“和第二个”画“的词向量矩阵是一样的。那么AI怎么区分动词画和名词画呢?这个时候Positional Encodding应运而生。

  1. PE(Positional Encodding)和Embedding共享同样的维度d_model,因为Embedding后的词向量是PE的输入。

  2. PE词向量在AI大模型眼里有了顺序,🌰:

    • ”我画了一幅画“中前后两个意思不同的画
    • 即使是”我有一个苹果“这样无词向量冲突的case,PE对语义理解也至关重要
  3. AI大模型中一般使用不同频率的正余弦函数作为位置编码函数

image.png

我(pos=0) =  [sin(0/10000)^2*0/d_model, cos(0/10000)^2*0/d_model, sin(0/10000)^2*1/d_model, cos(0/10000)^2*1/d_model, ...]  // 长度512

画(pos=1) =  [sin(1/10000)^2*0/d_model, cos(1/10000)^2*0/d_model, sin(1/10000)^2*1/d_model, cos(1/10000)^2*1/d_model, ...]  // 长度512

了(pos=2) =  [sin(2/10000)^2*0/d_model, cos(2/10000)^2*0/d_model, sin(2/10000)^2*1/d_model, cos(2/10000)^2*1/d_model, ...]  // 长度512

一幅(pos=3) = [sin(3/10000)^2*0/d_model, cos(3/10000)^2*0/d_model, sin(3/10000)^2*1/d_model, cos(3/10000)^2*1/d_model, ...]  // 长度512

画(pos=4) =  [sin(4/10000)^2*0/d_model, cos(4/10000)^2*0/d_model, sin(4/10000)^2*1/d_model, cos(4/10000)^2*1/d_model, ...]  // 长度512

自注意力

词向量让AI理解人类词汇,位置编码让AI对句子中的词汇有了顺序的概念。而最终AI能理解句子还需要自注意力机制

自注意力机制是Transformer实现上下文理解的核心。其本质是通过Query-Key-Value(QKV)模型,让句子中的每个词动态计算与其他所有词的关联权重。

image.png

  • Q(Query) :当前词对上下文的"提问"

    • ”有“提问”有”什么,自注意力将“有”和“我有一个苹果”中其他Token
  • K(Key) :其他词的"身份标签",用于匹配Q提出的问题

    • “苹果”代表水果(或电子设备)
  • V(Value) :实际携带的信息

    • 机器语言内“苹果”所代表的机器语义

通过加权求和,每个词的最终表示会融合全局关键信息。进而让AI能够整体理解这句话的含义。

或者通俗地讲,Transformer让句子中的每个词都“回顾”一下上下文中的所有词,找到对自己理解最重要的信息,然后把这些信息融合起来,形成自己在这个特定语境下的新含义 ​。对于Tokens:我 有 一个 苹果

  1. AI会根据词向量矩阵分别计算出Q、K、V三组向量矩阵
  2. 执行Q(苹果),计算“苹果”的Q向量与句子中所有词(包括它自己)的K向量的相似度,“我”、“有”、“一个”、“苹果”的相关性。在理解“苹果”这个词时,模型认为“有”和它自己“苹果”具备最相关的上下文信息。
  3. 加权求和生成新表示。将上一步得到的所有权重,分别与对应的V(Value) 向量相乘,并求和。
  4. 这样生成的新向量,就不再是孤立的“苹果”的语义,而是融合了整句上下文信息的“苹果”——即“我所拥有的那个苹果”。这个新表示**能更准确地反映这个词在当前句子中的具体含义。**当然,每个Token都有一个这样的执行过程。

至此,AI大模型终于完整地理解了人类语言的一句话了。