1 預(yù)訓(xùn)練模型由來(lái)
預(yù)訓(xùn)練模型是深度學(xué)習(xí)架構(gòu)佩抹,已經(jīng)過(guò)訓(xùn)練以執(zhí)行大量數(shù)據(jù)上的特定任務(wù)(例如叼风,識(shí)別圖片中的分類(lèi)問(wèn)題)。這種訓(xùn)練不容易執(zhí)行匹摇,并且通常需要大量資源咬扇,超出許多可用于深度學(xué)習(xí)模型的人可用的資源,我就沒(méi)有大批次GPU廊勃。在談?wù)擃A(yù)訓(xùn)練模型時(shí)懈贺,通常指的是在Imagenet上訓(xùn)練的CNN(用于視覺(jué)相關(guān)任務(wù)的架構(gòu))。ImageNet數(shù)據(jù)集包含超過(guò)1400萬(wàn)個(gè)圖像坡垫,其中120萬(wàn)個(gè)圖像分為1000個(gè)類(lèi)別(大約100萬(wàn)個(gè)圖像含邊界框和注釋?zhuān)?/p>
2 預(yù)訓(xùn)練模型定義
那么什么是預(yù)訓(xùn)練模型梭灿?這是在訓(xùn)練結(jié)束時(shí)結(jié)果比較好的一組權(quán)重值,研究人員分享出來(lái)供其他人使用冰悠。我們可以在github上找到許多具有權(quán)重的庫(kù)堡妒,但是獲取預(yù)訓(xùn)練模型的最簡(jiǎn)單方法可能是直接來(lái)自您選擇的深度學(xué)習(xí)庫(kù)。
現(xiàn)在溉卓,上面是預(yù)訓(xùn)練模型的規(guī)范定義皮迟。您還可以找到預(yù)訓(xùn)練的模型來(lái)執(zhí)行其他任務(wù),例如物體檢測(cè)或姿勢(shì)估計(jì)桑寨。
此外伏尼,最近研究人員已開(kāi)始突破預(yù)訓(xùn)練模型的界限。在自然語(yǔ)言處理(使用文本的模型)的上下文中尉尾,我們已經(jīng)有一段時(shí)間使用嵌入層爆阶。Word嵌入是一組數(shù)字的表示,其中的想法是類(lèi)似的單詞將以某種有用的方式表達(dá)沙咏。例如辨图,我們可能希望'鷹派','鷹'肢藐,'藍(lán)杰伊'的表現(xiàn)形式有一些相似之處故河,并且在其他方??面也有所不同。用矢量表示單詞的開(kāi)創(chuàng)性論文是word2vec窖壕,這篇嵌入層的論文是我最喜歡的論文之一忧勿,最早源于80年代,Geoffrey Hinton 的論文瞻讽。
盡管通過(guò)對(duì)大型數(shù)據(jù)集進(jìn)行訓(xùn)練獲得的單詞的表示非常有用(并且以與預(yù)訓(xùn)練模型類(lèi)似的方式共享)鸳吸,但是將單詞嵌入作為預(yù)訓(xùn)練模型會(huì)有點(diǎn)拉伸。然而速勇,通過(guò)杰里米霍華德和塞巴斯蒂安魯?shù)碌墓ぷ?/a>恃锉,真正的預(yù)訓(xùn)練模型已經(jīng)到達(dá)NLP世界区匣。它們往往非常強(qiáng)大馁启,圍繞著首先訓(xùn)練語(yǔ)言模型(在某種意義上理解某種語(yǔ)言中的文本而不僅僅是單詞之間的相似性)的概念,并將其作為更高級(jí)任務(wù)的基礎(chǔ)哼勇。有一種非常好的方法可以在大量數(shù)據(jù)上訓(xùn)練語(yǔ)言模型,而不需要對(duì)數(shù)據(jù)集進(jìn)行人工注釋呕乎。這意味著我們可以在盡可能多的數(shù)據(jù)上訓(xùn)練語(yǔ)言模型积担,比如整個(gè)維基百科!然后我們可以為特定任務(wù)(例如猬仁,情感分析)構(gòu)建分類(lèi)器并對(duì)模型進(jìn)行微調(diào)帝璧,其中獲取數(shù)據(jù)的成本更高。要了解有關(guān)這項(xiàng)非常有趣的工作的更多信息湿刽,請(qǐng)參閱論文雖然我建議先看看隨附的網(wǎng)站的烁,了解全局。
3 預(yù)訓(xùn)練模型最好結(jié)果
2018年NLP領(lǐng)域取得最重大突破诈闺!谷歌AI團(tuán)隊(duì)新發(fā)布的BERT模型渴庆,在機(jī)器閱讀理解頂級(jí)水平測(cè)試SQuAD1.1中表現(xiàn)出驚人的成績(jī):全部?jī)蓚€(gè)衡量指標(biāo)上全面超越人類(lèi),并且還在11種不同NLP測(cè)試中創(chuàng)出最佳成績(jī)雅镊。毋庸置疑襟雷,BERT模型開(kāi)啟了NLP的新時(shí)代!而谷歌提出的BERT就是在OpenAI的GPT的基礎(chǔ)上對(duì)預(yù)訓(xùn)練的目標(biāo)進(jìn)行了修改仁烹,并用更大的模型以及更多的數(shù)據(jù)去進(jìn)行預(yù)訓(xùn)練嗤军,從而得到了目前為止最好的效果。
旁注:如何從頭開(kāi)始訓(xùn)練架構(gòu)以獲得預(yù)訓(xùn)練的重量晃危?這根本不容易回答,而且相關(guān)信息相當(dāng)稀少老客。從紙張到紙張需要大量的跳躍才能將訓(xùn)練的所有方面(增強(qiáng)僚饭,訓(xùn)練 - 測(cè)試分裂,重量衰減胧砰,時(shí)間表等)拼湊在一起鳍鸵。我試著破解其中一些我過(guò)去做過(guò)的實(shí)驗(yàn),你可以在這里或這里看看這些嘗試尉间。更有趣的是DAWNBench比賽網(wǎng)站偿乖。在這里,各個(gè)團(tuán)隊(duì)已經(jīng)嘗試將他們的神經(jīng)網(wǎng)絡(luò)訓(xùn)練到某種程度的準(zhǔn)確性哲嘲,同時(shí)提高資源使用效率和優(yōu)化速度贪薪。這通常不是架構(gòu)最初如何訓(xùn)練,而是一個(gè)非常有用的信息源(因?yàn)榇a也可用)眠副。
4 預(yù)訓(xùn)練模型
4.1 官方版本綜合版本
4.1.1 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 |
4.1.2 fastai
4.1.3 tensorflow
4.1.4 keras
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 | - |
4.1.5 ONNX
4.2 圖片分類(lèi)
Model Class | Reference | Description |
---|---|---|
MobileNet | Sandler et al. | 顧名思義画切,MobileNet是為移動(dòng)設(shè)備設(shè)計(jì)的架構(gòu)。而搭建它的正是移動(dòng)設(shè)備行業(yè)龍頭谷歌囱怕。而我們之前附上鏈接的模型霍弹,帶有對(duì)流行的 ImageNet(包含兩萬(wàn)個(gè)類(lèi)的數(shù)百萬(wàn)張圖片的巨型數(shù)據(jù)庫(kù)) 數(shù)據(jù)集的預(yù)訓(xùn)練權(quán)重毫别。正如上文所提,MobileNet不止可以用于目標(biāo)檢測(cè)典格,同樣它也適用于類(lèi)似面部識(shí)別岛宦、地標(biāo)識(shí)別、細(xì)致紋理分類(lèi)等多種計(jì)算機(jī)視覺(jué)任務(wù)耍缴。. Top-5 error from paper - ~10% |
ResNet | He et al., He et al. | Very deep CNN model (up to 152 layers), won the ImageNet Challenge in 2015. Top-5 error from paper - ~6% |
SqueezeNet | Iandola et al. | A light-weight CNN providing Alexnet level accuracy with 50X fewer parameters. Top-5 error from paper - ~20% |
VGG | Simonyan et al. | Deep CNN model (upto 19 layers) which won the ImageNet Challenge in 2014. Top-5 error from paper - ~8% |
Bvlc_AlexNet | Krizhevsky et al. | Deep CNN model for Image Classification |
Bvlc_GoogleNet | Szegedy et al. | Deep CNN model for Image Classification |
Bvlc_reference_CaffeNet | Krizhevsky et al. | Deep CNN model for Image Classification |
Bvlc_reference_RCNN_ILSVRC13 | Girshick et al. | Deep CNN model for Image Classification |
DenseNet121 | Huang et al. | Deep CNN model for Image Classification |
Inception_v1 | Szegedy et al. | Deep CNN model for Image Classification |
Inception_v2 | Szegedy et al. | Deep CNN model for Image Classification |
ShuffleNet | Zhang et al. | Deep CNN model for Image Classification |
ZFNet512 | Zeiler et al. | Deep CNN model for Image Classification |
4.3 語(yǔ)義分割
Model Class | Reference | Description |
---|---|---|
DUC | Wang et al. | Deep CNN based model with >80% mIOU (mean Intersection Over Union) trained on urban street images |
FCN | Long et al. | contribute |
4.3.1 對(duì)象檢測(cè)和分段
Model Class | Reference | Description |
---|---|---|
Tiny_YOLOv2 | Redmon et al. | Deep CNN model for Object Detection |
SSD | Liu et al. | contribute |
Faster-RCNN | Ren et al. | |
Mask-RCNN | He et al. | Mask R-CNN 是為目標(biāo)實(shí)例分割而開(kāi)發(fā)的靈活框架砾肺。這個(gè)預(yù)訓(xùn)練模型是使用 Python 和 Keras 對(duì) Mask R-CNN 技術(shù)的實(shí)現(xiàn)。它為給定圖像中的目標(biāo)的每個(gè)實(shí)例生成邊界框和分割掩模私恬,這個(gè) GitHub 存儲(chǔ)庫(kù)提供了大量的資源來(lái)幫助新手入門(mén)债沮。它包括 Mask R-CNN 的源代碼,用于MS COCO 數(shù)據(jù)集的訓(xùn)練代碼和預(yù)訓(xùn)練權(quán)重本鸣,Jupyter notebook 用于可視化檢測(cè)流程的每個(gè)步驟疫衩。 |
YOLO v2 | Redmon et al. | 說(shuō)到 YOLO,這是一個(gè)廣泛運(yùn)用于深度學(xué)習(xí)的目標(biāo)檢測(cè)框架荣德,這個(gè)庫(kù)包含Keras 中的YOLOv2 實(shí)現(xiàn)闷煤。盡管開(kāi)發(fā)者已經(jīng)在各種目標(biāo)圖像上測(cè)試了這一框架,比如袋鼠檢測(cè)涮瞻、自動(dòng)駕駛汽車(chē)鲤拿,紅細(xì)胞檢測(cè)等等,他們依然發(fā)布了浣熊檢測(cè)的預(yù)訓(xùn)練模型署咽。這里你可以下載浣熊的數(shù)據(jù)集近顷,并且開(kāi)始訓(xùn)練這個(gè)預(yù)訓(xùn)練模型。這一數(shù)據(jù)集包含200個(gè)圖片(160個(gè)訓(xùn)練集宁否,40個(gè)測(cè)試集)窒升。同樣,你可以下載整個(gè)模型的預(yù)訓(xùn)練權(quán)重慕匠。而根據(jù)模型開(kāi)發(fā)者所說(shuō)饱须,這些權(quán)重可以用于一類(lèi)物體的目標(biāo)檢測(cè)。 |
YOLO v3 | Redmon et al. | contribute |
VGG-Face | 人臉識(shí)別模型 | 從頭開(kāi)始創(chuàng)建一個(gè)人臉識(shí)別模型其實(shí)是一個(gè)令人害怕的任務(wù)台谊。為了最終構(gòu)建出令人滿(mǎn)意的模型蓉媳,你需要去尋找搜集并且標(biāo)注大量的圖像。因此锅铅,在這個(gè)領(lǐng)域使用預(yù)訓(xùn)練模型是非常有道理的酪呻。VGG-Face是一個(gè)有超過(guò)2百萬(wàn)張人臉圖像,包含2622個(gè)獨(dú)立身份的數(shù)據(jù)集狠角。預(yù)訓(xùn)練模型已經(jīng)通過(guò)以下方法構(gòu)建完成 vgg-face-keras: 將vgg-face模型直接轉(zhuǎn)化成keras模型,vgg-face-keras-fc:首先將vgg-face Caffe模型轉(zhuǎn)化成mxnet模型号杠,再將其轉(zhuǎn)化成keras模型 |
Deeplabv3+ | 語(yǔ)義圖像分割 | 義圖像分割是指將語(yǔ)義標(biāo)簽分配給圖像的每個(gè)像素的任務(wù)。這些語(yǔ)義標(biāo)簽可以是‘天空’,‘汽車(chē)’姨蟋,‘道路’屉凯,‘長(zhǎng)頸鹿’等等。這項(xiàng)技術(shù)所要做的就是找到對(duì)象的邊界因而需要對(duì)精度要求做出約束(這也就是與圖像層面的分類(lèi)任務(wù)的區(qū)別所在眼溶,分類(lèi)任務(wù)對(duì)精度的要求更加寬松)悠砚。Deeplabv3 是Google最新的語(yǔ)義圖像分割模型。 它最初是使用TensorFlow實(shí)現(xiàn)并且現(xiàn)在也已經(jīng)通過(guò)keras實(shí)現(xiàn)了堂飞。這個(gè)GitHub倉(cāng)庫(kù)包含如何獲取標(biāo)簽灌旧,如何使用自定義類(lèi)別數(shù)的預(yù)訓(xùn)練模型的代碼,當(dāng)然也包含如何去追蹤自己模型的代碼绰筛。 |
4.3.2 汽車(chē)識(shí)別
Model Class | Reference | Description |
---|---|---|
ArcFace | 汽車(chē)識(shí)別 | 眾所周知枢泰,對(duì)一輛車(chē)分門(mén)別類(lèi)有很多方法:譬如車(chē)體設(shè)計(jì)風(fēng)格、車(chē)門(mén)數(shù)量铝噩、是否敞篷衡蚂、車(chē)座數(shù)量等等。對(duì)于這一問(wèn)題骏庸,我們需要將車(chē)輛圖片分門(mén)別類(lèi)毛甲,比如考慮品牌、設(shè)計(jì)模式具被、年限等等的分類(lèi)玻募。2012年,Tesla Model S 使用了斯坦福大學(xué)的車(chē)輛數(shù)據(jù)集(其中包含196類(lèi)汽車(chē)的16185張圖片)正是為了開(kāi)發(fā)這一模型一姿。Tesla Model S使用預(yù)訓(xùn)練過(guò)的VGG16七咧、VGG19、InceptionV3模型進(jìn)行訓(xùn)練叮叹。由于僅僅使用 3*3的卷積層增加深度坑雅,VGG這一簡(jiǎn)單特點(diǎn)為人所知,這里16和19分別代表兩種VGG網(wǎng)絡(luò)的層數(shù)衬横。由于數(shù)據(jù)量較少,最簡(jiǎn)單的模型——VGG16是最精確的终蒂。這一神經(jīng)網(wǎng)絡(luò)的訓(xùn)練蜂林,使得在交叉驗(yàn)證集上達(dá)到了66.11%的準(zhǔn)確度。而由于偏差方差的問(wèn)題拇泣,反而使得比較復(fù)雜的模型譬如InceptionV3得到的準(zhǔn)確率較低噪叙。 |
4.3.3 面部檢測(cè)和識(shí)別
Model Class | Reference | Description |
---|---|---|
ArcFace | Deng et al. | ArcFace is a CNN based model for face recognition which learns discriminative features of faces and produces embeddings for input face images. |
CNN Cascade | Li et al. | contribute |
4.3.4 表情識(shí)別
Model Class | Reference | Description |
---|---|---|
Emotion FerPlus | Barsoum et al. | Deep CNN model for Emotion recognition |
4.3.5 性別區(qū)別
Model Class | Reference | Description |
---|---|---|
Age and Gender Classification using Convolutional Neural Networks | Levi et al. | contribute |
4.3.6 手寫(xiě)數(shù)字識(shí)別
Model Class | Reference | Description |
---|---|---|
MNIST- Hand Written Digit Recognition | Convolutional Neural Network with MNIST | Deep CNN model for hand written digit identification |
4.3.7 超分辨率
Model Class | Reference | Description |
---|---|---|
Image Super resolution using deep convolutional networks | Dong et al. | contribute |
4.3.8 風(fēng)格遷移
Model Class | Reference | Description |
---|---|---|
Unpaired Image to Image Translation using Cycle consistent Adversarial Network | Zhu et al. | contribute |
4.3.9 生熟番茄分類(lèi)
Model Class | Reference | Description |
---|---|---|
生熟番茄分類(lèi) | 假定我們有幾百個(gè)數(shù)據(jù)集的番茄圖片,現(xiàn)在考慮如何如何區(qū)分它們霉翔,比方說(shuō)按是否瑕疵睁蕾,或者按成熟與否區(qū)分。這里我們考慮使用深度學(xué)習(xí)模型,而解決這個(gè)問(wèn)題的關(guān)鍵技術(shù)就是圖像處理子眶。應(yīng)對(duì)于這一分類(lèi)問(wèn)題瀑凝,我們可以利用在Keras上預(yù)訓(xùn)練好的 VGG16模型來(lái)區(qū)分給定圖片的番茄是生是熟。通過(guò)在ImageNet數(shù)據(jù)集上抓取的390張或生或熟的番茄圖像進(jìn)行訓(xùn)練臭杰,并在18張不同的驗(yàn)證集上進(jìn)行測(cè)試粤咪。這些驗(yàn)證集圖像上的總體結(jié)果如下所示: |
4.4 機(jī)器翻譯
Model Class | Reference | Description |
---|---|---|
Neural Machine Translation by jointly learning to align and translate | Bahdanau et al. | contribute |
Google's Neural Machine Translation System | Wu et al. | contribute |
4.4.1 語(yǔ)音處理
Model Class | Reference | Description |
---|---|---|
Speech recognition with deep recurrent neural networks | Graves et al. | contribute |
Deep voice: Real time neural text to speech | Arik et al. | contribute |
4.4.2 語(yǔ)言模型
Model Class | Reference | Description |
---|---|---|
Deep Neural Network Language Models | Arisoy et al. | contribute |
4.4.3 視覺(jué)問(wèn)答
Model Class | Reference | Description |
---|---|---|
VQA: Visual Question Answering | Agrawal et al. | contribute |
Yin and Yang: Balancing and Answering Binary Visual Questions | Zhang et al. | contribute |
Making the V in VQA Matter | Goyal et al. | contribute |
Visual Dialog | Das et al. | contribute |
4.4.4 其他有意思的模型
Model Class | Reference | Description |
---|---|---|
Text to Image | Generative Adversarial Text to image Synthesis | contribute |
Sound Generative models | WaveNet: A Generative Model for Raw Audio | contribute |
Time Series Forecasting | Modeling Long- and Short-Term Temporal Patterns with Deep Neural Networks | contribute |
Recommender systems | DropoutNet: Addressing Cold Start in Recommender Systems | contribute |
Collaborative filtering | contribute | |
Autoencoders | contribute |
4.5 Model Visualization
You can see visualizations of each model's network architecture by using Netron.
4.6 CV
名稱(chēng) | 環(huán)境 | 精度 | 錯(cuò)誤率 |
---|---|---|---|
物體檢測(cè) | c cuda | ||
姿勢(shì)估計(jì) | keras | ||
斯坦福CIFAR10 | pytorch tensorflow | 95.29% | |
斯坦福ImageNet | pytorch tensorflow MXNet caffe | 93.94% |
4.7 NLP
4.7.1 多用途模型
多用途模型是自然語(yǔ)言處理領(lǐng)域的熱門(mén)話(huà)題。這些模型為機(jī)器翻譯渴杆、問(wèn)答系統(tǒng)寥枝、聊天機(jī)器人、情緒分析等我們感興趣的自然語(yǔ)言處理應(yīng)用提供了動(dòng)力磁奖。這些多用途自然語(yǔ)言處理模型的核心組件是語(yǔ)言建模的概念囊拜。
4.7.1.1 ULMFiT
https://github.com/fastai/fastai/tree/master/courses/dl2/imdb_scripts
ULMFiT 由 fast.ai 的 Jeremy Howard 和 DeepMind 的 Sebastian Ruder 提出并設(shè)計(jì)。你可以說(shuō) ULMFiT 是去年啟動(dòng)遷移學(xué)習(xí)派對(duì)的發(fā)行版比搭。
正如我們?cè)诒疚闹兴龉邗危琔LMFiT 使用新的自然語(yǔ)言生成技術(shù)實(shí)現(xiàn)了最先進(jìn)的結(jié)果。該方法包括在 Wikitext 103 數(shù)據(jù)集上訓(xùn)練的預(yù)處理語(yǔ)言模型進(jìn)行微調(diào)敢辩,使其不會(huì)忘記以前所學(xué)的內(nèi)容蔽莱,從而將其微調(diào)為一個(gè)新的數(shù)據(jù)集。
- 《Tutorial on Text Classification (NLP) using ULMFiT and fastai Library in Python》(《在 Python 中使用 ULMFiT 和 fastai 庫(kù)的文本分類(lèi)(自然語(yǔ)言處理)教程》):https://www.analyticsvidhya.com/blog/2018/11/tutorial-text-classification-ulmfit-fastai-library/?utm_source=blog&utm_medium=top-pretrained-models-nlp-article
- ULMFiT 的預(yù)訓(xùn)練模型:https://www.paperswithcode.com/paper/universal-language-model-fine-tuning-for-text
研究論文:https://arxiv.org/abs/1801.06146
4.7.1.2 Transformer
GitHub 項(xiàng)目地址:https://github.com/tensorflow/models/tree/master/official/transformer
Transformer 架構(gòu)是自然語(yǔ)言處理領(lǐng)域最近幾乎所有主要發(fā)展的核心戚长,2017 年由 Google 推出盗冷。當(dāng)時(shí),RNN 遞歸神經(jīng)網(wǎng)絡(luò)被用于語(yǔ)言任務(wù)同廉,如機(jī)器翻譯和問(wèn)答系統(tǒng)仪糖。
這種 Transformer 架構(gòu)的性能優(yōu)于 RNN 和 CNN(卷積神經(jīng)網(wǎng)絡(luò))。而且訓(xùn)練模型所需的計(jì)算資源也大為減少迫肖。對(duì)自然語(yǔ)言處理的每個(gè)人來(lái)講锅劝,這種結(jié)果是雙贏的局面。
根據(jù) Google 的說(shuō)法蟆湖,Transformer“應(yīng)用了一種自注意力(self-attention)機(jī)制故爵,可以直接模擬句子中所有單詞之間的關(guān)系,無(wú)論這些單詞的位置如何”隅津。它使用固定大小的上下文(也就是前面的單詞)來(lái)實(shí)現(xiàn)這一點(diǎn)诬垂。是不是覺(jué)得太復(fù)雜了?讓我們舉個(gè)例子來(lái)簡(jiǎn)化這個(gè)伦仍。
“She found the shells on the bank of the river.”模型需要理解這里的“bank”是指河岸结窘,而不是金融機(jī)構(gòu)。Transformer 只需一步就能理解這一點(diǎn)充蓝。我建議你閱讀下面給出鏈接的完整論文隧枫,以了解 Transformer 的工作原理喉磁。它會(huì)讓你大吃一驚。
Google 去年發(fā)布了一款 Universal Transformer 的改進(jìn)版官脓。還有一個(gè)更新协怒、更直觀的版本,叫做 Transformer-XL确买,我們將稍后予以介紹斤讥。
有關(guān) Transformer 的更多信息,請(qǐng)參閱以下資源:
- Google 的官方博客文章:https://ai.googleblog.com/2017/08/transformer-novel-neural-network.html
- Transformer 的預(yù)訓(xùn)練模型:https://www.paperswithcode.com/paper/attention-is-all-you-need
- 研究論文:https://arxiv.org/abs/1706.03762
4.7.1.3 BERT
GitHub 項(xiàng)目地址:https://github.com/google-research/bert
自 Google 公布他們的結(jié)果以來(lái)湾趾,BERT 就一直在掀起波瀾芭商,然后 Google 開(kāi)源了它背后的代碼。我們可以討論這是否標(biāo)志著“自然語(yǔ)言處理領(lǐng)域的新時(shí)代”搀缠,但毫無(wú)疑問(wèn)的是铛楣,BERT 是一個(gè)非常有用的框架,可以很好地推廣到各種自然語(yǔ)言處理任務(wù)艺普。
BERT簸州,是 Bidirectional Encoder Representations(雙向編碼器表示)的縮寫(xiě),它從單詞的兩邊(左邊和右邊)來(lái)考慮上下文歧譬。以前所有的努力方向岸浑,都是一次只考慮單詞的一邊,要么是左邊瑰步,要么是右邊矢洲。這種雙向性有助于模型更好地理解使用單詞的上下文。此外缩焦,BERT 的設(shè)計(jì)目標(biāo)是能夠進(jìn)行多任務(wù)學(xué)習(xí)读虏,也就是說(shuō),它可以同時(shí)執(zhí)行不同的自然語(yǔ)言處理任務(wù)袁滥。
BERT 是第一個(gè)無(wú)監(jiān)督盖桥、深度雙向的自然語(yǔ)言處理模型預(yù)訓(xùn)練系統(tǒng)。它只使用純文本語(yǔ)料庫(kù)進(jìn)行訓(xùn)練题翻。
在發(fā)布的時(shí)候揩徊,BERT 在 11 個(gè)自然語(yǔ)言處理任務(wù)上取得了最先進(jìn)的結(jié)果。這真是相當(dāng)了不起的成就嵌赠!你可以在短短幾個(gè)小時(shí)內(nèi)(在單個(gè) GPU 上)使用 BERT 訓(xùn)練自己的自然語(yǔ)言處理模型(例如問(wèn)答系統(tǒng))靴拱。
- Google 官方博客文章:https://ai.googleblog.com/2018/11/open-sourcing-bert-state-of-art-pre.html
- BERT 預(yù)訓(xùn)練模型:https://www.paperswithcode.com/paper/bert-pre-training-of-deep-bidirectional#code
- 研究論文:https://arxiv.org/pdf/1810.04805.pdf
4.7.1.4 Google Transformer-XL
GitHub 項(xiàng)目地址:https://github.com/kimiyoung/transformer-xl
從長(zhǎng)遠(yuǎn)來(lái)看,Google 的這一發(fā)行版對(duì)自然語(yǔ)言處理領(lǐng)域來(lái)說(shuō)可能是一個(gè)非常重要的版本猾普。如果你是一名菜鳥(niǎo),這個(gè)概念可能會(huì)變得有點(diǎn)棘手本谜,所以我建議你多讀幾遍來(lái)掌握它初家。我還會(huì)在這一節(jié)中提供一些資源,幫助你開(kāi)始入門(mén) Transformer-XL。
想象一下溜在,你正在讀一本書(shū)陌知,讀到一半的時(shí)候,書(shū)中突然出現(xiàn)了某個(gè)單詞或句子掖肋,而這些在這本書(shū)的開(kāi)頭都提到過(guò)仆葡。這時(shí)候,你我都能回憶起那些單詞或句子指的是什么意思志笼。但機(jī)器很難建立模擬長(zhǎng)期依賴(lài)(long-term dependency)的模型沿盅,這是可以理解的。
如上所述纫溃,實(shí)現(xiàn)這一點(diǎn)的一種方法是使用 Transformer腰涧。但它們是在固定長(zhǎng)度的上下文實(shí)現(xiàn)的。換句話(huà)說(shuō)紊浩,如果使用這種方法窖铡,就沒(méi)有多少靈活性而言。
而 Transformer-XL 很好地彌補(bǔ)了這一缺陷坊谁。它由 Google AI 團(tuán)隊(duì)開(kāi)發(fā)费彼,是一種新型的自然語(yǔ)言處理架構(gòu),可以幫助機(jī)器理解超出固定長(zhǎng)度限制的上下文口芍。Transformer-XL 比普通的 Transformer 要快上 1800 倍箍铲。
如你現(xiàn)在所預(yù)測(cè)的,Transformer-XL 在各種語(yǔ)言建慕捉纾基準(zhǔn) / 數(shù)據(jù)集上實(shí)現(xiàn)了最新的虹钮、最先進(jìn)的結(jié)果。下面是他們網(wǎng)頁(yè)上的一張表膘融,展示了這一點(diǎn):
上面的鏈接和下面提到的 Transformer-XL GitHub 存儲(chǔ)庫(kù)包含 PyTorch 和 TensorFlow 中的代碼芙粱。
有關(guān) Transformer-XL 的更多信息,請(qǐng)參閱以下資源:
- Google 官方博客文章:https://ai.googleblog.com/2019/01/transformer-xl-unleashing-potential-of.html
- Transformer-XL 的預(yù)訓(xùn)練模型:https://www.paperswithcode.com/paper/transformer-xl-attentive-language-models
- 研究論文:https://arxiv.org/abs/1901.02860
4.7.1.5 OpenAI GPT-2
GitHub 項(xiàng)目地址:https://github.com/openai/gpt-2
目前這是一個(gè)頗有爭(zhēng)議的條目氧映。一些人可能會(huì)認(rèn)為 GPT-2 的發(fā)布就是 OpenAI 的營(yíng)銷(xiāo)噱頭春畔。我當(dāng)然理解他們的想法。然而岛都,我還是認(rèn)為律姨,至少?lài)L試一下 OpenAI 發(fā)布的代碼還是很重要的。
首先臼疫,我得為那些不知道我在說(shuō)什么的人們提供一些背景信息择份。OpenAI 在 2 月份的時(shí)候發(fā)表了一篇博文,聲稱(chēng)他們已經(jīng)設(shè)計(jì)了一個(gè)自然語(yǔ)言處理模型烫堤,表現(xiàn)非常出色荣赶,以至于他們擔(dān)心被惡意使用凤价,而沒(méi)有選擇發(fā)布完整版本。這當(dāng)然引起了社區(qū)的關(guān)注拔创。
GPT-2 經(jīng)過(guò)訓(xùn)練后利诺,可以預(yù)測(cè) 40GB 互聯(lián)網(wǎng)文本數(shù)據(jù)的下一個(gè)出現(xiàn)的單詞。這個(gè)框架也是基于 Transformer 的模型剩燥,該模型在 800 萬(wàn)個(gè) Web 頁(yè)面的數(shù)據(jù)集進(jìn)行訓(xùn)練慢逾。他們?cè)诰W(wǎng)站公布的結(jié)果令人震撼。這個(gè)模型能夠根據(jù)我們輸入的寥寥可數(shù)的句子就編織出一個(gè)完全清晰的故事灭红,請(qǐng)看看下面的這個(gè)例子:
- OpenAI 官方博客文章:https://openai.com/blog/better-language-models/
- GPT-2 的預(yù)訓(xùn)練模型:https://github.com/openai/gpt-2
- 研究論文:https://d4mucfpksywv.cloudfront.net/better-language-models/language-models.pdf
4.7.2 詞嵌入
我們使用的大多數(shù)機(jī)器學(xué)習(xí)和深度學(xué)習(xí)算法都無(wú)法直接處理字符串和純文本侣滩。這些技術(shù)要求我們必須先將文本數(shù)據(jù)轉(zhuǎn)換為數(shù)字,然后才能執(zhí)行任何任務(wù)(如回歸和分類(lèi))比伏。
因此胜卤,簡(jiǎn)單來(lái)說(shuō),詞嵌入就是為了將文本塊轉(zhuǎn)換為用于執(zhí)行自然語(yǔ)言處理任務(wù)的數(shù)字赁项。詞嵌入格式通常嘗試使用字典將單詞映射到向量葛躏。
你可以在下面的文章中,更深入地理解詞嵌入悠菜、它的不同類(lèi)型以及如何在數(shù)據(jù)集中使用它們舰攒。如果你不熟悉這個(gè)概念的話(huà),我認(rèn)為這份指南對(duì)你來(lái)說(shuō)是必讀的:
《An Intuitive Understanding of Word Embeddings: From Count Vectors to Word2Vec》(《直觀理解詞嵌入:從計(jì)數(shù)向量到 Word2Vec》:https://www.analyticsvidhya.com/blog/2017/06/word-embeddings-count-word2veec/?utm_source=blog&utm_medium=top-pretrained-models-nlp-article
在這一節(jié)中悔醋,我們將介紹自然語(yǔ)言處理領(lǐng)域中兩個(gè)最先進(jìn)的詞嵌入摩窃。我還提供了教程的鏈接,這樣你就可以對(duì)每個(gè)主題有實(shí)際的理解芬骄。
4.7.2.1 ELMo
GitHub 項(xiàng)目地址:https://github.com/allenai/allennlp/blob/master/tutorials/how_to/elmo.md
不猾愿,這個(gè) ELMo 可不是《Sesame Street》(《芝麻街》,美國(guó)芝麻街工作制坐坐的一檔著名的兒童教育電視節(jié)目)的角色账阻。但這個(gè) ELMo(是 Embedding from Language Models 的縮寫(xiě))在構(gòu)建自然語(yǔ)言處理模的上下文非常有用蒂秘。
ELMo 詞向量表示(word representations)考慮用于計(jì)算詞嵌入的完整輸入語(yǔ)句。因此“read”這個(gè)詞在不同的上下文中有不同的 ELMo 向量淘太。這點(diǎn)與舊詞嵌入截然不同姻僧,對(duì)舊詞嵌入而言蒲牧,無(wú)論單詞在什么上下文中使用撇贺,這個(gè)單詞都會(huì)分配到相同的向量冰抢。
有關(guān) ELMo 更多的信息,請(qǐng)參閱以下資源:
- 《Step-by-Step NLP Guide to Learn ELMo for Extracting Features from Text》(《自然語(yǔ)言處理入門(mén)指南:學(xué)習(xí) ELMo 從文本中提取特征》https://www.analyticsvidhya.com/blog/2019/03/learn-to-use-elmo-to-extract-features-from-text/?utm_source=blog&utm_medium=top-pretrained-models-nlp-article
- 用于預(yù)訓(xùn)練模型的 GitHub 存儲(chǔ)庫(kù):https://github.com/allenai/allennlp/blob/master/tutorials/how_to/elmo.md
- 研究論文:https://arxiv.org/pdf/1802.05365.pdf
4.7.2.2 Flair
Flair 并不完全是詞嵌入挎扰,而是詞嵌入的組合翠订。我們可以稱(chēng) Flair 更多的是一個(gè)自然語(yǔ)言處理程序庫(kù),它結(jié)合了 GloVe、BERT骇吭、EMLo 等嵌入橙弱。Zalando Research 的優(yōu)秀人員開(kāi)發(fā)并開(kāi)源了 Flair。
該團(tuán)隊(duì)已經(jīng)為以下自然語(yǔ)言處理任務(wù)發(fā)布了幾個(gè)預(yù)訓(xùn)練模型:
- Name-Entity Recognition (NER燥狰,名稱(chēng) - 實(shí)體識(shí)別)
- Parts-of-Speech Tagging (PoS,詞性標(biāo)注)
- 文本分類(lèi)
- 訓(xùn)練自定義模型
“Flair Embedding”是封裝在 Flair 庫(kù)中的簽名嵌入龙致。它由上下文字符串嵌入提供支持。你應(yīng)該自詡閱讀這篇文章《Introduction to Flair for NLP: A Simple yet Powerful State-of-the-Art NLP Library》(《Flair 簡(jiǎn)介:簡(jiǎn)單而強(qiáng)大的屈梁,最先進(jìn)的自然語(yǔ)言處理庫(kù)》)來(lái)了解支持 Flair 的核心組件:https://www.analyticsvidhya.com/blog/2019/02/flair-nlp-library-python/?utm_source=blog&utm_medium=top-pretrained-models-nlp-article
我特別喜歡 Flair 的地方就是它能夠支持多種語(yǔ)言榛了。如此多的自然語(yǔ)言處理版本都只做英語(yǔ)方面的任務(wù)。如果自然語(yǔ)言處理想在全球范圍內(nèi)獲得吸引力的話(huà)霜大,我們就必須超越這一點(diǎn)!
有關(guān) Flair 更多的信息曙强,請(qǐng)參閱以下資源: - 《Introduction to Flair for NLP: A Simple yet Powerful State-of-the-Art NLP Library》(《Flair 簡(jiǎn)介:簡(jiǎn)單而強(qiáng)大的途茫,最先進(jìn)的自然語(yǔ)言處理庫(kù)》):https://www.analyticsvidhya.com/blog/2019/02/flair-nlp-library-python/?utm_source=blog&utm_medium=top-pretrained-models-nlp-article
Flair 的預(yù)訓(xùn)練模型:https://github.com/zalandoresearch/flair
還不確定?那么臀防,看下面這張比較表就會(huì)讓你明白: - GitHub 項(xiàng)目地址:https://github.com/zalandoresearch/flair
4.7.3 FairSeq Seq2Seq模型
- wmt14.en-fr.fconv-cuda.tar.bz2: 預(yù)訓(xùn)練模型 WMT14 English-French 包含字典
- wmt14.en-fr.fconv-float.tar.bz2: 預(yù)訓(xùn)練模型 [WMT14 English-French]CPU版本
- wmt14.en-de.fconv-cuda.tar.bz2: 預(yù)訓(xùn)練模型 WMT14 English-German 包含字典
- wmt14.en-de.fconv-float.tar.bz2: 預(yù)訓(xùn)練模型 WMT14 English-German CPU 版本
- wmt16.en-ro.fconv-cuda.tar.bz2: 預(yù)訓(xùn)練模型WMT16 English-Romanian 包含字典
- wmt16.en-ro.fconv-float.tar.bz2: 預(yù)訓(xùn)練模型WMT16 English-Romanian CPU版本
4.7.4
4.7.5
名稱(chēng) | 環(huán)境 | 精度 | 錯(cuò)誤率 |
---|---|---|---|
Thomas Wolf | |||
Junseong Kim |