一站式解讀多模態——Transformer、Embedding、主流模型與通用任務實戰(上)

本文章由飛槳星河社區開發者高宏偉貢獻。高宏偉,飛槳開發者技術專家(PPDE),飛槳領航團團長,長期在自媒體領域分享 AI 技術知識,博客粉絲 9w+,飛槳星河社區 ID 爲 GoAI 。分享分爲上下兩期,本期分享從多模態概念與意義、任務類型及數據集、發展關係及時間線和基礎知識等方面介紹多模態。

多模態概念與意義 多模態學習(Multimodal learning)是機器學習的一個重要分支。模態(Modality),就是數據的一種形式,例如圖像、文本、語音等。通常意義的多模態學習,就是利用模型去同時處理多個模態數據,例如同時處理圖文,圖生文本、文本生圖等。通過多模態大模型,可以更好地理解和處理複雜的多模態數據,提高人工智能的應用性能。

多模態任務類型及數據集 多模態大模型在許多領域都有廣泛的應用,應用方向不限於自然語言處理、計算機視覺、音頻處理等。具體任務又可以分爲文本和圖像的語義理解、圖像描述、視覺定位、對話問答、視覺問答、視頻的分類和識別、音頻的情感分析和語音識別等。

模態編碼器(Modality Encoder, ME): 圖像編碼器(Image Encoder)、視頻編碼器(Video Encoder)、音頻編碼器(Audio Encoder)

輸入投影器(Input Projector, IP): 線性投影器(Linear Projector)、多層感知器(Multi-Layer Perceptron, MLP)、交叉注意力(Cross-Attention)、Q-Former 等

大模型基座(LLM Backbone): ChatGLM、LLaMA、Qwen、Vicuna 等

輸出投影器(Output Projector, OP): Tiny Transformer、Multi-Layer Perceptron (MLP)等

模態生成器(Modality Generator, MG): Stable Diffusion、Zeroscope、AudioLDM 按上述五部分結構對經典多模態模型進行總結,結果如下:

以 VIT 爲基礎視覺預訓練可以通過 Transformers 模型對視覺進行有效表徵,逐漸成爲視覺信息編碼的主流手段。

多模態基礎知識--Transformer 目前,主流的多模態大模型大多以 Transformer 爲基礎。Transformer 是一種由谷歌在 2017 年提出的深度學習模型,主要用於自然語言處理(NLP)任務,特別是序列到序列(Sequence-to-Sequence)的學習問題,如文本生成。Transformer 徹底改變了之前基於循環神經網絡(RNNs)和長短期記憶網絡(LSTMs)的序列建模範式,並且在性能提升上取得了顯著成效。

Transformer 的核心構成包括:

自注意力機制(Self-Attention Mechanism): Transformer 模型摒棄了傳統 RNN 結構的時間依賴性,通過自注意力機制實現對輸入序列中任意兩個位置之間的直接關聯建模。每個詞的位置可以同時關注整個句子中的其他所有詞,計算它們之間的相關性得分,然後根據這些得分加權求和得到該位置的上下文向量表示。這種全局信息的捕獲能力極大地提高了模型的表達力。

多頭注意力(Multi-Head Attention): Transformer 進一步將自注意力機制分解爲多個並行的“頭部”,每個頭部負責從不同角度對輸入序列進行關注,從而增強了模型捕捉多種複雜依賴關係的能力。最後,各個頭部的結果會拼接並經過線性變換後得到最終的注意力輸出。

位置編碼(Positional Encoding): 由於 Transformer 不再使用 RNN 的順序處理方式,爲了引入序列中詞的位置信息,它採用了一種特殊的位置編碼方法。這種方法對序列中的每個位置賦予一個特定的向量,該向量的值與位置有關,確保模型在處理過程中能夠區分不同的詞語順序。

編碼器-解碼器架構(Encoder-Decoder Architecture): Transformer 採用了標準的編碼器-解碼器結構,其中,編碼器負責理解輸入序列,將其轉換成高級語義表示;解碼器則依據編碼器的輸出,結合自身產生的隱狀態逐步生成目標序列。在解碼過程中,解碼器還應用了自注意力機制以及一種稱爲“掩碼”(Masking)的技術來防止提前看到未來要預測的部分。

殘差連接(Residual Connections): Transformer 沿用了 ResNet 中的殘差連接設計,以解決隨着網絡層數加深帶來的梯度消失或爆炸問題,有助於訓練更深更復雜的模型。

層歸一化(Layer Normalization): Transformer 使用了層歸一化而非批量歸一化,這使得模型在小批量訓練時也能獲得良好的表現,並且有利於模型收斂。

多模態任務對齊 本文以文本和圖像的多模態數據對齊爲例:

文本轉 Embedding Tokenization:Tokenization 也稱作分詞,是把一段文本切分成模型能夠處理的 token 或子詞的過程,通常會使用 BPE 或 WordPiece 的分詞算法,有助於控制詞典大小的同時保留了表示文本序列的能力。

Embedding:Embedding 將 token 或子詞用映射到多維空間中的向量表示,用以捕捉語義含義。這些連續的向量使模型能夠在神經網絡中處理離散的 token,從而使其學習單詞之間的複雜關係。經典的文本轉 Embedding 可採用 Tramsformer(bert) 模型具體步驟:

輸入文本:"thank you very much"

Tokenization 後: ["thank", "you", "very","much"]

Embedding:假設每個 token 被映射到一個 2048 維的向量,“thank you very much”被轉換成 4*2048 的 embeddings

圖像轉換 Embedding

圖像轉 Emdedding 一般採用 Vit Transformer 模型。首先,把圖像分成固定大小的 patch,類比於 LLM 中的 Tokenization 操作;然後通過線性變換得到 patch embedding,類比 LLM 中的 Embedding 操作。由於 Transformer 的輸入就是 token embeddings 序列,所以將圖像的 patch embedding 送入 Transformer 後就能夠直接進行特徵提取,得到圖像全局特徵的 embeddings。具體步驟如下:

圖像預處理:

輸入圖像大小:224x224 像素,3 個顏色通道(RGB)+ 預處理:歸一化,但不改變圖像大小圖像切分:

假設每個 patch 大小爲 14x14 像素,圖像被切分成(224/14) × (224/14) =256 個 patches 線性嵌入:

將每個 14x14x3 的 patch 展平成一個一維向量,向量大小爲 14×14×3=588

通過一個線性層將每個 patch 的向量映射到其他維的空間(假設是 D 維),例如 D=768 , 每個 patch 被表示爲一個 D 維的向量。最後,由於 Transformer 內部不改變這些向量的大小,就可以用 256*768 的 embeddings 表示一張圖像。

模態對齊 上述介紹文本和圖像都被轉換成向量的形式,但這並不意味着它們可以直接結合使用。問題在於,這兩種模態的向量是在不同的向量空間中學習並形成的,它們各自對事物的理解存在差異。例如,圖像中“小狗”的 Embedding 和文本中“小狗”的 Embedding,在兩種模態中的表示可能截然不同。這就引出了一個重要的概念——模態對齊。

下篇內容將圍繞多模態模型對齊的方法進行多模態模型總結,並引入多模態框架 PaddleMIX 進行多任務實戰,幫助大家快速瞭解多模態技術。

多模態模型訓練流程

多模態大型語言模型的訓練流程主要分爲兩個階段:多模態預訓練(MM PT)和多模態指令調優(MM IT)。

以下爲兩階段介紹:

(1)多模態預訓練:目標:預訓練階段的目標是通過訓練輸入和輸出投影器(IP 和 OP)來實現不同模態之間的對齊,以便 LLM 主幹能夠有效地處理多模態輸入。數據集:通常使用 X-Text 數據集,包含圖像-文本(Image-Text)、視頻-文本(Video-Text)和音頻-文本(Audio-Text)對,以及交錯的圖像-文本語料庫等。優化:訓練過程中,主要優化的是輸入和輸出投影器的參數,以最小化條件文本生成損失。通常涉及到將模態編碼器的輸出特徵與文本特徵對齊,生成的對齊特徵作爲 LLM 主幹的輸入。

(2)多模態指令調優:目標:指令調優階段的目標是通過指令格式化的數據集對預訓練的 MM-LLM 進行微調,以提高模型遵循新指令的能力,從而增強其在未見任務上的性能。方法:指令調優的訓練方法可以分爲監督式微調(SFT)和基於人類反饋的強化學習(RLHF)。SFT 將 PT 階段的數據轉換爲指令感知格式,而 RLHF 則依賴於對模型響應的人類反饋進行進一步微調。數據集:使用的數據集通常包括視覺問答(VQA)、指令遵循任務等,數據集結構可以是單輪問答或多輪對話。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章