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

news2024/11/29 18:06:20

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.coloradmin.cn/o/2249908.html

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

相关文章

Java——多线程案例

目录 一、单例模式 1.饿汉模式 2.懒汉模式 3.线程安全问题 4.解决线程安全问题(懒汉模式) 二、阻塞式队列 1.什么是阻塞队列 2.生产者消费模型 生产者消费者模型意义: 1.解耦合 2.削峰填谷 3.标准库中的阻塞队列 三、定时器 1.定时器是什么 2.标准库中的…

AI 声音:数字音频、语音识别、TTS 简介与使用示例

在现代 AI 技术的推动下,声音处理领域取得了巨大进展。从语音识别(ASR)到文本转语音(TTS),再到个性化声音克隆,这些技术已经深入到我们的日常生活中:语音助手、自动字幕生成、语音导…

Linux服务器安装mongodb

因为项目需要做评论功能,领导要求使用mongodb,所以趁机多学习一下。 在服务器我们使用docker安装mongodb 1、拉取mongodb镜像 docker pull mongo (默认拉取最新的镜像) 如果你想指定版本可以这样 docker pull mongo:4.4&#…

Java基础 设计模式——针对实习面试

目录 Java基础 设计模式单例模式工厂模式观察者模式策略模式装饰器模式其他设计模式 Java基础 设计模式 单例模式 单例模式(Singleton Pattern) 定义:确保一个类只有一个实例,并提供一个全局访问点来访问这个实例。适用场景&…

分布式搜索引擎之elasticsearch单机部署与测试

分布式搜索引擎之elasticsearch单机部署与测试 1.部署单点es 1.1.创建网络 因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络: docker network create es-net1.2.加载镜像 这里我们采用elasticsearch的7.12.1版本的…

【工具】JS解析XML并且转为json对象

【工具】JS解析XML并且转为json对象 <?xml version1.0 encodingGB2312?> <root><head><transcode>hhhhhhh</transcode></head><body><param>ccccccc</param><param>aaaaaaa</param><param>qqqq<…

CSDN设置成黑色背景(谷歌 Edge)

一.谷歌浏览器 浏览器地址输入&#xff1a;Chrome://flags搜索框输入&#xff1a;enable-force-dark将default 改成 enabled&#xff0c;点击重启浏览器 二.Edge浏览器 浏览器地址输入&#xff1a;edge://flags搜索里面输入Auto Dark Mode for Web Contents将default 改成 e…

【动手学电机驱动】STM32-FOC(8)MCSDK Profiler 电机参数辨识

STM32-FOC&#xff08;1&#xff09;STM32 电机控制的软件开发环境 STM32-FOC&#xff08;2&#xff09;STM32 导入和创建项目 STM32-FOC&#xff08;3&#xff09;STM32 三路互补 PWM 输出 STM32-FOC&#xff08;4&#xff09;IHM03 电机控制套件介绍 STM32-FOC&#xff08;5&…

OGRE 3D----3. OGRE绘制自定义模型

在使用OGRE进行开发时,绘制自定义模型是一个常见的需求。本文将介绍如何使用OGRE的ManualObject类来创建和绘制自定义模型。通过ManualObject,开发者可以直接定义顶点、法线、纹理坐标等,从而灵活地构建各种复杂的几何体。 Ogre::ManualObject 是 Ogre3D 引擎中的一个类,用…

【网络安全 | 漏洞挖掘】绕过SAML认证获得管理员面板访问权限

未经许可,不得转载。 文章目录 什么是SAML认证?SAML是如何工作的?SAML响应结构漏洞结果什么是SAML认证? SAML(安全断言标记语言)用于单点登录(SSO)。它是一种功能,允许用户在多个服务之间切换时无需多次登录。例如,如果你已经登录了facebook.com,就不需要再次输入凭…

AI自动化剪辑工具:可将长视频中精彩部分提取合成短视频

最近&#xff0c;我发现了一款特别适合当下短视频潮流的自动化工具&#xff0c;它能够让我们轻松从长视频中剪辑出精彩片段&#xff0c;并快速生成适合分享的短视频。 这款工具叫 AI Youtube Shorts Generator&#xff0c;是一个开源项目&#xff0c;特别适合那些喜欢制作短视…

Windsurf可以上传图片开发UI了

背景 曾经羡慕Cursor的“画图”开发功能&#xff0c;这不Windsurf安排上了。 Upload Images to Cascade Cascade now supports uploading images on premium models Ask Cascade to build or tweak UI from on image upload New keybindings Keybindings to navigate betwe…

(二)Sping Boot学习——Sping Boot注意事项

1.springboot默认是扫描的类是在启动类的当前包或者下级包。 2.运行报错 ERROR&#xff1a;An incompatible version [1.2.33] of the Apache Tomcat Native library is installed, while Tomcat requires version [1.2.34] 网上试了很多方法&#xff0c;直接重新安装更新版…

Elasticsearch:Retrievers 介绍

检索器&#xff08;retrievers&#xff09;是 Elasticsearch 中搜索 API 中添加的新抽象层。它们提供了在单个 _search API 调用中配置多阶段检索管道的便利。此架构通过消除对复杂搜索查询的多个 Elasticsearch API 调用的需求&#xff0c;简化了应用程序中的搜索逻辑。它还减…

Ubuntu下的Doxygen+VScode实现C/C++接口文档自动生成

Ubuntu下的DoxygenVScode实现C/C接口文档自动生成 1、 Doxygen简介 Doxygen 是一个由 C 编写的、开源的、跨平台的文档生成系统。最初主要用于生成 C 库的 API 文档&#xff0c;但目前又添加了对 C、C#、Java、Python、Fortran、PHP 等语言的支持。其从源代码中提取注释&…

Css—实现3D导航栏

一、背景 最近在其他的网页中看到了一个很有趣的3d效果&#xff0c;这个效果就是使用css3中的3D转换实现的&#xff0c;所以今天的内容就是3D的导航栏效果。那么话不多说&#xff0c;直接开始主要内容的讲解。 二、效果展示 三、思路解析 1、首先我们需要将这个导航使用一个大…

快速理解微服务中Fegin的概念

一.由来 1.在传统的架构里面&#xff0c;我们是通过使用RestTemplate来访问其他的服务&#xff0c;但是这种方式就存在了一个很大的缺陷&#xff0c;也就是被调用方如果发生了服务的迁移(IP和端口发生了变化)&#xff0c;那么调用方也需要同步的在代码里面进行修改&#xff0c;…

【Git】Git 完全指南:从入门到精通

Git 完全指南&#xff1a;从入门到精通 Git 是现代软件开发中最重要的版本控制工具之一&#xff0c;它帮助开发者高效地管理项目&#xff0c;支持分布式协作和版本控制。无论是个人项目还是团队开发&#xff0c;Git 都能提供强大的功能来跟踪、管理代码变更&#xff0c;并保障…

Spring Web MVC(详解中)

文章目录 Spring MVC&#xff08;中&#xff09;RESTFul风格设计RESTFul风格概述RESTFul风格特点RESTFul风格设计规范RESTFul风格好处RESTFul风格实战需求分析RESTFul风格接口设计后台接口实现 基于RESTFul风格练习&#xff08;前后端分离模式&#xff09;案例功能和接口分析功…

什么是GAN?

一、基本概念 生成对抗网络&#xff08;Generative Adversarial Network&#xff0c;GAN&#xff09;是一种由两个神经网络共同组成深度学习模型&#xff1a;生成器&#xff08;Generator&#xff09;和判别器&#xff08;Discriminator&#xff09;。这两个网络通过对抗的方式…