Transformer介绍

fa7994b6ae9c4bfc99226e8e848ab38e.jpeg

Transformer的诞生

2018年Google发出一篇论文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》, BERT模型横空出世, 并横扫NLP领域11项任务的最佳成绩!

而在BERT中发挥重要作用的结构就是Transformer, 之后又相继出现XLNET,roBERT等模型击败了BERT,但是他们的核心没有变,仍然是:Transformer💥

Transformer的优势 

相比之前占领市场的LSTM和GRU模型,Transformer有两个显著的优势:

  • Transformer能够利用分布式GPU进行并行训练,提升模型训练效率
  • 在分析预测更长的文本时, 捕捉间隔较长的语义关联效果更好
  • 通过自注意力机制有效捕捉长距离依赖关系,无需循环结构从而避免了梯度消失或爆炸问题,同时通过位置编码更好地理解和利用序列位置信息

Transformer的市场 

随着人工智能技术的加速演进,AI大模型已成为全球科技竞争的新高地。Transformer作为大模型的核心技术之一,正在推动整个AI产业的发展。

  • 在自然语言处理领域,Transformer模型已被广泛应用于机器翻译、文本生成、情感分析、问答系统等任务中,提高了语言处理的准确性和效率。
  • 除了NLP领域,Transformer在计算机视觉、语音识别等领域也展现出了强大的潜力。例如,在图像分类、目标检测等任务中,基于Transformer的模型已经取得了令人瞩目的成绩。

Transformer模型的作用

  • 💯基于seq2seq架构的transformer模型可以完成NLP领域研究的典型任务, 如机器翻译, 文本生成等. 同时又可以构建预训练语言模型,用于不同任务的迁移学习
  • 💯在接下来的架构分析中, 我们将假设使用Transformer模型架构处理从一种语言文本到另一种语言文本的翻译工作, 因此很多命名方式遵循NLP中的规则. 比如: Embeddding层将称作文本嵌入层, Embedding层产生的张量称为词嵌入张量, 它的最后一维将称作词向量等

迁移学习是机器学习领域中的一大类学习方法,其核心思想是将在一个领域(源域)学习到的知识或技能应用于另一个领域(目标域),以提高学习的效率和准确度💫 

Transformer总体架构图:

ce8d8b47bf5a47bdb07a324df0e1429c.png

💥Transformer总体架构

  • 输入部分
  • 输出部分
  • 编码器部分
  • 解码器部分

Transformer模型主要由编码器(Encoder)和解码器(Decoder)两部分组成,编码器负责处理输入序列,将其转换为一种中间表示形式(即上下文嵌入向量),这种表示形式可以捕获输入序列的全局依赖关系,解码器则根据编码器输出的上下文嵌入向量生成目标序列。

💢核心机制

  • 自注意力(Self-Attention)机制:允许模型在序列内的任意位置间直接建立依赖,从而更好地理解数据的上下文关系。这种机制可以并行处理所有位置的数据,提高计算效率。
  • 多头注意力(Multi-Head Attention):模型会同时学习数据的不同表示,每个“头”关注序列的不同部分。这种机制有助于模型捕获输入序列中的多种依赖关系。
  • 位置编码(Positional Encoding):由于Transformer不使用基于顺序的结构,因此需要通过位置编码来给模型提供关于单词在序列中位置的信息。这通常通过给输入嵌入添加固定的位置嵌入向量来实现。
  • 前馈网络(Feed-Forward Network):在每个编码器和解码器层中,都包含一个前馈网络,用于对自注意力机制输出的结果进行进一步处理。

输入部分

  • 源文本嵌入层及其位置编码器:将源文本中的词汇从数字表示转换为向量表示,也称为词嵌入
  • 目标文本嵌入层及其位置编码器:功能与实现与源文本嵌入层相同,用于将目标文本中的词汇从数字表示转换为向量表示

输入部分的位置编码器在Transformer模型中起着至关重要的作用,尤其是在处理序列数据时,确保模型能够理解和利用序列中单词的位置信息💨

💥架构基础: 

  • RNN(递归神经网络):RNN是处理序列数据的早期模型,它通过递归的方式处理序列中的每个元素,并将前一个元素的信息传递到下一个元素。RNN的核心是一个循环结构,它允许模型记住之前的信息。
  • LSTM(长短期记忆):LSTM是RNN的一种变体,它引入了门控机制(如遗忘门、输入门和输出门)来控制信息的流动,从而解决了RNN在处理长序列时遇到的梯度消失和梯度爆炸问题。LSTM通过其内部状态(包括细胞状态和隐藏状态)来存储和更新信息。
  • Transformer:Transformer是一种基于自注意力机制的模型,它完全摒弃了RNN的循环结构,而是使用注意力机制来捕捉序列中的依赖关系。这种设计使得Transformer能够并行处理序列中的所有元素,大大提高了计算效率。

💥位置信息的处理方式:

  • RNN和LSTM:由于它们的循环结构,RNN和LSTM在处理序列时自然能够考虑到元素的顺序。因此,它们通常不需要额外的位置编码器来提供位置信息。         
  • Transformer则通过添加位置编码来明确提供每个元素的位置信息。因为Transformer的并行处理特性,需要一种方式来告知模型序列中元素的顺序。位置编码与输入嵌入相加,为模型提供了必要的顺序信息。

💥并行性和计算效率: 

  • RNN和LSTM:由于它们的循环结构,RNN和LSTM在处理序列时必须按照顺序逐个处理元素,这限制了它们的并行计算能力。因此,在处理长序列时,RNN和LSTM可能会面临计算效率的问题。
  • Transformer:Transformer通过自注意力机制实现了并行处理序列中所有元素的能力。这意味着Transformer可以同时处理序列中的所有元素,大大提高了计算效率。这种并行性使得Transformer在处理长序列时具有优势。

💥依赖关系捕捉: 

  • RNN和LSTM:RNN和LSTM主要通过循环结构来捕捉序列中的短期依赖关系。然而,由于梯度消失和梯度爆炸的问题,它们在处理长序列时可能无法有效地捕捉长期依赖关系。
  • Transformer:Transformer通过自注意力机制可以捕捉序列中的长期依赖关系。自注意力机制允许模型在处理序列中的每个元素时都考虑到其他所有元素的信息,这使得Transformer在处理长序列时具有更好的性能。

输出部分

  • 线性层:将解码器输出的向量转换为最终的输出维度
  • softmax层:将线性层的输出转换为概率分布

编码器部分 

  1. 编码器结构:编码器由N个编码器层堆叠而成,这种多层堆叠的设计有助于模型捕捉更复杂的特征和信息。

  2. 编码器层的组成:每个编码器层都由两个子层连接结构组成,这种双层设计使得模型能够在不同的抽象层次上处理信息。

  3. 第一个子层连接结构:包含多头自注意力子层,该子层通过自注意力机制捕捉序列内部的依赖关系。此外,还包含规范化层,用于加速训练并提高模型的泛化能力。残差连接则有助于解决深度神经网络中的梯度消失问题,使网络更容易训练。

  4. 第二个子层连接结构:包含一个前馈全连接子层,该子层对自注意力子层的输出进行进一步的处理和转换。与第一个子层类似,这里也包含规范化层和残差连接,以提高模型的稳定性和训练效率。

解码器部分

  • 由N个解码器层堆叠而成
  • 每个解码器层由三个子层连接结构组成
  • 第一个子层连接结构包括一个多头自注意力子层和规范化层以及一个残差连接
  • 第二个子层连接结构包括一个多头注意力子层和规范化层以及一个残差连接
  • 第三个子层连接结构包括一个前馈全连接子层和规范化层以及一个残差连接

Transformer模型以其独特的自注意力机制和并行计算能力,为自然语言处理领域带来了革命性的变革。它不仅提高了各项任务的性能,还为未来的研究提供了新的思路和方向。随着技术的不断进步,我们有理由相信,Transformer及其衍生模型将在更多领域发挥巨大作用,推动人工智能的发展进入新的阶段。让我们一起期待Transformer在未来的更多精彩表现吧! 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java:使用shardingSphere访问mysql的分库分表数据

# 创建分库与分表 创建两个数据库【order_db_1、order_db_2】。 然后在两个数据库下分别创建三个表【orders_1、orders_2、orders_3】。 建表sql请参考: CREATE TABLE orders_1 (id bigint NOT NULL,order_type varchar(255) NULL DEFAULT NULL,customer_id bigi…

快速学习Java的多维数组技巧

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

Unity3D测量面积和角度实现方法(二)

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、unity测量面积👉1-1 视频效果👉1-2 先创建预制体👉1-3 在创建LineRenderer预制体👉1-4 代码如下 👉二、测量平面和测量空间切换&…

java---程序逻辑控制(详解)

目录 一、概述二、顺序结构三、分支结构3.1 if语句3.1.1 语法格式13.1.2 语法格式23.1.3 语法格式3 3.2 练习3.2.1 判断一个数字是奇数还是偶数3.2.2 判断一个数字是正数,负数,还是零3.2.3 判断一个年份是否为闰年 3.3.switch语句 四、循环结构4.1 while…

远程工作岗位机会

电鸭:​​​​​​https://eleduck.com/?sortnew电鸭社区是具有8年历史的远程工作招聘社区,也是远程办公互联网工作者们的聚集地。在社区,我们进行有价值的话题讨论,也分享远程、外包、零活、兼职、驻场等非主流工作机会。「只工…

最好用的搜题软件大学?8个公众号和软件推荐清单! #知识分享#知识分享#经验分享

今天,我将分享一些受欢迎的、被大学生广泛使用的日常学习工具,希望能给你的学习生活带来一些便利和启发。 1.彩虹搜题 这个是公众号 一款专供大学生使用的搜题神器专注于大学生校内学习和考研/公考等能力提升 下方附上一些测试的试题及答案 1、行大量…

【C++】B树

概念 实现 二叉搜索树的插入(非递归) 二叉搜索树的中序遍历 二叉搜索树的查找(非递归) 二叉搜索树的删除(非递归) 二叉搜索树的查找(递归) 拷贝构造函数 赋值运算符重载 三、…

三星系统因何而成?或许是因为吞噬了第四颗恒星

相比于其他的类似星体,这个特殊的三星系统拥有更大更紧密的星体。 三星 天文学家发现了前所未见的三星系统。相比于其他典型的三星系统,这一三星系统拥有更大的体积,并且排列也更加紧密,这也使得这一系统更加特别。科学家推测&am…

好用的Web数据库管理工具推荐(ChatGPT 4o的推荐是什么样?)

在现代数据管理和开发中,Web数据库管理工具变得越来越重要。这些工具不仅提供了直观的用户界面,还支持跨平台操作,方便用户在任何地方进行数据库管理。 目录 1. SQLynx 2. phpMyAdmin 3. Adminer 4. DBeaver 5 结论 以下是几款推荐的Web…

操作系统安全:Windows系统安全配置,Windows安全基线检查加固

「作者简介」:2022年北京冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础对安全知识体系进行总结与归纳,著作适用于快速入门的 《网络安全自学教程》,内容涵盖系统安全、信息收集等…

数据结构与算法笔记:基础篇 - 红黑树(上):为什么工程中都用红黑树这种二叉树?

概述 上两篇文章,我们依次讲解了树、二叉树、二叉查找树。二叉查找树是最常用的一种二叉树,它支持快速插入、删除、查找操作,各个操作的时间复杂度跟树的高度成正比,理想情况下,时间复杂度是 O ( l o g n ) O(logn) …

如何用R语言ggplot2画折线图

文章目录 前言一、数据集二、ggplot2画图1、全部代码2、细节拆分1)导包2)创建图形对象3)主题设置4)轴设置5)图例设置6)颜色7)保存图片 前言 一、数据集 数据下载链接见文章顶部 数据&#xff1a…

网络数据包抓取与分析工具wireshark的安及使用

WireShark安装和使用 WireShark是非常流行的网络封包分析工具,可以截取各种网络数据包,并显示数据包详细信息。常用于开发测试过程中各种问题定位。 1 任务目标 1.1 知识目标 了解WireShark的过滤器使用,通过过滤器可以筛选出想要分析的内容 掌握Wir…

企业微信hook接口协议,ipad协议http,确认群发消息

确认群发消息 参数名必选类型说明uuid是String每个实例的唯一标识,根据uuid操作具体企业微信 请求示例 {"uuid": "d85c7605-ae91-41db-aad5-888762493bac","vids":[],//如果是客户群群发需要填群id"msgid":1097787129…

前端三剑客之JavaScript基础入门

目录 ▐ 快速认识JavaScript ▐ 基本语法 🔑JS脚本写在哪? 🔑注释 🔑变量如何声明? 🔑数据类型 🔑运算符 🔑流程控制 ▐ 函数 ▐ 事件 ▐ 计时 ▐ HTML_DOM对象 * 建议学习完HTML和CSS后再…

手把手带你做一个自己的网络调试助手(4) - 优化完善

了解全部信息,请关注专栏: QT网络调试助手_mx_jun的博客-CSDN博客 优化服务器 1.不能设置随拖动变大: this->setLayout(ui->verticalLayout); 2. 未连接就能发送消息: //在处理新连接槽函数中加入 if(!ui->btnSend->isEnabled()){//只有客户端连接…

【CC精品教程】osbg格式三维实景模型全解

数据格式同样都是osgb,不同软件生产的,建模是参数不一样,还是有很大区别的,本讲进行一一讲解。 文章目录 一、CC生产的osbg1. osgb的文件结构2. metadata.xml是什么?​(1)EPSG模式metadata.xml​(2)EPSG带+模式metadata.xml​(3)ENU模式metadata.xml​(4)LOCAl模式…

《大道平渊》· 拾贰 —— 天下大事必作于细:做好每一件小事,必然大有所成!

《平渊》 拾贰 "天下难事必作于易,天下大事必作于细。" 社群一位大佬最近在研究新项目, 他做事的 "方法论" 令我深受启发。 他在测试项目时, 每一步都做的非常细致: 整个项目的测试都被划分为一件件小事, 然后有条不紊地推进…… …

postgresql之翻页优化

列表和翻页是所有应用系统里面必不可少的需求,但是当深度翻页的时候,越深越慢。下面是几种常用方式 准备工作 CREATE UNLOGGED TABLE data (id bigint GENERATED ALWAYS AS IDENTITY,value double precision NOT NULL,created timestamp with time zon…

matlab 异常值检测与处理——Z-score法

目录 一、算法原理1、算法概述2、主要函数3、参考文献二、代码实现三、结果展示四、相关链接本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 1、算法概述 使用Z分数法,可以找出距离平均值有多少个标准差值…