陳 婷,王玉德,任志偉,楊 昊,高張弛
(曲阜師范大學(xué),山東 曲阜 273165)
視覺(jué)問(wèn)答是把圖像和關(guān)于圖像的自然語(yǔ)言問(wèn)題作為輸入,針對(duì)問(wèn)題生成自然語(yǔ)言答案作為輸出[1]。視覺(jué)問(wèn)答任務(wù)主要分為問(wèn)題特征的提取、圖像特征的提取、結(jié)合圖像和問(wèn)題特征生成答案3 個(gè)步驟。視覺(jué)問(wèn)答任務(wù)的關(guān)鍵在于如何把圖像和問(wèn)題特征有效結(jié)合起來(lái)。
引入視覺(jué)注意力機(jī)制是優(yōu)化視覺(jué)問(wèn)答任務(wù)的一種有效方法。注意力機(jī)制(Attention)由Bahdanau等人[2]提出,用于改進(jìn)神經(jīng)機(jī)器翻譯,并擴(kuò)展到計(jì)算機(jī)視覺(jué)和自然語(yǔ)言處理任務(wù)中[3-6]。視覺(jué)問(wèn)答(Visual Question Answering,VQA)任務(wù)的早期注意多為自上而下的視覺(jué)注意,主要實(shí)現(xiàn)對(duì)圖像區(qū)域的問(wèn)題引導(dǎo)注意[7-10]。針對(duì)單一注意力不足以定位正確答案的關(guān)注區(qū)域的問(wèn)題,Lu 等人[11]提出了協(xié)同注意力機(jī)制(Hierarchical question-image Co-Attention,HieCoAtt)來(lái)交替學(xué)習(xí)視覺(jué)注意和文本注意,Yang 等人[12]提出了一種堆疊注意力機(jī)制(Stacked Attention Networks,SAN);但是這種交互學(xué)習(xí)還是較為粗糙的交互。為了建立更密集的交互,Kim 等人[13]提出了雙線性注意網(wǎng)絡(luò)(Bilinear Attention Networks,BAN),通過(guò)建立每個(gè)區(qū)域和每個(gè)圖像之間的關(guān)聯(lián)提高模型性能;Yu 等人[14]提出了深度模塊化協(xié)同注意網(wǎng)絡(luò)(Deep Modular Co-Attention Networks,MCAN)對(duì)圖像和問(wèn)題分別進(jìn)行自注意,加強(qiáng)問(wèn)題和圖像的內(nèi)部依賴關(guān)系;Gao 等人[15]提出了一種深度堆疊的多模態(tài)特征融合(Dynamic Fusion with Intra-and Inter-modality Attention Flow,DFAF)模型,該模型模擬了模態(tài)內(nèi)部和模態(tài)間的信息交互;Yu 等人[16]提出了一種多峰因子化高階池化(Multimodal Factorized Highorder pooling,MFH)方法。這些方法雖然在一定程度上提高了VQA 的性能,但沒(méi)有充分利用問(wèn)題與圖像之間的相互引導(dǎo)關(guān)系,導(dǎo)致模型性能不理想。
鑒于現(xiàn)有方法多缺乏圖像和問(wèn)題之間的相互引導(dǎo)關(guān)系,本文提出了圖像引導(dǎo)問(wèn)題與問(wèn)題引導(dǎo)圖像相結(jié)合的雙引導(dǎo)注意力機(jī)制視覺(jué)問(wèn)答算法,從而加強(qiáng)圖像與問(wèn)題之間的推理關(guān)系,提高視覺(jué)問(wèn)答整體的準(zhǔn)確率。
問(wèn)題特征一般使用循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)提取,其常用的長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(Long-Short Term Memory,LSTM)[17-18]結(jié)構(gòu)如圖1 所示。

圖1 LSTM 結(jié)構(gòu)
圖1 中,ft,it,ot分別表示遺忘門(mén)、輸入門(mén)、輸出門(mén)。xt代表當(dāng)前的輸入,ht-1代表上一時(shí)刻隱含層的輸出,ht表示當(dāng)前輸出,ct-1表示上一時(shí)刻的細(xì)胞狀態(tài),ct表示新的細(xì)胞狀態(tài)。
遺忘門(mén)、輸入門(mén)、輸出門(mén)的輸出由前一時(shí)刻的輸出和當(dāng)前時(shí)刻的輸入決定,計(jì)算原理為:

式中:Wf、Wi、Wo為訓(xùn)練的權(quán)重矩陣;bf、bi、bo為偏置參數(shù);σ為Sigmoid 函數(shù)。
ct和ht的更新公式為:

式中:Wc為訓(xùn)練的權(quán)重矩陣;bc為偏置參數(shù)。
圖像特征提取一般使用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN),CNN 包括輸入層、卷積層、池化層、全連接層、分類(lèi)輸出層5 部分。CNN 基礎(chǔ)結(jié)構(gòu)如圖2 所示。

圖2 CNN 基礎(chǔ)結(jié)構(gòu)
常用的CNN 網(wǎng)絡(luò)包括vgg16/vgg19 網(wǎng)絡(luò),resnet-152/resnet-101 網(wǎng)絡(luò),F(xiàn)aster R-CNN[19]網(wǎng)絡(luò)等。
多數(shù)的特征融合方法是把VQA視為分類(lèi)任務(wù)。將圖片特征和問(wèn)題特征結(jié)合生成答案。常用的方法是矩陣元素點(diǎn)乘、矩陣元素對(duì)應(yīng)相加或連接,并使用線性分類(lèi)器或者神經(jīng)網(wǎng)絡(luò)分類(lèi)器分類(lèi)。以將矩陣元素對(duì)應(yīng)相加為例,對(duì)于兩個(gè)特征x、y,相加融合后經(jīng)前饋網(wǎng)絡(luò)輸出,計(jì)算方式為:

式中:f為融合后的特征輸出;,為線性投影矩陣的轉(zhuǎn)置;FFN為前饋網(wǎng)絡(luò)。
視覺(jué)問(wèn)答任務(wù)常用準(zhǔn)確度指標(biāo)對(duì)模型進(jìn)行評(píng)估,計(jì)算方式為:

式中:∑a為數(shù)據(jù)集中人類(lèi)投票標(biāo)注的答案,當(dāng)預(yù)測(cè)的答案在標(biāo)注答案中出現(xiàn)3 次及3 次以上時(shí),認(rèn)為預(yù)測(cè)答案正確。
為了彌補(bǔ)傳統(tǒng)的視覺(jué)問(wèn)答算法中問(wèn)題特征和圖像特征缺乏依賴的問(wèn)題,在MCAN 網(wǎng)絡(luò)[14]中引入問(wèn)題引導(dǎo)圖像注意力機(jī)制,對(duì)問(wèn)題和圖像特征的提取加入自注意力機(jī)制。
自注意力(Self-Attention,SA)[20]的特點(diǎn)在于無(wú)視詞之間的距離直接計(jì)算依賴關(guān)系,從而能夠?qū)W習(xí)一個(gè)句子的內(nèi)部結(jié)構(gòu)。SA 內(nèi)部結(jié)構(gòu)圖如圖3。Attention 的本質(zhì)可以被描述為一個(gè)查詢(Query)到一系列(鍵Key -值Value)對(duì)的映射。這3 個(gè)向量是用嵌入向量與一個(gè)矩陣相乘得到的結(jié)果,SA即3 個(gè)向量Query、Key、Value 相等K=V=Q。首先將Q和每個(gè)K進(jìn)行點(diǎn)積運(yùn)算,計(jì)算相似度得到權(quán)重,為了防止內(nèi)積過(guò)大,除以K的維度;其次使用一個(gè)softmax 函數(shù)對(duì)這些權(quán)重進(jìn)行歸一化;最后將權(quán)重和相應(yīng)的鍵值V進(jìn)行加權(quán)求和得到最后的attention。具體的表達(dá)式為:

圖3 SA 內(nèi)部結(jié)構(gòu)

式中:dK為K的維度。
為了使模型在不同的表示子空間里學(xué)習(xí)到相關(guān)信息,將多頭自注意力機(jī)制(Multi-headed selfattention)應(yīng)用于視覺(jué)問(wèn)答任務(wù)中[5],通過(guò)多次計(jì)算來(lái)捕獲不同子空間上的相關(guān)信息。Multi-head 的結(jié)構(gòu)如圖4 所示,將Q、K、V進(jìn)行線性變換,然后輸入Self-attention,進(jìn)行h次計(jì)算,而且每次Q,K,V進(jìn)行線性變換的參數(shù)W都不同。最后將h次的Self-attention 結(jié)果進(jìn)行拼接,并進(jìn)行線性變換,得到多頭attention 的結(jié)果。計(jì)算方式為:


圖4 Multi-head 結(jié)構(gòu)
問(wèn)題引導(dǎo)圖像注意力機(jī)制結(jié)構(gòu)如圖5 所示。

圖5 問(wèn)題引導(dǎo)圖像注意力機(jī)制結(jié)構(gòu)
首先,利用自注意后的問(wèn)題特征來(lái)建立引導(dǎo)(Guide Attention,GA)模塊,其結(jié)構(gòu)如圖6,算法和自注意力機(jī)制相似,不同的地方在于使用問(wèn)題X和圖像Y兩種特征,Q為X特征,K=V為Y特征。

圖6 GA 結(jié)構(gòu)
其次,采用編碼器/解碼器的方式,將X特征自注意后進(jìn)行級(jí)聯(lián),輸出具有多模態(tài)的問(wèn)題特征FX,利用FX對(duì)進(jìn)行自注意后的Y特征進(jìn)行多次引導(dǎo),得到具有多模態(tài)的特征FY,計(jì)算方式為:

為了簡(jiǎn)化模型,將模態(tài)特征經(jīng)過(guò)多層感知機(jī)(Multilayer Perception,MLP)模型(FC-Relu-Drop-FC),以X特征為例,計(jì)算方法為:

式中:a為權(quán)重矩陣。
將fx,fy經(jīng)過(guò)線性函數(shù)進(jìn)行融合,得到融合后的特征f1:

為了更充分地建立圖像和問(wèn)題之間的推理關(guān)系,在問(wèn)題引導(dǎo)圖像注意力機(jī)制的基礎(chǔ)上設(shè)計(jì)圖像與問(wèn)題雙引導(dǎo)注意力機(jī)制(Dual-Guided Attention,DGA),結(jié)構(gòu)如圖7 所示。雙引導(dǎo)注意力機(jī)制不僅可以根據(jù)問(wèn)題中的關(guān)鍵詞定位圖像特征,也可以根據(jù)圖像的目標(biāo)特征尋找問(wèn)題中的關(guān)鍵詞。

圖7 圖像與問(wèn)題雙引導(dǎo)注意力機(jī)制結(jié)構(gòu)
經(jīng)過(guò)自注意后的模態(tài)問(wèn)題特征FX包含較為豐富的文字信息,引導(dǎo)后的模態(tài)圖像特征FY也可以精準(zhǔn)定位到目標(biāo)對(duì)象。為加強(qiáng)圖像和問(wèn)題之間的交互引導(dǎo),豐富兩者之間的依賴關(guān)系,用FY對(duì)FX進(jìn)行引導(dǎo),實(shí)現(xiàn)圖像對(duì)問(wèn)題的引導(dǎo),得到更加豐富的加強(qiáng)模態(tài)特征FZ,計(jì)算方式為:

類(lèi)似的,將FZ進(jìn)行簡(jiǎn)化運(yùn)算得到fz,將問(wèn)題模態(tài)特征fx與fy求和,并將融合后的特征與fz進(jìn)行concat 運(yùn)算得到注意后的特征f,計(jì)算方法為:

將特征f分類(lèi)輸出,圖像與問(wèn)題雙引導(dǎo)注意力模型結(jié)構(gòu)如圖8。

圖8 模型結(jié)構(gòu)
實(shí)驗(yàn)采用Windows 操作系統(tǒng),顯卡為NVIDIA GeForce GTX 1080Ti,顯存為11 GB,版本為CUDA11.1,基于Anconda3(64-bit)的Python3.6 環(huán)境、Pytorch1.0 的深度學(xué)習(xí)庫(kù)。實(shí)驗(yàn)在VQA v2.0 訓(xùn)練集和驗(yàn)證集上進(jìn)行訓(xùn)練,在test-dev 集上進(jìn)行測(cè)試。
VQA v2.0 數(shù)據(jù)集包括82 783 張訓(xùn)練圖像、40 504張驗(yàn)證圖像、81 434 張測(cè)試圖像,每幅圖像有3 個(gè)問(wèn)題,每個(gè)問(wèn)題有10 個(gè)答案。數(shù)據(jù)集中包括是/否、數(shù)字、其他3 種回答類(lèi)型。
輸入圖像經(jīng)過(guò)Faster R-CNN 網(wǎng)絡(luò)以bottomup[21]的方式提取圖像的目標(biāo)區(qū)域特征,目標(biāo)區(qū)域數(shù)量記為m∈[10,100]。輸入問(wèn)題首先被處理成單詞,并最多截取14 個(gè)單詞,使用300-D GloVe 詞嵌入將每個(gè)單詞轉(zhuǎn)換為向量,并通過(guò)單層LSTM 網(wǎng)絡(luò)獲取問(wèn)題特征。
輸入圖像特征維度2 048,輸入問(wèn)題特征維度1 024 以及融合后特征維度1 024;實(shí)驗(yàn)設(shè)置候選答案長(zhǎng)度為3 129;使用Adam 優(yōu)化策略,其中一階矩衰減系數(shù)β1=0.9,二階矩衰減系數(shù)β2=0.98;按階段設(shè)置學(xué)習(xí)率,基礎(chǔ)學(xué)習(xí)率設(shè)為min(2.5te-5,e-4),10 個(gè)周期后,學(xué)習(xí)率每2 個(gè)周期衰減0.2;批大小設(shè)置為64,最大迭代周期設(shè)置為13 epochs。實(shí)驗(yàn)結(jié)果取同條件下10 次實(shí)驗(yàn)結(jié)果的平均值,評(píng)價(jià)指標(biāo)采用VQA 的準(zhǔn)確度指標(biāo)。
為驗(yàn)證模型的有效性,將本文DGA 模型結(jié)果與Bottom-up 模型[21]、MFH 模型[16]、BAN 模型[13]、DFAF 模型[15]、MCAN 模型[14]結(jié)果進(jìn)行對(duì)比實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果如表1 所示。
從表1 中可以看出,本文提出的模型得到的實(shí)驗(yàn)結(jié)果較其他模型有較明顯的提升,總評(píng)分比Bottom-up 等模型高出0.35%~5.66%,Yes/No 類(lèi)提升了0.42%~5.42%,other 類(lèi)提升了0.39%~5.09%。由于雙引導(dǎo)模型主要針對(duì)圖像和問(wèn)題相對(duì)應(yīng)的問(wèn)題,因此Number 類(lèi)型的問(wèn)題沒(méi)有明顯提升。

表1 DGA 模型與其他模型在VQA v2.0 數(shù)據(jù)集上實(shí)驗(yàn)結(jié)果的比較 %
此外,將注意力部分可視化,針對(duì)圖9(a),提出問(wèn)題“What is the food item?”,即“圖片中的食物是什么?”,加入問(wèn)題引導(dǎo)注意力機(jī)制后,模型可以根據(jù)提出的問(wèn)題準(zhǔn)確定位圖片中的物體——披薩(Pizza),從而作出正確回答。

圖9 部分可視化結(jié)果
本文針對(duì)視覺(jué)問(wèn)答任務(wù)中圖像與問(wèn)題之間交互性不強(qiáng)的問(wèn)題,提出了一種圖像與問(wèn)題雙引導(dǎo)注意力機(jī)制視覺(jué)問(wèn)答算法。本文算法通過(guò)問(wèn)題引導(dǎo)圖像和圖像引導(dǎo)問(wèn)題構(gòu)建多模態(tài)的圖像特征和問(wèn)題特征,這種交互引導(dǎo)加強(qiáng)了問(wèn)題和圖像之間的依賴關(guān)系。本文模型在VQA V2.0 數(shù)據(jù)集的Test-dev 上準(zhǔn)確率達(dá)到70.98%。此外,與其他VQA 方法相比,本文提出的模型在VQA 任務(wù)中具有更好的性能。