微調 (深度學習)

微調(又稱大模型微調,英語:fine-tuning)是深度學習遷移學習的一種方法,其中預訓練模型的權重會在新數據上進行訓練[1]。微調可以在整個神經網絡上執行,也可以僅在其部分層上執行,此時未進行微調的層會被「凍結」(在反向傳播步驟中不更新)[2]。模型還可以通過「適配器」進行增強,適配器的參數遠少於原始模型,通過調整適配器的權重並保持模型的其餘權重不變的方式,以參數有效的方式進行微調[3]

對於一些體系結構,比如卷積神經網絡,通常會將較早的層(靠近輸入層的層)凍結,因為它們捕捉到較低層次的特徵,而較後的層通常能夠識別更高層次的特徵,這些特徵可能更相關於模型訓練的任務。[2][4]

對於在大型和通用語料庫上進行預訓練的模型,通常通過重用模型的參數作為起點,並添加一個從頭開始訓練的任務特定層進行微調。[5] 對整個模型進行微調也很常見,通常會產生更好的結果,但計算成本更高。[6]

微調通常通過監督學習完成,但也有使用弱監督英語Weak supervision進行模型微調的技術。[7] 微調可以與基於人類反饋的強化學習目標相結合,以生成像ChatGPTGPT-3的微調版本)和Sparrow英語Sparrow (bot)語言模型[8][9]

變種

低秩適應

低秩適應(英語:Low-rank adaptation, LoRA)是一種基於適配器的有效微調模型的技術。其基本思想是設計一個低秩矩陣,然後將其添加到原始矩陣中。[10] 在這個背景下,「適配器」是一組低秩矩陣,當添加到基礎模型時,產生一個微調模型。它允許在更少的空間需求下接近全模型微調的性能。擁有數十億參數的語言模型可能只需數百萬參數進行LoRA微調。

LoRA-based微調在Stable Diffusion社區中變得流行。[11] 對LoRA的支持正在集成到Hugging Face的Diffusers庫中。[12] 對LoRA和類似技術的支持也通過Hugging Face的Parameter-Efficient Fine-Tuning(PEFT)軟件包提供給廣泛的其他模型。[13]

應用領域

自然語言處理

微調在自然語言處理(NLP)中很常見,特別是在語言建模領域。像OpenAIGPT基礎模型系列這樣的大型語言模型可以在特定下游NLP任務的數據上進行微調(使用預訓練模型的任務),以提高性能,超過未修改的預訓練模型。[6]

商業模型

商業化的語言模型, 有時提供商提供了微調API,可以進行微調。 截至2023年6月19日,OpenAIMicrosoft Azure的「Azure OpenAI Service」為其部分模型提供了語言模型微調API,Google Cloud Platform為其部分PaLM模型提供了API,其他提供商也有類似服務。[14][15][16] 但是,並非所有商業模型目前都支持微調。

參見

參考資料

  1. ^ Quinn, Joanne. Dive into deep learning: tools for engagement. Thousand Oaks, California. 2020: 551 [January 10, 2023]. ISBN 978-1-5443-6137-6. (原始內容存檔於January 10, 2023). 
  2. ^ 2.0 2.1 CS231n Convolutional Neural Networks for Visual Recognition. cs231n.github.io. [9 March 2023]. (原始內容存檔於2023-03-23). 
  3. ^ Liu, Haokun; Tam, Derek; Muqeeth, Mohammed; Mohta, Jay; Huang, Tenghao; Bansal, Mohit; Raffel, Colin A. Koyejo, S.; Mohamed, S.; Agarwal, A.; Belgrave, D.; Cho, K.; Oh, A. , 編. Few-Shot Parameter-Efficient Fine-Tuning is Better and Cheaper than In-Context Learning (PDF). Advances in Neural Information Processing Systems 35. Curran Associates, Inc.: 1950–1965. 2022 [2023-12-11]. (原始內容存檔 (PDF)於2023-12-26). 
  4. ^ Zeiler, Matthew D; Fergus, Rob. Visualizing and Understanding Convolutional Networks. 2013. arXiv:1311.2901 . 
  5. ^ Dodge, Jesse; Ilharco, Gabriel; Schwartz, Roy; Farhadi, Ali; Hajishirzi, Hannaneh; Smith, Noah. Fine-Tuning Pretrained Language Models: Weight Initializations, Data Orders, and Early Stopping. 2020. arXiv:2002.06305 . 
  6. ^ 6.0 6.1 Dingliwal, Saket; Shenoy, Ashish; Bodapati, Sravan; Gandhe, Ankur; Gadde, Ravi Teja; Kirchhoff, Katrin. Prompt Tuning GPT-2 language model for parameter-efficient domain adaptation of ASR systems. 2021. arXiv:2112.08718 . 
  7. ^ Yu, Yue; Zuo, Simiao; Jiang, Haoming; Ren, Wendi; Zhao, Tuo; Zhang, Chao. Fine-Tuning Pre-trained Language Model with Weak Supervision: A Contrastive-Regularized Self-Training Approach. 2020. arXiv:2010.07835 . 
  8. ^ Introducing ChatGPT. openai.com. [9 March 2023]. (原始內容存檔於2023-03-16). 
  9. ^ Glaese, Amelia; McAleese, Nat; Trębacz, Maja; Aslanides, John; Firoiu, Vlad; Ewalds, Timo; Rauh, Maribeth; Weidinger, Laura; Chadwick, Martin; Thacker, Phoebe; Campbell-Gillingham, Lucy; Uesato, Jonathan; Huang, Po-Sen; Comanescu, Ramona; Yang, Fan; See, Abigail; Dathathri, Sumanth; Greig, Rory; Chen, Charlie; Fritz, Doug; Elias, Jaume Sanchez; Green, Richard; Mokrá, Soňa; Fernando, Nicholas; Wu, Boxi; Foley, Rachel; Young, Susannah; Gabriel, Iason; Isaac, William; Mellor, John; Hassabis, Demis; Kavukcuoglu, Koray; Hendricks, Lisa Anne; Irving, Geoffrey. Improving alignment of dialogue agents via targeted human judgements. 2022. arXiv:2209.14375 . 
  10. ^ Hu, Edward J.; Shen, Yelong; Wallis, Phillip; Allen-Zhu, Zeyuan; Li, Yuanzhi; Wang, Shean; Wang, Lu; Chen, Weizhu. LoRA: Low-Rank Adaptation of Large Language Models. 2022-01-28 [2023-12-12]. arXiv:2106.09685 . (原始內容存檔於2023-03-15) (英語). 
  11. ^ Ryu, Simo. Using Low-rank adaptation to quickly fine-tune diffusion models. GitHub. February 13, 2023 [June 19, 2023]. (原始內容存檔於2024-01-06). 
  12. ^ Cuenca, Pedro; Paul, Sayak. Using LoRA for Efficient Stable Diffusion Fine-Tuning. Hugging Face. January 26, 2023 [June 19, 2023]. (原始內容存檔於2023-12-31). 
  13. ^ Parameter-Efficient Fine-Tuning using 🤗 PEFT. huggingface.co. [2023-06-20]. (原始內容存檔於2023-11-22). 
  14. ^ Fine-tuning. OpenAI. [2023-06-19]. (原始內容存檔於2023-12-29). 
  15. ^ Learn how to customize a model for your application. Microsoft. [2023-06-19]. (原始內容存檔於2023-06-19). 
  16. ^ Tune text foundation models. [2023-06-19]. (原始內容存檔於2023-12-22).