Оптимизация
Градиентный спуск
Самый простой метод и его единственный параметр — с жёсткой границей, за которой он не работает
Правило
Что происходит при разных шагах
Возьмите первый ландшафт — круглую чашу — и подвигайте шаг. Кривизна там равна , то есть и порог устойчивости .
лосс, логарифмическая шкала
- f в конце
- 1.28e-7
- обусловленность κ
- 1
- порог 2/L
- 1
- сходится
Обусловленность равна 1 — идеальный случай. При шаге 0.5 = 1/L метод попадает в минимум за одну итерацию: множитель |1 − αL| обращается в нуль. Выше 0.5 начинаются колебания, при 1.0 они становятся вечными, выше — расходимость.
Четыре режима, которые стоит пройти на круглой чаше:
| шаг | что видно |
|---|---|
| плавно, но медленно: много итераций | |
| попадание в минимум за одну итерацию | |
| сходится, но траектория перескакивает через минимум | |
| вечные колебания, лосс не падает | |
| расходимость, лосс уходит в бесконечность |
Строка — та, которую полезно увидеть своими глазами: метод не «сходится плохо», он не сходится вообще, и при этом не расходится. Ровно на границе.
Как выбирают шаг на практике
Теоретический оптимум требует знать спектр гессиана, которого нет. Поэтому:
| подход | как работает | где применяют |
|---|---|---|
| подбор по сетке | пробуют | глубокое обучение |
| поиск максимального устойчивого | увеличивают, пока лосс не взорвётся, берут вдвое меньше | практическое правило |
| линейный поиск (Armijo) | уменьшают шаг, пока лосс не упадёт достаточно | классическая оптимизация |
| адаптивные методы | шаг свой у каждой координаты | Adam, урок 080 |
Линейный поиск в глубоком обучении почти не используют, и причина конкретная: он требует многократно вычислять лосс на одних и тех же данных, а в стохастическом режиме лосс на разных батчах разный, и условие Armijo теряет смысл.
Условие Armijo, кратко
Раз оно всё же встречается, стоит знать, что это. Ищем шаг, при котором убывание достаточно велико по сравнению с линейным предсказанием:
Правая часть — «столько, сколько обещала касательная, умноженное на ». Обычно , то есть требование очень слабое: получить хотя бы малую долю обещанного. Шаг уменьшают вдвое, пока условие не выполнится, — это и есть backtracking.
Чего градиентный спуск не умеет
Три ограничения, и все проявятся в следующих уроках:
- скорость определяется обусловленностью, а не шагом. Даже при идеально подобранном шаге число итераций пропорционально (урок 030). На вытянутой чаше метод зигзагует, и никакой этого не исправит;
- направление наискорейшего спуска не ведёт к минимуму. На втором ландшафте видно: градиент почти перпендикулярен нужному направлению почти всюду. «Наискорейший» — локальное свойство;
- на невыпуклой задаче гарантируется только . Куда именно сойдётся, зависит от старта.
Первое лечится моментом (урок 070) и предобусловливанием (уроки 080, 100), второе — теми же средствами, третье не лечится и принимается как факт.
Полный градиент против стохастического
И последнее, что делает всё сказанное почти неприменимым напрямую. Всё выше предполагает, что вычисляется точно, то есть по всей выборке. В обучении это невозможно: один шаг по миллиону примеров стоит столько же, сколько тысяча шагов по тысяче примеров, а полезной информации в нём немногим больше.
Поэтому реальный метод — стохастический, и его свойства другие: он не монотонен, не останавливается в точке, и шум в нём играет двоякую роль. Об этом следующий урок.
Источники
- Nocedal, Wright — Numerical Optimization, гл. 3 — Методы линейного поиска, условия Вольфе
- Nesterov — Introductory Lectures on Convex Optimization, гл. 2 — Оценки сходимости градиентного метода
Проверки
0 из 2Выбор шага
Отметьте все верные утверждения о градиентном спуске и его шаге.
Градиентный спуск на квадратике
Функция , так что и спектр гессиана равен .
Реализуйте
gd_quadratic(a, b, x0, y0, alpha, steps)— сделайтеstepsшагов градиентного спуска из и верните[x, y, f, verdict]:x,y— координаты после всех шагов;f— значение функции там же;verdict— код режима, определяемый множителем , где :2.0если (сходится),1.0если (вечные колебания),0.0если (расходимость). Единицу сравнивайте с допуском .
Обратите внимание, что
verdictсчитается по формуле, а не по тому, что получилось: за сорок шагов расходящаяся итерация может ещё не переполниться, но режим её уже определён.Проверить себя легко замкнутой формой: по каждой оси — оси независимы, потому что гессиан диагонален.
Загрузка редактора…
Ctrl/⌘ + Enter