📜  NLP中的自注意力(1)

📅  最后修改于: 2023-12-03 15:17:53.084000             🧑  作者: Mango

NLP中的自注意力

在NLP中,自注意力(Self-Attention)是一种先进的技术,被广泛应用于机器翻译、句子分类、语音识别等领域。它是由Google的研究人员在2017年提出来的,是Transformer模型的核心部分。

自注意力是什么?

自注意力指的是一种机制,用于在序列中计算每个词(或者token)的权重,并将这些权重用于计算该词的表征(或者embedding)。换句话说,自注意力机制可以将每个词变成一个“带权值”的向量。

这里我们介绍一下自注意力的核心公式:

$$Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}})V$$

这个公式有三个输入:查询矩阵Q,键值矩阵K和值矩阵V。它将Q和K做一个点积,得到“注意力分数”(也就是每个词的权重分数),并使用softmax将分数转化为权重。最后,将这些权重应用于值矩阵V,得出最终的输出。

自注意力的应用

自注意力机制被广泛用于Transformer模型中,如BERT、GPT-2等。这些模型的成功在一定程度上缘于自注意力的优越性能,它可以处理长序列并捕获全局关系。

例如,在机器翻译任务中,我们需要将输入的源语言句子转化为目标语言句子。自注意力可以将源语言句子中的每个词转化为其对应的目标语言词的权重。这样,我们就可以生成与源语言意思等价的目标语句子。

自注意力的局限

尽管自注意力在NLP中表现非常优异,但它仍然有一些局限性。其中最大的问题是:它需要计算所有词之间的关系,因此耗费的计算资源较多。此外,自注意力也很难处理超长序列(如超过 1k 的长度)。

总结

自注意力是一种先进的NLP技术,被广泛用于Transformer模型中。它可以将每个词变成一个带权值的向量,用于处理序列中的全局关系。但它也存在着一些局限性,如计算量巨大,很难处理超长序列。