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, щоб підсумувати всі приклади на кожній ітерації. В результаті, після кожного оновлення ми повинні підсумовувати всі приклади.
- Використання фіксованої швидкості навчання під час навчання усуває ризик спаду швидкості навчання.
- Він прямує до мінімуму, і теоретично гарантовано збігається до глобального мінімуму, якщо функція втрат опукла, і до локального мінімуму, якщо функція втрат не опукла.
- Він обчислює градієнти незміщеним чином. Чим менша стандартна похибка, тим більше прикладів є.
Машинне навчання включає в себе багато оптимізації.
- Градієнтний спуск - це проста техніка оптимізації, яку можна застосовувати до різних методів машинного навчання.
Перед обчисленням оновлення пакетний градієнтний спуск обчислює похідну від усіх навчальних даних.
Обчислення похідної від кожного примірника навчальних даних і миттєве обчислення оновлення називається стохастичним градієнтним спуском.