Transformer 学习路线说明

目录

一、6篇建议阅读的Transformer文献

二、5篇建议阅读的博客或视频

三、上述 Transformer 文献的基本介绍

四、学习顺序


、6篇建议阅读的Transformer文献

[1] Bahdanau D, Cho K, Bengio Y. Neural Machine Translation by Jointly Learning to Align and Translate[J]. Computer Science, 2015.

[2] Cheng J, Dong L, Lapata M. Long Short-Term Memory-Networks for Machine Reading[J]. 2016.

[3] Vaswani A, Shazeer N, Parmar N, et al. Attention Is All You Need[J]. arXiv, 2017.

[4] An Image Is Worth 16X16 Words: Transformers For Image  Recognition At Scale

[5] Bert: Pre-training of Deep Bidirectional Transformers for Language Understanding

[6] Efficient Transformers: A Survey

、5篇建议阅读的博客或视频

[7] The Illustrated Transformer – Jay Alammar – Visualizing machine learning one concept at a time. (jalammar.github.io)

[8] 

Transformer详解(看不懂你来骂我)_transformer 详解 espresso encode notebooks transform-CSDN博客

[9] The Annotated Transformer (harvard.edu)

[10] 台大李宏毅21年机器学习课程 self-attention和transformer_哔哩哔哩_bilibili

[11] 清华博士花费8小时录制的【Transformer实战教程】吐血上传草履虫也能学会的Transformer代码!(深度学习入门/神经网络/人工智能)_哔哩哔哩_bilibili

三、上述 Transformer 文献的基本介绍

Transformer [3]是一种 seq2seq 模型,由Google于2017年提出,是一种完全基于注意力机制且没有类 RNN 或卷积的网络结构,最早适用于 NLP 领域。

Transformer 与文献 [1, 2] 中的注意力机制的原理相同但实现方式有区别,[1, 2] 中的注意力机制是依赖于类 RNN 网络的隐层输出得到的,而 Transformer 中的自注意力是直接从输入数据中计算得出的。

文献 [3] 详细地描述了Transformer的总体结构以及各个模块的组成内容,其中的核心部分注意力机制也有示意图展示。

文献 [4] 是ICLR 2021里的一篇Paper,这篇文献提出了ViT图像分类模型。虽然不是第一篇将transformer应用在视觉任务的论文,但是因为其模型“简单”且效果好,可扩展性强(模型越大效果越好),成为了 Transformer 在 CV 领域应用的里程碑著作。其得出的结果为:当拥有足够多的数据进行预训练的时候,ViT 的表现就会超过 CNN,突破 Transformer 缺少归纳偏置的限制。

文献 [5] 中提出了Bert模型。BERT(Bidirectional Encoder Representations from Transformers)是一种Transformer的双向编码器,旨在通过在左右上下文中共有的条件计算来预先训练来自无标号文本的深度双向表示。因此,经过预先训练的BERT模型只需一个额外的输出层就可以进行微调,从而为各种自然语言处理任务生成最新模型。

文献 [6] 对近些年来产生的 Transformer 模型进行了分类,但主要关注attention模块的效率问题。

四、学习顺序

首先阅读文献 [1][2] 了解注意力机制在传统RNN或CNN中的应用。

再阅读文献 [3] 了解Transformer的基本结构以及注意力机制在整个网络中的作用。因为此论文并没有对每个结构做详细的分析,可以对照博客 [7] 进行对照阅读。

博客 [7] 主要对Attention结构和整个网络的运行步骤进行了分析,通过此博客可以了解整个Attention机制的计算步骤以及网络的数据流动方式。但此博客对其它结构并没有详细的描述,例如词嵌入层。因此可以阅读博客 [8] 来查漏补缺。

博客 [8] 对各个模块都进行详细的分析(如LayerNorm,Embedding),并且包含示意图分析,理解起来比较容易,部分分析还附带代码展示。模型的代码可以在博客 [9] 里找到,此博客根据文献 [3] 的内容撰写了代码,而且是根据文献每一段的内容附上相应代码,因此可以清晰知道每一部分代码实现了什么功能,对应原文什么模块。因为是全英文撰写,阅读起来有困难可以配合着视频 [11] 一起学习。

视频 [11] 分模块对每一个代码进行了讲解和演示。经过此学习如果任然对注意力机制有疑惑,可以观看视频 [10] 进一步加深理解。

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

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

相关文章

2024年2月20日v1.0.5更新·优雅草便民工具youyacao-tools

2024年2月20日v1.0.5更新优雅草便民工具youyacao-tools apk下载 https://fenfacun.youyacao.com/tools105.apk 介绍 优雅草便民工具是一款由成都市一颗优雅草科技有限公司打造的便民查询公益工具,2024年1月17日正式发布v1.0.0版本,本工具为了方便大众免…

mysql优化指南之优化篇

二、优化 现在的理解数据库优化有四个维度,分别是: 硬件升级、系统配置、表结构设计、SQL语句及索引。 那优化的成本和效果分别如下: 优化成本:硬件升级>系统配置>表结构设计>SQL语句及索引。 优化效果:…

golang的map是不是并发安全的?怎么保证安全?

参考链接 https://www.iamshuaidi.com/23354.html map 并不是并发安全的 map是引用类型,如果两个map同时指向一个底层,那么一个map的变动会影响到另一个map。 map 的并发不安全主要是因为缺乏内置的锁机制和原子操作,并且在扩容过程中可能会…

Linux环境安装ffmpeg6.x

1.官网ffmpeg下载源码 https://ffmpeg.org/download.html#build-windows 2.未安装x264库则先安装配置 可以先查询x264库: whereis libx264 安装编译工具和依赖库: sudo yum install gcc make cmake mercurial git yasm pkgconfig autoconf automake libtool sudo…

RabbitMQ 面试八股题整理

前言:本文是博主网络自行收集的一些RabbitMQ相关八股文,还在准备暑期实习,后续应该会持续更新...... 参考:三天吃透RabbitMQ面试八股文_牛客网 目录 RabbitMQ概述 什么是 RabbitMQ? 说一说RabbitMQ中的AMQP 为什么…

zabbix监控业务数据

前言 监控系统除了监控os和数据库性能相关的指标外,业务数据也是重点监控的对象。 一线驻场的运维同学应该深有体会,每天需要向甲方或者公司反馈现场的数据情况,正常情况下一天巡检两次,早上上班后和下午下班前各一次。监控项目…

【C语言】指针初阶

正文开始之前,我们要记住一个东西就是:地址指针 目录 一、指针的解释二、指针变量和地址1、取地址操作符2、指针变量和解引用操作1、指针变量2、拆解指针类型3、解引用操作符4、注意事项 3、指针变量的大小4、指针的解引用5、void*指针 三、指针的运算1、…

数据结构:链表的冒泡排序

法一:修改指针指向 //法二 void maopao_link(link_p H){if(HNULL){printf("头节点为空\n");return;}if(link_empty(H)){printf("链表为空\n");return;}link_p tailNULL;while(H->next->next!tail){link_p pH;link_p qH->next;while(q…

mysql的隔离级别,和实现

参考链接 https://xiaolincoding.com/mysql/transaction/mvcc.html#%E4%BA%8B%E5%8A%A1%E7%9A%84%E9%9A%94%E7%A6%BB%E7%BA%A7%E5%88%AB%E6%9C%89%E5%93%AA%E4%BA%9B 事务特性(ACID) 原子性(Atomicity): 事务是原子的&…

CUDA C:核函数、主机函数、设备函数

相关阅读 CUDA Chttps://blog.csdn.net/weixin_45791458/category_12530616.html?spm1001.2014.3001.5482 核函数(Kernel Function)指的是在主机(CPU)调用(某些情况下也可以在设备调用),在设备(GPU)上执行的函数,使用__global__…

YOLOv8改进 | Conv篇 | 全新的SOATA轻量化下采样操作ADown(参数量下降百分之二十,附手撕结构图)

一、本文介绍 本文给大家带来的改进机制是利用2024/02/21号最新发布的YOLOv9其中提出的ADown模块来改进我们的Conv模块,其中YOLOv9针对于这个模块并没有介绍,只是在其项目文件中用到了,我将其整理出来用于我们的YOLOv8的项目,经过实验我发现该卷积模块(作为下采样模块)…

CentOS 6.5安装配置SVN服务器

​项目要用SVN来管理,所以需要给服务器安装SVN服务器端。 这里仅使用svn://协议来访问SVN服务器,不启用sasl。 客户端系统都是Windows,使用起来很简单,这里就不用说了。 本文仅针对1.6.11版本。在1.7.14版本上测试时,…

liunx前后端分离项目部署

文章目录 1、nginx的安装和自启动2.nginx负载均衡3.前后端项目部署-后端部署4.前后端项目部署-前端部署 1、nginx的安装和自启动 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel1.安装我们nginx所需要的依赖 wget http://nginx.org/download/nginx-1.…

Open3D 点云法向量计算与可视化 (25)

Open3D 点云法向量计算与可视化 (25) 一、算法原理二、算法实现三、可视化显示和长度调节一、算法原理 通常计算点云的法向量可以使用以下两种常见的方法: 最小二乘法(Least Squares Method):该方法通过拟合局部表面的平面来计算法向量。对于给定点周围的邻域,可以通过…

故障排除:Failed to load SQL Modules into database Cluster

PostgreSQL 安装和故障排除 重新安装前的准备工作 在重新安装 PostgreSQL 之前,确保完成以下步骤: 重新卸载 PostgreSQL 并重启电脑。 删除以下目录: C:\Program Files\PostgreSQL\13C:\Users\admin\AppData\Roaming\pgadmin 重启安装过…

Vue2:router-link的replace属性

一、情景说明 我们在用浏览器访问网站的时候 知道浏览器会记录访问的历史路径,从而,可以退回到之前的页面 那么,Vue项目中的路由组件,通过router-link跳转,也是可以退回的 这里,我们用replace来屏蔽退回的…

【计算机网络】传输层——TCP和UDP详解

文章目录 一. TCP和UDP简介二. UDP 协议详解1. UDP报文格式2. UDP的使用场景 三. TCP 协议详解1. TCP报文格式2. TCP协议的重要机制确认应答(保证可靠传输的最核心机制)超时重传连接管理(三次握手、四次挥手)!&#xf…

内网设备如何在互联网上能访问

应用场景 设备安装到了客户现场,如果要调试设备,当前的处理方式是技术人员出差到客户现场、让客户开通VPN、让客户安装远程工具,远程到客户计算机上进行调试等方法。人不在家里想远程家里的电脑,当前处理方式就是在家里电脑上安装…

【信息提取】FindSomething 浏览器插件

下载地址 FindSomething 浏览器插件 概述 在网页的源代码或js中找到一些有趣的东西 FindSomething 用于快速在网页的html源码或js代码中提取一些有趣的信息,包括可能请求的资源、接口的url,可能请求的ip和域名,泄漏的证件号、手机号、邮箱…

Java多线程面试题(一)

Java多线程面试题(一) 前言1、在 Java 中守护线程和本地线程区别?2、线程与进程的区别?3、什么是多线程中的上下文切换?4、死锁与活锁的区别,死锁与饥饿的区别?5、Java 中用到的线程调度算法是什…