該教程於6月2日在NAACL 2019在美國明尼阿波利斯的NAACL舉行,由塞巴斯蒂安·魯德(Sebastian Ruder),馬修·彼得斯(Matthew Peters),斯瓦巴·斯瓦納(Swabha Swayamdipta)和托馬斯·沃爾夫(Thomas Wolf)提供。
這是NAACL教程的網頁,以獲取更多信息。
教程的幻燈片可以在此處找到:https://tinyurl.com/naacltransfer。
可以在此處找到帶有教程的所有代碼的Google COLAB筆記本:https://tinyurl.com/naacltransfercolab。
當前的存儲庫也可以使用以下簡短URL訪問:https://tinyurl.com/naacltransfercode
經典的監督機器學習範式基於隔離學習的學習,一個使用單個數據集的任務的單個預測模型。這種方法需要大量的培訓示例,並且最適合定義明確和狹窄的任務。轉移學習是指通過利用來自其他域或任務的數據來訓練具有更好概括屬性的模型來擴展此方法的一組方法。
在過去的兩年中,自然語言處理領域(NLP)見證了幾種轉移學習方法和體系結構的出現,這些方法和體系結構在各種NLP任務上都大大改善了。
這些改進以及這些方法的廣泛可用性和易用性使人聯想到導致在計算機視覺中預處理的嵌入和Imagenet預處理成功的因素,並表明這些方法可能成為NLP景觀中的常見工具以及重要的研究方向。
我們將概述NLP中的現代轉移學習方法,如何進行預培訓,他們學習捕獲的表示形式以及審查如何在下游NLP任務中集成和調整這些模型的示例和案例研究。
該代碼庫試圖以最簡單,最緊湊的方式呈現一些主要的轉移學習技術,這些技術在過去幾年中出現了。此存儲庫中的代碼並不試圖成為最新的。但是,已經努力實現合理的績效,並進行了一些修改,使其與當前的最新狀態競爭。
已經做出了特別的努力
目前,代碼庫包括:
pretraining_model.py :具有GPT-2樣結構的變壓器模型,作為基本預驗證的模型;pretraining_train.py :一個預處理的腳本,可以使用分佈式培訓(如果有)進行分佈式培訓,以選擇大型數據集(Wikitext-103,SimpleBooks-92)的語言建模目標訓練該模型;finetuning_model.py :基於用於微調的變壓器模型的幾個體系結構(頂部有分類頭,帶有適配器);finetuning_train.py :一個微調腳本,可以在分類任務(IMDB)上微調這些體系結構。 要使用此代碼庫,只需克隆github存儲庫,然後安裝這樣的要求:
git clone https://github.com/huggingface/naacl_transfer_learning_tutorial
cd naacl_transfer_learning_tutorial
pip install -r requirements.txt要預先訓練變壓器,請運行pretraining_train.py腳本:
python ./pretraining_train.py或使用這樣的分佈式培訓(對於8 GPU服務器):
python -m torch.distributed.launch --nproc_per_node 8 ./pretraining_train.py培訓前腳本將:
wikitext-103用於預訓練(默認),./runs下方在Wikitext-103上驗證約29的驗證困惑將在8 V100 GPU上大約需要15小時(可以較早停止)。如果您對SOTA感興趣,則有幾個原因的驗證困惑比等效的Transformer-XL困惑(大約24)高一點。主要原因是使用開放的詞彙(Bert Tokenizer的子字)而不是封閉的詞彙(請參閱Sebastian Mielke的此博客文章,以獲取一些解釋)
提供各種預培訓選項,您可以列出以下方式:
python ./pretraining_train.py --help要微調預訓練的變壓器,請運行finetuning_train.py腳本:
python ./finetuning_train.py --model_checkpoint PATH-TO-YOUR-PRETRAINED-MODEL-FOLDER PATH-TO-YOUR-PRETRAINED-MODEL-FOLDER可以例如./runs/May17_17-47-12_my_big_server
或使用這樣的分佈式培訓(對於8 GPU服務器):
python -m torch.distributed.launch --nproc_per_node 8 ./finetuning_train.py --model_checkpoint PATH-TO-YOUR-PRETRAINED-MODEL-FOLDER提供各種微調選項,您可以列出:
python ./finetuning_train.py --help