翟永杰 吳童桐
(華北電力大學自動化系 河北 保定 071003)
隨著人工智能技術的不斷發展,計算機視覺技術隨著深度學習發展不斷進步,在圖像分類[1-4]、目標檢測[5-8]和圖像理解[9-13]等各個方面都有了極大的提升。但是深度學習模型效果的提升一方面來源于大模型和大算力,另一方面是在如今的大數據時代能獲得大量數據進行訓練[14]。
傳統的圖像分類問題都是有監督學習問題,需要人工對大量的數據進行標注,最著名的ImageNet項目就是一個包含2萬多個類別,總計400萬幅圖像的綜合數據庫。隨著網絡時代的到來,人們獲取信息的途徑越來越廣泛,有著大量的圖像數據可供使用,但是在實際項目中,不一定就會有已經標注好的大規模數據或者不一定便于獲取特定類別的數據,例如某些珍稀動物的圖像并不容易獲取,樣本數量很少,很難實現預期的訓練效果。
零樣本學習的方法源自半監督學習,半監督學習是通過結合一部分標注樣本數據和大部分的未標注樣本數據來進行學習[15]。零樣本學習的方法通過圖像特征的共通性和類別屬性空間作為中間知識聯系,實現了通過模型的訓練,再去識別在訓練集未出現的樣本類別的方法,改善了傳統的圖像多分類問題對足夠的樣本和數據標簽的依賴,實現了更好的半監督學習效果。零樣本學習方法指在模型訓練時,即使某一類別的訓練樣本未出現,但是通過中間屬性空間知道該類別的特征屬性,然后通過模型的訓練建立圖像特征和屬性特征之間的聯系,便可以將未出現的類別識別出來,這也就是基于屬性的直接預測模型(Direct Attribute Prediction,DAP)[16]。
零樣本學習方法的成功主要歸功于對圖像特征的學習和由圖像特征空間到類別屬性空間映射關系的學習是具有可遷移性的[17],可以應用遷移學習將已學習到的特征提取方法也就是模型的參數遷移到新的任務模型中。利用相似任務間模型學習到的底層特征提取方法的通用性,也可以認為圖像識別任務的很多數據和任務是相關的,所以遷移學習可以將從大規模數據集上學習的模型參數應用到特定任務中,從而改善模型效果并且加快模型收斂的速度。
傳統的零樣本學習方法主要是基于屬性的直接預測模型,以人工標注的屬性特征作為中間類別描述信息。如圖1所示,每一個類別的圖像都有著其對應的屬性特征,包含對應類別的描述信息。將屬性特征和圖像特征提取的結果以向量形式進行結合,通常以交叉熵損失函數作為目標進行訓練,建立類別、圖像、類別屬性之間的映射[18]。實際情況下,針對類別進行屬性的特征表述,就需要統一標準并進行大量細致的屬性標記,這方面會用到大量的人工標記,比單純標注分類標簽要復雜得多。因此利用一種無監督學習詞向量訓練的方法,這也是語義信息遷移學習的應用,將文本信息作為中間輔助的屬性特征,并在詞向量的訓練過程中對關鍵信息進行加強。

圖1 零樣本學習模型
從網絡上獲取大量無標簽的圖像數據和文本數據用于模型的訓練,但是非結構化的圖像特征數據和自然語言的文本數據存在語義鴻溝[19]。圖像特征分布和語義空間的潛在語義信息存在偏差,這是圖像理解,也可以說在語義和圖像結合領域的最大障礙。因此在利用語義信息進行零樣本學習方法時,對模型進行改進,加強了語義信息并提取關鍵信息,與圖像特征空間的對應類別圖像特征進行匹配。
針對上述問題,本文提出一種基于語義空間信息映射加強的零樣本學習方法。主要貢獻包括:設計了加強語義信息并將語義信息進行合成分析的方法,改進了整體的訓練框架,更好地挖掘與發現語義特征空間和圖像特征空間之間特征的相似關聯,改善了零樣本學習的效果。
基于語義空間信息映射的零樣本學習任務所采用的算法模型是基于一種直接預測模型,其基本架構如圖2所示。

圖2 零樣本學習模型
零樣本學習模型核心目的是建立一個由圖像特征到對應標簽所代表類別信息的非線性映射[20]。第一層是圖像提取層,該層主體為卷積神經網絡,卷積神經網絡可以通過圖像卷積激活的方式提取圖像的局部特征,將經過預處理的圖像數據輸入到卷積神經網絡模型中提取出其對應的圖像特征向量,并將其輸入到中間層。第三層是類別信息層,包含訓練集中出現的類別和未出現的類別的屬性描述信息,通常為基于人工標注的屬性特征或者基于詞向量的語義特征。在訓練時,將對應圖像的標簽輸入到類別信息層中,在這一層中獲取對應類別信息的特征向量,并將其輸入到中間層。在中間層中需要將對應圖像特征和類別信息特征建立映射關系,并對該映射關系進行訓練。訓練時在中間層中訓練對應每一個圖像特征和類別信息的分類器,當輸入某一類別的圖像數據時,判定圖像特征模型提取的結果是否符合其類別信息,并將偏差作為損失進行最優化訓練。
測試時將圖像經過特征提取的結果,與類別信息層中各個類別對應的信息對比,以圖像特征和類別信息的映射結果最為相似的類別作為分類結果,實現了利用訓練集訓練模型,并通過類別信息作為中間輔助知識,達到實現測試集中未見過的樣本的效果。
在零樣本學習方法中,一般而言,無論是訓練集中出現的樣本,還是在測試時使用的在訓練集中未出現的類別樣本,都需要提供類別描述信息。本文利用無監督學習方法生成的詞向量作為類別描述信息,這樣可以用大規模的文本語料進行訓練,訓練模型為Skip-Gram模型[21],核心是根據詞匯去預測其上下文,并針對特定的名詞進行數據增強采樣,將獲得的詞向量作為類別描述信息輸入到模型中。
本文使用維基百科語料數據進行采樣:
The cat has a fatty meat pad.
設定skip-gram預測上下文的范圍為3,因此,從輸入單詞的附近為3的范圍內抽取輸出單詞作為模型的預測結果,經過采樣,模型的輸入和輸出樣例為:
[the, cat][the, has][the, a]
[cat, the][cat, has][cat, a][cat, fatty]
[has, the][has, cat][has, a][has, fatty][has, meat]
[a, the][a, cat][a, has][a, fatty][a, meat][a,pad]
…
同理,這句話還可以用上述方式以fatty、meat和pad作為輸入對抽取出很多單詞對。按照這種方式從輸入單詞附近抽取需要預測的上下文單詞進行詞向量的訓練,最重要的是要結合圖像進行零樣本學習。所以,為了加強類別文本所包含的語義信息,使信息更為準確豐富,在從語料庫中抽取數據時,針對零樣本學習任務出現的類別名稱文本進行數據增強,以實現詞向量在訓練中,對這部分文本進行重復多次采樣以對其語義相互關系進行更好的信息加強。
使用維基百科語料的共計大約400萬文本段,提取類別庫中類別文本和其附近的段落整體,并對類別文本所在的句子進行重復采樣,共計10萬文本段,并從文本數據中提取出現頻率前10 000的單詞,包含類別文本,構建詞匯表,進行詞向量的訓練。
Skip-Gram模型如圖3所示,輸入是單詞的one hot向量,設定詞向量的維度為300維,也就是隱藏層的單元數,對one hot特征向量建立映射也就是建立了一個對應[10 000,300]維的矩陣,對應詞匯表維度和隱藏層單元數,一般被稱為嵌入向量。所以詞向量又被稱為詞嵌入(Word Embedding),將輸入特征從10 000維的向量轉化為300維嵌入向量,最后連接輸出層,輸出維度和詞表相對應,結果為z,使用Softmax多分類激活函數,將輸出轉化為對各個單詞的預測概率:

圖3 Skip-Gram模型
(1)
(2)
最終將對應one hot向量映射到隱藏層的值作為對應單詞的詞向量,實現了將高維稀疏語義空間轉化成低維稠密語義空間的詞向量,將其進行降維顯示,結果如圖4所示。

圖4 Word Embedding降維顯示結果
可以看出,詞向量具有可以將相似文本聚類的效果,普通動物、食肉猛獸、植物分別在相似的區域內,表明具有相同屬性或者說語義相關的類別文本詞向量會接近,這種語義特征和圖像特征是具有一定共通性的。詞向量訓練中對上下文的預測本質上也是一種對詞語共現統計特征的學習[22],例如:代表cat的詞向量與代表dog的詞向量的相似度偏差為a,與代表tree的詞向量的偏差為b,映射到圖像特征空間中,如果某一幅圖片與圖片dog特征向量的偏差同樣為a,與圖片tree特征向量的偏差為b,于是可以判斷這幅圖片為cat。這就是詞向量可以用于零樣本學習的類別信息的原因,雖然語義空間和圖像特征空間存在差異,但是其中包含可用于圖像區分的信息。本文在使用時對存在于類別庫中的特定文本進行了數據增強,加強了其中包含的信息。
詞向量的信息和圖像特征存在偏差,為了將詞向量代表的語義特征和圖像特征之間的映射關系進行加強,本文在詞向量后接一個全連接層來用于語義信息的分析與合成,其整體模型如圖5所示。

圖5 基于語義信息映射加強的模型
CNN圖像特征提取部分是基于VGG16的卷積神經網絡模型,模型輸入圖片大小是224×224×3,經過第一個conv×2和max pool卷積模塊,是由兩層conv和一層max pooling組成,其中conv采用ReLU激活函數,并使用最大池化的方法,模塊輸出為112×112×128。同理將其繼續輸入到第二個conv×2和max pool卷積模塊、第三個conv×3和max pool卷積模塊、第四個conv×3和max pool卷積模塊,最后經過一個conv和max pool層并將其展開生成4 096維的向量,并添加一個全連接層輸出為1 024維的向量t,使用tanh激活函數,其輸出為[-1,1]。
(3)
利用式(3)對向量中各個元素進行歸一化處理以便于進行余弦相似度的計算。VGG卷積模型如圖6所示,該模型提取出代表圖像的特征向量。

圖6 VGG圖像特征提取模型
另外,將由無監督學習得到的詞向量作為類別描述信息輸入到模型中。圖像總計有190類圖片,將其對應每一個類別的詞向量組合起來得到一個類別文本詞向量庫,其大小為300×190,其中300為詞向量的維度,將其連接全連接層進行語義的分析和合成,這也是用來加強語義信息的一種方法,自動匹配語義和圖像中的信息關鍵點,有助于語義和圖像之間進行映射。全連接層輸出維度為1 024,同樣在此層設定激活函數為tanh,并以此作為代表類別描述信息的語義向量,其代表語義向量β。
將圖像特征向量α和語義向量β進行匹配,同為1 024維,以其余弦相似度作為向量之間相似匹配的距離度量,將圖像特征和語義特征在高維空間進行映射。將圖像特征向量1 024×1和由類別文本詞向量庫生成的語義向量庫1 024×190中每個類別代表的語義向量進行余弦相似度計算,得到190維向量S,計算公式為:
(4)
S中每一項對應圖像和庫中各個類別的相似程度,余弦相似度最小的類別即為模型預測圖片的類別。
使用Python語言,利用TensorFlow 1.1搭建實驗模型,實驗環境是Ubuntu 16.04版本訓練服務器,配備4塊1080Ti顯卡。
本文使用的數據集共計37 221幅圖片,包含190類圖片,每類有人工標注的30維屬性特征用作對比實驗。采用本文所提出的基于語義映射加強的零樣本識別方法,重復10次隨機選出160類樣本作為訓練集,30類樣本作為測試集,訓練集和測試集樣本類別不重合。
同時針對樣本庫中出現的數量較多的類別,如動物類(32類)、植物類(18類)、昆蟲類(16類)、家具類(10類)、交通工具類(8類),這些類別圖像數據超過3 000幅的大類單獨拆分出來2 000幅圖片作為測試集,測試模型對各個類別的零樣本學習效果的效果。
在訓練階段,首先對訓練集樣本數據進行擴充,為了平衡樣本空間內各類別圖片的數目,對出現次數較少的類別樣本數據進行增強,采用翻轉的方法進行擴充。將訓練圖像數據輸入到模型中,得到圖像特征向量和每個類別代表的語義特征向量進行余弦相似度計算的結果S,其分別對應190個類別的匹配程度評分。
一般而言,損失函數就是預測值和真實值之間的差異,零樣本學習要實現對未知樣本預測,在訓練時更需要建立準確的由圖像特征空間到語義空間的映射。傳統零樣本學習的損失函數是由輸入圖像特征提取出的圖像特征向量和其對應類別的語義特征向量之間的差值構成,本文結合對比損失[23]的思路,以其作為損失函數的基礎。
設類別總數為N,訓練集中圖像相匹配的第k類圖像樣本的余弦相似度為Sk+,不匹配類別的余弦相似度為Sk-,且i≠k,i=1,2,…,N。對Si-的值進行求和,取平均值的負數,與相匹配類別的余弦相似度Sk+相加,并使用SGD作為損失函數的優化器。損失函數計算式表示為:
(5)
這樣處理可以使得圖像特征向量與語義空間中正確類別語義特征向量的相似度更高,與不正確類別語義特征向量的相似度更低。一方面可以將各個類別的特征向量在高維空間中分割開;另一方面便于之后出現在訓練集中未出現的類別時,能更準確匹配到正確樣本類別對應的特征向量。通過這種方式實現了語義空間信息到圖像的映射加強,提高了成對的圖像特征和語義特征的匹配程度。
使用在準備階段被專門抽出測試集樣本驗證結果,保證了測試集樣本類別和模型訓練時訓練集樣本類別不重合,且模型不能經過預訓練。
測試時,將測試集的圖像輸入到圖像特征提取模型中,和樣本類比庫中對應每一個類別文本的語義向量進行匹配計算,得到圖像特征和每個類別語義向量的余弦相似度計算的190維向量S,使用最近鄰法判定。向量S中余弦相似度值最小者為圖像最為可能的匹配類別,預測結果可能出現訓練集中出現的樣本類別,也可能預測為訓練集中未見過的樣本類別,這樣也就實現了零樣本學習方法。
為了驗證本文所提出的語義空間信息映射加強的方法,本文實驗和基于屬性特征的零樣本識別方法進行對比,分別驗證在基于語義空間信息模型的基礎上,詞向量文本訓練數據增強、詞向量連接全連接層進行語義分析和合成、訓練過程中針對正負余弦結合基于對比損失進行優化等各個改進的策略效果。最終訓練集(經過訓練的樣本)正確率和測試集(未訓練的樣本)正確率如表1所示。

表1 模型對比正確率 %
使用訓練集對圖像模型進行測試,主要是為了證明在建立的模型中,圖像和語義之間建立映射匹配的效果。因為訓練集中樣本都是經過訓練的圖片,所以對于語義空間映射加強的方法,訓練集效果的提升對驗證零樣本學習的效果無意義,但是也可以說明這些方法對建立圖像和語義之間的映射是存在幫助的。
零樣本學習的效果主要是由驗證過程中對未知樣本的分類能力決定,以測試集正確率確定模型改進的效果。可以看出,如果使用基于屬性的零樣本模型和基本的語義模型對比,基礎語義模型的測試集正確率反而更低一些,說明了語義和圖像之間存在偏差。
在使用基礎語義模型情況下,使用詞向量的文本訓練數據增強的方法,其正確率能夠小幅度提升,由43.3%到45.8%,提升了2.5個百分點,說明了通過關鍵文本數據的增強可獲得更多的類別相關信息。不經過文本數據的增強,直接將詞向量經過全連接層對語義進行分析與合成之后,正確率提升到了50.2%,說明通過全連接層語義信息的分析和合成極大加強了語義空間信息映射的效果,起到了關鍵的作用。同時進行詞向量增強和連接全連接層,能夠實現獲得更好的語義特征向量的效果,正確率提升到了50.7%。最后,基于對比損失的思路的改進損失函數,將正確率提升到了52.1%,更好地搭建了由語義空間到圖像空間的映射。
通過驗證不同類別的圖像分離出來用作測試集的效果,將之前拆分出來的動物類、植物類、昆蟲類、家具類和交通工具類分別作為測試集,以驗證信息映射加強對各個類別圖像零樣本識別的效果,均進行多次重復實驗取正確率均值。各個類別測試集的正確率如表2所示。

表2 不同類別測試正確率 %
可以看出,基于屬性的零樣本學習模型的各個類別的圖片樣本識別效果是存在差距的,其原因在于屬性特征和圖像特征的對應情況,對效果較好的動物類、家具類,其圖像顏色、特征等屬性可能比較突出,從而更好地和屬性特征進行了結合匹配。使用語義模型能夠通過語義信息改進類似昆蟲類、植物類的零樣本分類效果,這就是使用語義模型能夠提升零樣本分類效果的一部分原因,但是其整體上因為語義和圖像偏差的問題,效果不好。在進行語義空間的信息映射之后,其整體效果獲得了提升,對各個類別的樣本測試的效果都獲得了提升。
本文基于使用詞向量進行零樣本學習方法進行研究,提出了基于語義空間信息映射加強的零樣本學習方法,主要改進為:(1)在詞向量的無監督學習過程中,針對圖像樣本庫中出現類別的文本進行重復采樣,以獲得更充分的語義信息。(2)針對詞向量連接全連接層作為語義特征向量與圖像特征向量對應,這樣對語義信息進行了分解和合成,能夠更好地和圖像特征形成映射。(3)模型訓練過程中,采用對比損失的原理,對基于余弦相似度的損失函數進行了改進,使得圖像特征空間和語義特征空間的對應類別匹配程度更好。實驗結果和評估驗證了上述對語義空間信息映射加強的零樣本學習方法的有效性。