Transformer的诞生和崛起

图片

智能问答与文本生成:Transformer模型的超能力

©作者|wy

来源|神州问学

一、引言

NLP(自然语言处理)作为人工智能领域的一个重要分支,致力于使计算机能够理解和处理人类语言。随着互联网的发展和信息时代的到来,NLP的应用场景日益广泛,从机器翻译、智能问答到情感分析等,都离不开NLP技术的支持。然而,传统的NLP方法在处理复杂语言现象时存在诸多局限性,如无法准确理解语义、无法捕捉长距离依赖等。

Transformer模型的出现,为NLP领域带来了革命性的变革。它摒弃了传统的循环神经网络(RNN)架构,转而采用自注意力机制,使得模型在处理长序列时能够更有效地捕捉依赖关系。

自2017年诞生以来,Transformer模型迅速崛起,成为NLP领域的主流模型之一。基于Transformer架构的BERT、GPT等模型在各项NLP任务上取得了显著的性能提升,推动了NLP技术的快速发展。

二、简单理解Transformer

传统的方法(RNN)在处理文本时,遵循着逐词处理的模式,就像阅读书籍时,一个词一个词往后读取信息。然而,Transformer模型打破了这一传统,它能够同时处理一句话或一段话中的所有词语,无需像RNN(循环神经网络)那样,每个时间步(t步骤)的计算都必须依赖于前一个时间步(t-1步骤)的结果。

Transformer模型特别擅长于识别并关注句子中不同的重要部分。就像我们在阅读文章时,会自然而然地关注章节标题、关键词或句子中的核心信息一样,Transformer也能通过其注意力机制来聚焦这些关键信息。

尽管Transformer能够一次性处理整个句子中的所有词语,但它无法直接捕获序列中单词的位置信息。为了弥补这一缺陷,Transformer引入了位置编码的概念,这样模型就能够知道每个单词在句子中的具体位置,从而保留了语言的顺序性。

三. Transformer原理

Transformer模型整体架构由一个堆叠的编码器和一个堆叠的解码器组成。编码器负责将输入序列转换为语义表示,解码器则利用这些表示生成目标序列。在训练过程中,解码器通过逐步生成序列的方式,结合编码器的输出和先前生成的部分序列,来预测下一个词或符号。

Transformer编码器(Encoder)

Transformer的编码器负责将输入序列转换为一系列高级抽象的表示,其中包含了输入序列的语义信息和特征。编码器由多层堆叠的相同模块组成,每个模块本身又包含两个主要的子层:

Self-Attention层:

在每个编码器模块中,首先执行的是self-attention操作。这一操作允许模型在每个位置上将输入序列的所有其他位置作为上下文,动态地计算出该位置的表示。具体来说,对于每个位置,通过计算Query、Key和Value向量的线性变换,然后计算它们之间的注意力权重,最终通过加权和来生成该位置的输出表示。

全连接前馈网络:

在经过self-attention层后,每个位置的表示会被送入一个两层的全连接前馈神经网络。这一网络对位置特定的表示进行非线性变换和映射,从而增强模型对每个位置特征的建模能力。

数据解析

就如同任何其他模型,我们在做任何事情之前,首先要做的就是要对数据进行处理。比如说我们要获取以下6个字母的序列"CBABBBC"。

图片

我们将每个字母称为一个标记,模型的不同标记集合构成了它的词汇表:

图片

从该表中,每个标记都被分配一个数字,即其标记索引。现在我们可以将这个数字序列输入到模型中。

位置嵌入(Embedding)

我们将左侧(Token Embed)作为标记嵌入矩阵,将右侧(Position Embed)作为位置嵌入矩阵

图片

我们之前看到了如何使用简单的查找表将标记映射到整数序列。这些整数(即标记索引)是我们第一次也是唯一一次在模型中看到整数。从现在开始,我们使用浮点数(十进制数)。

让我们看一下如何使用第 4 个标记(索引 3)来生成输入嵌入的第 4 列向量。

我们使用标记索引B = 1来选择左边标记嵌入矩阵的第2列。注意,这里我们使用的是基于0的索引,所以第一列位于索引0。

这将生成一个大小为C = 48的列向量,我们称之为标记嵌入。然后选择右边的位置嵌入矩阵的第四列,也会生成一个大小为48的列向量

然后将这两个列向量相加,产生另一个大小为C = 48,我们将其描述为位置嵌入。

图片

我们看到,对输入序列中的所有标记运行此过程会产生一个大小为T x C的矩阵。T代表时间,也就是说,你可以将序列中较晚的标记视为时间较晚的标记。C代表通道,但也被称为“特征”或“维度”或“嵌入大小”。这个长度C是模型的几个“超参数”之一,由设计者在模型大小和性能之间进行权衡而选择。

层归一化(Layer Norm)

输入嵌入矩阵式我们第一个 Transformer 块的输入。Transformer 模块的第一步是将层归一化应用于该矩阵。此操作分别对矩阵的每一列中的值进行归一化。

我们还是先关注第四列(t=3)

图片

我们的目的是使列中的平均值等于 0,标准差等于 1。为此,我们找到该列的这两个量(平均值 (μ)和标准差 (σ)),然后减去平均值并除以标准差。在这里使用的符号是 E[x] 表示平均值,Var[x] 表示方差(长度为C的列)。方差就是标准差的平方。epsilon 项(ε = 1×10 -5)用于防止除以零。

在聚合层中计算并存储这些值,因为我们将它们应用于列中的所有值。

最后,一旦我们有了标准化值,我们就将列中的每个元素乘以学习到的 权重(γ),然后添加偏差(β)值,从而得到我们的标准化值。

我们对输入嵌入矩阵中每一列进行这个操作 ,然后传递到自注意力层。

自注意力层(Self Attention)

自注意力层是Transformer和GPT等模型的核心部分。在这一阶段,输入嵌入矩阵中的列(即嵌入向量)会“互相交流”。在此之前以及在其他所有阶段中,这些列(嵌入向量)都可以被视为独立的。

自注意力层由多个“头”(heads)组成,这些头允许模型并行关注输入序列中的不同位置。现在,我们将专注于其中一个头来解释其工作原理。

在自注意力层中,每个头都会独立地计算注意力权重,这些权重决定了在生成某个位置的输出时,应该给予输入序列中其他位置多大的关注。这个过程涉及三个关键组件:查询(Query)、键(Key)和值(Value),它们都是从输入嵌入矩阵中通过线性变换得到的。

查询(Query,查询向量):用于与键(Key)进行比较,以确定对值(Value)的关注程度。

键(Key,key向量):用于与查询(Query)进行比较,以产生注意力权重。

值(Value,值向量):包含实际的信息,将被用于生成输出。注意力权重将决定在生成输出时,应如何加权这些值。

通过计算查询与所有键的点积,并应用softmax函数,可以得到一个注意力权重分布。这个分布表示了在生成当前位置的输出时,对输入序列中每个位置的关注程度。然后,这个注意力权重分布将被用于对值进行加权求和,从而得到当前位置的输出。

对于自注意力机制,我们不会返回单个条目,而是返回条目的某个加权组合。为了找到该权重,我们取 Q 向量和 K 向量中的每一个向量的点积。我们对该权重进行归一化,最后将其与相应的 V 向量相乘,然后将它们全部相加。

图片

Transformer解码器(Decoder)

Transformer的解码器接受编码器生成的固定长度的向量表示,并将其转换为目标序列。解码器同样由多层堆叠的模块组成,每个模块包含三个主要的子层:

Self-Attention层:

与编码器的self-attention层类似,但在解码器中,这一层通常是掩码的,以确保在预测每个位置时只依赖已生成的部分序列,避免信息泄漏。

编码器-解码器Attention层:

解码器的每个位置通过将编码器的输出作为Query,自身当前位置的表示作为Key和Value,利用编码器的全局信息来进行上下文理解。

全连接前馈网络:

与编码器类似,解码器每个位置都有一个两层的全连接前馈网络,用于增强解码器对每个位置特定特征的建模能力。

解码器也使用残差连接和层归一化来提升模型的训练效果和稳定性。

四、Transformer模型的特点与优势

1. 并行计算能力

传统的RNN模型在处理序列数据时,需要按照序列的顺序逐步进行计算,这限制了其并行计算的能力。而Transformer模型则通过自注意力机制,使得模型在计算每个位置的输出时,都可以并行地考虑整个序列的信息,从而大大提高了模型的计算效率。

2. 长距离依赖捕捉

RNN模型在处理长序列时,由于梯度消失和梯度爆炸的问题,往往难以有效地捕捉长距离依赖关系。而Transformer模型的自注意力机制在计算注意力权重时,会考虑整个输入序列的信息,因此能够很好地捕捉长距离依赖关系。这一特点使得Transformer模型在处理如机器翻译、文本摘要等需要关注长距离依赖关系的任务时,表现出色。

3. 灵活性与通用性

Transformer模型采用了统一的架构来处理不同的NLP任务,只需通过调整输入和输出的形式,就可以适应各种任务的需求。此外,由于Transformer模型的编码器和解码器都是堆叠了多个相同的层,因此可以灵活地调整模型的深度,以适应不同的任务复杂度。这种灵活性和通用性使得Transformer模型成为了一个通用的NLP框架。

4. 高效的训练与推理速度

Transformer模型的计算过程高度并行化,使得模型在训练和推理时都具有很高的效率。同时,由于Transformer模型采用了自注意力机制,避免了RNN的循环结构,因此在计算过程中减少了不必要的计算量,进一步提高了模型的训练和推理速度。

5. 多头注意力机制

Transformer模型中的多头注意力机制使得模型能够同时关注输入序列的多个不同方面,从而得到更加全面和丰富的特征表示。这种机制不仅提高了模型的表示能力,还使得模型在处理复杂NLP任务时更加灵活和有效。

五、Transformer在NLP领域的崛起

1、机器翻译

Transformer模型最初的设计就是为了解决机器翻译问题,它显著提高了机器翻译的性能。基于Transformer的模型,如Google的神经网络机器翻译(GNMT)系统,已经在实际应用中取得了与人类翻译相近甚至更好的效果。

2、文本生成

Transformer模型中的解码器部分可以作为一个强大的文本生成器。通过给定一个初始的输入或上下文,解码器可以生成连贯且富有意义的文本。这种能力使得Transformer模型在文本摘要、对话系统、文本创作等任务中表现出色。

六、总结

Transformer凭借其独特的自注意力机制和高效的并行计算能力,实现了对传统序列模型的革命性突破。它不仅解决了长期以来的依赖问题,还大幅提升了模型训练的效率与性能。从机器翻译到文本生成,从语音识别到图像处理,Transformer的广泛应用已经证明了其强大的泛化能力和适应性。我们甚至可以说Transformer是AI的“宇宙起源”,开启了人工智能的全新时代,它将继续引领着人工智能领域向更高、更远的目标迈进。

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

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

相关文章

蔡依林与彭于晏那些被时光珍藏的甜蜜

蔡依林与彭于晏:那些被时光珍藏的甜蜜近日,一段尘封已久的往事再次被翻出,人们再次关注起这对曾经的“金童玉女”——蔡依林与彭于晏。据台媒报道,他们曾有过一段鲜为人知的恋情,这一消息无疑让粉丝们激动不已&#xf…

示波器探头口碑性价比好的品牌有哪些推荐

示波器探头作为测试测量设备中的重要组成部分,市场上存在多个知名品牌。以下是一些主要的示波器探头品牌及其相关信息: Pintech品致:作为全球示波器探头第一品牌,Pintech品致是示波器探头技术标准倡导者,以及“两点浮…

常见网络攻击威胁分享

今天我来分享一下比较常见的网络攻击形式, ARP 欺骗攻击、CC 攻击和 DDoS 流量攻击是较为常见且危害巨大的攻击方式。 一、ARP欺骗攻击 ARP(AddressResolutionProtocol,地址解析协议)是用于将IP地址转换为MAC地址的协议。ARP欺骗…

《A++ 敏捷开发》- 25A 北京手记

北京是全国文化之都,来到北京晚上有空便去欣赏各类表演节目。连续3晚:听了一场音乐会,看了两套话剧。 国家大剧院管弦乐团演奏马勒第三交响曲 到了最后第六乐章的最后5分钟,两位定音鼓手同步咚、咚、咚、咚,像为步兵…

CCSK认证考试详解:内容、形式、费用及备考指南

CCSK认证考试,也称为CCSK考试,是关于云计算安全的专业认证,由国际云安全联盟(Cloud Security Alliance, CSA)推出。以下是关于CCSK认证考试的详细信息: 考试内容 CCSK考试内容涵盖了云安全的基础知识&…

Linux命令学习2

一.文件基础命令 1.alias-给某个命令取别名 使用方式:alias cl ls -la 说明:将ls -la命令取别名为cl,使用这种方式只是临时将命令取别名,重启中断后,就会失效。 问题1:如何永久性的设置命令的别名? 答…

找不到x3daudio1_7.dll无法运行的原因分析及6种解决方法

当您遇到软件或游戏中提示“x3daudio1_7.dll丢失”的问题时,通常意味着您的系统中缺少这个特定的动态链接库文件。x3daudio1_7.dll 是微软DirectX的一部分,找不到x3daudio1_7.dll会导致软件游戏无法启动运行,下面小编就分享几种靠谱的解决方法…

saas产品运营案例 | 联盟营销计划如何帮助企业提高销售额?

在当今数字化时代,SaaS(软件即服务)产品已成为企业提高效率、降低成本的重要工具。然而,面对激烈的市场竞争,如何有效地推广SaaS产品、提高销售额,成为许多企业面临的挑战。林叔将以ClickFunnels为例&#…

Linux_应用篇(22) 音频应用编程

ALPHA I.MX6U 开发板支持音频,板上搭载了音频编解码芯片 WM8960,支持播放以及录音功能!本章我们来学习 Linux 下的音频应用编程, 音频应用编程相比于前面几个章节所介绍的内容、 其难度有所上升, 但是笔者仅向大家介绍…

【2024最新版】Windows11 23H2中文家庭版:免费下载!

Windows 11 23H2中文家庭版系统拥有稳定的性能、丰富的功能和卓越的安全性,很多用户都喜欢给自己的电脑安装上这个版本。但是,许多新手用户不清楚在哪里才能下载到Windows11家庭版?接下来小编给大家带来2024年最新的Windows 11 23H2中文家庭版…

精通pip:Python开发者的必备技能

目录 1. 安装 pip 2. 使用 pip 安装包 3. 卸载包 4. 更新包 5. 列出已安装的包 6. 搜索包 7. 使用 requirements.txt 文件安装多个包 8. 升级 pip 自身 9. 虚拟环境 10. 冻结依赖 11. 使用国内镜像源 12. 安装特定版本的包 13. 批量安装包 14. 显示帮助信息 15.…

Java字符串处理深度解析:String、StringBuffer与StringBuilder的奥秘

摘要: 本文将深入探讨Java语言中处理字符串的基础构件:String、StringBuffer和StringBuilder。我们将详细讲解它们的内部原理、适用场景、性能对比以及在现代开发实践中的使用策略。同时,结合当下编程行业的热点技术,如微服务架构…

【大数据技术原理与应用(概念、存储、处理、分析与应用)】第2章-大数据处理架构 Hadoop习题与知识回顾

文章目录 单选题多选题知识点回顾什么是Hadoop?Hadoop有哪些特性?Hadoop生态系统是怎么样的?(1) HDFS(2) HBase(3) MapReduce(4) Hive(5) Pig(6) Mahout(7) Zookeeper(8) Flume(9) Sqoop(10) Ambari 单选题 1、下列哪个不属于Hadoop的特性&am…

Oracle 23ai的Windows平台版本发布了

Oracle 23ai free的版本之前只有Linux平台的版本,刚刚增加了Windows平台的版本,这里尝一下鲜。 关于号主,姚远: Oracle ACE(Oracle和MySQL数据库方向)华为云最有价值专家《MySQL 8.0运维与优化》的作者拥有…

多路h265监控录放开发-(15)回放页面中的三个槽函数进行视频的录放(0.1版本项目完结篇)

xviewer.h 中的回放页面的三个槽函数: void SelectCamera(QModelIndex index);//选择摄像机129void SelectDate(QDate date); //选择日期129void PlayVideo(QModelIndex index); //选择时间播放视频129 SelectCamera槽函数解析: 点击相机列表日…

乐鑫ESP32-WROOM-32E模组设备低功耗控制方案,启明云端乐鑫代理商

在数字化浪潮的推动下,物联网(IoT)正迅速成为我们日常生活的一部分。而在这个领域中,ESP32-WROOM-32E模组以其卓越的性能和多功能性,成为了开发者和制造商的选择。 ESP32-WROOM-32E模组集成了ESP32-D0WD-V3芯片&#…

项目maven标志消失,pom文件显示为橙色/橘色标志

背景: 公司开发新的项目,我要拉一下item服务的工程进行开发,等我把代码拉下来发现我idea右侧边栏的maven没了,pox.xml文件也变成了这种橙色/橘色的标志。 分析: 这个是一个不正常的maven项目pom,可能是由于…

OpenVINO在iGPU上加载模型比CPU慢

官方解答地址: 为什么模型加载时间比 CPU 长? (intel.cn) 总结 快速步骤以改善 GPU 上的模型加载时间 说明 将输入模型的中间表示 (IR) 加载到 GPU 需要的时间比将相同模型加载到 CPU 还要长。 解决方法 在应用程序的工作目…

Springboot3+微服务实战12306高性能售票系统

yangzz 分享于 2023-08-14 查看次数: 170 次 所需: 10 积分 1-1 课前必读(不读错过一个亿) 视频: 1-2 课程导学 (14:21) 试看 视频: 1-3 为什么要选择最新版本SpringBoot3和JDK17? (07:0…

哪种领夹麦性价比高,哪款领夹麦克风好用,无线领夹麦克风推荐

​在这个多媒体时代,无线麦克风已经成为我们日常生活的一部分。无论是自媒体创作者、直播主播,还是日常拍摄记录,无线麦克风都扮演着重要角色。挑选无线麦克风时,收音效果和性价比是两大核心考量因素。因此,我特意为大…