Модуль I·Статья II·~4 мин чтения
Выпуклые функции: определения и критерии
Выпуклые множества и функции
Превратить статью в подкаст
Выберите голоса, формат и длину — AI запишет аудио
Выпуклые функции: определения и критерии
Зачем изучать выпуклые функции?
Главный практический факт: если функция выпуклая, то её любой локальный минимум является глобальным. Это колоссальное преимущество. В невыпуклой задаче у вас могут быть тысячи локальных минимумов, и алгоритм может «застрять» в плохом из них. В выпуклой задаче — только один минимум, и любой метод спуска придёт к нему. Поэтому весь фундамент современного машинного обучения строится так, чтобы максимально использовать выпуклые структуры.
Определение выпуклой функции
Функция f: ℝⁿ → ℝ (или f: dom(f) → ℝ, где dom(f) — выпуклое множество) называется выпуклой, если для любых x, y ∈ dom(f) и любого λ ∈ [0,1]:
f(λx + (1−λ)y) ≤ λf(x) + (1−λ)f(y)
Геометрический смысл: рассмотрим две точки на графике функции: A = (x, f(x)) и B = (y, f(y)). Правая часть λf(x) + (1−λ)f(y) — это точка на хорде AB, соответствующая параметру λ. Левая часть f(λx + (1−λ)y) — это значение функции в той же точке по горизонтали. Выпуклость означает: график функции лежит ниже любой хорды. Хорда «нависает» над графиком.
Если выполняется строгое неравенство (< вместо ≤) при x ≠ y и λ ∈ (0,1) — функция строго выпуклая. У строго выпуклой функции минимум единственен.
Вогнутая функция: f вогнутая, если −f выпуклая. Неравенство «переворачивается».
Примеры выпуклых функций
В одной переменной:
- 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 выпуклая ⟺ для всех x, y ∈ dom(f): f(y) ≥ f(x) + ∇f(x)ᵀ(y − x)
Смысл: касательная гиперплоскость к графику в любой точке x лежит ниже (или касается) графика. Градиент ∇f(x) даёт «наилучшую линейную аппроксимацию» f вблизи x, и для выпуклой функции эта аппроксимация — глобальная нижняя оценка.
Важное следствие: если ∇f(x*) = 0, то x* — глобальный минимум! Действительно, f(y) ≥ f(x*) + 0 = f(x*) для всех y.
Критерий второго порядка (для дважды дифференцируемых функций):
f выпуклая ⟺ ∇²f(x) ≽ 0 для всех x ∈ dom(f)
Здесь ∇²f(x) — матрица Гессе (матрица вторых частных производных), ≽ 0 означает «положительно полуопределённая» (все собственные значения ≥ 0).
Смысл: функция «изгибается вверх» во всех направлениях. Для f(x) = x² имеем f''(x) = 2 > 0 — выпуклая. Для f(x) = −x² имеем f''(x) = −2 < 0 — вогнутая.
Подуровневые множества и надграфик
Подуровневое множество C_α = {x : f(x) ≤ α} — все точки, где функция не превышает α.
Теорема: если f выпуклая, то все подуровневые множества C_α выпуклые.
Надграфик epi(f) = {(x, t) : f(x) ≤ t} — «всё, что выше графика», включая сам график.
Ключевая теорема: f выпуклая ⟺ epi(f) — выпуклое множество в ℝⁿ⁺¹.
Это связывает теорию функций и теорию множеств: задача минимизации выпуклой функции эквивалентна нахождению «нижней точки» выпуклого тела.
Операции, сохраняющие выпуклость
Зная несколько простых выпуклых функций, можно строить сложные:
- Сумма: f₁ + f₂ выпуклая, если f₁ и f₂ выпуклые
- Неотрицательная шкалировка: λf при λ ≥ 0 выпуклая
- Максимум: max(f₁, f₂, ..., fₘ) выпуклая (максимум выпуклых функций выпуклый)
- Аффинная подстановка: f(Ax + b) выпуклая (если f выпуклая)
- Супремум: sup_{y ∈ S} f(x, y) выпуклая по x (если f(·, y) выпуклая для каждого y)
Полный разбор примера
Задача: проверить выпуклость f(x₁, x₂) = x₁² + 2x₁x₂ + 3x₂² с помощью критерия второго порядка.
Шаг 1: Вычислим частные производные второго порядка. ∂f/∂x₁ = 2x₁ + 2x₂, ∂²f/∂x₁² = 2 ∂f/∂x₂ = 2x₁ + 6x₂, ∂²f/∂x₂² = 6 ∂²f/∂x₁∂x₂ = 2
Шаг 2: Матрица Гессе (не зависит от x в этом примере): ∇²f = [[2, 2], [2, 6]]
Шаг 3: Проверяем положительную полуопределённость. Критерий Сильвестра:
- Ведущий минор 1×1: 2 > 0 ✓
- Определитель 2×2: 2·6 − 2·2 = 12 − 4 = 8 > 0 ✓
Оба ведущих минора положительны → матрица положительно определена → f строго выпуклая.
Шаг 4: Находим минимум. ∇f(x) = 0: 2x₁ + 2x₂ = 0, 2x₁ + 6x₂ = 0. Из первого уравнения: x₁ = −x₂. Подставляем во второе: −2x₂ + 6x₂ = 0 → x₂ = 0, x₁ = 0. Минимум в точке (0, 0), f(0, 0) = 0.
Применения
Регрессия: среднеквадратичная ошибка f(w) = ‖Xw − y‖² — выпуклая (критерий: ∇²f = 2XᵀX ≽ 0). Поэтому градиентный спуск всегда находит глобальный минимум.
Логистическая регрессия: функция потерь − Σ [yᵢ log σ(wᵀxᵢ) + (1−yᵢ) log(1 − σ(wᵀxᵢ))] — выпуклая по w. Гарантия сходимости любого метода первого порядка.
Финансы: функция среднеквадратичного риска портфеля wᵀΣw (Σ — ковариационная матрица, ≽ 0) — выпуклая. Минимизация риска — выпуклая задача с уникальным решением.
§ Акт · что дальше