1 Attention 基本原理
神经网络中可以存储的信息量称为网络容量(Network Capacity)。一般来 讲,利用一组神经元来存储信息时,其存储容量和神经元的数量以及网络的复杂 度成正比。如果要存储越多的信息,神经元数量就要越多或者网络要越复杂,进 而导致神经网络的参数成倍地增加。
我们人脑的生物神经网络同样存在网络容量问题,人脑中的工作记忆大概 只有几秒钟的时间,类似于循环神经网络中的隐状态。在有限的时间内,并不能同时处理来自视觉、听觉、触觉各种各样的输入信息。大脑神经系统有两个重要机制可以解决信息过载问题:注意力和记忆机制。
注意力一般分为两种:
- 一种是自上而下的有意识的注意力,称为聚焦式注意力(Focus Attention)。 聚焦式注意力是指有预定目的、依赖任务的、主动有意识地聚焦于某一对象的注意力, 聚焦式注意力也常称为选择 性注意力(Selective Attention)。
- 另一种是自下而上的无意识的注意力,称为基于显著性注意力(SaliencyBased Attention)。基于显著性的注意力是由外界刺激驱动的注意,不需要主动 干预,也和任务无关。
下面通过一个例子来说明两种注意力的区别:
鸡尾酒会效应。当一个人在吵闹的鸡尾酒会上 和朋友聊天时,尽管周围噪音干扰很多,他还是可以听到朋友的谈话内容,而忽 略其他人的声音(聚焦式注意力)。同时,如果未注意到的背景声中有重要的词 (比如他的名字),他会马上注意到(显著性注意力)。
Attention的作用:只选择一些关键的信息输入进行处理,来提高神经网络的效率。
Attention计算流程:
图片来源:深度学习中的注意力机制
在第一个阶段,可以引入不同的函数和计算机制,根据Query和某个,计算两者的相似性或者相关性,最常见的方法包括:求两者的向量点积、求两者的向量Cosine相似性或者通过再引入额外的神经网络来求值。
第一阶段产生的分值根据具体产生的方法不同其数值取值范围也不一样,第二阶段引入类似SoftMax的计算方式对第一阶段的得分进行数值转换,一方面可以进行归一化,将原始计算分值整理成所有元素权重之和为1的概率分布;另一方面也可以通过SoftMax的内在机制更加突出重要元素的权重。即一般采用如下公式计算:
第二阶段的计算结果即为对应的权重系数,然后进行加权求和即可得到Attention数值:
通过如上三个阶段的计算,即可求出针对Query的Attention数值,目前绝大多数具体的注意力机制计算方法都符合上述的三阶段抽象计算过程。
2 Hierarchical Attention Networks
HAN模型就是分层次的利用注意力机制来构建文本向量表示的方法。
文本由句子构成,句子由词构成,HAN模型对应这个结构分层的来构建文本向量表达;
文本中不同句子对文本的主旨影响程度不同,一个句子中不同的词语对句子主旨的影响程度也不同,因此HAN在词语层面和句子层面分别添加了注意力机制;
分层的注意力机制还有一个好处,可以直观的看出用这个模型构建文本表示时各个句子和单词的重要程度,增强了可解释性。
这篇论文里面使用双向GRU来构建句子表示和文本表示,以句子为例,得到循环神经网络中每个单元的输出后利用注意力机制整合得到句子向量表示(不使用attention时,一般会使用MAX或AVE),过程如下:
按照文中说法,先经过一层MLP得到隐层表示;然后与word level context vector (词语级别的context vector)做点积,各词语得到的结果再经过softmax函数后的结果就是各自的重要程度,即;最后加权和得到句子表示。文本向量的构建与此一致,之后经过全连接层和softmax分类。
3 Attention模型进行文本分类
还有点没吃透
https://androidkt.com/tensorflow-text-classification-attention-mechanism/
推荐文章: