- Термінологія (від A до D)
- Контроль можливостей ШІ
- AI Ops
- Альбументації
- Продуктивність активів
- Автокодер
- Зворотне поширення
- Теорема Байєса
- Великий даних
- Чат-бот: посібник для початківців
- Обчислювальне мислення
- Комп'ютерне бачення
- Матриця плутанини
- Конволюційні нейронні мережі
- Кібербезпека
- Data Fabric
- Розповідь даних
- наука даних
- Склад даних
- Дерево рішень
- Deepfakes
- Глибоке навчання
- Навчання глибокому підкріпленню
- devops
- DevSecOps
- Дифузійні моделі
- Digital Twin
- Зменшення розмірності
- Термінологія (E до K)
- Edge AI
- Емоція ШІ
- Навчання в ансамблі
- Етичний хакерство
- ETL
- Пояснюваний ШІ
- Федеративне навчання
- FinOps
- Генеративний ШІ
- Генеральна змагальна мережа
- Генеративне проти дискримінаційного
- Підвищення градієнта
- Градієнтний спуск
- Невелике навчання
- Класифікація зображень
- ІТ-операції (ITOPs)
- Автоматизація інцидентів
- Інженерія впливу
- Кластеризація K-середніх
- K-найближчі сусіди
- Термінологія (L до Q)
- Термінологія (R to Z)
- Навчання зміцненню
- Відповідальний ШІ
- RLHF
- Роботизована автоматизація процесів
- Структурований проти неструктурованого
- Аналіз почуттів
- Контрольований проти безконтрольного
- Підтримка векторних машин
- Синтетичні дані
- Синтетичні носії
- Класифікація тексту
- TinyML
- Трансферне навчання
- Трансформатор нейронних мереж
- тест Тьюринга
- Пошук векторної подібності
AI 101
Що таке градієнтний спуск?
Зміст
Що таке градієнтний спуск?
Якщо ви читали про те, як тренуються нейронні мережі, ви майже напевно раніше зустрічали термін «градієнтний спуск». Градієнтний спуск це основний метод оптимізації продуктивності нейронної мережі, зниження частоти втрат/помилок у мережі. Однак градієнтний спуск може бути трохи складним для розуміння тим, хто новачок у машинному навчанні, і ця стаття постарається дати вам гідне уявлення про те, як працює градієнтний спуск.
Градієнтний спуск - це алгоритм оптимізації. Він використовується для покращення продуктивності нейронної мережі шляхом налаштування параметрів мережі таким чином, щоб різниця між прогнозами мережі та фактичними/очікуваними значеннями мережі (що називаються втратою) була якомога меншою. Градієнтний спуск приймає початкові значення параметрів і використовує операції, засновані на численні, щоб налаштувати їх значення до значень, які зроблять мережу максимально точною. Вам не потрібно знати багато обчислень, щоб зрозуміти, як працює градієнтний спуск, але вам потрібно мати розуміння градієнтів.
Що таке градієнти?
Припустімо, що існує графік, який відображає кількість помилок, які робить нейронна мережа. Нижня частина графіка представляє точки з найменшою похибкою, а верхня частина графіка – це місце, де похибка є найвищою. Ми хочемо рухатися від верхньої частини графіка донизу. Градієнт — це лише спосіб кількісного визначення співвідношення між помилкою та вагами нейронної мережі. Зв'язок між цими двома речами можна позначити на графіку як нахил, а неправильні ваги створюють більше помилок. Крутизна схилу/градієнта показує, наскільки швидко модель навчається.
Більш крутий нахил означає значне зменшення помилок і модель швидко навчається, тоді як якщо нахил дорівнює нулю, модель знаходиться на плато і не навчається. Ми можемо рухатися вниз по схилу до меншої помилки, обчислюючи градієнт, напрямок руху (зміна параметрів мережі) для нашої моделі.
Давайте трохи змінимо метафору й уявимо серію пагорбів і долин. Ми хочемо дістатися до підніжжя пагорба та знайти ту частину долини, яка представляє найменші втрати. Коли ми починаємо з вершини пагорба, ми можемо робити великі кроки вниз з пагорба і бути впевненими, що прямуємо до найнижчої точки долини.
Однак, коли ми наближаємося до найнижчої точки в долині, наші кроки повинні ставати меншими, інакше ми можемо перевищити справжню найнижчу точку. Подібним чином можливо, що під час коригування ваг мережі коригування можуть фактично відвести її далі від точки найменших втрат, і тому коригування мають зменшуватися з часом. У контексті спуску з пагорба до точки найменших втрат градієнт — це вектор/інструкції, які детально описують шлях, яким ми маємо йти, і наскільки великими мають бути наші кроки.
Тепер ми знаємо, що градієнти — це інструкції, які вказують нам, у якому напрямку рухатися (які коефіцієнти слід оновити) і наскільки великі кроки ми маємо зробити (скільки коефіцієнти слід оновити), ми можемо дослідити, як обчислюється градієнт.
Обчислення градієнтів і градієнтного спуску
Щоб здійснити градієнтний спуск, градієнти спочатку повинні бути обчислені. В порядку для розрахунку градієнта, нам потрібно знати функцію втрати/вартість. Ми використаємо функцію витрат, щоб визначити похідну. У обчисленні похідна просто стосується нахилу функції в даній точці, тому ми просто обчислюємо нахил пагорба на основі функція втрат. Ми визначаємо втрати, пропускаючи коефіцієнти через функцію втрат. Якщо ми представляємо функцію збитків у вигляді «f», тоді можна стверджувати, що рівняння для обчислення збитків виглядає наступним чином (ми просто запускаємо коефіцієнти через вибрану нами функцію витрат):
Втрата = f(коефіцієнт)
Потім ми обчислюємо похідну або визначаємо нахил. Отримання похідної втрати вкаже нам, який напрямок є вгору чи вниз по схилу, даючи нам відповідний знак, за яким можна коригувати наші коефіцієнти. Ми представимо відповідний напрямок як «дельта».
дельта = похідна_функція (втрата)
Тепер ми визначили напрямок спуску до точки найменших втрат. Це означає, що ми можемо оновити коефіцієнти в параметрах нейронної мережі та, сподіваємось, зменшити втрати. Ми оновимо коефіцієнти на основі попередніх коефіцієнтів за мінусом відповідної зміни значення, визначеного напрямком (дельта) та аргументом, який контролює величину зміни (розмір нашого кроку). Аргумент, який керує розміром оновлення, називається «рівень навчання” і ми представимо його як “альфа”.
коефіцієнт = коефіцієнт – (альфа * дельта)
Потім ми просто повторюємо цей процес, доки мережа не зійдеться навколо точки найменших втрат, яка має бути близькою до нуля.
Дуже важливо вибрати правильне значення швидкості навчання (альфа). Вибраний темп навчання не повинен бути ні надто малим, ні надто великим. Пам’ятайте, що коли ми наближаємось до точки найменших втрат, наші кроки мають зменшуватися, інакше ми перевищимо справжню точку найменших втрат і опинимося на іншому боці. Точка найменшої втрати невелика, і якщо наша швидкість зміни надто велика, помилка може знову збільшитися. Якщо розміри кроків занадто великі, продуктивність мережі продовжуватиме стрибати навколо точки найменших втрат, перевищуючи її з одного боку, а потім з іншого. Якщо це станеться, мережа ніколи не зійдеться на справжню оптимальну конфігурацію ваги.
Навпаки, якщо швидкість навчання надто мала, мережі потенційно може знадобитися надзвичайно багато часу, щоб досягти оптимальних ваг.
Типи градієнтного спуску
Тепер, коли ми розуміємо, як взагалі працює градієнтний спуск, давайте подивимося на деякі відмінності види градієнтного спуску.
Пакетний градієнтний спуск: ця форма градієнтного спуску проходить через усі навчальні зразки перед оновленням коефіцієнтів. Цей тип градієнтного спуску, ймовірно, є найефективнішою з точки зору обчислень формою градієнтного спуску, оскільки ваги оновлюються лише після обробки всієї партії, тобто загальна кількість оновлень менша. Однак, якщо набір даних містить велику кількість навчальних прикладів, то пакетний градієнтний спуск може призвести до тривалого навчання.
Стохастичний градієнтний спуск: у стохастичному градієнтному спуску обробляється лише один навчальний приклад для кожної ітерації градієнтного спуску та оновлення параметрів. Це відбувається для кожного навчального прикладу. Оскільки перед оновленням параметрів обробляється лише один навчальний приклад, він має тенденцію збігатися швидше, ніж пакетний градієнтний спуск, оскільки оновлення виконуються раніше. Однак, оскільки цей процес потрібно виконувати для кожного елемента в навчальному наборі, його завершення може зайняти досить багато часу, якщо набір даних великий, тому, якщо бажано, використовуйте один із інших типів градієнтного спуску.
Міні-пакетний градієнтний спуск: Міні-пакетний градієнтний спуск працює шляхом поділу всього навчального набору даних на підрозділи. Він створює менші міні-серії, які запускаються через мережу, і коли міні-серії використовуються для обчислення помилки, коефіцієнти оновлюються. Міні-пакетний градієнтний спуск — це щось середнє між стохастичним градієнтним спуском і пакетним градієнтним спуском. Модель оновлюється частіше, ніж у випадку пакетного градієнтного спуску, що означає трохи швидшу та надійнішу конвергенцію щодо оптимальних параметрів моделі. Він також більш ефективний з точки зору обчислень, ніж стохастичний градієнтний спуск
Блогер і програміст зі спеціальностями в машинне навчання та Глибоке навчання теми. Деніел сподівається допомогти іншим використовувати силу ШІ для суспільного блага.
Вам може сподобатися
Глибоке навчання проти нейронних мереж
Нова нейрокомп’ютерна модель мозку може сприяти дослідженням ШІ
Команда розробляє підхід для порівняння нейронних мереж
Апаратна технологія ШІ імітує зміни в топології нейронної мережі
Біометрична автентифікація, скрегочучи зубами
Комп’ютерний компонент імітує синапси людського мозку