首页 > 其他分享 >Illustrated Transformer笔记

Illustrated Transformer笔记

时间:2024-06-16 20:24:29浏览次数:24  
标签:单词 Transformer attention 矩阵 笔记 Illustrated 维度 向量 mathrm

Attention Is All You Need

编码器端

image

Self-attention层

用处:将对其他相关单词的“理解”融入我们当前正在处理的单词的方法,类似于RNN通过保持隐藏状态让 RNN 将其已处理的先前单词/向量的表示与当前正在处理的单词/向量结合起来

将单词输入转化为Embedding之后,将Embedding和Q K V三个矩阵相乘,便可以获得一个查询向量\(q_i\)、一个键向量\(k_i\)和一个值向量\(v_i\)
image

有了\(q_i\)和\(k_i\),我们就可以根据这个词对输入句子的每个单词进行评分。分数决定了我们在某个位置编码单词时对输入句子其他部分的关注程度。通过计算\(q_i \cdot k_i\),获得这个分数。
之后,我们将这些分数除以 8(论文中使用的关键向量维度64的平方根 - 8。这会导致更稳定的梯度。这里可能还有其他可能的值,但这是默认值),然后将结果传递给 softmax 运算,最终再乘以\(v_i\)向量
image

使用矩阵表示上面的流程

\[Attention(Q, K, V) = Z = \text{softmax}\left(\frac {Q \cdot K^T}{\sqrt{d_k}}\right)V \]

Z矩阵就是self-attention的输出
image

多头注意力本质:多个独立的Q K V矩阵

\[\mathrm{MultiHead}(Q, K, V) = \mathrm{Concat}(\mathrm{head_1}, ..., \mathrm{head_h})W^O \\ \text{where}~\mathrm{head_i} = \mathrm{Attention}(QW^Q_i, KW^K_i, VW^V_i) \]

但是前馈层并不期望八个(多头的默认数目)矩阵——它期望一个矩阵(每个单词一个向量)。所以我们需要一种方法将这八个矩阵压缩成一个矩阵。我们该怎么做呢?我们将矩阵连接起来,然后将它们乘以附加权重矩阵 \(W^O\)。
image

使用位置编码表示序列的顺序

到目前为止,我们所描述的模型缺少一件事,那就是解释输入序列中单词顺序的方法。

为了解决这个问题,Transformer 为每个输入嵌入添加了一个向量。这些向量遵循模型学习到的特定模式,这有助于确定每个单词的位置,或序列中不同单词之间的距离。这里的直觉是,将这些值添加到嵌入中后,一旦嵌入向量被投影到 \(Q/K/V\) 向量中并在点积注意期间,它们之间就会提供有意义的距离。

解码器端

image

Encoder-Decoder Attention层

在上述公式中,\(d_k\) 表示的是矩阵的维度,而不是向量的维度。

具体来说,\(d_k\) 是注意力机制中查询(query)和键(key)的维度大小。在自注意力机制(self-attention)中,输入向量会被分成多个注意力头,每个头都会有自己的查询、键和值。\(d_k\) 用来表示每个注意力头中查询和键的维度大小,以便在计算注意力权重时进行归一化。

在公式中,\(Q\), \(K\) 和 \(V\) 都是矩阵形式的输入,而 \(d_k\) 表示了查询和键矩阵的维度大小。该维度大小通常与输入矩阵的特征维度相对应,以保持一致性和有效性。

为什么采用self-attention

1、每层的计算量减少

2、在训练时,可以并行计算

3、网络中长范围的相关性,当两个位置的输入输出之前的路径更短时,更容易学习到两者之间的相关性。感觉有点吸取了CNN和RNN中梯度消失和梯度爆炸的教训

4、self-attention可以得到更具有解释性的模型

来源:Illustrated Transformer

标签:单词,Transformer,attention,矩阵,笔记,Illustrated,维度,向量,mathrm
From: https://www.cnblogs.com/peterzh/p/18250058

相关文章

  • SpinalHDL 学习笔记
    SpinalHDL是一种基于Scala的硬件构筑语言(ConstructingHardwareInScalaEmbeddedLanguage),通过比Verilog/VHDL更好层次的行为级描述,拥有更加高层次视角以及抽象编码能力,作为一种Verilog/VHDL代码的生成器,在Verilog/VHDL绝对统治芯片设计语言的情况下,宛如一泓清泉带来不一样......
  • 08梦断代码阅读笔记之三
     自身对于何为软件,何为代码仅有一些肤浅的认识,半学期下来,编程能力也有了较大的提高。但是其中的痛苦和艰辛,也很值得自己去慢慢的回味。书中描述一群人们怀抱着改变世界的理想上路了,却在追寻时发现,那些近在眼前的理想之峰,变得那么的遥不可及;每当翻过一座横亘在面前的山峰时,总以为......
  • 【C++学习笔记 4】C++中的类
    面向对象的程序设计试想一下,假如我要写一个游戏,玩家在其中移动#include<iostream>#defineLOG(x)std::cout<<x<<std::endlvoidmove(intx,inty,intspeed);intmain(){ intPlayerX0,PlayerY0; intspeed=2; intPlayerX1,PlayerY1; intspeed......
  • 回归预测 | Matlab实现Transformer多输入单输出回归预测
    回归预测|Matlab实现Transformer多输入单输出回归预测目录回归预测|Matlab实现Transformer多输入单输出回归预测效果一览基本介绍程序设计参考资料效果一览基本介绍1.Matlab实现Transformer多变量回归预测;2.运行环境为Matlab2023b;3.输入多个特征,输......
  • 《菜根谭》读书笔记
    信息《菜根谭》洪应明吉林出版集团有限责任公司摘录处世让一步为高,退步即进步的张本;待人宽一分是福,利人是利己的根基。完名美节,不宜独任,分些与人,可以远害全身;辱行污名,不宜全推,引些归己,可以韬光养德。忧勤是美德,太苦则无以适性怡情;澹泊是高风,太枯则无以济人利物。澹泊之士......
  • 《道德经》读书笔记
    信息《道德经》老子中国华侨出版社摘录上善若水。水善利万物而不争,处众人之所恶,故几于道。居善地,心善渊,与善仁,言善信,正善治,事善能,动善时。夫唯不争,故无尤。五色令人目盲,五音令人耳聋,五味令人口爽,驰骋畋猎,令人心发狂,难得之货,令人行妨。是以圣人为腹不为目,故去彼取此。企者......
  • c++学习笔记(二)
    c++中的引用引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。C++引用vs指针引用很容易与指针混淆,它们之间有三个主要的不同:不存在空引用。引用必须连接到一块合法的内存。一旦引用......
  • 03构建之法阅读笔记之三
    第八章需求分析需求分析也称为软件需求分析、系统需求分析或需求分析工程等,是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程。但需求分析是软件开发中非常重要的......
  • SpringCloud2023 - 学习笔记
    文章目录1.简介1.1基础知识1.2组件更替与升级2.微服务基础项目构建2.1创建项目2.2Mapper4生成代码2.3支付模块编码2.4项目完善2.5订单模块编码2.6工程重构3.consul服务注册与发现3.1consul简介3.2consul下载安装3.3微服务入驻3.4order订单微服务入驻3.5......
  • 《梦断代码》读书笔记(二)
    这次阅读中体会最深的莫过于奇客和狗,作者通过Chandler狗、Cosmo狗以及各种狗来类比OSAF开发的项目,前面两种都是拉布拉多狮子狗,文章这样描写这两种狗,“它们是好宠物:‘和其他狗类融洽相处’”、“非常聪明,快活而友善。能快速学会不常见或特殊的技能。活跃,有时显得滑稽。如果管束不严......