林 陽(yáng),初 旭,王亞沙,毛維嘉,趙俊峰
1.高可信軟件技術(shù)教育部重點(diǎn)實(shí)驗(yàn)室,北京 100871
2.北京大學(xué)計(jì)算機(jī)科學(xué)技術(shù)系,北京 100871
3.北京大學(xué)軟件工程國(guó)家工程研究中心,北京 100871
人們?nèi)粘5娘嬍沉?xí)慣對(duì)于人們的身體健康有著極為重要的影響。隨著生活水平的不斷提升,人們對(duì)飲食健康的關(guān)注程度越來(lái)越高。而日常飲食攝入的記錄,作為飲食管理的關(guān)鍵環(huán)節(jié),更是越來(lái)越受到人們的重視[1-2]。而對(duì)某些慢性病患者(如慢性腎病患者)而言,由于其疾病治療的需要,對(duì)營(yíng)養(yǎng)攝入的監(jiān)控更是至關(guān)重要[3-4]。
傳統(tǒng)的飲食攝入記錄工具的基本流程是,通過(guò)用戶拍攝的食物圖片,對(duì)食物類別和原材料種類進(jìn)行預(yù)測(cè),并進(jìn)一步估計(jì)其中的營(yíng)養(yǎng)成分含量[5-7]。然而,由于人們自制的食物的風(fēng)格、外觀多變,實(shí)際上得到的結(jié)果不足以支持從食物圖片中進(jìn)行營(yíng)養(yǎng)含量的推定[8]。
隨著互聯(lián)網(wǎng)的發(fā)展,越來(lái)越多的人們開(kāi)始將食物圖片和食譜上傳至社交網(wǎng)絡(luò)和公開(kāi)的食譜網(wǎng)站。這使得大規(guī)模的收集食物圖片及其對(duì)應(yīng)的食譜成為可能,也為解決飲食攝入記錄問(wèn)題提供了新的思路。
在大規(guī)模的食譜數(shù)據(jù)的支持下,一個(gè)新的研究方向開(kāi)始興起:食譜檢索,即通過(guò)一張食物的圖片在大規(guī)模的食譜中檢索其對(duì)應(yīng)的食譜[9-11]。被檢索到的食譜中包含著食物的類別、原材料種類及用量等信息,在其基礎(chǔ)上可以進(jìn)一步進(jìn)行原材料識(shí)別、營(yíng)養(yǎng)含量估計(jì)等其他相關(guān)工作,達(dá)到飲食攝入記錄的目的。除了在傳統(tǒng)預(yù)測(cè)方法使用到的標(biāo)簽信息之外,食譜中還包含著食物制作的操作步驟信息,其中蘊(yùn)含了比類別標(biāo)簽更豐富的語(yǔ)義信息,可以幫助模型更好地理解食物圖片中所包含的語(yǔ)義,取得更高的準(zhǔn)確率[10]。
食譜檢索問(wèn)題是一個(gè)典型的跨模態(tài)(crossmodal)檢索問(wèn)題[12],即通過(guò)一個(gè)模態(tài)(如圖片)的數(shù)據(jù)在另一個(gè)模態(tài)(如文本)的數(shù)據(jù)庫(kù)中尋找對(duì)應(yīng)的樣本。比如圖片與其簡(jiǎn)單文字描述之間的相互檢索,就是跨模態(tài)檢索領(lǐng)域常見(jiàn)的問(wèn)題。
與一般的跨模態(tài)檢索問(wèn)題相比,食譜檢索問(wèn)題的難點(diǎn)主要在于食譜中文字與食物圖片聯(lián)系的復(fù)雜性。食譜描述了從原材料到最終成品的一系列變化過(guò)程,而不是直接描述了成品食物圖片中可見(jiàn)的特征。這些變化過(guò)程之間的疊加和相互作用是十分復(fù)雜的,相同的原材料經(jīng)過(guò)多重操作后外觀可能完全不同,而相似的成品外觀反而可能出自經(jīng)歷了不同處理的不同原材料。因此,通過(guò)圖片特征檢索食譜,需要模型深入理解圖片中出現(xiàn)的原材料在食譜中的處理過(guò)程,換言之,需要充分捕捉對(duì)同一種原材料進(jìn)行加工處理的多個(gè)步驟之間的依賴關(guān)系。
然而,在食譜中,同一原材料的多個(gè)處理步驟的文本并不總是緊靠在一起的。食譜中的加工步驟,根據(jù)其時(shí)序依賴關(guān)系一般可以表示為一個(gè)樹(shù)形結(jié)構(gòu)[13],對(duì)不同原材料的加工步驟分屬不同的沒(méi)有時(shí)序依賴關(guān)系的分支流程,最終不同原材料的多條處理流程匯總到一起。然而,大多數(shù)的食譜其格式要求把原本樹(shù)形結(jié)構(gòu)的流程記錄成一個(gè)線性結(jié)構(gòu),對(duì)不同原材料加工處理的流程相互交織在一起,因此對(duì)某種原材料加工的兩個(gè)相鄰步驟之間文本可能相隔較遠(yuǎn)。如圖1中食譜所示,步驟1與步驟4斜體文本都是關(guān)于同一種原材料(土豆)的加工步驟,它們之間的依賴關(guān)系明顯高于其相鄰步驟。
當(dāng)前食譜檢索方向的工作,均采用了傳統(tǒng)的文本處理模型(RNN(recurrent neural network)或其變體LSTM(long short-term memory)、GRU(gate recurrent unit)等)對(duì)食譜文字進(jìn)行處理。這些模型采用線性的方式處理文本數(shù)據(jù),捕捉遠(yuǎn)距離依賴關(guān)系的能力較差,使其難以充分理解圖片中出現(xiàn)的原材料在食譜中的處理過(guò)程。
Fig.1 Distant dependency in recipe圖1 食譜中的遠(yuǎn)距離依賴
也有研究工作嘗試使用注意力機(jī)制來(lái)捕捉食譜中的依賴關(guān)系[10],但是其在注意力機(jī)制中為所有的食譜選取了相同的環(huán)境向量(context vector),沒(méi)有考慮到食譜之間的差異性和獨(dú)特性,導(dǎo)致其準(zhǔn)確率較差。
針對(duì)上述問(wèn)題,本文結(jié)合最新的食譜檢索工作,并在其基礎(chǔ)上提出了一種新的食譜檢索模型。本文采用Transformer模型[14]來(lái)對(duì)食譜文字進(jìn)行編碼,借助Transformer模型中的自注意力(self-attention)機(jī)制,來(lái)捕捉食譜文字中遠(yuǎn)距離的依賴關(guān)系。同時(shí),本文還對(duì)文獻(xiàn)[10]中使用的注意力機(jī)制進(jìn)行了改進(jìn),選取食譜的標(biāo)題這一人工從食譜中提取的抽象信息作為環(huán)境向量,并將改進(jìn)后的注意力機(jī)制結(jié)合到本文的模型中,進(jìn)一步提升了模型的效果。
為了使訓(xùn)練得到的模型更加符合國(guó)內(nèi)群眾的飲食習(xí)慣,本文從國(guó)內(nèi)熱門的食譜網(wǎng)站上獲取數(shù)據(jù),構(gòu)建了一個(gè)新的大規(guī)模中文食譜數(shù)據(jù)集(large-scale Chinese recipe dataset,LCR)。LCR數(shù)據(jù)集包含超過(guò)17萬(wàn)個(gè)中餐食譜,每個(gè)食譜包含標(biāo)題、使用的原材料、操作步驟,同時(shí)數(shù)據(jù)集中還包括該食譜對(duì)應(yīng)的最終成品圖片。
本文的貢獻(xiàn)在于:面向用食物圖片檢索文本食譜的跨模態(tài)檢索任務(wù),提出了一個(gè)新的基于自注意力機(jī)制的跨模態(tài)食譜檢索方法框架;本文提出了基于Transformer網(wǎng)絡(luò)的食譜文本編碼器,并改進(jìn)了傳統(tǒng)方法注意力機(jī)制的環(huán)境向量選取方式,綜上兩點(diǎn)提升了模型理解食譜復(fù)雜文本的能力。在LCR數(shù)據(jù)集上驗(yàn)證了本文跨模態(tài)食譜檢索方法框架的有效性,檢索準(zhǔn)確率(Recall@1)對(duì)比跨模態(tài)食譜檢索領(lǐng)域的現(xiàn)有先進(jìn)基線方法提升22%。
跨模態(tài)檢索是指在不同模態(tài)的數(shù)據(jù)中檢索與提供的查詢樣本相關(guān)的結(jié)果。常見(jiàn)的跨模態(tài)檢索問(wèn)題有通過(guò)圖片檢索其相關(guān)描述,或者通過(guò)關(guān)鍵詞檢索圖片等??缒B(tài)檢索問(wèn)題的主要困難在于如何度量不同模態(tài)的數(shù)據(jù)之間的相似度。較為普遍的一種做法是將不同模態(tài)的元素映射到一個(gè)共享的隱空間(latent space)中,在其中將相互匹配的元素對(duì)齊,使在該隱空間中不同模態(tài)的數(shù)據(jù)之間可以進(jìn)行比較。跨模態(tài)檢索領(lǐng)域的一種經(jīng)典方法是典型關(guān)聯(lián)分析(canonical correlation analysis,CCA)。隨后CCA又發(fā)展出了諸多變種如核CCA(kernel CCA)[15]等。后來(lái)隨著深度神經(jīng)網(wǎng)絡(luò)的發(fā)展,很多工作也開(kāi)始采用深度神經(jīng)網(wǎng)絡(luò)進(jìn)行隱空間映射[16-19]。
相比于常見(jiàn)的跨模態(tài)檢索問(wèn)題,如使用圖片檢索描述性文字或是相反[18],食譜檢索中并不是所有文本信息都直接體現(xiàn)在圖片上,文本與圖片之間存在著復(fù)雜的關(guān)聯(lián)關(guān)系。
食物相關(guān)的研究一直受到研究人員的關(guān)注和重視。常見(jiàn)的研究方向有食物識(shí)別[20]、原材料識(shí)別[8]、營(yíng)養(yǎng)成分估計(jì)[21]等。
最初的食譜檢索工作可以看作是上述研究的一個(gè)延伸,關(guān)注于通過(guò)食物圖片預(yù)測(cè)食物屬性,如食物類別、原材料等,進(jìn)一步根據(jù)這些屬性在候選集中尋找對(duì)應(yīng)的食譜,如圖2(a)所示。Chen等人[8]提出通過(guò)多任務(wù)學(xué)習(xí)的方法同時(shí)預(yù)測(cè)食物類別和原材料,并通過(guò)條件隨機(jī)場(chǎng)(conditional random field,CRF)調(diào)整預(yù)測(cè)的結(jié)果。之后,Chen等人[22]認(rèn)為可以加入更加豐富的食物屬性,在類別和原材料之外又考慮了處理步驟這一屬性。上述工作提出的模型,其訓(xùn)練要基于食物圖片對(duì)應(yīng)的標(biāo)簽。而考慮越多的屬性,所需標(biāo)簽就越復(fù)雜,對(duì)數(shù)據(jù)的要求越高,如文獻(xiàn)[22]就要求圖片需要有細(xì)粒度的料理步驟標(biāo)簽,而這通常是很難獲得的。
Salvador等人[9]率先將跨模態(tài)檢索的經(jīng)典的隱空間對(duì)齊思想引入食譜檢索,其模型框架如圖2(b)所示。這樣的結(jié)構(gòu)使得檢索可以不受固定的食物屬性的限制,訓(xùn)練時(shí)對(duì)人工提取的標(biāo)簽的需求也較低。Chen等人[10]在上述模型的基礎(chǔ)上引入了注意力機(jī)制,使模型關(guān)注食譜中對(duì)食物外觀影響更大的部分,并且捕捉其中隱含的因果關(guān)系。同時(shí)針對(duì)檢索問(wèn)題引入了排序損失(rankloss),加快了訓(xùn)練速度。Carvalho等人[11]在排序損失的基礎(chǔ)上,提出了一個(gè)雙三元組(double-triplet)損失函數(shù),更好地利用了食譜中不同層次的語(yǔ)義信息。同時(shí)其還提出了一種新的梯度下降和反向傳播的方法,以提升訓(xùn)練效果。
Fig.2 Two frameworks in recipe retrieval圖2 食譜檢索的兩種框架
然而,這些方法仍存在一些不足之處。但在上述方法中,均使用了循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)或其變形(LSTM、GRU)等線性處理文字的模型來(lái)編碼非線性的食譜文本。本文提出了一種基于自注意力機(jī)制的食譜文本編碼器,可以更好地處理食譜中長(zhǎng)距離的步驟間依賴關(guān)系。
本文模型框架如圖3所示,共由三部分組成,分別為食譜文字編碼模塊(text encoding module)、圖片編碼模塊(image encoding module)以及聯(lián)合嵌入模塊(joint embedding module)。
文字和圖片兩種模態(tài)的數(shù)據(jù)分別經(jīng)過(guò)各自的編碼模塊得到對(duì)應(yīng)的特征表示。其中食譜文字被分為標(biāo)題、原材料、操作步驟三部分,分別由三個(gè)不同參數(shù)的文本編碼器進(jìn)行編碼,并最終通過(guò)拼接得到食譜文字的特征表示;而食物圖片則通過(guò)深度卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行編碼。接著兩個(gè)模態(tài)的特征向量進(jìn)入聯(lián)合嵌入模塊,學(xué)習(xí)在一個(gè)共享的隱空間中的嵌入表示,使得匹配的文字與圖片之間的相似度盡量高。整個(gè)模型為端到端(end-to-end)訓(xùn)練。接下來(lái)將分別介紹模型中的不同模塊。
3.2.1 Transformer模型
Transformer模型是Google于2017年提出的一種模型[14],其原本的目的是代替循環(huán)神經(jīng)網(wǎng)絡(luò)解決自然語(yǔ)言處理中seq2seq的任務(wù)。與循環(huán)神經(jīng)網(wǎng)絡(luò)相比,Transformer解決了兩個(gè)問(wèn)題:一個(gè)是擺脫了串行的計(jì)算順序,提升了其并行能力;另一個(gè)是解決了循環(huán)神經(jīng)網(wǎng)絡(luò)在處理長(zhǎng)文本時(shí),由于文本過(guò)長(zhǎng)出現(xiàn)“遺忘”現(xiàn)象,導(dǎo)致難以處理遠(yuǎn)距離依賴的問(wèn)題。
Transformer模型之所以能夠處理遠(yuǎn)距離依賴問(wèn)題,主要依賴于其采用的自注意力(self-attention)機(jī)制。不同于循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)只能通過(guò)上一個(gè)時(shí)間片傳遞的隱含層信息了解之前的信息,借助自注意力機(jī)制,Transformer模型可以“全局瀏覽”輸入的數(shù)據(jù),并找到與其相關(guān)性更高的部分。舉例而言,如圖4,在處理食譜中“翻炒土豆絲”一步時(shí),循環(huán)神經(jīng)網(wǎng)絡(luò)(圖4(a))只能接收前一步傳遞的信息,而自注意力機(jī)制(圖4(b))可以在全局范圍內(nèi)尋找與該步相關(guān)性較高的步驟(如“土豆切絲”這一步)。
Fig.3 Model framework圖3 模型框架
Fig.4 Comparison between RNN and self-attention mechanism圖4 循環(huán)神經(jīng)網(wǎng)絡(luò)與自注意力機(jī)制對(duì)比
本文采用Transformer模型的encoder網(wǎng)絡(luò)作為文本編碼器,encoder網(wǎng)絡(luò)的結(jié)果如圖5所示。
Fig.5 Encoder in Transformer model圖5 Transformer模型中的encoder網(wǎng)絡(luò)
在本文剩余的部分中,將該網(wǎng)絡(luò)記為:
其中,x為輸入的詞向量;y為詞向量經(jīng)模型編碼后的隱含層向量。
3.2.2 標(biāo)題編碼
每個(gè)食譜均包含一個(gè)標(biāo)題。食譜的標(biāo)題通常是對(duì)食譜的一個(gè)高度總結(jié),一般會(huì)包括食譜中使用的主要原材料和主要烹飪方式(如西紅柿炒雞蛋),有的也會(huì)包括風(fēng)味或菜系(如香辣土豆絲、川味排骨等)。
給定一個(gè)食譜的標(biāo)題,其中包含T個(gè)詞wt,t∈[1,T]。首先通過(guò)word2vec算法將其轉(zhuǎn)換為n維詞向量,之后將這T個(gè)詞向量輸入一個(gè)文本編碼器中,每一個(gè)向量均可以得到一個(gè)n維的隱含層表示ht:
接著本文采用注意力機(jī)制,來(lái)計(jì)算整個(gè)標(biāo)題的編碼。注意力機(jī)制的原理就是為不同隱含層表示計(jì)算權(quán)重,并通過(guò)加權(quán)求和的方式得到最終的特征表示,以此來(lái)體現(xiàn)文本中不同部分的重要程度。在本文中,注意力機(jī)制是通過(guò)一個(gè)單層的多層感知機(jī)(multi-layer perceptron,MLP)和一個(gè)SoftMax層來(lái)實(shí)現(xiàn)的:
其中,Watt和batt為感知機(jī)層的參數(shù),可以通過(guò)反向傳播進(jìn)行訓(xùn)練。
注意力機(jī)制最終得到的權(quán)重αt是通過(guò)ut與uc之間的相似度來(lái)衡量的。uc被稱為環(huán)境向量(context vector),用于表示對(duì)隱含層向量的選擇傾向。環(huán)境向量的選取方式詳見(jiàn)3.2.5小節(jié)。
最終,標(biāo)題的編碼embtitle(64維)由標(biāo)題中的每個(gè)詞的隱含層表示加權(quán)平均獲得:
3.2.3 原材料編碼
食譜中通常會(huì)有一個(gè)部分列出其中使用的各種原材料,其中包括可見(jiàn)的材料(如西紅柿、土豆等)與不可見(jiàn)的材料(如鹽、糖等)。
原材料編碼embingr的獲得的方式與標(biāo)題編碼的方式基本相同。首先通過(guò)式(2)、式(3)得到隱含層表示,接著通過(guò)式(4)、式(5)計(jì)算權(quán)重,并最終通過(guò)式(6)得到最終的編碼embingr(64維)。
3.2.4 步驟編碼
操作步驟詳細(xì)描述了食物的制作過(guò)程,是食譜中語(yǔ)義信息最豐富的部分,也是最復(fù)雜的部分。通常該部分是由多個(gè)長(zhǎng)句子組成的。操作步驟部分的描述通常與成品的外觀沒(méi)有直接的對(duì)應(yīng)關(guān)系,比如,“放入鍋中翻炒”這個(gè)步驟,并沒(méi)有直接描述處理之后原材料顏色和形狀的變化,而需要模型自己去理解。
在對(duì)步驟信息進(jìn)行編碼時(shí),本文沒(méi)有選擇類似[10]的層次編碼的方法,即:先通過(guò)一個(gè)編碼模型,將詞向量轉(zhuǎn)換為句子級(jí)別的編碼,再通過(guò)第二個(gè)編碼模型,得到所有句子的整體編碼。本文沒(méi)有采用層次編碼方法,而是仍采用了單個(gè)Transformer模型,從詞向量直接得到最終的整體表示。這樣做的原因在于以下幾點(diǎn):首先使用層次Transformer模型對(duì)計(jì)算資源的消耗是巨大的;其次,Transformer模型本身多個(gè)子層的堆疊已經(jīng)起到了一定程度的抽象作用(本文在實(shí)際測(cè)試時(shí)也發(fā)現(xiàn)兩種方法準(zhǔn)確率基本相同)。綜上所述,在編碼步驟信息時(shí),將其視為一個(gè)較長(zhǎng)的文檔,仍采用式(2)到式(6)得到最終的步驟編碼embinst(256維)。
3.2.5 環(huán)境向量的選擇
文獻(xiàn)[10]中使用了與本文類似的注意力機(jī)制。本文對(duì)文獻(xiàn)[10]中注意力機(jī)制的uc(環(huán)境向量)選擇方式進(jìn)行了改進(jìn)。文獻(xiàn)[10]中uc采用隨機(jī)初始化,在訓(xùn)練的過(guò)程中不斷調(diào)整,并在所有食譜之間共享。這種方式并不是選取環(huán)境向量的最優(yōu)方式,隨機(jī)初始化并且共享的uc難以反映不同食譜的獨(dú)特性。本文選擇使用標(biāo)題的所有隱含層向量的最大池化作為uc,原因是食譜的標(biāo)題可以看作是食譜的撰寫人提供的對(duì)食譜的整體總結(jié),從中可以得到一個(gè)食譜更好的綜合表示,從而幫助注意力機(jī)制將更高的權(quán)重賦予該食譜更加重要的部分。實(shí)驗(yàn)部分也證實(shí)本文采用的方式確實(shí)可以得到較高的準(zhǔn)確率。
3.2.6 文字整體編碼
食譜文字整體的編碼由三部分的編碼拼接得到:
在處理圖片時(shí),本文采用了當(dāng)前圖像處理領(lǐng)域廣泛采用且效果較好的深度卷積網(wǎng)絡(luò)——深度殘差網(wǎng)絡(luò)(deep residual network,ResNet)[23]。
本文采用50層的殘差網(wǎng)絡(luò)版本ResNet50作為圖片編碼模塊,并采用該網(wǎng)絡(luò)在ImageNet數(shù)據(jù)集上預(yù)訓(xùn)練的參數(shù)對(duì)網(wǎng)絡(luò)參數(shù)進(jìn)行初始化。在將圖片輸入殘差神經(jīng)網(wǎng)絡(luò)后,本文選取網(wǎng)絡(luò)的倒數(shù)第二層(即除去最后一層SoftMax分類層)作為圖片數(shù)據(jù)的編碼embimage,維度為2 048維。
本文將文字與圖片中對(duì)應(yīng)的信息分別通過(guò)一層全連接神經(jīng)網(wǎng)絡(luò)編碼映射到同一個(gè)隱空間,分別表示為?R與?v。隱空間維度為1 024維。全連接網(wǎng)絡(luò)使用tanh激活函數(shù),原因是希望在該隱空間中使用余弦相似度來(lái)度量樣本表示之間的相似度:
本文中采用與文獻(xiàn)[11]相同的損失函數(shù),其中包括兩部分:檢索損失Lretr與語(yǔ)義損失Lsem??偟膿p失函數(shù)為:
其中,λ為控制檢索損失與語(yǔ)義損失相對(duì)大小的超參數(shù)。
檢索損失的目標(biāo)是,使得錨樣本與正例之間的相似度至少高于其與負(fù)例之間相似度一個(gè)正數(shù)α。
語(yǔ)義損失的計(jì)算方式與檢索損失基本一致,不同之處在于三元組構(gòu)建時(shí),正例和負(fù)例分別選取另一個(gè)模態(tài)中與錨樣本類別相同和不同的樣本的表示,記為
語(yǔ)義損失的目標(biāo),是希望盡量提高不同模態(tài)間同一類別樣本之間的相似度,降低不同類別樣本之間的相似度。
由于整體模型較大,參數(shù)較多,同時(shí)學(xué)習(xí)文字和圖片兩個(gè)編碼模塊的參數(shù)可能會(huì)造成訓(xùn)練結(jié)果的震蕩。因此,本文借鑒跨模態(tài)領(lǐng)域訓(xùn)練模型時(shí)常用的思路[24],對(duì)模型進(jìn)行分階段訓(xùn)練。訓(xùn)練過(guò)程共分為三個(gè)階段:
第一階段,固定圖片編碼器模塊的參數(shù),反向傳播時(shí),只更新文字編碼模塊及聯(lián)合表示學(xué)習(xí)模塊的參數(shù),直到在驗(yàn)證集上準(zhǔn)確率收斂。
第二階段,固定文字編碼模塊和聯(lián)合表示學(xué)習(xí)模塊的參數(shù),反向傳播時(shí),只更新圖片編碼模塊的參數(shù),直到在驗(yàn)證集上準(zhǔn)確率收斂。
第三階段,同時(shí)更新所有模塊的參數(shù)。經(jīng)過(guò)前兩階段的訓(xùn)練后,所有模塊的參數(shù)均已基本訓(xùn)練完成,該階段僅對(duì)模型參數(shù)進(jìn)行進(jìn)一步的微調(diào)。
算法1對(duì)模型的訓(xùn)練過(guò)程進(jìn)行了總結(jié)。
算法1模型訓(xùn)練過(guò)程
參數(shù):食譜編碼模塊參數(shù)θR,圖片編碼模塊參數(shù)θv,聯(lián)合嵌入模塊參數(shù)θJ,批尺寸N,超參數(shù)α、λ。
輸入:食譜集合R,圖片集合V。
輸出:網(wǎng)絡(luò)參數(shù)θR、θv、θJ,食譜與圖片在隱空間內(nèi)的嵌入?R、?v。
為了使模型更符合國(guó)內(nèi)的飲食習(xí)慣,本文從國(guó)內(nèi)熱門的公開(kāi)食譜網(wǎng)站中下載數(shù)據(jù),構(gòu)建了一個(gè)大規(guī)模的中餐食譜數(shù)據(jù)集——LCR數(shù)據(jù)集。
LCR數(shù)據(jù)集中共包括177 048個(gè)食譜及該食譜對(duì)應(yīng)的成品圖片,在實(shí)驗(yàn)時(shí),本文隨機(jī)從中抽取15 000個(gè)作為驗(yàn)證集(validation set),15 000個(gè)作為測(cè)試集(test set),剩余147 048個(gè)作為訓(xùn)練集(training set)。
LCR數(shù)據(jù)集中的每個(gè)食譜均包括標(biāo)題、原材料、操作步驟三部分。經(jīng)統(tǒng)計(jì),每個(gè)食譜的平均標(biāo)題長(zhǎng)度為6.83個(gè)字,每個(gè)食譜中平均包含6.89種原材料與7.34個(gè)操作步驟。
同時(shí),本文參考文獻(xiàn)[9]的方法,通過(guò)二/三元組匹配的方法,將LCR數(shù)據(jù)集中的食譜分為了1 026類,其中第0類為背景類,表示類別無(wú)法確定的食譜。在全部食譜中,屬于背景類的食譜約占52%。
4.2.1 實(shí)現(xiàn)細(xì)節(jié)
本文代碼使用Pytorch框架實(shí)現(xiàn)。模型使用Adam優(yōu)化器進(jìn)行訓(xùn)練,學(xué)習(xí)率為10-4,間隔α為0.3,λ為0.1,批尺寸(batch size)為50。以上超參數(shù)均在驗(yàn)證集上進(jìn)行選擇。
在計(jì)算損失函數(shù)時(shí),選擇在每個(gè)批(batch)中為錨樣本選擇正例和負(fù)例。具體而言,將一個(gè)批中所有的樣本均視為錨樣本,對(duì)每個(gè)錨樣本,在該批中尋找所有符合條件的正負(fù)例構(gòu)建三元組,以進(jìn)行檢索損失和語(yǔ)義損失的計(jì)算。
4.2.2 評(píng)價(jià)指標(biāo)
本文實(shí)驗(yàn)選取了使用圖片檢索食譜(im2recipe)及使用食譜檢索圖片(recipe2im)兩個(gè)任務(wù)來(lái)衡量模型的準(zhǔn)確率,并分別在1 000/5 000/10 000三種大小的備選集合上進(jìn)行測(cè)試。
本文實(shí)驗(yàn)采用中位序數(shù)(median rank,MedR)以及topK召回率(recall rate at topK,R@K)作為準(zhǔn)確率評(píng)價(jià)指標(biāo)。中位序數(shù)指所有檢索樣本對(duì)應(yīng)的被檢索樣本在檢索結(jié)果中的序數(shù)的中位數(shù),其值越低,代表模型的準(zhǔn)確率越高;topK召回率,舉例而言如im2recipe任務(wù)中的top 5召回率,指使用圖片檢索食譜時(shí),圖片對(duì)應(yīng)的食譜出現(xiàn)在檢索結(jié)果前5位的比率,其值越高,代表模型準(zhǔn)確率越高。
上述所有評(píng)價(jià)指標(biāo)均在每種大小的候選集上獨(dú)立地計(jì)算30次后匯報(bào)平均值。
本文選擇了三種食譜檢索領(lǐng)域近年提出的模型作為基準(zhǔn)算法,與本文提出的算法進(jìn)行準(zhǔn)確率比較,分別為:(1)JNE(joint neural embedding)[9];(2)ATTEN[10];(3)Adamine[11]。實(shí)驗(yàn)結(jié)果如表1所示。
由表1看出本文模型的準(zhǔn)確率在不同的任務(wù)、不同的備選集合大小下均顯著優(yōu)于三種基準(zhǔn)算法。其中,在10 000備選集上im2recipe任務(wù)的top 1召回率相比最好的基準(zhǔn)算法提高了22%。三種基準(zhǔn)算法在文本編碼模塊上均使用了循環(huán)神經(jīng)網(wǎng)絡(luò)模型線性處理文本,而本文模型通過(guò):(1)自注意力機(jī)制更好地捕捉食譜中遠(yuǎn)距離的依賴關(guān)系;(2)改進(jìn)的環(huán)境變量更好地捕捉食譜的獨(dú)特性,提高了模型的語(yǔ)義理解能力,取得了更高的檢索準(zhǔn)確率。
在比較準(zhǔn)確率的同時(shí),本文還進(jìn)行了一些對(duì)照實(shí)驗(yàn),通過(guò)改變或刪除一部分模型中的模塊并進(jìn)行準(zhǔn)確率的比較,驗(yàn)證本文模型中各模塊的有效性。
4.4.1 注意力機(jī)制
本文采用了與文獻(xiàn)[10]不同的機(jī)制來(lái)選取注意力機(jī)制中的環(huán)境向量(詳見(jiàn)3.2.5小節(jié))。本文對(duì)兩種選取方式進(jìn)行了比較,詳細(xì)結(jié)果見(jiàn)表2,其中Uc_glob為文獻(xiàn)[10]環(huán)境向量選取方式,Uc_title為本文模型中的選取方式。文獻(xiàn)[10]中對(duì)所有的食譜均使用同一組端到端學(xué)習(xí)的參數(shù)向量作為環(huán)境向量,而本文則選取各食譜標(biāo)題編碼向量的最大池化作為環(huán)境向量,更好地捕捉了不同食譜之間的差異性和獨(dú)特性,在絕大多數(shù)情況下得到的結(jié)果要優(yōu)于文獻(xiàn)[10]中的選取方式。
Table 1 Comparison between proposed model and baselines表1 本文模型與基線方法對(duì)比
Table 2 Comparison between two attention methods表2 兩種注意力方法對(duì)比
4.4.2 消融研究
圖6展示了采用食譜的各個(gè)部分及其組合的數(shù)據(jù)對(duì)模型進(jìn)行訓(xùn)練的結(jié)果(僅匯報(bào)在10 000大小的備選集im2recipe任務(wù)的準(zhǔn)確率),該結(jié)果可以反映食譜中的各個(gè)部分的重要程度。
可以看到,單獨(dú)使用食譜的某一部分進(jìn)行訓(xùn)練時(shí),在三部分中,使用“操作步驟”這一數(shù)據(jù)進(jìn)行訓(xùn)練得到的準(zhǔn)確率最高,這反映了操作步驟在食譜中的重要性。同時(shí),這也說(shuō)明了模型在理解輸入的食譜時(shí),除了標(biāo)題和原材料部分包含的部分可見(jiàn)的特征之外,模型確實(shí)從復(fù)雜的操作步驟信息中學(xué)習(xí)到了更為豐富的隱式的語(yǔ)義信息,用于檢索最終的成品圖片。
同時(shí),根據(jù)實(shí)驗(yàn)結(jié)果可以看到,單獨(dú)使用標(biāo)題或者原材料這兩部分?jǐn)?shù)據(jù)訓(xùn)練模型得到的結(jié)果不佳,但當(dāng)兩部分組合使用時(shí),準(zhǔn)確率甚至要略優(yōu)于單獨(dú)使用操作步驟數(shù)據(jù)。這說(shuō)明這兩部分?jǐn)?shù)據(jù)中與食譜檢索任務(wù)相關(guān)的信息是互補(bǔ)的。
4.4.3 參數(shù)靈敏度實(shí)驗(yàn)
本文還對(duì)模型中使用到的兩個(gè)超參數(shù)λ和α進(jìn)行了參數(shù)靈敏度測(cè)試,其中λ為控制語(yǔ)義損失與檢索損失相對(duì)大小的超參數(shù),α為損失函數(shù)中的間隔(margin),表示本文對(duì)正樣本對(duì)和負(fù)樣本對(duì)相似度差異的期望值。詳細(xì)結(jié)果見(jiàn)圖7(10 000備選集上im2recipe任務(wù)的R@10準(zhǔn)確率)。
從圖7中可以看出,λ過(guò)大過(guò)小均會(huì)影響模型準(zhǔn)確率。λ過(guò)小時(shí),模型可能無(wú)法充分利用語(yǔ)義損失中包含的高層語(yǔ)義信息;λ過(guò)大時(shí),模型可能過(guò)于關(guān)注抽象的類別信息而不能準(zhǔn)確地進(jìn)行匹配。同樣,α過(guò)大過(guò)小也會(huì)對(duì)準(zhǔn)確率造成不良影響。α過(guò)小時(shí),正例和負(fù)例與錨樣本之間相似度的差距不明顯,容易混淆;α過(guò)大時(shí),會(huì)使模型在訓(xùn)練后期關(guān)注過(guò)多的三元組,其中很多可能并不需要進(jìn)一步優(yōu)化,導(dǎo)致真正需要進(jìn)一步優(yōu)化的三元組的訓(xùn)練信號(hào)被掩蓋。
Fig.6 Experiments results of using different recipe parts and their combinations圖6 使用食譜不同部分及組合的實(shí)驗(yàn)結(jié)果
Fig.7 Experiment results of parameter sensitivity圖7 參數(shù)靈敏度實(shí)驗(yàn)結(jié)果
針對(duì)當(dāng)前人們對(duì)便捷的飲食攝入記錄工具的需求,本文提出了一種基于自注意力機(jī)制的跨模態(tài)食譜檢索模型,可以根據(jù)輸入的食物圖片自動(dòng)檢索與其對(duì)應(yīng)的食譜,進(jìn)而達(dá)到記錄飲食攝入的目的。
本文模型借助Transformer模型的自注意力機(jī)制,更好地捕捉食譜中出現(xiàn)的遠(yuǎn)距離依賴關(guān)系,提升了模型的語(yǔ)義理解能力。同時(shí),本文還對(duì)傳統(tǒng)食譜檢索模型中使用的注意力機(jī)制進(jìn)行了改進(jìn),更好地捕捉了不同食譜之間的獨(dú)特性,進(jìn)一步提升了模型準(zhǔn)確率。
盡管本文模型相對(duì)傳統(tǒng)模型已經(jīng)有了明顯進(jìn)步,但還沒(méi)有達(dá)到盡善盡美的地步。當(dāng)前方法僅在食譜文字編碼模塊中進(jìn)行了有針對(duì)性的考慮,而在圖片編碼模塊部分則采用了較為常用的圖片處理模型。將來(lái)會(huì)對(duì)圖片編碼模塊進(jìn)行針對(duì)食譜檢索問(wèn)題的調(diào)整和優(yōu)化。