在多模態學習中,不同模態(文本、圖像、語音、視頻、傳感器數據等)所攜帶的信息豐富且互補。但不同模態的數據結構、表示空間、時空分布截然不同,因此,如何對各模態進行高效、有效的特征提取,是整個多模態學習系統的第一道核心關卡。
本篇我們將系統講解如何從三類常見模態中提取有效特征,包括:
-
文本模態
-
視覺模態(圖像/視頻)
-
語音模態
并介紹各自的經典技術路線、深度模型演進和融合準備策略。
一、什么是“特征”?
特征(Feature)= 信息的壓縮表示。
它是機器學習模型理解世界的“視角”和“入口”。
-
理想特征的標準:
-
表示力強(discriminative)
-
維度低(compact)
-
不敏感于干擾因素(robust)
-
可對齊(alignable across modalities)
-
特征提取的目標是從高維、冗余、嘈雜的模態數據中提煉出對任務有效的低維向量表示。
二、文本模態特征提取:從One-hot到Transformer
文本是結構性最弱但語義最強的模態,其特征提取經歷了從符號表示 → 分布式表示 → 上下文動態表示的三代躍遷。
? 1. 傳統方法
方法 | 思路 | 優缺點 |
---|---|---|
One-hot | 每個詞獨立,離散向量 | 簡單但稀疏、無語義 |
TF-IDF | 統計詞頻和逆文檔頻率 | 體現權重但無上下文 |
? 2. 靜態詞向量(Word Embedding)
-
Word2Vec (Skip-gram / CBOW):通過上下文預測當前詞或反之,學習固定詞向量。
-
GloVe:基于全局共現矩陣統計得到的向量。
缺點:同一個詞在不同語境下含義相同(如“bank”)。
? 3. 上下文感知表示(基于深度模型)
-
ELMo:使用雙向LSTM學習上下文相關的表示。
-
BERT:Transformer-based,通過雙向掩碼語言建模,獲得動態語義向量。
-
RoBERTa、ERNIE、T5、ChatGLM 等為進一步演化。
python
復制編輯
from transformers import BertTokenizer, BertModel tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') inputs = tokenizer("deep learning is powerful", return_tensors="pt") outputs = BertModel.from_pretrained('bert-base-uncased')(**inputs) print(outputs.last_hidden_state.shape) # [1, 5, 768]
? 工程實踐建議
-
簡單任務:TF-IDF + 線性模型
-
中型任務:Word2Vec / FastText + LSTM
-
高精度任務:BERT系列模型 + 微調
三、視覺模態特征提取:從邊緣到層次語義
圖像或視頻是二維空間的連續密集信號,早期使用人工設計特征,現已全面進入深度卷積時代。
? 1. 傳統視覺特征
-
SIFT / SURF / HOG / LBP:提取邊緣、紋理、局部不變特征
-
適用于早期圖像分類、人臉識別、圖像匹配
? 2. 卷積神經網絡(CNN)
通過多層卷積 → 非線性 → 池化 → 高層語義表達,實現端到端的圖像特征提取。
模型 | 特點 |
---|---|
VGG | 均勻卷積 + 池化結構 |
ResNet | 引入殘差連接,解決梯度消失 |
EfficientNet | 跨層壓縮、精度與速度均衡 |
Swin Transformer | 全視覺Transformer結構 |
? 3. 預訓練視覺模型作為特征提取器
import torchvision.models as models
model = models.resnet50(pretrained=True)
features = model.avgpool ? # 提取全圖特征
實踐中,ResNet-50 常用于圖像編碼;如果是多模態融合任務,ResNet 的輸出往往會送入 Transformer 聯合建模。
四、語音模態特征提取:時間序列信號的結構化
語音信號具有時序性 + 頻域信息,是典型的一維時間序列 + 高頻噪聲背景信號。
? 1. 常用手工特征
-
MFCC(Mel-Frequency Cepstral Coefficient)
將語音轉為梅爾頻率尺度上壓縮的倒譜特征,適合情感識別、語音識別任務。 -
Chroma、Spectral Contrast、Zero Crossing Rate
輔助提取頻域特征
? 2. 深度神經網絡提取
-
CNN/LSTM + Spectrogram:把音頻轉為時頻圖后作為圖像輸入
-
Wav2Vec / Whisper / HuBERT:自監督語音表示模型,效果優于傳統手工特征
from transformers import Wav2Vec2Processor, Wav2Vec2Model
input_values = processor(raw_audio, return_tensors="pt").input_values
outputs = model(input_values).last_hidden_state ?# 得到語音向量表
五、特征對齊與融合前的準備
在多模態系統中,提取完各模態特征后,常需要執行以下步驟以確保信息可融合:
🧩 1. 維度對齊
-
通過線性層/MLP 將不同模態特征統一到相同維度空間
🧩 2. 時間/空間對齊
-
對于語音/視頻/傳感器數據,需執行時間窗對齊(如frame-level或clip-level切割)
-
對圖文數據可采用對齊網絡(如ViLBERT)處理語義對齊
🧩 3. 特征標準化
-
BatchNorm、LayerNorm 或 Z-score 歸一化,避免模態間尺度差異影響融合
六、結語:多模態特征提取的核心哲學
“提取有信息的壓縮向量,讓模態表達對齊又獨立。”
多模態特征提取不是孤立任務,它既是理解模態內部的過程,又是融合跨模態信息的基礎。掌握不同模態的特征提取手段,不僅能提升模型效果,也能增強系統的可解釋性和魯棒性。
📚 延伸閱讀推薦:
-
《Deep Learning for Multimodal Learning》—— CMU 課程
-
HuggingFace Transformers 文檔
-
OpenAI CLIP 源碼和 ViLT、BLIP 模型架構解讀