【经典论文阅读】Transformer(多头注意力 编码器-解码器)

Transformer

attention is all you need

摘要

完全舍弃循环 recurrence 和卷积 convolutions

只依赖于attention mechanisms

【1】Introduction

完全通过注意力机制,draw global dependencies between input and output

【2】Background

1:self-attention(自注意力)

2:end-to-end memory networks(端到端记忆网络)

【3】Model Architecture

框架图

对编码器和解码器,均使用堆叠的自注意力机制逐点全连接层

encoder-decoder

编码器:将输入序列 x 映射为连续表示的序列 z

  • 输入序列 x :

  • 映射序列 z :

解码器:给定映射序列 z,生成输出序列 y

  • 输出序列 y :

  • 在生成下一个符号时,将之前生成的符号作为额外输入

【3.1】Encoder and Decoder Stacks

Encoder

6个编码层堆叠,每个编码层有2个子层

1个编码层 = 1个多头注意力机制 + 1个逐点全连接前馈网络

每个子层有1次残差连接,并归一化

所有子层和嵌入层的输出维度 d_model = 512

Decoder

6个解码层堆叠,每个解码层有3个子层

1个编码层 = 1个带掩码的多头注意力机制 + 1个多头注意力机制 + 1个逐点全连接前馈网络

每个子层有1次残差连接,并归一化

带掩码 ==> 屏蔽作用,防止位置关注到后续位置

【3.2】Attention

Scaled Dot-Product Attention(缩放点积注意力)

注意力计算公式:

  • Q:查询向量

  • K:键向量

  • V:值向量

最常用的注意力函数

1:additive attention(加法),通过1个隐藏层的前馈网络,计算兼容性函数

2:dot-product attention(点积),存在缩放因子

d_k 值较大时,点积结果会大幅增加,使 softmax 函数趋向极端梯度分布

Multi-Head Attention(多头注意力)

多头 ==> 在不同位置、不同表示子空间中,联合关注信息

多头的计算公式:

投影矩阵为参数矩阵:

头的数量 h = 8

每个头的维度减少,总计算成本与全维度的单头注意力相似

Applications of Attention in our Model

1:在编码器-解码器注意力层中,Q来自前一个解码器层K和V来自编码器的输出

2:编码器包含自注意力层。编码器中每个位置,可关注编码器中前一层的所有位置

3:解码器中的自注意力层。解码器中每个位置,可关注解码器中到当前位置的所有位置Masked

【3.3】Position-wise Feed-Forward Networks(逐点前馈网络)

FFN的计算公式:

2个线性变换,中间使用ReLU激活

  • 第1个线性变换:x·W1 + b1

  • 中间的激活函数:max(0, x·W1 + b1)

  • 第2个线性变换:max(0, x·W1 + b1) W2 + b2

另一种描述方法:两个卷积操作,卷积核大小为1

维度结果:

  • 输入和输出的维度:d_model = 512

  • 中间层的维度:d_ff = 2048

【3.4】Embeddings and Softmax

在2个嵌入层和 Softmax 之前的线性变换之间,共享相同的权重矩阵

在嵌入层中,权重乘以

【3.5】Positional Encoding(位置编码)

位置编码的维度为:d_model,可以和嵌入层相加

位置编码可学习 或 固定

使用不同频率的正弦和余弦函数:

  • pos:位置

  • i:维度

  • 位置编码的每个维度,对应一个正弦波

  • 波长范围:2π ~ 10000*2π

正弦波的原因 ==> 使模型能推广到比训练中遇到的序列长度更长的情况

【4】Why Self-Attention

自注意力的3个动机:

  • 每层的总计算复杂度

  • 并行计算量,用所需的最少顺序操作数衡量

  • 网络中长距离依赖的路径长度

依赖的影响因素:信号在网络中前后传播所需路径的长度。输入和输出序列中任意位置之间的路径越短,学习长距离依赖越容易。

计算复杂度:

  • 当序列长度 n 小于表示维度 d 时,自注意力层比循环层更快

  • 自注意力层,以固定数量的顺序,执行操作连接所有位置

  • 循环层,以O(n)顺序

【5】Training

【5.1】Training Data and Batching

句对按近似序列长度分组

每个训练批包含一组句对,其中包含约 25000 个源词组和 25000 个目标词组

【5.2】Hardware and Schedule

8卡P100

base model:100, 000 step

big model:300, 000 step

【5.3】Optimizer

优化器:Adam

β1 = 0.9

β2 = 0.98

ϵ = 1e-9

学习率变化公式:

  • 热身:线性增加(4000 step)

  • 后期:平方反比例降低

【5.4】Regularization

训练阶段使用的正则:

1:residual dropout(P_drop = 0.1)

2:label smoothing(ϵ_ls = 0.1)

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

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

相关文章

python+django自动化平台(一键执行sql) 前端vue-element展示

一、开发环境搭建和配置 pip install mysql-connector-pythonpip install PyMySQL二、django模块目录 dbOperations ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-313.pyc │ ├── admin.cpython-313.pyc │ ├── apps.cpython-313.pyc │ …

[高阶数据结构五] 图的遍历和最小生成树

1.前言 本篇文章是在认识图的基础上进行叙述的,如果你还不知道什么是图,图的存储结构。那么请你先阅读以下文章。 [高阶数据结构四] 初始图论-CSDN博客 本章重点: 本篇主要讲解及模拟实现图的遍历算法--DFS和BFS,以及最小生成树…

快速排序hoare版本和挖坑法(代码注释版)

hoare版本 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h>// 交换函数 void Swap(int* p1, int* p2) {int tmp *p1;*p1 *p2;*p2 tmp; }// 打印数组 void _printf(int* a, int n) {for (int i 0; i < n; i) {printf("%d ", a[i]);}printf("…

ROS VSCode调试方法

VSCode 调试 Ros文档 1.编译参数设置 cd catkin_ws catkin_make -DCMAKE_BUILD_TYPEDebug2.vscode 调试插件安装 可在扩展中安装(Ctrl Shift X): 1.ROS 2.C/C 3.C Intelliense 4.Msg Language Support 5.Txt Syntax 3.导入已有或者新建ROS工作空间 3.1 导入工作…

Java 基础面试 题(Java Basic Interview Questions)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 本人主要分享计算机核心技…

【排序算法】之快速排序篇

思想&#xff1a; 分而治之&#xff0c;通过选定某一个元素作为基准值&#xff0c;将序列分为两部分&#xff0c;左边的序列小于基准值&#xff0c;右边的序列大于基准值&#xff0c; 然后再分别将左序列和右序列进行递归排序&#xff0c;直至每部分有序。 性质&#xff1a;这…

【数据结构】ArrayList与顺序表

ArrayList与顺序表 1.线性表2.顺序表2.1 接口的实现 3. ArrayList简介4. ArrayList使用4.2 ArrayList常见操作4.3 ArrayList的遍历4.4 ArrayList的扩容机制 5. ArrayList的具体使用5.1 杨辉三角5.2 简单的洗牌算法 6. ArrayList的问题及思考 【本节目标】 线性表顺序表ArrayLis…

基于RNNs+Attention的红点位置检测(pytorch)

文章目录 1 项目背景2 数据集3 思路3.1 一些小实验Ⅰ 多通道输入Ⅱ 位置编码Ⅲ 实验结果 3.2 AttentionⅠ Additive AttentionⅡ Dot-Product AttentionⅢ Scaled Dot-Product AttentionⅣ Multi-Head Attention (self-attention)Ⅴ Criss-Cross AttentionⅥ Result 4 代码 1 项…

RTSP摄像头、播放器为什么需要支持H.265?

H.264还是H.265&#xff1f; 好多开发者在做选RTSP播放器的时候&#xff0c;经常问我们的问题是&#xff0c;用H.264好还是H.265好&#xff1f;本文我们就H.264 和 H.265的主要区别和适用场景&#xff0c;做个大概的交流。 一、压缩效率 H.265 更高的压缩比 H.265 在相同视频…

Qt桌面应用开发 第八天(读写文件 文件编码 文件流)

目录 1.读文件 2.写文件及编码格式 2.1写文件 2.2编码格式 3.文件信息读取 4.文件流 4.1QTextStream 4.2QDataStream 1.读文件 需求&#xff1a;一个pushButton&#xff0c;点击之后可以选择一个txt文件的路径&#xff0c;路径会显示在lineEdit上&#xff0c;txt文件的…

chrome允许http网站打开摄像头和麦克风

第一步 chrome://flags/#unsafely-treat-insecure-origin-as-secure 第二步 填入网址&#xff0c;点击启用 第三步 重启 Chrome&#xff1a;设置完成后&#xff0c;点击页面底部的 “Relaunch” 按钮&#xff0c;重新启动 Chrome 浏览器&#xff0c;使更改生效。

IntelliJ IDEA(2024版) 的安装、配置与使用教程:常用配置、创建工程等操作(很详细,你想要的都在这里)

IDEA的安装、配置与使用&#xff1a; Ⅰ、IDEA 的安装&#xff1a;1、IDEA 的下载地址(官网)&#xff1a;2、IDEA 分为两个版本&#xff1a;旗舰版 (Ultimate) 和 社区版 (Community)其一、两个不同版本的安装文件&#xff1a;其二、两个不同版本的详细对比&#xff1a; 3、IDE…

AI前景分析展望——GPTo1 SoraAI

引言 人工智能&#xff08;AI&#xff09;领域的飞速发展已不仅仅局限于学术研究&#xff0c;它已渗透到各个行业&#xff0c;影响着从生产制造到创意产业的方方面面。在这场技术革新的浪潮中&#xff0c;一些领先的AI模型&#xff0c;像Sora和OpenAI的O1&#xff0c;凭借其强大…

基于SpringBoot实现的民宿管理系统(代码+论文)

&#x1f389;博主介绍&#xff1a;Java领域优质创作者&#xff0c;阿里云博客专家&#xff0c;计算机毕设实战导师。专注Java项目实战、毕设定制/协助 &#x1f4e2;主要服务内容&#xff1a;选题定题、开题报告、任务书、程序开发、项目定制、论文辅导 &#x1f496;精彩专栏…

ComfyUI | ComfyUI桌面版发布,支持winmac多平台体验,汉化共享等技巧!(内附安装包)

ComfyUI 桌面版正式推出&#xff0c;支持 Windows 与 macOS 等多平台&#xff0c;为 AI 绘画爱好者带来全新体验。其安装包便捷易用&#xff0c;开启了轻松上手之旅。汉化共享功能更是一大亮点&#xff0c;打破语言障碍&#xff0c;促进知识交流与传播。在操作上&#xff0c;它…

基于 Vue2.0 + Nest.js 全栈开发的后台应用

☘️ 项目简介 Vue2 Admin 是一个前端基于 Ant Design Pro 二次开发&#xff0c;后端基于 Nest.js 的全栈后台应用&#xff0c;适合学习全栈开发的同学参考学习。 &#x1f341; 前端技术栈&#xff1a; Vue2、Ant Design Vue、Vuex &#x1f341; 后端技术栈&#xff1a; Ne…

RabbitMQ 应用问题

文章目录 1. 幂等性保障什么是幂等性MQ 的幂等性如何处理消息重复的问题1. 全局唯一ID2. 业务逻辑判断 2. 顺序性保障什么是顺序性保障什么情况会打破RabbitMQ的顺序性顺序性保障方案 3. 消息积压什么是消息积压造成消息积压的原因解决消息积压的方案 结论 1. 幂等性保障 什么…

【数据库系列】MySQL基础知识:深入理解DDL、DML与DQL操作

MySQL是一个开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;广泛用于数据存储和管理。理解MySQL的基本操作至关重要&#xff0c;尤其是数据定义语言&#xff08;DDL&#xff09;、数据操作语言&#xff08;DML&#xff09;和数据查询语言&#xff08;DQL…

PAT1085 Perfect Sequence(25)

//判断是否是连续的数 //判断是否只能第一个数是最小值 #include <cstdio> #include <algorithm> typedef long long ll; using namespace std; int n,p; const int maxn 100010; int arr[maxn];int binary(int l, int r, ll tgt){if(arr[n-1] < tgt) return n…

Shell 编程基础知识

为什么要学 Shell&#xff1f; 学一个东西&#xff0c;我们大部分情况都是往实用性方向着想。从工作角度来讲&#xff0c;学习 Shell 是为了提高我们自己工作效率&#xff0c;提高产出&#xff0c;让我们在更少的时间完成更多的事情。 很多人会说 Shell 编程属于运维方面的知…