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.rhkb.cn/news/230946.html

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

相关文章

C之BS开发

一、 BS 概述与 boa 搭建 1.1 BS 模式开发概述 BS 模式: 浏览器与服务器模式, 即通过浏览器访问服务器的 Web 资源。 1.1.1 web 前端开发技术 主要包含: HTML 、 CSS 、 XML/JSON 、 Javascript 、 AJAX HTML 超文本标记语言 ( 英文全称…

ssm基于web的素材网的设计与实现+vue论文

基于web的素材网站的设计与实现 摘要 当下,正处于信息化的时代,许多行业顺应时代的变化,结合使用计算机技术向数字化、信息化建设迈进。传统的素材信息管理模式,采用人工登记的方式保存相关数据,这种以人力为主的管理…

实现区域地图散点图效果,vue+echart地图+散点图

需求:根据后端返回的定位坐标数据实现定位渲染 1.效果图 2.准备工作,在main.js和index.js文件中添加以下内容 main.js app.use(BaiduMap, {// ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */ak: sRDDfAKpCSG5iF1rvwph4Q95M…

【C语言】stdbool.h——有关bool的总结

在编程和日常生活中,经常需要一种只能具有两个值之一的数据类型,如是否、开关、真假等,因此,C 有一种bool数据类型,称为booleans。布尔值表示 或true的值false。 C 中的 bool 是大多数语言中的基本数据类型&#xff0…

网络安全与IP地址:构建数字世界的前沿堡垒

网络安全是当今数字社会中不可忽视的挑战之一。而IP地址,作为互联网通信的基础协议,既是数字化时代的桥梁,也是网络安全的关键节点。本文将剖析IP地址在网络安全领域的作用,以及如何利用其特性建立有效的网络安全策略。 IP地址&a…

table的最后一行需要加底色

<tr class"font12" v-for"(item, index) in OrderAuditDiscountList.list" :key"index":class"OrderAuditDiscountList.list.length - 1 index ? blodfont : "> 其中&#xff1a; :class"OrderAuditDiscountList.list.le…

借还款记账表,借款还款记账软件

我们每个人都在为生活奔波&#xff0c;为事业打拼。但有时候&#xff0c;生活中的一些小事情&#xff0c;比如朋友间的借贷、还款&#xff0c;就可能让我们的生活变得有些混乱。为了解决这个问题&#xff0c;一个全新的借还款记账软件【晨曦记账本】横空出世&#xff0c;它不仅…

FindMy技术用于鼠标

鼠标是计算机的标准配置之一&#xff0c;其设计初衷是为了使计算机的操作更加简便快捷&#xff0c;减少用户在操作中的负担。用户可以通过移动鼠标&#xff0c;实现光标的精确移动&#xff0c;进而选择、拖拽、复制、粘贴等操作。这种操作方式&#xff0c;使得计算机的操作变得…

新一代爬取JavaScript渲染页面的利器-playwright(二)

接上文&#xff1a;新一代爬取JavaScript渲染页面的利器-playwright&#xff08;一&#xff09;   上文我们主要讲了Playwright的特点、安装、基本使用、代码生成的使用以及模拟移动端浏览&#xff0c;这篇我们主要讲下Playwright的选择器以及常见的操作方法。 6.选择器 我们…

git 本地仓库

本地仓库 start.bat 启动

k_d树, KNN算法学习笔记_1 距离和范数

k_d树, KNN算法学习笔记_1 距离和范数 二维树中最近邻搜索的示例。这里&#xff0c;树已经构建好了&#xff0c;每个节点对应一个矩形&#xff0c;每个矩形被分割成两个相等的子矩形&#xff0c;叶子对应于包含单个点的矩形 From Wikipedia 1&#xff0e; k k k近邻法是基本且简…

使用“反向代理服务器”的优点是什么?

反向代理服务器是一种网络架构模式&#xff0c;通常位于客户端和实际服务器之间&#xff0c;用于处理客户端请求并转发到实际服务器。以下是使用反向代理服务器的优点&#xff1a; 1.安全性&#xff1a;反向代理服务器可以提供额外的安全层。通过在反向代理服务器上配置防火墙和…

opencv006 绘制直线、矩形、⚪、椭圆

绘制图形是opencv经常使用的操作之一&#xff0c;库中提供了很多有用的接口&#xff0c;今天来学习一下吧&#xff01; &#xff08;里面的函数和参数还是有点繁琐的&#xff09; 最终结果显示 函数介绍 直线 line(img, pt1, pt2, color, thickness, lineType, shift) img: 在…

GO语言笔记1-变量与基本数据类型

变量使用步骤 声明赋值使用 package main import "fmt" func main(){var age int //声明一个 int类型的变量叫ageage 18 //给变量用 赋值fmt.Println(age) //使用变量 输出变量的值 } 编译运行输出变量值 变量的四种使用方式 package main import "fmt&q…

nginx配置图片服务器

目录 一&#xff1a;访问流程 二&#xff1a;缓存服务器配置 三&#xff1a;上传图片直接上传到图片服务器 四&#xff1a;加快图片访问 一&#xff1a;访问流程 访问缓存服务器(上面安装nginx反向代理到图片服务器&#xff0c;对外提供服务)->图片服务器 二&#xff1…

Ajax基础入门_Ajax概述,同步与异步,Axios的使用,JSON数据及FastJSON的使用

Ajax 文章目录 Ajax1 概述2 作用3 同步和异步3.1 同步3.2 异步 4 代码编写4.1 服务端4.2 客户端 5 Axios5.1 使用5.2 代码5.2.1 前端5.2.2 后端 5.3 请求方法别名 6 JSON6.1 概述6.2 JSON 基础语法6.2.1 定义格式6.2.2 js 对象与JSON的转换 6.3 发送异步请求携带参数6.4 JSON串…

[PyTorch][chapter 9][李宏毅深度学习][CNN]

前言&#xff1a; 卷积神经网络&#xff08;Convolutional Neural Networks&#xff09;是一种深度学习模型或类似于人工神经网络的多层感知器&#xff0c;常用来分析视觉图像。卷积神经网络的创始人是着名的计算机科学家Yann LeCun&#xff0c;目前在Facebook工作&#xff0c;…

WSL 与真实 linux 环境区别有多大?

随着 Windows 系统的不断发展和完善&#xff0c;WSL&#xff08;Windows Subsystem for Linux&#xff09;作为 Windows 10 的一个功能&#xff0c;为 Windows 用户提供了一个可以在 Windows 环境下运行 Linux 二进制可执行文件的环境。然而&#xff0c;尽管 WSL 为用户提供了一…

BERT(从理论到实践): Bidirectional Encoder Representations from Transformers【3】

这是本系列文章中的第3弹,请确保你已经读过并了解之前文章所讲的内容,因为对于已经解释过的概念或API,本文不会再赘述。 本文要利用BERT实现一个“垃圾邮件分类”的任务,这也是NLP中一个很常见的任务:Text Classification。我们的实验环境仍然是Python3+Tensorflow/Keras…

python打包exe

打包python绘制玫瑰花_python生成玫瑰花-CSDN博客 这个链接的程序 隐藏 控制台窗口&#xff08;如果你的程序是GUI&#xff0c;不是控制台应用可以选用&#xff0c;比如本案例的送你玫瑰花就是白底的&#xff09; 报错的话&#xff0c;可能没有pyinstaller这个库 参考&#x…