Transformer结构细节

news/2024/7/19 12:35:58 标签: transformer, 深度学习

一、结构

Transformer 从大的看由 编码器输入、编码器、解码器、解码器输入和解码器输出构成。

编码器中包含了词嵌入信息编码、位置编码、多头注意力、Add&Norm层以及一个全连接层;

解码器中比编码器多了掩码的多头注意力层。

二、模块

2.1 Input Embedding层

单词的 Embedding 有很多种方式可以获取,例如可以采用 Word2Vec、Glove 等算法预训练得到,也可以在 Transformer 中训练得到。

2.2 Position Embedding层

在词嵌入向量上加入了位置信息,可能是在原始序列的相对位置,也可能是绝对位置。

2.3 Multi-head Self-Attention层

Multi-Head self-Attention结构细节icon-default.png?t=N3I4https://blog.csdn.net/weixin_54039182/article/details/130520370?spm=1001.2014.3001.5501

2.4 Feed Forward全连接层

全连接层有两层,第一层是一个ReLU函数,第二层是一个普通的线性函数;全连接层输出与X形状一致。

2.5 Add&Norm层

由上面的公式不难看出:Add&Norm接受两个输入相加,一个是处理后的序列向量X,还有一个是X经过多头注意力层或者全连接层的输出,最后再将每层神经元的输出变成均值和方差都一样,这样做的目的是加快收敛。

2.6 Masked Multi-head Self-Attention 模块

通过 Masked 操作可以防止第 i 个单词知道 i+1 个单词之后的信息。

还是根据自注意力的公式来进行矩阵计算:

1. Q * K转置

2. 进行softmax

重点来了:需要将矩阵先根据Mask矩阵规定每个单词只能看哪些单词,由此计算注意力。比如说<begin> I love you -> 我爱你中当预测 我 时,就只能看<begin> 和 I 两个单词。

3. 将Mask矩阵与V相乘得到Z,比如第一行Z1是只包含单词1的信息的。

4.最后将多个Z拼接在一起乘一个工具人矩阵就得到了最后结果。输出与X形状一致。

 

 三、过程

3.1 将输入的句子中的每个词编码成一个向量,并加入单词在文本中的位置信息。

最后得到的单词矩阵是N * M的。(N表示有几个单词,M表示单词维度)

3.2 将句子的矩阵表示输入到编码器中,迭代六次,得到与X形状一直的矩阵C。

 

3.3 将句子矩阵C传入到解码器中,在预测第i个词时,根据Mask矩阵mask掉第i+1以及之后的词。

 

Reference:Transformer模型详解(图解最完整版) - 知乎

 

 

 

 

 


http://www.niftyadmin.cn/n/298086.html

相关文章

[GFCTF 2021] day2

Baby_Web 查看源码发现 <!--源码藏在上层目录xxx.php.txt里面&#xff0c;但你怎么才能看到它呢?--> 然后抓包看中间件&#xff0c;Apache/2.4.49 (Unix) 存在目录穿越漏洞 curl http://node4.anna.nssctf.cn:28805/cgi-bin/.%2e/.%2e/.%2e/.%2e/var/www/index …

leetcode 70.爬楼梯+209.长度最小的子数组

70. 爬楼梯 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;3 解释&#xff…

SSM框架练习一(登录后关联数据表的业务模型)

需要实现的整体功能&#xff1a; 登录反馈信息列表展示查询反馈信息发表反馈 1.数据库设计 创建数据库 创建表结构及其约束 添加测试数据 工具&#xff1a;PHP、Navicat create table tab_user(id int primary key auto_increment,uname varchar(30) not null,pwd varc…

Android多模块开发

Android多模块开发 1. 建立项目和多个模块 ​ app为主模块 ​ app-setting为功能模块&#xff0c;可作为独立模块运行&#xff0c;也可作为其他模块的资源模块 ​ app-video为功能模块 2. 建立公共环境文件(env.gradle)并在各模块配置 Step1&#xff1a; 建立在根目录下建…

A40i使用笔记:安装python3.7(素装)

一、前言 项目需求&#xff0c;要用到python3以上&#xff0c;就研究了一下如何安装python&#xff0c;这里也是分享出来安装方法&#xff0c;为各位技术研发人员减少不必要的时间损耗 本文没有安装python其他依赖库&#xff0c;因为我也是在摸索中&#xff0c;所以只限指导到…

录屏界鼻祖Camtasia 2023中文版功能介绍/下载安装激活教程

随着网络科技的迅速发展&#xff0c;所以对于电脑的使用率也就越来越高了&#xff01;然而&#xff0c;也可能跟这有关系&#xff0c;目前各种类型的软件层出不穷&#xff0c;当然也就包括了电脑录屏软件。这给我们造成了一些困难&#xff0c;究竟哪一款适合自己呢&#xff1f;…

IDM绿色最新2023中文版磁力下载工具

Internet Download Manager&#xff08;idm&#xff09;是一款优秀的多线程下载工具。它支持自动捕获剪贴板及浏览器及流媒体网站的音视频下载链接&#xff0c;还有批量队列下载、静默下载、站点抓取等众多功能选项&#xff0c;可以说是 Windows 平台上功能最为强大的多线程下载…

仪表检测与读数(一):仪表检测

基于YOLOv4的仪表检测 前言YOLOv4源码下载数据集处理与模型训练模型性能测试 前言 本系列是想记录一下自己实现的一种用于仪表检测与读数的方法&#xff0c;首先方法仅针对于单指针仪表和单行显示的数字仪表进行了检测与读数方法的设计。方法的整体思路是&#xff1a;第一步对拍…