Динамика SGD и феномен “double descent”: от экспериментальной репликации к интерпретации через теорию динамических систем
Короткая мотивация
Классическая U-образная кривая обобщающей ошибки (задающая компромисс смещения–дисперсии, bias–variance) не объясняет наблюдаемую на практике картину: при росте вместимости модели машинного обучения ошибка на тесте может сначала уменьшаться, затем ухудшаться у интерполяционного порога, а после снова улучшаться — феномен Double Descent. Параллельно эксперименты с большими шагами обучения выявили характерные режимы динамики градиентных методов: катапультный (временный рост лосса с последующим снижением) и край устойчивости (отношение шага к наибольшему собственному значению Гессиана на границе устойчивости).
В этом работе необходимо рассматривать SGD как дискретную динамическую систему, воспроизвести кривые double descent в простых задачах и сопоставить их с фазовыми режимами обучения.
Постановка задачи (по пунктам)
- Обзор литературы (5–10 стр.).
- Определить и кратко объяснить: интерполяционный порог, double descent (по размеру модели, по числу эпох), благоприятное переобучение (benign overfitting), стохастическую интерпретацию SGD (как стационарного стохастического процесса), катапультный механизм и край устойчивости.
- Дать ссылки на первоисточники из списка литературы.
- Репликация double descent в линейной регрессии.
- a) Сгенерировать синтетические данные (гауссов шум). Построить модель линейной регрессии с числом признаков и числом наблюдений ; варьировать отношение так, чтобы пройти через интерполяционный порог.
- b) Реализовать два случая: (i) минимально-нормированная интерполяция (псевдообратная матрица, без регуляризации); (ii) гребневая регрессия (ridge) для сравнения.
- c) Построить зависимости ошибки на тесте от при фиксированном ; показать область повышенной ошибки у порога и последующее улучшение (double descent).
- Epoch-wise double descent на простой нейросети.
- a) Классификация на MNIST (или подмножество CIFAR-10); однослойный MLP/небольшой CNN.
- b) Зафиксировав размер модели, варьировать число эпох: построить кривую ошибки на тесте от числа эпох; продемонстрировать вторичное снижение после переподгонки (если наблюдается).
- SGD как дискретная динамическая система.
- a) Рассматривать итерации как отображение в пространстве параметров. Для нескольких значений шага и размера батча провести эксперименты и классифицировать режимы: стабильная сходимость, катапультный режим, разлёт.
- b) Оценить резкость (sharpness): приблизить наибольшую собственную величину Гессиана лосса методом степеней/Ланцоша (или через Гаусса–Ньютона). Проверить эмпирическое соотношение режима края устойчивости ( в полном батче).
- c) При фиксированной варьировать размер батча и оценить масштаб шума стохастического градиента (например, дисперсию мини-батч градиентов) и его связь с обобщением.
- Фазовая диаграмма.
- a) На сетке по построить карту режимов (цветами/маркерами), нанести уровни тестовой ошибки и отметить области, где наблюдается double descent по размеру модели или по эпохам.
- Аналитическое обсуждение.
- Сопоставить наблюдаемые кривые и фазовые режимы с механизмами из литературы (интерполяция и выбор минимально-нормированных решений, роль шума SGD как имплицитной регуляризации, катапультная динамика, край устойчивости).
- Критически обсудить ограничения и воспроизводимость.
- Требования к воспроизводимости и оформлению.
- Код на Python (NumPy/PyTorch), фиксированные сиды, сохранённые конфигурации и графики.
- Итоговый отчёт обязательно набран в LaTeX, включает рисунки, таблицы и краткие пояснения к экспериментам.
Ожидаемые результаты
- Кривые double descent для линейной (или random-features) регрессии и, по возможности, для небольшой нейросети.
- Демонстрация режимов динамики SGD (стабильность/катапульта/разлёт) при варьировании и оценка резкости.
- Связь наблюдений с теоретическими механизмами из источников (кратко и без излишней формализации).
Список литературы
- M. Belkin, D. Hsu, S. Ma, S. Mandal. Reconciling modern machine-learning practice and the classical bias–variance trade-off. PNAS, 116(32):15849–15854, 2019. URL.
- P. Nakkiran, G. Kaplun, Y. Bansal, T. Yang, B. Barak, I. Sutskever. Deep Double Descent: Where Bigger Models and More Data Hurt. arXiv:1912.02292, 2019 (доступна версия на OpenReview/ICLR). URL.
- P. L. Bartlett, P. M. Long, G. Lugosi, A. Tsigler. Benign overfitting in linear regression. PNAS, 117(48):30063–30070, 2020. URL.
- S. Mandt, M. D. Hoffman, D. M. Blei. Stochastic Gradient Descent as Approximate Bayesian Inference. JMLR, 18(134):1–35, 2017. URL.
- S. L. Smith, E. Elsen, S. De. On the Generalization Benefit of Noise in Stochastic Gradient Descent. arXiv:2006.15081, 2020. URL.
- A. Lewkowycz, Y. Bahri, E. Dyer, J. Sohl-Dickstein, G. Gur-Ari. The large learning rate phase of deep learning: the catapult mechanism. arXiv:2003.02218, 2020. URL.
- J. M. Cohen, S. Chaudhuri, S. M. Jelassi, N. Cohen, A. Shashua, S. S. Du. Gradient Descent on Neural Networks Typically Occurs at the Edge of Stability. arXiv:2103.00065, 2021. URL.
- M. S. Advani, A. M. Saxe. High-dimensional dynamics of generalization error in neural networks. arXiv:1710.03667, 2017. URL.
Приложение: подробные указания к пунктам
Репликация double descent в линейной регрессии (подробные шаги)
- a) Генерация данных и проход через интерполяционный порог
- i) Зафиксируйте размер обучающей выборки (напр., ) и стандарт отклика (напр., ).
- ii) Сгенерируйте дизайн-матрицу по схеме (масштаб стабилизирует спектр ).
- iii) Сгенерируйте истинный вектор параметров по одной из схем:
- (плотная)
- или (разреженная) кроме случайных координат.
- iv) Сгенерируйте шум и целевой вектор .
- v) Подготовьте независимую тестовую выборку аналогично, но с (напр., ).
- vi) Проведите серию экспериментов по (геометрическая/арифметическая сетка), проходя через интерполяционный порог .
- vii) Для статистической устойчивости используйте независимых сидов для каждой пары ; в каждом прогоне фиксируйте
float64, сиды ГСЧ и сохраняйте конфигурации.
- b) Два оценивателя
- минимально-нормированный и ридж (ridge)
- i) Минимально-нормированная интерполяция (без регуляризации). Оценка определяется как
- Эквивалентно, при используйте псевдообратную по Муру–Пенроузу:
- При это совпадает с МНК-решением (при невырожденности ).
- ii) Ридж-регрессия (для сравнения). Для положите
- Рекомендуется рассмотреть сетку и выбирать по отложенной валидации (или фиксировать одинаковую малую для всей серии, пояснив выбор).
- c) Графики и метрики
- i) Для каждого оценивателя и каждой пары вычисляйте тестовую MSE:
- ii) Агрегируйте по прогонам: показывайте медиану и межквартильный размах (IQR). На оси абсцисс — (или отношение ), на оси ординат — .
- iii) Явно отметьте вертикальной линией интерполяционный порог . Ожидается подъём ошибки около порога и улучшение при (double descent).
- iv) Для корректности сопроводите графики таблицей с медианной ошибкой до, у и после порога; отдельно покажите, как ридж сглаживает пик.
Epoch-wise double descent на простой нейросети (подробные шаги)
- a) Постановка эксперимента
- i) Датасет: MNIST (60k/10k) или подмножество CIFAR-10 (напр., по 10k/10k). Нормализация входов к или стандартизация по каналам.
- ii) Модель: однослойный MLP с шириной (напр., 2048) или минимальный CNN (2 свёрточных слоя + полносвязный). Выберите вместимость так, чтобы модель могла интерполировать обучающую выборку (обучающая ошибка близка к нулю).
- iii) Оптимизация: SGD (или SGD+momentum), фиксированная скорость обучения (без scheduler), батч-сайз . Регуляризацию (weight decay, dropout) отключить на базовом прогоне, чтобы не подавить эффект.
- iv) (Опционально) Для усиления эффекта разрешается добавить 5–10% шумных меток в train (сделать отдельную серию, обязательно чётко маркировать).
- b) Серии по числу эпох и съёмка кривых
- i) Зафиксировав архитектуру и , обучайте модели до большого числа эпох (напр., ), сохраняя после каждой эпохи: train loss/accuracy и test loss/accuracy.
- ii) Постройте кривые test error vs epochs. Для подавления шума используйте сглаживание (напр., экспоненциальное среднее с коэффициентом 0.9) и показывайте исходные точки.
- iii) Ищите немонотонность: типичная картина — первичное снижение ошибки, затем подъём (переподгонка), затем повторное снижение (epoch-wise double descent). Если эффект не проявился, повторите с большей (на границе устойчивости) или с шумными метками.
- iv) Для воспроизводимости выполните прогонов (разные сиды инициализации и перетасовки батчей) и покажите медиану/диапазон.
- c) Отчётность и воспроизводимость
- i) Все графики снабжайте подписями, указывайте , архитектуру, наличие/отсутствие label noise.
- ii) Код сопровождайте README с командами запуска и фиксируйте версии библиотек. Численные эксперименты выполнять в
float64, если позволяет память. - iii) Итоговый отчёт обязательно набрать в LaTeX: включить таблицу конфигураций, краткую сводку статистик (медиана/IQR), и раздел Ограничения и угрозы валидности (напр., чувствительность к сидовому шуму).
Ожидаемый результат
- Отчёт (PDF), набранный в LaTeX (20–30 страниц без приложений), содержащий:
- введение: определения (интерполяционный порог, double descent по размеру/по эпохам, benign overfitting, SGD как стационарный стохастический процесс, catapult/edge of stability);
- описание и результаты экспериментов:
- линейная регрессия: кривые vs (или ) с отметкой , статистика по сидами (медиана/IQR), сравнение с ridge;
- нейросеть: кривые test error vs epochs (включая случаи, когда вторичный спад проявляется/не проявляется), все гиперпараметры указаны;
- динамика SGD: классификация режимов (стабильность/катапульта/разлёт), оценка резкости и проверка соотношения (полный батч), влияние на шум/обобщение;
- фазовая диаграмма на сетке с наложением уровней тестовой ошибки и пометкой областей, где наблюдается double descent.
- аналитическое обсуждение: сопоставление наблюдений с механизмами из литературы + ограничения/воспроизводимость.
- Исходники отчёта:
.tex(+.bib, если используется biblatex), а также все рисунки/таблицы, использованные в PDF. - Репозиторий с кодом, обеспечивающий воспроизводимость:
requirements.txt(илиenvironment.yml);- единый скрипт запуска экспериментов
run_all.py(или эквивалентный); READMEс инструкцией запуска и указанием фиксированных seed;- сохранение результатов (графики, таблицы, конфиги) в отдельную папку (
results/илиout/).
- Приложение (в отчёте или отдельным файлом): дополнительные графики/таблицы (в т. ч. ablation’ы по , , label-noise) и/или листинги ключевых частей кода (оценка резкости, построение фазовой диаграммы).