Чим відрізняється градієнтний спуск від стохастичного градієнтного спуску?


Відповіді:


28

Швидке просте пояснення:

І в градієнтному спуску (GD), і в стохастичному градієнтному спуску (SGD) ви оновляєте набір параметрів ітераційним способом, щоб мінімізувати функцію помилок.

Перебуваючи в GD, вам доведеться пропустити ВСІ зразки у вашому навчальному наборі, щоб зробити одне оновлення для параметра в певній ітерації, в SGD, з іншого боку, ви використовуєте ТІЛЬКИЙ ОДИН або ПІДПРИКЛАД навчального зразка зі свого навчального набору зробити оновлення для параметра в певній ітерації. Якщо ви використовуєте SUBSET, він називається міні-партія стохастичного градієнта спуску.

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

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

Якщо вам потрібен приклад цього з практичним випадком, перегляньте тут замітки Ендрю НГ, де він чітко показує вам кроки, пов'язані з обома справами. cs229-примітки

Джерело: Нитка Quora


спасибі, коротко як це? Існує три варіанти градієнтного спуску: Пакетний, Стохастичний і Міні-Пакет: Пакет оновляє ваги після того, як всі тренувальні зразки були оцінені. Стохастичні, ваги оновлюються після кожного тренувального зразка. Minibatch поєднує в собі все найкраще з обох світів. Ми не використовуємо повний набір даних, але не використовуємо єдину точку даних. Ми використовуємо випадково вибраний набір даних з нашого набору даних. Таким чином ми зменшуємо розрахункові витрати і досягаємо меншої дисперсії, ніж стохастична версія.
Розробник

5

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

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

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

крива галасливих втрат

Ми чітко бачимо, що збитки зменшуються з часом, однак є великі зміни від епохи до епохи (тренувальна партія до тренувальної партії), тому крива шумна.

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


спасибі, коротко як це? Існує три варіанти градієнтного спуску: Пакетний, Стохастичний і Міні-Пакет: Пакет оновляє ваги після того, як всі тренувальні зразки були оцінені. Стохастичні, ваги оновлюються після кожного тренувального зразка. Minibatch поєднує в собі все найкраще з обох світів. Ми не використовуємо повний набір даних, але не використовуємо єдину точку даних. Ми використовуємо випадково вибраний набір даних з нашого набору даних. Таким чином ми зменшуємо розрахункові витрати і досягаємо меншої дисперсії, ніж стохастична версія.
Розробник

Nn=1

tks, це зрозуміло!
datdinhquoc

5

У Gradient Descent або Batch Gradient Descent ми використовуємо цілі навчальні дані за одну епоху, тоді як у Stochastic Gradient Descent ми використовуємо лише один приклад тренувань за епоху, а Mini-batch Gradient Descent лежить між цими двома крайнощами, в яких ми можемо використовувати міні-пакет (невелика частина) навчальних даних за кожну епоху, правило вибору розміру міні-партії має потужність 2, як 32, 64, 128 тощо.
Детальніше: cs231n конспект лекції


спасибі, коротко як це? Існує три варіанти градієнтного спуску: Пакетний, Стохастичний і Міні-Пакет: Пакет оновляє ваги після того, як всі тренувальні зразки були оцінені. Стохастичні, ваги оновлюються після кожного тренувального зразка. Minibatch поєднує в собі все найкраще з обох світів. Ми не використовуємо повний набір даних, але не використовуємо єдину точку даних. Ми використовуємо випадково вибраний набір даних з нашого набору даних. Таким чином ми зменшуємо розрахункові витрати і досягаємо меншої дисперсії, ніж стохастична версія.
Розробник
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.