本文主要基于論文
Vinyals O, Toshev A, Bengio S, et al. Show and tell: A neural image caption generator[C]// Computer Vision and Pattern Recognition. IEEE, 2015:3156-3164.
溫馨提示:要看懂本文,必須先熟悉CNN痪蝇、RNN和單詞嵌入模型等知識聂示。
簡單來說扇住,就是輸入一張圖片暖侨,讓機(jī)器給出圖片信息的描述克蚂。
由于卷積神經(jīng)網(wǎng)絡(luò)在圖片識別上表現(xiàn)很好集绰,循環(huán)神經(jīng)網(wǎng)絡(luò)在自然語言處理領(lǐng)域表現(xiàn)突出十电,所以我們將兩者結(jié)合起來,得到一個能用自然語言描述圖片內(nèi)容的模型肥橙。
模型
統(tǒng)計(jì)機(jī)器翻譯的最新進(jìn)展表明涌矢,給定一個強(qiáng)大的序列模型,通過以“端到端”的形式(包含訓(xùn)練和推斷過程)給出輸入句子的情況下快骗,直接最大化正確翻譯的概率娜庇,可以實(shí)現(xiàn)最先進(jìn)的結(jié)果。這些模型利用遞歸神經(jīng)網(wǎng)絡(luò)將可變長度的輸入方篮,編碼為固定維度向量名秀,并使用該表示將其“解碼”為期望的輸出句子。同理藕溅,我們輸入一張圖片(而不是句子)匕得,采用同樣的原則,輸出圖片的描述巾表,這就是我們的目的汁掠。
因此,我們建議通過使用以下公式集币,直接最大化給定圖像的正確描述的概率:
其中θ是模型的參數(shù)考阱,I代表一張圖片,S是對該圖片正確的描述鞠苟,然后對概率p取對數(shù)乞榨。因?yàn)椋琒可以代表任意一個句子当娱,長度不定吃既。所以,經(jīng)常使用鏈規(guī)則來模擬S0......SN的聯(lián)合分布跨细,其中N是這個特定例子的長度:
在概率論中鹦倚,鏈規(guī)則(也稱為通用乘積規(guī)則)允許僅使用條件概率來計(jì)算一組隨機(jī)變量的聯(lián)合分布的任何成員。該規(guī)則在貝葉斯網(wǎng)絡(luò)的研究中是有用的冀惭,貝葉斯網(wǎng)絡(luò)根據(jù)條件概率描述概率分布震叙。
考慮隨機(jī)變量的索引集合A1......AN愤诱, 為了找到聯(lián)合分布的值,我們可以應(yīng)用條件概率的定義來獲得:
例如捐友,求四個變量的聯(lián)合分布
在上式中,為方便起見溃槐,我們放棄了對θ的依賴匣砖。在訓(xùn)練階段,(S, I)是成對出現(xiàn)的昏滴,我們在整個訓(xùn)練集上使用隨機(jī)梯度下降猴鲫,來使(2)式中的對數(shù)概率之和最優(yōu)化。
很自然的谣殊,我們使用循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)對p(St | I, S0......St-1)進(jìn)行建模拂共,其中我們在t-1(包括t-1)之前的可變數(shù)量的單詞,是由固定長度的隱藏狀態(tài)或“記憶”ht表示的姻几。這個記憶單元在看到一個新的輸入xt之后宜狐,通過一個非線性函 f 數(shù)來更新:
為了使上述RNN更具體,需要做出兩個關(guān)鍵的設(shè)計(jì):函數(shù) f 的形式到底是什么蛇捌?以及圖片和詞匯是如何作為xt輸入的抚恒?對于 f,我們使用長短期記憶(LSTM)網(wǎng)絡(luò)络拌,其在序列任務(wù)(例如翻譯)上表現(xiàn)出很先進(jìn)的性能俭驮,該模型將在下一節(jié)中介紹。
對于圖像的表示春贸,我們使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)混萝。它已被廣泛用于圖像處理任務(wù),并且目前是用于物體識別和檢測的最先進(jìn)技術(shù)萍恕。我們對CNN使用了一種新穎的批量標(biāo)準(zhǔn)化方法逸嘀,此外,它們已被證明可以通過轉(zhuǎn)移學(xué)習(xí)來推廣到其他任務(wù)允粤,例如場景分類厘熟。單詞用嵌入模型表示。
基于LSTM的句子生成器
上式(3)中 f 的選擇取決于其處理消失和爆炸梯度的能力维哈,這是設(shè)計(jì)和訓(xùn)練RNN的最常見挑戰(zhàn)绳姨。為了應(yīng)對這一挑戰(zhàn),人們引入了一種特殊形式的循環(huán)網(wǎng)絡(luò)阔挠,稱為LSTM飘庄,并成功應(yīng)用于翻譯和序列生成。
LSTM模型的核心是一個存儲器單元c购撼,如果觀察到有什么輸入跪削,它就編碼知識(參見下圖)谴仙。
單元的行為由“門”控制 - 這些層(門)是乘法運(yùn)算的碾盐,因此如果門為1晃跺,則可以保持門控層的值,如果門為0則可以保持0毫玖。特別地掀虎,使用三個門,用來控制是否忘記當(dāng)前單元值(忘記門f)付枫,是否應(yīng)該讀取其輸入(輸入門i)以及是否輸出新單元值(輸出門o)烹玉。門和單元的更新和輸出的定義如下:
其中(圓圈中間一點(diǎn))表示和門值的乘積,并且各種W矩陣是訓(xùn)練的參數(shù)阐滩。這樣的乘法門使得可以穩(wěn)健地訓(xùn)練LSTM二打,因?yàn)檫@些門很好地處理梯度爆炸和消失的問題。非線性處理函數(shù)是S形σ(·)和雙曲正切h(·)掂榔。最后一個等式mt是用于輸入到Softmax函數(shù)的继效,它將在所有單詞上產(chǎn)生概率分布pt。
訓(xùn)練模型
我們訓(xùn)練一個LSTM模型装获,當(dāng)它看到圖片和由p(St | I, S0......St-1)預(yù)定義的所有單詞之后莲趣,預(yù)測句子中的每個單詞。為此饱溢,以展開形式考慮LSTM是有益的 - 為圖像和每個句子中的詞創(chuàng)建LSTM存儲器的副本喧伞,使得所有LSTM共享相同的參數(shù)。LSTM在t - 1時刻的輸出mt-1绩郎, 在時間 t 輸入到LSTM(參見下圖3)潘鲫。
所有重復(fù)連接都轉(zhuǎn)換為展開版本中的前饋連接溉仑。說的更詳細(xì)點(diǎn),如果用 I 表示輸入的圖片状植,用S = (S0浊竟,......,SN)表示對圖片的真實(shí)描述津畸,則展開過程如下:
其中我們將每個單詞表示為one-hot矢量St振定,St來自于一個足夠描述圖片的字典,其維數(shù)等于字典的大小肉拓。注意后频,我們用S0表示一個特殊的起始單詞,用SN表示一個特殊結(jié)束的單詞,它表示句子的開頭和結(jié)尾卑惜。特別是LSTM通過發(fā)出停止字膏执,通知已生成完整的句子。圖像和單詞都映射到同一個空間露久,圖像通過使用視覺CNN更米,單詞通過使用單詞嵌入We。圖像 I 僅僅在 t = -1 時輸入一次毫痕,告訴LSTM圖像的內(nèi)容征峦。憑我們的經(jīng)驗(yàn),如果每一步都將圖像作為額外的輸入镇草,效果是比較差的,因?yàn)榫W(wǎng)絡(luò)會利用圖像中的噪聲瘤旨,更容易產(chǎn)生過擬合梯啤。
我們的損失是每個步驟中正確單詞的負(fù)對數(shù)概率的總和,如下:
補(bǔ)充
BLEU
BLEU的全名為:bilingual evaluation understudy存哲,即:雙語互譯質(zhì)量評估輔助工具因宇。它是用來評估機(jī)器翻譯質(zhì)量的工具。
BLEU算法實(shí)際上在做的事:判斷兩個句子的相似程度祟偷。我想知道一個句子翻譯前后的表示是否意思一致察滑,顯然沒法直接比較,那我就拿這個句子的標(biāo)準(zhǔn)人工翻譯與我的機(jī)器翻譯的結(jié)果作比較修肠,如果它們是很相似的贺辰,說明我的翻譯很成功。因此嵌施,BLUE去做判斷:一句機(jī)器翻譯的話與其相對應(yīng)的幾個參考翻譯作比較饲化,算出一個綜合分?jǐn)?shù)。這個分?jǐn)?shù)越高說明機(jī)器翻譯得越好吗伤。(注:BLEU算法是句子之間的比較吃靠,不是詞組,也不是段落)
BLEU實(shí)質(zhì)是對兩個句子的共現(xiàn)詞頻率計(jì)算足淆,但計(jì)算過程中使用好些技巧巢块,追求計(jì)算的數(shù)值可以衡量這兩句話的一致程度。 BLEU容易陷入常用詞和短譯句的陷阱中巧号,而給出較高的評分值族奢。
參考資料:
https://blog.csdn.net/qq_31584157/article/details/77709454