4.12号下午和4.13号上午看。8月7号更新一点,12月4号

参考链接:

Transformer模型详解(图解最完整版) - 知乎 (zhihu.com)

Scaled Dot-Product Attention - 知乎 (zhihu.com)

Attention注意力机制与self-attention自注意力机制 - 知乎 (zhihu.com)

一步一步理解大模型:缩放点积注意力机制_scaled dot-product attention-CSDN博客

前言

Transformer由论文《Attention is All You Need》提出,现在是谷歌云TPU推荐的参考模型。论文相关的Tensorflow的代码可以从GitHub获取,其作为Tensor2Tensor包的一部分。
哈佛的NLP团队也实现了一个基于PyTorch的版本,并注释该论文。

Transformer是2017年提出的一种新型神经网络架构,主要用于自然语言处理任务。它摒弃了传统的循环神经网络(RNN)结构,完全基于注意力机制来捕捉输入序列中的长程依赖关系。

Transformer模型的核心是自注意力机制(Self-Attention),它允许模型在处理输入序列时为每个单词分配不同的权重,从而考虑到上下文中的每个单词。Transformer还包括编码器和解码器结构,前者负责输入的特征提取,后者则用于生成输出。

在本文中,我们将试图把模型简化一点,并逐一介绍里面的核心概念,希望让普通读者也能轻易理解。

基础概念

如编码

独热编码

点积、矩阵乘法

Transformer的网络架构由且仅由self-Attenion和Feed Forward Neural Network组成,没有用到传统的CNN或者RNN,一个基于Transformer的可训练的神经网络可以通过堆叠Transformer的形式进行搭建。正因如此,Transformer成为继CNN和RNN之后又一个高效的特征提取器

什么是注意力机制?

Attention的思路,简单用四个字“带权求和”就可以高度概括,或者说在不同的上下文语境中,关注到不同的信息

Attention 赋予模型区分辨别能力,从纷繁的信息中找到应当focus的重点。

Attention的出现就是为了两个目的:

  1. 减小处理高维输入数据的计算负担,通过结构化的选取输入的子集,降低数据维度。
  2. “去伪存真”,让任务处理系统更专注于找到输入数据中显著的与当前输出相关的有用信息,从而提高输出的质量。

从最早的Attention被提出之后,后面又以其为基础,衍生出了例如Bagdanau attention、 Luong attention、 self-attention、 multi-head attention等等,用面向对象的思想可以理解为Attention是基类,其他的都是对其继承和重写。

从数学角度上来理解,Attention其实就是不同单词对应的概率分布。换句话说,Attention机制是一种根据某些规则或者某些额外信息(query)从向量表达集合(values)中抽取特定的向量进行加权组合(Attention)的方法。简单来讲,只要我们从部分向量里面搞了加权求和,那就算用了Attention。

1.Transformer 整体结构

首先介绍 Transformer 的整体结构,下图是 Transformer 用于中英文翻译的整体结构:

Encoders又由若干Encoder组成,默认是6个,Decoders的设置也一样。

Transformer 的整体结构,左图Encoder和右图Decoder

每个Encoder层由包括两个sub-layers,它们都模拟了残差网络的结构但没有共享参数。:
1 )第一个sub-layer是multi-head self-Attenion mechanism,用来计算输入的self-attention;
2 )第二个sub-layer是简单的全连接网络构成的Feed Forward Neural Network。

可以看到 Transformer 由 Encoder 和 Decoder 两个部分组成,Encoder 和 Decoder 都包含 6 个 block。Transformer 的工作流程大体如下:

第一步:获取输入句子的每一个单词的表示向量 XX由单词的 Embedding(Embedding就是从原始数据提取出来的Feature) 和单词位置的 Embedding 相加得到。

Transformer 的输入表示

第二步:将得到的单词表示向量矩阵 (如上图所示,每一行是一个单词的表示 x) 传入 Encoder 中,经过 6 个 Encoder block 后可以得到句子所有单词的编码信息矩阵 C,如下图。单词向量矩阵用Xnxd表示, n 是句子中单词个数,d 是表示向量的维度 (论文中 d=512)。每一个 Encoder block 输出的矩阵维度与输入完全一致。

Transformer Encoder 编码句子信息

第三步:将 Encoder 输出的编码信息矩阵 C传递到 Decoder 中,Decoder 依次会根据当前翻译过的单词 1~ i 翻译下一个单词 i+1,如下图所示。在使用的过程中,翻译到单词 i+1 的时候需要通过 Mask (掩盖) 操作遮盖住 i+1 之后的单词。

Transofrmer Decoder 预测

上图 Decoder 接收了 Encoder 的编码矩阵 C,然后首先输入一个翻译开始符 "<Begin>",预测第一个单词 "I";然后输入翻译开始符 "<Begin>" 和单词 "I",预测单词 "have",以此类推。这是 Transformer 使用时候的大致流程,接下来是里面各个部分的细节。

2. Transformer 的输入

Transformer 中单词的输入表示 x单词 Embedding 和位置 Embedding (Positional Encoding)相加得到。

Transformer 的输入表示

2.1 单词 Embedding

单词的 Embedding 有很多种方式可以获取,例如可以采用 Word2Vec、Glove 等算法预训练得到,也可以在 Transformer 中训练得到。

2.2 位置 Embedding

Transformer 中除了单词的 Embedding,还需要使用位置 Embedding 表示单词出现在句子中的位置。因为 Transformer 不采用 RNN 的结构,而是使用全局信息,不能利用单词的顺序信息,而这部分信息对于 NLP 来说非常重要。所以 Transformer 中使用位置 Embedding 保存单词在序列中的相对或绝对位置。

位置 Embedding 用 PE表示,PE 的维度与单词 Embedding 是一样的。PE 可以通过训练得到,也可以使用某种公式计算得到。在 Transformer 中采用了后者,计算公式如下:

其中,pos 表示单词在句子中的位置,d 表示 PE的维度 (与词 Embedding 一样),2i 表示偶数的维度,2i+1 表示奇数维度 (即 2i≤d, 2i+1≤d)。使用这种公式计算 PE 有以下的好处:

  • 使 PE 能够适应比训练集里面所有句子更长的句子,假设训练集里面最长的句子是有 20 个单词,突然来了一个长度为 21 的句子,则使用公式计算的方法可以计算出第 21 位的 Embedding。
  • 可以让模型容易地计算出相对位置,对于固定长度的间距 k,PE(pos+k) 可以用 PE(pos) 计算得到。因为 Sin(A+B) = Sin(A)Cos(B) + Cos(A)Sin(B), Cos(A+B) = Cos(A)Cos(B) - Sin(A)Sin(B)。

将单词的词 Embedding 和位置 Embedding 相加,就可以得到单词的表示向量 x就是 Transformer 的输入。

3. Self-Attention(自注意力机制)

上图是论文中 Transformer 的内部结构图,左侧为 Encoder block,右侧为 Decoder block。红色圈中的部分为 Multi-Head Attention,是由多个 Self-Attention组成的,可以看到 Encoder block 包含一个 Multi-Head Attention,而 Decoder block 包含两个 Multi-Head Attention (其中有一个用到 Masked)。Multi-Head Attention 上方还包括一个 Add & Norm 层,Add 表示残差连接 (Residual Connection) 用于防止网络退化,Norm 表示 Layer Normalization,用于对每一层的激活值进行归一化。

因为 Self-Attention是 Transformer 的重点,所以我们重点关注 Multi-Head Attention 以及 Self-Attention,首先详细了解一下 Self-Attention 的内部逻辑。

3.1 Self-Attention 结构

上图是 Self-Attention 的结构,在计算的时候需要用到矩阵Q(查询),K(键值),V(值)。在实际中,Self-Attention 接收的是输入(单词的表示向量x组成的矩阵X) 或者上一个 Encoder block 的输出。而Q,K,V正是通过 Self-Attention 的输入进行线性变换得到的。

3.2 Q, K, V 的计算

Self-Attention 的输入用矩阵X进行表示,则可以使用线性变阵矩阵WQ,WK,WV计算得到Q,K,V。计算如下图所示,注意 X, Q, K, V 的每一行都表示一个单词。

Q, K, V 的计算

3.3 Self-Attention 的输出

得到矩阵 Q, K, V之后就可以计算出 Self-Attention 的输出了,计算的公式如下:

Self-Attention 的输出

公式中计算矩阵QK每一行向量的内积,为了防止内积过大,因此除以 �� 的平方根。Q乘以K的转置后,得到的矩阵行列数都为 n,n 为句子单词数,这个矩阵可以表示单词之间的 attention 强度。下图为Q乘以 �� ,1234 表示的是句子中的单词。

Q乘以K的转置的计算

得到��� 之后,使用 Softmax 计算每一个单词对于其他单词的 attention 系数,公式中的 Softmax 是对矩阵的每一行进行 Softmax,即每一行的和都变为 1.

对矩阵的每一行进行 Softmax

得到 Softmax 矩阵之后可以和V相乘,得到最终的输出Z

Self-Attention 输出

上图中 Softmax 矩阵的第 1 行表示单词 1 与其他所有单词的 attention 系数,最终单词 1 的输出 �1 等于所有单词 i 的值 �� 根据 attention 系数的比例加在一起得到,如下图所示:

Zi 的计算方法

补充:Scaled Dot-Product Attention

相似度也可以用其他方式来获得。

整个过程,并行计算?

3.4 Multi-Head Attention

在上一步,我们已经知道怎么通过 Self-Attention 计算得到输出矩阵 Z,而 Multi-Head Attention 是由多个 Self-Attention 组合形成的,下图是论文中 Multi-Head Attention 的结构图。

Multi-Head Attention

从上图可以看到 Multi-Head Attention 包含多个 Self-Attention 层,首先将输入X分别传递到 h 个不同的 Self-Attention 中,计算得到 h 个输出矩阵Z。下图是 h=8 时候的情况,此时会得到 8 个输出矩阵Z

多个 Self-Attention

得到 8 个输出矩阵 �1 到 �8 之后,Multi-Head Attention 将它们拼接在一起 (Concat),然后传入一个Linear层,得到 Multi-Head Attention 最终的输出Z

Multi-Head Attention 的输出

可以看到 Multi-Head Attention 输出的矩阵Z与其输入的矩阵X的维度是一样的。

4. Encoder 结构

Transformer Encoder block

上图红色部分是 Transformer 的 Encoder block 结构,可以看到是由 Multi-Head Attention, Add & Norm, Feed Forward, Add & Norm 组成的。刚刚已经了解了 Multi-Head Attention 的计算过程,现在了解一下 Add & Norm 和 Feed Forward 部分。

4.1 Add & Norm

Add & Norm 层由 Add 和 Norm 两部分组成,其计算公式如下:

Add &amp;amp;amp;amp;amp; Norm 公式

其中 X表示 Multi-Head Attention 或者 Feed Forward 的输入,MultiHeadAttention(X) 和 FeedForward(X) 表示输出 (输出与输入 维度是一样的,所以可以相加)。

Add指 X+MultiHeadAttention(X),是一种残差连接,通常用于解决多层网络训练的问题,可以让网络只关注当前差异的部分,在 ResNet 中经常用到:

残差连接

Norm指 Layer Normalization,通常用于 RNN 结构,Layer Normalization 会将每一层神经元的输入都转成均值方差都一样的,这样可以加快收敛。

4.2 Feed Forward

Feed Forward (前馈;前向神经网络)层比较简单,是一个两层的全连接层,第一层的激活函数为 Relu,第二层不使用激活函数,对应的公式如下。

Feed Forward

X是输入,Feed Forward 最终得到的输出矩阵的维度与X一致。

4.3 组成 Encoder

通过上面描述的 Multi-Head Attention, Feed Forward, Add & Norm 就可以构造出一个 Encoder block,Encoder block 接收输入矩阵 X,并输出一个矩阵 O 。通过多个 Encoder block 叠加就可以组成 Encoder。

第一个 Encoder block 的输入为句子单词的表示向量矩阵,后续 Encoder block 的输入是前一个 Encoder block 的输出,最后一个 Encoder block 输出的矩阵就是编码信息矩阵 C,这一矩阵后续会用到 Decoder 中。

Encoder 编码句子信息


5. Decoder 结构

Transformer Decoder block

上图红色部分为 Transformer 的 Decoder block 结构,与 Encoder block 相似,但是存在一些区别:

  • 包含两个 Multi-Head Attention 层。
  • 第一个 Multi-Head Attention 层采用了 Masked 操作。
  • 第二个 Multi-Head Attention 层的K, V矩阵使用 Encoder 的编码信息矩阵C进行计算,而Q使用上一个 Decoder block 的输出计算。
  • 最后有一个 Softmax 层计算下一个翻译单词的概率。
  • Decoder有N(默认是6)层,每层包括三个sub-layers,多了一个Encoder-Decoder Attention:
    1 )第一个是Masked multi-head self-attention,也是计算输入的self-attention,但是因为是生成过程,因此在时刻 i 的时候,大于 i 的时刻都没有结果,只有小于 i 的时刻有结果,因此需要做Mask.
    2 )第二个sub-layer是对encoder的输入进行attention计算,这里仍然是multi-head的attention结构,只不过输入的分别是decoder的输入和encoder的输出。
    3 )第三个sub-layer是全连接网络,与Encoder相同

5.1 第一个 Multi-Head Attention

        Decoder block 的第一个 Multi-Head Attention 采用了 Masked 操作,因为在翻译的过程中是顺序翻译的,即翻译完第 i 个单词,才可以翻译第 i+1 个单词。通过 Masked 操作可以防止第 i 个单词知道 i+1 个单词之后的信息。下面以 "我有一只猫" 翻译成 "I have a cat" 为例,了解一下 Masked 操作。

        下面的描述中使用了类似 Teacher Forcing 的概念,不熟悉 Teacher Forcing 的童鞋可以参考以下上一篇文章Seq2Seq 模型详解。在 Decoder 的时候,是需要根据之前的翻译,求解当前最有可能的翻译,如下图所示。首先根据输入 "<Begin>" 预测出第一个单词为 "I",然后根据输入 "<Begin> I" 预测下一个单词 "have"。

Decoder 预测

        Decoder 可以在训练的过程中使用 Teacher Forcing 并且并行化训练,即将正确的单词序列 (<Begin> I have a cat) 和对应输出 (I have a cat <end>) 传递到 Decoder。那么在预测第 i 个输出时,就要将第 i+1 之后的单词掩盖住,注意 Mask 操作是在 Self-Attention 的 Softmax 之前使用的,下面用 0 1 2 3 4 5 分别表示 "<Begin> I have a cat <end>"。

第一步:是 Decoder 的输入矩阵和 Mask 矩阵,输入矩阵包含 "<Begin> I have a cat" (0, 1, 2, 3, 4) 五个单词的表示向量,Mask 是一个 5×5 的矩阵。在 Mask 可以发现单词 0 只能使用单词 0 的信息,而单词 1 可以使用单词 0, 1 的信息,即只能使用之前的信息。

输入矩阵与 Mask 矩阵

第二步:接下来的操作和之前的 Self-Attention 一样,通过输入矩阵X计算得到Q,K,V矩阵。然后计算Q和 �� 的乘积 ��� 。

Q乘以K的转置

第三步:在得到 ��� 之后需要进行 Softmax,计算 attention score,我们在 Softmax 之前需要使用Mask矩阵遮挡住每一个单词之后的信息,遮挡操作如下:

Softmax 之前 Mask

得到 Mask ��� 之后在 Mask ���上进行 Softmax,每一行的和都为 1。但是单词 0 在单词 1, 2, 3, 4 上的 attention score 都为 0。

第四步:使用 Mask ���与矩阵 V相乘,得到输出 Z,则单词 1 的输出向量 �1 是只包含单词 1 信息的。

Mask 之后的输出

第五步:通过上述步骤就可以得到一个 Mask Self-Attention 的输出矩阵 �� ,然后和 Encoder 类似,通过 Multi-Head Attention 拼接多个输出�� 然后计算得到第一个 Multi-Head Attention 的输出ZZ与输入X维度一样。

5.2 第二个 Multi-Head Attention

Decoder block 第二个 Multi-Head Attention 变化不大, 主要的区别在于其中 Self-Attention 的 K, V矩阵不是使用 上一个 Decoder block 的输出计算的,而是使用 Encoder 的编码信息矩阵 C 计算的。

根据 Encoder 的输出 C计算得到 K, V,根据上一个 Decoder block 的输出 Z 计算 Q (如果是第一个 Decoder block 则使用输入矩阵 X 进行计算),后续的计算方法与之前描述的一致。

这样做的好处是在 Decoder 的时候,每一位单词都可以利用到 Encoder 所有单词的信息 (这些信息无需 Mask)。

5.3 Softmax 预测输出单词

Decoder block 最后的部分是利用 Softmax 预测下一个单词,在之前的网络层我们可以得到一个最终的输出 Z,因为 Mask 的存在,使得单词 0 的输出 Z0 只包含单词 0 的信息,如下:

Decoder Softmax 之前的 Z

Softmax 根据输出矩阵的每一行预测下一个单词:

Decoder Softmax 预测

这就是 Decoder block 的定义,与 Encoder 一样,Decoder 是由多个 Decoder block 组合而成。

6. Transformer 总结

  • Transformer 与 RNN 不同,可以比较好地并行训练。
  • Transformer 本身是不能利用单词的顺序信息的,因此需要在输入中添加位置 Embedding,否则 Transformer 就是一个词袋模型了。
  • Transformer 的重点是 Self-Attention 结构,其中用到的 Q, K, V矩阵通过输出进行线性变换得到。
  • Transformer 中 Multi-Head Attention 中有多个 Self-Attention,可以捕获单词之间多种维度上的相关系数 attention score。

参考文献

1、论文:Attention Is All You Need
2、Jay Alammar 博客:The Illustrated Transformer
3、pytorch transformer  代码:The Annotated Transformer

————————————————————分割线————————————————————

7、知识点:CPU、GPU、TPU的关系

CPU(Central Processing Unit,中央处理器)擅长调动、管理、协调能力

GPU的全称是Graphics Processing Unit,即图像处理器

GPU的出现我们应该很容易理解了,它就像是处理图片的加速器,有了它CPU就可以全面解放双手了。TPU同样也是,它也是一个加速器,TPU的全称是Tensor Processing Unit,即张量处理器。随着AI智能产业的发展,这时候谷歌就在想,是否能够做一个芯片专门用于机器学习算法的芯片呢?这这样TPU诞生了。

据称,TPU与同期的CPU和GPU相比,可以提供15-30倍的性能提升,以及30-80倍的效率(性能/瓦特)提升。初代的TPU只能做推理,而训练还需要话费很多额外的资源,当时已经用于机器学习而设计,并且用在了AlphaGo上以超人的熟练完成了围棋。第二代TPU既可以用于训练神经网络,又可以用于推理。

总结一下,CPU、GPU、TPU的区别,CPU作为电脑的中央处理器调动、管理计算机的各项资源,而GPU和TPU就是给它打下手的,协助处理图像资源机器算法学习,最终实现综合性能的加速。关系嘛,怎么说呢,少了GPU和TPU也能干活,那不就是累了嘛,导致计算机资源的占用和超负荷。

8、知识点:什么是自注意力机制?

如果你认为自注意力机制类似于注意力机制,那么恭喜你答对了,它们从根本上有很多相同的概念和许多常见的数学运算。

一个self-attention模块输入为 n,输出也为 n.那么在这个模块内部发生了什么?用门外汉的术语来说,self-attention机制允许输入彼此之间进行交互(“self”)并找出它们应该更多关注的区域(“Attention”)。输出是这些交互作用和注意力得分的总和。

————————————————————分割线————————————————————

9、台大李宏毅老师讲解——4.13号下午看

Transformer (youtube.com)

不容易平行化RNN的运算。

CNN不太熟悉,听起来有点吃力呀。

每个三角形,可以平行化计算。

self-attention做的就是替代之前RNN做的东西。

用RNN做过事情,都用attention洗过一遍了。

attention的方式,求解相似度,可以用其他的方法,但目前来说,大部分都是使用原文中的方法。

self-attention做的事情是和RNN一样的,但其可以进行平行计算,再远的都可以计算。

b1到b4,可以用矩阵运算,效率更高。

矩阵/向量,运算。

K矩阵,可以认为是transpose,线性变换的作用?

做softmax后,得到A-hat。

这里为什么是V*A,而不是A*V矩阵??

self-attention layer中使用的就是矩阵乘法,矩阵乘法可以轻易的用GPU来加速。

讲述了位置embeeding和词汇embedding,相加的原因。

Wp的长相。

上图红框中用self---替换RNN ,可以进行并行运算。

翻译过程演示,就是encoder和decoder的过程。

到这个地方,听不懂了,layer norm和batch norm 的区别??

RNN中使用,layer norm??

总结:transformer的工作过程。

 

 attention可以知道it的代指,厉害呀。

多头head attention中,每一组QKV都做不同的事情。

————————————————分割线————————————————

10、李沐解读transformer论文

Transformer论文逐段精读【论文精读】_哔哩哔哩_bilibili

读论文的顺序。1-8.

论文取名字很重要,给你的模型取一个名字。

5,相关工作部分,要讲清楚,和你论文相关的工作都有哪些,跟你的联系是什么,你和他们的区别在哪里

6,在神经网络年代,会画图是非常重要的技能,绘制一个能把全文内容表达清楚的结构图是非常重要的。

layer norm和batch norm 一个横着切,一个竖着切。

矩阵乘法是非常好并行的东西。GPU又支持并行计算。

11、Transformer 之什么是注意力机制(Attention)

https://www.youtube.com/watch?v=z2TqBUouF8I

一般情况下,K1等于V1,??

softmax归一化的时候,会有问题。所以,除以了根号d。

12、YouTube的transformer讲解(0809看)

下面记录的不是很详细,如果想具体了解,请看视频,下面有链接。

https://www.youtube.com/watch?v=GGLr-TtKguA

transformer是基于注意力机制做出来的。

本质是啥?是加权求和,虽然没错,但是这没有用。CNN , RNN , 都是加权求和。

左边编码器,右边解码器,从这个图入手去理解transformer

这个图画的很不错。

人工智能的典型应用,图像识别,自然语言处理,

RNN,以及RNN的改进版,LSTM,GRU,

从数学角度来说,RNN,CNN,Transformer的本质是一样的。?

对最基本的单元进行编码?按照token来,对token进行数字化。

独热编码,有多少token,就有多少维度的空间。这个肯定不行。空间维度过于高,并且token之间的语义关系,都是通过维度之间的关系去体现的。

分词器,把所有的语义都变成了长度问题,完全没有利用维度关系。

结合两者的优点,找一个方法,维度高,但是又没那么高的空间,完成编码和解码的工作。

矩阵和向量相乘,看做是一种空间变换。下面是一点点解释,从基变换的角度比较容易理解。

这里矩阵代表了旧坐标系和新坐标系之间的关系。

用二次型可以让向量由直变曲。

多个向量与矩阵相乘,可以表示多个向量进行空间变换。

为了方便表示线性变换,就把线性变换的系数拿出来写成矩阵的形式。

通过矩阵的行数和列数,可以很快的确定变换前后的维度。

把矩阵可以看做空间变换的一种形式,或者是一组向量。

神经网络的输入和输出,也可以看做矩阵变换,但是这比矩阵变换麻烦的多。

隐藏层可以让模型更复杂,从低纬度到高纬度,总能找一个超平面,可以分开不同的类。

对隐藏层的理解?

隐藏层:对上一层数据进行了抽象。

层多的话,可以对浅层的特征进行复用,比如8和6的下部,都是圆。

=======先理解注意力机制,再理解transformer======

词向量与三个不同的矩阵相乘后,可以得到Q , K ,V 三个不同的矩阵。

词嵌入,解决单个token语义的表示问题。

多个词一起输入,表示的语义,用注意力机制可以很好的表现出来。

输入一句话的话,这时候词向量成为一个数字矩阵,

注意力机制最重要的是,得到QKV之后的操作。

除了标准差之后,方差又变成了1.

除以根号下Dout,是从概率角度来考虑的。?

softmax计算,也是把问题放在概率下进行的。对每一行进行归一,即每一行求和为1.然后得出,注意力得分的A‘  再与V进行求和计算。要明白A'与V相乘的意义。

乘以V代表着什么呢?代表着不同的组合方式?然后不同的组合方式代表着不同的语义信息?

赋予词向量主观性的语义?

V表示token的语义,A'为什么能够表达上下文关联的修改系数呢?

Q和K相乘,是两个矩阵中的向量进行内积计算,内积计算,其实就是一个向量在另一个向量上的投影。投影其实就是在体现两个向量之间的相关关系。

Q和K的乘积,是得到了不同词向量之间的相互关系。然后再拿着这个关系去修正词向量,即A'与V的乘积。

二次型的模型有更强的表达能力。

选择两个矩阵相乘,某种程度上也是给注意力机制加入非线性因素,让模型可以表达更加复杂的情况。

注意力机制中的 Q和K,承担着设定语义和表达语义的区别。

自注意力和交叉注意力之间的区别。

交叉注意力在翻译中反而是一种校准,效果会好一些。

解决seq2seq的问题。

解码器是有编码器的功能的。

有的大语言模型只用解码器或者只用编码器。

transformer的训练和推理是可以同时进行的。

相对位置编码:

多头注意力机制就是能力更强的CNN。

词向量的维度,对应的就是CNN中的通道。

多头注意力机制的多头,对应的就是卷积核。

在输入模型之前,先要进行的操作。

烧脑啊

函数其实是一个在无穷维上的向量。

听不懂了,哈哈

多头注意力机制。

 


 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐