Transformer模型原理

news2024/11/18 21:27:10

NLP预训练模型的架构大致可以分为三类:

1. Encoder-Decoder架构(T5),seq2seq模型,RNNLSTM网络
2. BERT:自编码语言模型,预测文本随机掩码
3. GPT: 自回归语言模型,预测上/下一个单词,自左向右或自右向左的语言模型

然而,没有任何一个架构能在三个主流NLP任务上都达到最好(自然语言理解、无条件生成、条件生成)


Transformer架构

2017年之前,Encoder-Decoder架构的计算核是由一个或多个循环网络(RNNLSTM)单元构成,这样的架构存在两个问题:

  1. 不能进行并行计算:循环网络是顺序结构,必须等待上一时刻完成才能开展下一时刻的计算,使得模型不能进行并行计算;
  2. 超长序列关系微弱:对于超长序列,前后间隔过远的数据之间的联系很难建立。就文本问题,当前时刻可能受过往N个时刻的影响,而循环网络只对较近时刻信息保持敏感,对较远时刻信息很难提取关联。
    在这里插入图片描述

2017年谷歌发表论文《Attention Is All You Need》,就序列问题(机器翻译、语言模型)继续沿用Encoder-Decoder的经典架构,但是将计算核由循环网络改进为Transformer网络架构,这是Transformer网络架构的首次应用,便在序列问题上超越了之前RNNLSTM等网络,取得更好的结果表现。

一、Transformer的整体结构

首先介绍Transformer的整体结构,下图是利用Transformer 用于中英文翻译。可以看出Transformer沿用Encoder-Decoder的经典架构,只是将处理元由神经网络换成Transformer处理层。

Transformer架构中使用的Multi-Head Attention(多头注意力)层中的self-Attention(自注意力)机制是Transformer 架构中最出彩的部分

(论文《Attention Is All You Need》中的EncoderDecoder各包含6个block。)
在这里插入图片描述

二、Transformer的数据流转

2.1、预处理过程:建立词空间矩阵X(n,d)

获取输入句子中每个单词的词向量text embedding、位置向量path embedding,词向量 + 位置向量经过映射得到transformer词空间向量,词空间向量组合形成词空间矩阵X(n,d)n表示句子中单词的个数,d表示词向量的维度。

  1. 词向量text embedding:有多种方式获取,可用 Word2VecGlove 等算法预训练得到,也可以在Transformer中训练得到;
  2. 位置向量path embedding:位置向量对于NLP来说非常重要,循环网络可直接通过单词的顺序输入得到单词的位置关系,而Transformer 由于不采用循环网络的结构,所以需要单独记录顺序的位置向量path embedding,用于保存单词在序列中的相对或绝对位置;
  3. Transformer的输入:将词向量text Embedding 和位置向量path embedding经过映射就可以得到transformer词空间向量,词空间向量就是Transformer的输入。
    在这里插入图片描述

2.2、编码过程:生成编码矩阵C

将得到的词空间矩阵X(n,d)传入Encoder,经过设定的NEncoder后生成编码矩阵C。如上右图。
(其中每一个Encoder block中,输入、输出的矩阵维度都完全一致。)

2.3、解码过程:Mask掩码预测

将得到的编码矩阵C传递到Decoder中,在第 i 次解码过程中,会Mask掩盖住 i 之后所有的单词用于预测第 i 位的单词(0 < i < n)。
(预测值与真实值在词空间上构建损失loss,进行梯度更新训练。)
在这里插入图片描述

三、self-attention自注意力机制

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

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

相关文章

Elasticsearch(一)---搭建

搭建es 不允许root用于运行 创建esuser用户&#xff1a; useradd esuser 设置密码 passwd esuser 让esuser拥有sudo的权限&#xff0c;需要修改/etc/sudoers文件 需要先给/etc/sudoers添加写的权限 [rootnode1 ~]# vim /etc/sudoers 改完之后将写权限删除 三台服务器上操…

“阿里巴巴按关键字搜索接口:一键获取海量商品信息,助力商家抢占市场先机!“

阿里巴巴按关键字搜索商品的接口是通过开放平台提供的API接口来实现的。要使用这个接口&#xff0c;需要进行以下步骤&#xff1a; 确认API接口的请求地址和所需参数&#xff1a;需要先查看API文档&#xff0c;了解所要访问的API接口的请求地址和请求参数&#xff0c;以便正确…

python随手小练13

题目1&#xff1a; 定义学员信息类&#xff0c;包含姓名、成绩属性&#xff0c;定义成绩打印方法 (90分及以上显示优秀&#xff0c;80分及以上显示良好&#xff0c;70分及以上显示中等&#xff0c;60分及以上显示合格&#xff0c;60分以下显示不及格) 具体操作&#xff1a; cl…

基于pyqt5和yolov8的智慧工地施工人工安全检测系统

基于pyqt5和yolov8的智慧工地施工人工安全检测系统 主要基于两者进行集成 在前面模型训练基础上&#xff0c;实现安全马甲、安全面具和安全帽的检测。 核心检测代码 def run(self):self.hilo_corriendo Truemodel YOLO("best.pt")cap cv2.VideoCapture(0)while…

安全生产管理系统助力企业安全细化管理

安全生产管理系统利用完整的安全生产管理体系&#xff0c;结合信息化、数字化和智能化等技术手段&#xff0c;将安全生产过程中的各个环节进行有效整合&#xff0c;使安全管理更加科学、规范和高效。 安全生产管理系统可以对企业安全生产进行全面、细致的管理。它能够实现对企…

NFTScan | 10.23~10.29 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期&#xff1a;2023.10.23~ 2023.10.29 NFT Hot News 01/ sudoswap 推出 NFT 做空协议 sudoshort 10 月 24 日&#xff0c;NFT 交易协议 sudoswap 推出 NFT 做空协议 sudoshort&#xff0c;是建立在 su…

C语言C位出道心法(一):基础语法

一:基础语法认知 变量与常量,数据类型认知升维 C语言中各种变量的定义及数据类型的认知: 一般而言,在譬如C等高级编程语言中,我们定义不同的类型的变量,需要不同的数据类型来进行声明,不同类型的数据类型声明的变量占用的内存空间不一样; 而数据类型大致分为两种: (1)内置的…

ORACLE运行的数据库突然连接报“无监听程序”

远程&#xff1a;用远程的数据库连接工具用localhost可以连接&#xff0c;用ip地址除127.0.0.1不可连接。 可能是日志文件满了&#xff0c;解决办法如下&#xff1a; 第一步&#xff1a;关闭数据库监听程序【任务管理器--》服务--》右键停止服务】 第二步&#xff1a;找到日志…

安防视频监控平台EasyCVR服务器需要开启firewalld防火墙,该如何开放端口?

智能视频监控/视频云存储/集中存储/视频汇聚平台EasyCVR具备视频融合汇聚能力&#xff0c;作为安防视频监控综合管理平台&#xff0c;它支持多协议接入、多格式视频流分发&#xff0c;视频监控综合管理平台EasyCVR支持海量视频汇聚管理&#xff0c;可应用在多样化的场景上&…

参与国际大科学计划!DDE 深时数字地球向您发出平台使用邀请

深时数字地球&#xff08;Deep-time Digital Earth&#xff0c;DDE&#xff09;是由我国科学家主导发起并受国际学术界认可的首个大科学计划&#xff0c;希望通过建立一个链接地学信息的研究平台&#xff0c;整合地球演化数据、共享全球地学知识&#xff0c;同时为世界范围内的…

【兔子王赠书第4期】用ChatGPT轻松玩转机器学习与深度学习

文章目录 前言机器学习深度学习ChatGPT推荐图书粉丝福利尾声 前言 兔子王免费赠书第4期来啦&#xff0c;突破传统学习束缚&#xff0c;借助ChatGPT的神奇力量&#xff0c;解锁AI无限可能&#xff01; 机器学习 机器学习是人工智能领域的一个重要分支&#xff0c;它的目的是让…

网络安全(黑客)—零基础自学

目录 一、自学网络安全学习的误区和陷阱 二、学习网络安全的一些前期准备 三、网络安全学习路线 四、学习资料的推荐 想自学网络安全&#xff08;黑客技术&#xff09;首先你得了解什么是网络安全&#xff01;什么是黑客&#xff01; 网络安全可以基于攻击和防御视角来分类&am…

GIS开源工具分享,Geojson格式转Topojson格式,使用TopoJSON Server工具进行Geojson转换为Topojson

前言 为什么要将 GeoJSON 转换为 TopoJSON? 因为TopoJSON会把GeoJSON中的冗余数据精简,所以相同数据TopoJSON体积比GeoJSON更小,更利于存储和传输。 Geojson介绍 GEOJSON是gis地图中常用的数据格式,制作地图时用于存储各种地理数据,使用时通过OpenLayer、Leaflet、mapL…

Java char类型介绍

前言&#xff1a;最近&#xff0c;想写一篇关于介绍产生”乱码问题“根本原因的文章&#xff0c;因此&#xff0c;查看了Java中的字符是如何存储的&#xff0c;即char数据类型。在此将学到的知识做一个总结。 一、char数据类型 char类型最初用于表示Unicode字符集中的一个字符…

LeetCode | 17.04.消失的数字和189.旋转数组

LeetCode | 17.04.消失的数字和189.旋转数组 文章目录 LeetCode | 17.04.消失的数字和189.旋转数组17.04.消失的数字方法一&#xff1a;方法二&#xff1a;方法三&#xff1a;方法二的代码方法三的代码 189.旋转数组思路一思路二思路三 17.04.消失的数字 OJ链接 这里题目要求…

②CPU - 运算器、控制器 【软考-软件设计师考点】

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ ②CPU - 运算器、控制器 【软考-软件设计师考点…

基于python的app程式开发

安装的库文件&#xff1a; 运行代码&#xff1a; # -*- coding:utf-8 -*- from kivy.app import App class HelloApp(App):pass if __name__ __main__:HelloApp().run() 结果画面&#xff1a;

PTA 病毒溯源(树)

题目 病毒容易发生变异。某种病毒可以通过突变产生若干变异的毒株&#xff0c;而这些变异的病毒又可能被诱发突变产生第二代变异&#xff0c;如此继续不断变化。 现给定一些病毒之间的变异关系&#xff0c;要求你找出其中最长的一条变异链。 在此假设给出的变异都是由突变引起…

数据分类保护敏感数据

数据分类是一个过程&#xff0c;用于发现敏感内容&#xff0c;并对关键数据进行分组&#xff0c;以便进一步配置 DLP。数据分类过程分析组织的数据存储库&#xff0c;以便根据文件的内容和上下文有效地将文件分类为不同的类别&#xff0c;并协助配置适当的安全控制级别以符合数…

leetcode:1207. 独一无二的出现次数(python3解法)

难度&#xff1a;简单 给你一个整数数组 arr&#xff0c;请你帮忙统计数组中每个数的出现次数。 如果每个数的出现次数都是独一无二的&#xff0c;就返回 true&#xff1b;否则返回 false。 示例 1&#xff1a; 输入&#xff1a;arr [1,2,2,1,1,3] 输出&#xff1a;true 解释&…