深度学习-RNN注意力模型

简介

*注意力模型来源于人脑对事物的观察,由于人脑在观察事物时,人眼睛聚焦的位置只是很小的一块,这时人脑会聚焦在这一小块图案上,此时,人脑对图的关注并不是均衡的,是有权重区别的。

*注意力模型多用于对图片的文字说明,对于图片的描述,我们接下来会介绍两种类型的图片描述方式:

         [1]传统图像描述   

         [2]注意力模型

传统图像描述

*传统方式是类似下图的方式,从形式上是将输入图片传入一个CNN中来获取对图片特征的提取(输出层信息),并将获取的特征作为输入到RNN网络中,通过RNN输出对应的文字描述,但这种组合形式能描述的文字数不多,准确率不高,而且图片特征只引入了一次,信息灵活性不强

注意力模型

*Attention Model相对于传统模式的改进有:          

        [1]将原始图特征多次喂入RNN模型,使得模型的多个位置都能看到图片特征。          

        [2]让网络学会查找关注点,让网络根据关注点来聚焦图像生成文字内容描述。

*经过以上两点的改进,我们可以构建下图的模型,我们会将输入图片传到CNN网络,抽取CNN中间卷积层的信息,通过RNN对卷积层位置的定位来获取局部位置信息,也成为注意力所在意的位置信息。

*接下来对网络从左到右分析(CNN假定为VGG):

        [1].我们把输入图像放到预训练好的VGG网络中去,适应VGG网络进行正向计算,但是我们不会像往常那样时候最后的输出层数据,而是使用中间位置的卷积层feature map数据,因为卷积层是通过滑窗得到的,仍具有一点的位置块信息,比如这里使用的卷积层是512个14*14大小的feature map信息,将其作为集中注意力的依据。          

       [2].使用RNN时,我们首先会走③步骤,这里会将整个卷积层信息作为输入来获取第一次要集中的点,这里a1处会得到一个1*196的向量,这个向量上不同的数值会代表要给卷积feature map中不同点多大的注意力,从而表示对不同位置的注意。

      [3].获取注意力向量之后,我们接下来如②会将上一部分的注意力向量1*196与卷积层大小为196*512的向量做乘积,乘积得到的1*512向量z1(每个map上的一个点)表示要注意的点的位置信息,也就是我们当前输出文字时要看到的位置,a1的传入计算会得到注意力点的位置信息z1(如图①),将z1结合第一个输入y1传入RNN网络。

       [4].将z1和h1结合传入网络后,当前时序下,我们会通过RNN计算得到两个softmax输出值a2和d1,其中a2是新的位置向量,向量大小为1*196,d1是词输出的预测概率信息,大小应为1*词向量数。        

      [5].重复2和4中的过程,不断将输出a与卷积层相结合来生成新的位置点信息,从而获取新的注意力,使用新注意力结合输入获取新的输出信息d。

猜你喜欢

转载自blog.csdn.net/maqunfi/article/details/84435220