Transformer-小记

Transformer模型分为两大部分,分别是编码器encoder和解码器decoder,如图:
在这里插入图片描述
编码器由六个相同的层堆叠在一起,解码器也由六个相同的层堆叠在一起:
在这里插入图片描述
每一层编码器都由两个支层:self-attention层(自注意力)和feedforward(前向网络),从编码器输入的句子首先经过self-attention层,对每个单词编码时会关注句子中的其他单词。self-attention层的输出流向feedforward层。解码器增加了一个attention层,该层有助于解码器能够关注到输入句子的相关部分。
在这里插入图片描述
要将输入转化成输出,首先要对输入的每个单词用词嵌入算法转化成词向量:
在这里插入图片描述
之后,每个单词都会流经编码器中的两个子层。在self-attention层中,(1)从每个单词的词向量中生成三个向量。也就是说对于每个单词,创造一个查询向量、一个键向量和一个值向量。这三个向量是通过词嵌入与三个权重矩阵后相乘创建的。
在这里插入图片描述
(2)计算分值,对"Thinking machine"这一句话来说,对thinking计算attention的分值,要计算每个词与thinking的评分,这意味着在编码thinking时,每个输入词有多少集中关注度,这个分值,通过“Thinking”对应查询向量与所有词的键向量依次做点积得到。所以如果处理位置最靠前的词的自注意力的话,第一个分数是q1和k1的点积,第二个分数是q1和k2的点积。
在这里插入图片描述
(3)将分数除以8,让梯度更稳定。
(4)然通过softmax使所有单词的分数归一化,得到的分数都是正值且和为1,softmax分值决定着在这个位置,每个词的表达程度。
(5)将softmax分值与value-vec按位相乘,保留关注词的value值,削弱非相关词的value值。
(6)将所有加权向量加和,产生该位置的self-attention的输出结果。
在这里插入图片描述
整个self-attention层的计算公式为:
在这里插入图片描述
最后的编码器的输出被转换为K(键向量)和V(值向量),被每个解码器的"encoder-decoder atttention"层来使用,帮助解码器集中于输入序列的合适位置。解码器中的self-attention层表现的模式与编码器不同:在解码器中,self-attention层只被允许处理输出序列中更靠前的那些位置。在softmax步骤前,它会把后面的位置给隐去(把它们设为-inf)。
因为 Transformer 里没有使用 RNN,不是逐词预测,所以直接输入序列的话就缺少时序信息,即对输入词的前后位置不敏感,因此需要在输入到encoder和decoder前给输入序列加上每个词的位置信息。
参考:
The Illustrated Transformer
图解Transformer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值