Недавня стаття[1] недвозначно приписує розробку метода Герберту Роббінсу та Саттону Монро (англ.Sutton Monro), які описали його у статті 1951 року «Метод стохастичного наближення» (англ.A Stochastic Approximation Method).[2]
Позначимо через значення функції втрат на -му спостереженні. Тоді,
Для мінімізації використаємо метод градієнтного спуску. Це покроковий алгоритм, на кожній ітерації якого вектор змінюється в напрямку найбільшого спадання функціоналу (тобто в напрямку протилежному градієнту):
Існують такі підходи в реалізації градієнтного спуску:
Пакетний (batch), коли на кожній ітерації навчальна вибірка переглядається цілком, тільки після чого змінюється . Такий підхід потребує великих обчислювальних затрат та дуже добре надається при паралельних обчисленнях.
Стохастичний (stochastic/online), коли на кожній ітерації алгоритму з навчальної вибірки випадковим чином обирається лише один об'єкт. Таким чином вектор налаштовується кожен раз на новобраний об'єкт.
Алгоритм
Вхід:
— навчальна вибірка
— темп навчання
— параметр згладжування функціоналу
Вихід:
Вектор ваг
Тіло:
Ініціалізувати ваги , (, де — розмірність простору ознак);
Ініціалізувати поточну оцінку функціоналу:
;
Повторювати:
Вибрати об'єкт із (наприклад, випадковим чином);
Обчислити вихідне значення алгоритму та помилку:
;
Зробити крок градієнтного спуску:
;
Оцінити значення функціоналу:
;
Поки значення не стабілізується та/або ваги не припинять змінюватись.
Порядок вибору об'єктів
Вище сказано, що у випадку стохастичного градієнтного спуску об'єкти слід обирати випадковим чином. Однак існують евристики, що направлені на покращення збіжності, які дещо модифікують звичайний випадковий вибір:
Перемішування (shuffling). Пропонується випадково обирати об'єкти, але поперемінно з різних класів. Ідея в тому, що об'єкти з різних класів скоріше за все менш «схожі», ніж об'єкти з одного класу, тому вектор буде кожного разу змінюватись сильніше.
Можливий варіант алгоритму, коли вибір кожного об'єкта нерівноймовірний, при чому ймовірність випадення об'єкта обернено пропорційна величині помилки на об'єкті. Слід зауважити, що за такої евристики метод стає дуже чутливим до шумів.
Способи ініціалізації ваг
Ініціалізувати вектор нулями. Цей спосіб використовується в багатьох системах, але не завжди є найкращим.
Ще один підхід полягає в тому, щоб вирішити вихідну задачу оптимізації у випадку статистично незалежних ознак, лінійної функції активації () та квадратичної функції втрат (). Тоді рішення має вигляд:
.
Параметр згладжування
В алгоритмі для оцінки функціоналу на кожній ітерації використовується його наближене значення за методом експоненціального згладжування, звідки краще брати порядку . Якщо довжина вибірки надмірно велика, то слід збільшувати.
Деякі окремі випадки алгоритму
Метод стохастичного градієнта (за відповідного вибору функцій активації та втрат) є узагальненням таких широко розповсюджених евристик підбору та алгоритмів класифікації:
Метод пристосований для динамічного (online) навчання, коли навчальні об'єкти надходять потоком, та потрібно швидко оновлювати вектор .
Алгоритм здатен навчатись на надмірно великих вибірках за рахунок того, що випадкової підвибірки може вистачати для навчання.
Можливі різноманітні стратегії навчання. Якщо вибірка надмірно велика, або навчання відбувається динамічно, то є допустимим не зберігати навчальні об'єкти. Якщо вибірка маленька, то можна повторно подавати для навчання ті самі об'єкти.
Недоліки та способи боротьби з ними
Алгоритм може не збігатись або збігатись занадто повільно (див. «Збіжність алгоритму».)
Як правило, функціонал має багато екстремумів та процес градієнтного спуску може «застрягти» на одному із локальних мінімумів. Для боротьби з цим використовують техніку струшування коефіцієнтів (англ.jog of weights). Вона полягає у тому, що при кожній стабілізації функціонала робити випадкові модифікації вектора в достатньо широкому околі поточного значення та запускати процес градієнтного спуску з нових точок.
За великої розмірності простору ознак та/або малої довжини вибірки можливе перенавчання, тобто класифікація стає нестійкою, і ймовірність помилки збільшується. При цьому сильно виростає норма вектора ваг. Для боротьби з цим недоліком використовують регуляризацію Тихонова. Він полягає в тому, щоб обмежити можливий ріст норми , додавши до штрафний доданок:
.
В результаті правило обновлення ваг приймає вигляд:
.
Якщо функція активації має горизонтальні асимптоти, то процес може потрапити в стан «паралічу». За великих значень скалярного добутку значення стає близьким до нуля і вектор перестає суттєво змінюватися. Тому звичною практикою є попередня нормалізація ознак:
, де — відповідно мінімальне та максимальне відхилення j-ї ознаки. Якщо при цьому , то
Відзначимо, що регуляризація також є способом попередження «паралічу».
Збіжність алгоритму
Як вже було сказано, збіжність в загальному випадку не гарантується, але встановлено, що у випадку опуклої функції та при виконанні таких трьох умов:
;
;
процес градієнтного спуску буде збіжним. Наприклад, можна закласти: . Проте, як свідчить практика, це не дуже вдалий спосіб.
Примітки
↑Mei, Song (2018). A mean field view of the landscape of two-layer neural networks. Proceedings of the National Academy of Sciences. doi:10.1073/pnas.1806579115.
В іншому мовному розділі є повніша стаття Stochastic gradient descent(англ.). Ви можете допомогти, розширивши поточну статтю за допомогою перекладу з англійської. (серпень 2022)
Перекладач повинен розуміти, що відповідальність за кінцевий вміст статті у Вікіпедії несе саме автор редагувань. Онлайн-переклад надається лише як корисний інструмент перегляду вмісту зрозумілою мовою. Не використовуйте невичитаний і невідкоригований машинний переклад у статтях української Вікіпедії!
Машинний переклад Google є корисною відправною точкою для перекладу, але перекладачам необхідно виправляти помилки та підтверджувати точність перекладу, а не просто скопіювати машинний переклад до української Вікіпедії.
Не перекладайте текст, який видається недостовірним або неякісним. Якщо можливо, перевірте текст за посиланнями, поданими в іншомовній статті.