背景 | 基于 Transformers 的编码器-解码器模型

news2024/11/25 0:40:58
!pip install transformers==4.2.1
!pip install sentencepiece==0.1.95

Vaswani 等人在其名作 Attention is all you need 中首创了 基于 transformer 的编码器-解码器模型,如今已成为自然语言处理 (natural language processing,NLP) 领域编码器-解码器架构的 事实标准

最近基于 transformer 的编码器-解码器模型训练这一方向涌现出了大量关于 预训练目标函数 的研究, 例如 T5、Bart、Pegasus、ProphetNet、Marge 等,但它们所使用的网络结构并没有改变。

本文的目的是 详细 解释如何用基于 transformer 的编码器-解码器架构来对 序列到序列 (sequence-to-sequence) 问题进行建模。我们将重点关注有关这一架构的数学知识以及如何对该架构的模型进行推理。在此过程中,我们还将介绍 NLP 中序列到序列模型的一些背景知识,并将 基于 transformer 的编码器-解码器架构分解为 编码器解码器 这两个部分分别讨论。我们提供了许多图例,并把 基于 transformer 的编码器-解码器模型的理论与其在 🤗 transformers 推理场景中的实际应用二者联系起来。请注意,这篇博文 解释如何训练这些模型 —— 我们会在后续博文中涵盖这一方面的内容。

基于 transformer 的编码器-解码器模型是 表征学习模型架构 这两个领域多年研究成果的结晶。本文简要介绍了神经编码器-解码器模型的历史,更多背景知识,建议读者阅读由 Sebastion Ruder 撰写的这篇精彩 博文。此外,建议读者对 自注意力 (self-attention) 架构 有一个基本了解,可以阅读 Jay Alammar 的 这篇博文 复习一下原始 transformer 模型。

截至本文撰写时,🤗 transformers 库已经支持的编码器-解码器模型有: T5BartMarianMT 以及 Pegasus ,你可以从 这儿 获取相关信息。

本文分 4 个部分:

  • 背景 - 简要回顾了神经编码器-解码器模型的历史,重点关注基于 RNN 的模型。

  • 编码器-解码器 - 阐述基于 transformer 的编码器-解码器模型,并阐述如何使用该模型进行推理。

  • 编码器 - 阐述模型的编码器部分。

  • 解码器 - 阐述模型的解码器部分。

每个部分都建立在前一部分的基础上,但也可以单独阅读。

背景

自然语言生成 (natural language generation,NLG) 是 NLP 的一个子领域,其任务一般可被建模为序列到序列问题。这类任务可以定义为寻找一个模型,该模型将输入词序列映射为目标词序列,典型的例子有 摘要翻译 。在下文中,我们假设每个单词都被编码为一个向量表征。因此, 个输入词可以表示为 个输入向量组成的序列:

因此,序列到序列问题可以表示为找到一个映射 ,其输入为 个向量的序列,输出为 个向量的目标序列 。这里,目标向量数 是先验未知的,其值取决于输入序列:

Sutskever 等 (2014)  的工作指出,深度神经网络 (deep neural networks,DNN)“ 尽管灵活且强大,但只能用于拟合输入和输出维度均固定的映射。

因此,要用使用 DNN 模型 解决序列到序列问题就意味着目标向量数 必须是先验已知的,且必须独立于输入 。这样设定肯定不是最优的。因为对 NLG 任务而言,目标词的数量通常取决于输入内容 ,而不仅仅是输入长度 。 例如 ,一篇 1000 字的文章,根据内容的不同,有可能可以概括为 200 字,也有可能可以概括为 100 字。

2014 年,Cho 等人 和 Sutskever 等人 提出使用完全基于递归神经网络 (recurrent neural networks,RNN) 的编码器-解码器模型来解决 序列到序列 任务。与 DNN 相比,RNN 支持输出可变数量的目标向量。下面,我们深入了解一下基于 RNN 的编码器-解码器模型的功能。

在推理过程中,RNN 编码器通过连续更新其 隐含状态 对输入序列 进行编码。我们定义处理完最后一个输入向量 后的编码器隐含状态为 。因此,编码器主要完成如下映射:

然后,我们用 来初始化解码器的隐含状态,再用解码器 RNN 自回归地生成目标序列。

下面,我们进一步解释一下。从数学角度讲,解码器定义了给定隐含状态 下目标序列 的概率分布:

根据贝叶斯法则,上述分布可以分解为每个目标向量的条件分布的积,如下所示:

因此,如果模型架构可以在给定所有前驱目标向量的条件下对下一个目标向量的条件分布进行建模的话:

那它就可以通过简单地将所有条件概率相乘来模拟给定隐藏状态 下任意目标向量序列的分布。

那么基于 RNN 的解码器架构如何建模

呢?

从计算角度讲,模型按序将前一时刻的内部隐含状态 和前一时刻的目标向量 映射到当前内部隐含状态 和一个 logit 向量 (下图中以深红色表示):

此处, 为 RNN 编码器的输出。随后,对 logit 向量 进行 softmax 操作,将其变换为下一个目标向量的条件概率分布:

其中

更多有关 logit 向量及其生成的概率分布的详细信息,请参阅脚注 。从上式可以看出,目标向量 的分布是其前一时刻的目标向量 及前一时刻的隐含状态 的条件分布。而我们知道前一时刻的隐含状态 依赖于之前所有的目标向量 ,因此我们可以说 RNN 解码器 隐式 (或间接) 地建模了条件分布。

目标向量序列 的概率空间非常大,因此在推理时,必须借助解码方法对 = 对   进行采样才能高效地生成最终的目标向量序列。

给定某解码方法,在推理时,我们首先从分布 中采样出下一个输出向量; 接着,将其添加至解码器输入序列末尾,让解码器 RNN 继续从 中采样出下一个输出向量 ,如此往复,整个模型就以 自回归 的方式生成了最终的输出序列。

基于 RNN 的编码器-解码器模型的一个重要特征是需要定义一些 特殊 向量,如 (终止符) 和   (起始符) 向量。 向量通常意味着 中止,出现这个即“提示”编码器输入序列已结束; 如果它出现在目标序列中意味着输出结束,一旦从 logit 向量中采样到 ,生成就完成了。 向量用于表示在第一步解码时馈送到解码器 RNN 的输入向量 。为了输出第一个 logit ,需要一个输入,而由于在其之前还没有生成任何输入,所以我们馈送了一个特殊的 输入向量到解码器 RNN。好,有点绕了!我们用一个例子说明一下。

2b2830135731546337466f447ac4d307.png

上图中,我们将编码器 RNN 编码器展开,并用绿色表示; 同时,将解码器 RNN 展开,并用红色表示。

英文句子 I want to buy a car,表示为 ,,,,,,)。将其翻译成德语: “Ich will ein Auto kaufen",表示为 ,,,,,,)。首先,编码器 RNN 处理输入向量 并更新其隐含状态。请注意,对编码器而言,因为我们只对其最终隐含状态 感兴趣,所以我们可以忽略它的目标向量。然后,编码器 RNN 以相同的方式依次处理输入句子的其余部分: 、、、、、,并且每一步都更新其隐含状态,直到遇到向量 。在上图中,连接展开的编码器 RNN 的水平箭头表示按序更新隐含状态。编码器 RNN 的最终隐含状态,由 表示,其完全定义了输入序列的 编码 ,并可用作解码器 RNN 的初始隐含状态。可以认为,解码器 RNN 以编码器 RNN 的最终隐含状态为条件。

为了生成第一个目标向量,将 向量输入给解码器,即上图中的 。然后通过 语言模型头 (LM Head) 前馈层将 RNN 的目标向量进一步映射到 logit 向量 ,此时,可得第一个目标向量的条件分布:

最终采样出第一个目标词 (如图中连接 和   的灰色箭头所示)。接着,继续采样出第二个目标向量:

依此类推,一直到第 6 步,此时从 中采样出 ,解码完成。输出目标序列为 , 即上文中的 “Ich will ein Auto kaufen”。

综上所述,我们通过将分布 分解为 和   的表示来建模基于 RNN 的 encoder-decoder 模型:

其中

在推理过程中,利用高效的解码方法可以自回归地生成目标序列 。

基于 RNN 的编码器-解码器模型席卷了 NLG 社区。2016 年,谷歌宣布用基于 RNN 的编码器-解码器单一模型完全取代其原先使用的的含有大量特征工程的翻译服务 (参见此处)。

然而,基于 RNN 的编码器-解码器模型存在两个主要缺陷。首先,RNN 存在梯度消失问题,因此很难捕获长程依赖性, 参见 Hochreiter 等 (2001)  的工作。其次,RNN 固有的循环架构使得在编码时无法进行有效的并行化, 参见 Vaswani 等 (2017)  的工作。


论文的原话是“ 尽管 DNN 具有灵活性和强大的功能,但它们只能应用于输入和目标可以用固定维度的向量进行合理编码的问题 ”,用在本文时稍作调整。

这同样适用于卷积神经网络 (CNN)。虽然可以将可变长度的输入序列输入 CNN,但目标的维度要么取决于输入维数要么需要固定为特定值。

在第一步时,隐含状态被初始化为零向量,并与第一个输入向量 一起馈送给 RNN。

神经网络可以将所有单词的概率分布定义为 。首先,其将输入 转换为嵌入向量 ,该向量对应于 RNN 模型的目标向量。随后将 送给“语言模型头”,即将其乘以 词嵌入矩阵 (即),得到 和词表 中的每个向量 的相似度得分,生成的向量称为 logit 向量 ,最后再通过 softmax 操作归一化成所有单词的概率分布: 。

波束搜索 (beam search) 是其中一种解码方法。本文不会对不同的解码方法进行介绍,如对此感兴趣,建议读者参考 此文。

Sutskever 等 (2014)  的工作对输入顺序进行了逆序,对上面的例子而言,输入向量变成了 (,,,,,,)。其动机是让对应词对之间的连接更短,如可以使得 和   之间的连接更短。该研究小组强调,将输入序列进行逆序是他们的模型在机器翻译上的性能提高的一个关键原因。

敬请关注其余部分的文章。


英文原文: https://hf.co/blog/encoder-decoder

原文作者: Patrick von Platen

译者: Matrix Yao (姚伟峰),英特尔深度学习工程师,工作方向为 transformer-family 模型在各模态数据上的应用及大规模模型的训练推理。

审校/排版: zhongdongy (阿东)

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

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

相关文章

深度解读生命周期函数

目录 前言什么是生命周期?生命周期的流程创建组件初始化事件和生命周期初始化组件判断渲染结构的数据与模板生成HTML结构渲染HTML结构数据更新初步销毁组件销毁组件 生命周期函数beforeCreatecreatedbeforeMountmountedbeforeUpdateupdatedbeforeDestroydestroyed 前…

视觉SLAM数据集(二):EuRoC DataSet

本文展示了在微型飞行器(MAV)上收集的视觉惯性数据集。数据集包含立体图像、同步 IMU 测量以及精确的运动和结构地面实况。 这些数据集发表于:M. Burri,J. Nikolic,P. Gohl,T. Schneider,J. Reh…

运维监控Zabbix部署——详细图文讲解

运维监控Zabbix部署 简介 Zabbix 由 Alexei Vladishev 创建,目前由其成立的公司—— Zabbix SIA 积极的持续开发更新维护, 并为用户提供技术支持服务。 Zabbix 是一个企业级分布式开源监控解决方案。 Zabbix 软件能够监控众多网络参数和服务器的健康…

StarRocks案例2: 升级后性能变慢

文章目录 一. 问题描述二. 解决方案2.1 从慢查询定位2.2 定位CPU解析时间就的问题 一. 问题描述 2023-05-18 将StarRocks从2.3.0升级到2.5.5。 升级完成后,所有的查询均比较慢,前端报表页面点开也卡。 二. 解决方案 2.1 从慢查询定位 StarRocks慢查询…

智慧档案馆十防一体化建设主要设计依据

1、《中华人民共和国档案法》 2、《中华人民共和国档案实施办法》 3、GB/T 9386-1988《计算机软件测试文件编制规范》 4、GB/T 15532-1995《计算机软件单元测试规范》 5、GB/T 30961-2014 嵌入式软件质量度量 6、GB2421-89 电工电子产品基本环境试验规程 7、GB16796-2009…

阿里影业业绩:2023财年经调整EBITA盈利2.95亿元,同比增加106%

今年以来,社会经济加速恢复,影视业也在加速抓住市场机遇,走进电影院的佳作和消费者都在顺势增长。 5月31日,阿里影业(01060)发布2022/23财年业绩,得益于业务结构的多样化建设及运营效率的持续提…

调试代码可能会成为潜在的安全漏洞

有时候,我们不得不开发一些所谓的”调试用”代码。 但是,不要忘记了,虽然这些调试代码只是用来调试的,但是并不意味着我们就可以忽略掉安全性。 我记得,曾经有一位客户问过如下的问题: 我们正在开发一个后…

一文带你搞懂防盗链

防盗链 举个例子。我们平时在网上看到图片,觉得不错,想要复制地址。有的复制地址后我们可以拿来用,但是有的,就算是复制地址,用到我们自己的img上,还是没效果。 原因是,有的图片所在服务有自己…

跨境电商客户服务五步法

互联网技术的革新与升级对商务客服产生了巨大的影响,过去由在线客服与客户直接电联的单一服务形式被全渠道客服系统所替代。在电子商务时代,商家与客户之间的互动变得尤为重要:一方面,卖家通过分析客户喜好及消费趋向来针对性处理…

WhatsApp-跨境电商必争之地

作为世界上最受欢迎的即时通讯软件,WhatsApp在全球拥有超过20亿的月活跃用户,覆盖180多个国家,每天通过WhatsApp发送的消息数量超过了1000亿条。作为中国企业出海的热门国家,印度、巴西、美国、印尼...同时也是WhatsApp受众排名前…

数据在内存中的存储(2)——浮点数

目录 1、什么是浮点数 2、浮点数与整数存储方式相同吗? 3、浮点数的存储规则 3.1 、国际标准IEEE(电气和电子工程协会) 754 3.2、IEEE 754规定: 3.3、IEEE 754对有效数字M的规定。 3.4、IEE 754对有效数字E的规定 E不全为0或不全…

Day58【单调栈】739.每日温度、496.下一个更大元素 I

739.每日温度 力扣题目链接/文章讲解 视频讲解 暴力解法很容易想到。外层 for 遍历填充 answer,内层 for 针对每一天去寻找下一个更高温度 直接超时 本题可以采用单调栈解决! 什么是单调栈? 从名字上就听的出来,单调栈中…

创建型设计模式05-抽象工厂模式

✨作者:猫十二懿 ❤️‍🔥账号:CSDN 、掘金 、个人博客 、Github 🎉公众号:猫十二懿 抽象工厂模式 1、抽象工厂模式介绍 抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式&#x…

MATLAB按照曲线模型拟合数据

用到了曲线拟合工具箱,如果没有下载需要另外安装: 没有下载的话在命令行内输入cftool不会弹出窗口,而是提示没有这个命令 在菜单栏的APP: 点击获取更多APP: 在弹出的窗口输入Curve Fitting Toolbox 注意这里输入cft…

100种思维模型之多维视角思维模型-70

“多维视角思维模型”让我们用众生之眼看世界,继而看见更真实世界的思维模型。 01、何谓多维度视角思维模型 一、多维度视角 所谓多维视角,指的是除了用自己本能的视角看待问题,还会用360度其他人的视角,如对立面的视角&#xff…

仅用自然语言,让ChatGPT输出连贯的长篇小说!苏黎世联邦理工大学提出RecurrentGPT

夕小瑶科技说 原创 作者 | ZenMoore,Wangchunshu Zhou 前言 ChatGPT 是万能的吗? 显然不是,至少在今天我们所讨论的长文本生成上,ChatGPT 可以说是几乎完全不太可能生成长篇小说。 在某种程度上,这是 Transformer 模…

2自由度并联关节的制作

1. 运动功能说明 2自由度并联关节模组的主要运动方式为用舵机带动连杆摆动。 2. 结构说明 构成本模组的零部件主要是舵机(行程0度~180度)、舵机支架、舵机输出头、连杆、螺丝、螺母等。此模组的机械系统介绍及运动学算法讲解可参考【R306】5自由度并联机…

回收站不见了怎么恢复?3个方法快速解决!

案例:我想把需要删除的软件拖到桌面回收站中进行删除,却发现我电脑桌面上的回收站不见了,有小伙伴知道怎么恢复吗? 在日常使用电脑的过程中,回收站是一个至关重要的功能。当我们删除文件时,它提供了一个安…

git 远端分支管理、仓库迁移:017

1. 在Github上创建分支: 2. 在Github上删除分支: 3. 使用命令来删除远端分支: 如果远端分支发生改变, 需要通过git pull来获取远端最新分支,如下图,就可以看到获取到了最新分支: 查看本地分支和…

springboot+vue新闻稿件java在线投稿管理系统

本文介绍了新闻稿件管理系统的开发全过程。通过分析新闻稿件管理系统管理的不足,创建了一个计算机管理新闻稿件管理系统的方案。文章介绍了新闻稿件管理系统的系统分析部分,包括可行性分析等,系统设计部分主要介绍了系统功能设计和数据库设计…