預訓練模型 & Fine-tuning
https://blog.csdn.net/weixin_42137700/article/details/82107208
https://zhuanlan.zhihu.com/p/46833276
在實踐中,由於資料集不夠大,很少有人從頭開始訓練網路。常見的做法是使用預訓練的網路(例如在ImageNet上訓練的分類1000類的網路)來重新fine-tuning(也叫微調),或者當做特徵提取器。
語言模型來輔助NLP任務已經得到了學術界較為廣泛的探討,通常有兩種方式:
- feature-based(ELMo)
- 利用語言模型的中間結果也就是LM embedding, 將其作為額外的特徵,引入到原任務的模型中。
- 通常feature-based方法包括兩步:a. 在大的語料A上無監督地訓練語言模型,訓練完畢得到語言模型,然後構造task-specific model例如序列標註模型,採用有標記的語料B來有監督地訓練task-sepcific model,將語言模型的引數固定,語料B的訓練資料經過語言模型得到LM embedding,作為task-specific model的額外特徵。
- fine-tuning
- Fine-tuning方式是指在已經訓練好的語言模型的基礎上,加入少量的task-specific parameters。例如對於分類問題在語言模型基礎上加一層softmax網路,然後在新的語料上重新訓練來進行fine-tune。
- 構造語言模型,採用大的語料A來訓練語言模型在語言模型基礎上增加少量神經網路層來完成specific task。例如序列標註、分類等,然後採用有標記的語料B來有監督地訓練模型,這個過程中語言模型的引數並不固定,依然是trainable variables。
常見的兩類遷移學習場景
- 卷積網路當做特徵提取器。使用在ImageNet上預訓練的網路,去掉最後的全連線層,剩餘部分當做特徵提取器(例如AlexNet在最後分類器前,是4096維的特徵向量)。這樣提取的特徵叫做CNN codes。得到這樣的特徵後,可以使用線性分類器(Liner SVM、Softmax等)來分類影像。
- Fine-tuning卷積網路。替換掉網路的輸入層(資料),使用新的資料繼續訓練。Fine-tune時可以選擇fine-tune全部層或部分層。通常,前面的層提取的是影像的***通用特徵(generic features)***(例如邊緣檢測,色彩檢測),這些特徵對許多工都有用。後面的層提取的是***與特定類別有關***的特徵,因此fine-tune時常常只需要Fine-tuning後面的層。
何時以及如何Fine-tune
決定如何使用遷移學習的因素有很多,這是最重要的只有兩個:新資料集的大小、以及新資料和原資料集的相似程度。有一點一定記住:**網路前幾層學到的是通用特徵,後面幾層學到的是與類別相關的特徵。**這裡有使用的四個場景:
- 新資料集比較小且和原資料集相似。因為新資料集比較小,如果fine-tune可能會過擬合;又因為新舊資料集類似,我們期望他們高層特徵類似,可以使用預訓練網路當做特徵提取器,用提取的特徵訓練線性分類器。
- 新資料集大且和原資料集相似。因為新資料集足夠大,可以fine-tune整個網路。
- 新資料集小且和原資料集不相似。新資料集小,最好不要fine-tune,和原資料集不類似,最好也不使用高層特徵。這時可是使用前面層的特徵來訓練SVM分類器。
- 新資料集大且和原資料集不相似。因為新資料集足夠大,可以重新訓練。但是實踐中fine-tune預訓練模型還是有益的。新資料集足夠大,可以fine-tine整個網路。
warning
與重新訓練相比,fine-tune要使用更小的學習率。因為訓練好的網路模型權重已經平滑,我們不希望太快扭曲(distort)它們(尤其是當隨機初始化線性分類器來分類預訓練模型提取的特徵時)。
相關文章
- PyTorch預訓練Bert模型PyTorch模型
- 【預訓練語言模型】 使用Transformers庫進行BERT預訓練模型ORM
- 自訓練 + 預訓練 = 更好的自然語言理解模型模型
- 【AI】Pytorch_預訓練模型AIPyTorch模型
- 【預訓練語言模型】使用Transformers庫進行GPT2預訓練模型ORMGPT
- 模型訓練:資料預處理和預載入模型
- TorchVision 預訓練模型進行推斷模型
- 常見預訓練語言模型簡述模型
- 知識增強的預訓練語言模型系列之ERNIE:如何為預訓練語言模型注入知識模型
- 通用模型、全新框架,WavLM語音預訓練模型全解模型框架
- MxNet預訓練模型到Pytorch模型的轉換模型PyTorch
- 瀏覽器中的機器學習:使用預訓練模型瀏覽器機器學習模型
- 預訓練語言模型:還能走多遠?模型
- Findings | 中文預訓練語言模型回顧模型
- NLP與深度學習(五)BERT預訓練模型深度學習模型
- 大規模表格預訓練模型 SPACE-T模型
- 通過NMT訓練出通用的語境詞向量:NLP中的預訓練模型?模型
- 透過NMT訓練出通用的語境詞向量:NLP中的預訓練模型?模型
- NLP領域預訓練模型的現狀及分析模型
- keras中VGG19預訓練模型的使用Keras模型
- 完勝 BERT,谷歌最佳 NLP 預訓練模型開源,單卡訓練僅需 4 天谷歌模型
- BERT預訓練模型的演進過程!(附程式碼)模型
- 使用Bert預訓練模型文字分類(內附原始碼)模型文字分類原始碼
- 「NLP」GPT:第一個引入Transformer的預訓練模型GPTORM模型
- 預訓練模型時代:告別finetune, 擁抱adapter模型APT
- TensorFlow 呼叫預訓練好的模型—— Python 實現模型Python
- 180G!中文ELECTRA預訓練模型再升級模型
- 取出預訓練模型中間層的輸出(pytorch)模型PyTorch
- 人工智慧的預訓練基礎模型的分類人工智慧模型
- fasttext訓練模型程式碼AST模型
- 監控大模型訓練大模型
- 多項NLP任務新SOTA,Facebook提出預訓練模型BART模型
- PaddlePaddle分散式訓練及CTR預估模型應用分散式模型
- 【tf.keras】tf.keras載入AlexNet預訓練模型Keras模型
- LUSE: 無監督資料預訓練短文字編碼模型模型
- 自然語言處理中的語言模型預訓練方法自然語言處理模型
- 00 預訓練語言模型的前世今生(全文 24854 個詞)模型
- 孟子小樣本和檢索式預訓練模型進展模型