Transformer(seq2seq、self-attention)学习笔记
在self-attention 基础上记录一篇Transformer学习笔记
- Transformer的网络结构
- Encoder
- Decoder
- 模型训练与评估
Transformer的网络结构
Transformer是一种seq2seq 模型。输入一个序列,经过encoder、decoder输出结果也是一个序列,输出序列的长度由模型决定。
seq2seq可以解决包括机器翻译、语音识别、语法解析、多标签分类问题等。还可以用于目标检测任务。
Transformer的网络结构:

Encoder
Transformer的编码器由多个self-attention block堆叠构成。
Transformer Encoder对应网络结构中这一部分:

multi-head attention模块就是Multi-head self-attention结构
self-attention block的结构如图:

self-attention block的输入向量为原始输入或者隐藏层的输出向量。
操作将当前向量的qi 向量与序列中所有其他向量的kj做点乘,计算attention score 记为αi,经过softmax得到αi ',再与向量vi 做点乘,得到attention 操作的输出。multi-head将得到的qi 向量分别与n个矩阵做点乘,head设置为n,说明要提取n中不同的相关性。
每一个输出向量结果接一个Fully Connected,完成一个self-attention block
另外Encoder中增加了Add&Norm,residual connection和layer normalization。

- 在self-attention结构和Fully connected结构上都上增加了残差连接,将输入向量与输出的向量相加得到最终输出结果。
- 在transformer中使用的是layer normalization。
layer normalization 与 batch normalization
对于batch normalization,在同一个mini batch 内做归一化处理,向量中有几个channel,就做几次normalization 操作;
对于layer nromalization,在同一个向量内部,向量中有几个dimention,就做几次normalization操作。
在卷集中使用batch normalization;在RNN中使用Layer Normalization.
对于RNN网络的动态输入,当batch较小时,batch normalization效果不好;
时序特征向量一个batch 中的特征长度并不是相同的。
Decoder
Transformer的decoder结构如图:

- AutoRegress(AT)

Encoder的输出结果一部分作为decoder的输入,同时还有一个特殊的token BEGIN输入到decoder中,经过softmax得到一个长度为L的向量。
L表示期望输出的内容的所有可能情况+1(END)。例如,机器翻译任务,英文翻译成中文,输出向量的长度为所有可能输出的汉字的集合。
输出的结果每一个向量对应属于每一个结果的概率,取概率最大的取值,该结果为当前输入对应额decoder输出结果。
将所有以往的输出结果和START一同输入到decoder,相同的方法获得输出的结果。
decoder不仅需要训练输出向量的内容还要训练输出向量的长度。当输出向量为“END”,说明说明该序列输出结束。
decoder中的multi-head attention是带有masked,因为decoder的输出结果是一个一个输出的,训练decoder模型希望它能够根据已有的输出信息得到输出结果,decoder只能看到左侧的内容,不能看到右侧的内容。
-
Non-AutoRegress(NAT)
NAT将一次输出整个序列。一次同时输入多个BEGIN,如何确定一次输入的BEGIN的数量(如何确定输出序列的长度)。(1)训练一个classifier网络来训练输出序列的长度
(2)指定一个分厂大的值作为输出序列的长度,知道输出END,只保留END之前的内容作为decoder的输出。Non-AutoRegress(NAT)的优点:
(1)能够实现并行处理,速度更快
(2)可以控制输出序列的长度
AutoRegress(AT)和Non-AutoRegress(NAT)对比:

Encoder和decoder之间如何传递信息
通过cross attention将encoder的输出与decoder中间的attention block连接。
将encoder输出的k向量与decoder输出的q向量计算点乘,在将得到的结果与v向量做点乘,得到的向量结果再进行Fully connection操作。实现cross attention

这一过程计算decoder中的节点,与encoder中所有节点的相关性。

模型训练与评估
对于decoder的训练是带有ground truth的,每一个输出的向量斗鱼ground truth计算一个损失值,计算cross entropy loss.可以看做是有几个输出向量就做了几次分类问题。min(cross entropy loss).
相关文章:
Transformer(seq2seq、self-attention)学习笔记
在self-attention 基础上记录一篇Transformer学习笔记 Transformer的网络结构EncoderDecoder 模型训练与评估 Transformer的网络结构 Transformer是一种seq2seq 模型。输入一个序列,经过encoder、decoder输出结果也是一个序列,输出序列的长度由模型决定…...
2023-12-29 服务器开发-centos部署ftp
摘要: 2023-12-29 服务器开发-centos-部署ftp 部署ftp vsftpd(very secure FTP daemon)是Linux下的一款小巧轻快、安全易用的FTP服务器软件。本教程介绍如何在Linux实例上安装并配置vsftpd。 前提条件 已创建ECS实例并为实例分配了公网IP地址。 背景…...
螺旋数字阵(100%用例)C卷 (JavaPythonNode.jsC语言C++)
疫情期间,小明隔离在家,百无聊赖,在纸上写数字玩。他发明了一种写法: 给出数字个数n和行数m (0 < n <= 999,0 < m <= 999) ,从左上角的1开始,按照顺时针螺旋向内写方式,依次写出2,3...n,最终形成一个m行矩阵 小明对这个矩阵有些要求 1.每行数字的个数一样多…...
AUTOSAR从入门到精通-网络通信(UDPNm)(二)
目录 前言 原理 UdpNm工作原理 UdpNm与CanNM的区别联系 网络管理算法...
显示器与按键(LCD 1602 + button)
一、实验目的: (1)学习lcd 1602的编程与使用、 (2)机械式复位开关button软件消抖的方法。 二、实验内容: 1、必做:先显示开机画面,:在1602显示器上,分两行…...
2020年认证杯SPSSPRO杯数学建模B题(第一阶段)分布式无线广播全过程文档及程序
2020年认证杯SPSSPRO杯数学建模 B题 分布式无线广播 原题再现: 以广播的方式来进行无线网通信,必须解决发送互相冲突的问题。无线网的许多基础通信协议都使用了令牌的方法来解决这个问题,在同一个时间段内,只有唯一一个拿到令牌…...
【CISSP学习笔记】7. 安全评估与测试
该知识领域涉及如下考点,具体内容分布于如下各个子章节: 设计和验证评估、测试和审计策略进行安全控制测试收集安全过程数据(例如,技术和管理)分析测试输出并生成报告执行或协助安全审计 7.1. 构建安全评估和测试方案…...
Gateway集成方法以及拦截器和过滤器的使用
前提:请先创建好一个SpringBoot项目 1. 引入依赖 SpringCloud 和 alibabaCloud 、 SpringBoot间对版本有强制要求,我使用的springboot是3.0.2的版本。版本对应关系请看:版本说明 alibaba/spring-cloud-alibaba Wiki GitHub <dependency…...
第G2周:人脸图像生成(DCGAN)
🍨 本文为[🔗365天深度学习训练营学习记录博客\n🍦 参考文章:365天深度学习训练营\n🍖 原作者:[K同学啊 | 接辅导、项目定制]\n🚀 文章来源:[K同学的学习圈子](https://www.yuque.co…...
【Web】Ctfshow Thinkphp5 非强制路由RCE漏洞
目录 非强制路由RCE漏洞 web579 web604 web605 web606 web607-610 前面审了一些tp3的sql注入,终于到tp5了,要说tp5那最经典的还得是rce 下面介绍非强制路由RCE漏洞 非强制路由RCE漏洞原理 非强制路由相当于开了一个大口子,可以任意调用当前框…...
python3遇到Can‘t connect to HTTPS URL because the SSL module is not available.
远程服务器centos7系统上有minicoda3,觉得太占空间,就把整个文件夹删了,原先的Python3也没了,都要重装。 我自己的步骤:进入管理员模式 1.下载Python3的源码: wget https://www.python.org/ftp/python/3.1…...
QSPI Flash xip取指同时program过程中概率性出现usb播歌时断音
项目场景: USB Audio芯片,代码放到qspi flash中,执行代码时,客户会偶尔保存一些参数,即FPGA验证过程中,每隔10ms向flash info区烧写4个byte(取指过程一直存在,且时隙软件不可控&…...
MySQL聚簇索引和非聚簇索引的区别
前言: 聚簇索引和非聚簇索引是数据库中的两种索引类型,他们在组织和存储数据时有不同的方式。 聚簇索引: 简单理解,就是将数据和索引放在了一起,找到了索引也就找到了数据。对于聚簇索引来说,他的非叶子节点上存储的是…...
【C#】蜗牛爬井问题C#控制台实现
文章目录 一、问题描述二、C#控制台代码 一、问题描述 井深30米,蜗牛在井底,每天爬3米又滑下1米,问第几天爬出来 二、C#控制台代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System…...
IP地址的四大类型:动态IP、固定IP、实体IP、虚拟IP的区别与应用
在网络通信中,IP地址是设备在互联网上唯一标识的关键元素。动态IP、固定IP、实体IP和虚拟IP是四种不同类型的IP地址,它们各自具有独特的特点和应用场景。 1. 动态IP地址: 动态IP地址是由Internet Service Provider(ISPÿ…...
Linux Debian12安装和使用ImageMagick图像处理工具 常见图片png、jpg格式转webp格式
一、ImageMagick简介 ImageMagick是一套功能强大、稳定而且免费的工具集和开发包。可以用来读、写和图像格式转换,可以处理超过100种图像格式,包括流行的TIFF, JPEG, GIF, PNG, PDF以及PhotoCD等格式。对图片的操作,即可以通过命令行进行&am…...
JavaScript二
目录 流程控制 if判断 while循环 do while for循环 forEach for in Map与set iterator 流程控制 if判断 <script>use strictvar age 5;if(age < 3){alert("haha");}else if(age < 5){alert("hi world");}else{alert("hello wor…...
JavaScript系列——正则表达式
文章目录 需求场景正则表达式的定义创建正则表达式通过 / 表示式/ 创建通过构造函数创建 编写一个正则表达式的模式使用简单模式使用特殊字符常用特殊字符列表特殊字符组和范围 正则表达式使用代码演示 常用示例验证手机号码合法性 小结 需求场景 在前端开发领域,在…...
命令行创建Vue项目
Vue项目创建 1. 打开UI界面 在命令行中,执行如下指令: vue ui 2. 打开项目管理器 3. 创建项目 创建项目的过程,需要联网进行,这可能会耗时比较长的时间,请耐心等待。 windows的命令行,容易卡顿,…...
01.PostgreSQL基本SELECT语句
1. SQL简介 SQL 是用于访问和处理数据库的标准的计算机语言。 SQL有两个标准:分别是SQL92和SQL99,他们分别代表了92年和99年颁布的SQL标准,我们今天使用的SQL语言依然遵循这些标准。 注意:除了 SQL 标准之外,大部分 SQL 数据库程序都拥有它们自己的私有扩展! 2. SQL分…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...

