Datawhale NLP课程 Task2

图解Attention

seq2seq模型

输入:一个序列;输出:另一个序列
模型细节:seq2seq模型是由encoder和decoder组成,encoder处理输入序列中的每个元素,把这些信息转成一个向量(称为上下文context),整个序列输入完成后,encoder把context发送给decoder,decoder生成输出序列中的元素。在transformer出现之前,encoder和decoder一般用RNN实现。
在这里插入图片描述
context向量的长度是基于编码器RNN的隐藏层神经元的数量。RNN在时间步上接受2个输入:1. 输入序列中的一个元素(用word embedding把单词转换到一个向量空间);2.一个hidden state。最后一个hidden state是我们要传递给decoder的context。

(https://img-blog.csdnimg.cn/de3f00930b044d799d445c9bbc38d363.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmdydW9oYW4xOTk1,size_16,color_FFFFFF,t_70)

Attention讲解

事实证明,上下文context向量是这类模型的瓶颈。这使得模型在处理长文本时面临非常大的挑战。
一个注意力模型不同于经典的序列到序列(seq2seq)模型,主要体现在 2 个方面:

  1. 编码器会把所有时间步的hidden state传给解码器,而不是只传递最后一个hidden state。
  2. 解码器在产生输出之前,做了一个额外的处理,给每个hidden state一个分数,高分的hidden state会被放大,低分的则会被缩小。
    在这里插入图片描述
    注意力模型的整个过程:
    在这里插入图片描述

图解transformer

2017 年,Google 提出了 Transformer 模型,用 Self Attention 的结构,取代了以往 NLP 任务中的 RNN 网络结构。这个模型的其中一个优点,就是使得模型训练过程能够并行计算。Transformer也是由encoder和decoder组成的。
transformer的输入:
使用word embedding algorithm,将每一个词转换成一个词向量,输入的句子是一个向量列表。在实际中,每个句子的长度不一样,我们会取一个适当的值,作为向量列表的长度。如果一个句子达不到这个长度,那么就填充全为 0 的词向量;如果句子超出这个长度,则做截断。句子长度是一个超参数。
Encoder:
每个单词转换成一个向量之后,进入self-attention层,每个位置的单词得到新向量,然后再输入FFN神经网络。

Self-Attention

  1. 计算query, key, and value向量
    在这里插入图片描述

  2. 计算Attention分数
    这些分数,是通过计算 “Thinking” 对应的 Query 向量和其他位置的每个词的 Key 向量的点积,而得到的。如果我们计算句子中第一个位置单词的 Attention Score(注意力分数),那么第一个分数就是 q1 和 k1 的内积,第二个分数就是 q1 和 k2 的点积。
    在这里插入图片描述

  3. Normalize + Softmax
    在这里插入图片描述

  4. 每个分数分别与每个 Value 向量相乘,得到的向量相加,就得到了 Self Attention 层在这个位置(这里的例子是第一个位置)的输出。
    在这里插入图片描述

Reference

https://github.com/datawhalechina/Learn-NLP-with-Transformers

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值