Gradient Descent For Machine Learning

Оновлено: 31.07.2023

При мінімізації функції градієнтний спуск використовує ітераційний рух у напрямку найкрутішого спуску, який визначається оберненим градієнтом. У машинному навчанні це називається градієнтним спуском і використовується для оновлення параметрів нашої моделі. Рівняння використовуються в лінійній регресії, тоді як нейронні мережі використовують параметри для опису ваг і коефіцієнтів рівнянь.

  • Градієнтний спуск - це алгоритм, який встановлює значення параметрів функції, що мінімізують функцію вартості.
.

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

Як оптимізувати градієнтний спуск

  • Співвідношення вартість/час - Для кожної ітерації збирайте і будуйте графік значень вартості, розрахованих алгоритмом. Кожна ітерація добре виконаного градієнтного спуску повинна призводити до зменшення вартості. Якщо вона не зменшується, подумайте про уповільнення швидкості навчання.
  • Міксуйте різні значення - Значення швидкості навчання - це невелике дійсне значення, наприклад, 0.1, 0.001 або 0.0001. Спробуйте різні значення для вашої задачі, щоб визначити, яке з них працює найкраще.
  • Вхідні дані - Якщо форма функції вартості не викривлена і не спотворена, алгоритм швидше досягне мінімальної вартості. Цього можна досягти, змінивши масштаб усіх вхідних змінних (X) до одного діапазону, наприклад, [-1, 1].
  • Проходи - Стохастичний градієнтний спуск потребує лише 1-10 проходів через навчальний набір даних для отримання хороших коефіцієнтів.
  • Шумний графік вартості - може бути отриманий за допомогою оновлень стохастичного градієнтного спуску для кожного примірника навчального набору даних. Щоб отримати кращу картину тенденції навчання алгоритму, усередніть 10, 100 або 1000 оновлень.
.

Тепер поговоримо про типи алгоритмів градієнтного спуску. При обчисленні градієнтів для кожного кроку навчання ключова відмінність полягає в тому, скільки даних ми використовуємо. Це компроміс між точністю градієнта та часовою складністю оновлення - кроком навчання.

Стохастичний градієнтний спуск (SGD)

Цей алгоритм машинного навчання градієнтного спуску оновлює параметри в кожному конкретному випадку, а не перебирає їх усі. В результаті навчання відбувається в кожній ситуації.

Він має багато з тих самих переваг і недоліків, що й варіант міні-серій.

Нижче перераховані ті, які є особливими для SGD:

  • Він вносить ще більше шуму у процес навчання, ніж міні-пакет, що сприяє зменшенню помилки узагальнення. Однак це збільшує час, необхідний для виконання завдання.
  • Ми не можемо використовувати векторизацію для більш ніж одного прикладу, тому що це занадто повільно. Крім того, оскільки ми використовуємо лише один приклад для кожної фази навчання, варіація значно зростає.
.

У порівнянні з міні-партією, напрямок SGD надзвичайно галасливий.

Градієнтний спуск з міні-розривом

Метод Mini-batch Gradient Descent підсумовує меншу кількість зразків, залежно від розміру партії, замість того, щоб перебирати їх усі. В результаті, кожна міні-партія дізнається щось нове.

Розмір партії - це змінна, яку ми можемо регулювати. Зазвичай це степінь двійки, наприклад, 128, 256, 512 і так далі. Це пов'язано з тим, що деяке обладнання, наприклад, графічні процесори, працюють швидше зі звичайними розмірами пакетів, наприклад, зі степенем 2.

Основні переваги полягають у наступному:

  • Оскільки він пропускає набагато менше прикладів, ніж Batch, він працює швидше (всі приклади).
  • Вибираючи приклади випадковим чином, ви можете уникнути необхідності мати справу з надлишковими або схожими прикладами, які нічого не додають до процесу навчання.
  • Навіть якщо стандартна похибка оцінки була б меншою, якби було більше прикладів, віддача не є лінійною, якщо порівнювати з обчислювальними витратами.
.

Багаторазовий градієнтний спуск

При виконанні коригування параметрів ми використовуємо Batch Gradient Descent, щоб підсумувати всі приклади на кожній ітерації. В результаті, після кожного оновлення ми повинні підсумовувати всі приклади.

  • Використання фіксованої швидкості навчання під час навчання усуває ризик спаду швидкості навчання.
  • Він прямує до мінімуму, і теоретично гарантовано збігається до глобального мінімуму, якщо функція втрат опукла, і до локального мінімуму, якщо функція втрат не опукла.
  • Він обчислює градієнти незміщеним чином. Чим менша стандартна похибка, тим більше прикладів є.
.

Машинне навчання включає в себе багато оптимізації.

  • Градієнтний спуск - це проста техніка оптимізації, яку можна застосовувати до різних методів машинного навчання.
.

Перед обчисленням оновлення пакетний градієнтний спуск обчислює похідну від усіх навчальних даних.

Обчислення похідної від кожного примірника навчальних даних і миттєве обчислення оновлення називається стохастичним градієнтним спуском.