首页 > 其他分享 >Transformer模型

Transformer模型

时间:2023-07-28 13:44:57浏览次数:43  
标签:Transformer Attention RNN 模型 attention b1

Transformer模型

Transformer模型及其实现
历史:谷歌团队在2017年提出的经典NLP模型(目前很火的bert模型就是基于此模型)。
特点:Transformer 模型使用了 Self-Attention 机制,不采用 RNN 的顺序结构,使得模型可以并行化训练,而且能够拥有全局信息
image.png
所有的大语言模型都是基于transformer结构,区别在于:

  1. mask策略不同。比如bert除了mask的字符,其他所有的相互可见;gpt则是只能看到mask前面的字符;清华的glm则是综合两者。
  2. 训练任务目标不同。比如bert是预测mask的词,而gpt目标是预测下一个会出现的词(生成式)。清华glm则是用gpt的方式来做bert的任务。

参考:
Transformer模型详解(图解最完整版)
李宏毅老师讲解的Transformer视频:here(youtube视频,2019,需梯子)
视频笔记:

Transformer—seq2seq model with "self-attention"

seq2seq model——自编码模型,包括编码器和解码器
image.png

自注意力机制

1 出现原因:

最开始处理seq2seq的RNN(如下图)很难做到并行(Parallel),比如想预测$b4$就得先看$a1、a2、a3$计算出$b1、b2、b^3$,后来有人提出利用卷积网络来进行并行处理sequence,,但是CNN每个卷积单元能处理的长度有限,当遇到较长的sequence时就不得不加深网络深度。
image.png
于是就有人提出自注意力机制self-Attention,它是一种新的layer,其输入输出跟RNN是一样的,其特别之处在于它跟双向LSTM类似,每个输出都看过整个输入的sequence,并且并行计算出$b1到b4$,RNN能做的它都能做,可以说取代RNN了。

2 原理:

image.png

  1. 每个输入的x都先乘一个矩阵W得到a1到a4,再各自分别乘以三个矩阵得到三个向量:query(q)、key(k)和value(v),q用来对每个k做attention操作,v是被抽取出来的信息
  2. attention的输出\alpha_{1,1}、\alpha_{1,2}、\alpha_{1,2}、\alpha_{1,4}是一个分数,表示q和对应的k有多匹配,attention操作有多种做法。下面以原paper中的Dot-Product Attention方法为例:

image.png
ps.除以根号d的原因是:直观看q*k的值会随着dim变大而变大,所以除一下用来平衡,至于为什么是根号,待考究。

  1. 做soft-max操作

image.png

  1. 最后一步,把softmax的结果跟原来对应的value(vi)相乘再累加就得到输出b1,可以看出其跟输入的a1、a2、a3、a4都有关系,而且如果不想考虑所有sequence,只想考虑局部的sequence,只需将后面其他的项化成零即可,所以可以“attention”选择任意部分的输入来生成当前某个b字符,这就是attention机制的根本所在。并行则体现在b1到b4可以同时生成。

image.png
从矩阵运算角度看一下整个过程:
image.png
其中最后O矩阵里面就是最后的b1、b2、b3、b4。

3 其他

从上面详细生成bi过程可以发现,它对任意输入的ai都是一视同仁的,也就没有位置关系信息的加入,这显然不是我们想要的。原始paper中提出通过人工定义(不是从数据中学习的)ei在计算q、k、v之前加到ai里面来表示位置信息。
image.png

seq2seq里面的注意力机制

seq2seq模型:
image.png
输入输出都是RNN,一个编码器Encoder,一个解码器Decoder,其中编码器部分的双向RNN和解码器的RNN(蓝框部分)已经可以直接用attention层取代。

Transformer整体模型

image.png

1 Endoder层

image.png
先看左边的encoder部分,输入字符会通过Input Embedding(嵌入技术,将数据转换为向量vector,可参考:
嵌入学习embedding
转换为向量,然后跟positional encoding相加输入到灰色区块,灰色区块会重复n次(N*),其中第一个Muti-Head Attention层就是一个self-attention层,然后它的输出会经过一个add & Norm层,这一层是把Muti-Head Attention层的输入a和输出b加起来得到b'(如下图),再做layer 标准化(Normalization,参考原论文Layer Normalization
image.png
之后进入前馈层,前馈层比较简单,是一个两层的全连接层,第一层的激活函数为 Relu,第二层不使用激活函数。这一层也会加一个Add & Norm层。
image.png

2 Decoder层(右边)

image.png
Decoder block 结构,与 Encoder block 相似,所以具体流程不再赘述,但是存在一些区别:

  • 包含两个 Multi-Head Attention 层。
  • 第一个 Multi-Head Attention 层采用了 Masked 操作,简单来说通过防止某个位置的词看到他后边的信息来解决标签泄露的问题,以实现并行训练。mask机制可参考:here
  • 第二个 Multi-Head Attention 层的K, V矩阵使用 Encoder 的编码信息矩阵C进行计算,而Q使用上一个 Decoder block 的输出计算。
  • 最后有一个 Softmax 层计算下一个翻译单词的概率。

以上就是整个Transformer模型。

标签:Transformer,Attention,RNN,模型,attention,b1
From: https://www.cnblogs.com/chenhaobk/p/17587364.html

相关文章

  • Cesium学习笔记5-加载城市建筑物火柴盒模型
    将shp文件转换为cesium可以加载的geojson文件,在线转换工具,使用cesium的GeoJsonDataSource接口类,根据建筑物高度上色加载geojson文件。注意shp文件包含_Height字段。代码如下:<!DOCTYPEhtml><htmllang="en"><head><metacharset="utf-8"/><metahttp-equiv=&......
  • Java中常见的网络通信模型
    目前最近仔学习RocketMQ以及Dubbo还有Spring5框架的底层部分,了解到这些技术的底层都是采用的Netty作为底层的通信的软件,于是便需要详细了解以下网络中的通信的模型以及Netty的通信模型原理。本篇是通过Redis以及Netty进行网络通信模型的逐渐演化来进行介绍,其中还会夹杂着一些比......
  • OSI 的七层模型都有哪些?
    OSI(OpenSystemsInterconnection)是一个开放系统互联参考模型,用于规范计算机网络体系结构和通信协议。OSI模型定义了七个不同的层,每个层负责特定的功能,从物理连接到应用层协议,实现了网络通信的抽象和分层。以下是OSI模型的七层:物理层(PhysicalLayer):负责传输比特流(0和1)通过物理媒介(......
  • 在Odoo中,res.partner和res.users模型的关联和区别。
    res.partner模型:这个模型在Odoo中代表一个业务伙伴。业务伙伴可以是一个公司或者是一个个人。                       这个模型用于存储业务伙伴的信息,比如名称、地址、联系方式等。res.partner模型也被用于各种不同的场景,比......
  • 概率图模型(PGM):贝叶斯网(Bayesian network)初探
    概率图模型(PGM):贝叶斯网(Bayesiannetwork)初探1.从贝叶斯方法(思想)说起-我对世界的看法随世界变化而随时变化用一句话概括贝叶斯方法创始人ThomasBayes的观点就是:任何时候,我对世界总有一个主观的先验判断,但是这个判断会随着世界的真实变化而随机修正,我对世......
  • 条件随机场(conditional random field,CRF)模型初探
    条件随机场(conditionalrandomfield,CRF)模型初探1.条件随机场,一种特殊的概率图模型结构我们知道,从图结构角度来说,概率图模型可以分为以下两种:基于有向图的贝叶斯网:具备有向依赖性基于无向图的马尔科夫网:具备无向依赖性条件随机场是一个在变量子集上存在有......
  • YOLOv5目标检测模型
    YOLOv5目标检测模型环境配置1、安装Anaconda打开命令行输入conda-V检验是否安装及当前conda的版本2、conda常用的命令1)conda常用的命令condalist2)查看当前存在哪些虚拟环境condaenvlistcondainfor-e3)python创建虚拟环境condacreate-nyour_env_namepython=x......
  • 【AltWalker】模型驱动:轻松实现自动化测试用例的自动生成和组织执行
    模型驱动的自动化测试模型驱动的自动化测试(Model-BasedTesting,后文中我们将简称为MBT)是一种软件测试方法,它将系统的行为表示为一个或多个模型,然后从模型中自动生成和执行测试用例。这种方法的核心思想是将测试过程中的重点从手动编写测试用例转移到创建和维护描述系统行为的模......
  • 灵雀云Alauda MLOps 现已支持 Meta LLaMA 2 全系列模型
    在人工智能和机器学习领域,语言模型的发展一直是企业关注的焦点。然而,由于硬件成本和资源需求的挑战,许多企业在应用大模型时仍然面临着一定的困难。为了帮助企业更好地应对上述挑战,灵雀云于近日宣布,企业可通过AlaudaMLOps(以下简称AML)使用由Meta开发的 LLaMA 2全系列模型。 ......
  • 工程设计施工3D模型素材下载,全套1000+免费获取
    在建筑设计和施工过程中,3D模型数据是至关重要的。设计师和工程师需要依赖高质量的3D模型数据进行方案优化、细节设计、施工规划和质量控制。因此,如何下载高质量的3D模型数据成为了一个重要的问题。今天给大家免费提供一个“设计、施工3D模型数据下载”方法工具软件:图新说 软件......