Объясните математические основы машинного обучения: почему градиентный спуск сходится к минимуму, какие существуют его варианты (SGD, Adam, LBFGS), и в каких задачах каждый вариант предпочтительнее; обсудите влияние скорости обучения, нормализации и инициализации весов
Кратко и по сути — основные математические идеи, варианты и практические рекомендации. 1) Постановка и почему градиентный спуск сходится - Задача: минимизировать функцию потерь L(θ) \;L(\theta)\;L(θ) по параметрам θ\thetaθ. - Градиентный шаг (базовый GD): θt+1=θt−η∇L(θt) \;\theta_{t+1}=\theta_t-\eta\nabla L(\theta_t)\;θt+1=θt−η∇L(θt), где η\etaη — скорость обучения. - В выпуклом и LLL-гладком случае (градиент липшицев): если η∈(0,2/L)\eta\in(0,2/L)η∈(0,2/L), то последовательность сходится к минимуму; при сильной выпуклости с параметром μ>0\mu>0μ>0 даётся линейная сходимость: ∥θt−θ∗∥≤(1−ημ)t∥θ0−θ∗∥ \;\|\theta_t-\theta^*\|\le(1-\eta\mu)^t\|\theta_0-\theta^*\|\;∥θt−θ∗∥≤(1−ημ)t∥θ0−θ∗∥. - В стохастическом/неконвексном случае: GD с шумными оценками градиента сходится к стационарным точкам при подходящих условиях на шаги; для SGD стандартное условие на шаги: ∑tηt=∞, ∑tηt2<∞\sum_t\eta_t=\infty,\ \sum_t\eta_t^2<\infty∑tηt=∞,∑tηt2<∞ (например ηt∝1/t\eta_t\propto 1/tηt∝1/t). Для неконвексных задач обычно гарантия — сходимость к точкам с нулевым градиентом в смысле средней нормы градиента. 2) Варианты оптимизаторов и когда их использовать - SGD (mini-batch) - Обновление: градиент считается на батче, шум обеспечивает стохастичность; можно добавить momentum: vt+1=βvt+(1−β)∇Lbatch, θt+1=θt−ηvt+1 \;v_{t+1}=\beta v_t+(1-\beta)\nabla L_{batch},\ \theta_{t+1}=\theta_t-\eta v_{t+1}\;vt+1=βvt+(1−β)∇Lbatch,θt+1=θt−ηvt+1. - Плюсы: прост, хорошо обобщает в больших нейросетях, масштабируется по данным. - Применение: обучение больших DNN на больших наборах; когда важна хорошая генерализация. - Adam (адаптивные моменты) - Формулы: mt=β1mt−1+(1−β1)gt, vt=β2vt−1+(1−β2)gt2 \;m_t=\beta_1 m_{t-1}+(1-\beta_1)g_t,\ v_t=\beta_2 v_{t-1}+(1-\beta_2)g_t^2\;mt=β1mt−1+(1−β1)gt,vt=β2vt−1+(1−β2)gt2, затем коррекция смещения и шаг m^t=mt/(1−β1t), v^t=vt/(1−β2t)\;\hat m_t=m_t/(1-\beta_1^t),\ \hat v_t=v_t/(1-\beta_2^t)m^t=mt/(1−β1t),v^t=vt/(1−β2t), θt+1=θt−ηm^tv^t+ε .\;\theta_{t+1}=\theta_t-\eta\frac{\hat m_t}{\sqrt{\hat v_t}+\varepsilon}\;.θt+1=θt−ηv^t+εm^t. - Плюсы: быстрое начальное сходимость, хорошо подходит для разреженных градиентов и разных масштабов признаков. - Минусы: возможные проблемы с сходимостью/обобщением в длительном обучении (правки: AMSGrad и др.). - Применение: быстрый прототипинг, задачи с редкими/разными по масштабу градиентами, трансформеры, когда хочется меньшей настройки lr. - L‑BFGS (квази-Ньютон) - Идея: аппроксимация обратного гессиана с хранением mmm векторов (малый объём памяти), использует детерминированный градиент (обычно full-batch). - Плюсы: быстрое и точное сходство для малых/средних задач и выпуклых или гладких неглубоких моделей. - Минусы: не масштабируется на очень большие датасеты, чувствителен к шуму в градиенте. - Применение: логистическая регрессия, малые нейросети, problems где можно вычислять полный градиент. 3) Влияние гиперпараметров и практики - Скорость обучения (η\etaη) - Слишком большая η\etaη → расходимость/колебания; слишком малая → медленная сходимость. - В выпуклом LLL-гладком случае верхняя граница: η<2/L\eta<2/Lη<2/L. - Практически: используют расписания (step decay, cosine annealing, warmup) и адаптивные методы. Для SGD с батчем размером BBB часто применяют правило линейного масштабирования: при увеличении батча пропорционально увеличивают η\etaη. - Нормализация (preprocessing и нормализация слоёв) - Нормировка входов (zero mean, unit variance) ускоряет сходимость и делает ландшафт потерь более изотропным. - BatchNorm: для активации xxx: x^=(x−μ)/σ2+ε, y=γx^+β \;\hat x=(x-\mu)/\sqrt{\sigma^2+\varepsilon},\ y=\gamma\hat x+\beta\;x^=(x−μ)/σ2+ε,y=γx^+β. Снижает внутреннее смещение распределений, делает оптимизацию стабильнее и позволяет брать большие η\etaη. Альтернативы: LayerNorm, GroupNorm (полезны при малых батчах). - Нормализация градиентов (gradient clipping) полезна при взрывных градиентах (RNN, большие lr). - Инициализация весов - Неправильная инициализация → затухающие/взрывные сигналы или симметрия (все нейроны одинаковы). - Xavier/Glorot для tanh/sigmoid: распределение с дисперсией Var=2fanin+fanout \;Var=\frac{2}{fan_{in}+fan_{out}}\;Var=fanin+fanout2. - He для ReLU: Var=2fanin \;Var=\frac{2}{fan_{in}}\;Var=fanin2. - Ортотопическая инициализация (orthogonal) также часто помогает при глубоких сетях. - Правильная инициализация совместно с нормализацией и подходящим η\etaη делает обучение стабильным. 4) Практические рекомендации (кратко) - Большие нейросети на больших данных: SGD/SGD+momentum с адекватным расписанием lr; Adam для быстрого обучения/прототипинга. - Мелкие/средние задачи или выпуклые/гладкие задачи: L‑BFGS или детерминированные методы. - Всегда: нормализуйте входы, используйте подходящую инициализацию (Xavier/He), следите за величиной градиента и подбирайте/шифтуйте lr (warmup, decay). Для адаптивных методов контролируйте weight decay отдельно (лучше L2 через параметры, а не через адаптивный множитель). - Если наблюдаете плохую генерализацию при Adam — попробуйте SGD с momentum и долгим снижением lr. Если нужно, могу привести короткие формулы для конкретных инициализаций и схем расписаний lr.
1) Постановка и почему градиентный спуск сходится
- Задача: минимизировать функцию потерь L(θ) \;L(\theta)\;L(θ) по параметрам θ\thetaθ.
- Градиентный шаг (базовый GD): θt+1=θt−η∇L(θt) \;\theta_{t+1}=\theta_t-\eta\nabla L(\theta_t)\;θt+1 =θt −η∇L(θt ), где η\etaη — скорость обучения.
- В выпуклом и LLL-гладком случае (градиент липшицев): если η∈(0,2/L)\eta\in(0,2/L)η∈(0,2/L), то последовательность сходится к минимуму; при сильной выпуклости с параметром μ>0\mu>0μ>0 даётся линейная сходимость: ∥θt−θ∗∥≤(1−ημ)t∥θ0−θ∗∥ \;\|\theta_t-\theta^*\|\le(1-\eta\mu)^t\|\theta_0-\theta^*\|\;∥θt −θ∗∥≤(1−ημ)t∥θ0 −θ∗∥.
- В стохастическом/неконвексном случае: GD с шумными оценками градиента сходится к стационарным точкам при подходящих условиях на шаги; для SGD стандартное условие на шаги: ∑tηt=∞, ∑tηt2<∞\sum_t\eta_t=\infty,\ \sum_t\eta_t^2<\infty∑t ηt =∞, ∑t ηt2 <∞ (например ηt∝1/t\eta_t\propto 1/tηt ∝1/t). Для неконвексных задач обычно гарантия — сходимость к точкам с нулевым градиентом в смысле средней нормы градиента.
2) Варианты оптимизаторов и когда их использовать
- SGD (mini-batch)
- Обновление: градиент считается на батче, шум обеспечивает стохастичность; можно добавить momentum: vt+1=βvt+(1−β)∇Lbatch, θt+1=θt−ηvt+1 \;v_{t+1}=\beta v_t+(1-\beta)\nabla L_{batch},\ \theta_{t+1}=\theta_t-\eta v_{t+1}\;vt+1 =βvt +(1−β)∇Lbatch , θt+1 =θt −ηvt+1 .
- Плюсы: прост, хорошо обобщает в больших нейросетях, масштабируется по данным.
- Применение: обучение больших DNN на больших наборах; когда важна хорошая генерализация.
- Adam (адаптивные моменты)
- Формулы: mt=β1mt−1+(1−β1)gt, vt=β2vt−1+(1−β2)gt2 \;m_t=\beta_1 m_{t-1}+(1-\beta_1)g_t,\ v_t=\beta_2 v_{t-1}+(1-\beta_2)g_t^2\;mt =β1 mt−1 +(1−β1 )gt , vt =β2 vt−1 +(1−β2 )gt2 , затем коррекция смещения и шаг
m^t=mt/(1−β1t), v^t=vt/(1−β2t)\;\hat m_t=m_t/(1-\beta_1^t),\ \hat v_t=v_t/(1-\beta_2^t)m^t =mt /(1−β1t ), v^t =vt /(1−β2t ),
θt+1=θt−ηm^tv^t+ε .\;\theta_{t+1}=\theta_t-\eta\frac{\hat m_t}{\sqrt{\hat v_t}+\varepsilon}\;.θt+1 =θt −ηv^t +εm^t .
- Плюсы: быстрое начальное сходимость, хорошо подходит для разреженных градиентов и разных масштабов признаков.
- Минусы: возможные проблемы с сходимостью/обобщением в длительном обучении (правки: AMSGrad и др.).
- Применение: быстрый прототипинг, задачи с редкими/разными по масштабу градиентами, трансформеры, когда хочется меньшей настройки lr.
- L‑BFGS (квази-Ньютон)
- Идея: аппроксимация обратного гессиана с хранением mmm векторов (малый объём памяти), использует детерминированный градиент (обычно full-batch).
- Плюсы: быстрое и точное сходство для малых/средних задач и выпуклых или гладких неглубоких моделей.
- Минусы: не масштабируется на очень большие датасеты, чувствителен к шуму в градиенте.
- Применение: логистическая регрессия, малые нейросети, problems где можно вычислять полный градиент.
3) Влияние гиперпараметров и практики
- Скорость обучения (η\etaη)
- Слишком большая η\etaη → расходимость/колебания; слишком малая → медленная сходимость.
- В выпуклом LLL-гладком случае верхняя граница: η<2/L\eta<2/Lη<2/L.
- Практически: используют расписания (step decay, cosine annealing, warmup) и адаптивные методы. Для SGD с батчем размером BBB часто применяют правило линейного масштабирования: при увеличении батча пропорционально увеличивают η\etaη.
- Нормализация (preprocessing и нормализация слоёв)
- Нормировка входов (zero mean, unit variance) ускоряет сходимость и делает ландшафт потерь более изотропным.
- BatchNorm: для активации xxx: x^=(x−μ)/σ2+ε, y=γx^+β \;\hat x=(x-\mu)/\sqrt{\sigma^2+\varepsilon},\ y=\gamma\hat x+\beta\;x^=(x−μ)/σ2+ε , y=γx^+β. Снижает внутреннее смещение распределений, делает оптимизацию стабильнее и позволяет брать большие η\etaη. Альтернативы: LayerNorm, GroupNorm (полезны при малых батчах).
- Нормализация градиентов (gradient clipping) полезна при взрывных градиентах (RNN, большие lr).
- Инициализация весов
- Неправильная инициализация → затухающие/взрывные сигналы или симметрия (все нейроны одинаковы).
- Xavier/Glorot для tanh/sigmoid: распределение с дисперсией Var=2fanin+fanout \;Var=\frac{2}{fan_{in}+fan_{out}}\;Var=fanin +fanout 2 .
- He для ReLU: Var=2fanin \;Var=\frac{2}{fan_{in}}\;Var=fanin 2 .
- Ортотопическая инициализация (orthogonal) также часто помогает при глубоких сетях.
- Правильная инициализация совместно с нормализацией и подходящим η\etaη делает обучение стабильным.
4) Практические рекомендации (кратко)
- Большие нейросети на больших данных: SGD/SGD+momentum с адекватным расписанием lr; Adam для быстрого обучения/прототипинга.
- Мелкие/средние задачи или выпуклые/гладкие задачи: L‑BFGS или детерминированные методы.
- Всегда: нормализуйте входы, используйте подходящую инициализацию (Xavier/He), следите за величиной градиента и подбирайте/шифтуйте lr (warmup, decay). Для адаптивных методов контролируйте weight decay отдельно (лучше L2 через параметры, а не через адаптивный множитель).
- Если наблюдаете плохую генерализацию при Adam — попробуйте SGD с momentum и долгим снижением lr.
Если нужно, могу привести короткие формулы для конкретных инициализаций и схем расписаний lr.