【Transformer】深入理解Transformer模型1——初步认识了解

前言

Transformer模型出自论文:《Attention is All You Need》 2017年

近年来,在自然语言处理领域和图像处理领域,Transformer模型都受到了极为广泛的关注,很多模型中都用到了Transformer或者是Transformer模型的变体,而且对于很多任务,使用加了Transformer的模型可以获得更好的效果,这也证明了Transformer模型的有效性。

由于Transformer模型内容较多,想要深入理解该模型并不容易,所以我分了大概4篇博客来介绍Transformer模型,第一篇(也就是本篇博客)主要介绍Transformer模型的整体架构,对模型有一个初步的认识和了解;第二篇是看了b站李宏毅老师的Transformer模型讲解之后,做的知识总结(内容比较多,会分成两篇博客);第三篇从代码的角度来理解Transformer模型。

目前我只完成了前两篇论文,地址如下,之后完成第三篇会进行更新。

第一篇:【Transformer】深入理解Transformer模型1——初步认识了解

第二篇:【Transformer】深入理解Transformer模型2——深入认识理解(上)-CSDN博客

第三篇:【Transformer】深入理解Transformer模型2——深入认识理解(下)-CSDN博客

第四篇:


初步认识

        之前的RNN模型记忆长度有限且无法并行化,只有计算完ti时刻后的数据才能计算ti+1时刻的数据,但Transformer都可以做到。

        本文提出了一个完全基于注意力机制的网络结构transformer来处理序列相关问题,跟以往不同,没有用到CNN和RNN的结构,将encoder-decoder中的循环层替换成了multi-head attention机制,且能够实现并行化操作提高模型效率,同时能够捕捉序列中各个位置之间的相对关系,进而更好地对序列进行建模。

        具体来说,自注意力机制允许模型同时计算输入序列中所有位置之间的关系权重,进而加权得到每个位置的特征表示。在Transformer模型中,子注意力机制被运用在了Encoder和Decoder两个部分中,分别用于编码输入序列和生成输出序列。

注意:transformer的并行化主要体现在self-attention模块上,在encoder端其可以并行处理整个序列,而不像RNN、LSTM那样要一个token一个token的从前往后计算。

        此外,本文还提出了一种新的训练方法,称为“无序列信息的训练(Training without sequence information)”,其基本思想是将输入序列中的每个位置看作独立的词向量,而不考虑它们在序列中的位置信息。通过这种方式,可以避免序列中的位置信息对模型训练的影响,提高模型的泛化性能。

具体结构介绍:

Encoder:

        Encoder的作用是将输入序列编码成一个高维向量表示,该向量表示将被输入到Decoder中用于生成输出序列。Encoder包括多个Encoder层,每个Encoder层由两个子层组成:多头自注意力机制和前馈网络。

(1)多头自注意力机制:

        多头自注意力机制(multi-head self-attention)是transformer模型的核心部分,其作用是从输入序列中学习并计算每个位置与其他位置(包括自身)之间的相关度。具体来说,多头自注意力机制将输入序列中的每个位置看作一个向量,然后对这些向量进行相似度计算,得到每个位置与其它位置(包括自身)之间的相关度。

        多头自注意力机制将输入序列分别映射成多个维度相同的向量,然后分别应用自注意力机制,得到多个输出向量,最后将这些输出向量拼接起来,得到最终的向量表示。这种分头处理的方法可以使模型更好地捕捉不同方面的特征,从而提高模型的表现。

(2)前馈网络:

        前馈网络(feedforward network)是Encoder层的另一个子层,其作用是对多头自注意力机制的输出向量进行非线性变换。前馈网络由两个线性变换和一个激活函数组成,其中线性变换将输入向量映射到一个高维空间,激活函数将这个高维向量进行非线性变换,最后再将其映射回原始维度。

Decoder:

        Decoder的作用是生成输出序列,它包括多个Decoder层,每个Decoder层由三个子层组成:多头自注意力机制、多头注意力机制和前馈网络。

(1)多头自注意力机制:

        多头自注意力机制在Decoder中的作用与Encoder中类似,不同的是,它只关注当前时刻之前的位置。这种机制可以帮助模型更好地捕捉输入序列中的信息,并在生成输出序列时保留这些信息。

        masked的作用就像是在进行解码的时候遮住了后面顺序的向量,只考虑前面已经出现的特征(因为解码的时候是一个一个输出的,在解前面特征的时候没有办法把后i按未解码的部分考虑进来,这和Encoder不一样)。

(2)多头注意力机制:

        多头注意力机制(multi-head attention)是Decoder中的另一个子层,其作用是计算当前时刻的输入与输入序列之间的关系,并根据这些关系计算出当前时刻的上下文向量表示

        多头注意力机制将输入序列的向量表示与当前时刻的输入向量表示进行相似度计算,得到每个位置(输入序列中的)与当前时刻输入的相关度。然后,根据这些相关度计算当前时刻的上下文向量表示,用于生成输出序列。与多头自注意力机制类似,多头注意力机制也采用了分头处理的方式,从而更好地捕捉不同方面的特征

(3)前馈网络:

        前馈网络在Decoder中的作用与Encoder中类似,其作用是对多头自注意力机制和多头注意力机制的输出向量进行非线性变换。前馈网络同样由两个线性变换和一个激活函数组成,其中线性变换将输入向量映射到一个高维空间,激活函数将这个高维向量进行非线性变换,最后再将其映射回原始维度。

(4)损失函数:

        Transformer模型使用了交叉熵损失函数(cross-entropy loss)作为优化目标,其目标是最小化模型生成的序列与目标序列之间的差异。具体来说,对于给定的输入序列和目标序列,Transformer模型通过最大化目标序列中每个位置的条件概率来生成输出序列

总结:

        Transformer模型通过引入自注意力机制和多头注意力机制来替代传统的RNN和CNN,从而提高了模型的表现。同时,Transformer模型还采用了分头处理和残差连接等技术,进一步提高了模型的效率和表现。该模型在机器翻译等任务中取得了极高的性能,成为自然语言处理领域的经典模型之一。

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

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

相关文章

ElasticSearch--基本操作

ElasticSearch 完成ES安装 http://101.42.93.208:5601/app/dev_tools#/console 库的操作 创建索引库 请求方式:PUT 请求路径:/索引库名,可以自定义 请求参数:mapping映射 PUT /test {"mappings": {"propertie…

计算机硬件 4.3显示器

第三节 显示器 一、基本概念 1.定义:将电信号转换为可以直接看到的图像的最基本输出设备。 2.分类:按显示色彩分:单色显示器、彩色显示器。 按显示原理分:CRT显示器、LCD显示器、LED显示器、OLED显示器。 3.原理结构&#xff…

【Oracle】 Oracle Sequence 性能优化

Sequence是很简单的,如果最大程度利用默认值的话,我们只需要定义sequence对象的名字即可。在序列Sequence对象的定义中,Cache是一个可选择的参数。默认的Sequence对象是有cache选项的,默认取值为20。这个默认值对于大多数情况下都…

云原生|kubernetes|kubernetes资源备份和集群迁移神器velero的部署和使用

前言: kubernetes集群需要灾备吗?kubernetes需要迁移吗? 答案肯定是需要的 那么,如何做kubernetes灾备和迁移呢?当然了,有很多的方法,例如,自己编写shell脚本,或者使用…

2023年江苏省职业院校技能大赛高职组“软件测试”赛项接口测试答案报告(含术语)

2023年江苏省职业院校技能大赛高职组“软件测试”赛项接口测试答案报告 接口测试要求: 1、执行接口测试 本部分按照软件接口测试文档要求,执行接口测试;使用接口测试工具PostMan,编写脚本、配置参数、执行接口测试并且截图。截图需粘贴在接口测试总结报告中。接口测试具体…

06-C++ 模板

模板、类型转换 模板 1. 简介 一种用于实现 通用编程 的机制。 将 数据类型 可以作为参数进行传递 。 通过使用模板&#xff0c;我们可以编写可复用的代码&#xff0c;可以适用于多种数据类型。 c模板的语法使用尖括号 < > 来表示泛型类型&#xff0c;并使用关键字…

啊?这也算事务?!

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…

Java中的Optional类使用技巧

在Java中&#xff0c;Optional 是一个可以为null的容器对象。如果值存在则isPresent()方法返回true&#xff0c;调用get()方法会返回该对象。 使用Optional可以有效地防止NullPointerException。 下面是一些使用Optional的技巧&#xff1a; 创建Optional对象&#xff1a; Opt…

php-m和phpinfo之间不一致的问题的可能原因和解决办法

1.不同的 PHP配置文件: php -m 和 phpinfo 可能会使用不同的 PHP 配置文件。确保它们都使用相同的配置文件。你可以在命令行中使用 php --ini 来查找当前使用的配置文件位置&#xff0c;并在 phpinfo 中查看 Loaded Configuration File 来确保它们相同。 2.不同的 PHP 版本:确…

uni-app封装表格组件

组件代码&#xff1a; <template><view><uni-table class"tableBox" border stripe emptyText""><!-- 表头行 --><uni-tr class"tableTr"><uni-th :sortable"item.sortable" :class"item.sort…

【人工智能新闻】2023年人工智能热门新闻

欢迎收看我们的特别版时事通讯&#xff0c;重点报道“2023年人工智能热门新闻”今年是人工智能领域的里程碑&#xff0c;展示了重塑技术和我们日常生活的突破性进步和创新。从大型企业投资到革命性的技术发布&#xff0c;2023年的每个月都带来了非凡的成就。 加入我们&#xf…

什么是CAS,什么是AQS,两者到底有什么区别

首发2023-12-29 12:41yuan人生 CAS和AQS在java多线程编程中经常会涉及到&#xff0c;在许多面试的时候也会经常问到。但很多同学却不了解他们&#xff0c;那我们来一起看看什么是CAS&#xff0c;什么是AQS&#xff0c;两者到底有什么区别。 详见&#xff1a;https://www.touti…

用 Python 提取某一个公众号下的所有文章

当我们想要提取某一个公众号下的所有文章时&#xff0c;我们可以借助微信公众平台的开放接口&#xff0c;通过Python编写一个爬虫程序来实现。下面是一个示例代码&#xff0c;以及如何将其转化为一篇详细的微信公众号推文文章。 1. 导入所需库 首先&#xff0c;我们需要导入所…

LLM提示词工程学习_Day01

LLM提示词工程学习_Day01 安装学习环境基础Conda环境安装安装Python安装所需的包Jupyter Notebook 安装获取OpenAI API KEY&#xff0c;并写入工程目录里的.env文件进入Jupyter&#xff0c;先跑一段代码 安装学习环境 基础Conda环境安装 conda环境安装&#xff0c;miniconda也…

序列化机制以及应用场景

当谈到 Java 编程语言时&#xff0c;序列化机制是一个重要而又常见的概念。它允许对象在网络上传输或者保存到持久存储设备中。Java 提供了一个内建的序列化机制&#xff0c;它可以将对象转换为字节流&#xff0c;这个过程称为序列化&#xff0c;同时也能从字节流中重新构建对象…

go-carbon v2.3.1 发布,轻量级、语义化、对开发者友好的 Golang 时间处理库

carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库&#xff0c;支持链式调用。 目前已被 awesome-go 收录&#xff0c;如果您觉得不错&#xff0c;请给个 star 吧 github.com/golang-module/carbon gitee.com/golang-module/carbon 安装使用 Golang 版本大于…

AI大模型:无需训练让LLM支持超长输入

显式搜索: 知识库外挂 paper: Unleashing Infinite-Length Input Capacity for Large-scale Language Models with Self-Controlled Memory System 看到最无敌的应用&#xff0c;文本和表格解析超厉害https://chatdoc.com/?viaurlainavpro.com ChatGPT代码实现: GitHub - ar…

【neo4j】desktop下载

【neo4j】desktop下载 https://neo4j.com/download/ 点击download&#xff0c;填写表格 之后就可以正常使用了

设计模式之装饰器模式

装饰器模式 文章目录 装饰器模式定义优缺点优点缺点 示例代码示例代码地址 定义 装饰模式&#xff08;Decorator Pattern&#xff09;是一种比较常见的模式&#xff0c;其定义如下&#xff1a; Attach additional responsibilities to an object dynamically keeping the same…

智慧园区物联综合管理平台感知对象管理能力简述

物联感知对象管理, 不局限于物理传感设备, 还包括物联业务对象, 平台提供标准的设备建模能力以及标准的物联设备、 第三方物联系统SDK接入方案等; 实现对感知对象运行、 报警、 故障状态的反馈以及物联感知对象全生命周期信息管理。 基础定义配置 平台提供物联网目感知对…