多模態匹配研究簡史
跨模態研究核心重點在于如何將多模態數據匹配上,即如何將多模態信息映射到統一的表征空間。早期研究主要分成兩條主線:Canonical Correlation Analysis (CCA) 和Visual Semantic Embedding (VSE)。
CCA 系列方法
主要是通過分析圖像和文本的 correlation,然后將圖像和文本到同一空間。這一系列的問題論文完美,但是效果相對深度學習方法還是有待提高的。雖然后期也有基于深度學習的方案 (DCCA),但是對比后面的 VSE 方法還有一定差距。
VSE 系統方法
將圖像和文本分別表示成 Latent Embedding,然后將多模態 Latent Embedding 擬合到同一空間。VSE 方法又延伸出來非常多的方法例如 SCAN,PFAN。這些方法在通用圖文匹配上已經拿到不錯效果。
隨著 pre-training 和 self-supervised 技術在 CV 和 NLP 領域的應用。2019 年開始,有學者開始嘗試基于大規模數據,使用預訓練的 BERT 模型將圖文信息擬合同一空間。這些方法在通用領域取得很好的效果,這一系列的方法可以參看 VLBERT 這篇 Paper。
基于 BERT 的預訓練圖文模型的主要流程:
1)利用圖像目標檢測技術先識別圖像中的 Region of Interests(RoIs)。
2)把 ROI 當做圖像的 token,和文本 token 做 BERT 多模態融合,這里面有兩個方案:
Single-stream:以 VLBERT 為代表,直接將圖像 token 和文本 token 放入到 BERT 做多模態融合。
Cross-stream:以 ViLBERT 為代表,將圖像 token 和文本 token 先做初步的交互,然后在放入到 BERT。
我們嘗試了 ViLBERT 方法,發現在通用領域效果確實不錯。但是在電商領域,由于提取的 ROI 并不理想,導致效果低于預期。主要原因在于:
1)電商圖像 ROI 太少
電商圖像產品單一,背景簡單提取 ROI 很少,如圖 1(c)。統計來看,通用領域 MsCoCo 數據,每張圖像可以提取 19.8 個 ROI,但是電商只能提取 6.4 個 ROI。當然我們可以強制提取最小的 ROI,比如 ViLBERT 要求在 10~36 個,VLBERT 要求 100 個。但是當設定最小提取的 ROI 后,又提取了太多了重復的 ROI,可以看圖 1(e)。
2)電商 ROI 不夠 fine-grained
電商圖像單一,提取的 RoIs 主要是 object-level 的產品 (例如,整體連衣裙,T-shirt 等) 。相對文本來說,不夠細粒度 fine-grain,比如文本里面可以描述主體非常細節屬性 (如,圓領,九分褲,七分褲等等)。這就導致圖像 ROI 不足以和文本 token 匹配,大家可以對比一下電商領域的圖 1(c) 和圖 1(d)。再看下通用領域的圖 1(a) 和圖 1(b),你會發現通用領域簡單一些,只要能將圖像中的主體和文本 token alignment 到一起,基本不會太差。
3)電商圖像 ROI 噪音太大
如圖 1(f) 中提取的模特頭,頭發,手指,對于商品匹配來說用處不大。
這也就解釋了,電商領域也采用現有的 ROI 方式,并不能得到非常理想的結果。如果說,針對電商領域重新訓練一個電商領域的 ROI 提取模型,需要大量的數據標注工作。那么有沒有簡單易行的方法做圖文匹配擬合。
FashionBERT 圖文匹配模型
本文我們提出了 FashionBERT 圖文匹配模型,核心問題是如何解決電商領域圖像特征的提取或者表達。Google 在 2019 年年中發表了一篇文章圖像自監督學習模型 selfie,主要思路是將圖像分割成子圖,然后預測子圖位置信息。從而使模型達到理解圖像特征的目的,這個工作對我們啟發很大。我們直接將圖像 split 相同大小的 Patch,然后將 Patch 作為圖像的 token,和文本進行擬合,如圖二所示。使用 Patch 的好處:
圖像 Patch 包含了所有圖像的細節信息。
圖像 Patch 不會出現重復的 ROI 或者太多無用的 ROI。
圖像 Patch 是天然包含順序的,所以解決 BERT 的 sequence 問題。
FashionBERT 整體結構如圖 2,主要包括 Text Embedding, Patch Embedding, Cross-modality FashionBERT,以及 Pretrain Tasks。
Text Embedding
和原始 BERT 一樣,先將句子分成 Token,然后我們采用 Whole Word Masking 技術將整個 Token 進行 masking。Masking 的策略和原始的 BERT 保持一致。
Patch Embedding
和 Text Embedding 類似,這里我們將圖片平均分成 8*8 個 patch。每個 Patch 經過 ResNet 提取 patch 的圖像特征,我們提取 2048 維圖像特征。Patch mask 策略,我們隨機 masked 10% 的 patch,masked 的 patch 用 0 代替。同時在 Segment 字段我們分別用 "T" 和 "I" 區分文 本token 輸入和圖像 patch 輸入。
Cross-modality FashionBERT
采用預訓練的 BERT 為網絡,這樣語言模型天然包含在 FashionBERT 中。模型可以更加關注圖文匹配融合。
FashionBERT 模型在 pretrain 階段,總共包含了三個任務:
1 Masked Language Modeling (MLM)
預測 Masked Text Token,這個任務訓練和參數我們保持和原始的 BERT 一致。
2 Masked Patch Modeling (MPM)
預測 Masked Patch,這個任務和 MLM 類似。但是由于圖像中沒有 id 化的 token。這里我們用 patch 作為目標,希望 BERT 可以重構 patch 信息,這里我們選用了 KLD 作為 loss 函數。
3 Text and Image Alignment
和 Next Sentence Prediction 任務類似,預測圖文是否匹配。正樣本是產品標題和圖片,負樣本我們隨機采樣同類目下其他產品的圖片作為負樣本。
這是一個多任務學習問題,如何平衡這些任務的學習權重呢?另外,還有一個問題,目前很多實驗指出 BERT 中 NSP 的效果并不一定非常有效,對最終的結果的影響不是特別明朗。但是對于圖文匹配來說,Text and Image Alignment 這個 loss 是至關重要的。那么如何平衡這幾個任務的學習呢?這里我們提出 adaptive loss 算法,我們將學習任務的權重看做是一個新的優化問題,如圖 3 所示。FashionBERT 的 loss 是整體 loss 的加和,由于只有三個任務,其實我們可以直接得到任務權重 W 的解析解(具體的求解過程可以參考我們論文,這里不再贅述)。
整個 w 的學習過程可以看做是一個學生想學習三門功課,w 的作用是控制學習的關注度,一方面控制別偏科,一方面總成績要達到最高。具體 adaptive loss 算法,可以參看論文。從實際的效果來看 w,隨著訓練的迭代關注不同的任務,達到對任務做平衡的目的。
業務應用
目前 FashionBERT 已經開始在 Alibaba 搜索多模態向量檢索上應用,對于搜索多模態向量檢索來說,匹配任務可以看成是一個文文圖匹配任務,即 User Query (Text)-Product Title (Text) - Product Image (Image) 三元匹配關系。FashionBERT 從上面的模型可以看到是一個基礎的圖文匹配模型,因此我們做了 Continue Pretrain 工作,同時加入 Query,Title,Image Segment 區分,如圖四所示。和 FashionBERT 最大的區別在于我們引入三個 segment 類型,“Q”,“T”,“I” 分別代表 Query,Title,Image。
機器人招商 Disinfection Robot 機器人公司 機器人應用 智能醫療 物聯網 機器人排名 機器人企業 機器人政策 教育機器人 迎賓機器人 機器人開發 獨角獸 消毒機器人品牌 消毒機器人 合理用藥 地圖 |