Self-attention Transformer

news2024/9/29 17:24:55

参考资料:

  • 《机器学习》李宏毅

1 Self-attention

当模型输入为长度不定的向量序列时(如一段文字、一段语音、图模型),要求模型输出为等长的向量序列(序列标注)时,可以使用 Self-attention

Self-attention 的基本结构为:

image-20230701211329965 image-20230701211455006

模型的输入为一整个向量序列, q 1 = W q a 1 q^1=W^q a^1 q1=Wqa1 k 1 = W k a 1 k^1=W^k a^1 k1=Wka1 v 1 = W k a 1 v^1=W^k a^1 v1=Wka1 α 1 , 1 = q 1 k 1 \alpha_{1,1}=q^1 k^1 α1,1=q1k1 经过 Softmax后得到 α 1 , 1 ′ \alpha'_{1,1} α1,1 ;模型的参数为 W q , W k , W v W^q,W^k,W^v Wq,Wk,Wv 。用矩阵表示上述运算:

image-20230701212302214

Self-attention 机制通过 W q , W k , W v W^q,W^k,W^v Wq,Wk,Wv 引入了输入向量之间的关系,那么如何表示向量之间的多种关系呢?答案是用 Multi-head Self-attention:

image-20230701212847339

最终,模型输出为 b i = W o ( b i , 1 , b i , 2 ) b^i=W^o(b^{i,1},b^{i,2}) bi=Wo(bi,1,bi,2) ,式中“ ( ) () ()”表示串接。

不难看出,虽然 Self-attention 引入了向量之间的关系,但却没有引入向量的位置信息(如句子的第一个单词为动词的概率较小),这需要通过 Positional Encoding 来解决 。

Self-attention也可以用于图像处理(如把图片看作 RGB 三维向量的序列)。理论上可以证明,CNN 是 Self-attention 的特例,在训练集足够大时,Self-attention 能表现得更好。

2 Transformer

Transformer 用于解决 Seq2Seq 问题(如语音辨识、文字翻译、生成文章摘要等)。解决 Seq2Seq 问题的模型有一个基本架构:

image-20230702203330383

其中,Encoder 的输出和 Input 是等长的,Output 的长度是由模型决定的。Transformer 的 encoder 如下图所示:

image-20230702203455370 image-20230702203602334

Transformer 的 Decoder 主要有两种模式,分别为 AT 和 NAT ,这里先介绍效果比较好的 AT :

image-20230702204009867

如上图所示,Decoder 最开始接受 Encoder 的输出和一个 BEGIN 作为输入,输出为一个向量,然后根据输出向量选择可能性最大的字,并将该字加入到 Decoder 的输入中,以此类推,直到 Decoder 输出的向量最可能为 END 为止。

NAT的结构为:

image-20230702204354638

需要说明的是,NAT 同样需要接收 Encoder 的输出作为输入,但 NAT 的 Decoder 的所有输出是并行产生的。

image-20230702204547015

可以看出,除红框外,Decoder 和 Encoder 的工作几乎相同。需要说明的是,Decoder 里用到的 Masked Multi-Head Attention 只考虑了每个向量与其前面的向量的关系,这与 AT 的工作模式一致。红框部分主要做了如下图的工作:

image-20230702204952630

Transformer 在训练时,会给 Decoder 真实的输入:

image-20230702205128607

2051733.png" alt=“image-20230702205128607” style=“zoom:67%;” />

Transformer 的小技巧:Copy Mechanism、Guide Attention、Beam Search

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

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

相关文章

文件的概念 + 文件的相对/绝对路径 + 文件IO字符流 / 字节流的读写操作 (java)

文章目录 前言一、文件是什么1.文件的概念2.文件路径1.绝对路径2.相对路径 二、针对文件的IO1.File类2.对文件内容的读写操作1.针对文本文件—— 字符流输入流 Reader类输出流 Writer类 2.针对二进制文件—— 字节流输入流 InputStream类输出流 OutputStream类 总结 前言 本人…

《Reinforcement Learning: An Introduction》第7章笔记

Chapter 7 n-step Bootstrapping 本章的n-step TD方法是前两章的Monte Carlo 方法和one-step TD方法的推广。它使自举法在多个时间步内进行,解决了前两章中的更新时间步不灵活的问题。 7.1 n-step TD Prediction 在用策略 π \pi π下生成的采样回合序列来估计 v…

UE5 MetaHuman SDK插件的使用【一、编辑器创建音波与蓝图创建获取音波,音波与嘴唇的同步】

目录 打开插件 创建音频 编辑器这直接创建音频: 蓝图中创建和获取音频: 唇语: 声音与嘴唇同步: 方法一【效果不是很好】: 方法二【效果很好,但有一段时间延迟在处理】: 逻辑&#xff1…

Spring Boot 中的微服务架构:原理和使用

Spring Boot 中的微服务架构:原理和使用 什么是微服务架构? 微服务架构是一种软件架构模式,它将一个应用程序分解成一组小的、松散耦合的服务。每个服务都有独立的进程和数据存储,可以独立地开发、部署、测试和扩展。这种架构模…

最新AI创作系统ChatGPT网站源码+新增GPT联网功能+支持GPT4+支持ai绘画+实时语音识别输入

最新AI创作系统ChatGPT网站源码新增GPT联网功能支持GPT4支持ai绘画实时语音识别输入 一、AI创作系统二、系统介绍三、系统程序下载四、安装教程五、其他主要功能展示六、更新日志 一、AI创作系统 提问:程序已经支持GPT3.5、GPT4.0接口、支持新建会话,上…

常见面试题之ThreadLocal的理解

1. ThreadLocal概述 ThreadLocal是多线程中对于解决线程安全的一个操作类,它会为每个线程都分配一个独立的线程副本从而解决了变量并发访问冲突的问题。ThreadLocal同时实现了线程内的资源共享 案例:使用JDBC操作数据库时,会将每一个线程的…

常微分方程的解题思路

通解:独立常数的个数等于微分方程的阶数,独立常数的个数实际上就是 c 1 , c 2 , . . . , c n c_1,c_2,...,c_n c1​,c2​,...,cn​是数目 所以补 C C C也是关键的一步,而且未必是 C C C,也可以是 ln ⁡ C \ln C lnC之类的&…

HPM6750系列--第六篇 创建自己的工程

一、目的 细心的朋友可能会发现官方提供了HPM-Sdk仓库,示例代码都是作为一个文件夹的形式放在此仓库下,我们之前都是直接拷贝里面的工程进行演示。 下面我们就具体来分析一下hello_world工程的文件组成,这样我们就可以创建自己的工程。 二、…

vscode里vue文件内<template>标签报错

发现只要把文件名使用驼峰命名法,把Login.vue改为LoginView.vue就不报错了加个大写的View就没有了。 官方参考文档:vue/multi-word-component-names | eslint-plugin-vue

说说@EnableConfigurationProperties那点事

两者的对比 ConfigurationProperties 使用ConfigurationProperties的时候,把配置类的属性与yml配置文件绑定起来的时候,还需要加上Component注解才能绑定并注入IOC容器中,若不加上Component,则会无效。 EnableConfigurationPro…

Mybatis 入门及实践

Mybatis 入门及实践 文章目录 Mybatis 入门及实践前言一. 简介二. 入手案例2.1 前置准备2.1.1 Maven依赖2.1.2 sql准备2.1.3 Log4j2 配置1. Maven引入2. log4j2.xml 2.2 代码流程构建步骤2.2.1 Mybatis前置知识2.2.2 步骤流程2.2.3 代码实现 三. XML映射器前置代码3.1 select3.…

【网络编程】网络编程套接字(一)

文章目录 网络编程预备知识认识端口号理解源端口号和目的端口号认识TCP协议和UDP协议网络字节序sockaddr结构1.socket 常见API2.sockaddr结构 网络编程预备知识 认识端口号 端口号(port)是传输层协议的内容. 端口号是一个2字节16位的整数; 端口号用来标识一个进程, 告诉操作系…

Linux :LNMP(源码包安装)

Linux 虚拟机 VMware:安装centos7_鲍海超-GNUBHCkalitarro的博客-CSDN博客 物理机 linux:真机安装centos linux(突发事件:解决卡在安装界面){寻找镜像--u启制作--引导u盘--解决卡在安装界面--安装配置}_安装centos7卡…

Linux--文件/目录权限

看懂权限: 拥有者:文件属于谁 所属组:文件属于哪个组 other:不属于上面两种的任何一个,就是other 图示: 分析: ①第一列: d:目录 -:普通文件 p:管道文件 b:块设备 c:字符设备 l:链接…

数学建模概论

1、从现实对象到数学模型 我们常见的模型 玩具、照片......~实物模型水箱中的舰艇、风洞中的飞机......~物理模型地图、电路图、分子结构图......~符号模型 模型是为了一定目的,对客观事物的一部分进行简缩、抽象、提炼出来的原型的替代物,集中反映了原型…

【C++1】函数重载,类和对象,引用,string类,vector容器,类继承和多态,/socket

文章目录 1.函数重载:writetofile(),Ctrue和false,C0和非02.类和对象:vprintf2.1 构造函数:对成员变量初始化2.2 析构函数:一个类只有一个,不允许被重载 3.引用:C中&取地址&…

沁恒CH32V307VCT6最小系统板/开发板开源

沁恒CH32V307VCT6最小系统板,引出了所有IO口,一个Type-C连接到USB2.0全速OTG接口,一个Flash芯片 型号W25Q64 容量64Mbit 连接到SPI2接口,板上还有TL432电压基准1.25V(实测1.246V左右)可通过跳线连接到PC3的AD13,还有3.…

【c++】并行编程:cuda入门

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍cuda入门。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次更新不迷路&#x1f95e…

测试在 4090 上运行 vicuna-33b 进行推理

测试在 4090 上运行 vicuna-33b 进行推理 今天尝试在 4090 上运行 vicuna-33b 进行推理,使用的是 8bit 量化。 运行命令如下, python3 -m fastchat.serve.cli --model-path lmsys/vicuna-33b-v1.3 --load-8bit结论,使用 8bit 量化在 4090 上…

HTTP概述以及Tomcat概述

HTTP 概念:Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。特点: 基于TCP协议:面向连接、安全基于请求-响应模型的:一次请求对应一次响应HTTP协议是无状态的协议…