Минимизация эмпирического риска

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
Строка 2: Строка 2:
{{TOCright}}
{{TOCright}}
-
'''Минимизация эмпирического риска''' (англ. ''Empirical Risk Minimization'', ''ERM'') — это фундаментальный принцип машинного обучения. Он заключается в том, что из заданного семейства моделей мы выбираем ту, которая показывает наименьшую ошибку на доступных тренировочных данных.
+
'''Минимизация эмпирического риска''' (англ. ''Empirical Risk Minimization, ERM'') — это фундаментальный принцип машинного обучения. Он заключается в том, что из заданного семейства моделей мы выбираем ту, которая показывает наименьшую ошибку на доступных тренировочных данных.
-
Поскольку мы никогда не знаем всех возможных данных в природе, мы не можем измерить «истинную» ошибку модели. Принцип ERM предлагает нам договориться и принять за правило, что вместо недоступной истинной ошибки мы можем опираться на её практическую оценку — эмпирический риск.
+
Поскольку мы никогда не знаем всех возможных данных в природе, мы не можем измерить «истинную» ошибку модели. Принцип ERM постулирует, что вместо недоступной истинной ошибки мы можем опираться на её практическую оценку — эмпирический риск.
== Введение ==
== Введение ==
Строка 12: Строка 12:
Мы не знаем эту закономерность целиком. Нам доступна лишь конечная обучающая выборка <tex>X^{\ell} = \{ (x_i, y_i) \}_{i=1}^{\ell}</tex>.
Мы не знаем эту закономерность целиком. Нам доступна лишь конечная обучающая выборка <tex>X^{\ell} = \{ (x_i, y_i) \}_{i=1}^{\ell}</tex>.
-
Наша цель — найти такой алгоритм <tex>a: X \to Y</tex> из заданного семейства моделей <tex>A = \{ a(x, w) \mid w \in W \}</tex>, который не просто запомнит правильные ответы для обучающей выборки, но и сможет безошибочно работать на новых данных. Ошибку модели на конкретном объекте мы измеряем с помощью функции потерь <tex>\mathcal{L}(y, a(x))</tex>.
+
Наша цель — найти такой алгоритм <tex>a: X \to Y</tex> из заданного семейства моделей <tex>A = \{ a(x, w) \mid w \in W \}</tex>, который не просто запомнит правильные ответы для обучающей выборки, но и сможет эффективно (с минимальным количеством ошибок) работать на новых данных. Ошибку модели на конкретном объекте мы измеряем с помощью функции потерь <tex>\mathcal{L}(y, a(x))</tex>.
== Историческая справка ==
== Историческая справка ==
-
Истоки принципа минимизации эмпирического риска восходят к философской концепции [[Принцип эмпирической индукции Бэкона в машинном обучении|эмпирической индукции]] Фрэнсиса Бэкона (1620 г.), утверждавшего, что законы природы необходимо выводить путём обобщения фактов опыта, а не постулировать умозрительно.
+
Истоки принципа минимизации эмпирического риска восходят к философской концепции [[Эмпирическая индукция|эмпирической индукции]] Фрэнсиса Бэкона (1620 г.), утверждавшего, что законы природы необходимо выводить путём обобщения фактов опыта, а не постулировать умозрительно.
В строгой математической форме этот принцип впервые был применён Карлом Фридрихом Гауссом в 1795 году при разработке [[Метод наименьших квадратов|метода наименьших квадратов]] для расчёта орбит небесных тел. Гаусс предложил искать параметры модели, минимизируя сумму квадратов отклонений предсказанных значений от наблюдаемых. Позже, в 1936 году, Рональд Фишер применил схожий принцип для задачи классификации ([[Линейный дискриминантный анализ|линейный дискриминантный анализ]]).
В строгой математической форме этот принцип впервые был применён Карлом Фридрихом Гауссом в 1795 году при разработке [[Метод наименьших квадратов|метода наименьших квадратов]] для расчёта орбит небесных тел. Гаусс предложил искать параметры модели, минимизируя сумму квадратов отклонений предсказанных значений от наблюдаемых. Позже, в 1936 году, Рональд Фишер применил схожий принцип для задачи классификации ([[Линейный дискриминантный анализ|линейный дискриминантный анализ]]).
-
Своё современное теоретико-вероятностное обоснование принцип ERM получил в конце 1960-х — начале 1970-х годов в трудах советских математиков В. Н. Вапника и А. Я. Червоненкиса. В рамках созданной ими статистической теории обучения ([[Теория Вапника-Червоненкиса|теории Вапника-Червоненкиса]]) были строго сформулированы условия состоятельности принципа минимизации эмпирического риска и получены оценки скорости сходимости эмпирического риска к ожидаемому.
+
Своё современное теоретико-вероятностное обоснование принцип ERM получил в конце 1960-х — начале 1970-х годов в трудах советских математиков В. Н. Вапника и А. Я. Червоненкиса. В рамках созданной ими статистической теории обучения ([[Теория Вапника-Червоненкиса|теории Вапника-Червоненкиса]]) были строго сформулированы условия состоятельности принципа минимизации эмпирического риска и получены оценки скорости сходимости ошибки.
== Ожидаемый и эмпирический риск ==
== Ожидаемый и эмпирический риск ==
-
В теории машинного обучения мы считаем, что данные не появляются из ниоткуда. Существует неизвестное совместное вероятностное распределение <tex>P(x, y)</tex> на пространстве <tex>X \times Y</tex>. Все наши объекты и ответы генерируются независимо из этого распределения.
+
В теории машинного обучения мы считаем, что данные не появляются из ниоткуда. Существует неизвестное вероятностное распределение <tex>P(x, y)</tex> на пространстве <tex>X \times Y</tex>. Все наши объекты и ответы генерируются независимо из этого распределения.
В идеальном мире мы хотели бы создать модель, которая ошибается как можно реже на любых возможных данных. Эта идеальная мера ошибки называется '''ожидаемым риском''' (или истинным риском). Математически это математическое ожидание функции потерь по всему распределению:
В идеальном мире мы хотели бы создать модель, которая ошибается как можно реже на любых возможных данных. Эта идеальная мера ошибки называется '''ожидаемым риском''' (или истинным риском). Математически это математическое ожидание функции потерь по всему распределению:
Строка 33: Строка 33:
Проблема в том, что заранее узнать все вопросы экзамена (распределение <tex>P(x, y)</tex>) невозможно. Поэтому вычислить ожидаемый риск <tex>R(a)</tex> напрямую нельзя.
Проблема в том, что заранее узнать все вопросы экзамена (распределение <tex>P(x, y)</tex>) невозможно. Поэтому вычислить ожидаемый риск <tex>R(a)</tex> напрямую нельзя.
-
Но у нас есть билеты прошлых лет — наша обучающая выборка <tex>X^{\ell}</tex>. [[Закон больших чисел]] говорит нам, что теоретическое математическое ожидание можно оценить на практике, просто усреднив ошибку на всех доступных данных. Так мы получаем '''эмпирический риск''':
+
'''Зачем нам нужен показатель, который невозможно вычислить?''' Ожидаемый риск — это наш главный теоретический ориентир. Он показывает, насколько хорошо модель работает глобально. Хотя мы не можем рассчитать его напрямую, вся математическая теория машинного обучения построена на поиске путей приблизиться к нему.
 +
 
 +
Поскольку у нас нет всех данных мира, мы используем билеты прошлых лет — нашу обучающую выборку <tex>X^{\ell}</tex>. Закон больших чисел говорит нам, что теоретическое математическое ожидание можно оценить на практике, просто усреднив ошибку на всех доступных данных. Так мы получаем '''эмпирический риск''':
::<tex>Q(a, X^{\ell}) = \frac{1}{\ell} \sum_{i=1}^{\ell} \mathcal{L}(y_i, a(x_i))</tex>
::<tex>Q(a, X^{\ell}) = \frac{1}{\ell} \sum_{i=1}^{\ell} \mathcal{L}(y_i, a(x_i))</tex>
Строка 39: Строка 41:
Метод минимизации эмпирического риска делает логичный шаг. Раз мы не можем минимизировать ошибку на всех данных мира, давайте найдём алгоритм <tex>a^*</tex> (или вектор весов <tex>w^*</tex>), который доставляет минимум этому функционалу на обучающей выборке:
Метод минимизации эмпирического риска делает логичный шаг. Раз мы не можем минимизировать ошибку на всех данных мира, давайте найдём алгоритм <tex>a^*</tex> (или вектор весов <tex>w^*</tex>), который доставляет минимум этому функционалу на обучающей выборке:
-
::<tex>a^* = \arg\min_{a \in A} Q(a, X^{\ell})</tex>
+
::<tex>a^* = \arg\min_{a \in A} Q(a, X^{\ell})$</tex>
-
== Условия состоятельности и переобучение ==
+
== Условия состоятельности и переобучение ==
-
Главной проблемой принципа ERM является явление переобучения. Возвращаясь к нашей аналогии: если вы просто зазубрите наизусть ответы к билетам прошлых лет, ваш эмпирический риск дома будет равен нулю. Но на реальном экзамене при малейшем изменении формулировки вопроса вы провалитесь (истинный риск <tex>R(a)</tex> окажется высоким). Модель теряет способность к обобщению.
+
Главной проблемой принципа ERM является явление '''[[Переобучение|переобучения]]''' (overfitting). Возвращаясь к нашей аналогии: если вы просто зазубрите наизусть ответы к билетам прошлых лет, ваш эмпирический риск дома будет равен нулю. Но на реальном экзамене при малейшем изменении формулировки вопроса вы провалитесь (истинный риск <tex>R(a)</tex> окажется высоким). Модель теряет способность к обобщению.
-
Принцип ERM называется строго состоятельным, если при бесконечном увеличении объёма выборки <tex>\ell \to \infty</tex> эмпирический риск приближается к ожидаемому риску равномерно для всех моделей семейства <tex>A</tex>:
+
Чтобы гарантировать, что наш метод обучения на компьютере вообще работает и не является делом чистой случайности, математики ввели понятие состоятельности.
-
::<tex>\lim_{\ell \to \infty} \mathbb{P} \left( \sup_{a \in A} |R(a) - Q(a, X^{\ell})| > \epsilon \right) = 0</tex>
+
-
Согласно фундаментальной теореме Вапника-Червоненкиса, чтобы метод работал надёжно, сложность семейства функций должна быть ограничена. Оценка обобщающей способности имеет следующий вид: с вероятностью не менее <tex>1 - \delta</tex> для любого алгоритма <tex>a \in A</tex>справедливо неравенство:
+
=== Зачем нужна состоятельность и равномерная сходимость? ===
-
::<tex>R(a) \le Q(a, X^{\ell}) + \sqrt{\frac{h \left( \ln\left(\frac{2\ell}{h}\right) + 1 \right) - \ln\left(\frac{\delta}{4}\right)}{\ell}}</tex>,
+
Метод ERM называется '''строго состоятельным''', если при увеличении объёма данных до бесконечности (<tex>\ell \to \infty</tex>) ошибка на обучении гарантированно приближается к реальной ошибке в жизни.
-
где <tex>h</tex> — ёмкость класса моделей ([[Емкость (машинное обучение)|VC-размерность]]), а второй член под корнем представляет собой штраф за сложность.
+
-
Из этой формулы математически следует важное правило: если сложность модели <tex>h</tex> (например, количество параметров нейронной сети) слишком велика по сравнению с количеством данных <tex>\ell</tex>, то метод ERM не гарантирует хорошего качества на новых данных, и модель неизбежно переобучается.
+
Однако простой сходимости для одной фиксированной модели недостаточно. Поскольку во время обучения мы ищем лучшую модель среди огромного семейства <tex>A</tex>, всегда есть риск найти «везучую» модель, которая случайно показала нулевую ошибку на тренировке, но будет бесполезна в реальности.
 +
 
 +
Чтобы исключить фактор случайного везения, сходимость должна быть '''равномерной по всему семейству моделей'''. Математически это означает, что даже для самой «везучей» модели разница между тренировочной и реальной ошибкой должна стремиться к нулю. Это записывается через предел супремума:
 +
::<tex>\lim_{\ell \to \infty} \mathbb{P} \left( \sup_{a \in A} |R(a) - Q(a, X^\ell)| > \epsilon \right) = 0</tex>
 +
 
 +
=== Оценка Вапника — Червоненкиса ===
 +
Связующим мостом между теорией бесконечных данных и реальной практикой является знаменитая теорема Вапника — Червоненкиса. Она не просто постулирует предел, а математически доказывает его и показывает, с какой скоростью мы к нему приближаемся.
 +
 
 +
Согласно теореме, для конечной выборки объёмом <tex>\ell</tex> с вероятностью не менее <tex>1 - \delta</tex> для любого алгоритма <tex>a \in A</tex> справедливо неравенство:
 +
::<tex>R(a) \le Q(a, X^{\ell}) + \sqrt{\frac{h \left( \ln\left(\frac{2\ell}{h}\right) + 1 \right) - \ln\left(\frac{\delta}{4}\right)}{\ell}}</tex>,
 +
где <tex>h</tex> — [[Размерность Вапника-Червоненкиса|VC-размерность]] (мера сложности) семейства моделей.
 +
Правое слагаемое с квадратным корнем выступает в роли '''«штрафа за сложность»''' модели. Из него легко увидеть два фундаментальных правила:
 +
* '''Влияние объёма данных:''' Чем больше у нас данных <tex>\ell</tex>, тем меньше штрафной корень. При <tex>\ell \to \infty</tex> этот корень стремится к нулю, математически доказывая вышеописанный предел равномерной сходимости.
 +
* '''Влияние сложности модели:''' Чем сложнее семейство моделей <tex>h</tex>, тем больше штрафной корень и тем выше риск переобучения при фиксированном объёме данных.
== Регуляризация ==
== Регуляризация ==
Строка 60: Строка 73:
Оптимизируемый функционал принимает вид:
Оптимизируемый функционал принимает вид:
::<tex>Q_{\text{reg}}(w, X^{\ell}) = \sum_{i=1}^{\ell} \mathcal{L}(y_i, a(x_i, w)) + \tau \mathcal{R}(w) \to \min_{w}</tex>,
::<tex>Q_{\text{reg}}(w, X^{\ell}) = \sum_{i=1}^{\ell} \mathcal{L}(y_i, a(x_i, w)) + \tau \mathcal{R}(w) \to \min_{w}</tex>,
-
где <tex>\mathcal{R}(w)</tex> — функция-[[Регуляризация (машинное обучение)|регуляризатор]], запрещающая параметрам модели принимать слишком большие или сложные значения, а <tex>\tau > 0</tex> — коэффициент регуляризации.
+
где <tex>\mathcal{R}(w)</tex> — функция-регуляризатор, запрещающая параметрам модели принимать слишком большие или сложные значения, а <tex>\tau > 0</tex> — коэффициент регуляризации.
Наиболее часто используемые регуляризаторы:
Наиболее часто используемые регуляризаторы:
Строка 66: Строка 79:
* '''<tex>L_1</tex>-регуляризация''' (Lasso): <tex>\mathcal{R}(w) = \|w\|_1 = \sum_{j=1}^n |w_j|</tex>. Способна занулять малозначимые признаки, упрощая итоговую модель.
* '''<tex>L_1</tex>-регуляризация''' (Lasso): <tex>\mathcal{R}(w) = \|w\|_1 = \sum_{j=1}^n |w_j|</tex>. Способна занулять малозначимые признаки, упрощая итоговую модель.
-
== Основные типы функций потерь ==
+
== Основные типы функций потерь ==
-
Выбор функции потерь <tex>\mathcal{L}(y, a(x))</tex> строго зависит от типа решаемой задачи.
+
Выбор функции потерь <tex>\mathcal{L}(y, a(x))</tex> строго зависит от типа решаемой задачи и природы данных.
-
=== В задачах регрессии ===
+
=== В задачах регрессии ===
-
В [[Регрессионный анализ|регрессии]] мы предсказываем действительные числа (<tex>Y = \mathbb{R}</tex>). Типичные функции потерь:
+
В задачах [[Регрессионный анализ|регрессии]] мы предсказываем действительные числа (<tex>Y = \mathbb{R}</tex>). Типичные функции потерь:
-
* Квадратичная функция потерь (Метод наименьших квадратов): <tex>\mathcal{L}(y, a(x)) = (a(x) - y)^2</tex>.
+
* '''Квадратичная функция потерь''' (MSE, метод наименьших квадратов):
-
* Абсолютная ошибка (Модуль отклонения, для [[Робастное обучение|робастности]]): <tex>\mathcal{L}(y, a(x)) = |a(x) - y|</tex>. Менее чувствительна к аномальным выбросам в данных.
+
:<tex>\mathcal{L}(y, a(x)) = (a(x) - y)^2</tex>
 +
:* ''Особенности:'' Очень чувствительна к аномалиям в данных (выбросам). Поскольку ошибка возводится в квадрат, алгоритм будет изо всех сил пытаться подстроиться под редкие опечатки или шумы в данных, жертвуя качеством на нормальных объектах.
 +
* '''Абсолютная ошибка''' (MAE, модуль отклонения):
 +
:<tex>\mathcal{L}(y, a(x)) = |a(x) - y|</tex>
 +
:* ''Особенности:'' Является робастной (устойчивой) функцией потерь. Она одинаково штрафует за малые и большие отклонения, поэтому просто игнорирует редкие аномальные выбросы, выстраивая наиболее устойчивую зависимость.
-
=== В задачах классификации ===
+
=== В задачах классификации ===
-
В бинарной [[Классификация|классификации]] ответом является класс (<tex>Y = \{-1, +1\}</tex>). Самый естественный выбор — пороговая функция потерь, которая просто штрафует за несовпадение ответов:
+
В бинарной [[Классификация|классификации]] ответом является класс (<tex>Y = \{-1, +1\}</tex>). Самый естественный выбор — пороговая функция потерь, которая просто штрафует на единицу за несовпадение ответов и даёт ноль при правильном предсказании:
::<tex>\mathcal{L}(y, a(x)) = [a(x) \neq y]</tex>
::<tex>\mathcal{L}(y, a(x)) = [a(x) \neq y]</tex>
-
Однако минимизация такой функции является крайне сложной дискретной NP-полной задачей комбинаторной оптимизации, так как она имеет вид «ступеньки» и её нельзя продифференцировать. На практике пороговую функцию заменяют её гладкими или выпуклыми верхними оценками, что позволяет легко обучать модель с помощью вычисления производных:
+
Однако минимизация такой функции на конечной выборке является дискретной NP-полной задачей комбинаторной оптимизации, так как функция потерь имеет вид «ступеньки» (у неё нулевой градиент почти везде, и её невозможно продифференцировать).
-
* Логистическая функция (применяется в [[Логистическая регрессия|логистической регрессии]]): <tex>\mathcal{L}(M) = \log_2(1 + e^{-M})</tex>.
+
-
* Кусочно-линейная функция (Hinge loss, применяется в [[Метод опорных векторов|методе опорных векторов]], SVM): <tex>\mathcal{L}(M) = \max(0, 1 - M)</tex>.
+
-
* Экспоненциальная функция (применяется в бустинге): <tex>\mathcal{L}(M) = e^{-M}</tex>.
+
-
Здесь <tex>M = y \langle w, x \rangle</tex> — это отступ (margin), который характеризует степень уверенности классификатора в правильном ответе. Использование таких аппроксимаций не только решает вычислительную проблему, но и улучшает обобщающую способность алгоритма.
+
-
== Методы оптимизации ==
+
Для линейного классификатора <tex>a(x) = \text{sign}(\langle w, x \rangle)</tex> вводится понятие отступа (margin): <tex>M = y \langle w, x \rangle</tex>. Пороговая функция потерь выражается через отступ как <tex>[M < 0]</tex>. Чтобы применить методы градиентной оптимизации, пороговую функцию заменяют её гладкими или кусочно-гладкими верхними оценками <tex>\mathcal{L}(M)</tex>:
 +
* '''Логистическая функция потерь''' (применяется в [[Логистическая регрессия|логистической регрессии]]):
 +
:<tex>\mathcal{L}(M) = \log_2(1 + e^{-M})</tex>
 +
:* ''Особенности:'' Гладкая функция. Она плавно штрафует модель даже за правильные, но неуверенные предсказания (когда отступ <tex>M</tex> положителен, но мал). Это заставляет классификатор не просто угадывать класс, а делать это с максимальной уверенностью.
 +
* '''Кусочно-линейная функция потерь''' (Hinge loss, применяется в [[Метод опорных векторов|методе опорных векторов]], SVM):
 +
:<tex>\mathcal{L}(M) = \max(0, 1 - M)</tex>
 +
:* ''Особенности:'' Даёт ровно нулевую ошибку, если объект классифицирован правильно и с хорошим запасом (когда отступ <tex>M \ge 1</tex>). Это свойство приводит к тому, что оптимальное решение зависит только от небольшой доли объектов выборки (опорных векторов), делая решение разреженным.
 +
* '''Экспоненциальная функция потерь''' (применяется в алгоритме AdaBoost):
 +
:<tex>\mathcal{L}(M) = e^{-M}</tex>
 +
:* ''Особенности:'' Очень жестко (экспоненциально) наказывает за ошибки (когда отступ <tex>M < 0</tex>). Позволяет быстро настраивать композиции алгоритмов, но крайне неустойчива к сильному шуму в данных.
-
Когда функция потерь непрерывна и имеет производные по параметрам <tex>w</tex>, задача решается методами градиентной оптимизации.
+
== Методы оптимизации ==
-
Исторически базовым алгоритмом является [[Градиентный спуск|градиентный спуск]]:
+
Когда функция потерь непрерывна и имеет производные по параметрам <tex>w</tex> (или хотя бы субградиенты), задачу минимизации эмпирического риска решают методами численной оптимизации.
-
::<tex>w_t = w_{t-1} - h \nabla_w Q(w_{t-1}, X^{\ell})</tex>,
+
-
где <tex>h</tex> — размер шага (темп обучения). Вычисление градиента <tex>\nabla_w Q</tex> требует прохода по всей выборке <tex>X^{\ell}</tex>, что работает слишком медленно на современных больших данных.
+
-
В индустрии машинного и глубокого обучения повсеместно применяется '''[[Стохастический градиентный спуск|стохастический градиентный спуск]]''' (SGD). В нём на каждом шаге параметры обновляются по ошибке не на всех данных, а лишь на одном случайном объекте <tex>x_i</tex>:
+
=== Классический градиентный спуск ===
 +
Исторически базовым алгоритмом является '''градиентный спуск''' (Gradient Descent, GD):
 +
::<tex>w_t = w_{t-1} - h \nabla_w Q(w_{t-1}, X^{\ell})</tex>
 +
 
 +
Распишем эту формулу подробнее, чтобы понять её физический смысл. Поскольку градиент суммы равен сумме градиентов, мы можем подставить формулу эмпирического риска прямо внутрь градиентного шага:
 +
::<tex>w_t = w_{t-1} - \frac{h}{\ell} \sum_{i=1}^{\ell} \nabla_w \mathcal{L}(y_i, a(x_i, w_{t-1}))</tex>
 +
 
 +
Разберём, из чего состоит это выражение:
 +
* <tex>w_{t-1}</tex> — вектор весов на предыдущем шаге оптимизации;
 +
* <tex>h</tex> — размер шага (темп обучения, learning rate);
 +
* <tex>\nabla_w \mathcal{L}(y_i, a(x_i, w_{t-1}))</tex> — вектор частных производных (градиент) функции потерь на конкретном <tex>i</tex>-м объекте. Он показывает направление наискорейшего роста ошибки на этом объекте. Знак «минус» перед ним заставляет нас двигаться в противоположную сторону — в сторону уменьшения ошибки.
 +
 
 +
=== Почему классический градиентный спуск работает медленно? ===
 +
Обрати внимание на знак суммы <tex>\sum_{i=1}^{\ell}</tex> в формуле выше. Чтобы сделать '''всего один маленький шаг''' обновления весов <tex>w_t</tex>, компьютер вынужден совершить так называемый «полный проход по всей выборке» (full batch pass). То есть процессор должен:
 +
# Вычислить градиенты функции потерь отдельно для каждого из <tex>\ell</tex> объектов нашей обучающей выборки.
 +
# Сложить все эти векторы градиентов между собой.
 +
# Разделить сумму на <tex>\ell</tex>, чтобы найти среднее направление спуска.
 +
 
 +
Если наш датасет огромен (например, в эпохе Big Data выборка составляет <tex>\ell = 1\,000\ 000</tex> объектов), то для совершения одной крошечной итерации компьютеру придётся проделать один миллион тяжелых математических операций вычисления градиентов. Классический градиентный спуск в таких условиях работает катастрофически медленно.
 +
 
 +
=== Почему стохастический метод (SGD) работает быстрее? ===
 +
В индустрии машинного и глубокого обучения повсеместно применяется '''[[Стохастический градиентный спуск|стохастический градиентный спуск]]''' (Stochastic Gradient Descent, SGD).
 +
 
 +
Идея метода заключается в том, что вместо вычисления точного среднего градиента по миллиону объектов, мы оцениваем его по '''одному случайно выбранному''' объекту <tex>x_i</tex>. На каждом шаге веса обновляются мгновенно:
::<tex>w_t = w_{t-1} - h \nabla_w \mathcal{L}(y_i, a(x_i, w_{t-1}))</tex>
::<tex>w_t = w_{t-1} - h \nabla_w \mathcal{L}(y_i, a(x_i, w_{t-1}))</tex>
-
Чаще всего используется промежуточный пакетный вариант (Mini-batch SGD). При нём шаг делается по небольшой группе объектов (батчу). Это позволяет эффективно обучать огромные нейронные сети за счёт распараллеливания вычислений на видеокартах (GPU).
+
Вместо вычисления 1 000 000 градиентов мы вычисляем всего один. Пока классический алгоритм будет делать один-единственный тяжелый шаг по всей выборке, метод SGD успеет сделать миллион быстрых шагов и уйти далеко вперёд в сторону оптимума. Хотя траектория движения SGD получается шумной и «скачущей» (стохастической), в среднем он сходится к решению в сотни раз быстрее.
 +
 
 +
На практике чаще всего используется промежуточный пакетный вариант (Mini-batch SGD). При нём шаг делается не по одному объекту, а по небольшой группе объектов (батчу, обычно от 32 до 256 штук). Это снижает случайный шум стохастического градиента и позволяет эффективно распараллеливать вычисления на видеокартах (GPU).
 +
== См. также ==
 +
* [[Теория Вапника-Червоненкиса]]
 +
* [[Переобучение]]
 +
* [[Регуляризация]]
 +
 
 +
== Примечания ==
 +
<references/>
== Литература ==
== Литература ==

Версия 16:12, 25 июня 2026

СТАТЬЯ В РАЗРАБОТКЕ: Этот материал сейчас находится в процессе активного редактирования и доработки участником Polina Khadralinova. Просьба не оценивать статью до снятия этой пометки.


Содержание

Минимизация эмпирического риска (англ. Empirical Risk Minimization, ERM) — это фундаментальный принцип машинного обучения. Он заключается в том, что из заданного семейства моделей мы выбираем ту, которая показывает наименьшую ошибку на доступных тренировочных данных.

Поскольку мы никогда не знаем всех возможных данных в природе, мы не можем измерить «истинную» ошибку модели. Принцип ERM постулирует, что вместо недоступной истинной ошибки мы можем опираться на её практическую оценку — эмпирический риск.

Введение

Задача машинного обучения с учителем формулируется так. У нас есть множество объектов X (например, фотографии) и множество допустимых ответов Y (например, метки «кошка» или «собака»). Существует скрытая закономерность — идеальное правило y^*: X \to Y.

Мы не знаем эту закономерность целиком. Нам доступна лишь конечная обучающая выборка X^{\ell} = \{ (x_i, y_i) \}_{i=1}^{\ell}.

Наша цель — найти такой алгоритм a: X \to Y из заданного семейства моделей A = \{ a(x, w) \mid w \in W \}, который не просто запомнит правильные ответы для обучающей выборки, но и сможет эффективно (с минимальным количеством ошибок) работать на новых данных. Ошибку модели на конкретном объекте мы измеряем с помощью функции потерь \mathcal{L}(y, a(x)).

Историческая справка

Истоки принципа минимизации эмпирического риска восходят к философской концепции эмпирической индукции Фрэнсиса Бэкона (1620 г.), утверждавшего, что законы природы необходимо выводить путём обобщения фактов опыта, а не постулировать умозрительно.

В строгой математической форме этот принцип впервые был применён Карлом Фридрихом Гауссом в 1795 году при разработке метода наименьших квадратов для расчёта орбит небесных тел. Гаусс предложил искать параметры модели, минимизируя сумму квадратов отклонений предсказанных значений от наблюдаемых. Позже, в 1936 году, Рональд Фишер применил схожий принцип для задачи классификации (линейный дискриминантный анализ).

Своё современное теоретико-вероятностное обоснование принцип ERM получил в конце 1960-х — начале 1970-х годов в трудах советских математиков В. Н. Вапника и А. Я. Червоненкиса. В рамках созданной ими статистической теории обучения (теории Вапника-Червоненкиса) были строго сформулированы условия состоятельности принципа минимизации эмпирического риска и получены оценки скорости сходимости ошибки.

Ожидаемый и эмпирический риск

В теории машинного обучения мы считаем, что данные не появляются из ниоткуда. Существует неизвестное вероятностное распределение P(x, y) на пространстве X \times Y. Все наши объекты и ответы генерируются независимо из этого распределения.

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

R(a) = \mathbb{E}_{x,y \sim P} [\mathcal{L}(y, a(x))] = \int_{X \times Y} \mathcal{L}(y, a(x)) dP(x, y)

Интуитивная аналогия: Представьте, что вы готовитесь к сложному экзамену. Ожидаемый риск — это ваша реальная оценка на самом экзамене, где вам может попасться абсолютно любой билет по предмету. Мы хотим сдать экзамен на «отлично», то есть свести ожидаемый риск R(a) к минимуму.

Проблема в том, что заранее узнать все вопросы экзамена (распределение P(x, y)) невозможно. Поэтому вычислить ожидаемый риск R(a) напрямую нельзя.

Зачем нам нужен показатель, который невозможно вычислить? Ожидаемый риск — это наш главный теоретический ориентир. Он показывает, насколько хорошо модель работает глобально. Хотя мы не можем рассчитать его напрямую, вся математическая теория машинного обучения построена на поиске путей приблизиться к нему.

Поскольку у нас нет всех данных мира, мы используем билеты прошлых лет — нашу обучающую выборку X^{\ell}. Закон больших чисел говорит нам, что теоретическое математическое ожидание можно оценить на практике, просто усреднив ошибку на всех доступных данных. Так мы получаем эмпирический риск:

Q(a, X^{\ell}) = \frac{1}{\ell} \sum_{i=1}^{\ell} \mathcal{L}(y_i, a(x_i))

В нашей аналогии эмпирический риск Q(a, X^{\ell}) — это доля ошибок, которые вы делаете, решая старые билеты дома.

Метод минимизации эмпирического риска делает логичный шаг. Раз мы не можем минимизировать ошибку на всех данных мира, давайте найдём алгоритм a^* (или вектор весов w^*), который доставляет минимум этому функционалу на обучающей выборке:

a^* = \arg\min_{a \in A} Q(a, X^{\ell})$

Условия состоятельности и переобучение

Главной проблемой принципа ERM является явление переобучения (overfitting). Возвращаясь к нашей аналогии: если вы просто зазубрите наизусть ответы к билетам прошлых лет, ваш эмпирический риск дома будет равен нулю. Но на реальном экзамене при малейшем изменении формулировки вопроса вы провалитесь (истинный риск R(a) окажется высоким). Модель теряет способность к обобщению.

Чтобы гарантировать, что наш метод обучения на компьютере вообще работает и не является делом чистой случайности, математики ввели понятие состоятельности.

Зачем нужна состоятельность и равномерная сходимость?

Метод ERM называется строго состоятельным, если при увеличении объёма данных до бесконечности (\ell \to \infty) ошибка на обучении гарантированно приближается к реальной ошибке в жизни.

Однако простой сходимости для одной фиксированной модели недостаточно. Поскольку во время обучения мы ищем лучшую модель среди огромного семейства A, всегда есть риск найти «везучую» модель, которая случайно показала нулевую ошибку на тренировке, но будет бесполезна в реальности.

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

\lim_{\ell \to \infty} \mathbb{P} \left( \sup_{a \in A} |R(a) - Q(a, X^\ell)| > \epsilon \right) = 0

Оценка Вапника — Червоненкиса

Связующим мостом между теорией бесконечных данных и реальной практикой является знаменитая теорема Вапника — Червоненкиса. Она не просто постулирует предел, а математически доказывает его и показывает, с какой скоростью мы к нему приближаемся.

Согласно теореме, для конечной выборки объёмом \ell с вероятностью не менее 1 - \delta для любого алгоритма a \in A справедливо неравенство:

R(a) \le Q(a, X^{\ell}) + \sqrt{\frac{h \left( \ln\left(\frac{2\ell}{h}\right) + 1 \right) - \ln\left(\frac{\delta}{4}\right)}{\ell}},

где hVC-размерность (мера сложности) семейства моделей.

Правое слагаемое с квадратным корнем выступает в роли «штрафа за сложность» модели. Из него легко увидеть два фундаментальных правила:

  • Влияние объёма данных: Чем больше у нас данных \ell, тем меньше штрафной корень. При \ell \to \infty этот корень стремится к нулю, математически доказывая вышеописанный предел равномерной сходимости.
  • Влияние сложности модели: Чем сложнее семейство моделей h, тем больше штрафной корень и тем выше риск переобучения при фиксированном объёме данных.

Регуляризация

Для борьбы с переобучением метод ERM модифицируется. Мы не просто минимизируем ошибку на данных, но и штрафуем модель за излишнюю сложность. Этот подход известен как принцип структурной минимизации риска.

Оптимизируемый функционал принимает вид:

Q_{\text{reg}}(w, X^{\ell}) = \sum_{i=1}^{\ell} \mathcal{L}(y_i, a(x_i, w)) + \tau \mathcal{R}(w) \to \min_{w},

где \mathcal{R}(w) — функция-регуляризатор, запрещающая параметрам модели принимать слишком большие или сложные значения, а \tau > 0 — коэффициент регуляризации.

Наиболее часто используемые регуляризаторы:

  • L_2-регуляризация (гребневая, Ridge): \mathcal{R}(w) = \|w\|_2^2 = \sum_{j=1}^n w_j^2. Не даёт весам модели неограниченно расти.
  • L_1-регуляризация (Lasso): \mathcal{R}(w) = \|w\|_1 = \sum_{j=1}^n |w_j|. Способна занулять малозначимые признаки, упрощая итоговую модель.

Основные типы функций потерь

Выбор функции потерь \mathcal{L}(y, a(x)) строго зависит от типа решаемой задачи и природы данных.

В задачах регрессии

В задачах регрессии мы предсказываем действительные числа (Y = \mathbb{R}). Типичные функции потерь:

  • Квадратичная функция потерь (MSE, метод наименьших квадратов):
\mathcal{L}(y, a(x)) = (a(x) - y)^2
  • Особенности: Очень чувствительна к аномалиям в данных (выбросам). Поскольку ошибка возводится в квадрат, алгоритм будет изо всех сил пытаться подстроиться под редкие опечатки или шумы в данных, жертвуя качеством на нормальных объектах.
  • Абсолютная ошибка (MAE, модуль отклонения):
\mathcal{L}(y, a(x)) = |a(x) - y|
  • Особенности: Является робастной (устойчивой) функцией потерь. Она одинаково штрафует за малые и большие отклонения, поэтому просто игнорирует редкие аномальные выбросы, выстраивая наиболее устойчивую зависимость.

В задачах классификации

В бинарной классификации ответом является класс (Y = \{-1, +1\}). Самый естественный выбор — пороговая функция потерь, которая просто штрафует на единицу за несовпадение ответов и даёт ноль при правильном предсказании:

\mathcal{L}(y, a(x)) = [a(x) \neq y]

Однако минимизация такой функции на конечной выборке является дискретной NP-полной задачей комбинаторной оптимизации, так как функция потерь имеет вид «ступеньки» (у неё нулевой градиент почти везде, и её невозможно продифференцировать).

Для линейного классификатора a(x) = \text{sign}(\langle w, x \rangle) вводится понятие отступа (margin): M = y \langle w, x \rangle. Пороговая функция потерь выражается через отступ как [M < 0]. Чтобы применить методы градиентной оптимизации, пороговую функцию заменяют её гладкими или кусочно-гладкими верхними оценками \mathcal{L}(M):

\mathcal{L}(M) = \log_2(1 + e^{-M})
  • Особенности: Гладкая функция. Она плавно штрафует модель даже за правильные, но неуверенные предсказания (когда отступ M положителен, но мал). Это заставляет классификатор не просто угадывать класс, а делать это с максимальной уверенностью.
\mathcal{L}(M) = \max(0, 1 - M)
  • Особенности: Даёт ровно нулевую ошибку, если объект классифицирован правильно и с хорошим запасом (когда отступ M \ge 1). Это свойство приводит к тому, что оптимальное решение зависит только от небольшой доли объектов выборки (опорных векторов), делая решение разреженным.
  • Экспоненциальная функция потерь (применяется в алгоритме AdaBoost):
\mathcal{L}(M) = e^{-M}
  • Особенности: Очень жестко (экспоненциально) наказывает за ошибки (когда отступ M < 0). Позволяет быстро настраивать композиции алгоритмов, но крайне неустойчива к сильному шуму в данных.

Методы оптимизации

Когда функция потерь непрерывна и имеет производные по параметрам w (или хотя бы субградиенты), задачу минимизации эмпирического риска решают методами численной оптимизации.

Классический градиентный спуск

Исторически базовым алгоритмом является градиентный спуск (Gradient Descent, GD):

w_t = w_{t-1} - h \nabla_w Q(w_{t-1}, X^{\ell})

Распишем эту формулу подробнее, чтобы понять её физический смысл. Поскольку градиент суммы равен сумме градиентов, мы можем подставить формулу эмпирического риска прямо внутрь градиентного шага:

w_t = w_{t-1} - \frac{h}{\ell} \sum_{i=1}^{\ell} \nabla_w \mathcal{L}(y_i, a(x_i, w_{t-1}))

Разберём, из чего состоит это выражение:

  • w_{t-1} — вектор весов на предыдущем шаге оптимизации;
  • h — размер шага (темп обучения, learning rate);
  • \nabla_w \mathcal{L}(y_i, a(x_i, w_{t-1})) — вектор частных производных (градиент) функции потерь на конкретном i-м объекте. Он показывает направление наискорейшего роста ошибки на этом объекте. Знак «минус» перед ним заставляет нас двигаться в противоположную сторону — в сторону уменьшения ошибки.

Почему классический градиентный спуск работает медленно?

Обрати внимание на знак суммы \sum_{i=1}^{\ell} в формуле выше. Чтобы сделать всего один маленький шаг обновления весов w_t, компьютер вынужден совершить так называемый «полный проход по всей выборке» (full batch pass). То есть процессор должен:

  1. Вычислить градиенты функции потерь отдельно для каждого из \ell объектов нашей обучающей выборки.
  2. Сложить все эти векторы градиентов между собой.
  3. Разделить сумму на \ell, чтобы найти среднее направление спуска.

Если наш датасет огромен (например, в эпохе Big Data выборка составляет \ell = 1\,000\ 000 объектов), то для совершения одной крошечной итерации компьютеру придётся проделать один миллион тяжелых математических операций вычисления градиентов. Классический градиентный спуск в таких условиях работает катастрофически медленно.

Почему стохастический метод (SGD) работает быстрее?

В индустрии машинного и глубокого обучения повсеместно применяется стохастический градиентный спуск (Stochastic Gradient Descent, SGD).

Идея метода заключается в том, что вместо вычисления точного среднего градиента по миллиону объектов, мы оцениваем его по одному случайно выбранному объекту x_i. На каждом шаге веса обновляются мгновенно:

w_t = w_{t-1} - h \nabla_w \mathcal{L}(y_i, a(x_i, w_{t-1}))

Вместо вычисления 1 000 000 градиентов мы вычисляем всего один. Пока классический алгоритм будет делать один-единственный тяжелый шаг по всей выборке, метод SGD успеет сделать миллион быстрых шагов и уйти далеко вперёд в сторону оптимума. Хотя траектория движения SGD получается шумной и «скачущей» (стохастической), в среднем он сходится к решению в сотни раз быстрее.

На практике чаще всего используется промежуточный пакетный вариант (Mini-batch SGD). При нём шаг делается не по одному объекту, а по небольшой группе объектов (батчу, обычно от 32 до 256 штук). Это снижает случайный шум стохастического градиента и позволяет эффективно распараллеливать вычисления на видеокартах (GPU).

См. также

Примечания


Литература

  • Вапник В. Н., Червоненкис А. Я. Теория распознавания образов. — М.: Наука, 1974. — 416 с.
  • Вапник В. Н. Восстановление зависимостей по эмпирическим данным. — М.: Наука, 1979. — 448 с.
  • Hastie T., Tibshirani R., Friedman J. The Elements of Statistical Learning, 2nd edition. — Springer, 2009. — 745 с.
  • Воронцов К. В. Математические методы обучения по прецедентам. — М.: МФТИ, 2012.