Оптимизация
Практика: оптимизаторы с нуля
Написать GD, момент и Adam, увидеть обусловленность своими глазами и измерить batch size
Блок в одной формуле
Всё, что было, сводится к одному числу и способам от него не зависеть.
| средство | что делает с | цена |
|---|---|---|
| подбор шага | ничего | — |
| момент | в оценке | памяти |
| Adam | уменьшает эффективную по диагонали | памяти |
| Ньютон | делает | |
| стандартизация | уменьшает саму | почти бесплатно |
| нормализация слоёв | то же, внутри сети | небольшая |
Две последние строки — почему блок заканчивается не оптимизаторами, а нормализацией.
Что реализовать
1. Четыре оптимизатора, один интерфейс
Напишите функцию, принимающую градиент и состояние, для каждого из: GD, момент, Нестеров, Adam. Все четыре умещаются в двадцать строк, если состояние передавать явно.
Проверки, которые обязаны сойтись:
- GD на : после шагов точно. Сравните с замкнутой формой, а не «на глаз»;
- Adam из нулевого состояния: при любом ненулевом постоянном градиенте первый шаг равен с точностью до . Если получилось — забыта коррекция ; если — забыта коррекция ;
- момент при обязан совпадать с GD побитово.
2. Плохо обусловленная квадратика
Возьмите и проверьте четыре предсказания блока:
| что проверить | ожидание |
|---|---|
| порог устойчивости GD | расходимость строго при |
| при ровно | вечные колебания, лосс не падает |
| число шагов GD до | |
| момент с | в раз меньше шагов |
Для последние две строки дают и — сверьтесь. И проверьте формулу : при это , а не привычные .
3. Batch size и learning rate
Соберите игрушечную стохастическую задачу: с разбросанными . Тогда шум градиента известен точно, и можно проверить:
- дисперсия градиента по батчу равна — измерьте на ;
- при постоянном шаге итерат не сходится, а гуляет с дисперсией . Измерьте после отбрасывания первых итераций;
- правило сохраняет уровень шума. Проверьте на четырёх парах и найдите, где оно начинает ломаться — это происходит, когда подходит к .
Третий пункт — самый содержательный, потому что даёт «критический размер батча» не как эмпирическое наблюдение, а как следствие формулы.
4. Траектория на 2D-ландшафте
Нарисуйте линии уровня и путь каждого оптимизатора. Обязательный набор картинок:
- круглая чаша — GD попадает за один шаг при , момент перелетает;
- вытянутая чаша — GD зигзагует, момент идёт почти прямо;
- повёрнутая вытянутая чаша — Adam теряет преимущество, потому что диагональ не видит поворота;
- банан Розенброка — ни один параметр не хорош на всём пути.
Третья картинка — самая полезная и чаще всего пропускаемая. Сравните две матрицы Гессе: и . Спектр у них один и тот же, а диагонали совершенно разные — вот и вся разница между полным и диагональным предобусловливанием.
лосс, логарифмическая шкала
- f в конце
- 1.12e-3
- обусловленность κ
- 1
- порог 2/L
- 2
- сходится
Эталон: κ = 1. Поставьте α = 1 и убедитесь, что GD попадает в минимум за одну итерацию, а момент проскакивает.
5. Нормализация как предобусловливание
Самое короткое и самое убедительное упражнение блока:
- возьмите линейную регрессию на данных, где один признак имеет масштаб ;
- посчитайте матрицы — получится около ;
- обучите градиентным спуском, логируя лосс. Он будет ползти;
- стандартизуйте признаки, пересчитайте — упадёт до десятков;
- обучите снова тем же методом и тем же шагом.
Разница в скорости будет на порядки, при том что оптимизатор не менялся. Это и есть главный вывод блока, полученный своими руками.
Что должно сойтись
| проверка | ожидание |
|---|---|
| GD на квадратике против замкнутой формы | совпадение до |
| порог расходимости | ровно , не «примерно» |
| момент при против GD | побитово одинаково |
| первый шаг Adam из нуля | с точностью |
| дисперсия градиента по батчу | в пределах шума измерения |
| до и после стандартизации | разница в – раз |
И одна вещь, которая сойтись не должна: не пытайтесь получить теоретические и в реальном обучении. Они требуют знать и , которых нет. Формулы нужны, чтобы понимать порядок величин и то, откуда берутся привычные значения — а не чтобы их подставлять.
Источники
- Goh — Why Momentum Really Works — Спектральный разбор момента, полезно воспроизвести
- Shallue и др. — Measuring the Effects of Data Parallelism on Neural Network Training — Критический размер батча, эмпирически
Проверки
0 из 2Блок целиком
Отметьте все верные утверждения, связывающие уроки блока.
Спуск против момента на квадратике
Функция , старт всегда из . Обе реализации — тяжёлый шарик в форме
при это в точности обычный спуск.
Реализуйте
optimiser_compare(kappa, alpha, beta, steps)— верните[gd_loss, momentum_loss, gd_stable, momentum_better]:gd_loss— значение послеstepsшагов при ;momentum_loss— то же при переданномbeta;- если итерация улетела (значение не конечно или координата превысила ),
верните для этого прогона
Infinity; gd_stable=1.0, если (порог обычного спуска), иначе0.0;momentum_better=1.0, еслиmomentum_loss < gd_loss, иначе0.0.
Обязательная проверка, которая должна выполняться побитово: при
beta = 0два первых числа обязаны совпасть. Если не совпали — в реализации момента лишний множитель.Загрузка редактора…
Ctrl/⌘ + Enter