TwiddleLab / Искусственный интеллект / Внутри глубокого обучения
Шаги поумнее: инерция и Adam
Что ты узнаешь
- В узкой долине простой градиентный спуск идёт зигзагом: шаг, достаточный для дна, слишком велик для стенок.
- Инерция хранит скорость: v = β × v + наклон, потом сдвиг на lr × v. Согласные толчки складываются, туда-обратно гасятся.
- Adam даёт каждой ручке свой размер шага. Такие правила называют оптимизаторами.
Как идёт урок
Скатываясь по узкой долине, простой градиентный спуск мечется зигзагом от стенки к стенке. Что сделал бы настоящий шарик иначе?
Сначала ставка на простой спуск.
Найди самый большой размер шага, при котором шарик всё ещё успокаивается.
Большие шаги быстрее двигаются по дну. Смотри на стенки.
Дай шарику инерцию: дойди до дна не больше чем за 30 шагов.
Размер шага закреплён на маленьком 0,02. β это то, сколько скорости шарик сохраняет от шага к шагу.
Устрой гонку трёх правил обновления по одной долине.
Простой спуск, инерция и Adam, каждый с хорошей настройкой.
Инерция, Adam, оптимизаторы.
Большинство настоящих сетей обучают с Adam или его близким родственником.
β = 0.9. Скорость 2, новый наклон 1. Какая новая скорость?
v = β × v + g = 0.9 × 2 + 1 = 2.8. Большая часть старой скорости остаётся, а новый наклон к ней прибавляется.
Перед настоящим дном есть маленькая ямка. Выбери β, которое её проскочит.
Мало скорости, и шарик застрянет. Слишком много, и он перепрыгнет забор.
Код: напиши обновление инерции.
Заполни два пропуска в цикле обучения, потом «Проверить», чтобы запустить.
Три оптимизатора спускались по этой долине. Какой путь у инерции?
A мечется зигзагом от стенки к стенке: простой спуск. B проносится мимо середины и заворачивает обратно: инерция. C идёт вниз с похожими шагами в обе стороны: Adam.
Запусти свой код со своим β.
На ямке и в долине.
Предыдущий урок: Мини-батчи и шум · Следующий урок: Боремся с переобучением · Часть курса: Внутри глубокого обучения
Уроки интерактивные и работают на JavaScript. Включи его, чтобы играть.