預訓練模型由來
預訓練模型是深度學習架構,已經過訓練以執行大量數據上的特定任務(例如,識別圖片中的分類問題)。這種訓練不容易執行,並且通常需要大量資源,超出許多可用於深度學習模型的人可用的資源,我就沒有大批次GPU。在談論預訓練模型時,通常指的是在Imagenet上訓練的CNN(用於視覺相關任務的架構)。ImageNet數據集包含超過1400萬個圖像,其中120萬個圖像分爲1000個類別(大約100萬個圖像含邊界框和註釋)。
預訓練模型定義
那麼什麼是預訓練模型?這是在訓練結束時結果比較好的一組權重值,研究人員分享出來供其他人使用。我們可以在github上找到許多具有權重的庫,但是獲取預訓練模型的最簡單方法可能是直接來自您選擇的深度學習庫。
現在,上面是預訓練模型的規範定義。您還可以找到預訓練的模型來執行其他任務,例如物體檢測或姿勢估計。
此外,最近研究人員已開始突破預訓練模型的界限。在自然語言處理(使用文本的模型)的上下文中,我們已經有一段時間使用嵌入層。Word嵌入是一組數字的表示,其中的想法是類似的單詞將以某種有用的方式表達。例如,我們可能希望'鷹派','鷹','藍傑伊'的表現形式有一些相似之處,並且在其他方面也有所不同。用矢量表示單詞的開創性論文是word2vec,這篇嵌入層的論文是我最喜歡的論文之一,最早源於80年代,Geoffrey Hinton 的論文。
儘管通過對大型數據集進行訓練獲得的單詞的表示非常有用(並且以與預訓練模型類似的方式共享),但是將單詞嵌入作爲預訓練模型會有點拉伸。然而,通過傑里米霍華德和塞巴斯蒂安魯德的工作,真正的預訓練模型已經到達NLP世界。它們往往非常強大,圍繞着首先訓練語言模型(在某種意義上理解某種語言中的文本而不僅僅是單詞之間的相似性)的概念,並將其作爲更高級任務的基礎。有一種非常好的方法可以在大量數據上訓練語言模型,而不需要對數據集進行人工註釋。這意味着我們可以在儘可能多的數據上訓練語言模型,比如整個維基百科!然後我們可以爲特定任務(例如,情感分析)構建分類器並對模型進行微調,其中獲取數據的成本更高。要了解有關這項非常有趣的工作的更多信息,請參閱論文雖然我建議先看看隨附的網站,瞭解全局。
預訓練模型最好結果
2018年NLP領域取得最重大突破!谷歌AI團隊新發布的BERT模型,在機器閱讀理解頂級水平測試SQuAD1.1中表現出驚人的成績:全部兩個衡量指標上全面超越人類,並且還在11種不同NLP測試中創出最佳成績。毋庸置疑,BERT模型開啓了NLP的新時代!而谷歌提出的BERT就是在OpenAI的GPT的基礎上對預訓練的目標進行了修改,並用更大的模型以及更多的數據去進行預訓練,從而得到了目前爲止最好的效果。
旁註:如何從頭開始訓練架構以獲得預訓練的重量?這根本不容易回答,而且相關信息相當稀少。從紙張到紙張需要大量的跳躍才能將訓練的所有方面(增強,訓練 - 測試分裂,重量衰減,時間表等)拼湊在一起。我試着破解其中一些我過去做過的實驗,你可以在這裏或這裏看看這些嘗試。更有趣的是DAWNBench比賽網站。在這裏,各個團隊已經嘗試將他們的神經網絡訓練到某種程度的準確性,同時提高資源使用效率和優化速度。這通常不是架構最初如何訓練,而是一個非常有用的信息源(因爲代碼也可用)。
預訓練模型
官方版本綜合版本
pytorch
Network | Top-1 error | Top-5 error |
---|---|---|
AlexNet | 43.45 | 20.91 |
VGG-11 | 30.98 | 11.37 |
VGG-13 | 30.07 | 10.75 |
VGG-16 | 28.41 | 9.62 |
VGG-19 | 27.62 | 9.12 |
VGG-11 with batch normalization | 29.62 | 10.19 |
VGG-13 with batch normalization | 28.45 | 9.63 |
VGG-16 with batch normalization | 26.63 | 8.50 |
VGG-19 with batch normalization | 25.76 | 8.15 |
ResNet-18 | 30.24 | 10.92 |
ResNet-34 | 26.70 | 8.58 |
ResNet-50 | 23.85 | 7.13 |
ResNet-101 | 22.63 | 6.44 |
ResNet-152 | 21.69 | 5.94 |
SqueezeNet 1.0 | 41.90 | 19.58 |
SqueezeNet 1.1 | 41.81 | 19.38 |
Densenet-121 | 25.35 | 7.83 |
Densenet-169 | 24.00 | 7.00 |
Densenet-201 | 22.80 | 6.43 |
Densenet-161 | 22.35 | 6.20 |
Inception v3 | 22.55 | 6.44 |
Model | Size | Top-1 Accuracy | Top-5 Accuracy | Parameters | Depth |
---|---|---|---|---|---|
Xception | 88 MB | 0.790 | 0.945 | 22,910,480 | 126 |
VGG16 | 528 MB | 0.713 | 0.901 | 138,357,544 | 23 |
VGG19 | 549 MB | 0.713 | 0.900 | 143,667,240 | 26 |
ResNet50 | 99 MB | 0.749 | 0.921 | 25,636,712 | 168 |
InceptionV3 | 92 MB | 0.779 | 0.937 | 23,851,784 | 159 |
InceptionResNetV2 | 215 MB | 0.803 | 0.953 | 55,873,736 | 572 |
MobileNet | 16 MB | 0.704 | 0.895 | 4,253,864 | 88 |
MobileNetV2 | 14 MB | 0.713 | 0.901 | 3,538,984 | 88 |
DenseNet121 | 33 MB | 0.750 | 0.923 | 8,062,504 | 121 |
DenseNet169 | 57 MB | 0.762 | 0.932 | 14,307,880 | 169 |
DenseNet201 | 80 MB | 0.773 | 0.936 | 20,242,984 | 201 |
NASNetMobile | 23 MB | 0.744 | 0.919 | 5,326,716 | - |
NASNetLarge | 343 MB | 0.825 | 0.960 | 88,949,818 | - |
CV
名稱 | 環境 | 精度 | 錯誤率 |
---|---|---|---|
物體檢測 | c cuda | ||
姿勢估計 | keras | ||
斯坦福CIFAR10 | pytorch tensorflow | 95.29% | |
斯坦福ImageNet | pytorch tensorflow MXNet caffe | 93.94% |