Meshed-Memory Transformer for Image Captioning
一句話復盤:我們提出了對self-attention增加記憶槽以引入高層信息的特征向量結構,和基於兩重cross-attention作權重的encoder和decoder全連接結構。
還是邊看邊寫的,這文章文法很舒服
科普
一些名詞解釋及其關系
Transformer結構引出了self-attention(encoder),cross-attention(encoder-decoder);self-attention中dot-product的問題又引出了scaled dot-product
https://blog.csdn.net/longxinchen_ml/article/details/86533005
這里補一篇代碼科普哈弗的NLP組http://nlp.seas.harvard.edu/2018/04/03/attention.html
本篇文章的結構方面的改進即在於對self-attention和cross-attention的改進——memory augmented attention和Meshed Cross-Attention
Abstract & Conclusion
objection:Transformer基的模型在其他地方state-of-the-art,但是在image caption探索的還比較少。為了fill the gap ,我們提出了M^2(Meshed Transformer with Memory)
idea:1.學習不同層級表示之間的關系得到先驗知識2.在encoder和decoder間建立mesh-like connectivity去挖掘高層和底層特征。
result:模型提升了圖像的編碼和語言生成的效果。
Experiment:在COCO上測試的時候,在Karpathy split test set的single-model和ensemble configurationson上以及online test server上我們是最好的。
Introduction:
發展歷史:
主流主要結構:RNNs/LSTMs 在其上添加注意力機制/基於圖的結構(卷積語言模型研究相對冷門)
注意力機制發展: full-attention逐漸被self-attention替代,以其offers unique opportunities in terms of set and sequence modeling performances,
NLP推動: 1. 引入Transformer,BERT 2.以上兩種模型的引入給予了注意力機制改善的空間,出現了在multi-layer以及其他方面的改進
引入多模態
我們:
受到Transformer的啟發,結合了兩個先前image caption的關鍵創新,提出了我們的M²模型。(ps:fashion大概是樣式的意思)
創新1.將圖像區域和其關系編碼為一個多層次結構,通過meomory vector實現
創新2.caption生成時結合多層次視覺(信息)的關系),以習得而來的門機制通過對不同階段的貢獻賦權來實現(賦權時產生mesh connectivity schema between encoder and decoder layers模型也因此命名)
實驗:
對比了多個全注意的baseline,和一些近期的模型。我們的模型在COCO Karpathy split test set 的single-model and ensemble configurations上獲得了state-of-the-art。Most importantly,我們在online test server上取得了第一。
貢獻:
1. 提出了新的全注意的image caption算法。模型包含一個多層編碼器和一個多層解碼器。編碼層與解碼層之間建立網狀鏈接,並通過學習的門機制加權進行控制;
2. 在我們的視覺編碼器中,圖像區域之間的關系利用學習到的先驗知識以多級方式進行編碼,該知識通過持久內存向量進行建模;
3. 當然M²模型最好
4. 我們將M²與各類全注意模型以及近期提出的模型進行了對比並提供了源碼和訓練模型
Related Work:
跟着再梳理一遍。
早期: 由目標檢測器或屬性預測器填充模板
網絡: RNN+CNN
訓練:交叉熵——強化學習
編碼: 單層注意力機制被用來合並空間信息,從CNN特征網格——目標檢測器提取的圖像區域——基於圖的
網絡:卷積語言模型下,出了一些新的全注意范例在翻譯和理解領域state-of-the-art——近期引入了Transformer model
Transformer線: Herdade et al.使用了Transformer結構合並了(incorporate)目標的幾何關系;Li等人使用Transformer研究了視覺信息和額外的語義信息——Huang等人搭配了Transformer-like的encoder和LSTM decoder,實現了基於上下文的權重控制(大概?)
我們: 對encoder和decoder都進行了改進,提出了兩個新的attention operators和新的編解碼器連接
Meshed-Memory Transformer
我們的模型分成兩大部分,encoder和decoder,兩者都是由一堆注意力層組成。所有模態內和跨模態的信息都是通過scaled dot-product attention,without using recurrence(見科普)進行交互。注意力機制作用在queries Q, keys K, values V三個集合上,根據Q和K的相似分布對V進行加權求和。
Eq1
3.1 MemoryAugmented Encoder
前面說了一下self-attention可以做到一個permutation invariant encoding
X:圖像中提取的區域
W_q/k/v: 習得的權重矩陣
S(X)_(i,j): 對應位置的加權和
Q,K,V由輸入特征線性映射得到,operater記為:
Eq2
自注意力只僅僅和線性映射的pari-wise級相似度有關——可以將self-attention operator看為pair-wise級別關系的編碼(自然屬性)——不能形成區域間關系的先驗知識
為了解決這個問題,提出了memory-augmented attention operator.:
對K和V集添加了一個slot可以用來編碼先驗信息。先驗不依賴於輸入X,是一個普通的向量
M_k和M_v是兩個n_m行習得矩陣(那個slot)
Eq3
這個模型同樣可以使用多頭結構
Encoding layer:
memory-augmented operator被嵌入到Transformer-like layer,給position-wise(位寬??)的前饋層,后接兩個仿射變換和一個非線性層
Eq4
PS:從公式來看好像是X先經過一次仿射變為(VX+b),之后ReLU激活之后再進行一次仿射U(X')+C
memory-augmented attention 和 position-wise feed-forward封裝成一個殘差網絡,並通過layer norm,encoding layer完整的定義如下:
E5q
這里結合一下Transformer Encoder block的結構圖可能看着比較清楚(圖源科普)
Full Encoder
根據上文介紹的這種encoding layer,經過多層堆疊形成完整的encoder。每層的輸入為前一層的輸出,這樣后層可以使用前面識別出的先驗知識。
3.2 Meshed Decoder
I:生成的詞+區域編碼
O:下一個caption token
我們提出了不同於Transformer的cross-attetion operator的meshed attention operator,其優點在於解碼時可以利用各編碼層信息。
Meshed Cross-Attention
我們的這個Meshed Attention operator將每個輸入序列Y同全部編碼層X相連,對所有經cross-attention計算得到的層分量C根據各層獨立貢獻和相對重要性α加權求和得到輸出M
Eq6,Eq7,Eq8
Architecture of decoding layers
使用了masked self-attention operation,連接t-th的Q和t-th之前的V 和K。類似encoding layer,decoding layer 也有position-wise feed-forward layer,對所有層進行AddNorm操作,整合如下
Eq9
類似編碼段,多層疊加以提升輸入文本的理解和輸出caption token的能力。總而言之解碼器根據輸入的詞向量和輸出序列的第t個元素,在Y≤t的條件(大概是條件概率)下,通過線性映射和softmax,編碼出字典中t+1 -th word(token)的概率。
3.3. Training details
follow 一個傳統,以word-level crossentropy loss (XE)進行預訓練,並使用強化學習finetune了生成部分。
根據XE訓練時,根據GT 前詞進行后詞預測,這樣可以所有操作並行,一次傳播得到全部輸出序列。
強化學習時,對以beam search采樣的序列進行了(變/多種,應該是變種待驗證)的self-critical sequence training approach。解碼時采樣了每步的top-k個詞並持久概率最高的top-k序列。使用了CIDEr-D分數作為獎勵,獎勵值使用了平均的,而不是貪婪的。單樣本的梯度如下:
Eq10
預測時使用beam search進行解碼,並保留最后束中預測概率最高的。
4. Experiments
4.1 Datasets
COCO,nocaps,COCO online test server
4.2 Experimental settings
Metrics:
BLEU,METEOR,ROUGE,CIDEr,SPICE
Implementation details:
區域提取:以ResNet101為backbone的Faster-RCNN在Visual Genome dataset上finetune,對每個區域生成2048D的特征向量
詞匯編碼:對詞匯one-hot編碼然后線性投影到模型輸入d(512);用正弦位置編碼表示word在序列中的位置,在解碼前對這兩個嵌入相加
參數:
layer的d=512,
8個head,
memory vector的d=40,
注意力和前饋層的dropout 概率=0.9,
scaling factor sqrt N
預訓練lr 參考了[37]
強化學習lr 5e-6
Adam optimizer
bacth size=50
beam size 5
Novel object captioning: 以GloVe word embeddings表示word,在解碼前后增加了全連接層進行GloVe dimensionality和d的維度轉換。最后的softmax之前×了word embedding的轉置,其他保持不變。
4.3 Ablation study
Performance of the Transformer
探索M²和原始Transformer變種:
第一組:encoder和decoder的層數影響——三層比較好,后面基於此實驗
第二組:Attention on Attention baseline——在編解碼器添加Attention on Attention (AoA)機制(實現對標准點乘注意力的可選擇性)。做了一個Transformer基模型的 baseline
第三組: Meshed Connectivity——引入了一個弱化條件組(1-to-1)以觀察全連接是否提升
第四組: 研究了對編碼層權重的激活函數,用對權重行級的softmax替換了對編碼器元素別的sigmoid,降了1CIDEr(ps:這里一共做了幾組啊?)
第五組: 研究持久記憶的作用,分別在1-to-1和meshed連接做了測試,
4.4 Comparison with state of the art
和state-of-the-art的[
SCST(attention over the grid of features),
Up-Down(attention over reigons),
RFNet(merge different CNN features),
GCN-LSTM(Graph CNN for pairwise relationships),
SGAE(auto-encoding scene graphs),
AoANet(AoA+LSTM),
ORT(plain Transformer+pairwise distances weight),]的幾個模型比了一下
在Karpathy” test split single model and ensemble configurations和online COCO evaluation server進行了測試
Single model
我們基本是最好的
Ensemble model
我們基本是最好的
Online Evaluation
這回是全面最優
4.5 Describing novel objects
對比對象:Up-Down,Neural Baby Talk
方法: GloVe word embeddings and Constrained Beam Search (CBS)
全面超越,引入CBS答復提升Out-of-Domain
4.6 Qualitative results and visualization
整體評價:our model is able to generate more accurate and descriptive captions, integrating fine-grained details and object relations.