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结构如图:
在这里插入图片描述

  1. 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只能看到左侧的内容,不能看到右侧的内容。

  1. 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).

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

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

相关文章

【超图】SuperMap iClient3D for WebGL/WebGPU —— 坐标系位置 —— Cartesian2

作者:taco 说到关于地理必然逃不开位置的关系。借用百度百科的内容来说地理学(geography),是研究地球表层空间地理要素或者地理综合体空间分布规律、时间演变过程和区域特征的一门学科。所以位置&坐标系必然逃不掉了。那么在S…

自检服务器,无需服务器、不用编程。

自检服务器,无需服务器、不用编程。 大家好,我是JavaPub. 这几年自媒体原来热,很多人都知道了个人 IP 的重要性。连一个搞中医的朋友都要要做一个自己的网站,而且不想学编程、还不想花 RMB 租云服务。 老读者都知道&#xff0c…

SpringCloud(H版alibaba)框架开发教程之Ribbon负载均衡和Openfeign远程调用——附源码(3)

源码地址在这套教程的第一个里 我们打开order80的主类上的注释 Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的…

[RoarCTF 2019]Easy Java(java web)

题目 页面如下 页面长得像sql注入 点击help看一下 这里需要了解java web目录结构 WEB INF:Java的web应用安全目录; 此外如果想在页面访问WEB-INF应用里面的文件,必须要通过web.xml进行相应的映射才能访问; WEB-INF是Java Web应用程序中的一…

Java EE 网络原理之HTTPS

文章目录 1. HTTPS 是什么?2. "加密" 是什么?3. HTTPS 的工作过程3.1 引入对称加密3.2 引入非对称加密3.3 中间人攻击3.4 引入证书 4. Tomecat4.1 tomcat 的作用 1. HTTPS 是什么? HTTPS也是⼀个应用层协议,是在 HTTP …

js实时监听input输入框值的变化

实习日记之通过调用common chemistry的api接口实现输入keyword查找cas号和mw。做了一个简单的html网页&#xff0c;用到了ajax技术。比较简单&#xff0c;适合刚入门的宝学习参考。代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head>&l…

【HBuilder + IDEA + XFtp + XShell】打包部署上线

简述 前后端分离&#xff1a;需要将前后端的程序包打包发送至应用Linux服务器上Linux服务器 &#xff08;1&#xff09;需要启用SSHD服务&#xff0c;该服务会监听22号端口&#xff08;一般是开启的&#xff09; &#xff08;2&#xff09;搭建&#xff1a;MYSQL、Nginx、jdk、…

《HelloGitHub》第 93 期

兴趣是最好的老师&#xff0c;HelloGitHub 让你对编程感兴趣&#xff01; 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 Python、Java、Go、C/C、Swift...让你在短时间内…

[Angular] 笔记 18:Angular Router

Angular Router 视频 chatgpt&#xff1a; Angular 具有内置的大量工具、功能和库&#xff0c;功能强大且经过良好设计&#xff0c;如组件化架构、依赖注入、模块化系统、路由和HTTP客户端等。这些功能可以直接用于项目中&#xff0c;无需额外的设置或第三方库。这简化了开发流…

显示器与按键(LCD 1602 + button)

一、实验目的&#xff1a; &#xff08;1&#xff09;学习lcd 1602的编程与使用、 &#xff08;2&#xff09;机械式复位开关button软件消抖的方法。 二、实验内容&#xff1a; 1、必做&#xff1a;先显示开机画面&#xff0c;&#xff1a;在1602显示器上&#xff0c;分两行…

白话机器学习的数学-2-分类

1、设置问题 图片分类&#xff1a;只根据尺寸把它分类为 纵向图像和横向图像。 如果只用一条线将图中白色的点和黑色的点分开&#xff1a; 这次分类的目的就是找到这条线。 2、内积 找到一条线&#xff0c;这是否意味着我们要像学习回归时那样&#xff0c;求出一次函数的斜率…

关于 K8s 的一些基础概念整理

〇、前言 Kubernetes&#xff0c;将中间八个字母用数字 8 替换掉简称 k8s&#xff0c;是一个开源的容器集群管理系统&#xff0c;由谷歌开发并维护。它为跨主机的容器化应用提供资源调度、服务发现、高可用管理和弹性伸缩等功能。 下面简单列一下 k8s 的几个特性&#xff1a; 自…

clickhouse连接工具dbeaver

地址 地址&#xff1a; Download | DBeaver Community 安装 表引擎 表引擎之TinyLog 以列文件的形式保存在磁盘上&#xff0c;不支持索引&#xff0c;没有并发控制。一般保存少量数据的小表&#xff0c; 生产环境上作用有限&#xff0c;多用于平时练习测试用。 内存引擎&am…

k8s 架构

主要组件 k8s有如下的主要组件&#xff1a; Control plane(s) and worker node(s)OperatorsServicesPods of containersNamespaces and quotasNetwork and policiesStorage. 一个k8s集群是有一个或多个 cp&#xff08;控制平面&#xff09;节点和一组worker 节点组成的。这个…

GaussDB数据库中的同义词SYNONYM

目录 一、前言 二、GasussDB数据库中的Synonym 1、Synonym的概念 2、语法介绍 3、Synonym的用途 三、Synonym在GaussDB数据库中是如何使用的 1、表的同义词使用&#xff08;示例&#xff09; 2、视图的同义词使用&#xff08;示例&#xff09; 3、函数的同义词使用&am…

YOLO训练results.csv文件可视化(原模型与改进模型对比可视化)

一、单独一个文件可视化&#xff08;源码对应utils文件夹下的plots.py文件的plot_results类&#xff09; from pathlib import Path import matplotlib.pyplot as plt import pandas as pd def plot_results(fileruns/train/exp9/results.csv, dir):# Plot training results.c…

前后端分离nodejs+vue医院预约挂号系统6nrhh

医院预约挂号系统主要有管理员、用户和医生三个功能模块。以下将对这三个功能的作用进行详细的剖析。 运行软件:vscode 前端nodejsvueElementUi 语言 node.js 框架&#xff1a;Express/koa 前端:Vue.js 数据库&#xff1a;mysql 开发软件&#xff1a;VScode/webstorm/hbuiderx均…

YOLOv8改进 | 细节创新篇 | iAFF迭代注意力特征融合助力多目标细节涨点

一、本文介绍 本文给大家带来的改进机制是iAFF&#xff08;迭代注意力特征融合&#xff09;&#xff0c;其主要思想是通过改善特征融合过程来提高检测精度。传统的特征融合方法如加法或串联简单&#xff0c;未考虑到特定对象的融合适用性。iAFF通过引入多尺度通道注意力模块(我…

JDK9及之后版本使用 jlink 生成定制化的 JRE

许多java软件的运行需要依赖jre&#xff0c;在 jdk8 之后&#xff0c;不再提供默认的 jre&#xff0c;后续如果项目中还是想用 jre 的形式发布软件&#xff0c;那么可以使用 jlink 工具生成 jre。 一、jlink 命令详解 jlink 二、查看jdk中包含的所有模块 如果在 jdk 安装文件夹…

Hadoop之Yarn 详细教程

1、yarn 的基本介绍和产生背景 YARN 是 Hadoop2 引入的通用的资源管理和任务调度的平台&#xff0c;可以在 YARN 上运行 MapReduce、Tez、Spark 等多种计算框架&#xff0c;只要计算框架实现了 YARN 所定义的 接口&#xff0c;都可以运行在这套通用的 Hadoop 资源管理和任务调…