二、AI大模型(Transformer架构)

news/2024/12/21 21:07:40/

Transformer架构

Transformer架构是目前大多数AI大模型的基础,它通过**自注意力机制(Self-Attention Mechanism)**解决了序列处理中的长距离依赖问题。相比传统的递归神经网络(RNN)和长短期记忆网络(LSTM),Transformer能更高效地处理长序列输入,并极大提升了并行计算能力。

Transformer的核心组件

Transformer由两大部分组成:编码器(Encoder)解码器(Decoder),但最常见的GPT、BERT等模型通常只使用编码器或解码器的单一部分来处理任务。

  • 编码器(Encoder):将输入序列转换为一组嵌入向量(contextual embeddings),这些嵌入向量表示输入中每个词汇的语义信息。
  • 解码器(Decoder):基于编码器输出的上下文信息,生成目标序列(如翻译任务中的输出句子)。
Transformer整体结构

​​在这里插入图片描述

典型的Transformer结构如下图所示:

+-------------------------+
|         输入序列         |
+-------------------------+|v
+-------------------------+
|   多层编码器(Encoder)   |
+-------------------------+|v
+-------------------------+
|   多层解码器(Decoder)   |
+-------------------------+|v
+-------------------------+
|       输出序列          |
+-------------------------+

在具体任务中,例如文本生成、翻译等场景,输入序列经过编码器处理为向量表示,随后解码器基于这个向量和自身的输入,生成所需的输出。

自注意力机制(Self-Attention Mechanism)

Transformer架构最核心的部分是自注意力机制,也叫Scaled Dot-Product Attention。它通过计算序列中每个词与其他所有词之间的关联(注意力权重),来捕捉句子中重要的上下文关系。

自注意力机制的流程

输入序列:假设输入一个序列 ( X = [x_1, x_2, x_3, …, x_n] ),每个 ( x_i ) 表示输入序列中的一个词。

  1. 生成三个矩阵:对于每个输入词,生成三个向量矩阵:

    • Query(查询向量):用于寻找与其他词的相关性。
    • Key(键向量):代表输入序列中的特征,用于与Query计算相关性。
    • Value(值向量):保存词的实际信息,最终用于输出。

    用公式表示为:
    [
    Q = XW_Q, \quad K = XW_K, \quad V = XW_V
    ]
    其中 ( W_Q, W_K, W_V ) 是训练过程中学习到的权重矩阵。

  2. 计算注意力分数:通过点积操作计算Query和Key之间的相似性(即相关性),用来衡量每个词对其他词的“注意力”。然后将结果进行缩放,防止数值过大:
    [
    \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V
    ]
    其中 ( d_k ) 是Query或Key的维度,( \sqrt{d_k} ) 用来缩放点积结果,防止梯度消失或爆炸。

  3. 加权输出:计算出的注意力分数用于加权Value矩阵,这样每个词会根据与其他词的相关性重新组合自己的表征。

多头注意力机制(Multi-Head Attention)

为了捕捉更多的特征和信息,Transformer使用多头注意力机制,即将自注意力机制并行执行多次,得到多组不同的注意力输出。然后将这些结果拼接起来,通过线性变换得到最终的表示。

公式
[
\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \text{head}_2, …, \text{head}_h)W^O
]
其中 ( \text{head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V) ),( W_i^Q, W_i^K, W_i^V ) 是不同的权重矩阵,( W^O ) 是输出的线性变换矩阵。

多头注意力机制能够让模型在不同的空间维度上关注不同的语义关系,提升了模型的表达能力。

Transformer中的位置编码(Positional Encoding)

Transformer虽然能并行处理序列中的词汇,但与RNN等序列模型不同,Transformer不具备自然的序列顺序感知能力。因此,模型需要加入额外的位置编码来为序列中的每个词引入位置信息。

位置编码通常是通过正弦和余弦函数生成的,具有周期性,能够为不同长度的输入序列提供位置信息。这帮助模型理解序列中的词汇顺序。

位置编码公式
[
PE(pos, 2i) = \sin\left(\frac{pos}{10000^{\frac{2i}{d_{model}}}}\right)
]
[
PE(pos, 2i+1) = \cos\left(\frac{pos}{10000^{\frac{2i}{d_{model}}}}\right)
]
其中 ( pos ) 是词的位置,( i ) 是维度索引,( d_{model} ) 是嵌入向量的维度。

Transformer架构的优势
并行计算

由于没有依赖递归结构,Transformer能够在序列处理时并行化操作,极大提升了训练速度。这使得Transformer可以更有效地训练大规模模型。

处理长距离依赖

传统的RNN在处理长距离依赖时常常面临梯度消失的问题,而Transformer通过自注意力机制,可以直接计算序列中任意两个位置的依赖关系,尤其适合长序列任务。

表达能力强

通过多头注意力机制,Transformer能够在不同的空间维度捕捉更丰富的语义信息,具备极强的表达能力。


视觉示例:

通过上述讲解,我们理解了Transformer模型的原理和结构,以及它如何通过自注意力机制捕捉输入序列中的长距离依赖。这个架构是AI大模型的基础。


http://www.ppmy.cn/news/1534676.html

相关文章

C++ 语言特性20 - noexcept 关键字

一:概述 noexcept 是 C11 引入的一个关键字,用来指明一个函数在运行时是否不会抛出异常。它主要用于提高代码的安全性和性能,在某些场合可以帮助编译器进行优化。 1. noexcept 的语法 //1. 标记函数为 noexcept, 在这种情况下&…

python-鸡尾酒疗法/图像相似度/第n小的质数

一:鸡尾酒疗法 题目描述 鸡尾酒疗法,原指“高效抗逆转录病毒治疗”(HAART),由美籍华裔科学家何大一于 1996 年提出,是通过三种或三种以上的抗病毒药物联合使用来治疗艾滋病。该疗法的应用可以减少单一用药产…

鸿蒙HarmonyOS开发生态

1、官网 华为开发者联盟-HarmonyOS开发者官网,共建鸿蒙生态 2、开发工具IDE下载及使用 https://developer.huawei.com/consumer/cn/ 3、使用帮助文档 4、发布到华为应用商店 文档中心

《重生到现代之从零开始的C语言生活》—— 结构体和位段

结构体 我们在之前是了解过结构体的,现在我们来稍微复习一下 结构体的声明 struct name {member list };假如我想创建一个结构体呢么我们可以 struct a {int a;char b[20];float c; };这是我们创建了这个结构体,当我们想初始化时 #inclu…

详细介绍:API 和 SPI 的区别

文章目录 Java SPI (Service Provider Interface) 和 API (Application Programming Interface) 的区别详解目录1. 定义和目的1.1 API (Application Programming Interface)1.2 SPI (Service Provider Interface) 2. 使用场景2.1 API 的应用场景2.2 SPI 的应用场景 3. 加载和调…

【2024】基于mysqldump的数据备份与恢复

基于mysqldump备份与恢复 mysqldump是一个用于备份 MySQL 数据库的实用工具。 它可以将数据库的结构(如数据库、表、视图、存储过程等的定义)和数据(表中的记录)导出为文本文件,这些文本文件可以包含 SQL 语句&#…

【PostgreSQL】入门篇——索引:提高查询性能的利器

1. 索引的概念 描述 索引是数据库表中一个或多个列的值的有序列表。它类似于书籍的目录,可以帮助数据库快速定位到存储在表中的数据。 索引的主要目的是提高数据检索的速度,尤其是在处理大量数据时。 作用 加速查询:通过减少需要扫描的数…

【笔记】平面

一、平面及其方程(3个条件,4种表达) F ( x , y , z ) F(x,y,z) F(x,y,z)为平面方程: 在这个平面上的点满足 F ( x , y , z ) 0 F(x,y,z)0 F(x,y,z)0不在这个平面上的点不满足 F ( x , y , z ) 0 F(x,y,z)0 F(x,y,z)0 归根结底&…