前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >大语言模型-2.1-Transformer架构及详细配置

大语言模型-2.1-Transformer架构及详细配置

作者头像
用户2225445
发布2025-03-19 13:40:39
发布2025-03-19 13:40:39
1870
举报
文章被收录于专栏:IT从业者张某某IT从业者张某某

2.1-Transformer架构及详细配置

关于文本翻译

机器翻译,就是将某种语言的一段文字翻译成另一段文字。 由于翻译没有唯一的正确答案,用准确率来衡量一个机器翻译算法并不合适。因此,机器翻译的数据集通常会为每一条输入准备若干个参考输出。统计算法输出和参考输出之间的重复程度,就能评价算法输出的好坏了。这种评价指标叫做BLEU Score。这一指标越高越好。

在深度学习时代早期,人们使用RNN(循环神经网络)来处理机器翻译任务。一段输入先是会被预处理成一个token序列。RNN会对每个token逐个做计算,并维护一个表示整段文字整体信息的状态。根据当前时刻的状态,RNN可以输出当前时刻的一个token。

这种架构存在不足:编码器和解码器之间只通过一个隐状态来传递信息。在处理较长的文章时,这种架构的表现不够理想。为此,有人提出了基于注意力的架构。这种架构依然使用了编码器和解码器,只不过解码器的输入是编码器的状态的加权和,而不再是一个简单的中间状态。每一个输出对每一个输入的权重叫做注意力,注意力的大小取决于输出和输入的相关关系。这种架构优化了编码器和解码器之间的信息交流方式,在处理长文章时更加有效。

所有基于RNN的模型都面临着同样一个问题:RNN本轮的输入状态取决于上一轮的输出状态,这使RNN的计算必须串行执行。因此,RNN的训练通常比较缓慢。 在这一背景下,抛弃RNN,只使用注意力机制的Transformer横空出世了。

Attention Is All You Need

参考:Attention Is All You Need (Transformer) 论文精读

为什么是attention

长距离依赖问题

举个例子,考虑这个句子: “The cat, which was very hungry, finally found its food in the kitchen after searching for hours.” 这只猫非常饿,经过几个小时的寻找,终于在厨房里找到了食物。

在这个句子中,要理解“its”指的是“cat”,你需要在文本中跨越很长的距离。

在传统的RNN中,由于每次只处理一个元素,且下一个元素的处理依赖于前一个元素的输出,信息很难在长距离内有效传递,这就是所谓的长距离依赖问题。

注意力机制

注意力机制可以视为一种基于相似度的查表

注意力机制通过为每个输入元素分配一个权重来解决这个问题。这些权重决定了在生成输出时应该“注意”序列中的哪些部分。

以机器翻译为例,当模型试图翻译一个单词时,它会“查看”输入序列中的所有单词,并根据它们与当前要翻译的单词的相关性来赋予不同的权重。

想象一下,你在一个非常嘈杂的聚会中,你试图专注于一个朋友的谈话。尽管周围有很多声音,但你可以“调整”你的注意力,集中在你朋友的声音上,同时忽略其他的噪音。这个过程,就有点像注意力机制的工作原理。

Self-Attention 的公式如下:

Attention(Q,K,V)=softmax\left ( \frac{QK^T}{\sqrt{d_k} } \right ) V

我们以上面的嘈杂聚会中要专注于一个朋友的谈话场景来解释:

查询 (Query) 代表当前的焦点或需要翻译的部分。这就像是你想要听的你朋友的声音。 键 (K) 和 值 (V) 代表输入序列。其中,键表示要检索的信息,值表示一旦检索到对应键,应该返回的信息。 键(Key) - 这些是周围所有的声音,包括你朋友的声音和其他人的声音。 值(Value) - 如果你朋友的声音(键)是你想要的,那么他们的谈话内容(值)就是你想要专注的信息。

QK^T

的计算是在寻找查询和键之间的匹配程度,即找出输入序列中哪些部分与当前关注点最相关。

softmax\left ( \frac{QK^T}{\sqrt{d_k} } \right )

这一部分将这些匹配分数转换成概率形式,这些概率(权重)决定了每个输入元素的重要性。

d_k

是键的维度,用来缩放点积,避免得到太大的数值。 softmax函数用来将分数转化为概率,确保所有的关注度分数加起来等于1。 最后,这些权重被用来加权值

(V)

,得到加权求和的输出,这个输出就是模型对当前焦点或查询的最终响应。

通过这种方式,Self-Attention 机制能够捕捉序列中的长距离依赖关系,并为每个位置产生一个新的表示,这个表示是所有位置的加权和,权重由元素之间的相似度决定。

为什么要用QKV三个?而不是一个?

Attention 中使用三个不同的Q(查询)、K(键)、V(值)矩阵,可以想象成我们在处理信息时,不同的角度和目的会使用不同的工具或方法。

比如说,你在一个图书馆里寻找信息: 查询(Q):

这就像你的问题清单,比如你想了解有关历史的信息。你的问题清单会指导你去哪里查找,找什么样的书。

键(K):

这对应于每本书的目录或索引,你会用它来判断哪本书可能包含你需要的信息。

值(V):

这就是书中的实际内容。一旦你确定了哪些书的目录与你的问题清单匹配,你就会去阅读那些书的具体内容。

如果Attention /Transformer只用输入x自己,而不去创建这些专门的Q、K、V矩阵,那就相当于你只用一种方法去处理所有类型的信息,不管是提出问题、搜索索引还是阅读内容。这样做不仅效率低,而且很难深入挖掘更复杂或更细微的信息。

使用不同的Q、K、V就像是给Attention /Transformer装备了不同的工具,使其能够在处理信息时更加精准和高效。这样可以增强网络处理不同类型信息的能力,就像给图书馆的访问者提供了详细的问题列表、高效的索引系统和丰富的书籍内容一样。

这样的设计提高了Attention /Transformer的表达能力,让它可以更好地学习和更新参数,从而更好地处理复杂的任务,如理解和生成语言。

Transformer

Transformer是2017年的一篇论文《Attention is All You Need》提出的一种模型架构,这篇论文里只针对机器翻译这一种场景做了实验,全面击败了当时的机器翻译各个benchmark上的SOTA。其优点除了效果好之外,由于encoder端是并行计算的,训练的时间也被大大缩短了。 它开创性的思想,颠覆了以往序列建模和RNN划等号的思路,现在被广泛应用于NLP的各个领域。目前在NLP各业务全面开花的语言模型如GPT, BERT等,都是基于Transformer模型的。 Transformer的核心思想是:使用attention机制, 在一个序列的不同位置之间建立distance = 1的平行关系,从而解决RNN的长路径依赖问题(distance = N)。

理解“平行”的含义:在Transformer结构中,序列的不同pos(位置)之间距离都是1

架构

整体架构

编码器:将输入变换为隐藏层特征

解码器:将隐藏层特征变换为自然语言序列

多头注意力层:建模任意距离词元间的语义关系

在这里插入图片描述
在这里插入图片描述
注意力的思考
输入编码

网络结构

特别好理解的Transformer的计算过程

参考:https://zhuanlan.zhihu.com/p/338817680

Transformer的计算过程1

参考:再聊Transformer:从计算过程认识transformer 整个架构可以分为四个模块:

输入模块(源文本输入和目标文本输入)、 编码模块encoder、 解码模块decoder、 输出模块

1、输入模块

2、Encoder模块

计算的时候需要得到Q,K,V矩阵,Q,K,V矩阵是由输入矩阵与线性变换矩阵相乘得到的,计算过程如下图:

3、deconder模块

4、输出

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-03-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.1-Transformer架构及详细配置
    • 关于文本翻译
    • Attention Is All You Need
      • 为什么是attention
      • 长距离依赖问题
      • 注意力机制
      • 为什么要用QKV三个?而不是一个?
      • Transformer
    • 特别好理解的Transformer的计算过程
    • Transformer的计算过程1
      • 1、输入模块
      • 2、Encoder模块
      • 3、deconder模块
      • 4、输出
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档