在自然语言处理中,序列数据的输入包括一系列文本、语音信号、图像或视频等。
传统的循环神经网络(RNN)模型已经在这些任务中取得了很好的效果,但是该模型存在着两个主要问题:一是难以并行计算,二是难以捕捉长距离依赖关系。为了解决这些问题,Transformer模型应运而生。
Transformer模型的核心是自注意力机制(Self-Attention Mechanism),其作用是为每个输入序列中的每个位置分配一个权重,然后将这些加权的位置向量作为输出。
这一节主要讲一下注意力机制
在人类生活中,假如去看如下所示的海报,为了获取信息,总是会把更多的注意力放到文字上面
注意力机制就是一种模仿人类视觉和认知系统的方法,它允许神经网络在处理输入数据时集中注意力于相关的部分。
大佬们将其用式子表达如下:
Q代表查询,K代表key关键字,V代表Value值
这个式子的大概意思就是用查询的Q和所有的关键字K对比,得到和查询的相似性,再结合对应的价值V,得到最后的需要关注的
就好像在电商中搜索一个物品时,会先拿这个查询Q和后台所有物品关键字K比较,再结合这个物品的价值V(好坏评、广告等),最后得到适合推荐给我们关注的物品
注意力机制中,一个需要注意的就是自注意力机制
自注意力机制的基本思想是,在处理序列数据时,每个元素都可以与序列中的其他元素建立关联,而不仅仅是依赖于相邻位置的元素。它通过计算元素之间的相对重要性来自适应地捕捉元素之间的长程依赖关系。
引用这篇博客(Illustrated: Self-Attention)的一个动图来演示如下
对于自注意力机制而言,计算过程主要关注一个输入序列内部元素之间的关系。
在计算注意力权重时,每个元素都与序列中的所有其他元素进行关联度计算,即每个元素都被认为是“查询”和“键”,并计算其与其他元素的相关性得分。
正因为它通过直接考虑序列中任意两个元素之间的关联程度,能够更好地捕捉长距离的依赖关系,从而改善了模型在处理长文本或长句子时的表现。
就像最开始提到的,Transformer模型是自注意力机制的一种典型应用,像BERT和GPT等模型都是基于Transformer结构,并采用了自注意力机制来处理输入序列