关于Transfomer的思考

为何诞生

    在说transformer是什么,有什么优势之类的之前,先谈一谈它因何而诞生。transformer诞生最重要的原因是早先的语言模型,比如RNN,由于其本身的训练机制导致其并行度不高,特别是遇到一些长句子的情况下。其次,是由于自注意力的产生。自注意力是什么,Attention Is All You Need原文有一个比较不错的解释:

自注意力机制,是一种将序列中不同位置元素做关联学习进而计算序列表征的方法

     Transformer完全借助自注意力、MLP以及LayerNorm层完成了语言模型的建模工作,完全摈弃了卷积以及递归模型结构。

缩放点积注意力

    transformer的结构没什么可说的,就是encoder+decoder的结构堆叠,这块整体上没有太大创新,创新点在于其encoder和decoder内部使用了自注意力,这个注意力结构的使用使其在目前绝大多数的自然语言处理任务上处于领先地位,这个自注意力即原文所谓的缩放点积注意力(Scaled Dot-Product Attention,下文简称SDPA)。

图1. 缩放点积注意力

    如图1所示,形式化为:

图 2. 缩放点积注意力公式

    点积注意力、加和注意力是普遍使用的两种注意力函数,它们理论计算复杂度一致,但是前者由于高度优化的矩阵运算库的存在,使其在实际应用过程中更加高效。值得注意的一点是softmax的输入为什么要除以一个常数,可以参考原文从统计视角给出的解释。

图 3. 尺度缩放的原因

 

多头自注意力 

    作者认为,基于单一的SDPA不足以发挥其优势,通过执行多次不同的SDPA可以更好的挖掘句子的语义,所以多头自注意力产生了。多头注意力机制能使模型从多个不同的低维表示空间中提取不同的语义信息,它的基本结构如下:

图 4. 多头自注意力

假设现在需要执行SDPA的次数为h,它的基本做法是:

  1.  将Q、K和V分别通过h组不同的线性映射层分别将它们映射为d_kd_k 和 d_v 维;
  2.  对映射完的每一组并行的执行SDPA,产生 d_v 维的输出;
  3.  h组SDPA的输出进行concat操作;
  4.  concat的结果进一步做线性映射得到最终输出;

  从图4可以看出,多头的SDPA操作是并行执行的;同时,原文中将每个头的线性映射层的维度降为了原先单头的 \frac{1}{h}(单头是512),所以最终的时空开销和单头的基本一致。

位置编码

    由于transformer里不再有卷积和递归结构,为了模型能利用序列中不同token的位置信息,需要单独设立一个位置编码embeding,和序列中token的embeding维度一致,因此可以直接做加和操作。

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

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

相关文章

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:ListItem)

用来展示列表具体item,必须配合List来使用。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。该组件的父组件只能是List或者ListItemGroup。 子组件 可以包含单个子组件。 接口 从API…

学习Python,需要知道的经典案例

文章目录 一、Python简介二、Python经典案例1. 猜数字游戏2. 文本文件处理3. 网络爬虫4. 数据可视化5. 电子邮件发送6. 实现一个简单的Web服务器。 三、Python处理IP相关知识点1. 处理IP地址2. 网络编程(TCP/IP)3. 使用第三方库处理IP信息 四、相关链接 …

Mysql与MyBatis

1 Sql语句 增删改查 1.1 建表 -- cmd展示数据库 show databases ; -- cmd登录数据库 mysql localhost -u root -p-- auto_increment 自动增长,每添加一个表项id自动增1 -- char定长字符串 0-255,不足十个字符按十个字符算, varchar变长字符串…

搭建项目后台系统基础架构

任务描述 1、了解搭建民航后端框架 2、使用IDEA创建基于SpringBoot、MyBatis、MySQL、Redis的Java项目 3、以原项目为参照搭建项目所涉及到的各个业务和底层服务 4、以原项目为例,具体介绍各个目录情况并参照创建相关文件夹 1、创建项目后端 BigData-KongGuan …

Transformer的前世今生 day01(预训练、统计语言模型)

预训练 在相似任务中,由于神经网络模型的浅层是通用的,如下图: 所以当我们的数据集不够大,不能产生性能良好的模型时,可以尝试让模型B在用模型A的浅层基础上,深层的部分自己生成参数,减小数据集…

tp8 mpdf 导出pdf

1. 安装mpdf composer require mpdf/mpdf 2. 然后 使用 use mpdf\Mpdf; 或者 require_once __DIR__ . /vendor/autoload.php; 官方文档 mPDF – mPDF 手册 文档里有很多东西 可以自己去研究 3. 编写代码 下载 (支持中文) $mpdf new Mpdf([mode > utf-8,"autoS…

Netty学习——源码篇2 客户端Bootstrap(二)

接上篇 Bootstrap源码-客户端 1 Handler的添加过程 Netty有一个强大和灵活之处就是基于Pipeline的自定义Handler机制。基于此,可以像添加插件一样自由组合各种各样的Handler来完成业务逻辑。例如,需要处理HTTP数据,那么就可以在Pipeline前添…

基于java+springboot+vue实现的电影院选票系统(文末源码+Lw+ppt)23-467

摘 要 时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,电影院选票系统当然不能排除在外。电影院选票系统是在实际应用和软件工程的开发原理之上,运用java语言,前台Vue框…

Hive:数据仓库利器

1. 简介 Hive是一个基于Hadoop的开源数据仓库工具,可以用来存储、查询和分析大规模数据。Hive使用SQL-like的HiveQL语言来查询数据,并将其结果存储在Hadoop的文件系统中。 2. 基本概念 介绍 Hive 的核心概念,例如表、分区、桶、HQL 等。 …

k8s部署hadoop

(作者:陈玓玏) 配置和模板参考helm仓库:https://artifacthub.io/packages/helm/apache-hadoop-helm/hadoop 先通过以下命令生成yaml文件: helm template hadoop pfisterer-hadoop/hadoop > hadoop.yaml用kube…

NodeJs利用腾讯云实现手机发送验证码

本文介绍如何在nodejs实现短信发送,以腾讯云的短信验证为例。 腾讯云中准备工作 首先需要腾讯云的个人或者企业认证的账号,个人会赠送一百条,企业赠送一千条,可以用于测试,地址:腾讯云短信服务。然后需要…

电机学(笔记一)

磁极对数p: 直流电机的磁极对数是指电机定子的磁极对数,也等于电机电刷的对数。它与电机的转速和扭矩有直接关系。一般来说,极对数越多,电机转速越低,扭矩越大,适用于低速、高扭矩的场合;相反&…

免 费 搭 建 多模式商城:b2b2c、o2o、直播带货一网打尽

鸿鹄云商 b2b2c产品概述 【b2b2c平台】,以传统电商行业为基石,鸿鹄云商支持“商家入驻平台自营”多运营模式,积极打造“全新市场,全新 模式”企业级b2b2c电商平台,致力干助力各行/互联网创业腾飞并获取更多的收益。从消…

IonQ最新研究突破!引入光量子纠缠以构建量子计算网络

内容来源:量子前哨(ID:Qforepost) 编辑丨慕一 编译/排版丨沛贤 深度好文:700字丨5分钟阅读 2024年2月22日,美国量子计算公司IonQ宣布,公司研究团队已实现可重复地生成与离子纠缠的光子&#…

Python之Web开发中级教程----Django站点管理

Python之Web开发中级教程----Django站点管理 网站的开发分为两部分:内容发布和公共访问 内容发布是由网站的管理员负责查看、添加、修改、删除数据 Django能够根据定义的模型类自动地生成管理模块 使用Django的管理模块, 需要按照如下步骤操作 : 1.管理界面本地…

图论题目集一(代码 注解)

目录 题目一&#xff1a; 题目二&#xff1a; 题目三&#xff1a; 题目四&#xff1a; 题目五&#xff1a; 题目六&#xff1a; 题目七&#xff1a; 题目一&#xff1a; #include<iostream> #include<queue> #include<cstring> using namespace st…

rviz上不显示机器人模型(模型只有白色)

文档中的是base_footprint&#xff0c;需要根据自己所设的坐标系更改&#xff0c;我的改为base_link 如何查看自己设的坐标系&#xff1a; 这些parent父坐标系就是 同时打开rviz后需要更改成base_link

Java后端八股----JVM篇

上图中线程1&#xff0c;2如果资源被抢占了&#xff0c;则程序计数器记录一下执行的行号&#xff0c;等到资源就绪后会从记录的行号继续向后执行。 Java8把静态变量以及常量放到了线程的本地内存原空间中(避免放在堆中不可控)。 &#x1f446;图中第二种情况不太容易出现…

gPTP简介

1、gPTP&#xff08;generalized precision time protocol&#xff09;广义时钟同步协议 gPTP&#xff08;generalized precision time protocol&#xff09;广义时钟同步协议&#xff0c;即IEEE 802.1AS协议。它是IEEE 1588协议的延伸&#xff0c;可以为TSN提供全局精准…

使用RabbitMQ,关键点总结

文章目录 1.MQ的基本概念2.常见的MQ产品3.MQ 的优势和劣势3.1 优势3.2 劣势 4.RabbitMQ简介4.1RabbitMQ 中的相关概念 1.MQ的基本概念 MQ全称 Message Queue&#xff08;消息队列&#xff09;&#xff0c;是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。…