Тонке настроювання (глибоке навчання)

У глибокому навчанні, тонке́ настро́ювання (англ. fine-tuning) — це підхід до передавального навчання, в якому ваги попередньо натренованої моделі тенують на нових даних.[1] Тонке настроювання можливо виконувати для всієї нейронної мережі або лише для підмножини її шарів, у разі чого шари, які не піддаються тонкому настроюванню, «заморожуються» (не уточнюються під час кроку зворотного поширення).[2] Модель також можна доповнювати «адаптерами» (англ. "adapters"), які складаються з набагато меншої кількості параметрів, аніж оригінальна модель, і тонко настроюються ефективним щодо параметрів чином шляхом настроювання ваг адаптерів і залишання решти ваг моделі замороженими.[3]

Для деяких архітектур, таких як згорткові нейронні мережі, зазвичай заморожують ранні шари (найближчі до шару входу), оскільки вони вловлюють низькорівневі ознаки, тоді як пізніші шари часто розпізнають високорівневі ознаки, що можуть бути більше пов'язаними із завданням, на якому тренують модель.[2][4]

Моделі, попередньо натреновані на великих і загальних корпусах, зазвичай тонко настоюють шляхом повторного використання параметрів моделі як вихідної точки, та додавання специфічного для завдання шару, який тренують з нуля.[5] Тонке настроювання всієї моделі також поширене і часто дає кращі результати, але воно обчислювально витратніше.[6]

Тонке настроювання зазвичай виконують за допомогою керованого навчання, але існують також методики тонкого настроювання моделей за допомогою слабкого керування.[7] Тонке настроювання можливо поєднувати з ціллю на основі навчання з підкріпленням людським зворотним зв'язком[en] для створення мовних моделей, таких як ChatGPT (тонко настроєна версія GPT-3) та Sparrow[en].[8][9]

Стійкість[ред. | ред. код]

Тонке настроювання може погіршити стійкість моделі до змін розподілу.[10][11] Один зі способів запобігти цьому — лінійно інтерполювати ваги тонко настроєної моделі з вагами первинної моделі, що може значно підвищити продуктивність поза розподілом, при цьому здебільшого зберігаючи продуктивність у межах розподілу тонко настроєної моделі.[12]

Варіанти[ред. | ред. код]

Низькорангове адаптування[ред. | ред. код]

Низькорангове адаптування (НРА, англ. low-rank adaption, LoRA) — це методика на основі адаптерів для ефективного тонкого настроювання моделей. Основна ідея полягає в тому, щоби розробити низькорангову матрицю, відтак додавши її до первинної матриці.[13] «Адаптер» у цьому контексті — це набір низькорангових матриць, які при додаванні до базової моделі створюють тонко настроєну модель. Це дозволяє досягти продуктивності, яка наближається до тонкого настроювання повної моделі, з меншими вимогами до простору. Мовну модель з мільярдами параметрів можна тонко настроїти за допомогою НРА лише з декількома мільйонами параметрів.

Тонке настроювання на основі НРА стало популярним у спільноті Stable Diffusion.[14] Підтримку НРА вбудовують до бібліотеки Diffusers з Hugging Face.[15] Підтримка НРА та подібних методик також доступна для широкого спектра інших моделей за допомогою пакета Parameter-Efficient Fine-Tuning (PEFT) від Hugging Face.[16]

Застосування[ред. | ред. код]

Обробка природної мови[ред. | ред. код]

Тонке настроювання поширене в обробці природної мови (ОПМ), особливо в області моделювання мови. Великі мовні моделі, такі як низка моделей-основ GPT[en] від OpenAI, можливо тонко настроювати на даних для конкретних завдань ОПМ (завдань, які використовують попередньо натреновану модель) для покращення продуктивності порівняно з незміненою попередньо натренованою моделлю.[6]

Комерційні моделі[ред. | ред. код]

Комерційно пропоновані великі мовні моделі іноді можливо тонко настроювати, якщо постачальник пропонує відповідний ППІ. Станом на 19 червня 2023 року, ППІ для тонкого настроювання мовних моделей пропонують OpenAI та Azure OpenAI Service від Microsoft Azure для підмножини їхніх моделей, а також Google Cloud Platform для деяких їхніх моделей PaLM[en], та інші.[17][18][19] Не всі комерційні моделі на даний момент підтримують тонке настроювання.

Див. також[ред. | ред. код]

Примітки[ред. | ред. код]

  1. Quinn, Joanne (2020). Dive into deep learning: tools for engagement (англ.). Thousand Oaks, California. с. 551. ISBN 978-1-5443-6137-6. Архів оригіналу за 10 січня 2023. Процитовано 10 січня 2023.
  2. а б CS231n Convolutional Neural Networks for Visual Recognition. cs231n.github.io (англ.). Процитовано 9 March 2023.
  3. Liu, Haokun; Tam, Derek; Muqeeth, Mohammed; Mohta, Jay; Huang, Tenghao; Bansal, Mohit; Raffel, Colin A (2022). 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.
  4. Zeiler, Matthew D; Fergus, Rob (2013). Visualizing and Understanding Convolutional Networks (англ.). arXiv:1311.2901.
  5. Dodge, Jesse; Ilharco, Gabriel; Schwartz, Roy; Farhadi, Ali; Hajishirzi, Hannaneh; Smith, Noah (2020). Fine-Tuning Pretrained Language Models: Weight Initializations, Data Orders, and Early Stopping (англ.). arXiv:2002.06305.
  6. а б Dingliwal, Saket; Shenoy, Ashish; Bodapati, Sravan; Gandhe, Ankur; Gadde, Ravi Teja; Kirchhoff, Katrin (2021). Prompt Tuning GPT-2 language model for parameter-efficient domain adaptation of ASR systems (англ.). arXiv:2112.08718.
  7. Yu, Yue; Zuo, Simiao; Jiang, Haoming; Ren, Wendi; Zhao, Tuo; Zhang, Chao (2020). Fine-Tuning Pre-trained Language Model with Weak Supervision: A Contrastive-Regularized Self-Training Approach (англ.). arXiv:2010.07835.
  8. Introducing ChatGPT. openai.com (англ.). Процитовано 9 March 2023.
  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 (2022). Improving alignment of dialogue agents via targeted human judgements (англ.). arXiv:2209.14375.
  10. Radford, Alec; Kim, Jong Wook; Hallacy, Chris; Ramesh, Aditya; Goh, Gabriel; Agarwal, Sandhini; Sastry, Girish; Askell, Amanda; Mishkin, Pamela; Clark, Jack; Krueger, Gretchen; Sutskever, Ilya (2021). Learning Transferable Visual Models From Natural Language Supervision (англ.). arXiv:2103.00020 [cs.CV].
  11. Kumar, Ananya; Raghunathan, Aditi; Jones, Robbie; Ma, Tengyu; Liang, Percy (2022). Fine-Tuning can Distort Pretrained Features and Underperform Out-of-Distribution (англ.). arXiv:2202.10054.
  12. Wortsman, Mitchell; Ilharco, Gabriel; Kim, Jong Wook; Li, Mike; Kornblith, Simon; Roelofs, Rebecca; Gontijo-Lopes, Raphael; Hajishirzi, Hannaneh; Farhadi, Ali; Namkoong, Hongseok; Schmidt, Ludwig (2022). Robust fine-tuning of zero-shot models (англ.). arXiv:2109.01903 [cs.CV].
  13. Hu, Edward J.; Shen, Yelong; Wallis, Phillip; Allen-Zhu, Zeyuan; Li, Yuanzhi; Wang, Shean; Wang, Lu; Chen, Weizhu (28 січня 2022). LoRA: Low-Rank Adaptation of Large Language Models (англ.). arXiv:2106.09685.
  14. Ryu, Simo (13 лютого 2023). Using Low-rank adaptation to quickly fine-tune diffusion models. GitHub. Процитовано 19 червня 2023.
  15. Cuenca, Pedro; Paul, Sayak (26 січня 2023). Using LoRA for Efficient Stable Diffusion Fine-Tuning. Hugging Face (англ.). Процитовано 19 червня 2023.
  16. Parameter-Efficient Fine-Tuning using 🤗 PEFT. huggingface.co (англ.). Процитовано 20 червня 2023.
  17. Fine-tuning (англ.). OpenAI. Процитовано 19 червня 2023.
  18. Learn how to customize a model for your application (англ.). Microsoft. Процитовано 19 червня 2023.
  19. Tune text foundation models (англ.). Процитовано 19 червня 2023.