注意力(机器学习)
目录
注意力(机器学习)
在人工神经网络中,注意力是一种旨在模仿认知注意力的技术。其效果是增强输入数据的某些部分,同时减弱其他部分–其动机是网络应该将更多的注意力投入到数据中小而重要的部分。学习数据的哪一部分比另一部分更重要取决于上下文,而这是通过梯度下降训练出来的。类似注意力的机制在20世纪90年代以乘法模块、sigmapi单元和超网络等名称推出。它的灵活性来自于它作为软权重的作用,可以在运行时改变,与标准权重相比,后者在运行时必须保持固定。注意力的用途包括神经图灵机中的记忆,可分化神经计算机中的推理任务,转化器中的语言处理,以及感知器中的多感官数据处理(声音、图像、视频和文本)。
一般的想法
给定一个标记序列{displaystylew_{i}}为每个人计算一个软权重。{displaystylet_{i}}都被分配了一个值向量。都被分配了一个值向量{displaystylev_{i}}被分配到一个价值向量vi{textstyle{sum_{i}w_{i}v_{i}}是注意力机制的输出。是注意力机制的输出。查询键机制计算软权重。从每个标记的词嵌入中,它计算出其相应的查询向量在一些架构中,有多个关注头,每个关注头都独立运作,有自己的查询、键和值。
一个语言翻译的例子
为了建立一个将英语翻译成法语的机器,我们采用了基本的编码器-解码器,并在其中嫁接了一个注意力单元。在最简单的情况下,注意力单元由循环编码器状态的点积组成,不需要训练。在实践中,注意力单元由3个全连接的神经网络层组成,称为query-key-value,需要进行训练。见下面的变体部分。带有注意力的编码器-解码器。左边部分(黑线)是编码器-解码器,中间部分(橙色线)是注意力单元,右边部分(灰色和彩色)是计算的数据。H矩阵和W向量中的灰色区域为零值。数字下标表示矢量大小,而字母下标i和i-1表示时间步骤。文件:注意-1-sn.png作为一个矩阵来看,注意力权重显示了网络如何根据上下文调整其焦点。

对注意力权重的这种看法解决了神经网络被批评的可解释性问题。不考虑词序而进行逐字翻译的网络,如果在这些方面可以分析的话,会有一个对角线主导的矩阵。非对角线的优势表明,注意力机制有更细微的差别。在解码器的xxx遍中,94%的注意力权重在xxx个英语单词I上,所以网络提供了单词je。在解码器的第二遍中,88%的注意力权重在第三个英文单词you上,所以它提供了t’。在最后一次解码中,95%的注意权重在第二个英语单词love上,所以它提供了aime。
注意力(机器学习)的变体
注意力有很多变体:点积、查询-键值、硬、软、自我、交叉、Luong和Bahdanau,仅举几例。这些变体重新组合编码器侧的输入,将这些影响重新分配给每个目标输出。通常,点积的相关式矩阵提供了重新加权的系数(见图例)。