勢解析:為何超越CNN與RNN)
1. Transformer 為什么能吊打 CNN 和 RNN2017年谷歌那篇《Attention Is All You Need》論文扔出Transformer架構時可能連作者自己都沒想到它會成為改變AI格局的核彈。現(xiàn)在回頭看Transformer不僅干翻了CNN在圖像領域的統(tǒng)治地位還把RNN在序列建模領域的王座給掀了。這玩意兒到底強在哪咱們今天就用工程師的視角掰開揉碎看個明白。先看幾個硬核數(shù)據在機器翻譯任務上Transformer比傳統(tǒng)RNN快4倍以上在ImageNet分類任務中Vision TransformerViT用1/4的訓練計算量就達到了CNN的精度最新的Swin Transformer在COCO目標檢測上刷出58.7 AP把CNN的紀錄提高了3個點。這些數(shù)字背后是架構設計上的三個降維打擊2. 核心架構對比從局部感知到全局關聯(lián)2.1 CNN的卷積困境CNN的卷積核就像個近視眼每次只能看到像素點周圍的小窗口典型3x3或5x5。雖然通過堆疊多層能擴大感受野但有兩個致命傷遠距離特征關聯(lián)需要深度堆疊像ResNet要堆到152層固定尺寸的卷積核對不規(guī)則模式如長尾分布捕捉乏力舉個例子當識別狗的時候CNN需要逐層組合邊緣-紋理-局部器官-整體而Transformer可以直接建立尾巴和頭部的遠程關聯(lián)。2.2 RNN的序列詛咒RNN處理序列是一個個啃的蝸牛必須嚴格按時間步串行計算。更要命的是當序列長度超過50步時梯度消失/爆炸問題就會讓模型失憶。LSTM/GRU雖然緩解了這個問題但在處理中國足球隊從來就沒讓我失望過這種長距離語義依賴時沒和失望的關聯(lián)表現(xiàn)依然捉襟見肘。2.3 Transformer的注意力革命Transformer的self-attention機制就像給模型裝了雷達系統(tǒng)每處理一個token時計算該token與序列所有其他token的關聯(lián)度attention score根據關聯(lián)度動態(tài)分配注意力權重加權求和生成新表征這個過程用矩陣運算可表示為Attention(Q,K,V) softmax(QK^T/√d_k)V其中Q(Query)、K(Key)、V(Value)都是輸入序列的線性變換d_k是縮放因子。這種設計帶來三個碾壓優(yōu)勢任意兩個token的直接交互無論距離多遠O(1)的梯度傳播路徑徹底解決長程依賴并行計算所有位置的attention3. 工程實現(xiàn)上的關鍵突破3.1 多頭注意力機制就像人類會從不同角度觀察事物Transformer用8個獨立的attention head并行工作。實驗表明某些head專注局部模式類似CNN另一些head捕捉長程關系還有head專門盯住特殊token如句號這種分而治之的策略讓模型容量大幅提升在WMT2014英德翻譯任務上8頭比單頭BLEU值高出2.3。3.2 位置編碼的魔法由于attention本身沒有位置概念Transformer發(fā)明了正弦位置編碼PE(pos,2i) sin(pos/10000^(2i/d_model)) PE(pos,2i1) cos(pos/10000^(2i/d_model))這種編碼能表示絕對和相對位置可擴展到訓練未見過的序列長度與詞向量相加后不影響原始語義對比RNN的隱狀態(tài)傳遞和CNN的局部卷積這種顯式位置建模更靈活高效。3.3 殘差連接與層歸一化每個子層attention/FFN都采用LayerNorm(x Sublayer(x))這種設計緩解了梯度消失Transformer可輕松堆到12-24層加速訓練收斂比普通深度網絡快3倍以上穩(wěn)定了數(shù)值計算4. 實戰(zhàn)性能對比4.1 計算效率在序列長度N512時RNN的時間復雜度O(N)≈512CNN通過空洞卷積優(yōu)化后約O(NlogN)≈4608Transformer的O(N2)≈262144看起來Transformer吃虧實際上并行計算讓實際耗時遠低于RNN更短的訓練步數(shù)典型情況Transformer 100k步 vs RNN 500k步現(xiàn)代GPU對矩陣乘法有專門優(yōu)化實測在V100顯卡上Transformer的吞吐量是LSTM的8倍。4.2 內存占用對比模型類型參數(shù)量內存占用LSTM128M1.9GBCNN95M1.4GBTransformer110M1.7GB雖然Transformer參數(shù)不少但通過梯度檢查點技術訓練時可節(jié)省40%顯存。4.3 任務適應性任務類型CNNRNNTransformer圖像分類優(yōu)差優(yōu)機器翻譯中良優(yōu)語音識別良優(yōu)優(yōu)時序預測差良優(yōu)Transformer的通用性來自其內容尋址的本質不像CNN/RNN受限于預設的歸納偏置。5. 為什么你的Transformer訓練不出效果5.1 學習率預熱Transformer對學習率極其敏感必須用warmup策略lr d_model^-0.5 * min(step_num^-0.5, step_num*warmup_steps^-1.5)典型設置前4000步線性增長峰值學習率3e-4之后按步數(shù)平方根衰減5.2 注意力掩碼技巧處理變長序列時三種mask必須正確設置填充mask忽略pad位置因果mask解碼器防信息泄漏內存mask跨批次處理一個典型實現(xiàn)def create_mask(src, tgt): src_mask (src ! pad_id).unsqueeze(1) tgt_mask (tgt ! pad_id).unsqueeze(1) subsequent_mask(tgt.size(-1)) return src_mask, tgt_mask5.3 梯度裁剪閾值Transformer的梯度范數(shù)波動劇烈建議初始閾值設為1.0根據訓練曲線動態(tài)調整配合Adam的beta20.98效果更佳6. 前沿變體與選擇建議6.1 視覺TransformerViT將圖像切為16x16 patches作為序列Swin Transformer引入局部窗口和層級下采樣PVT金字塔結構保持多尺度特征6.2 高效TransformerReformer局部敏感哈希降低attention復雜度Linformer低秩投影壓縮KV矩陣Performer隨機投影近似attention6.3 選型決策樹是否需要處理圖像 ├─是 → 選擇Swin/PVT └─否 → 序列長度1024 ├─是 → 選擇Longformer/Performer └─否 → 標準Transformer7. 從理論到實踐的關鍵洞見當數(shù)據量1M時CNN/RNN可能更優(yōu)歸納偏置的威力超過100層的Transformer需要改用Post-LN結構混合架構如ConvAttention在小數(shù)據集表現(xiàn)驚艷8頭注意力不是金科玉律頭數(shù)應與d_model成正比d_model/h64最佳我在復現(xiàn)ALBERT時發(fā)現(xiàn)共享注意力參數(shù)能使模型在1/10參數(shù)量下保持90%性能。這暗示了Transformer的參數(shù)效率仍有巨大優(yōu)化空間。