多模態大模型Ovis核心技術點、訓練方法、數據細節 原創
文章提出:傳統的 MLLMs 中,文本嵌入是從 LLM 的嵌入查找表中索引得到的,而視覺嵌入是由視覺編碼器(如:ViT)直接生成的連續向量。這種差異導致在視覺和文本信息融合時存在挑戰。
與傳統的MLLM不同,Ovis 通過在視覺編碼器的過程中引入一個額外的視覺嵌入查找表來解決這個問題。這種方法使得視覺嵌入的生成過程與文本嵌入類似。
效果
核心創新
從下面模型結構代碼可以看到,Ovis和傳統的LLava架構其實差不多,最大的區別就是LLava使用MLP,Ovis使用“視覺詞匯”。
模型結構代碼
Ovis 的核心創新在于其視覺嵌入表的引入:
- 圖(a):基于連接器的MLLM:傳統多模態模型(如LLava)的典型架構,連接器通常是一個MLP,其作用是將視覺特征投影到與文本嵌入相同的維度空間中。
- 圖(b):Ovis的結構化嵌入對齊:視覺編碼器的輸出不再直接通過MLP投影,而是送入一個視覺嵌入表(Visual Embedding Table)。這個表是一個可學習的結構,類似于文本嵌入。表。
- 視覺編碼器:圖像首先被視覺編碼器(如 ViT)處理,分為多個patches,每個patch生成一個連續的特征向量。
- 視覺嵌入表:不同于傳統方法直接通過 MLP 投影,Ovis 在視覺編碼器后整合了一個可學習的視覺嵌入表。每個圖像patch的特征向量用于多次索引該表,生成最終的視覺嵌入。為了使視覺和文本嵌入具有兼容的形狀,視覺嵌入表的維度設置為與文本嵌入表相同。
視覺嵌入表實現過程
- 嵌入對齊:視覺嵌入表的引入使得視覺嵌入的生成方式與文本嵌入類似。文本嵌入通常通過查找表為每個token分配一個嵌入向量,而 Ovis 通過視覺嵌入表為視覺patch生成結構化的嵌入,實現了兩者的對齊。
訓練方法
訓練分為三個階段:
階段 1:初始化訓練
在這個階段,凍結 LLM 和視覺編碼器的大部分參數,僅隨機初始化視覺編碼器的最后一塊參數。使用視覺描述數據集(如 COYO)來訓練這些新初始化的參數,以及 Ovis 的投影矩陣 和視覺嵌入表 。
階段 2:擴展訓練
在這個階段,解凍 Ovis 的投影矩陣 和視覺嵌入表 ,并繼續訓練視覺編碼器的所有參數。使用視覺描述數據集(如 ShareGPT4V-Pretrain)進行訓練。這個階段的目標是進一步優化視覺嵌入的生成。
階段 3:多模態指令學習
在前兩個階段的基礎上,解凍 LLM 模塊,并在多模態指令數據集(如 LLaVA-Finetune)上訓練整個模型。這個階段的目的是賦予 Ovis 跟隨多模態指令的能力。
訓練超參數設置:
訓練數據集
參考文獻:Ovis: Structural Embedding Alignment for Multimodal Large Language Model,https://arxiv.org/abs/2405.20797
公眾號大模型自然語言處理 作者:余俊暉
原文鏈接:??https://mp.weixin.qq.com/s/IMhx1_b6mTnughMTzw5zrA???
