Transforer逐模块讲解

本文将按照transformer的结构图依次对各个模块进行讲解:

可以看一下模型的大致结构:主要有encode和decode两大部分组成,数据经过词embedding以及位置embedding得到encode的时输入数据

输入部分

  1. embedding就是从原始数据中提取出单词或位置;

输入矩阵:

位置编码采用如下公式

  • 好处有使 PE 能够适应比训练集里面所有句子更长的句子,假设训练集里面最长的句子是有 20 个单词,突然来了一个长度为 21 的句子,则使用公式计算的方法可以计算出第 21 位的 Embedding。
  • 可以让模型容易地计算出相对位置,对于固定长度的间距 k,PE(pos+k) 可以用 PE(pos) 计算得到。因为 Sin(A+B) = Sin(A)Cos(B) + Cos(A)Sin(B), Cos(A+B) = Cos(A)Cos(B) - Sin(A)Sin(B)。

encode里有6个encode块,每一个块里包含了一个自注意层、残差以及归一化、前向传播层、残差及归一化构成

attention结构

计算公式

我们可以理解为搜索引擎:q就是你要搜索的关键字,k就是各个词条的标题,而v就是词条的全文,最后得到attention的就是与你想要搜索的关键字的相关程度,注意力分数是query和key的相似度,注意力权重是分数的softmax结果。

多头机制

并行堆叠attention,主要目的是为了增强模型对输入序列的表示能力和建模能力。多头自注意力允许模型同时关注输入序列中的不同位置和不同关系,从而提高了模型对序列中的长距离依赖关系和语义关系的建模能力。

Add & Norm

Add & Norm 层由 Add 和 Norm 两部分组成。Add 类似ResNet提出的残差连接,以解决深层网络训练不稳定的问题。Norm为归一化层,即Layer Normalization,通常用于 RNN 结构。

Feed Forward

Feed Forward 层比较简单,由两个全连接层构成,第一层的激活函数为 ReLu,第二层不使用激活函数,对应的公式如下。

(max(0,XW1+b1))W2+b2

对于输入X,Feed Forward 最终得到的输出矩阵的维度与输入X一致

解码模块

与encode最主要的区别就是多了一个带mask的多头注意力,在训练的过程中采用了teacher forcing(即将正确的序列也送入),但是为了不让模型提前知道将要预测的句子,采用了掩码

三种attention

文章一开始解释了Self-Attention和Multi-Head Attention。通过对Transformer模型的深入解读,可以看到,模型一共使用了三种Multi-Head Attention:

1)Encoder Block中使用的Attention。第一个Encoder Block的Query、Key和Value来自训练数据经过两层Embedding转化,之后的Encoder Block的Query、Key和Value来自上一个Encoder Block的输出。

2)Decoder Block中的第一个Attention。与Encoder Block中的Attention类似,只不过增加了Mask,在预测第 ii个输出时,要将第i+1i+1 之后的单词掩盖住。第一个Decoder Block的Query、Key和Value来自训练数据经过两层Embedding转化,之后的Decoder Block的Query、Key和Value来自上一个Decoder Block的输出。

  1. Decoder Block中的第二个Attention。这是一个 Encoder-Decoder Attention,它建立起了 Encoder 和 Decoder 之间的联系,Query来自第2种 Decoder Attention的输出,Key和Value 来自 Encoder 的输出。

总结:

1)通常情况下,embedding嵌入向量被训练为捕捉单词之间的语义和语法关系;

2)tokenize操作就是把句子切分成单词和标点符号即可,同时对其进行序列转化;

 参考博文:

自注意力:

Attention 注意力机制 | 鲁老师

transformer:

Transformer | 鲁老师gggT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/597366.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu22.04配置双网卡绑定提升带宽

这里写自定义目录标题 Bonding简介配置验证参考链接 Bonding简介 bonding(绑定)是一种linux系统下的网卡绑定技术,可以把服务器上n个物理网卡在系统内部抽象(绑定)成一个逻辑上的网卡,能够提升网络吞吐量、实现网络冗余、负载均衡等功能,有很…

软件设计师考试的知识点

这里先总结一下考试的知识点。 上午的考试考题中只有单选题,涉及范围很广,但是考查不深。 上午的考试知识点以及分数比重: 知识点 分数 说明 比例 软件工程基础知识 13 开发方法与开发模型、数据流图与数据字典、结构化设计、测试方法…

2023年工作初体验

23年终于正式入职,参与了正式上线的电商平台、crm平台等项目的研发,公司规模较小,气氛融洽,没有任何勾心斗角、末位淘汰,几乎没什么压力。虽然是我的第一家公司,但实际是个适合养老的公司(笑 总…

双击shutdown.bat关闭Tomcat报错:未设置关闭端口~

你们好,我是金金金。 场景 当我startup.bat启动tomcat之后,然后双击shutdown.bat关闭,结果报错了~ 排查 看报错信息很明显了,未配置关闭端口,突然想起来了我在安装的时候都选的是默认的配置,我还记得有这…

快速批量运行命令

Ansible 是 redhat 提供的自动化运维工具,它是 Python编写,可以通过 pip 安装。 pip install ansible 它通过任务(task)、角色(role)、剧本(playbook) 组织工作项目,适用于批量化系统配置、软件部署等需要复杂操作的工作。 但对于批量运行命…

简单罗列一下jdk常见的垃圾收集器

1. Serial Collector 类型:单线程收集器。工作模式:使用标记-压缩算法进行老年代的垃圾收集,标记-复制算法进行年轻代的垃圾收集。特点:简单高效,适用于单核处理器或小型堆内存。在进行垃圾收集时,会暂停所…

nginx日志目录详解

Nginx 默认会打印访问日志(access log)和错误日志(error log)。这些日志对于监控和调试网站非常有用。以下是关于如何配置和查看 Nginx 日志的一些基本信息: 配置 Nginx 日志 访问日志(Access Log&#xf…

宝塔部署nuxt3项目问题解决

使用宝塔部署nuxt3项目一直没成功,网站502,要不就是资源加载不出来 测试使用宝塔版本8.0.4 添加node项目方式失败,项目更目录设置到server,无法设置运行目录为public, 导致网站资源加载不出来,设置到.output目录,会提…

继电器组开发控制

也是通过树莓派IO口的控制来实现继电器组的开发 继电器组有四根信号线,2根电源线。 通过gpio readall 查看树莓派各个端口的信息选择26 27 28 29 作为信号端口 编程可能会遇到的一些问题 1、通过键盘输入指令的时候,如果用scanf 会有bug,导…

JavaScript高级程序设计读书记录(一):语言基础,语法,变量,数据类型

1. 语法 很大程度上借鉴了 C 语言和其他类 C 语言,如 Java 和 Perl. 1.1 区分大小写 1.2 标识符 第一个字符必须是一个字母、下划线(_)或美元符号($); 剩下的其他字符可以是字母、下划线、美元符号或数…

排除启动类故障----三大实验

目录 一、模拟破坏mbr和分区表然后修复 二、修复grub引导故障 三、遗忘root用户密码 一、模拟破坏mbr和分区表然后修复 1、mbr处于第一块磁盘的第一个物理扇区,总共512个字节,前446个字节是grub程序,后面64个字节是分区表 2、故障原因&a…

Linux 进程(九) 进程等待

子进程退出,父进程如果不管不顾,就可能造成‘僵尸进程’的问题,进而造成内存泄漏,所以父进程回收子进程是必然要做的。 另外,进程一旦变成僵尸状态,那就刀枪不入,“杀人不眨眼”的kill …

JS新手入门笔记整理:JS引入方式

JavaScript&#xff0c;简称JS。是一种嵌入到HTML页面中的编程语言&#xff0c;由浏览器一边解释一边执行&#xff0c;控制着网页的行为。 引入方式 外部JavaScript 语法 <head><!--1.在head中引入--><script src”index.js”></script> </head&g…

googlecode.log4jdbc慢sql日志,格式化sql

前言 无论使用原生JDBC、mybatis还是hibernate&#xff0c;使用log4j等日志框架可以看到生成的SQL&#xff0c;但是占位符和参数总是分开打印的&#xff0c;不便于分析&#xff0c;显示如下的效果: googlecode Log4jdbc 是一个开源 SQL 日志组件&#xff0c;它使用代理模式实…

day06、SQL语言之概述

SQl 语言之概述 6.1 SQL语言概述6.2 SQL语言之DDL定义数据库6.3 SQL语言之DML操纵数据库 6.1 SQL语言概述 6.2 SQL语言之DDL定义数据库 6.3 SQL语言之DML操纵数据库

mac m1 goland调试模式踩坑记录

背景&#xff1a;在使用 m1 芯片的 mac &#xff0c;进行 go 项目开发时&#xff0c;发现 debug 模式无法正常调试。 版本环境 go: 1.20.1 goland: 2021.1.3 无法使用调试模式 mac m1 环境下启动 goland 后&#xff0c;发现无法正常使用 debug 模式&#xff0c;接口请求后会…

2024.1.4

今天学了些什么呢&#xff1f;回忆下&#xff1a;主要搞了一下 指针的进阶&#xff0c;指针数组和数组指针&#xff0c;这大抵是相当抽象的东西&#xff0c;确实很难学啊&#xff0c;绕来绕去的&#xff0c;但是不必多言——为什么要攀登珠穆朗玛峰&#xff1f;因为它就在那儿&…

感染了后缀为.360勒索病毒如何应对?数据能够恢复吗?

引言&#xff1a; 随着科技的进步&#xff0c;网络犯罪的威胁也逐渐演变&#xff0c;.360勒索病毒便是其中一种具有破坏性的恶意软件。本文将深入剖析.360勒索病毒的特征、传播途径&#xff0c;以及在数据遭到加密后的恢复方法&#xff0c;并提供一些建议来有效预防这一威胁。…

BLE Mesh蓝牙组网技术详细解析之Foundation Model Layer基础模型层(七)

目录 一、什么是BLE Mesh Foundation Model Layer基础模型层&#xff1f; 二、模型 2.1 配置模型 2.2 健康模型 三、状态 3.1 Composition Data 四、资料获取 一、什么是BLE Mesh Foundation Model Layer基础模型层&#xff1f; BLE Mesh Foundation model Layer是蓝牙…

redis服务迁移数据工具--RDM

一、背景&#xff1a; 在日常的运维工作经常遇见各种数据迁移工作&#xff0c;例如mysql数据库迁移、redis数据库迁移、minio数据迁移等等工作。这里介绍一下redis数据库的迁移过程。 二、迁移思路&#xff1a; redis服务/集群的数据迁移思路是需要新建一个配置、密码一样的re…