Transformer模型的深度理解

一、NLP中的encoder和decoder

本质:多个编码器和解码器(编码器结构相同,参数不同)(原文用了6个)
在这里插入图片描述
为什么要先编码后解码?

NLP处理的是Sequence2Sequence任务,主要是泛指一些Sequence到Sequence的映射问题。

通常的做法是将输入的源Sequence编码到一个中间的context当中,这个context是一个特定长度的编码(可以理解为一个向量),然后再通过这个context还原成一个输出的目标Sequence。

编码之后不必每次训练都预处理一次数据,可以直接解码读取数据

二、模型框架

在这里插入图片描述

编码器

每个编码器都是由两个子层组成,但是每个编码器的权重不相同

  • Self-Attention 层(自注意力层)
    作用:让编码器在对特定词进行编码时使用输入句子中的其他词的信息(可以理解为:当我们翻译一个词时,不仅只关注当前的词,而且还会关注其他词的信息)
  • Position-wise Feed Forward Network(前馈网络,缩写为 FFN)

在这里插入图片描述

解码器

比编码器多了注意力层
在这里插入图片描述

  • Self-Attention 层(自注意力层)
  • Encoder-Decoder Attention层(注意力层)
  • Position-wise Feed Forward Network(前馈网络,缩写为 FFN)

三、数据的表现流动载体—张量/向量

三、自注意力层(Self-Attention)

3.1 为什么要有自注意力机制

举个翻译的例子:

The animal didn’t cross the street because it was too tired

句子中的 it 指的是什么?是指 animal 还是 street ?对人来说,这是一个简单的问题,但是算法来说却不那么简单。

当模型在处理 it 时,Self-Attention 机制使其能够将 it 和 animal 关联起来。

当模型处理每个词(输入序列中的每个位置)时,Self-Attention 机制使得模型不仅能够关注当前位置的词,而且能够关注句子中其他位置的词,从而可以更好地编码这个词。
在这里插入图片描述
当我们在编码器 #5(堆栈中的顶部编码器)中对单词”it“进行编码时,有一部分注意力集中在”The animal“上,并将它们的部分信息融入到”it“的编码中。

3.2 Self-Attention 机制

在这里插入图片描述
对于 Self Attention 来讲,Q(Query查询),K(Key键)和 V(Value值)三个矩阵均来自同一输入,并按照以下步骤计算:

  1. 首先计算 Q 和 K 之间的点积,为了防止其结果过大,会除以为 d k \sqrt{d_{k}} dk ,其中 d k d_{k} dk是Key 向量的维度。
  2. 然后利用 Softmax 操作将其结果归一化为概率分布,再乘以矩阵 V 就得到权重求和的表示
    在这里插入图片描述

3.3 具体的计算实例

第一步:对编码器的每个输入向量(在本例中,即每个词的词向量)创建三个向量:Query 向量、Key 向量和 Value 向量。

它们是通过词向量X1和X2分别和 3 个矩阵相乘得到的,这 3 个矩阵通过训练获得。分别是 W Q W^{Q} WQ, W

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值