Transformer 架构—Encoder-Decoder

文章目录

前言

一、Encoder 家族

1. BERT

2. DistilBERT

3. RoBERTa

4. XML

5. XML-RoBERTa

6. ALBERT

7. ELECTRA

8. DeBERTa

二、Decoder 家族

1. GPT

2. GPT-2

3. CTRL

4. GPT-3

5. GPT-Neo / GPT-J-6B

三、Encoder-Decoder 家族

1. T5

2. BART

3. M2M-100

4. BigBird


前言

最初的Transformer是基于广泛应用在机器翻译领域的Encoder-Decoder架构:

Encoder:

将由 token 组成的输入序列转成由称为隐藏状态(hidden state)或者上下文(context)的embedding向量组成的序列。

Decoder:

根据 Encoder 的隐藏状态迭代生成组成输出序列的 token。

从上图我们可以看到:

  • 输入文本被 tokenized 成 token embedding。由于注意力机制不知道 token 的相对位置,因此我们需要一种方法将一些有关 token 位置的信息注入到输入中,以对文本的顺序性质进行建模。因此,token embedding 与包含每个 token  的位置信息的 position embedding 相组合。
  • encoder 由一堆 encoder 层组成,类似于计算机视觉中堆叠的卷积层。decoder也是如此,它有自己的 decoder 层块。
  • encoder 的输出被馈送到每隔 decoder 层,然后 decoder 生成序列中最可能的下一个 token 的预测。然后,此步骤的输出被反馈到 decoder 以生成下一个 token,依次类推,直到到达特殊的序列结束(End of Sequence,EOS)token。以上图为例,想象一下 decoder 已经预测了“Die”和“Zeit”。现在,它将根据这两个预测 token 以及所有 encoder 的输出来预测下一个 token “fliegt”。在下一步中,decoder 继续将“fliegt”作为附加输入。我们重复这个过程,直到 decoder 预测出 EOS token 或者达到最大输出长度限制。

Transformer 架构最初是为机器翻译等序列到序列任务而设计的,但 encoder 和 decoder 块很快就被改编为独立模型。尽管现在有数千种不同的 Transformer 模型,但大多数属于以下三种类型之一:

(1)Encoder-only

这些模型将文本输入序列转换为丰富的数字表示,非常适合文本分类或命名实体识别等任务。BERT(Bidirectional Encoder Representation Transformers)及其变体,例如 RoBERTaDistilBERT,都属于此类架构。在该架构中为给定 token 计算的表示取决于左侧(token之前)和右侧(token之后)的上下文。所以通常称为双向注意力(bidirectional attention)。

(2)Decoder-only

用户给定一段文本提示,这些模型将通过迭代预测最可能出现的下一个单词来自动补充余下的文本。GPT(Generative Pretrained Transformer)模型系列属于此类。在该架构中为给定 token 计算的表示仅取决于左侧上下文。所以通常称为因果注意力(causal attention)或自回归注意力(autoregression attention)。

(3)Encoder-Decoder

它们用于对从一个文本序列到另一个文本序列的复杂映射进行建模,比如机器翻译和文本摘要。除了我们所看到的结合了 encoder 和 decoder 的Transformer 架构之外,BART(Bidirectional Auto-Regressive Transformers)和 T5(Text-To-Text Transfer Transformer)模型也属于此类。

实际上,decoder-only 架构和 encoder-only 架构的应用程序之间的区别有点模糊。例如,GPT 系列中的纯 decoder 模型可以为翻译等任务做好准备,这些任务通常被认为是序列到序列的任务。类似地,像 BERT 这样的纯 encoder 模型可以应用于通常与 encoder-decoder 或纯 decoder 模型相关的摘要任务。

随着时间的推移,三种主要架构都经历了自己的演变。

上图这个家谱只是突出显示了一些架构里程碑。


一、Encoder 家族

第一个基于 Transformer 架构的 encoder-only 模型是 BERT。encoder-only 模型仍然主导着 NLU(Natural Language Understanding)任务(例如文本分类、命名实体识别和问题解答)的研究和行业。接下来简单介绍一下 BERT 模型及其变体:

1. BERT

BERT 的预训练目标有两个:预测文本中的 mask token;确定一个文本段落是否紧跟着另一个文本段落。前一个任务称为 Masked Language Modeling(MLM),后一个称为 Next Sentence Prediction(NSP)。

2. DistilBERT

尽管BERT的预测能力很强,但是由于其庞大的尺寸,我们无法在低延迟要求的生产环境中部署。通过在预训练过程中使用知识蒸馏(knowledge distillation)技术,DistilBERT 可以达到BERT 97% 的性能,但是体积仅有BERT的 40%,速度比BERT快60%。

3. RoBERTa

BERT 发布后的一项研究表明,通过修改预训练方案可以进一步提高其性能。RoBERTa 的训练时间更长、批次更大、训练数据更多,并且它放弃了 NSP 任务。总之,与原始 BERT 模型相比,这些变化显著提高了其性能。

4. XML

在跨语言语言模型 (cross-lingual language model,XLM) 的工作中,探索了构建多语言模型的几个预训练目标,包括来自类 GPT 模型的自回归语言建模和来自 BERT 的 MLM。此外,XLM 预训练论文的作者介绍了翻译语言模型(translation language modeling,TLM),它是 MLM 对多语言输入的扩展。通过对这些预训练任务进行实验,他们在多个多语言 NLU 基准测试以及翻译任务上取得了领先成绩。

5. XML-RoBERTa

继 XLM 和 RoBERTa 的工作之后,XLM-RoBERTa 或 XLM-R 模型通过大规模升级训练数据,使多语言预训练更进一步。使用 Common Crawl 语料库,其开发人员创建了一个包含 2.5TB 文本的数据集;然后他们在这个数据集上用 MLM 训练了一个 encoder。由于数据集仅包含没有并行文本(即翻译)的数据,因此 XLM 的 TLM 目标被删除。这种方法大幅击败了 XLM 和多语言 BERT 变体,尤其是在缺乏足够语料的语言上。

6. ALBERT

ALBERT模型引入了三个变化,使encoder 架构更加高效。首先,它将 token embedding 维度与隐藏维度解耦,从而允许 embedding 维度较小,从而节省参数,尤其是当词汇量变大时。其次,所有层共享相同的参数,这进一步减少了有效参数的数量。最后,NSP目标被句子排序预测取代:模型需要预测两个连续句子的顺序是否交换,而不是预测它们是否属于在一起。这些变化使得用更少的参数训练更大的模型成为可能,并在NLU任务上达到卓越的性能。

7. ELECTRA

标准MLM预训练目标的一个限制是,在每个训练步骤中,仅更新 mask token 的表示,而其他输入token则不更新。为了解决这个问题,ELECTRA使用双模型方法:第一个模型(通常很小)的工作原理类似于标准 masked language model,并预测 mask token。第二个模型称为鉴别器,然后负责预测第一个模型输出中的哪些 token是最初的 mask token。因此,判别器需要对每个 token进行二分类,这使得训练效率提高了30倍。对于下游任务,鉴别器像标准 BERT 模型一样进行微调。

8. DeBERTa

DeBERTa 模型引入了两个架构变化。首先,每个 token 都表示为两个向量:一个表示内容,另一个表示相对位置。通过将 token 的内容与其相对位置分开,自注意力层可以更好地对附近 token 对的依赖性进行建模。另一方面,单词的绝对位置也很重要,尤其是对于解码而言。因此,在 token 解码头的 softmax 层之前添加了绝对 position embedding。DeBERTa 是第一个在 SuperGLUE 基准测试上击败人类基线的模型,SuperGLUE 基准测试是 GLUE 的更困难版本,由多个用于衡量 NLU 性能的子任务组成。

二、Decoder 家族

Transformer decoder 模型的进展在很大程度上是由OpenAI引领的。这些模型非常擅长预测序列中的下一个单词,因此主要用于文本生成任务。它们的进步是通过使用更大的数据集并将语言模型扩展到越来越大的尺寸来推动的。

1. GPT

GPT的引入结合了NLP中的两个关键思想:新颖高效的Transformer decoder 架构和迁移学习。在该设置中,通过 根据先前的单词预测下一个单词来对模型进行预训练。该模型在 BookCorpus 上进行训练,并在分类等下游任务上取得了很好的效果。

2. GPT-2

受到简单且可扩展的预训练方法成功的启发,通过升级原始模型和训练集诞生了 GPT-2。该模型能够生成连贯文本的长序列。由于担心可能被滥用,该模型以分阶段的方式发布,先发布较小的模型,然后发布完整的模型。

3. CTRL

像GPT-2这样的模型可以继续输入序列(也称为提示:prompt)。然而,用户对生成序列的样式几乎没有控制权。CTRL(Conditional Transformer Language)模型通过在序列开头添加“控制 token”来解决此问题。这些允许控制生成文本的样式,从而允许多样化的生成。

4. GPT-3

成功将 GPT 扩展到 GPT-2 后,对不同规模的语言模型行为的全面分析表明,存在简单的幂律来控制计算、数据集大小、模型大小和语言模型性能之间的关系。受这些见解的启发,GPT-2 被放大了 100 倍,生成了具有 1750 亿(175B)个参数的 GPT-3。除了能够生成令人印象深刻的真实文本段落之外,该模型还表现出少量学习能力:通过一些新颖任务的示例(例如将文本翻译为代码),该模型能够在新示例上完成该任务。OpenAI 并没有开源这个模型,我们只能通过 OpenAI API 提供接口来访问 GPT-3。

5. GPT-Neo / GPT-J-6B

GPT-Neo 和 GPT-J-6B 是类似 GPT 的模型,由 EleutherAI 训练,EleutherAI 是一个旨在重新创建和发布 GPT-3 规模模型的研究人员社区。当前模型是完整 175B 模型的较小变体,具有 1.3B、2.7B 和 6B 个参数,与 OpenAI 提供的较小 GPT-3 模型具有竞争力。

三、Encoder-Decoder 家族

尽管使用单个 encoder 或 decoder 堆栈构建模型已变得很常见,但 Transformer 架构有多种 encoder-decoder 变体,它们在 NLU 和 NLG 领域都有新颖的应用:

1. T5

T5 模型通过将所有 NLU 和 NLG 任务转换为文本到文本任务来统一它们。所有任务都被构建为序列到序列的任务,其中采用 encoder-decoder 架构是很自然的。例如,对于文本分类问题,这意味着文本用作encoder 输入,并且 decoder 必须将标签生成为普通文本而不是类别。T5 架构采用原有的 Transformer 架构。使用大型爬网 C4 数据集,通过将所有这些任务转换为文本到文本任务,使用 MLM 以及 SuperGLUE 任务对模型进行预训练。11B 模型在多个基准测试中产生了领先的结果。

2. BART

BART 在 encoder-decoder 架构中结合了 BERT 和 GPT 的预训练过程。输入序列会经历几种可能的转换之一,从简单的 mask token 到句子排列、删除 token 和文档旋转。这些修改后的输入通过 encoder 传递,decoder 必须重建原始文本。这使得模型更加灵活,因为可以将其用于 NLU 和 NLG 任务,并且在这两个任务上都实现了领先的性能。

3. M2M-100

通常,翻译模型是针对一种语言对和翻译方向构建的。当然,这并不能扩展到许多语言,此外,语言对之间可能存在共享知识,可用于稀有语言之间的翻译。M2M-100 是第一个可以在 100 种语言之间进行翻译的翻译模型。这可以在稀有语言和代表性不足的语言之间进行高质量翻译。该模型使用前缀 token(类似于特殊的 [CLS] token)来指示源语言和目标语言。

4. BigBird

由于注意力机制的二次内存要求,Transformer 模型的一个主要限制是最大上下文大小。BigBird 通过使用线性扩展的稀疏注意力形式来解决这个问题。这允许上下文从大多数 BERT 模型中的 512 个 token 大幅扩展至 BigBird 中的 4096 个。这在需要保留长依赖性的情况下特别有用,例如在文本摘要中。

参考:PyTorch研习社

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

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

相关文章

每日五道java面试题之spring篇(三)

目录: 第一题 ApplicationContext和BeanFactory有什么区别?第二题 Spring中的事务是如何实现的?第三题 Spring中什么时候Transactional会失效?第四题 Spring容器启动流程是怎样的?第五题 Spring Boot、Spring MVC 和 S…

Sip网络广播号角,sip广播系统公共广播系统有源喇叭

Sip网络广播号角,sip广播系统公共广播系统有源喇叭 SV-7044VP网络有源喇叭,具有10/100M以太网接口,内置高品质扬声器,通过自带放大器播放网络音频,扬声器输出功率高达30W,还支持设置最多10个组播优先区域&…

js如何抛异常,抛自定义的异常

js如何抛异常,抛自定义的异常 最简单的自定义异常 throw "hello" 来自chrome123的控制台的测试 throw "hello" VM209:1 Uncaught hello (匿名) VM209:1 try{ throw "hello";}catch(e){console.log(e);} VM338:1 hello…

nuxt项目搭建

1.先下载nuxt脚手架 yarn create nuxt-app <项目名>&#xff0c;记得安装完项目&#xff0c;npm i,下载node包 目录介绍 components 存放组件分别是头部&#xff08;包含导航&#xff09;和底部 layouts 页面布局&#xff0c;实现一个页面整体架构规则&#xff0c;头…

XTuner InternLM-Chat 个人小助手认知微调实践

要解决的问题&#xff1a; 如何让模型知道自己做什么&#xff0c;是什么样身份。是谁创建了他&#xff01;&#xff01;&#xff01; 概述 目标&#xff1a;通过微调&#xff0c;帮助模型认清了解对自己身份弟位 方式&#xff1a;使用XTuner进行微调 微调前&#xff08;回答…

精致女童时尚穿搭~你想要的我都有哦

不论是版型还是颜色 都绝绝子的一件轻薄外套 整件看着干净利落有设计感 两侧按扣式口袋超级实用的 穿着透气不闷热 搭配各种风格的裤子都一绝

【安卓基础5】中级控件

&#x1f3c6;作者简介&#xff1a;|康有为| &#xff0c;大四在读&#xff0c;目前在小米安卓实习&#xff0c;毕业入职 &#x1f3c6;本文收录于 安卓学习大全持续更新中&#xff0c;欢迎关注 &#x1f3c6;安卓学习资料推荐&#xff1a; 视频&#xff1a;b站搜动脑学院 视频…

无线听觉新体验:南卡、韶音、墨觉骨传导耳机综合评测

作为一个资深的跑步爱好者&#xff0c;我几乎离不开音乐的陪伴。不知道大家有没有同感&#xff0c;有时候一首歌曲就是我坚持下去的动力&#xff0c;尤其是在那段艰难的跑步时刻。但是找到一款既能让我在运动中自由呼吸、又能提供优质音乐体验的耳机&#xff0c;并不是一件容易…

C#,动态规划(DP)丢鸡蛋问题(Egg Dropping Puzzle)的三种算法与源代码

1 扔鸡蛋问题 动态规划&#xff08;Dynamic Programming&#xff0c;DP&#xff09;是运筹学的一个分支&#xff0c;是求解决策过程最优化的过程。20世纪50年代初&#xff0c;美国数学家贝尔曼&#xff08;R.Bellman&#xff09;等人在研究多阶段决策过程的优化问题时&#xf…

船舶制造5G智能工厂数字孪生可视化平台,推进船舶行业数字化转型

船舶制造5G智能工厂数字孪生可视化平台&#xff0c;推进船舶行业数字化转型。随着数字化时代的到来&#xff0c;船舶行业正面临着前所未有的机遇与挑战。为了适应这一变革&#xff0c;船舶制造企业需要加快数字化转型的步伐&#xff0c;提高生产效率、降低成本并增强市场竞争力…

电气机械5G智能工厂数字孪生可视化平台,推进电气机械行业数字化转型

电气机械5G智能工厂数字孪生可视化平台&#xff0c;推进电气机械行业数字化转型。随着科技的不断发展&#xff0c;数字化转型已经成为各行各业发展的重要趋势。电气机械行业作为传统制造业的重要组成部分&#xff0c;也面临着数字化转型的挑战和机遇。为了更好地推进电气机械行…

就业月薪14K!两年后涨到25K! 考研失败后,这个95年小哥哥成功转行软件测试,人生开挂了!

01 考研连续失败 因为没有特别明确的职业规划&#xff0c;加上内心的学历崇拜情节。大学毕业后&#xff0c;我没有选择参加工作&#xff0c;而是毅然选择了加入考研大军。 备考的日子紧张有序&#xff0c;我也一直在题海里废寝忘食的遨游&#xff0c;本以为能顺顺当当地考上自…

Windows环境下查看磁盘层级占用空间的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

生产环境下,应用模式部署flink任务,通过hdfs提交

前言 通过通过yarn.provided.lib.dirs配置选项指定位置&#xff0c;将flink的依赖上传到hdfs文件管理系统 1. 实践 &#xff08;1&#xff09;生产集群为cdh集群&#xff0c;从cm上下载配置文件&#xff0c;设置环境 export HADOOP_CONF_DIR/home/conf/auth export HADOOP_CL…

vue2和vue3 setup beforecreate create生命周期时间比较

创建一个vue程序&#xff0c;vue3可以兼容Vue2的写法&#xff0c;很流畅完全没问题 写了一个vue3组件 <template><div></div> </template><script lang"ts"> import {onMounted} from vue export default{data(){return {}},beforeCr…

解决SpringAMQP工作队列模型程序报错:WARN 48068:Failed to declare queue: simple.queue

这里写目录标题 1.运行环境2.报错信息3.解决方案4.查看解决之后的效果 1.运行环境 使用docker运行了RabbitMQ的服务器&#xff1a; 在idea中导入springAMQP的jar包&#xff0c;分别编写了子模块生产者publisher&#xff0c;消费者consumer&#xff1a; 1.在publisher中运行测试…

【机器学习的主要任务和应用领域】

曾梦想执剑走天涯&#xff0c;我是程序猿【AK】 目录 简述概要知识图谱 简述概要 了解机器学习的主要任务和应用领域 知识图谱 机器学习的主要任务可以分为监督学习、无监督学习和半监督学习。 监督学习&#xff1a;这是机器学习中最为常见的一类任务&#xff0c;基于已知类…

R语言数据分析(五)

R语言数据分析&#xff08;五&#xff09; 文章目录 R语言数据分析&#xff08;五&#xff09;前言一、什么是整洁的数据二、延长数据2.1 列名中的数据值2.2 pivot_longer()的处理原理2.3 列名中包含许多变量的情况2.4 列名同时包含数据和变量 三、扩宽数据3.1 pivot_wider的处…

力扣226 翻转二叉树 Java版本

文章目录 题目描述解题思路代码 题目描述 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1] 示例 2&#xff1a; 输入&#xff1a;root…

[云原生] 二进制k8s集群(下)部署高可用master节点

在上一篇文章中&#xff0c;就已经完成了二进制k8s集群部署的搭建&#xff0c;但是单机master并不适用于企业的实际运用&#xff08;因为单机master中&#xff0c;仅仅只有一台master作为节点服务器的调度指挥&#xff0c;一旦宕机。就意味着整个集群的瘫痪&#xff0c;所以成熟…