首页 > 其他分享 >transformer model architecture

transformer model architecture

时间:2024-07-21 13:30:08浏览次数:12  
标签:transformer 前缀 目标 单词 解码器 architecture 序列 model 输入

transformer model architecture

https://www.datacamp.com/tutorial/how-transformers-work

 

动手写

https://www.datacamp.com/tutorial/building-a-transformer-with-py-torch

 

Attention

https://www.cnblogs.com/jins-note/p/13056604.html

人类的视觉注意力

从注意力模型的命名方式看,很明显其借鉴了人类的注意力机制,因此,我们首先简单介绍人类视觉的选择性注意力机制。

图1 人类的视觉注意力

 

视觉注意力机制是人类视觉所特有的大脑信号处理机制。人类视觉通过快速扫描全局图像,获得需要重点关注的目标区域,也就是一般所说的注意力焦点,而后对这一区域投入更多注意力资源,以获取更多所需要关注目标的细节信息,而抑制其他无用信息。

这是人类利用有限的注意力资源从大量信息中快速筛选出高价值信息的手段,是人类在长期进化中形成的一种生存机制,人类视觉注意力机制极大地提高了视觉信息处理的效率与准确性。

图1形象化展示了人类在看到一副图像时是如何高效分配有限的注意力资源的,其中红色区域表明视觉系统更关注的目标,很明显对于图1所示的场景,人们会把注意力更多投入到人的脸部,文本的标题以及文章首句等位置。

深度学习中的注意力机制从本质上讲和人类的选择性视觉注意力机制类似,核心目标也是从众多信息中选择出对当前任务目标更关键的信息。



 

https://blog.csdn.net/weixin_42392454/article/details/122478544

1、什么是attention?

在人类的理解中,对待问题是有明显的侧重。具体举个例子来说:“我喜欢踢足球,更喜欢打篮球。”,对于人类来说,显然知道这个人更喜欢打篮球。但对于深度学习来说,在不知道”更“这个字的含义前,是没办法知道这个结果的。所以在训练模型的时候,我们会加大“更”字的权重,让它在句子中的重要性获得更大的占比。比如:
C ( s e q ) = F ( 0.1 ∗ d ( 我 ) , 0.1 ∗ d ( 喜 ) , . . . , 0.8 ∗ d ( 更 ) , 0.2 ∗ d ( 喜 ) , . . . ) C(seq) = F(0.1*d(我),0.1*d(喜),...,0.8*d(更),0.2*d(喜),...) C(seq)=F(0.1∗d(我),0.1∗d(喜),...,0.8∗d(更),0.2∗d(喜),...)
2、什么是self-attention?

在知道了attention在机器学习中的含义之后(下文都称之为注意力机制)。人为设计的注意力机制,是非常主观的,而且没有一个准则来评定,这个权重设置为多少才好。所以,如何让模型自己对变量的权重进行自赋值成了一个问题,这个权重自赋值的过程也就是self-attention。

https://zhuanlan.zhihu.com/p/619154409

一、Self-Attention是什么?

在理解Self-Attention之前,我们先通俗的解释一下什么是Attention。我们首先看一张图:

 

我们大部分人第一眼注意到的一定是东方明珠,但是这图其实还有旁边的楼,下面的汽车等等。这其实就是一种Attention,我们关注的是最主要的东西,而刻意“忽视”那些次要的东西。

我们再来讲解一个重要的概念,即query、key和value。这三个词翻译成中文就是查询、键、值,看到这中文的意思,还是迷迷糊糊的。我们来举个例子:小明想在b站搜索深度学习,他把深度学习四个字输入到搜索栏,按下搜索键。搜索引擎就会将他的查询query映射到数据库中相关的标签key,如吴恩达、神经网络等等,然后向小明展示最匹配的结果value

最后我们来说说Self-Attention。和Attention类似,他们都是一种注意力机制。不同的是Attention是source对target,输入的source和输出的target内容不同。例如英译中,输入英文,输出中文。而Self-Attention是source对source,是source内部元素之间或者target内部元素之间发生的Attention机制,也可以理解为Target=Source这种特殊情况下的注意力机制。

 

训练和推理 对应的 输入 和 输出?

在Transformer模型架构中,训练阶段和预测阶段(也称为推理阶段)对应的输入和输出是有所不同的。以下是对这两个阶段输入和输出的详细解释:

训练阶段

输入

  1. 源序列(Source Sequence)
    • 这是模型的主要输入,包含源语言的句子或文本序列。在机器翻译任务中,源序列即为需要被翻译的原文。
    • 源序列首先会经过词嵌入层(Embedding Layer)和位置编码层(Positional Encoding Layer),将文本转换为模型可以处理的数值形式。
  2. 目标序列前缀(Target Sequence Prefix)
    • 在训练过程中,目标序列(即源序列的翻译结果或任务目标输出)会被分成两部分:前缀部分和剩余部分。前缀部分作为解码器(Decoder)的输入,而剩余部分则用于与解码器的输出进行比较,以计算损失并更新模型参数。
    • 例如,在机器翻译任务中,如果目标序列是“I am a student”,则前缀部分可能是“<start> I am a”,剩余部分是“student”。

输出

  • 预测的目标序列
    • 解码器基于源序列和目标序列前缀生成预测的目标序列。在训练阶段,这个预测的目标序列会与真实的目标序列剩余部分进行比较,以计算损失。
    • 损失通常通过某种形式的损失函数(如交叉熵损失)来计算,用于评估模型预测的准确性。

预测阶段(推理阶段)

输入

  1. 源序列(Source Sequence)
    • 与训练阶段相同,预测阶段的输入也包含源序列。
    • 源序列同样会经过词嵌入层和位置编码层,以转换为模型可以处理的数值形式。
  2. 解码器初始输入
    • 在预测阶段,由于没有真实的目标序列前缀作为输入,解码器通常以一个特殊的起始标记(如“<start>”)作为初始输入。

输出

  • 生成的目标序列
    • 解码器基于源序列和自身的初始输入(起始标记),逐步生成目标序列的单词。
    • 在每个时间步,解码器都会基于当前的输入(包括已生成的目标序列前缀和源序列的编码表示)来预测下一个单词。
    • 这个过程会一直持续到生成结束标记(如“<end>”)或达到预设的最大序列长度。

总结

 

 训练阶段预测阶段(推理阶段)
输入 1. 源序列 <br> 2. 目标序列前缀 1. 源序列 <br> 2. 解码器初始输入(起始标记)
输出 预测的目标序列(与真实目标序列剩余部分比较以计算损失) 生成的目标序列(无真实目标序列进行比较)

 

需要注意的是,在训练阶段,模型通过比较预测的目标序列和真实目标序列剩余部分来更新模型参数,以提高预测的准确性。而在预测阶段,模型则基于已学习的参数和源序列来生成目标序列,无需真实目标序列的参与。

 

https://www.zhihu.com/question/337886108/answer/2865094314



2. Transformer 整体结构

  • transformer是由谷歌在同样大名鼎鼎的论文《Attention Is All You Need》提出的,最基础的结构就是先Enoder编码再Decoder解码
  • 首先介绍 Transformer 的整体结构,下图是 Transformer 用于中英文翻译的整体结构:


  • 可以看到 Transformer 由 Encoder 和 Decoder 两个部分组成,Encoder 和 Decoder 都包含 6 个 block。Transformer 的工作流程大体如下:
  • 第一步:获取输入句子的每一个单词表示向量 X
  • X由单词的 Embedding(Embedding就是从原始数据提取出来的Feature) 和单词位置的 Embedding 相加得到。


  • 从上图可以看到,这个句子中是由单词组成的,每一个字都可以映射为一个内容Embedding以及一个位置Embedding,然后将这个内容Embedding和位置Embedding加起来,就可以得到这个词的综合Embedding了。
  • 如上图所示,每一行是一个单词表示 x
  • 第二步:将得到的单词表示向量矩阵 传入 Encoder
  • 每一行是一个单词的表示 x,经过 6 个 Encoder block 后可以得到句子所有单词编码信息矩阵 C,如下图。单词向量矩阵用X_nxd表示,n 是句子中单词个数,d 是表示向量的维度 (论文中 d=512)。每一个 Encoder block 输出的矩阵维度输入 完全一致


  • 第三步:将 Encoder 输出的编码信息矩阵 C传递到 Decoder 中
  • Decoder 依次会根据当前已经翻译过的单词 i(I) 翻译下一个单词 i+1(have),如下图所示。在使用的过程中,翻译到单词 i+1 的时候需要通过 Mask (掩盖) 操作遮盖住 i+1 之后的单词


  • 上图 Decoder 接收了 Encoder 的编码矩阵 C,然后首先输入一个翻译开始符 "",预测第一个单词 "I";然后输入翻译开始符 "" 和单词 "I",预测单词 "have",下一次预测的时候,用之前预测的结果作为输入,再得到对应的输出,以此类推。这是 Transformer 使用时候的大致流程,无论再复杂的网络都是这个流程。
  • 简单来理解的话,就是通过前I-1个词来预测第i个词,之后一直循环反复这个过程,直到预测出来了 结束符 截止。

3. 名词解释

3.1. token

  • 在计算机科学中,token(符号)通常指代文本中的一组字符,它们被视为一个独立的单元,在进行文本分析
  • 自然语言处理中,token 通常指代单词词组或其他文本中独立的语言单元。将文本分解为 token 的过程称为 tokenization
    • 分词),是自然语言处理中的一个重要预处理步骤,为后续的文本分析和处理提供了基础。
    • 一般情况下,对于英文来说,有几个单词就可以认为是有几个token
    • 例如,对于英文句子 "I love natural language processing",分词后得到的 token 序列为 ["I", "love", "natural", "language", "processing"]。
    • 中文没有像英文那样明确单词边界,因此需要对中文文本进行分词才能进行后续的文本分析和处理。
    • 例如,对于中文句子 "我喜欢自然语言处理",分词后得到的 token 序列为 ["我", "喜欢", "自然语言", "处理"]。其中,“自然语言”是一个词组,在分词时被视为一个整体的 token。
    • 在接下来的架构分析中, 我们将假设使用Transformer模型架构处理从一种语言文本到另一种语言文本的翻译工作, 因此很多命名方式遵循NLP中的规则. 比如: Embeddding层将称作文本嵌入层, Embedding层产生的张量称为词嵌入
    张量, 它的最后一维将称作词向量等.

 

https://blog.csdn.net/weixin_47129891/article/details/139878475

 

Transformer模型的输入可以分为训练阶段和推理阶段,在不同阶段输入的内容是不同的。

一、训练阶段的输入

在训练阶段,Transformer模型的输入通常包括以下几部分:

1. 源序列(Source Sequence, X

这是模型的主要输入,包括源语言的句子或文本序列。例如,在机器翻译任务中,源序列是要翻译的原文。

2. 目标序列(Target Sequence, Y

这是模型在训练时使用的真实目标序列,包括目标语言的句子或文本序列。在机器翻译任务中,目标序列是源序列的翻译结果。

3. 目标序列的前缀(Target Sequence Prefix, Yin

)  

在训练过程中,目标序列会被分成两个部分:目标序列的前缀部分(即真实目标序列的前一部分)和目标序列的下一部分。目标序列的前缀部分用于解码器的输入。例如,对于目标序列 "I am a student" ,其前缀部分可能是 "\<start> I am a" ,下一部分是 "I am a student"。

二、训练过程的输入细节

在训练过程中,输入的目标序列会被偏移一位,用于教学信号。具体步骤如下:

1.编码器输入

源序列 X

经过词嵌入层和位置编码,输入到编码器。

2. 解码器输入

目标序列的前缀 Yin

经过词嵌入层和位置编码,输入到解码器。

三、推理阶段的输入

在推理阶段,模型的输入有所不同,因为目标序列的真实值不可用,模型需要一步一步地生成目标序列:

1. 源序列(Source Sequence, X

与训练阶段相同,推理阶段的源序列是模型的输入。

2.解码器输入

解码器的输入在每一步是已生成的目标序列前缀(初始化时是特殊的起始标记 \<start> )。随着生成过程的进行,生成的单词会逐步被添加到解码器输入中。

四、推理过程的输入细节

在推理过程中,生成过程是逐步进行的:

1. 编码器输入

源序列 X

经过词嵌入层和位置编码,输入到编码器,并生成编码器输出。

2.解码器输入

解码器在每个时间步接收已生成的序列,并基于编码器输出和自身状态生成下一个单词。这个过程一直持续到生成结束标记(\<end>)或达到最大长度。

五、输入处理的总结

1. 训练阶段

源序列 X


目标序列前缀 Yin

 

2.推理阶段

源序列 X


动态生成的目标序列前缀(初始为 \<start>,然后逐步扩展)

六、示例

假设源序列 X

为 "How are you?",目标序列 Y

为 "Comment ça va?"。

1.训练阶段

源序列: "How are you?"
目标序列前缀: "\<start> Comment ça"
目标序列: "Comment ça va?"

2.推理阶段

源序列: "How are you?"
初始解码器输入: "\<start>"
生成过程: "\<start> Comment", "\<start> Comment ça", "\<start> Comment ça va", "Comment ça va \<end>"

这种设计使得Transformer模型能够在训练时学习如何将源序列翻译成目标序列,并在推理时逐步生成目标序列。

标签:transformer,前缀,目标,单词,解码器,architecture,序列,model,输入
From: https://www.cnblogs.com/lightsong/p/18314384

相关文章

  • 【论文阅读笔记】大模型微调——《LoRA: Low-Rank Adaptation of Large Language Mode
    论文地址:https://arxiv.org/abs/2106.09685代码地址:https://github.com/microsoft/LoRA目录IntroductionMotivationMethodExperimentsFurtherdiscusion感想IntroductionMotivationMethodExperimentsFurtherdiscusion个人认为本篇的精髓所在,能够引用5k+的原因之一感......
  • 【独家首发】Matlab实现淘金优化算法GRO优化Transformer-LSTM实现负荷数据回归预测
    %导入数据集load(‘load_data.mat’);%假设负荷数据保存在load_data.mat文件中%数据预处理%这里省略了数据预处理的步骤,包括数据归一化、特征提取等%构建Transformer-LSTM模型model=create_transformer_lstm_model();%自定义创建Transformer-LSTM模型的函数......
  • 【独家首发】Matlab实现狮群优化算法LSO优化Transformer-LSTM实现负荷数据回归预测
    %导入数据集load(‘load_data.mat’);%假设负荷数据保存在load_data.mat文件中%数据预处理%这里省略了数据预处理的步骤,包括数据归一化、特征提取等%构建Transformer-LSTM模型model=create_transformer_lstm_model();%自定义创建Transformer-LSTM模型的函数......
  • ChatRule: Mining Logical Rules with Large Language Models for Knowledge Graph Re
    文章目录题目摘要引言方法实验消融研究题目ChatRule:利用大型语言模型挖掘逻辑规则进行知识图推理论文地址:https://arxiv.org/abs/2309.01538摘要    逻辑规则对于揭示关系之间的逻辑联系至关重要,这可以提高推理性能并在知识图谱(KG)上提供可解释的结果。尽......
  • 万字长文|LLM大模型基础入门(非常详细)从入门到精通系列之:(三)Transformer 架构
    引言在本文中,我们将介绍并解释基于Transformer的大语言模型的每个步骤。当第一次接触Transformer架构时,我被可用于理解它的大量概念和教程所淹没。一些视频或文章假设了自然语言处理(NLP)概念的先验知识,而另一些则太长且难以理解。为了掌握Transformer架构,我不得不阅......
  • Datawhale Al夏令营——Transformer架构
    Transformer:这个模型架构就是摒弃了所有的循环结构,完全依赖于注意力机制对源语言序列和目标语言序列全局依赖的建模对于循环神经网络来说,上下文的语义依赖是通过维护循环单元中的隐状态实现的。在编码过程中,每一个时间步的输入建模都涉及到对隐藏状态的修改。随着序列长度的增加,......
  • I can‘t link the chatbot model with react
    题意:我无法将聊天机器人模型chatbot与React连接起来问题背景:ThisisthemodelfromflaskimportFlask,request,jsonifyfromflask_corsimportCORSimportjsonimportnltkimportnumpyasnpimportrandomimportpicklefromtimeimportsleepfromnltk.st......
  • (ECCV2024论文解读)GPSFormer: A Global Perception and Local Structure Fitting-based
    目录摘要1、引言2、方法2.1 背景3.2 全局感知模块2.3 局部结构拟合卷积泰勒级数局部结构拟合卷积显式结构引入2.4 GPSFormer点云分类部件分割任务3、实验3.13D形状分类ScanObjectNN数据集上的形状分类ModelNet40数据集上的形状分类3.2部件分割3.3小样本分类3.4消融研究全局感......
  • PerFedRLNAS: One-for-All Personalized Federated Neural Architecture Search-_AAAI
    PerFedRLNAS:One-for-AllPersonalizedFederatedNeuralArchitectureSearch-AAAI'24-PerFedRLNAS背景与挑战:介绍个性化学习来解决设备异构和数据异构的问题。现有工作无法充分回答下面的两个问题:1.为什么个性化模型可以解决联邦的异构问题2.是否有标准和自动的方法来决......
  • FedNAS: Federated Deep Learning via Neural Architecture Search-_BaseLine-FedNAS
    背景与挑战:介绍FL,引出数据异构问题和数据不可见性,因此需要大量的人力来定制更好的模型架构,因为设备异构性,边缘设备需要更高的计算负担和通信成本。介绍解决数据异构的相关工作,指出这些工作需要强大的先验假设。预定义的模型不一定是最优的贡献:1.提出FedNAS方法,在边缘设备之间......