Re9 Attention is all you need

news2024/11/15 15:43:15
  • 变形金刚,启动!

Abstract

  • 主流序列转录模型基于复杂的循环神经网络和卷积神经网络,包括一个encoder和decoder,同时在这之中使用一个叫注意力机制attention的东西
  • 本文提出了一个简单的网络架构,仅仅使用注意力机制,而没有使用神经网络,实验结果表明效果更好

Conclusion

  • 首次提出仅使用注意力机制的模型transformer,取代了常规使用编码解码的架构模型,全部换成了multi-head self-attention
  • 使用transformer模型训练速度很快,效果也更好
  • 未来可用在其他方向

Introduction

  • 当前主流使用lstm、rnn等模型
  • RNN缺陷在于其为时序模型,在计算第t个词时,必须保证前面 h t − 1 h_{t-1} ht1个词输入完成,导致时间上无法并行
  • 注意力机制已经在RNN中有所使用
  • 提出的transformer不再使用循环机制,可以进行并行运算

Background

  • 一些工作已经使用卷积神经网络替换循环神经网络,然而,对于两个距离较远的像素块需要一层一层的卷积进行处理才能将两个融合在一起,而使用transformer的注意力机制,一次可以看到所有的像素,因此一层就能将整个序列看到,同时,提出了Multi-head attention模拟卷积神经网络多输出通道的效果
  • 自注意力机制是一种将单个序列的不同位置联系起来以计算序列表示的机制。
  • 端到端网络
  • transformer是第一个只依赖于自注意力机制进行encoder、decoder的模型

Model Architecture

  • 当前主流的序列模型都是用编码器解码器结构
    • 编码器会将输入的一组序列 ( x 1 . . . x n ) (x_1...x_n) (x1...xn)表示成一组 ( z 1 . . . z n ) (z_1...z_n) (z1...zn),每一个对应的是x的向量表示
    • 解码器收到z,生成一段长为m的序列,解码时元素是一个一个生成,注意 y 1 . . y t − 1 y_1..y_{t-1} y1..yt1也是 y t y_t yt的输入,叫做自回归auto-regressive
  • transformer使用了编码器解码器架构,将堆叠自注意力机制和point-wise全连接层都加入到了编码解码器中

Encoder-Decoder堆叠

在这里插入图片描述

  • 左侧是encoder由6个堆叠的相同的层构成,可以理解成是N个transformer块,其中每个block由两个子层组成,分别是Multi-head attention和poisition-wise fully connected feed-forward network;类似于MLP,每个子层都有一个残差连接,最后有一个normalization,每一层的的输出维度为512
    在这里插入图片描述

    • batchnorm:每次把一列,即每一个特征取出在小的mini-batch内均值变为0,方差变为1
    • layernorm:每次对一个样本做normalization,即每一行变为均值为0方差为1
    • 可以理解成batchnorm是切出一个特征有多少batch,layernorm是一个batch切出多少feature
      在这里插入图片描述在这里插入图片描述
  • 而对语句的输入来说,通常输入为三维,一个词用向量表示(512),sequence是一句话有几个单词,batch是一共有几句话。LayerNorm 更稳定,不管样本长还是短,均值和方差是在每个样本内计算。
    在这里插入图片描述
    在这里插入图片描述

  • 右侧是解码器,其输入为之前解码器的一些输出作为输入,同样是有N=6个层构成,每个包括三个子层,同样是多头注意力机制,也用了残差连接和layernorm,这里用了一个mask保证在t时刻进行预测时不会看到t时刻之后的输出

Attention

  • attention可以理解成将query、key-value对映射成输出的函数,这些都是向量,output 是 value 的一个加权和,因此,输出的维度 == value 的维度。
  • query查询,key键,value值。查询来自用户输入,键来自词典库,将查询与键相比较,得到相似度权重,由value可数值化运算

吴恩达attention讲解

模型结构

在这里插入图片描述

  • 像这样给定一个很长的法语句子,在神经网络中,这个绿色的编码器要做的就是读整个句子,然后记忆整个句子,再在感知机中传递(to read in the whole sentence and then memorize the whole sentences and store it in the activations conveyed her)。而对于这个紫色的神经网络,即解码网络(the decoder network)将生成英文翻译。人工翻译并不会通过读整个法语句子,再记忆里面的东西,然后从零开始,机械式地翻译成一个英语句子。而人工翻译,首先会做的可能是先翻译出句子的部分,再看下一部分,并翻译这一部分。看一部分,翻译一部分,一直这样下去。你会通过句子,一点一点地翻译,因为记忆整个的像这样的的句子是非常困难的。
  • 在编码解码结构中,会看到它对于短句子效果非常好,于是它会有一个相对高的Bleu分(Bleu score),但是对于长句子而言,比如说大于30或者40词的句子,它的表现就会变差。随着单词数量变化,短的句子会难以翻译,因为很难得到所有词。对于长的句子,效果也不好,因为在神经网络中,记忆非常长句子是非常困难的。
  • 你会见识到注意力模型,它翻译得很像人类,一次翻译句子的一部分。而且有了注意力模型,机器翻译系统的表现会一直很好,因为翻译只会翻译句子的一部分,你不会看到有一个巨大的下倾
    在这里插入图片描述
  • 我们需要翻译这个句子,需要计算出单词的特征集,这里,使用另一个RNN生成英文翻译,其会计算注意力权重 α ( 1 , 1 ) \alpha^{(1,1)} α(1,1)表示在 x 1 x^1 x1,即第一个信息处上需要放多少注意力, α ( 1 , 2 ) \alpha^{(1,2)} α(1,2)表示在翻译jane这个词时需要花多少注意力权重在第二个词上,同理在第三个单词也是这样,结果标记为C,并传入RNN中。
    在这里插入图片描述
  • 在翻译第二个词时也是如此,会计算临近词的注意力权重,并传入到 S ( 2 ) S^{(2)} S(2)中,同时第一个单词的翻译结果也会作为输入传入。
  • 因此,一个解码RNN由两个输入组成,一个是上一轮的输出 y < t − 1 > y^{<t-1>} y<t1>,另一个是注意力上下文 c ( t ) c^{(t)} c(t),两个输入通过拼接的方式一起输入至解码RNN
模型推导

在这里插入图片描述

  • 翻译过程使用一个单向RNN:
    1、每次考虑的所有注意力权重之和等于1
    ∑ t ′ a < 1 , t ′ > = 1 \sum_{t^{\prime}} a^{<1, t^{\prime}>}=1 ta<1,t>=1
    2、特征步激活值和注意力权重的乘积之和作翻译模型的输入,即上下文 C < i > C^{<i>} C<i>
    C < i > = ∑ t " α < 1 , t " > a < t " > C^{<i>}=\sum_{t^"} \alpha^{<1, t^">} a^{<t^">} C<i>=t"α<1,t">a<t">

  • α < t , t ′ > \alpha^{<t,t^\prime>} α<t,t>表示在 t t t处生成输出词时,需要花多少注意力在 t ′ t^\prime t

这里看着很拗口,原文献使用 α i j \alpha_{ij} αij,例如 α t , 1 \alpha_{t,1} αt,1表示翻译第t个样本时需要花多少注意力在第一个样本上
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 表示激活值,左右箭头分别表示前向传播和后向传播的激活值

在这里插入图片描述

参考资料

  1. Transformer论文逐段精读【论文精读】
  2. Deeplearning.ai深度学习教程中文笔记
  3. 吴恩达深度学习deeplearning.ai

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

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

相关文章

0基础学java-day19(IO流)

一、文件 1 什么是文件 2.文件流 3.常用的文件操作 3.1 创建文件对象相关构造器和方法 package com.hspedu.file;import org.junit.jupiter.api.DynamicTest; import org.junit.jupiter.api.Test;import java.io.File; import java.io.IOException;/*** author 林然* vers…

多模态融合slam技术学习

目录 前言 一、视觉-惯性SLAM算法 二、激光-惯性SLAM算法 三、激光与视觉融合算法 总结 前言 最近在找实习&#xff0c;又想着要怎么完成毕业论文&#xff0c;打算做下机器人导航实验&#xff0c;学习下相关算法。今天是多模态融合slam技术&#xff0c;课程链接&#xff1a;h…

严世芸龟法养生经

文章目录 严世芸理念荤素搭配&#xff0c;不偏嗜动静结合心平气和 龟息法 严世芸 严世芸&#xff0c;出生于1940年&#xff0c;现任上海中医药大学的主任医师&#xff0c;教授。他父亲是近代上海有名的中医&#xff0c;他又是著名医家张伯臾的亲传弟子。 从小就在父亲诊室里长…

ArkTS入门

代码结构分析 struct Index{ } 「自定义组件&#xff1a;可复用的UI单元」 xxx 「装饰器&#xff1a;用来装饰类结构、方法、变量」 Entry 标记当前组件是入口组件&#xff08;该组件可被独立访问&#xff0c;通俗来讲&#xff1a;它自己就是一个页面&#xff09;Component 用…

排序算法:【冒泡排序】、逻辑运算符not用法、解释if not tag:

注意&#xff1a; 1、排序&#xff1a;将一组无序序列&#xff0c;调整为有序的序列。所谓有序&#xff0c;就是说&#xff0c;要么升序要么降序。 2、列表排序&#xff1a;将无序列表变成有序列表。 3、列表这个类里&#xff0c;内置排序方法&#xff1a;sort( )&#xff0…

喜报丨迪捷软件入选2023年浙江省信息技术应用创新典型案例

12月6日&#xff0c;浙江省经信厅公示了2023年浙江省信息技术应用创新典型案例入围名单。本次案例征集活动&#xff0c;由浙江省经信厅、省密码管理局、工业和信息化部网络安全产业发展中心联合组织开展&#xff0c;共遴选出24个优秀典型解决方案&#xff0c;迪捷软件“基于全数…

Matlab示例-Examine 16-QAM Using MATLAB学习笔记

​工作之余学习16-QAM 写在前面 网上看到许多示例&#xff0c;但一般都比较难以跑通。所以&#xff0c;还是老方法&#xff0c;先将matlab自带的例子研究下。 Examine 16-QAM Using MATLAB Examine 16-QAM Using MATLAB 或者&#xff0c;在matlab中&#xff0c;键入&#x…

大模型微调方法:冻结方法 Freeze、P-Tuning 系列、LoRA、QLoRA

大模型微调方法 冻结方法 FreezeP-Tuning 系列Prefix-TuningPrompt TuningP-Tuning v1P-Tuning v2 LoRAQLoRA 冻结方法 Freeze 方法意思是&#xff0c;只用少部分参数训练&#xff0c;把模型的大部分参数冻结。 只要设置微调层的参数&#xff1a; # 遍历模型的所有参数和名称…

汉缆股份携手航天科技AIRIOT建设智慧工厂,加速数字化转型升级

工业4.0时代&#xff0c;工厂早已不是传统概念里流水线与机器制造的简单叠加&#xff0c;而是伴随工业互联网技术的发展&#xff0c;持续朝数字化与智能化方向演进&#xff0c;打造智慧工厂已成为众多制造企业转型升级的共同选择。近期&#xff0c;航天科技控股集团股份有限公司…

拦截器与过滤器的区别

1.最通俗的理解 过滤器&#xff1a;你要从一堆请求中通过一个工具挑选出符合你要求的请求&#xff0c;而这个工具就是过滤器 拦截器&#xff1a;当一个流程正在进行时&#xff0c;你希望干预它的进展&#xff0c;甚至是直接将它终止 2.触发时机不同 过滤器是在请求进入容器…

基于SSM的药房药品采购集中管理系统的设计与实现论文

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对药房药品采购信息管理混乱&#xff0c;出错率高&#xff0c;信息安全…

shiro入门demo(一)身份验证

shiro&#xff08;身份&#xff09;认证&#xff0c;简单来说就是登录/退出。搭建springboot项目&#xff0c;引入shiro和单元测试依赖&#xff1a; <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-…

python程序编程代码大全,python编程代码详解

这篇文章主要介绍了python语言的代码书写规则有哪些&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获&#xff0c;下面让小编带着大家一起了解一下。 Python代码主要由&#xff1a;5个部分组成&#xff0c;下面就分别介绍&…

数据清洗、特征工程和数据可视化、数据挖掘与建模的主要内容

1.4 数据清洗、特征工程和数据可视化、数据挖掘与建模的内容 视频为《Python数据科学应用从入门到精通》张甜 杨维忠 清华大学出版社一书的随书赠送视频讲解1.4节内容。本书已正式出版上市&#xff0c;当当、京东、淘宝等平台热销中&#xff0c;搜索书名即可。内容涵盖数据科学…

什么是纯净IP?如何判断IP地址的纯净度?有哪些干净IP推荐?

您是否想知道什么使代理“干净”或如何确保您的代理不会将您列入网站的黑名单&#xff1f;对于通过代理访问网络的人来说&#xff0c;干净的代理是无缝在线体验的重要组成部分。在这篇文章中&#xff0c;我们将深入研究干净代理的世界&#xff0c;并探讨决定其质量的因素。 一、…

字节跳动面经题

字节跳动面经题 1、了解anchor-free? "Anchor-free"是一个指向一类目标检测方法的术语&#xff0c;与传统的"anchor-based"方法相对应。在传统的目标检测中&#xff0c;通常会使用一系列预定义的锚框&#xff08;anchors&#xff09;作为模型的基础。这些…

Java IO 流详解

Java IO 流详解 1 .Java IO概念 Java IO&#xff1a;即 Java 输入 / 输出系统。 Java 的 IO 模型设计非常优秀&#xff0c;它使用 Decorator (装饰者)模式&#xff0c;按功能划分 Stream &#xff0c;您可以动态装配 这些 Stream &#xff0c;以便获得您需要的功能。 Stream &…

阿里云国际版CDN网页打不开、页面报错该如何解决?

如果在使用CDN过程中&#xff0c;遇到了网页打不开、页面报错等问题时&#xff0c;您可以通过自助诊断工具来进行诊断。诊断工具会告知本次诊断结果&#xff0c;您可以根据结果来调整CDN配置或提交工单进行咨询。 使用场景 主要支持以下情况&#xff1a; 域名访问异常&#x…

Java,这是一个模仿HashMap的put,get功能的自定义MyHashMap

Java 手写HashMap源码 一&#xff0c;手写源码 这是一个模仿HashMap的put&#xff0c;get功能的自定义的MyHashMap package cn.wxs.demo;import java.io.Serializable; import java.util.*; import java.util.function.BiConsumer; import java.util.function.BiFunction; i…

Linux-----10、查找命令

# 查找命令 # 1、 命令查找 Linux下一切皆文件&#xff01; which 命令 &#xff1a;找出命令的绝对路径 whereis 命令 &#xff1a;找出命令的路径以及文档手册信息 [rootheima ~]# which mkdir /usr/bin/mkdir[rootheima ~]# whereis mkdir mkdir: /usr/bin/mkdir /usr/…