The illustrated Transformer 笔记

2023-10-26

The illustrated Transformer

Transformer是一种使用Attention机制类提升模型训练的速度的模型。该模型的最大优势在于其并行性良好。Transformer模型在Attention is All You Need中被提出,代码在Tensor2Tensorpackage中实现,以及一个 guide annotating the paper with PyTorch implementation

1. A High-Level Look

img

img

至此为止,整体结构和Seq2Seq一致。不过内部结构有所不同。

Encoder和Decoder都是由多层更小的网络组成:

img

Encoder来说,每一个网络结构相同,但是不共享权重,每一个小的Encoder可以分为两层:img

Input首先流经Self-Attention层,这个层可以帮助Encoder查看输入序列中的其他单词,之后流经前馈网络。Decoder有着相同的结构,但是多了一个Encoder-Decoder层:

img

2. Bringing The Tensors Into The Picture

首先,我们运用Embedding算法将输入转化为vector,并只在最底层进行输入。得到一个vector list,list的长度一般是训练集的最大句子长度。

然后,Embedding输入Encoder层:

img

在经过Encoder的过程中,每个单词都会流经它自己的路径。这个路径只在Self-Attention有独立性,但是在前馈网络没有独立性,因此在流经这部分的时候可以进行并行运算。

img

3. Self-Attention at a High Level

假设以下是我们想翻译的句子:"The animal didn't cross the street because it was too tired"

那这个it指代什么呢?如果用Self-Attention处理的话,会得到其指向animal。

在模型处理每一个单词的时候,Self-Attention将去查看输入序列的每一个单词来寻找可以帮助它更好编码这个单词的线索。

Self-Attention是用来将其他相关单词的“理解”加入到我们当前正在处理的单词中的方法。

4. Self-Attention in Detail

接下来是计算方法,以及如何通过矩阵进行运算。

首先是输入Embedding,对于每一个输入,创建Query向量、Key向量、Value向量;通过将Embedding乘以我们在训练过程中训练的三个矩阵来创建这些向量。

img

右侧矩阵是经过训练得到的经验矩阵,Embedding × Wq得到q,以此类推。新的向量的长度不是一定小于Embedding的。

那么,query、key、value向量是什么?

它们都是为了更好地计算和理解的抽象概念。

其次,是计算得分。如果是计算第一个单词,就将第一个单词的q分别乘以所有单词的k,得到score。

img

接下来:是将得分除以维度开平方,以保证更稳定的梯度,之后通过Softmax层求权重:

img

Softmax层决定了每个单词在这个位置表达了多少,明显的,当前单词的权重是最大的,但是有些时候,加入另一个与当前单词相关的单词很有用。

第五步是用Softmax得分乘以每一个自己的value值,这一步的意图是将我们想要关注的值保留而丢弃不需要关注的。

第六步是将所有加权向量加起来,得到这个位置这一层的输出:img

这个过程可以通过矩阵运算得到,速度更快:

5. Matrix Calculation of Self-Attention

img

img

5. The Beast With Many Heads

Paper通过添加multi-headed机制重新定义了Self-Attention层,这使得在以下两部分提升Attention的表现:

  1. 扩展了模型来关注其他位置的能力
  2. 给了Attention层多个表示子空间img

对于每个head的权重不同,因此是取决于不同的子空间来发掘信息。但是会得到多个Z(对应于每一个Attention),要将这多个vector变成一个:我们将每一个连接起来并乘以一个权重矩阵:

img

img

Overall Graph

在实际应用中,我们会发现it的指代在一些head中是名词,另一些是形容词,即角度不同。

img

6. Representing The Order of The Sequence Using Positional Encoding

到目前为止,我们描述的模型中缺少的一件事是一种解释输入序列中单词顺序的方法,为了解决这个问题,Transformer为每个Embedding增添了位置向量。这些向量遵循模型学习的特定模式,这有助于确定每个单词的位置或序列中不同单词之间的距离。

img

img

这个是一个20个单词,Embedding size是512的Positional encoding。(???)

6. The Residuals

img

如果打开来看的话,具体是这样的:

img

对于Decoder来说也是这样的:img

7. The Decoder Side

Encoder的顶层将一系列K和V向量输送到Decoder的每一个小的Decoder以帮助Decoder更好地关注正确的位置。

重复这一个步骤知道生成结束符位置。每一步的输出被送到下一个时间步骤的底层并按照Encoder一样处理。不过在Self-Attention方面,只关注前面的已经输出的单词,而不是后面的为输出的单词。

Encoder-Decoder Attention则像多头Self-Attention一样工作,除了其从前面取出K、V直接进行乘积操作。

8. The Final Linear and Softmax Layer

img

9. Recap Of Training

10. The Loss Function

img

比较概率分布使用cross-entropyand Kullback–Leibler divergence.

img

在训练过程中,分布是均匀的,而上图是我们的目标,因此要进行训练,可能会达到以下效果:

img

原文阅读

转载于:https://www.cnblogs.com/billdingdj/p/11624237.html

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

The illustrated Transformer 笔记 的相关文章

随机推荐

  • mysql 扁平结构设计_数组扁平化

    TOC 简介 数组的扁平化 就是将一个嵌套多层的数组 array 嵌套可以是任何层数 转换为只有一层的数组 举个例子 假设有个名为 flatten 的函数可以做到数组扁平化 效果就会如下 js var arr 1 2 3 4 console
  • Pycharm常用快捷键大全,初学友好,不怕记不住

    初来乍到 我是爱摸鱼的芝士呐 一 pycharm的简单介绍 字多可以跳过 pycharm是全宇宙最适合Python的编辑器 没有之一 个人见解勿杠杠就是你对 虽然看似全是英文 对于英语不好的小伙伴不友好 但是 不管是代码还是菜单栏 都有翻译
  • 照片转换为超声图像(MATLAB仿真)

    照片转换为超声图像 MATLAB 仿真实现 任意选取一张照片转换为超声图像 1 选取一张照片 2 将照片转换为散射点 3 进行超声成像仿真
  • Echarts formatter

    提示框浮层内容格式器 支持字符串模板和回调函数两种形式 回调函数 params Object Array ticket string callback ticket string html string gt string HTMLElem
  • 威纶通定时循环操作宏_威纶通触摸屏宏指令的使用

    工控多年的公众号运营者 我经常分享原创技术内容 内容涉及到工业多个方面 分享新知识带你一起进步 今天看到一个例程 想再写一下威纶通触摸屏宏指令的使用 之前有分享过一篇有关威纶通关于宏指令使用的文章 那篇文章的宏只用过 GetData 指令
  • iis多进程下的全局变量_python下多线程的限制以及多进程中传递参数的方式!不来瞅瞅?...

    欢迎各位小哥哥小姐姐阅读本的文章 对大家学习有帮助 请点赞加关注哦 您的点赞和关注将是我持续更新的动力呢 v 有不懂的问题可以私聊我哦 python下多线程的限制以及多进程中传递参数的方式 python多线程有个全局解释器锁 global
  • C#桌面程序无法调试以及无法查看变量的解决办法

    作者 朱金灿 来源 clever101的专栏 为什么大多数人学不会人工智能编程 gt gt gt 一 问题描述 最近在调试一个C 桌面程序 总是无法进入调试状态 后来能进入调试状态了 却无法查看程序变量的值 二 问题解决过程 经过搜索网上资
  • python 中wheel 安装_python中wheel的用法整理

    Python的第一个主流打包格式是 egg文件 现在大家庭中又有了一个叫做Wheel whl 的新成员 wheel 被设计成包含PEP 376兼容安装 一种非常接近于磁盘上的格式 的所有文件 在本文中 我们将学习如何创建一个wheel以及如
  • linux 命令行报bash command not found的解决办法

    命令行报bash command not found的解决办法 几乎所有命令 命令行输入命令执行后报 bash command not found 这是由于系统PATH设置问题 PATH没有设置对 系统就无法找到精确命令了 1 在命令行中输
  • Nginx 返回自定义 text 或 json

    叙述 有些时候请求某些接口的时候需要返回指定的文本字符串或者json字符串 如果逻辑非常简单或者干脆是固定的字符串 那么可以使用nginx快速实现 这样就不用编写程序响应请求了 可以减少服务器资源占用并且响应性能非常快 解决方案 固定文本
  • 实时音频编解码之十五 Opus编码-CELT编码

    本文谢绝任何形式转载 谢谢 4 3 1 基频预滤波 对预加重之后信号预滤波 其和解码器的后滤波相反 基频周期搜索应根据以下标准优化 1 连续性 对于连续帧 基频周期通常不会突变 2 避免基频倍数 当使用的周期是实际周期的倍数时 后滤波器失去
  • 蓝桥杯真题:算式问题

    emmm其实是算全排列的问题 按照STL文档的描述 next permutation函数将按字母表顺序生成给定序列的下一个较大的排列 直到整个序列为降序为止 prev permutation函数与之相反 是生成给定序列的上一个较小的排列 具
  • 超详细!!!Linux:利用Shell脚本使用case分支语句

    case分支语句 case 语句 case语句主要适用情况 case分支语句语法结构 case值得注意的特点 case语句应用示例 1 检查用户输入字符类型 2 编写系统服务脚本 case 语句 case语句主要适用情况 某个变量存在多种取
  • Nginx+tomcat 实现前后端分离(解决跨域)

    工具 nginx 1 15 3 apache tomcat 9 0 11 代码准备 前端 新建前端文件 结构如下 index html代码如下
  • 腾讯股票数据接口 http/javascript

    From http blog csdn net ustbhacker article details 8365756 之前使用了新浪的股票数据 由于新浪http javascript缺少一些数据 用chrome自带的开发工具监视腾迅财经HT
  • 【tensorflow】张量Tensor的操作(创建,变换和分割)

    参考链接 https blog csdn net yeshang lady article details 124615743 ops request misc request id biz id 102 utm term tensorfl
  • http

    一 简单分析 简单的分析 从输入 URL到回车后发生的行为如下 URL解析 DNS 查询 TCP 连接 HTTP 请求 响应请求 页面渲染 二 详细分析 URL解析 首先判断你输入的是一个合法的URL 还是一个待搜索的关键词 并且根据你输入
  • Clumsy-Windows下网络环境模拟工具

    下载页 http jagt github io clumsy cn download 项目的代码可以在github上获取 在下载页面有编译好的版本 强烈建议在使用前花点时间阅读一下文档 来 了解 clumsy 的功能和限制 目前的实现中有一
  • 【概率论与数理统计】猴博士 笔记 p41-44 统计量相关小题、三大分布的判定、性质、总体服从正态分布的统计量小题

    文章目录 统计量相关小题 三大分布的判定 三大分布的性质 总体服从正态分布的统计量小题 统计量相关小题 题干 总体X 有一些样本X1 X2 X3 解法 注意 S的分母是n 1 接下来练习套公式 例1 直接背公式 例2 解 除X S n外有其
  • The illustrated Transformer 笔记

    The illustrated Transformer Transformer是一种使用Attention机制类提升模型训练的速度的模型 该模型的最大优势在于其并行性良好 Transformer模型在Attention is All You