如何在卷積神經網路上運行 BERT?
你可以直接用SparK —— 位元組跳動技術團隊提出的稀疏層次化掩碼建模(Designing BERT for Convolutional Networks: Sparse and Hierarchical Masked Modeling),近期已被人工智慧頂會收錄為Spotlight 焦點論文:
論文連結:
# #https://www.php.cn/link/e38e37a99f7de1f45d169efcdb288dd1
##開源程式碼:
#https://www.php.cn/link/9dfcf16f0adbc5e2a55ef02db36bac7f
#這也是BERT 在卷積神經網路(CNN) 上的第一次成功 。先來感受一下 SparK 在預訓練中的表現。
輸入一張殘缺不全的圖片:
還原出一隻小狗:
。一張殘缺圖片:
#原來是貝果三明治:
#其他場景也可實現圖片復原:
BERT 與Transformer 的天作之合
#「任何偉大的行動和思想,都有一個微不足道的開始。」
##在BERT 預訓練演算法的背後,是簡潔而深刻的設計。 BERT 使用「完形填空」:將一句話中的若干字詞隨機刪除,並讓模型學會恢復。
BERT 非常依賴NLP 領域的核心模型— Transformer。
Transformer 由於生來就適合處理可變長度的序列資料(例如一個英文句子),所以能輕鬆應付BERT 完形填空的「隨機刪除」。
視覺領域的 CNN 也想享受 BERT:兩個挑戰何在?
#回顧電腦視覺發展史,卷積神經網路模型#凝練了平移等變性、多尺度結構等等眾多經典模式精華,可謂CV 界的中流砥柱。但與 Transformer 大相徑庭的是,CNN 天生無法適應經過完形填空「挖空」的、充滿「隨機孔洞」的數據,因此乍一看無法享受到 BERT 預訓練的紅利。
上圖a.展示的是MAE (Masked Autoencoders are Scalable Visual Learners) 這項工作,由於使用的是Transformer 模型而非CNN 模型,其可以靈活應對經過帶有空洞的輸入,乃與BERT “天作之合”。
而右圖b. 則展示了一種粗暴融合BERT 和CNN 模型的方式——即把全部空洞區域“塗黑”,並將這張「黑馬賽克」圖輸入到CNN 中,結果可想而知,會帶來嚴重的像素強度分佈偏移問題,並導致很差的性能(後文有驗證)。這就是阻礙 BERT 在 CNN 上成功應用的挑戰一。
此外,作者團隊也指出,源自NLP 領域的BERT 演算法,天然不具備「多尺度」的特點,而多尺度的金字塔結構在電腦視覺的悠久歷史中可謂「黃金標準」。單尺度的 BERT,和天然多尺度的 CNN 之間的衝突,則是#挑戰二##。
解決方案SparK:稀疏且層次化的遮罩建模
##作者團隊提出了SparK (Sparse and hierarchical masKed modeling) 來解決前文兩個挑戰。
其一,受三維點雲資料處理的啟發,作者團隊提出將經過遮罩操作(挖空操作) 後的零碎圖片視為稀疏點雲,並使用子流形稀疏卷積(Submanifold Sparse Convolution) 來進行編碼。這就讓卷積網路能夠自如處理隨機刪除後的影像。
其二,受UNet 優雅設計的啟發,作者團隊自然地設計了一種帶有橫向連接的編碼器-解碼器模型,讓多尺度特徵在模型的多層次之間流動,讓BERT 徹底擁抱電腦視覺的多尺度黃金標準。
至此,為卷積網路 (CNN) 量身定制的稀疏的、多尺度的掩碼建模演算法 SparK 誕生了。
SparK 是#通用的:其可直接運用在任何卷積網絡上,而無需對它們的結構進行任何修改,或引入任何額外的組件——不論是我們耳熟能詳的經典ResNet,還是近期的先進模型ConvNeXt,均可直接從SparK 中受益。
從ResNet 到ConvNeXt:三大視覺任務效能提升
#作者團隊選擇了具代表性的兩個卷積模型家族ResNet 和ConvNeXt,並在影像分類,目標偵測、實例分割任務上進行了效能測試。
在經典ResNet-50 模型上,SparK 作為唯一的生成式預訓練,達到了State-of-the-art 水準:
#
在 ConvNeXt 模型上,#SparK 依舊領先##。在預訓練前,ConvNeXt 與Swin-Transformer 平分秋色;而經過預訓練後,ConvNeXt 在三個任務上均壓倒性超過了Swin-Transformer:
##當從小到大,在完整的模型家族上驗證SparK,便可觀察到:
無論模型的大與小、新與舊,均可從SparK 中受益,且隨著模型尺寸/訓練開銷的增長,漲幅甚至更高,體現出SparK 演算法的擴展(scaling) 能力:
最後,作者團隊也設計了一個驗證性的消融實驗,從中可見稀疏遮罩與層次化結構第3行與第4行) 都是非常關鍵的設計,一旦缺失就會造成嚴重的效能衰退:
以上是BERT在CNN上也能用?位元組跳動研究成果中選ICLR 2023 Spotlight的詳細內容。更多資訊請關注PHP中文網其他相關文章!