Темп навчання

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

У машинному навчанні те́мп навча́ння (англ. learning rate) або коефіціє́нт шви́дкості навча́ння — це гіперпараметр алгоритму оптимізації, який задає розмір кроку на кожній ітерації пошуку мінімуму функції втрат.[1] Оскільки він визначає те, якою мірою нова отримана інформація замінює попередню інформацію, він образно представляє швидкість, з якою модель машинного навчання «навчається». У літературі з адаптивного керування швидкість навчання зазвичай називають коефіціє́нтом підси́лення (англ. gain).[2]

При встановленні темпу навчання існує проблема компромісу між швидкістю збіжності та перестрибуванням мінімуму. В той час як напрямок спуску[en] зазвичай отримується з градієнта функції втрат, коефіцієнт швидкості навчання визначає, наскільки великий крок буде зроблено в цьому напрямку. Занадто високий темп навчання змусить алгоритм перестрибнути через мінімум, а навчання з занадто низьким коефіцієнтом або займе занадто багато часу, або застрягне у небажаному локальному мінімумі.[3]

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

Мініпакетна підвибірка (МППВ, англ. mini-batch sub-sampling, MBSS) під час лінійного пошуку торкається характеристик функцій втрат, за якими необхідно визначати темп навчання.[8] Статична МППВ утримує мініпакет незмінним уздовж напрямку пошуку, що призводить до плавності функції втрат уздовж напрямку пошуку. Динамічна МППВ уточнює мініпакет на кожному обчисленні функції, що призводить до поточкової розривності функції втрат уздовж напрямку пошуку. До видів лінійного пошуку, які адаптивно встановлюють темп навчання для функцій втрат статичної МППВ, належить параболічно наближувальний лінійний (ПНЛ, англ. parabolic approximation line, PAL) пошук.[9] До видів лінійного пошуку, які адаптивно встановлюють темп навчання для функцій втрат динамічної МППВ, належать імовірнісні види лінійного пошуку,[10] виключно градієнтні види лінійного пошуку (англ. gradient-only line searches, GOLS)[11] та квадратичні наближення.[12]

Графік темпу навчання[ред. | ред. код]

Початковий коефіцієнт можна залишити за замовчуванням або вибрати за допомогою низки методів.[13] Графік темпу навчання змінює коефіцієнт швидкості навчання під час навчання і найчастіше оновлюється між епохами/ітераціями. В основному це робиться з двома параметрами: загасанням та імпульсом. Існує багато різних графіків швидкості навчання, але найпоширенішими є часові, покрокові та експоненційні.[4]

Загасання (англ. decay) — це гіперпараметр, що служить для того, щоб уникнути гойдань — ситуації, яка може виникнути, коли занадто високий постійний темп навчання змушує алгоритм перестрибувати вперед і назад через мінімум.

Імпульс (англ. momentum) аналогічний кулі, що котиться з пагорба, якщо ми хочемо, щоб м'яч опустився в найнижчу точку пагорба (відповідає найменшій похибці). Імпульс прискорює навчання (збільшуючи коефіцієнт швидкості), коли градієнт функції втрат рухається в одному напрямку протягом тривалого часу, а також уникає локальних мінімумів, «перекочуючись» через невеликі нерівності. Імпульс контролюється гіперпараметром, аналогічним масі м'яча, який потрібно підібрати вручну — занадто висока, і м'яч перекотиться через мінімуми, які ми хочемо знайти, занадто низька, і він не допоможе оптимізувати пошук. Формула для вибору імпульсу є складнішою, ніж для загасання, але найчастіше вбудована в бібліотеки глибинного навчання, такі як Keras.

Часовий (англ. time-based) графік темпу навчання змінює коефіцієнт швидкості навчання залежно від темпу навчання на попередньому проміжку часу. З урахуванням загасання, формула темпу навчання в наступному проміжку часу виглядає так:

де  — це коефіцієнт швидкості навчання, є параметром загасання, а  — це номер кроку.

Кроковий (англ. step-based) графік темпу навчання змінює темп навчання відповідно до деяких попередньо визначених кроків. Формула з урахуванням загасання визначається як:

де  — темп навчання на ітерації ,  — початковий темп навчання,  — це наскільки темп навчання повинен змінюватися на кожному кроці, а відповідає швидкості зменшення або тому, як часто слід скидати швидкість (10 відповідає падінню кожні 10 кроків). Функція floor () округлює всі значення менші за 1 до 0.

Експоненційний (англ. exponential) графік темпу навчання схожий на покроковий, але замість кроків використовується експоненційно спадна функція. Формула експоненційного графіка виглядає як:

де є параметром загасання.

Адаптивний темп навчання[ред. | ред. код]

Проблема з графіками темпу навчання полягає в тому, що всі вони залежать від гіперпараметрів, які потрібно обирати вручну для кожного конкретного сеансу навчання, і вони можуть сильно відрізнятися залежно від задачі або використовуваної моделі. Для подолання цієї проблеми існує багато різних адаптивних алгоритмів градієнтного спуску, таких як Adagrad[en], Adadelta, RMSProp[en] та Adam[en][14], які зазвичай вбудовуються в бібліотеки глибинного навчання, такі як Keras.[15]

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

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

  1. Murphy, Kevin P. (2012). Machine Learning: A Probabilistic Perspective. Cambridge: MIT Press. с. 247. ISBN 978-0-262-01802-9.  (англ.)
  2. Delyon, Bernard (2000). Stochastic Approximation with Decreasing Gain: Convergence and Asymptotic Theory. Unpublished Lecture Notes (Université de Rennes).  Проігноровано невідомий параметр |citeseerx= (довідка) (англ.)
  3. Buduma, Nikhil; Locascio, Nicholas (2017). Fundamentals of Deep Learning : Designing Next-Generation Machine Intelligence Algorithms. O'Reilly. с. 21. ISBN 978-1-4919-2558-4.  (англ.)
  4. а б Patterson, Josh; Gibson, Adam (2017). Understanding Learning Rates. Deep Learning : A Practitioner's Approach. O'Reilly. с. 258–263. ISBN 978-1-4919-1425-0.  (англ.)
  5. Ruder, Sebastian (2017). «An Overview of Gradient Descent Optimization Algorithms». arXiv:1609.04747. 
  6. Nesterov, Y. (2004). Introductory Lectures on Convex Optimization: A Basic Course. Boston: Kluwer. с. 25. ISBN 1-4020-7553-7.  (англ.)
  7. Dixon, L. C. W. (1972). The Choice of Step Length, a Crucial Factor in the Performance of Variable Metric Algorithms. Numerical Methods for Non-linear Optimization. London: Academic Press. с. 149–170. ISBN 0-12-455650-7.  (англ.)
  8. An empirical study into finding optima in stochastic optimization of neural networks // Information Sciences. — 2021. — Т. 560 (25 березня). — С. 235-255. — arXiv:1903.08552. (англ.)
  9. Mutschler, Maximus; Zell, Andreas (2019). «Parabolic Approximation Line Search for DNNs». arXiv:1903.11991.  (англ.)
  10. Mahsereci, Maren; Hennig, Phillip (2016). «Probabilistic Line Searches for Stochastic Optimization». arXiv:1502.02846v4.  (англ.)
  11. Resolving learning rates adaptively by locating stochastic non-negative associated gradient projection points using line searches // Journal of Global Optimization. — 2021. — Т. 79 (25 березня). — С. 111-152. — arXiv:2001.05113. (англ.)
  12. Chae, Younghwan; Wilke, Daniel N. (2019). «Empirical study towards understanding line search approximations for training neural networks». arXiv:1909.06893.  (англ.)
  13. Smith, Leslie N. (4 квітня 2017). «Cyclical Learning Rates for Training Neural Networks». arXiv:1506.01186 [cs.CV].  (англ.)
  14. Murphy, Kevin (2021). Probabilistic Machine Learning: An Introduction. MIT Press. Процитовано 10 квітня 2021.  (англ.)
  15. Brownlee, Jason (22 січня 2019). How to Configure the Learning Rate When Training Deep Learning Neural Networks. Machine Learning Mastery. Процитовано 4 січня 2021.  (англ.)

Література[ред. | ред. код]

Посилання[ред. | ред. код]

  • de Freitas, Nando (12 лютого 2015). Optimization. Deep Learning Lecture 6. University of Oxford — через YouTube.  (англ.)