APP下载

多头注意力与语义视频标注

2020-03-19开,胡

计算机工程与应用 2020年6期
关键词:解码语义注意力

石 开,胡 燕

武汉理工大学 计算机学院,武汉430070

1 引言

用机器自动生成自然语言文字来描述视频内容称为视频标注。它在视觉和文字之间起到非常重要的桥接作用,同时它也是计算机视觉领域当中一项非常有挑战性的任务。视频标注有非常广泛的实际应用前景,例如,可以利用文字标注来高效地进行视频索引和视频分类。结合语音合成技术,使用语音描述视频内容也可以使视障人士受益[1]。由于基于序列学习的方式相比基于句子模板的方法产生视频标注更加直接且产生的句子结构更加灵活,因此,近年来提出的模型很多都是基于序列学习的方法[2-7]。在序列学习的方法上结合注意力机制或语义信息目前已经开始逐渐受到研究人员的关注[8-11]。

文献[3]提出名为S2VT(Sequence to Sequence-Video to Text)的序列到序列的视频标注模型。它采用了机器翻译领域广泛应用的编码器-解码器框架,用CNN 和LSTM 共同组成编码器,解码器单独由LSTM 构成。它的训练过程是端到端的,而且可以处理变长输入输出并能学习输入序列中的任意时间结构。在S2VT模型的基础之上,文献[8]结合时序注意力机制,通过在解码生成每个单词时给编码端第一层LSTM 的输出分配不同权重的方式提升焦距关键信息的能力。文献[1]中提出的基于3D CNN-LSTM 结构的视频标注模型中,使用3D CNN 网络学习视频局部信息的同时使用了注意力机制学习视频特征的全局时序关系。这两种模型在一定程度上使解码端能够获取更多的视频编码信息。还有一些视频标注模型引入了语义信息,如文献[9]提出了一个统一的框架,同时学习标注生成和语义嵌入,后者通过创建一个语义空间强化视频内容和生成文字之间的语义关系。文献[10]在视频标注过程使用了语义探测机制预测视频的语义标签概率,并将语义概率信息用来扩展解码端LSTM 网络的参数矩阵,取得了非常优秀的效果。但是它提出的模型由图像标注模型拓展而成,在生成视频特征表示的时候和文献[9]中的方法一样简单的对特征序列进行了聚合平均,使得模型失去了学习原始视频特征时间序列信息的能力,而且,它采用的分阶段的策略,语义探测模型和视频标注模型分开训练,训练过程不是端到端的。文献[11]提出的视频标注模型在LSTM 内部结合了注意力机制,并且在计算损失时考虑了视频内容和产生句子语义相关性,标注效果有较大提升。

还有许多其他的视频标注方法,有的方法采用多模态信息,如视频、音频和类别信息等,同时使用这些信息产生视频特征表示[12-13]。有的方法探寻使用多记忆模型来加强长距离依赖关系学习能力[14]。还有的方法同时利用了编解码框架中视频到句子的前向信息和句子到视频的后向信息[15]。这些方法极大地提升了视频标注的水平,但是仍然有一些问题存在,例如将各种信息编码成单一特征表示导致解码信息单一。大部分的视频标注模型都先将各种信息经过编码器生成视频的特征表示而后传递给解码端,导致解码信息过少。

针对这个问题,本文提出一个名为MHA-S2VT 的改进模型,通过使用多头注意力[16]机制使解码端能够获得更多视频编码信息。S2VT是一个简单但是有效的视频标注模型,以它为基础进行改进。MHA是Multi-Head Attention 的首字母缩写,代表多头注意力,原本用在机器翻译领域并取得优秀的效果。为了使解码信息进一步丰富,还在模型中加入了语义探测和语义融合机制。将优化后的MHA-S2VT 模型和原始S2VT 模型以及其他一些模型进行对比,和模型自身也进行了分步对比,分析多头注意力和语义信息给模型带来的效果提升。

2 视频标注模型

视频标注模型总体结构如图1 所示,在S2VT 模型的基础上添加了上下文环境向量用来作为多头注意力的键和值。为了能够使用语义信息,还在解码端添加了语义探测单元。模型遵从编码器-解码器结构,编码器的主体是一个双层LSTM 网络,接收由CNN 提取的视频特征序列,并用第二层LSTM 的输出构建上下文环境向量。解码器由语义探测单元和双层LSTM 解码网络组成。图1中Tag代表预先提取的语义概念标签。双层解码LSTM 网络接收编码网络、语义预测单元的输出以及上下文环境向量和语义标签作为输入。

图1 模型总体结构

2.1 S2VT模型回顾

S2VT 模型的主体部分是一个双层LSTM 网络。LSTM 由于可以通过遗忘门释放无关信息使得它可以避免消息饱和和梯度消失问题,在机器翻译和视频标注领域使用非常广泛。

对于一个LSTM 单元,在步数t 的时候给定输入xt,LSTM单元可以用公式表述为:

其中it,ft和ot代表输入门、遗忘门和输出门。σ 代表用sigmoid 激活函数,φ 代表tanh 激活函数,*代表元素点乘。ct代表细胞状态,ht是在第t 步产生的输出。

对于第一层LSTM网络可用公式表述为:

其中,xt在编码端代表由CNN 提取的单个视频特征,在解码端则代表用零填充的空向量。

第二层LSTM网络也可以用公式表述为:

其中,wt-1在解码端代表上一次生成的词向量,在编码端则用零填充。代表第一层LSTM网络的输出。在解码端的每一步t,用第二层LSTM 网络的输出生成单词。生成单词y的概率分布可以表示为:

其中,yι∈V,V 代表整个词表。模型选择词表中概率最大的单词生成句子。为了和后面形式统一,把标注生成部分的损失定义为:

N 和M 代表生成句子总数、句子中单词的数量。p(wj)代表根据当前状态和前一个生成的单词生成的第j 个单词在标注中的概率。

2.2 多头注意力

如图2 所示,用A 表示多头注意力机制,在解码的每一步第二层LSTM 都要使用多头注意获取编码端信息。多头注意力的键和值都是在编码阶段生成的上下文环境向量,问题则是上一步的输出状态。和文献[8]使用第一层LSTM 输出作为上下文环境向量的方式不同,使用第二层LSTM 网络的输出向量。受到文献[15]中机器翻译模型的启发,在改进的模型中使用多头注意力,多头注意力的优点在于可以捕获不同子空间上的相关信息,在机器翻译中取得了更好的效果。

图2 解码单元

多头注意力的第一步是将问题、键和值线性映射到多个不同的子空间,分别计算映射后每一子空间的上下文向量的加权和。用C 代表上下文环境向量代表LSTM 第二层网络上一步输出向量,第一步可以用公式表述为:

第二步是将n 个子空间上的注意力输出拼接得到多头注意力输出,用公式表述为:

WO∈Rndv×dh。拼接之后的结果作为第二层LSTM 单元的输入之一。

对于每一个子空间,进行线性映射需要的参数个数为2×dh×dk+dh×dv个,为了方便计算,将n设置为10,上下文向量映射到10 个子空间,dk=dv=dh/10。加上拼接所用的参数WO,最后总的参数个数为4×dh×dh个。由于每个子空间都把维度减少到了原来的十分之一,所以总的参数个数和所有维度下单头注意力相比并没有增加多少。

2.3 语义探测与语义融合

受文献[10]和图像标注[17-18]的启发,将语义探测看成一个多分类任务。给定一个输入向量V,以及标签向量T=[t1,t2,…,tK]∈{0 ,1}K,目标是使生成的预测标签和T 的交叉熵损失最小。同文献[10]中一样使用多层感知机和sigmoid 函数实现多分类,语义探测单元可用公式表述为:

其中,f 代表多层感知机,σ 是sigmoid 函数。s代表预测结果,e代表损失。

预先选择数据集中出现次数最多的K 个名词、动词和形容词组成一组语义概念集合,然后根据数据集中每个视频的文字标注中是否含有语义概念集合中的单词生成视频对应的真实语义标签Y。将编码完成时第一层LSTM 和第二层LSTM 的的细胞状态拼接作为语义探测单元的输入,产生语义概率S,可用公式表述为:

c(1)和c(2)分别代表编码端第一层和第二层的细胞状态。对于大小为N 数据集来说,总的语义探测损失为:

模型是端到端的,因此总损失为标注模型的损失加上语义探测单元的损失。总的损失可用公式表述为:

λ是一个常量系数。

如图2 所示,用D 和W 代表两种语义融合方式,在解码端三个地方用到。对于第一层网络,D 代表对预测的语义概率和预提取的语义标签进行简单的点乘。在图2 中用Tag 代表预先提取的语义标签集合,由单词的one-hot向量组成,D操作用公式表述为:

WS∈Rdh×K,WT∈Rdh×K,*代表元素点乘。S(1)对于解码端每一步都是相同的,将S(1)作为解码端LSTM 网络第一层的输入。

对于解码LSTM 网络,W 代表将语义概率用来对LSTM 进行参数矩阵扩展。这一部分借鉴了文献[10]的方式处理,但是在LSTM 单元外部进行参数扩展,以减少总的参数数量和训练时间。

在公式(1)中,以输入xt-1为例,对它进行参数矩阵语义扩展:

其中,Wb∈Rdf×K,Wc∈Rdf×dx。df代表参数扩展后的维度,dx代表词向量维度,*同样代表元素点乘。

同理,对于ht-1进行同样的操作。然后将参数扩展后的结果和多头注意力输出或第一层LSTM 输出状态进行拼接。特别的,xt-1和ht-1分别代表第二层LSTM单元上一步生成的单词向量和上一步状态输出。将参数扩展之后的结果和多头注意力的输出以及第一层LSTM单元的输出拼接作为第二层LSTM的解码输入。

在语义探测和语义融合中,总共引入的参数数量为4×dh×K+2×df×K+df×(dh+dx)。在实验中将K 大小设置为300,dh和dx都设置为相同维度,df设置为隐藏层单元数的一半。

2.4 总体训练流程

改进模型在S2VT模型的基础之上结合了多头注意力以及语义信息的探测和使用。改进后的模型总体训练流程如下:

步骤1视频特征提取

对于训练数据集中的每一个视频,先用预训练的CNN提取序列特征。

步骤2建立词表

对训练数据集中每个视频对应的文字标注,统计单词出现次数,将出现次数大于阀值的单词加入词表当中。

步骤3语义概念选择

在词表中选择出现次数最多的前K 个名词、动词和形容词作为语义概念,加入到语义概念集合中。

步骤4文字标注处理

为词表中每个单词生成one-hot 向量表示,将视频标注和语义概念集合中的单词用one-hot向量进行替换。

步骤5视频真实语义标签生成

根据视频对应的标注以及语义概念集合,生成一个K 维的真实语义标签。若语义集合某个单词出现在标注中,则真实语义标签对应位置为1,否则为0。

步骤6数据读取

采用批数据处理的方式,一次读取一批数据,包括视频特征、真实标注和真实语义标签。

步骤7视频特征编码

按序将视频特征序列中的一个特征向量输入LSTM 编码网络中,产生的输出加入上下文环境向量中。循环直到达到最大编码步数。

步骤8语义探测

将编码端双层LSTM 网络的细胞状态拼接后作为语义探测单元输入产生视频的语义概率信息。

步骤9解码端第一层使用语义信息

通过公式(12),为解码端第一层LSTM 网络生成固定的语义输入。并和上一步输出状态一起输入到第一层LSTM,产生当前步数第一层的状态输出。

步骤10多头注意力

通过公式(7)使用多头注意力机制,获得上下文向量在不同子空间的加权和。

步骤11参数矩阵语义扩展

通过公式(13)的方式对第二层LSTM 进行参数矩阵语义扩展。

步骤12拼接输入

将步骤9~11 的结果拼接输入到第二层LSTM 中,通过公式(4)产生单词输出。转到步骤9,直到达到最大解码步数。

步骤13权值更新

通过公式(11)计算模型总损失,并对权值进行更新。判断是否达到最大训练次数,如果达到则训练完成,否则,转到步骤6。

3 实验

3.1 数据集和预处理

在微软视频标注数据集(the MicroSoft Video Description corpus,MSVD)上进行实验。MSVD 数据集由一系列从YouTube 上剪辑的视频片段组成,总共包含1 970 个视频片段,视频片段的长度大约在10~25 s,每个片段包含单个活动。MSVD 数据集中每个视频片段都由多种语言进行标注,为了方便进行对比,在实验中只使用了英文标注,大约每个视频都有40 条英文标注。预处理工作第一步是用预训练的卷积神经网络提取视频序列特征。第二步是将数据集视频标注中的英文单词全部转换成小写格式,去除标注中的标点符号,并建立词表,词表中只收录出现次数大于等于5 次的单词。然后在出现次数最多的名词、动词和形容词中选择K 个单词组成语义集合。根据词表产生语义集合以及视频文字标注的one-hot向量表示。根据选取的语义概念和视频对应的文字标注,为每个视频参数语义标签。然后将这些数据组织成三元组的方式以方便后续使用。对于数据集的划分,与文献[2-3]使用相同的比例,用1 200 个样本作为训练集,100 个样本作为验证集,剩下670样本作为测试集。

3.2 评价指标

采用了4 个广泛使用的指标来评价MHA-S2VT 模型的标注效果,4个指标如下所示:

(1)BLEU:由IBM 在2002年提出,是一个基于精度的评价指标,用于评估机器翻译自动生成译文和参考译文n 元组共同出现的程度。随着n 的增加,评分值会下降,使用的参考译文越多,则BLEU 评分值就越高。在模型评价时取n=4。

(2)METEOR:对机器翻译自动生成的译文与参考译文进行词对齐,计算词汇完全匹配、词干匹配和同义词匹配等各种情况的准确率、召回率。和单纯基于精度的评价指标相比,其结果和人工判断的结果有较高的相关性。

(3)CIDEr:针对图片标注提出的评价指标。将生成的每个句子看成文档,表示成tf-idf向量形式,计算和真实标注之间的余弦相似度。生成的标注越接近人类语言其评价的分就越高。

(4)ROUGE-L:是一个针对自动文摘的评价指标。它基于机器自动生成的摘要和人工摘要的最长公共序列长度计算召回率。主要考察翻译的充分性和忠实性,无法度量翻译的流畅性。

3.3 实验设置

对于MSVD数据集中的视频,为了防止背景干扰先去除头尾2 帧数据,每个视频固定采样64 帧,然后将采样到的帧大小统一调整为224×224。由于不是固定间隔进行采样,所以对于短的视频来说,采样比较密集。用预训练的vgg16 网络提取采样帧的特征,采用的是vgg16的fc7层的输出,因此,每一个特征都是4 096维。

对于编码端,将最大编码长度设置64,对于特征序列不足64 的情况,用零进行填充。对于解码端,将最大解码序列长度设置为20,已经可以满足大部分单句标注的需求了。用“BOS”和“EOS”分别代表标注句子的开头和结尾,作为解码端第一个文字输入和最后一个文字输出。

在参数设置上,把学习率设置为0.000 1。LSTM 隐藏层单元数目是1 000,为了方便计算,实验中将词向量的维度也设置为1 000,而不是很多模型中使用的512维。语义标签维度设置为K=300。在计算模型损失的时候,由于语义预测部分损失较小,所以将λ设置为5。MHA-S2VT 模型增加了许多参数,因此将最大迭代次数增加到了2 000次。

对于文献[7]中的模型而言,输入的特征由ResNet和C3D[19-21]特征分别聚合平均之后拼接而成。为了公平地进行比较,将统一使用vgg16提取特征。

3.4 实验结果与分析

表1 展示了MHA-S2VT 模型和原始模型和其他的视频标注模型在4 个具体评价指标上的对比,MP 代表文献[2]提出的标注模型,它是基础S2VT 模型的前身,S2VT 只是没有将特征序列进行聚合平均。TA 代表文献[8]提出的时序注意力视频标注模型,SCN代表文献[10]提出的语义视频标注模型,ALSTM代表文献[11]提出的注意力LSTM 标注模型。由表1 中可以看到,模型在BLEU、METEOR 和CIDEr 三个评价指标上取得了不错的成绩,在ROUGE-L指标上取得了微弱的优势。对比于基本S2VT模型,在CIDEr指标上提升最大,在ROUGE-L指标上,两个模型最接近。在METEOR 指标上几个模型评分都比较低,说明这些模型自动产生的标注和人工标注相关度都不高。

表1 模型对比结果

表2 展示了MHA-S2VT 模型自身的对比实验。在表中,A 代表使用了多头注意力机制,TAG 表示在解码器端第一层LSTM 单元使用语义信息,S 表示在解码器第二层使用参数矩阵语义扩展。从表2 中可以看到多头注意力机制和在解码端第二层LSTM 使用语义信息是模型标注效果提升的关键原因,而在模型第一层使用语义信息标注效果提升的幅度不是很高。一个可能的原因是多头注意力和在解码端第二层进行参数矩阵语义扩展时引入的参数较多。另外可以看到同时使用多头注意力和参数矩阵语义扩展,标注效果相对于单独使用多头注意力或参数语义扩展的提升有限,可能是两者的结合方式不是很合理。

表2 MHA-S2VT实验结果

将表1 和表2 进行对比,可以看到多头注意力带来的提升效果比单头的大。说明将原始信息映射到不同的线性子空间之后,通过注意力机制确实能够学习到更加关键的信息。在原始的S2VT模型上结合参数矩阵语义扩展带来的效果比文献[10]中的方式有微小提升,原因一方面可能是和后者编码视频信息的方式相比,序列到序列的方式将时序信息编码进了视频特征表示中,另一方面也有可能因为S2VT使用的双层LSTM 网络比后者使用的单层LSTM网络解码效果好。

需要重点指出的是,多头注意力机制发挥的效果受到子空间映射数量的影响,本文中为了计算简单将子空间数量设置为10 个,也许并不是一个比较好的选择。同时本文没有对多头注意力结果进行归一化操作,也在一定程度上限制了实验效果的提升。

图3 展示了一个标注样例,在真实人工标注中选出了两条和几个模型生成的标注进行对比。可以看到不管是改进的MHA-S2VT 模型还是其他的模型,标注效果和真实人工标注之间差距还是比较明显,主要体现在生成句子长度比较短和只能表达视频语义信息不完整上。对于人类而言,读懂视频信息非常容易,但是对于机器而言,机器很难理解高维的语义信息,往往生成的句子只能保证语法正确。

图3 视频标注样例

4 结束语

在本篇论文中,在S2VT 模型中加入多头注意力和语义信息给标注效果带来很大提升。但是正如图3 所展示的那样,MHA-S2VT 模型生成的标注和人工标注之间差距还是很大,视频标注的提升空间依然宽广。

接下来工作的一个重点是研究语义信息的使用,本篇论文在使用语义信息上还处于初级阶段,对于语义信息的使用上缺乏解释性,没能真正发挥语义预测的作用。在MHA-S2VT 模型中,多头注意力和语义信息之间没有什么关联,不能达到叠加的效果。另一个重点将会是探索多头注意力子空间的划分方案,使之能发挥最大效果。此外,对于帧采样方式、Dropout大小等也会继续摸索。希望能够在未来的工作当中在减少模型使用的参数数量的同时,继续保持现有的标注效果。

猜你喜欢

解码语义注意力
《解码万吨站》
让注意力“飞”回来
语言与语义
解码eUCP2.0
NAD C368解码/放大器一体机
Quad(国都)Vena解码/放大器一体机
“扬眼”APP:让注意力“变现”
批评话语分析中态度意向的邻近化语义构建
A Beautiful Way Of Looking At Things
“社会”一词的语义流动与新陈代谢