Cheatsheet

Выпуклый анализ и оптимизацияall topics on one page

4 modules
12 articles
1 definitions
3 formulas
Contents
1

Выпуклые множества и функции

Основные понятия выпуклого анализа: выпуклые множества, функции и их свойства

Выпуклые множества: свойства и операции

Почему выпуклость важна? → Определение выпуклого множества → Классические примеры выпуклых множеств → Операции, сохраняющие выпуклость → Теорема разделяющей гиперплоскости → Проекция на выпуклое множество → Полный разбор примера → Реальные приложения

  • aᵀx ≤ b для всех x ∈ C₁
  • aᵀx ≥ b для всех x ∈ C₂

Представьте, что вы ищете дорогу в горах. Если местность выпуклая (нет впадин и карманов), любая тропа без тупиков приведёт вас к единственной самой низкой точке. Именно эта идея лежит в основе выпуклого анализа: задачи оптимизации на выпуклых множествах имеют единственный глобальный минимум, и е...

Множество C ⊆ ℝⁿ называется выпуклым, если для любых двух точек x, y ∈ C и любого числа θ ∈ [0,1] выполняется:

Что это означает словами? Возьмите любые две точки множества. Соедините их отрезком. Если весь этот отрезок целиком лежит внутри множества — оно выпуклое. Параметр θ «пробегает» от 0 до 1, описывая все точки между x и y: при θ=1 получаем x, при θ=0 — y, при θ=0.5 — середину отрезка.

Геометрический тест: нарисуйте фигуру. Если можно найти две точки внутри неё, соединённые отрезком, частично выходящим за границу — фигура невыпуклая. Буква «C» — невыпуклая. Круг, квадрат, треугольник — выпуклые.

Выпуклые функции: определения и критерии

Зачем изучать выпуклые функции? → Определение выпуклой функции → Примеры выпуклых функций → Критерии выпуклости → Подуровневые множества и надграфик → Операции, сохраняющие выпуклость → Полный разбор примера → Применения

  • f(x) = x² — выпуклая (парабола «смотрит вверх»)
  • f(x) = eˣ — выпуклая (экспонента)
  • f(x) = |x| — выпуклая, но не дифференцируемая в 0
  • f(x) = x log x на x > 0 — выпуклая (используется в теории информации)
  • f(x) = log x на x > 0 — вогнутая
  • f(x) = ‖x‖² = x₁² + ... + xₙ² — выпуклая
  • f(x) = max(x₁, ..., xₙ) — выпуклая (максимум из линейных функций)
  • f(x) = log(Σᵢ eˣⁱ) — «мягкий максимум», log-sum-exp, выпуклая и гладкая
  • f(X) = λ_max(X) — максимальное собственное значение симметричной матрицы — выпуклая
  • Сумма: f₁ + f₂ выпуклая, если f₁ и f₂ выпуклые
  • Неотрицательная шкалировка: λf при λ ≥ 0 выпуклая
  • Максимум: max(f₁, f₂, ..., fₘ) выпуклая (максимум выпуклых функций выпуклый)
  • Аффинная подстановка: f(Ax + b) выпуклая (если f выпуклая)
  • Супремум: sup_{y ∈ S} f(x, y) выпуклая по x (если f(·, y) выпуклая для каждого y)
  • Ведущий минор 1×1: 2 > 0 ✓
  • Определитель 2×2: 2·6 − 2·2 = 12 − 4 = 8 > 0 ✓

Главный практический факт: если функция выпуклая, то её любой локальный минимум является глобальным. Это колоссальное преимущество. В невыпуклой задаче у вас могут быть тысячи локальных минимумов, и алгоритм может «застрять» в плохом из них. В выпуклой задаче — только один минимум, и любой метод ...

Функция f: ℝⁿ → ℝ (или f: dom(f) → ℝ, где dom(f) — выпуклое множество) называется выпуклой, если для любых x, y ∈ dom(f) и любого λ ∈ [0,1]:

Геометрический смысл: рассмотрим две точки на графике функции: A = (x, f(x)) и B = (y, f(y)). Правая часть λf(x) + (1−λ)f(y) — это точка на хорде AB, соответствующая параметру λ. Левая часть f(λx + (1−λ)y) — это значение функции в той же точке по горизонтали. Выпуклость означает: график функции л...

Если выполняется строгое неравенство (< вместо ≤) при x ≠ y и λ ∈ (0,1) — функция строго выпуклая. У строго выпуклой функции минимум единственен.

Субградиенты и субдифференциал

Мотивация: что делать с недифференцируемыми функциями? → Определение субградиента → Примеры субдифференциалов → Условие оптимальности через субдифференциал → Правила субдифференцирования → Прокс-оператор → Полный разбор примера: LASSO → Применения

  • При x > 0: f'(x) = 1, поэтому ∂|x| = {1}
  • При x < 0: f'(x) = −1, поэтому ∂|x| = {−1}
  • При x = 0: субдифференциал ∂|0| = [−1, 1] — весь отрезок

Многие важные выпуклые функции не имеют градиента в каждой точке. Абсолютное значение |x| не дифференцируемо в нуле. L1-норма ‖x‖₁ не дифференцируема, когда хотя бы одна компонента обращается в нуль. Максимум из нескольких функций не дифференцируем на множестве переключения. Если мы хотим решать ...

Интерпретация: субградиент — это вектор, задающий гиперплоскость через точку (x, f(x)), лежащую «ниже» (или касающуюся) графика f. По критерию первого порядка, если f дифференцируема, единственный субградиент — это градиент ∇f(x). Если f недифференцируема, может быть целый «веер» допустимых субгр...

Почему? При x = 0 нужно найти все g такие, что |y| ≥ |0| + g(y−0) = gy для всех y. Это выполняется при |y| ≥ gy для всех y, что означает g ∈ [−1, 1].

где I(x) = {i : fᵢ(x) = max_j fⱼ(x)} — множество «активных» функций, conv — выпуклая оболочка.

2

Двойственность и условия оптимальности

Лагранжева двойственность, теорема Слэйтера и условия Каруша-Куна-Таккера

Лагранжева двойственность и теорема Слэйтера

Зачем нужна двойственность? → Примальная задача и лагранжиан → Слабая двойственность → Двойственная задача и теорема Слэйтера → Условия ККТ (Каруша-Куна-Таккера) → Экономическая интерпретация → Полный разбор примера → Геометрическая интерпретация двойственности → Седловые точки лагранжиана → Применения двойственности

  • Машины опорных векторов (SVM): двойственная задача имеет меньшую размерность (число опорных векторов вместо размерности признаков) и допускает ядерный трюк
  • Декомпозиция Бендерса в оптимизации больших систем: разделение на «лёгкую» и «трудную» части через двойственность
  • Distributed optimization (ADMM): двойственные переменные служат «координатором» между параллельными решателями
  • Анализ чувствительности: двойственная переменная λᵢ — это «теневая цена» ограничения, показывающая, насколько улучшится оптимум при ослаблении ограничения на единицу

Иногда решить задачу оптимизации напрямую сложно, но существует «переформулировка», которая решается проще. Лагранжева двойственность — это систематический способ построить такую двойственную задачу. Оказывается, у каждой задачи минимизации есть «двойственная задача максимизации», оптимальное зна...

Лагранжиан: «смягчаем» ограничения, перемещая их в целевую функцию со штрафами λᵢ и νⱼ:

где λᵢ ≥ 0 — «двойственные переменные» (множители Лагранжа) для неравенств, νⱼ — для уравнений (могут быть любого знака).

Физический смысл λᵢ: цена нарушения i-го ограничения. Если gᵢ(x) > 0 (нарушение), за это платим λᵢ gᵢ(x) > 0. При λᵢ = 0 — штрафа нет. При больших λᵢ — нарушение «дорогое».

Сопряжённые функции Фенхеля

Идея преобразования Лежандра-Фенхеля → Определение сопряжённой функции → Неравенство Фенхеля-Юнга → Примеры вычисления → Двойственность через сопряжённые функции → Полный разбор примера: вычисление f* для log-барьера → Применения → Свойства преобразования Фенхеля → Примеры пар сопряжённых → Применения

  • y — «двойственная переменная», направление (наклон гиперплоскости)
  • yᵀx — скалярное произведение (линейная функция x)
  • f(x) — «вычитаем» функцию
  • sup — берём наибольшее значение по всем x
  • Сопряжённая функция всегда выпуклая (даже если f не выпуклая) — преобразование «выпукливает» функцию
  • Двойное сопряжённое f = f, если f выпуклая и замкнутая; в общем случае f — выпуклая оболочка f
  • Соответствие порядка: f₁ ≤ f₂ → f₂* ≤ f₁*
  • Сопряжённое к сумме: (f₁ + f₂)* = f₁* □ f₂* (инфимальная конволюция)
  • Связь с субдифференциалом: y ∈ ∂f(x) ⟺ x ∈ ∂f*(y) ⟺ f(x) + f*(y) = xᵀy
  • f(x) = (1/2)xᵀPx (квадратичная) ↔ f*(y) = (1/2)yᵀP⁻¹y
  • f(x) = exp(x) ↔ f*(y) = y log y − y (для y > 0)
  • f(x) = log(1 + eˣ) (softplus) ↔ f*(y) = y log y + (1−y) log(1−y) (бинарная энтропия) для y ∈ [0,1]
  • f(x) = ‖x‖_p ↔ f*(y) = δ_{‖·‖_q ≤ 1}(y), где 1/p + 1/q = 1 (двойственные нормы)
  • f(x) = max(x₁,...,xₙ) ↔ f*(y) = δ_Δ(y) (индикатор симплекса)

Представьте, что вы хотите охарактеризовать выпуклую функцию не через её значения в точках, а через поддерживающие её гиперплоскости. Каждая касательная линия к выпуклой функции задаётся своим наклоном y и «точкой перехвата». Сопряжённая функция f*(y) фиксирует это «пересечение» для гиперплоскост...

Ключевое свойство: f* — всегда выпуклая функция, даже если исходная f — невыпуклая! (Как супремум аффинных функций по y.)

Биполярная теорема: если f — замкнутая выпуклая функция, то f = f (двойная сопряжённая совпадает с исходной). Для невыпуклых f: f = cl(conv(f)) — замыкание выпуклой оболочки.

Вычисление: если |yᵢ| > 1 для некоторого i, берём xᵢ → ±∞ → супремум = +∞. Если |yᵢ| ≤ 1 для всех i, то yᵀx ≤ ‖y‖_∞ ‖x‖₁ ≤ ‖x‖₁ → yᵀx − ‖x‖₁ ≤ 0, максимум = 0 (при x = 0).

Линейное, квадратичное и полуопределённое программирование

Иерархия выпуклых задач → Линейное программирование (ЛП) → Квадратичное программирование (КП) → Программирование второго порядка (SOCP) → Полуопределённое программирование (SDP) → Полный разбор: SDP-релаксация задачи MAX-CUT → Решатели → Иерархия классов задач → Промышленные решатели → Современные применения

Definitions

Переменнаяматрица X! Это обобщение ЛП (переменная — вектор x) на матричный случай.

Formulas

Задача SDP: min_{X} tr(CX) при tr(AᵢX) = bᵢ, i=1,...,m, X ≽ 0
  • CVXPY (Python): высокоуровневый язык для описания задач
  • MOSEK: коммерческий, очень быстрый для LP/QP/SOCP/SDP
  • SCS: открытый, масштабируемый для больших SDP
  • ECOS: эффективный для встроенных систем
  • LP: Gurobi, CPLEX, MOSEK, HiGHS (open source) — миллионы переменных за секунды
  • QP: OSQP, qpOASES (для управления в реальном времени), Gurobi
  • SOCP: ECOS, MOSEK, SCS — широко используются в финансах для робастных портфелей
  • SDP: SDPT3, SeDuMi, MOSEK, COSMO — для задач до нескольких тысяч переменных
  • Универсальные моделирующие языки: CVXPY, JuMP, YALMIP — позволяют записать задачу в естественной форме и автоматически привести к канонической для решателя
  • LP в авиации: American Airlines решает задачи с миллионами переменных для назначения экипажей
  • QP в робототехнике: квадратурные регуляторы (LQR) и MPC (Model Predictive Control) — основа управления манипуляторами и квадрокоптерами
  • SOCP в финансах: робастные портфели Гольдфарба-Айенгара учитывают неопределённость в оценках доходностей через эллипсоидные множества
  • SDP в квантовых вычислениях: задачи квантовой томографии, оценки квантовых каналов формулируются через SDP
  • SDP в комбинаторике: релаксация Гёманса-Уильямсона для MAX-CUT даёт 0.878-аппроксимацию через SDP — рекордный результат теоретической информатики

Выпуклое программирование — это «семейство» задач оптимизации различной сложности. Линейное программирование (ЛП) — простейшее: линейная цель, линейные ограничения. Квадратичное (КП) — квадратичная цель. Программирование второго порядка (SOCP) — конические ограничения. Полуопределённое (SDP) — ма...

Здесь c ∈ ℝⁿ — вектор коэффициентов цели, A ∈ ℝ^{m×n} — матрица ограничений, b ∈ ℝᵐ — правые части.

Геометрия: область допустимых решений — выпуклый многогранник (политоп). Линейная целевая функция достигает минимума в вершине многогранника. Симплекс-метод (Данциг, 1947) «ходит» по вершинам, пока не найдёт оптимальную. Метод внутренней точки — движется через внутренность.

Двойственность ЛП: примальная задача min cᵀx при Ax ≥ b, x ≥ 0 имеет двойственную max bᵀy при Aᵀy ≤ c, y ≥ 0. Сильная двойственность выполнена всегда (при допустимости обеих задач).

3

Алгоритмы первого порядка

Градиентный спуск, ускорение Нестерова, прокс-алгоритмы и ADMM

Градиентный спуск и ускорение Нестерова

Зачем нужны алгоритмы первого порядка? → Градиентный спуск: базовый алгоритм → Ускорение Нестерова (1983) → Полный разбор примера → Стохастический градиентный спуск (SGD) → Применения в машинном обучении → Связь с современными библиотеками → Сравнение скорости сходимости

  • Градиентный спуск: O(1/k) для гладких функций, O(1/√k) для негладких
  • Ускоренный (Нестеров): O(1/k²) — теоретический оптимум для гладких выпуклых задач
  • Прокс-методы: O(1/k) или O(1/k²) с ускорением (FISTA)
  • Стохастический градиентный спуск (SGD): O(1/√k) для выпуклых, O(1/k) с усреднением

Методы второго порядка (метод Ньютона) очень быстрые, но требуют вычисления и обращения матрицы Гессе — O(n³) операций за шаг. При n = 10⁶ параметров (нейросеть среднего размера) это просто невозможно. Методы первого порядка используют только градиент — O(n) операций. Они медленнее на итерацию, н...

Здесь α > 0 — размер шага (learning rate). При слишком большом α — алгоритм расходится. При слишком малом — очень медленная сходимость.

Класс L-гладких функций: f называется L-гладкой, если ‖∇f(x) − ∇f(y)‖ ≤ L‖x − y‖ для всех x, y. Константа L — «степень гладкости» (наибольшее собственное значение матрицы Гессе).

Это скорость O(1/k): чтобы уменьшить ошибку вдвое, нужно удвоить число итераций.

Прокс-алгоритмы и расщепление операторов

Мотивация: как работать с недифференцируемыми членами? → Прокс-оператор → Проксимальный градиентный метод (ISTA/FISTA) → Полный разбор LASSO с FISTA → ADMM (Alternating Direction Method of Multipliers) → Применения → Прокс-операторы для типичных регуляризаторов → Применения расщепления операторов

Formulas

Определение: prox_{τf}(x) = argmin_{y} {f(y) + (1/2τ)‖y − x‖²}
  • τ > 0 — размер шага
  • f(y) — «минимизируем» f
  • (1/2τ)‖y − x‖² — «не уходим далеко от x»
  • argmin — возвращаем минимизирующую точку y
  • Для L2-регуляризации τ‖x‖²: prox(x) = x / (1 + 2τ) — простое масштабирование
  • Для группового LASSO τ‖x‖_{2,1}: групповой мягкий порог, обнуляющий целые группы координат
  • Для ядерной нормы ‖X‖_* (сумма сингулярных чисел матрицы): SVD-разложение X = UΣVᵀ, затем мягкий порог сингулярных чисел и обратная сборка
  • Для индикатора симплекса: проекция на симплекс через сортировку — O(n log n)

Задача LASSO: min (1/2)‖Ax−b‖² + λ‖x‖₁. Первый член — гладкий (можно дифференцировать), второй — нет (|x|₁ недифференцируема в нуле). Применить градиентный спуск нельзя напрямую. Субградиентный метод — слишком медленный (O(1/√k)). Прокс-алгоритмы решают эту проблему элегантно: «расщепляют» функци...

Это «мягкий шаг в сторону минимума f». При τ → 0: prox ≈ x (не двигаемся). При τ → ∞: prox → argmin f (идём в минимум).

1. f(x) = ‖x‖₁: prox_{τf}(x) = sign(x) · max(|x| − τ, 0) — мягкое пороговое (soft thresholding)

2. f(x) = δ_C(x) — индикатор выпуклого C: prox_{δ_C}(x) = P_C(x) — проекция на C

Метод внутренней точки и барьерные функции

Идея: как обойти ограничения? → Логарифмический барьер → Центральный путь → Алгоритм МВТ → Самодвойственные барьеры → Полный разбор: ЛП через МВТ → Применения → Алгоритмическая реализация → Современные пакеты

  • Для ЛП: φ(x) = −Σ log xᵢ, ν = n (ограничения x ≥ 0)
  • Для SDP: φ(X) = −log det X, ν = n (матрица n×n)
  • Для SOCP: φ = −log(t² − ‖x‖²), ν = 2

Задача с ограничениями: min f(x) при gᵢ(x) ≤ 0. Один из подходов — «забыть» про ограничения, но добавить большой штраф за их нарушение. Логарифмический барьер делает это изящно: он уходит в +∞ при приближении x к границе допустимого множества. Метод внутренней точки (МВТ) систематически используе...

Смысл: когда gᵢ(x) → 0 (приближаемся к границе ограничения), −gᵢ(x) → 0⁺ → log → −∞ → φ(x) → +∞. Барьер «отталкивает» от границы.

При gᵢ(x) = −t (x строго внутри, зазор = t): φ(x) = − log t. При удвоении зазора барьер уменьшается на log 2.

Параметр t > 0 — «точность». При t → ∞ барьерный член (1/t)φ(x) → 0, и решение сходится к оригинальному.

4

Применения в машинном обучении

Регуляризация, SVM, выпуклые нейросети и компрессированное восстановление

Регуляризация: Lasso, Ridge, Elastic Net

Проблема переобучения и зачем нужна регуляризация → Ridge-регрессия (L2-регуляризация) → Lasso (L1-регуляризация) → Elastic Net: лучшее из двух миров → Компрессированное восстановление (Compressed Sensing) → Полный разбор: Lasso на числовом примере → Практические применения

  • Разреженность от L1: некоторые коэффициенты обнуляются
  • Стабильность от L2: при мультиколлинеарности (похожие признаки) L1 выбирает один произвольно, Elastic Net выбирает «группу» вместе
  • Замкнутое решение по сравнению с чистым Lasso (но только итеративное)
  • Градиент: ∇f(x⁰) = Aᵀ(Ax⁰ − b) = Aᵀ(−b) = [[−22], [−28]]
  • Градиентный шаг: z = x⁰ − τ∇f = [0.24, 0.31]
  • Soft threshold с τλ ≈ 0.006: x¹ = [0.234, 0.304]

Представьте, что вы строите модель прогнозирования цен на квартиры по 1000 признакам, имея только 100 наблюдений. Без ограничений модель может «запомнить» обучающие данные (переобучение), показав нулевую ошибку на них, но ужасную — на новых данных. Регуляризация — это добавление штрафного члена к...

Здесь A ∈ ℝ^{m×n} — матрица признаков, b ∈ ℝᵐ — отклики, λ > 0 — параметр регуляризации.

Важно: матрица AᵀA + λI всегда обратима при λ > 0, даже если AᵀA вырождена! Это решает проблему мультиколлинеарности.

Эффект: все коэффициенты сжимаются к нулю пропорционально, но ни один не обнуляется точно. Это хорошо для «стабилизации» (уменьшения дисперсии), но плохо для «отбора признаков».

SVM и ядровые методы

Идея: максимизировать зазор → Примальная задача SVM → Двойственная задача и kernel trick → Опорные векторы → Мягкая маржа SVM (Soft Margin) → Популярные ядра → Полный разбор примера → Гарантии обобщения → Метод опорных векторов: математическое ядро → Популярные ядра и их свойства

  • ∂L/∂w = 0: w = Σᵢ αᵢ yᵢ xᵢ
  • ∂L/∂b = 0: Σᵢ αᵢ yᵢ = 0
  • Класс +1: x₁ = (1, 2), x₂ = (2, 1)
  • Класс −1: x₃ = (−1, −2), x₄ = (−2, −1)
  • Линейное: K(x,y) = xᵀy — для линейно разделимых данных
  • Полиномиальное: K(x,y) = (xᵀy + c)^d — для полиномиальной границы степени d
  • RBF (Gaussian): K(x,y) = exp(−γ‖x−y‖²) — бесконечномерное ядро, универсальный аппроксиматор
  • Sigmoid: K(x,y) = tanh(αxᵀy + c) — связан с нейросетями
  • String kernels, graph kernels — для негеометрических данных
  • SMO (Sequential Minimal Optimization, Платт, 1998): итеративно оптимизирует пары множителей Лагранжа
  • Pegasos (Шалев-Шварц): стохастический градиентный спуск для линейных SVM
  • LIBLINEAR, LIBSVM — стандартные библиотеки

Задача классификации: дано N точек (xᵢ, yᵢ), где xᵢ ∈ ℝⁿ и yᵢ ∈ {−1, +1} — метки классов. Нужно найти гиперплоскость, разделяющую два класса. Таких гиперплоскостей бесконечно много — любая разделяющая подойдёт. SVM (Support Vector Machine) выбирает «наилучшую» — ту, которая максимально удалена от...

Зазор (margin) = 2/‖w‖ (расстояние между двумя параллельными гиперплоскостями wᵀx + b = ±1).

Задача SVM (hard margin): максимизировать зазор при правильной классификации:

Это выпуклое квадратичное программирование! Уникальное решение (строго выпуклая цель).

Теория обучаемости и выпуклость нейросетей

Когда алгоритм обучения «работает»? → VC-размерность → Rademacher-сложность для выпуклых функций → Выпуклость нейросетей при сверхпараметризации → Неявная регуляризация SGD → Двойное убывание (Double Descent) → Полный пример: сравнение алгоритмов → Двойной спуск и переобучение → Современные направления

Formulas

VC-размерность vc(H) = максимальное число точек, которое H может разбить.
МетодТочностьЧисло параметровГарантии
Логистическая регрессия92%7840Выпуклая, глобальный оптимум
SVM (RBF)98%~10000 опорных векторовВыпуклая двойственная
3-слойная нейросеть98.5%100000Нет строгих гарантий, работает
ResNet-5099.7%25 млнЭмпирически надёжно
  • Линейные классификаторы в ℝⁿ: vc = n+1. В ℝ² линейный классификатор разбивает любые 3 точки (в общем положении), но не любые 4.
  • RBF-ядро: vc = ∞ (может разбить любое число точек). Но SVM с RBF ядром обобщает через маржу!
  • Нейросеть с W параметрами: vc ≈ W log W.
  • Все критические точки (∇L = 0) — либо глобальные минимумы, либо сёдловые точки
  • Нет «плохих» локальных минимумов
  • Зона интерполяции: при M < N — классическое обучение
  • Порог интерполяции: M = N — ошибка максимальна
  • Зона сверхпараметризации: M >> N — ошибка снова убывает
  • Generalization bounds для глубоких сетей: PAC-Bayes даёт нетривиальные оценки для конкретных обученных моделей, основанные на «плоскости» минимума функции потерь
  • Лотерейные билеты (Frankle & Carbin, 2019): крупная сеть содержит малую подсеть, обучаемую до сравнимого качества — связано с выпуклостью локальных бассейнов
  • Безопасное обучение: convex-concave оптимизация для adversarial training гарантирует устойчивость к атакам

Машинное обучение кажется эмпирической дисциплиной: попробовал — получилось. Но за кулисами существует математическая теория, объясняющая, почему и когда обучение даёт обобщение на новые данные. VC-теория и PAC-обучаемость — это строгие рамки. Выпуклые задачи имеют особые гарантии: независящие от...

Разбиение (shattering): набор точек S «разбит» гипотезным классом H, если для любой разметки точек ∈ {−1, +1} существует гипотеза h ∈ H, правильно классифицирующая все точки.

Основная теорема VC: конечная vc(H) ↔ PAC-обучаемость (Probably Approximately Correct). Число примеров для (ε, δ)-обучения: N = O((vc(H) + log(1/δ)) / ε²).

Следствие: обобщение ≤ O(Bρ/√N) — не зависит от размерности пространства! Только маржа (1/B) и норма данных (ρ) имеют значение.