AI talk 最常被提到的口號:“Data is the King”. 確實 AI 發展最快的幾個領域如 recommendation system (cloud), computer vision (cloud/edge), and NLP (cloud/edge) 都有巨量 dataset: labeled or unlabeled, public or private. 相形之下,voice, industrial/scientific/medical (ISM), etc. 進展比較慢。除了 data 相對比較少,還有其他的原因。 以 NLP 為例,NLP 中有各種各樣的任務,比如分類 (Classification),翻譯 (translation),問答(QA),實體命名識別(NER)等。對於這些不同的任務,最早的做法是根據每類任務定制不同的模型,輸入預訓練好的embedding,然後利用特定任務的數據集對模型進行訓練,如下圖。這裡存在的問題就是,不是每個特定任務都有大量的標籤數據可供訓練,對於那些數據集非常小的任務,恐怕就難以得到一個理想的模型。 我們看一下圖像領域是如何解決這個問題的。圖像分類是計算機視覺中最基本的任務,當我要解決一個小數據集的圖像分類任務時,該怎麼做?CV領域已經有了一套成熟的解決方案。我會用一個通用的網絡模型,比如Vgg,ResNet或者GoogleNet,在ImageNet上做預訓練(pre-training)。ImageNet有1400萬張有標注的圖片,包含1000個類別,這樣的數據規模足以訓練出一個規模龐大的模型。在訓練過程中,模型會不斷的學習如何提取特徵,底層的CNN網絡結構會提取邊緣,角,點等通用特徵,模型越往上走,提取的特徵也越抽象,與特定的任務更加相關。當完成預訓練之後,根據我自己的分類任務,調整最上層的網絡結構,然後在小數據集里對模型進行訓練。在訓練時,可以固定住底層的模型參數只訓練頂層的參數,也可以對整個模型進行訓練,這個過程叫做微調(fine-tuning),最終得到一個可用的模型。 總結一下,整個過程包括兩步,拿一個通用模型在ImageNet上做預訓練(pre-training),然後針對特定任務進行微調(fine-tuning),完美解決了特定任務數據不足的問題。還有一個好處是,對於各種各樣的任務都不再需要從頭開始訓練網絡,可以直接拿預訓練好的結果進行微調,既減少了訓練計算量的負擔,也減少了人工標注數據的負擔。 A good reference of NLP. [@zhangTransformerBERT2019] Pre-trained network 例如 ResNet 或是 MobileNet 可以做為特徵提取的骨幹,用於各類的圖像任務。像是下圖的 object …