深入了解 Transformers – Part 1: 介绍 Transformer 模型

news2024/11/16 12:49:38

动动发财的小手,点个赞吧!

自从最新的Large Language Models(LLaM)发布以来,如OpenAI的GPT系列、开源模型Bloom或谷歌发布的LaMDA等,Transformer展现出了巨大的潜力,成为了深度学习的前沿架构楷模。

尽管已经有几篇文章介绍了 transformer 及其背后的数学原理,但在本文[1]中,我想结合我认为最好的方法和我的观点,给出一个完整的概述。自己的观点和使用 Transformer 模型的个人经验。

本文试图对 Transformer 模型进行深入的数学概述,展示其强大的来源并解释其每个模块背后的原因。

自然语言处理(NLP)简介

在开始使用 Transformer 模型之前,有必要了解创建它们的任务,即处理文本。

由于神经网络使用 Tensor ,为了将文本输入神经网络,我们必须首先将其转换为数字表示。将文本(或任何其他对象)转换为数字形式的行为称为嵌入。理想情况下,嵌入式表示能够再现文本的特征,例如单词之间的关系或文本的情感。

有几种方法可以执行嵌入,本文的目的不是解释它们,而是我们应该了解它们的一般机制和它们产生的输出。如果您不熟悉嵌入,只需将它们视为模型架构中将文本转换为数字的另一层。

最常用的嵌入作用于文本的单词,将每个单词转换为一个真正高维度的向量(将文本划分为应用嵌入的元素称为标记)。在原始论文中,每个标记/单词的嵌入维度为 512。重要的是要注意向量模数也已归一化,因此神经网络能够正确学习并避免梯度爆炸。

嵌入的一个重要元素是词汇。这对应于可用于提供 Transformer 模型的所有标记(单词)的集合。词汇不一定只是句子中使用的词,而是与其主题相关的任何其他词。例如,如果 Transformer 将用于分析法律文件,则与官僚行话相关的每个词都必须包含在词汇表中。请注意,词汇表越大(如果它与 Transformer 任务相关),嵌入越能够找到标记之间的关系。

除了单词之外,词汇表和文本序列中还添加了一些其他特殊标记。这些标记标记文本的特殊部分,如开头 、结尾 或填充 (添加填充以使所有序列具有相同的长度)。特殊标记也作为向量嵌入。

在数学中,嵌入空间构成了一个归一化向量空间,其中每个向量对应一个特定的标记。向量空间的基础由嵌入层能够在标记之间找到的关系确定。例如,一个维度可能对应以-ing结尾的动词,另一个维度可能是具有积极意义的形容词等。此外,向量之间的角度决定了标记之间的相似性,形成具有语义关系的标记簇。

alt

虽然只提到了文本处理的任务,但实际上 Transformer 是为处理任何类型的顺序数据而设计的。

Transformer 的工作流程

alt

上图是近几年深度学习研究中被复制最多的图表之一。它总结了 Transformers 的完整工作流程,代表了流程中涉及的每个部分/模块。

更高的透视图将 Transformers 分为 Encoder(图中左侧蓝色方块)和 Decoder(右侧蓝色方块)。

为了说明 Transformers 的工作原理,我将使用从西班牙语到英语的文本翻译示例任务。

  • 编码器的目标是找到输入序列的标记之间的关系,即要翻译成西班牙语的句子。它获取西班牙语句子作为输入(在应用嵌入之后)并输出由注意力机制加权的相同序列。从数学上讲,编码器在西班牙语标记的嵌入空间中执行转换,根据向量在句子含义中的重要性对向量进行加权。

我还没有定义注意力是什么,但基本上可以将其视为一个函数,该函数返回一些系数,这些系数定义了句子中每个单词相对于其他单词的重要性。

  • 另一方面,解码器首先将翻译后的英文句子作为输入(原图中的输出),应用注意力,然后在另一个注意力机制中将结果与编码器的输出结合起来。直观地,解码器学习将目标嵌入空间(英语)与输入嵌入空间(西班牙语)相关联,以便它找到两个向量空间之间的基础变换。
alt

为清楚起见,我将使用符号源输入来指代编码器的输入(西班牙语的句子),使用目标输入来指代解码器中引入的预期输出(英语的句子)。该符号将在本文的其余部分保持一致。

现在让我们仔细看看转换器的输入(源和目标)和输出:

正如我们所见,Transformer 输入文本被嵌入到高维向量空间中,因此输入的不是句子,而是向量序列。然而,存在更好的数学结构来表示向量序列,即矩阵!更进一步,在训练神经网络时,我们不会逐个样本地训练它,而是使用包含多个样本的批次。生成的输入是形状为 [N, L, E] 的张量,其中 N 是批量大小,L 是序列长度,E 是嵌入维度。

alt

至于 Transformer 的输出,应用了一个 Linear + Softmax 层,它产生一些输出概率(回想一下,Softmax 层输出定义类的概率分布)。 Transformer 的输出不是翻译后的句子,而是词汇表的概率分布,它决定了概率最高的单词。请注意,对于序列长度中的每个位置,都会生成概率分布以选择具有更高概率的下一个标记。由于在训练期间 Transformer 一次处理所有句子,我们得到一个 3D 张量作为输出,它表示形状为 [N, L, V] 的词汇标记的概率分布,其中 N 是批量大小,L 是序列长度,并且V 词汇长度。

alt

最后,预测的标记是概率最高的标记。

如 NLP 简介部分所述,嵌入后的所有序列都具有相同的长度,这对应于 Transformer 可以引入/产生的最长可能序列。

训练与预测

对于本文第 1 部分的最后一节,我想强调一下 Transformer 的训练阶段与预测阶段。

如前一节所述,Transformer接受两个输入(源和目标)。在训练期间,Transformer 能够一次处理所有输入,这意味着输入张量仅通过模型一次。输出实际上是上图中呈现的 3 维概率张量。

alt

相反,在预测阶段,没有目标输入序列来提供给 Transformer(如果我们已经知道翻译的句子,我们就不需要深度学习模型来进行文本翻译)。那么,我们输入什么作为目标输入呢?

正是在这一点上,Transformer的自回归行为暴露无遗。 Transformer 可以在编码器中一次处理源输入序列,但对于解码器的模块,它会进入一个循环,在每次迭代中它只生成序列中的下一个标记(词汇标记上的行概率向量)。然后将具有较高概率的所选标记再次输入为目标输入,因此 Transformer 始终根据其先前的预测来预测下一个标记(因此具有自回归意义)。但是在第一次迭代时输入的第一个标记应该是什么?

还记得 NLP 简介部分的特殊标记吗?作为目标输入引入的第一个元素是标记句子开头的开始标记 。

alt
alt

总结

这部分介绍了更好地理解 Transformers 模型所必需的第一个概念和概念。在下一部分中,我将深入研究大部分数学所在的 Transformers 架构的每个模块。

本文背后的主要思想和概念是:

  • 转换器在嵌入系统定义的归一化向量空间中工作,其中每个维度代表标记之间的特征。
  • Transformers 输入是形状为 [N, L, E] 的张量,其中 N 表示批量大小,L 是序列长度(由于填充,每个序列都是常数),E 表示嵌入维度。
  • 当编码器在源嵌入空间中寻找标记之间的关系时,解码器的任务是学习从源空间到目标空间的投影。
  • Transformer 的输出是一个线向量,其长度等于词汇表的大小,其中每个系数代表相应索引标记被放置在序列中下一个的概率。
  • 在训练期间,Transformer 一次处理所有输入,输出一个 [N, L, V] 张量(V 是词汇表长度)。但是在预测过程中,Transformer是自回归的,总是根据他们之前的预测逐个标记地预测。

Reference

[1]

Source: https://towardsdatascience.com/transformers-in-depth-part-1-introduction-to-transformer-models-in-5-minutes-ad25da6d3cca

本文由 mdnice 多平台发布

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

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

相关文章

easyexcel内容追加与单元格合并

这里的需求是,如果表格不存在,则新建表格,并填入数据,如果表格存在,那么就追加内容,并且支持单元格合并。 内容追加,需要分两种方式插入,第一种就是没有表格,需要生成表头…

内网渗透之横向移动ipc

0x00 内网横向移动介绍 内网横向移动是什么 在内网渗透中,当攻击者获取到内网某台机器的控制权后,会以被攻陷的主机为跳板,通过收集域内凭证等各种方法,访问域内其他机器,进一步扩大资产范围。通过此类手段&#xff0…

SpringCloud_Eureka服务的注册与发现

文章目录 一、微服务的理论1、微服务和分布式的区别2、微服务的拆分规范和原则 二、微服务的注册与发现(Eureka)1、Spring Cloud Eureka的概念2、构建聚合父工程3、搭建Eureka服务4、搭建Eureka服务的提供者5、创建Eureka服务的消费者 三、Eureka的其他功能1、服务的剔除和自保…

DC-6靶机通关详解

信息收集 漏洞发现 发现无法访问web 加个hosts 这题类似那个dc2还是dc3,网站长的一样 wordPress5.1.1 上wpscan扫 enumrate一下user 看看能不能弱口令 测了wp给的那几个用户,都不能弱口令,dirsearch也没扫到什么有价值的路径 尝试ssh弱口令 没爆出来,回官网看了下描述 确实…

基于药效团的药物设计(Pharmacophore Construction)

基于药效团的药物设计(Pharmacophore Construction) 药效团模型不仅仅利用分子拓扑学相似性而且利用了基团的功能相似性,从而运用了生物电子等排体(bioisosterism)的概念使得模型更加可靠。基于药效团的虚拟筛选的方法…

华为OD机试真题(Java),最小步骤数(100%通过+复盘思路)

一、题目描述 一个正整数数组 设为nums&#xff0c;最大为100个成员&#xff0c;求从第一个成员开始正好走到数组最后一个成员所使用的最小步骤数。 要求&#xff1a; 第一步 必须从第一元素起 且 1<第一步步长<len/2 (len为数组长度)&#xff1b;从第二步开始只能以所…

Algo C++:课程介绍

目录 课程介绍前言1. 课程特色2. 课程前言3. 具备条件4. 预期的收获 课程介绍 前言 手写AI推出的全新面向AI算法的C课程 Algo C&#xff0c;链接。记录下个人学习笔记&#xff0c;仅供自己参考。 本次课程主要是课程介绍 课程大纲可看下面的思维导图 1. 课程特色 案例驱动 讲解…

Kubernetes(k8s)

Kubernetes(k8s) 前言 ​ 在学习过程中&#xff0c;我们经常会遇到遗忘的问题。为了避免忘记&#xff0c;多复习是非常必要的。复习可以帮助我们巩固知识&#xff0c;加深记忆&#xff0c;提高学习效率。因此&#xff0c;我们应该养成良好的复习习惯&#xff0c;定期回顾所学…

ai免费写作在线平台-ai免费伪原创文章生成器软件

ai伪原创能检测出来吗 人工智能技术可以检测伪原创&#xff0c;但是不是所有的伪原创都可以被检测出来。 现在有许多自然语言处理&#xff08;NLP&#xff09;算法和技术可以用来检测伪原创内容&#xff0c;例如文本相似度比较算法&#xff0c;语气分析算法等。这些算法可以检…

iptables移植+内核修改

iptables移植&#xff0c;交叉编译后的文件&#xff0c;如果交叉编译工具一致可以直接使用-嵌入式文档类资源-CSDN文库 移植iptables过程中出现一些问题&#xff0c;这里记录一下 Iptables是用户态提供的更改过滤规则的便捷工具&#xff0c;通过使用这个工具&#xff0c;可以…

openEuler-linux下部署zabbix-超级详细

一、准备工作 下载&#xff1a;zabbix包 地址&#xff1a;下载Zabbix 准备2台openEuler-linux虚拟机&#xff1a; linux-1&#xff1a;当服务器端 IP地址&#xff1a;192.168.100.100 修改hosts文件 [rootzbx ~]# vim /etc/hosts 192.168.100.100 zbx.xx.cn linux-2&…

Spring Boot Web请求响应

在上一讲&#xff0c;学习了Spring Boot Web的快速入门以及Web开发的基础知识&#xff0c;包括HTTP协议以及Web服务器Tomcat等内容。基于SpringBoot的方式开发一个web应用&#xff0c;浏览器发起请求 /hello 后 &#xff0c;给浏览器返回字符串 “Hello World ~”。运行启动类启…

【Spring篇】IOC相关内容

&#x1f353;系列专栏:Spring系列专栏 &#x1f349;个人主页:个人主页 目录 一、bean基础配置 1.bean基础配置(id与class) 2.bean的name属性 3.bean作用范围scope配置 二、bean实例化 1.构造方法实例化 2.分析Spring的错误信息 3.静态工厂实例化 4.实例工厂 5.FactoryBean 三…

Python爬虫基础-如何获取网页源代码

Python爬虫基础-如何获取网页源代码 网络爬虫(Web Crawler)&#xff0c;又称网页蜘蛛(Web Spider)&#xff0c;是一种按照一定的规则&#xff0c;自动地抓取万维网信息的程序或者脚本。爬虫程序根据一组特定的规则自动的访问网站&#xff0c;然后抓取网页上的内容&#xff0c;进…

布隆过滤器详解

介绍 本文全部代码地址 布隆过滤器是一种高效的数据结构,用于判断一个元素是否存在于一个集合中.它的主要优点是速度快,空间占用少,因此在需要快速判断某个元素是否在集合中的场合得到广泛引用. 布隆过滤器就是一个大型的位数组和几个不一样的无偏hash函数.所谓无偏就是能够…

boot-admin整合flowable官方editor-app源码进行BPMN2-0建模(续)

书接上回 项目源码仓库github 项目源码仓库gitee boot-admin 是一款采用前后端分离模式、基于SpringCloud微服务架构的SaaS后台管理框架。系统内置基础管理、权限管理、运行管理、定义管理、代码生成器和办公管理6个功能模块&#xff0c;集成分布式事务Seata、工作流引擎Flow…

ARM学习

计算机硬件基础* 文章目录 知识体系嵌入式系统分层应用开发和底层开发Linux内核五大功能ARM体系结构和接口技术底层知识的学习方法计算机基础知识 计算机的进制计算机的组成总线三级存储结构地址空间CPU原理概述 简述为什么地址总线为32bit的处理器的地址空间为4G简述CPU执行…

Java应用的优雅停机

一. 优雅停机的概念 优雅停机一直是一个非常严谨的话题&#xff0c;但由于其仅仅存在于重启、下线这样的部署阶段&#xff0c;导致很多人忽视了它的重要性&#xff0c;但没有它&#xff0c;你永远不能得到一个完整的应用生命周期&#xff0c;永远会对系统的健壮性持怀疑态度。…

面试被经常问的SQL窗口函数

面试题 有一张“学生成绩表”&#xff0c;包含4个字段&#xff1a;班级id、学生id、课程id、成绩。 问题1&#xff1a; 求出每个学生成绩最高的三条记录 问题2&#xff1a; 找出每门课程都高于班级课程平均分的学生 技术提升 技术要学会分享、交流&#xff0c;不建议闭门造…

图像去模糊:MSSNet 模型详解

本内容主要介绍实现单图像去模糊的 MSSNet 模型。 论文&#xff1a;MSSNet: Multi-Scale-Stage Network for Single Image Deblurring 代码&#xff08;官方&#xff09;&#xff1a;https://github.com/kky7/MSSNet 1. 背景 单图像去模糊旨在从模糊图像&#xff08;由相机抖…