一文读懂「Attention is All You Need」| 附代码实现

2023-05-16

前言

2017 年中,有两篇类似同时也是笔者非常欣赏的论文,分别是 FaceBook 的Convolutional Sequence to Sequence Learning和 Google 的Attention is All You Need,它们都算是 Seq2Seq 上的创新,本质上来说,都是抛弃了 RNN 结构来做 Seq2Seq 任务。

在本篇文章中,笔者将对Attention is All You Need做一点简单的分析。当然,这两篇论文本身就比较火,因此网上已经有很多解读了(不过很多解读都是直接翻译论文的,鲜有自己的理解),因此这里尽可能多自己的文字,尽量不重复网上各位大佬已经说过的内容。

序列编码

深度学习做 NLP 的方法,基本上都是先将句子分词,然后每个词转化为对应的词向量序列。这样一来,每个句子都对应的是一个矩阵 X=(x1,x2,…,xt),其中 xi 都代表着第 i 个词的词向量(行向量),维度为 d 维,故

。这样的话,问题就变成了编码这些序列了。

第一个基本的思路是 RNN 层,RNN 的方案很简单,递归式进行:

不管是已经被广泛使用的 LSTM、GRU 还是最近的 SRU,都并未脱离这个递归框架。RNN 结构本身比较简单,也很适合序列建模,但 RNN 的明显缺点之一就是无法并行,因此速度较慢,这是递归的天然缺陷。

另外我个人觉得RNN 无法很好地学习到全局的结构信息,因为它本质是一个马尔科夫决策过程

第二个思路是 CNN 层,其实 CNN 的方案也是很自然的,窗口式遍历,比如尺寸为 3 的卷积,就是:

在 FaceBook 的论文中,纯粹使用卷积也完成了 Seq2Seq 的学习,是卷积的一个精致且极致的使用案例,热衷卷积的读者必须得好好读读这篇文论。

CNN 方便并行,而且容易捕捉到一些全局的结构信息,笔者本身是比较偏爱 CNN 的,在目前的工作或竞赛模型中,我都已经尽量用 CNN 来代替已有的 RNN 模型了,并形成了自己的一套使用经验,这部分我们以后再谈。

Google的大作提供了第三个思路:纯 Attention,单靠注意力就可以。

阅读原文

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

一文读懂「Attention is All You Need」| 附代码实现 的相关文章

随机推荐

  • flutter调用go

    文章目录 命令引入greeting aar和使用android中使用Flutter2gopluginPlugin kt参考文档 命令 mkdir demo cd demo go mod init demo 编写greeting go go
  • solidity 学习2.批量转账,存入eth。读取数据。

    pragma solidity 0 4 17 import 39 zeppelin solidity contracts token ERC20 StandardToken sol 39 contract BLEOS is Standard
  • 根据图片获取图片中最多的颜色

    根据网络图片获取背景色 xff0c 用Palette 获取出来的颜色总是不对 Palette p 61 Palette from resource generate int defaultColor 61 ContextCompat get
  • flutter-border

    文章目录 Border继承构造方法BorderStyle和BorderSideBorderStyleBorderSide构造方法 BoxShadow构造方法 BoxShape是Code BorderRadius继承CodeRadius xf
  • ubuntu20.04中安装Flatpak,切换数据源

    安装 Flatpak xff1a sudo apt install flatpak 接着 xff0c 使用以下命令添加 Flatpak 数据源 xff1a sudo flatpak remote span class token opera
  • centeros8 图形化界面设置

    基于性能及通用性等因素的考虑 xff0c 阿里云官方提供的公共Linux系统镜像 xff0c 默认不安装图形化桌面组件 通过管理终端连接Linux实例 执行以下命令 xff0c 安装图形桌面的软件包 yum groupinstall 34
  • 定时器周期计算

    对定时器周期公式的总结 xff1a 1 T 61 xff08 arr 43 1 xff09 PSC 43 1 Tck 其中TCK为时钟频率 xff0c PSC为时钟预分频系数 xff0c arr为自动重装载值 f 61 Tck psc 43
  • [已解决 2020年]你的支付授权失败。请核对你的信息并重试,或尝试其他支付方式。请联系你的银行了解更多信息

    博主更多实战教程 xff1a NET WebApi实战教程 微信小程序实战教程 因为苹果政策的调整 xff0c 目前进行开发者计划加入时 xff0c 有两个模式 如果账号本身是在apple developer app中申请的 xff0c 那
  • LPC1768 IIC通信示——PCF8563

    PCF8563与AT24C02一样 xff0c 是典型的IIC通信器件 xff0c 这里就以它为例 xff0c 编写基于LPC1768硬件IIC的通信代码 xff1a 上图是PCF8563各个寄存器地址 xff0c PCF8563的IIC地
  • 程序员笔试题----字符串的操作

    在程序员面试的过程当中 xff0c 很多时候都会问到对字符串的操作 xff0c 其中包括 xff1a 字符串的逆序 xff0c 字符串的最大字串 xff0c 字符串按单词逆序 xff0c 两个字符串的最大公共子串 xff0c 记录字符串中某
  • 如何选择离线数据集成方案 - 全量&增量

    1 前言 我在上一篇中介绍了实时集成与离线集成该怎么选择 xff0c 接着介绍一下离线集成中的增量与全量的选择问题 要设计方案 xff0c 我们先分析一下数据产生的方式 我们把音视频流这种非结构化的数据集成从这里排除出去 xff0c 因为这
  • 使用阿里云PCDN降低内容分发成本

    点击打开链接 阿里云PCDN xff08 P 2P CDN 的 简称 xff09 是基于P2P技术的内容分发 网络 产品 xff0c 相比CDN而言 xff0c PCDN单价较低 xff0c 更适 用 于大流量内容分发 PCDN产品是与传统
  • 机器学习--线性代数基础

    原文地址 数学是计算机技术的基础 xff0c 线性代数是机器学习和深度学习的基础 xff0c 了解数据知识最好的方法我觉得是理解概念 xff0c 数学不只是上学时用来考试的 xff0c 也是工作中必不可少的基础知识 xff0c 实际上有很多
  • Dockerfile小案例(systemctl)

    Dockerfile小案例 xff08 systemctl xff09 文章目录 Dockerfile小案例 xff08 systemctl xff09 Dockerfile制作 xff08 systemctl xff09 镜像 Docke
  • 怎么打造属于自己的天猫精灵

    原文地址 看了天猫精灵的介绍 xff0c 是不是觉得很神奇 xff0c 实际每个程序要都可以打造属于自己的智能家居 可以实现的功能 点歌 最基础的功能了 xff0c 可以将自己喜欢的歌曲下载下来 xff0c 随时点歌定时提醒 提醒自己吃饭
  • 聊一聊数据仓库中的元数据管理系统

    原文地址 一 元数据的定义 按照传统的定义 xff0c 元数据 xff08 Metadata xff09 是关于数据的数据 在数据仓库系统中 xff0c 元数据可以帮助数据仓库管理员和数据仓库的开发人员非常方便地找到他们所关心的数据 xff
  • 300万知乎多标签文本分类任务经验分享(附源码)

    点击有惊喜 七月 xff0c 酷暑难耐 xff0c 认识的几位同学参加知乎看山杯 xff0c 均取得不错的排名 当时天池AI医疗大赛初赛结束 xff0c 官方正在为复赛进行平台调试 xff0c 复赛时间一拖再拖 看着几位同学在比赛中排名都还
  • 二战时图灵机破译的Enigma密码,现在AI仅需13分钟便可破译

    点击有惊喜 第二次世界大战期间 xff0c 布莱切利园是英国破译密码的中心 图灵当时也在那里工作 密码破译者的天才工作挽救了许多平民和士兵的生命 xff0c 据说将战争缩短了两年 Enigma密码机非常复杂 xff0c 它最先进的化身可以配
  • MySQL · 数据恢复 · undrop-for-innodb

    点击有惊喜 简介 undrop for innodb 是针对 innodb 的一套数据恢复工具 xff0c 可以从文件级别恢复诸如 xff1a DROP TRUNCATE table 删除表中某些记录 xff0c innodb 文件被删除
  • 一文读懂「Attention is All You Need」| 附代码实现

    前言 2017 年中 xff0c 有两篇类似同时也是笔者非常欣赏的论文 xff0c 分别是 FaceBook 的Convolutional Sequence to Sequence Learning 和 Google 的Attention