最近在阅读论文的过程中接触到了Multi-Head Attention的结构,脑子里的第一反应是都叫Attention,那Mutli-Head Attention 和 Self-Attention 之间是什么关系呢?
在网上查阅资料,记笔记,总结一下。
首先,简单介绍一下multi-head attention,我最早接触到这种结构是在Transformer的编码器结构中,不知道这种编码器结构并不影响你去了解multi-head attention。简单来说它是一种多个不同表示空间的获取方法,如果以文本识别为例,一个attention就对应一个空间,那么有多个attention自然就可以获得多个空间。multi-head attention 为attention提供了多个表示子空间(representation subspaces),在每个attention中,采用Q、K、V权重矩阵(一种权重表示方式),这使得每个矩阵都通过随机初始化生成。
值得注意的是multi-head attention并不是独立的结构,它自身无法单独完成训练,但在使用过程中可以通过堆叠形成深层结构。常用于文本分类等场景的特征提取部分。
在对self-attention进行介绍之前,先来了解一下attention机制。
早在attention机制诞生之前,CNN、RNN及变体模型就已经存在了,那为何还要引入注意力机制呢?
主要原因:
1.算力限制:哪怕在今天一些复杂的模型依旧会受到算力的限制;
2.对于算法的优化:人们一直都在追求让神经网络能像人一样思考,但对于长距离的依赖问题,LSTM(长短期记忆)只能在一定程度上进行缓解,其“记忆”能力并不算强。
什么是attention?
当人在看一张图片时,大脑会主动将注意力放在有用的信息上,这是大脑的注意力机制。本质上讲是从一堆信息中筛选出最有用的信息,而在上文提到的权重就是衡量信息价值的标准。