【论文阅读-Transformer】Attention is all you need

2023-11-08

image-20220409185225151

Title: Attention is all you need

From: NeurIPS 2017

Link: https://arxiv.org/abs/1706.03762

Code: https://github.com/tensorflow/tensor2tensor.

循环神经网络被普遍作为序列建模和转录问题的最佳模型。但是,循环模型(Recurrent models)存在两个问题:(1)其输入输出的顺序计算性阻碍了训练的并行化,序列长度越长,问题越明显。(2)而且随着序列的变长,存在长程依赖的问题。此外,注意力机制允许对依赖关系进行建模,而不考虑他们在输入或输出序列中的距离。这种机制往往和循环网络一起出现。

因此,作者提出Transformer,力图规避掉循环网络,只用attention来实现对输入输出间的全局依赖关系的建模。

重点记录下Transformer中的几个点。

1. Self-attention & Multi-head attention

Attention的三要素:Q、K、V,这三者有可能是一样的,比如你输入的句子序列x,分别乘以三个变换矩 W Q W^Q WQ W K W^K WK W V W^V WV,来作为attention的输入,这种叫做自注意力。在其他情况下,这三者有可能K和V是一样的,也有可能都不一样。

在transformer的编码器中,用的是自注意力,而解码器中,KV是一样的,来自编码器的输出,query是解码器mask attention层的输出。

image-20220409200024182

  • Scaled dot-product attention

在单头的 Dot-Product Attention中,Q和K做内积来计算相似度,再经过一层softmax,最后的输出就是对 V V V的加权和。

image-20220409185309581

和普通的点积注意力相比,这里多除了一个根号 d k d_k dk,这也是作者为什么将其称为“scaled”。这样做的原因是当 d k d_k dk 比较大的时候,容易把softmax推到梯度较小的地方,缩放后,可以缓解这种情况。

  • Mask

再补充一句mask,attention中的mask用于解码的过程。在t时刻,道理上模型应该只能看到0到t-1时刻的output,不然就算是泄漏了。所以在计算后,把t时刻之后的值都变成一个超大的负数,这样经过softmax之后,就趋近于零了,相当于把后面的信息mask掉了。

  • Multi-head attention

多头注意力,就类似于卷积里面的多通道,每个通道去识别不同的模式。

对Q、K、V乘以不同的变换矩阵 W i Q W^Q_i WiQ W i K W^K_i WiK W i V W^V_i WiV,将其投影到低维,希望学到不同的投影方法,然后在每个i中,都是原来的scaled dot-product attention,最后将结果拼接起来。(这里的拼接还是加了一个线性层的)。可以认为不同的头,学到的是不同的相似关系/位置关系/。

2. Positional Encoding

Attention是没有时序信息,因为attention的输出是value的加权和,权重是query和key之间的距离,他和序列信息是无关的。也就是说,如果把一句话中所有词的顺序打乱,比如原来的“我爱北京”,换成“北京爱我”,语义肯定是发生了变化的,但是attention对这种变化是感知不到的。所以需要把位置信息加进去,来弥补自注意力机制不能捕捉序列时序信息的缺陷。

RNN是有时序信息的,上一个位置的输出是下一个位置的输入,所以包含了时序信息。

Transformer的思路是通过 sine and cosine 函数把位置信息编码到输入里面。这样编码可以让模型感知到位置的变换。

3. Layer Normalization

batch normalization 是对特征那个维度来做。

layer normalization是对样本那个维度来做。

image-20220409204052270图片源自李沐大佬视频中的截图

实验部分,还有一些详细的分析就不写了,今天就到这里吧~

参考:

  1. https://zhuanlan.zhihu.com/p/420820453

些详细的分析就不写了,今天就到这里吧~

参考:

1.https://zhuanlan.zhihu.com/p/420820453

2.https://www.bilibili.com/video/BV1pu411o7BE?spm_id_from=333.999.0.0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【论文阅读-Transformer】Attention is all you need 的相关文章

  • Crashlytics工具的接入

    最近应公司上级的指示 要接入Crashlytics来进行bug统计工具 根据官网的指示安装出现了好多坑 费了点劲接入了 但是本人感觉没有啥卵用 具体的看下面这篇文章的介绍 移动平台奔溃收集 http blog csdn net zhuoba
  • WEB前端后端简单区别,通俗理解

    前端开发和后台开发是有区别的 工作的内容和负责的东西是完全的不同的 以下以网站的开发为例 1 前端开发 前端开发现在一般指的就是web前端开发工程师 其负责是网站前端页面也就是网页的页面开发 简单的说网站前端负责是东西是网站用户可见的东西
  • 解决 Agent admitted failure to sign using the key 问题 with ssh

    配置ssh 之前要在本机上装上ssh 可以通过sudo apt get install ssh来安装 如果没有进行配置的话 登录到本机或者远程主机需要该主机的密码才行 下面进行无密码登录的配置 很简单 执行ssh keygen t rsa命
  • VM虚拟机中如何设置ip地址

    当我们在windows环境下 在cmd命令行中输入ipconfig可以看到我们的主机ip地址 但是我们创建了一台虚拟机 并且装好系统时 输入ifconfig 这里和windows下命令不一样 不要搞混了 时 会发现得不到ip地址 下面就说一
  • 删除数组中小于平均值的数

    利用指向一维数组的指针 将一个含有m m lt 10 个整数的一维数组中小于平均值的所有元素顺次删除掉 例如 原数组为3 5 7 4 1 删除后的数组应为5 7 4 提示 先输入数组元素个数 再依次输入数组元素的值 include
  • 吊打面试官:2023最新安全渗透面试题。

    安全渗透面试题 1 引言 2 安全渗透面试题 2 1 什么是渗透测试 2 2 你能提供一些常见的渗透测试工具和技术吗 2 3 在渗透测试中 如何利用SQL注入攻击 2 4 在渗透测试中 如何利用XSS攻击 2 5 在渗透测试中 如何利用代码

随机推荐

  • 编译busybox报错:scripts/Makefile.build:192: recipe for target 'loginutils/passwd.o' failed

    ubuntu18 04上编译busybox 提示上图中的错误 如何解决 修改busybox中的源码 include libbb h 中 增加一行 include
  • 已解决:H5移动端网页实现录音功能,js实现录音功能,包括安卓webview接口也可以使用

    遇到一个需求 需要做一个手机网页录音的功能 嵌入到webview中去 用安卓原生录音倒是可以 但是想着尽量去安卓化开发 就想着用纯的js前端代码去实现录音功能 在 Web 应用程序中 JavaScript 是运行在浏览器中的客户端脚本语言
  • Android自定义蒙层

    在开发过程中有时候会遇到特定情况下显示蒙层的需求 比如在点击某个Edittext搜索框时 部分界面出现浅透明蒙层 自定义蒙层 class MongolianView context Context attrs AttributeSet Li
  • 华为p20nfc怎么复制门禁卡_华为手机怎么绑定门禁卡

    绑定门禁卡的功能在华为手机的 钱包 应用内 点击 门钥匙 的选项 选择 添加 就可以将门禁卡贴近NFC功能进行自动读取 添加需要验证华为账号 使用的时候在钱包中选择门禁卡验证指纹之后 靠近读卡机即可 以下是详细介绍 1 打开华为 钱包 应用
  • 第5章 基础——5.3. C++项目组成

    回到目录 白话C 5 3 C 项目组成 首先我们知道了 写一个C 程序 可能需要多个源文件 比如a cpp b cpp 有没有可能只用一个源文件呢 似乎是可以的 比如我们之前写的 Hello world 经典版等项目 不就只有一个main
  • Web前端学习上----(案例实现)

    前言 前言 很多事情先有念头 后来才有了行动 只要坚持 总会在这个过程中收获很多 博客质量也会慢慢提升 我知道想要达到高级的水平 需要不断的学习 在这个过程会吸收大量知识 而人的记忆是有限的 所以每隔一段时间 将学习的东西整理出来 发表成博
  • pcl经典算法60例——所有代码参考链接(开源)

    pcl经典算法60例大集合 方法名称 开源链接 1 打开点云 MFC显示点云 柯西等式的博客 CSDN博客 2 显示法线 PCL计算点云的法线 pcl 法线 Tom Hardy的博客 CSDN博客 3 三角化 PCL学习笔记 点云曲面重建
  • 服务器提示临时文件已满,win10系统提示”由于临时文件夹已满而导致“磁盘空间不足”错误的解决办法_win10教程_uc电脑园...

    如果你已使用 磁盘清理 释放设备上的空间 然后看到 磁盘空间不足 错误 这可能是因为你的临时文件夹正在被 Microsoft Store 使用的应用程序 appx 文件快速占用所致 今天小编就给大家带来win10系统提示由于临时文件夹已满而
  • Mysql读写锁保姆级图文教程

    准备 创建 mylock 表 CREATE TABLE mylock id int 11 NOT NULL AUTO INCREMENT name varchar 20 DEFAULT NULL PRIMARY KEY id ENGINE
  • 抖音最新抓包方案

    可以通过hook java层如下图所示的地方 dy默认走的是quick协议 但是为了兼容更多版本的手机 有一个降级操作 毕竟担心cronet低版本适配不好 所以可以通过hook这个方法来使其强制降级到Http协议 frida脚本 1 2 3
  • JDBC获取数据库连接

    要素一 Driver接口实现类 1 Driver接口介绍 1 1java sql Driver 接口是所有 JDBC 驱动程序需要实现的接口 这个接口是提供给数据库厂商使用的 不同数据库厂商提供不同的实现 1 2在程序中不需要直接去访问实现
  • Git 工作区、暂存区和版本库

    基本概念 我们等来理解下Git工作区 暂存区和版本库概念 工作区 就是你在电脑里能看到的目录 强烈推荐git新手阅读 暂存区 英文叫stage 或index 一般存放在igt 目录下的index文件 git index 中 所以我们把暂存区
  • STM32初学者项目一:点亮第一颗LED灯(基于地址操作)

    步骤1 在SYSTEM创建相应的外设文件夹以及对应的 c h源文件 具体可参考之前写的创建基本工程文件 基于STM32官方库如何独立创建一个标准的STM32F103X的标准工程文件 是浩吉呀哈的博客 CSDN博客 步骤2 将对应的源文件加入
  • PHP登录注册页面

    注册 html 注册1 php
  • 四元数 旋转 旋转矩阵 欧拉角互相转换

    四元数的作用 表达旋转 旋转的表达方式有很多种 有欧拉角 旋转矩阵 轴角 四元数 unit quaternion unit quaternion是一种表达旋转的方式 不同的旋转表达方式概览 1 欧拉角 欧拉角使用最简单的x y z值来分别表
  • Python如何计算两个数字之和是多少?

    python是一门非常受欢迎的编程语言 具有多种优势 简单易学 用途广泛 免费开源 易读易维护 可移植 且具有丰富的库 在诸多领域都得到了广泛的应用 而在python中 求两个数的和是非常常见的需求 但很多小伙伴在实际操作过程中经常会出现报
  • 第【4】篇 如何理解数字货币?它与区块链又是什么样的关系?

    为什么80 的码农都做不了架构师 gt gt gt 从历史进程来看 货币的形态主要经历了几次变化 从早期社会如兽皮 牲畜 陶器的物物交换 到各种贝壳类的货币 再到后面的铜币 乃至后来人们选择了黄金和白银作为流通货币 随着消费需求不断增加 人
  • Android获取系统文件常用路径(详细)

    在android 6 0以前 你可以只关注外置存储是否挂载即可 但是从6 0以后 也就是M系统后 还需要判断是否有读写权限 只有具备这些权限才可以读写外置存储 package com jinfeng gongshigonggao utils
  • 获取1-10000之前所有的对称数(回文数)

    对称数 求 1 10000 之间的所有对称数 回文 例如 0 1 2 11 22 101 232 1221 思路1 使用数组反转 数字转换为字符串 字符串转换为数组 reverse 再 join 生成字符串 比较前后的字符串 查询 1 ma
  • 【论文阅读-Transformer】Attention is all you need

    Title Attention is all you need From NeurIPS 2017 Link https arxiv org abs 1706 03762 Code https github com tensorflow t