Обсуждение участника:Imil Baltaniazov

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

(Различия между версиями)
Перейти к: навигация, поиск
 
(7 промежуточных версий не показаны.)
Строка 1: Строка 1:
 +
Байесовская оптимизация
 +
Контрастивное обучение
 +
Нормализация и стандартизация признаков
 +
Метрики качества в машинном обучении
 +
 +
Байесовская оптимизация
 +
 +
Ты специалист в области машинного обучения, профессор в ведущем техническом университете и популяризатор науки. Напиши энциклопедическую статью для MachineLearning.ru на тему «Байесовская оптимизация».
 +
Целевая аудитория: мотивированные студенты, преподаватели и специалисты в AI/ML. Статья должна быть полезна новичку: дать понятные определения, объяснить идею оптимизации чёрных ящиков, разницу между байесовской оптимизацией и другими методами (сеточный поиск, случайный поиск). Профессионалу статья должна дать математическую постановку, объяснить компоненты: суррогатная модель (гауссовский процесс), функция приобретения (EI, UCB, PI), стратегию выбора следующей точки.
 +
Обязательные разделы:
 +
1. Введение (кратко, 2-3 абзаца)
 +
2. Постановка задачи (оптимизация чёрного ящика) + сравнение с сеточным и случайным поиском в виде таблицы
 +
3. Интуитивная идея (на пальчиковом уровне, метафора с картой местности)
 +
4. Компоненты метода: суррогатная модель (гауссовский процесс, формулы для mu_t(x) и sigma_t^2(x)), функция приобретения (PI, EI, UCB с формулами и таблицей сравнения)
 +
5. Математическая схема (байесовское обновление, гарантии сходимости GP-UCB)
 +
6. Алгоритм (псевдокод)
 +
7. Пример: настройка гиперпараметров градиентного бустинга для задачи кредитного скоринга — с таблицей гиперпараметров и сравнением со случайным поиском
 +
8. Достоинства и ограничения (списками)
 +
9. Варианты расширений: многомерная оптимизация, оптимизация с ограничениями, многокритериальная, мультифидельная (BOHB), поиск архитектур нейронных сетей (кратко)
 +
10. Литература (реальные источники)
 +
Стиль академичный, ясный, без рекламных фраз и нейросетевых штампов. Избегай излишней длины — статья должна быть содержательной, но читаемой за 15-20 минут. Формулы оформляй только через <tex>...</tex>, выключные формулы через :: <tex>...</tex>. Термины оформляй как внутренние ссылки. В начале статьи добавь предупреждение: {{well|Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 14:49, 10 июля 2026 (MSD)}}
 +
Выдай только сырой вики-код статьи.
 +
 +
{{well|Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 15:00, 10 июля 2026 (MSD)}}
 +
 +
'''Байесовская оптимизация''' ({{lang-en|Bayesian optimization}}) — метод глобальной оптимизации чёрных ящиков, основанный на построении вероятностной [[суррогатная модель|суррогатной модели]] целевой функции и последовательном выборе точек для оценки на основе так называемой [[функция приобретения|функции приобретения]]. Метод предназначен для задач, в которых целевая функция дорого стоит вычислительно или ресурсно, не имеет аналитического выражения и недоступна для дифференцирования.
 +
 +
== Введение ==
 +
 +
Многие задачи в науке об анализе данных и инженерии сводятся к оптимизации функции, вычисление значения которой сопряжено с высокими затратами: запуск дорогостоящего эксперимента, длительное обучение [[нейронная сеть|нейронной сети]], симуляция физического процесса. В таких условиях классические методы оптимизации, требующие большого числа обращений к функции или знания её градиента, оказываются малопригодны. Байесовская оптимизация предлагает альтернативный подход: вместо того чтобы исследовать пространство параметров вслепую или по фиксированной сетке, метод на каждом шаге использует всю накопленную информацию о поведении функции, чтобы принять обоснованное решение о том, где провести следующее, потенциально самое информативное измерение.
 +
 +
Наибольшую известность байесовская оптимизация получила как инструмент настройки [[гиперпараметр]]ов моделей машинного обучения, однако область её применения существенно шире: автоматизированное проектирование экспериментов, робототехника, разработка лекарственных препаратов, оптимизация промышленных процессов и архитектур нейронных сетей. Общей чертой всех этих задач является то, что каждое обращение к целевой функции — это дорогостоящее действие, число которых должно быть минимизировано.
 +
 +
В основе метода лежит идея, восходящая к работам Й. Мокуса (J. Mockus) конца 1970-х годов и получившая широкое развитие с появлением алгоритма Efficient Global Optimization (EGO) в конце 1990-х. В последнее десятилетие байесовская оптимизация стала стандартным инструментом автоматического машинного обучения ([[AutoML]]) и лежит в основе многих популярных библиотек подбора гиперпараметров.
 +
 +
== Постановка задачи ==
 +
 +
Рассматривается задача поиска глобального максимума функции <tex>f</tex>, заданной на компактном множестве <tex>\mathcal{X} \subseteq \mathbb{R}^d</tex>:
 +
 +
:: <tex>x^{*} = \arg\max_{x \in \mathcal{X}} f(x)</tex>
 +
 +
Без ограничения общности рассматривается задача максимизации; задача минимизации сводится к ней заменой <tex>f</tex> на <tex>-f</tex>. Функция <tex>f</tex> называется '''чёрным ящиком''' ({{lang-en|black box}}), если выполнены следующие условия:
 +
 +
* аналитическое выражение функции неизвестно, доступны только её значения в запрашиваемых точках («оракульный» доступ);
 +
* градиент <tex>\nabla f</tex> недоступен и не может быть эффективно вычислен;
 +
* каждое обращение к функции требует значительных затрат времени, вычислительных ресурсов или денег;
 +
* наблюдения могут быть зашумлены: <tex>y_i = f(x_i) + \varepsilon_i</tex>, где <tex>\varepsilon_i \sim \mathcal{N}(0,\sigma_n^2)</tex>.
 +
 +
Задача состоит в том, чтобы найти точку, максимально близкую к <tex>x^*</tex>, использовав как можно меньше обращений к <tex>f</tex>. Именно ограниченность бюджета оценок отличает постановку задачи байесовской оптимизации от классических задач непрерывной оптимизации, где число вычислений функции и градиента практически не ограничено.
 +
 +
=== Сравнение с сеточным и случайным поиском ===
 +
 +
Наиболее простые альтернативы байесовской оптимизации при подборе параметров — [[сеточный поиск]] ({{lang-en|grid search}}) и [[случайный поиск]] ({{lang-en|random search}}). Их принципиальное отличие в том, что они не используют информацию о ранее полученных значениях функции при выборе следующей точки.
 +
 +
{| class="wikitable"
 +
|-
 +
! Критерий !! Сеточный поиск !! Случайный поиск !! Байесовская оптимизация
 +
|-
 +
| Использование истории наблюдений || Нет || Нет || Да, через суррогатную модель
 +
|-
 +
| Стратегия выбора точек || Фиксированная регулярная сетка || Случайная выборка из распределения || Адаптивный выбор по функции приобретения
 +
|-
 +
| Масштабируемость по размерности || Экспоненциальный рост числа узлов || Не зависит явно от размерности, но эффективность падает || Умеренная (эффективна примерно до 15–20 непрерывных переменных)
 +
|-
 +
| Учёт неравнозначности параметров || Нет || Нет (лишь статистически) || Да, за счёт обучаемых длин корреляции ядра
 +
|-
 +
| Эффективность при малом бюджете итераций || Низкая || Средняя || Высокая
 +
|-
 +
| Теоретические гарантии сходимости || Только при исчерпании сетки || Вероятностные, при бесконечном числе итераций || Доказаны для ряда стратегий (например, GP-UCB)
 +
|-
 +
| Возможность параллелизации || Тривиальная || Тривиальная || Требует специальных модификаций (batch-стратегии)
 +
|-
 +
| Сложность реализации и настройки || Низкая || Очень низкая || Средняя (выбор ядра, функции приобретения)
 +
|}
 +
 +
Случайный поиск, как показали Бергстра и Бенжио (Bergstra, Bengio, 2012), как правило превосходит сеточный за счёт того, что не тратит ресурсы на менее значимые измерения пространства. Байесовская оптимизация идёт дальше: она направленно исследует область, руководствуясь текущими представлениями о форме функции, что даёт заметный выигрыш именно при малом бюджете вычислений.
 +
 +
== Интуитивная идея ==
 +
 +
Представим геодезиста, который ищет самую высокую точку неизвестной, покрытой туманом местности. Единственный доступный ему инструмент — дорогостоящее бурение: в произвольной точке можно пробурить скважину и точно узнать высоту рельефа именно в этой точке, но каждое бурение стоит времени и денег, поэтому число скважин строго ограничено.
 +
 +
После нескольких первых, случайно расположенных скважин геодезист строит приближённую карту местности — не единственную «наиболее вероятную» поверхность, а целое семейство правдоподобных поверхностей, согласующихся с уже полученными измерениями. В точках рядом с уже пробуренными скважинами карта достаточно уверенная — рельеф там хорошо предсказывается. В удалённых, ещё не исследованных областях карта крайне неопределённа: там может скрываться как ровнина, так и высочайшая вершина.
 +
 +
Выбирая место следующей скважины, геодезист балансирует между двумя стратегиями. Он может бурить там, где карта предсказывает наибольшую высоту (эксплуатация уже накопленных знаний), либо там, где неопределённость максимальна и потенциально скрывается сюрприз (исследование). Именно эта комбинация — «бурить там, где, по нашим представлениям, скорее всего находится вершина, с поправкой на то, что неисследованные места могут преподнести неожиданность» — и есть суть байесовской оптимизации. Роль карты играет [[суррогатная модель]] (обычно [[гауссовский процесс]]), а роль правила выбора следующей скважины — [[функция приобретения]].
 +
 +
== Компоненты метода ==
 +
 +
=== Суррогатная модель: гауссовский процесс ===
 +
 +
Наиболее распространённой суррогатной моделью в байесовской оптимизации выступает [[гауссовский процесс]] (Gaussian Process, GP) — распределение вероятностей на пространстве функций, полностью определяемое функцией среднего <tex>m(x)</tex> и ковариационной функцией (ядром) <tex>k(x,x')</tex>:
 +
 +
:: <tex>f(x) \sim \mathcal{GP}\big(m(x),\, k(x,x')\big)</tex>
 +
 +
На практике часто принимают <tex>m(x)=0</tex>, а всю содержательную информацию о гладкости и масштабе изменчивости функции кодируют в ядре. Типичный выбор — квадратично-экспоненциальное (гауссово) ядро
 +
 +
:: <tex>k(x,x') = \sigma_f^2 \exp\!\left(-\frac{\|x-x'\|^2}{2\ell^2}\right)</tex>
 +
 +
или семейство ядер Матерна, обеспечивающих менее жёсткое предположение о гладкости. Параметры ядра — длина корреляции <tex>\ell</tex>, дисперсия сигнала <tex>\sigma_f^2</tex> и дисперсия шума <tex>\sigma_n^2</tex> — подбираются максимизацией логарифма маргинального правдоподобия:
 +
 +
:: <tex>\log p(\mathbf{y}\mid X) = -\frac{1}{2}\mathbf{y}^\top (K+\sigma_n^2 I)^{-1}\mathbf{y} - \frac{1}{2}\log\left|K+\sigma_n^2 I\right| - \frac{t}{2}\log 2\pi</tex>
 +
 +
Ключевое свойство гауссовского процесса состоит в том, что при условии на уже полученные наблюдения <tex>\mathcal{D}_t=\{(x_i,y_i)\}_{i=1}^{t}</tex> апостериорное распределение значения функции в произвольной точке <tex>x</tex> вновь является гауссовским, с явно выражаемыми параметрами:
 +
 +
:: <tex>\mu_t(x) = \mathbf{k}_t(x)^\top \big(K_t + \sigma_n^2 I\big)^{-1} \mathbf{y}_{1:t}</tex>
 +
 +
:: <tex>\sigma_t^2(x) = k(x,x) - \mathbf{k}_t(x)^\top \big(K_t + \sigma_n^2 I\big)^{-1} \mathbf{k}_t(x)</tex>
 +
 +
где <tex>\mathbf{k}_t(x) = \big[k(x,x_1),\dots,k(x,x_t)\big]^\top</tex>, <tex>K_t</tex> — матрица Грама с элементами <tex>[K_t]_{ij}=k(x_i,x_j)</tex>, а <tex>\mathbf{y}_{1:t}=[y_1,\dots,y_t]^\top</tex>. Функция <tex>\mu_t(x)</tex> задаёт текущую наилучшую оценку значения функции, а <tex>\sigma_t^2(x)</tex> — меру неопределённости этой оценки, естественным образом убывающую вблизи уже исследованных точек.
 +
 +
=== Функция приобретения ===
 +
 +
Апостериорное распределение GP само по себе не указывает, куда направить следующее измерение. Эту роль играет [[функция приобретения]] <tex>a(x)</tex> — скалярная функция, вычисляемая из <tex>\mu_t(x)</tex> и <tex>\sigma_t(x)</tex>, значение которой велико в точках, перспективных для оценки. Следующая точка выбирается как
 +
 +
:: <tex>x_{t+1} = \arg\max_{x \in \mathcal{X}} a(x \mid \mathcal{D}_t)</tex>
 +
 +
Эта вспомогательная задача оптимизации сама по себе не является дорогостоящей (функция приобретения вычисляется аналитически из GP), поэтому её решают классическими методами — многостартовым L-BFGS, CMA-ES или плотным перебором.
 +
 +
Пусть <tex>f^{+}=\max_i y_i</tex> — наилучшее из наблюдённых значений (инкумбент), а <tex>\Phi</tex> и <tex>\phi</tex> — функция распределения и плотность стандартного нормального распределения.
 +
 +
'''Вероятность улучшения''' (Probability of Improvement, PI), предложенная Кушнером (Kushner, 1964):
 +
 +
:: <tex>\mathrm{PI}(x) = \Phi\!\left(\frac{\mu_t(x) - f^{+} - \xi}{\sigma_t(x)}\right)</tex>
 +
 +
'''Ожидаемое улучшение''' (Expected Improvement, EI), введённое Мокусом и популяризированное в алгоритме EGO (Jones, Schonlau, Welch, 1998):
 +
 +
:: <tex>\mathrm{EI}(x) = \begin{cases} \big(\mu_t(x)-f^{+}-\xi\big)\,\Phi(z) + \sigma_t(x)\,\phi(z), & \sigma_t(x)>0 \\ 0, & \sigma_t(x)=0 \end{cases}</tex>
 +
 +
где <tex>z = \dfrac{\mu_t(x)-f^{+}-\xi}{\sigma_t(x)}</tex>.
 +
 +
'''Верхняя доверительная граница''' (Upper Confidence Bound, GP-UCB), обоснованная теоретически Шринивасом с соавторами (Srinivas et al., 2010):
 +
 +
:: <tex>\mathrm{UCB}(x) = \mu_t(x) + \sqrt{\beta_t}\,\sigma_t(x)</tex>
 +
 +
Во всех формулах параметр <tex>\xi \geqslant 0</tex> (для PI и EI) или <tex>\beta_t</tex> (для UCB) управляет соотношением исследования и эксплуатации: увеличение параметра смещает предпочтение в сторону точек с высокой неопределённостью. При зашумлённых наблюдениях в качестве инкумбента <tex>f^{+}</tex> корректнее использовать не наилучшее наблюдённое значение <tex>y_i</tex>, а наилучшее значение апостериорного среднего <tex>\mu_t(x_i)</tex>.
 +
 +
{| class="wikitable"
 +
|-
 +
! Функция !! Учитывает !! Склонность !! Параметр !! Теоретические гарантии
 +
|-
 +
| PI || Только вероятность превышения порога || Излишне «жадная», недооценивает величину улучшения || <tex>\xi</tex> || Практически отсутствуют
 +
|-
 +
| EI || Вероятность и ожидаемую величину улучшения || Сбалансированное поведение, наиболее распространённый выбор || <tex>\xi</tex> || Есть асимптотические результаты сходимости
 +
|-
 +
| UCB || Явный компромисс среднего и неопределённости || Легко настраиваемая, интерпретируемая агрессивность исследования || <tex>\beta_t</tex> || Доказана оценка регрета (GP-UCB, Srinivas et al., 2010)
 +
|}
 +
 +
== Математическая схема ==
 +
 +
Байесовская оптимизация представляет собой последовательный процесс байесовского обновления. На шаге <tex>t</tex> апостериорное распределение <tex>p(f\mid \mathcal{D}_{t-1})</tex>, полученное по формулам предыдущего раздела, используется для выбора точки <tex>x_t</tex> максимизацией функции приобретения. После получения наблюдения <tex>y_t=f(x_t)+\varepsilon_t</tex> набор данных пополняется: <tex>\mathcal{D}_t = \mathcal{D}_{t-1}\cup\{(x_t,y_t)\}</tex>, и апостериорное распределение пересчитывается — это и есть байесовское обновление, применяемое последовательно T раз при бюджете в T измерений.
 +
 +
Качество стратегии принято характеризовать величиной '''регрета'''. Простой регрет после <tex>T</tex> шагов:
 +
 +
:: <tex>r_T = f(x^{*}) - \max_{t\leqslant T} f(x_t)</tex>
 +
 +
Кумулятивный регрет:
 +
 +
:: <tex>R_T = \sum_{t=1}^{T} \big[f(x^{*}) - f(x_t)\big]</tex>
 +
 +
Стратегия называется «безрегретной» ({{lang-en|no-regret}}), если <tex>R_T/T \to 0</tex> при <tex>T\to\infty</tex>, что влечёт сходимость простого регрета к нулю. Для GP-UCB Шриниваc с соавторами (2010) доказали следующий результат: если для конечного (или дискретизированного) множества <tex>\mathcal{X}</tex> положить
 +
 +
:: <tex>\beta_t = 2\log\!\left(\frac{|\mathcal{X}|\,t^2\pi^2}{6\delta}\right)</tex>
 +
 +
то с вероятностью не менее <tex>1-\delta</tex> кумулятивный регрет ограничен как
 +
 +
:: <tex>R_T \leqslant \sqrt{C_1\, T\, \beta_T\, \gamma_T}</tex>
 +
 +
где <tex>C_1 = 8/\log(1+\sigma_n^{-2})</tex>, а <tex>\gamma_T</tex> — максимальный информационный выигрыш ({{lang-en|maximum information gain}}), характеризующий сложность класса функций, порождаемого ядром GP. Для гауссова ядра <tex>\gamma_T = O\big((\log T)^{d+1}\big)</tex>, для ядра Матерна с параметром гладкости <tex>\nu</tex> — <tex>\gamma_T = O\big(T^{\frac{d(d+1)}{2\nu+d(d+1)}}\log T\big)</tex>. Поскольку в обоих случаях <tex>\gamma_T</tex> растёт медленнее <tex>T</tex>, оценка гарантирует сублинейный рост <tex>R_T</tex> и, следовательно, сходимость GP-UCB к глобальному оптимуму.
 +
 +
== Алгоритм ==
 +
 +
Ниже приведена обобщённая псевдокодовая схема, справедливая для большинства реализаций байесовской оптимизации на основе гауссовского процесса.
 +
 +
<pre>
 +
Вход: чёрный ящик f, область поиска X, бюджет T,
 +
размер начального плана n0, функция приобретения a
 +
 +
1. Сформировать начальный план {x_1, ..., x_n0}
 +
(например, латинский гиперкуб или последовательность Соболя)
 +
2. Для i = 1 .. n0: вычислить y_i = f(x_i)
 +
3. D <- {(x_1,y_1), ..., (x_n0,y_n0)}
 +
 +
4. Для t = n0+1 .. T:
 +
4.1 Обучить гауссовский процесс на D:
 +
подобрать гиперпараметры ядра максимизацией
 +
маргинального правдоподобия
 +
4.2 Вычислить apostериорные mu(x), sigma^2(x) по формулам GP
 +
4.3 x_t <- argmax_{x in X} a(x | D) // вспомогательная оптимизация
 +
4.4 y_t <- f(x_t) // дорогостоящее обращение к оракулу
 +
4.5 D <- D U {(x_t, y_t)}
 +
 +
5. Вернуть x+ = argmax_{(x_i,y_i) in D} y_i
 +
</pre>
 +
 +
== Пример: настройка гиперпараметров градиентного бустинга для кредитного скоринга ==
 +
 +
Рассмотрим типовую задачу [[кредитный скоринг|кредитного скоринга]]: построение бинарного классификатора, предсказывающего вероятность дефолта заёмщика, с использованием модели [[градиентный бустинг|градиентного бустинга]] (например, XGBoost, LightGBM или CatBoost). В качестве целевой метрики обычно выступает [[AUC-ROC|площадь под ROC-кривой]] (AUC), оцениваемая по [[кросс-валидация|кросс-валидации]]. Один запуск обучения с фиксированным набором гиперпараметров и последующей k-блочной кросс-валидацией может занимать от нескольких минут до часов — это и есть «дорогой чёрный ящик» в терминах задачи.
 +
 +
{| class="wikitable"
 +
|-
 +
! Гиперпараметр !! Диапазон !! Тип !! Шкала
 +
|-
 +
| learning_rate (темп обучения) || [0.01; 0.3] || вещественный || логарифмическая
 +
|-
 +
| max_depth (глубина дерева) || [3; 10] || целочисленный || линейная
 +
|-
 +
| n_estimators (число деревьев) || [100; 1000] || целочисленный || линейная
 +
|-
 +
| subsample (доля объектов) || [0.5; 1.0] || вещественный || линейная
 +
|-
 +
| colsample_bytree (доля признаков) || [0.5; 1.0] || вещественный || линейная
 +
|-
 +
| min_child_weight || [1; 50] || целочисленный || линейная
 +
|-
 +
| reg_lambda (L2-регуляризация) || [1e-3; 10] || вещественный || логарифмическая
 +
|-
 +
| reg_alpha (L1-регуляризация) || [1e-3; 10] || вещественный || логарифмическая
 +
|}
 +
 +
Целевая функция в этом случае — <tex>f(\theta) = \mathrm{AUC}_{\mathrm{CV}}(\theta)</tex>, где <tex>\theta</tex> — вектор из восьми перечисленных гиперпараметров, а оптимизация ведётся на максимум. Типичная схема запуска: начальный план из 10–15 точек по латинскому гиперкубу, далее 30–50 итераций байесовской оптимизации с GP-суррогатом (ядро Матерна 5/2) и функцией приобретения EI.
 +
 +
Ниже приведён иллюстративный пример типичной динамики, наблюдаемой при сравнении со случайным поиском на подобных задачах — конкретные числа условны и предназначены для демонстрации характера сходимости, а не воспроизводят результаты определённого эксперимента.
 +
 +
{| class="wikitable"
 +
|-
 +
! Число обращений к f !! Лучший AUC, случайный поиск !! Лучший AUC, байесовская оптимизация
 +
|-
 +
| 10 || 0,780 || 0,795
 +
|-
 +
| 25 || 0,791 || 0,804
 +
|-
 +
| 50 || 0,798 || 0,808
 +
|-
 +
| 100 || 0,803 || 0,809
 +
|-
 +
| 200 || 0,807 || 0,810
 +
|}
 +
 +
Характерная картина: байесовская оптимизация достигает качества, сопоставимого с результатом случайного поиска при существенно большем бюджете, уже за первые несколько десятков итераций — это и есть проявление её выборочной эффективности ({{lang-en|sample efficiency}}), особенно ценной при дорогой целевой функции. Сходный вывод — превосходство байесовской оптимизации над случайным поиском при настройке гиперпараметров моделей машинного обучения — получен Снук с соавторами (Snoek, Larochelle, Adams, 2012).
 +
 +
== Достоинства и ограничения ==
 +
 +
'''Достоинства:'''
 +
* высокая эффективность по числу обращений к целевой функции, особенно значимая при дорогих вычислениях;
 +
* корректная работа с зашумлёнными наблюдениями благодаря вероятностной природе модели;
 +
* явная количественная оценка неопределённости, позволяющая осмысленно управлять балансом исследования и эксплуатации;
 +
* отсутствие требования к дифференцируемости или явной аналитической форме целевой функции;
 +
* возможность включения априорных знаний через выбор ядра, функции среднего или ограничений;
 +
* хорошая применимость к экспериментальным и симуляционным задачам, где каждое измерение стоит дорого.
 +
 +
'''Ограничения:'''
 +
* кубическая сложность обучения гауссовского процесса по числу наблюдений (<tex>O(t^3)</tex>), что без разреженных аппроксимаций ограничивает практический бюджет итераций несколькими сотнями–тысячами;
 +
* заметная деградация качества при высокой размерности пространства поиска (свыше примерно 15–20 непрерывных переменных без специальных приёмов);
 +
* чувствительность к выбору ядра и способу настройки его гиперпараметров;
 +
* последовательная по своей природе процедура, затрудняющая тривиальную параллелизацию (хотя существуют пакетные, batch-модификации);
 +
* нетривиальная работа с дискретными, категориальными и условными (conditional) параметрами без специальных модификаций ядра или кодирования;
 +
* вспомогательная задача максимизации функции приобретения сама может быть многоэкстремальной и требовать многостартовой оптимизации.
 +
 +
== Варианты расширений ==
 +
 +
;Многомерная оптимизация
 +
:При росте размерности пространства поиска стандартный GP-подход теряет эффективность. Для смягчения проблемы применяют случайные вложения меньшей размерности (метод REMBO), аддитивные модели GP, а также методы, сужающие область поиска до доверительного региона на каждой итерации (TuRBO).
 +
 +
;Оптимизация с ограничениями
 +
:Если помимо целевой функции присутствуют дорогостоящие ограничения <tex>c(x)\leqslant 0</tex>, применяется модификация функции приобретения — например, взвешивание EI вероятностью допустимости точки, оцениваемой отдельным GP-классификатором ограничения (constrained EI).
 +
 +
;Многокритериальная оптимизация
 +
:При нескольких одновременно оптимизируемых целях вместо единственной точки ищется [[множество Парето|множество Парето-оптимальных]] решений. Используются функции приобретения вроде ожидаемого прироста гиперобъёма (Expected Hypervolume Improvement, EHVI) или скаляризационные подходы (ParEGO).
 +
 +
;Мультифидельная оптимизация (BOHB)
 +
:Когда доступны дешёвые приближённые оценки функции (например, обучение на подвыборке данных или при малом числе эпох), их можно использовать наряду с дорогими точными измерениями. Алгоритм BOHB (Falkner, Klein, Hutter, 2018) сочетает бандитскую схему распределения ресурсов Hyperband с байесовской моделью выбора конфигураций, ускоряя сходимость по сравнению с обычной GP-оптимизацией.
 +
 +
;Поиск архитектур нейронных сетей (NAS)
 +
:Байесовская оптимизация применяется и для поиска архитектур [[нейронная сеть|нейронных сетей]] — здесь пространство поиска дискретно, комбинаторно велико, а оценка каждой точки (обучение сети) крайне дорога. Для работы с такими пространствами используют специальные ядра, определённые на графах архитектур (например, на основе расстояния оптимального переноса, как в NASBOT), либо комбинируют байесовскую оптимизацию с методами разделения весов и другими техниками ускорения оценки кандидатов.
 +
 +
== Литература ==
 +
 +
# Mockus J. On Bayesian methods for seeking the extremum // Optimization Techniques IFIP Technical Conference. — 1975.
 +
# Jones D. R., Schonlau M., Welch W. J. Efficient Global Optimization of Expensive Black-Box Functions // Journal of Global Optimization. — 1998. — Vol. 13. — P. 455–492.
 +
# Rasmussen C. E., Williams C. K. I. Gaussian Processes for Machine Learning. — MIT Press, 2006.
 +
# Brochu E., Cora V. M., de Freitas N. A Tutorial on Bayesian Optimization of Expensive Cost Functions, with Application to Active User Modeling and Hierarchical Reinforcement Learning. — arXiv:1012.2599, 2010.
 +
# Srinivas N., Krause A., Kakade S., Seeger M. Gaussian Process Optimization in the Bandit Setting: No Regret and Experimental Design // Proceedings of ICML. — 2010.
 +
# Bergstra J., Bengio Y. Random Search for Hyper-Parameter Optimization // Journal of Machine Learning Research. — 2012. — Vol. 13. — P. 281–305.
 +
# Snoek J., Larochelle H., Adams R. P. Practical Bayesian Optimization of Machine Learning Algorithms // Advances in Neural Information Processing Systems (NeurIPS). — 2012.
 +
# Shahriari B., Swersky K., Wang Z., Adams R. P., de Freitas N. Taking the Human Out of the Loop: A Review of Bayesian Optimization // Proceedings of the IEEE. — 2016. — Vol. 104, № 1. — P. 148–175.
 +
# Falkner S., Klein A., Hutter F. BOHB: Robust and Efficient Hyperparameter Optimization at Scale // Proceedings of ICML. — 2018.
 +
# Frazier P. I. A Tutorial on Bayesian Optimization. — arXiv:1807.02811, 2018.
 +
 +
[[Категория:Машинное обучение]]
 +
[[Категория:Методы оптимизации]]
 +
[[Категория:Автоматическое машинное обучение]]
 +
 +
 +
 +
 +
 +
 +
Контрастивное обучение
 +
 +
 +
 +
 +
Ты специалист в области машинного обучения, профессор в ведущем техническом университете и популяризатор науки. Напиши энциклопедическую статью для MachineLearning.ru на тему «Контрастивное обучение».
 +
 +
Целевая аудитория: мотивированные студенты, преподаватели и специалисты в AI/ML. Статья должна быть полезна новичку: дать понятные определения, объяснить основную идею "притягивать похожее, отталкивать разное" на пальчиковом уровне с понятными примерами. Профессионалу статья должна дать математическую формализацию (функции потерь: InfoNCE, Triplet Loss, SimCLR), объяснить архитектурные решения (Siamese networks, проекционная головка), стратегии аугментации данных и проблему "коллапса представлений".
 +
 +
Обязательные разделы:
 +
1. Введение (кратко, 2-3 абзаца, с историей: Hadsell et al. 2006, Oord et al. 2018, Chen et al. 2020 SimCLR)
 +
2. Постановка задачи: обучение представлений без меток (self-supervised learning)
 +
3. Интуитивная идея: на примере пар изображений, что такое "позитивные" и "негативные" пары
 +
4. Математическая формализация: Triplet Loss, InfoNCE, NT-Xent — формулы
 +
5. Архитектурные решения: Siamese networks, проекционная головка (MLP), симметричные и асимметричные архитектуры
 +
6. Стратегии аугментации: для изображений, текста, графов
 +
7. Проблема коллапса представлений и способы борьбы (stop-gradient, отрицательные примеры, нормализация)
 +
8. Основные методы: SimCLR, MoCo, BYOL, SimSiam (кратко, с таблицей сравнения)
 +
9. Связь с CLIP и мультимодальными моделями
 +
10. Пример: обучение представлений на CIFAR-10 с SimCLR (условные цифры, не обязательно точные)
 +
11. Достоинства и ограничения (списками)
 +
12. См. также (внутренние ссылки: Самообучение, Компьютерное зрение, Обработка естественного языка, CLIP, SimCLR, MoCo)
 +
13. Литература (реальные источники)
 +
 +
Важно: статья должна быть не слишком длинной — оптимально 25-30 тысяч символов. Упомяни популярные библиотеки: PyTorch Lightning, Hugging Face.
 +
 +
Стиль академичный, ясный, без рекламных фраз и нейросетевых штампов. Формулы оформляй только через <tex>...</tex>, выключные формулы через :: <tex>...</tex>. Термины оформляй как внутренние ссылки. В начале статьи добавь предупреждение: {{well|Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 15:00, 10 июля 2026 (MSD)}}
 +
 +
Выдай только сырой вики-код статьи.
 +
 +
 +
 +
```wikitext
 +
{{well|Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 15:00, 10 июля 2026 (MSD)}}
 +
 +
'''Контрастивное обучение''' (''contrastive learning'') — семейство методов [[Самообучение|самообучения]] (self-supervised learning), в которых модель обучается строить представления (embeddings) объектов исходя не из явных меток класса, а из отношений сходства между парами или наборами объектов. Основной принцип формулируется коротко: похожие объекты должны иметь близкие представления, непохожие — далёкие. Эта идея легла в основу современных методов предобучения в [[Компьютерное зрение|компьютерном зрении]], [[Обработка естественного языка|обработке естественного языка]] и мультимодальном обучении, включая модели типа [[CLIP]].
 +
 +
== Введение ==
 +
 +
Идея обучения по парам «похоже/непохоже» восходит к работам по метрическому обучению начала 1990-х годов, где сиамские нейронные сети применялись для верификации подписей (Bromley et al., 1993). Формальный вид современного контрастивного лосса был предложен в работе Hadsell, Chopra и LeCun (2006) «Dimensionality Reduction by Learning an Invariant Mapping», где для задачи снижения размерности использовалась функция потерь, притягивающая пары точек с одинаковой меткой окрестности и отталкивающая пары с разными метками — с использованием отступа (margin), аналогично более поздним триплет-лоссам.
 +
 +
Второй важный этап — работа ван ден Оорда и соавторов (Oord et al., 2018) «Representation Learning with Contrastive Predictive Coding», введшая функцию потерь InfoNCE и связавшая контрастивное обучение с оценкой взаимной информации между связанными фрагментами данных (например, соседними отрезками аудиосигнала). Это дало теоретическое обоснование того, почему контрастивные цели вообще позволяют извлекать полезные представления без разметки.
 +
 +
Третий, решающий для практики этап — статья Chen et al. (2020) «A Simple Framework for Contrastive Learning of Visual Representations» (SimCLR), показавшая, что при достаточно сильных аугментациях, большом размере батча и добавлении небольшой проекционной головки простая контрастивная цель на изображениях позволяет получить представления, по качеству приближающиеся к представлениям, полученным при обучении с учителем на ImageNet. После этой работы контрастивное обучение стало одним из основных подходов к предобучению без разметки, породив линейку методов — MoCo, BYOL, SimSiam — и в дальнейшем — мультимодальные модели вроде CLIP.
 +
 +
== Постановка задачи ==
 +
 +
Формально задача ставится так: имеется набор немаркированных данных <tex>X = \{x_1, \dots, x_N\}</tex> (изображения, тексты, графы, аудиозаписи). Требуется найти функцию-энкодер <tex>f_\theta: X \to \mathbb{R}^d</tex>, отображающую объект в вектор фиксированной размерности так, чтобы это представление было полезно для широкого круга последующих задач (downstream tasks) — классификации, кластеризации, поиска ближайших соседей, дообучения (fine-tuning).
 +
 +
В отличие от обучения с учителем, где обучающий сигнал задаётся парами <tex>(x, y)</tex> с истинной меткой <tex>y</tex>, в контрастивном обучении сигнал формируется искусственно, из самой структуры данных: каждому объекту сопоставляется один или несколько «позитивных» связанных объектов (например, другая аугментация той же картинки) и множество «негативных» — не связанных с ним объектов. Обучение сводится к минимизации функции потерь, зависящей только от взаимного расположения представлений в пространстве embedding, без обращения к внешней разметке.
 +
 +
Качество полученных представлений принято оценивать протоколом линейной оценки (linear evaluation protocol): веса энкодера замораживаются, поверх представления <tex>h = f_\theta(x)</tex> обучается только линейный классификатор с использованием размеченных данных, и измеряется точность этого классификатора. Такой протокол позволяет сравнивать разные методы предобучения независимо от архитектуры «головы» классификатора.
 +
 +
== Интуитивная идея ==
 +
 +
Рассмотрим простой пример. Пусть есть фотография кота. Применим к ней случайный кроп, поворот, изменение цветового баланса — получим другую картинку, которая всё ещё, безусловно, изображает кота. Эти две аугментированные версии одного изображения образуют '''позитивную пару''': сеть должна научиться отображать их в близкие точки пространства представлений, несмотря на то что попиксельно эти изображения могут сильно различаться.
 +
 +
Возьмём теперь произвольную другую фотографию из обучающей выборки — например, изображение автомобиля. Пара «кот — автомобиль» образует '''негативную пару''': их представления должны быть далеки друг от друга.
 +
 +
Удобная механическая аналогия — пружины и резинки в пространстве представлений. Позитивные пары соединены резинкой, которая стягивает их друг к другу; негативные пары соединены пружиной, которая их расталкивает. В равновесии объекты, похожие по смыслу, образуют плотные кластеры, а разнородные объекты расходятся — при этом сети ни разу не сообщалось явно, что перед ней «кот» или «автомобиль»: вся структура выучена из самой геометрии притяжения и отталкивания.
 +
 +
Важно, что позитивные пары не обязаны получаться только аугментацией одного изображения. В видео позитивной парой могут быть соседние кадры; в тексте — соседние предложения или фрагменты одного документа; в мультимодальных данных — изображение и подписывающий его текст.
 +
 +
== Математическая формализация ==
 +
 +
Пусть энкодер <tex>f_\theta</tex> отображает объект <tex>x</tex> в представление <tex>h = f_\theta(x)</tex>. Рассмотрим три исторически последовательных формулировки контрастивного лосса.
 +
 +
'''Triplet Loss.''' Функция была популяризирована в задачах метрического обучения, в частности в работе FaceNet (Schroff et al., 2015). Для тройки (якорь <tex>a</tex>, позитив <tex>p</tex>, негатив <tex>n</tex>) и функции расстояния <tex>d(u,v) = \|u - v\|_2</tex> лосс задаётся как:
 +
 +
:: <tex>\mathcal{L}_{triplet}(a,p,n) = \max\bigl(0,\; d(f(a),f(p))^2 - d(f(a),f(n))^2 + \alpha\bigr)</tex>
 +
 +
где <tex>\alpha</tex> — гиперпараметр отступа (margin). Лосс штрафует ситуацию, когда позитив не отделён от негатива хотя бы на величину <tex>\alpha</tex>; при выполнении неравенства с запасом градиент равен нулю. Существенный практический недостаток триплет-лосса — сильная зависимость от стратегии подбора триплетов (triplet mining): случайно выбранные тройки быстро становятся тривиальными (лосс равен нулю), и для эффективного обучения требуется добывать «трудные» негативы.
 +
 +
'''InfoNCE.''' Введена в работе Oord et al. (2018) в рамках метода Contrastive Predictive Coding. В отличие от триплет-лосса, сопоставляет один позитив сразу множеству негативов через softmax:
 +
 +
:: <tex>\mathcal{L}_{InfoNCE} = -\,\mathbb{E}\left[\log \frac{\exp\bigl(f(x)^{\top} f(x^{+})/\tau\bigr)}{\displaystyle\sum_{x_i \in \{x^+, x_1,\dots,x_{N-1}\}} \exp\bigl(f(x)^{\top} f(x_i)/\tau\bigr)}\right]</tex>
 +
 +
где <tex>x^+</tex> — позитивный пример, <tex>x_1,\dots,x_{N-1}</tex> — негативные примеры, <tex>\tau</tex> — параметр температуры. Авторы показали, что минимизация этого выражения эквивалентна максимизации нижней оценки взаимной информации <tex>I(x; x^+)</tex> между двумя связанными представлениями данных — отсюда название InfoNCE (information noise-contrastive estimation).
 +
 +
'''NT-Xent (SimCLR).''' В работе Chen et al. (2020) используется нормализованная температурная кросс-энтропия (normalized temperature-scaled cross entropy). Из батча размера <tex>N</tex> с помощью двух независимых случайных аугментаций формируется <tex>2N</tex> представлений; для каждой позитивной пары <tex>(i,j)</tex>, полученной из одного исходного изображения, лосс имеет вид:
 +
 +
:: <tex>\ell_{i,j} = -\log \frac{\exp\bigl(\mathrm{sim}(z_i,z_j)/\tau\bigr)}{\displaystyle\sum_{k=1}^{2N}\mathbb{1}_{[k\neq i]}\,\exp\bigl(\mathrm{sim}(z_i,z_k)/\tau\bigr)}</tex>
 +
 +
где <tex>\mathrm{sim}(u,v) = \dfrac{u^{\top}v}{\|u\|\,\|v\|}</tex> — косинусное сходство, а <tex>z_i = g(f_\theta(x_i))</tex> — представление после проекционной головки. Итоговый лосс на батч — среднее <tex>\ell_{i,j}</tex> по всем <tex>2N</tex> позитивным парам (в обе стороны). Все остальные <tex>2N-2</tex> представления в батче выступают негативами для пары <tex>(i,j)</tex> — так называемые in-batch negatives.
 +
 +
Температура <tex>\tau</tex> играет роль настройки «жёсткости» распределения softmax: малые значения <tex>\tau</tex> сильнее штрафуют близкие негативы (эффект, близкий к hard negative mining), но одновременно делают обучение более чувствительным к шуму и переобучению на конкретных негативах внутри батча.
 +
 +
== Архитектурные решения ==
 +
 +
'''Сиамские сети''' (Siamese networks) — базовая архитектурная схема контрастивного обучения: два (или более) прохода одного и того же энкодера с общими весами <tex>f_\theta</tex> применяются к разным входам (например, к двум аугментациям одного изображения), после чего представления сравниваются функцией расстояния или сходства. Название закрепилось за архитектурой ещё в работах по верификации подписей и лиц 1990–2000-х годов.
 +
 +
'''Проекционная головка.''' Ключевое наблюдение SimCLR состоит в том, что контрастивный лосс лучше вычислять не непосредственно на представлении <tex>h = f_\theta(x)</tex>, которое затем используется в последующих задачах, а на выходе дополнительной небольшой сети — проекционной головки <tex>g(\cdot)</tex>, обычно двухслойного MLP с нелинейностью ReLU: <tex>z = g(h)</tex>. После предобучения головка <tex>g</tex> отбрасывается, для последующих задач используется <tex>h</tex>. Объяснение эффекта: контрастивная цель заставляет модель отбрасывать информацию, инвариантную относительно применённых аугментаций (например, цвет объекта, если применялось цветовое искажение) — такая информация может быть полезна для последующих задач, но вредна для контрастивной цели. Проекционная головка «принимает удар на себя», сохраняя более общее представление в <tex>h</tex>.
 +
 +
'''Симметричные и асимметричные архитектуры.''' В симметричной схеме (SimCLR) оба входа проходят через один и тот же энкодер с общими весами, и градиент течёт по обеим ветвям одинаково. В асимметричных схемах ветви различаются: например, в MoCo один энкодер (query encoder) обучается градиентным спуском, а второй (key encoder) обновляется через экспоненциальное скользящее среднее (momentum, EMA) весов первого энкодера и не получает градиента напрямую — это стабилизирует представления негативов, накапливаемых в очереди. В BYOL и SimSiam асимметрия усиливается ещё сильнее: на «онлайн»-ветви добавляется дополнительная сеть-предиктор, а на «целевой» ветви применяется остановка градиента (stop-gradient) — при этом негативные примеры вовсе не требуются.
 +
 +
== Стратегии аугментации данных ==
 +
 +
Выбор аугментаций определяет, какие инварианты выучит модель, и является одним из решающих факторов качества контрастивного обучения.
 +
 +
'''Изображения.''' В экспериментах SimCLR показано, что сильнее всего на качество влияет комбинация случайного кропа с масштабированием (random resized crop) и цветовых искажений (color jitter, случайное преобразование яркости, контраста, насыщенности и оттенка). По отдельности ни один из этих видов аугментации не даёт сравнимого эффекта: случайный кроп без изменения цвета позволяет модели решать задачу по одним лишь статистикам цвета, не выучивая содержательных признаков формы и текстуры. Дополнительно применяются размытие по Гауссу, перевод в оттенки серого, горизонтальное отражение; в ряде более поздних методов (BYOL) добавляется соляризация.
 +
 +
'''Текст.''' Используются маскирование токенов, обратный перевод (back-translation), синонимическая замена слов, случайные удаление/вставка/перестановка слов (техника EDA), а также кроппинг фрагментов документа. Отдельный интересный приём — метод SimCSE, где две «разные» версии одного и того же предложения получаются простым повторным пропуском через энкодер с включённым dropout: разные случайные маски dropout дают немного разные представления одного и того же текста, которые и образуют позитивную пару.
 +
 +
'''Графы.''' В графовом контрастивном обучении (например, GraphCL) применяются случайное удаление рёбер и узлов, маскирование атрибутов узлов, сэмплирование подграфов и аугментации на основе диффузии графа или случайных блужданий — каждая операция должна сохранять содержательную структуру графа, не разрушая его смысловую связность.
 +
 +
Общий принцип: аугментация должна быть достаточно сильной, чтобы задача не решалась тривиальными «короткими путями» (shortcuts), но не настолько сильной, чтобы разрушить семантику, важную для последующих задач. Подбор набора аугментаций — во многом эмпирическая, специфичная для модальности процедура.
 +
 +
== Проблема коллапса представлений ==
 +
 +
'''Коллапс представлений''' (representation collapse) — вырожденное решение, при котором энкодер отображает все входы в одну и ту же (или почти одну и ту же) точку пространства представлений. При таком решении расстояние между любыми позитивными парами тривиально минимально, однако представление не несёт никакой информации об исходных данных и бесполезно для последующих задач. Проблема возникает потому, что цель «сблизить позитивы» сама по себе не имеет механизма, препятствующего вырождению — константное отображение формально идеально решает эту часть задачи.
 +
 +
Основные способы борьбы с коллапсом:
 +
 +
* '''Явные негативные примеры.''' В InfoNCE-подобных лоссах наличие негативов создаёт отталкивающую силу: минимизация лосса требует не просто сближения позитива, а его отличимости от множества негативов через softmax, что делает константное решение невыгодным. Для устойчивой оценки такого softmax требуется достаточно большое число негативов — отсюда потребность SimCLR в больших батчах либо MoCo в очереди (queue) накопленных представлений.
 +
 +
* '''Остановка градиента (stop-gradient).''' В BYOL и особенно наглядно в SimSiam показано, что коллапса можно избежать вовсе без негативных примеров: достаточно асимметрии между двумя ветвями сети (дополнительный предиктор на одной ветви) и остановки градиента на другой ветви. Полного теоретического объяснения этому явлению до конца не дано, но эмпирически и по ряду теоретических аргументов (аналогия с EM-алгоритмом попеременной оптимизации) показано, что такая схема устойчиво избегает вырождения.
 +
 +
* '''Нормализация.''' L2-нормализация представлений (проекция на единичную гиперсферу) в сочетании с батч-нормализацией внутри проекционной головки и предиктора эмпирически связана со стабильностью обучения и, по ряду наблюдений, помогает избегать коллапса — хотя более поздние работы (в частности, эксперименты SimSiam) показывают, что одной нормализации без stop-gradient недостаточно.
 +
 +
* '''Явная регуляризация ковариации.''' Отдельное направление — методы Barlow Twins (Zbontar et al., 2021) и VICReg (Bardes et al., 2022), которые вместо контрастивного или предикторного лосса напрямую штрафуют вырождение: требуют, чтобы дисперсия каждой компоненты представления по батчу была не ниже порога, и одновременно минимизируют корреляцию между разными компонентами вектора представления.
 +
 +
== Основные методы ==
 +
 +
{| class="wikitable"
 +
! Метод !! Год !! Нужны негативные примеры !! Momentum-энкодер !! Механизм против коллапса !! Требования к батчу
 +
|-
 +
| SimCLR || 2020 || Да (in-batch) || Нет || Негативные примеры + проекционная головка || Очень большой (2048–8192)
 +
|-
 +
| MoCo (v1/v2) || 2019/2020 || Да (очередь) || Да || Негативные примеры из очереди + momentum-энкодер || Умеренный (очередь заменяет большой батч)
 +
|-
 +
| BYOL || 2020 || Нет || Да || Асимметрия «онлайн/цель» + предиктор + stop-gradient || Умеренный
 +
|-
 +
| SimSiam || 2021 || Нет || Нет || Только предиктор + stop-gradient || Умеренный
 +
|}
 +
 +
'''SimCLR''' (Chen et al., 2020) — симметричная сиамская схема с общей энкодер-проекцией на обеих ветвях, использующая NT-Xent-лосс с in-batch негативами; для достижения качественных представлений требует очень больших батчей, поскольку число негативов ограничено размером батча.
 +
 +
'''MoCo''' (He et al., 2019; версия v2 — Chen et al., 2020) решает проблему больших батчей за счёт отдельной очереди (dictionary) представлений-негативов, накапливаемых из предыдущих итераций, и momentum-энкодера — ключевой сети, чьи веса не обучаются градиентом напрямую, а обновляются как экспоненциальное скользящее среднее весов основной (query) сети. Это позволяет держать большое число негативов (десятки тысяч) при умеренном размере батча.
 +
 +
'''BYOL''' («Bootstrap Your Own Latent», Grill et al., 2020) полностью отказывается от негативных примеров: онлайн-сеть с дополнительным предиктором обучается предсказывать представление, выдаваемое целевой (target) сетью — копией с momentum-обновлением весов и остановленным градиентом — на другой аугментации того же изображения. Лосс — по существу регрессионный (нормализованная среднеквадратичная ошибка), а не классификационный.
 +
 +
'''SimSiam''' (Chen & He, 2021) показывает, что для избежания коллапса momentum-энкодер не обязателен: достаточно простой сиамской сети с общими весами, предиктора на одной ветви и остановки градиента на другой — без негативов, без очереди, без momentum-обновления.
 +
 +
== Связь с CLIP и мультимодальными моделями ==
 +
 +
Контрастивный принцип естественно обобщается на пары объектов разной модальности. Модель [[CLIP]] (Radford et al., 2021, «Learning Transferable Visual Models From Natural Language Supervision») обучает одновременно энкодер изображений и энкодер текста на большом корпусе пар (изображение, подпись), используя, по существу, ту же схему, что и NT-Xent: внутри батча позитивной парой считается соответствующая друг другу пара «изображение — подпись», негативами — все остальные комбинации изображений и подписей внутри батча; лосс вычисляется симметрично — как по строкам, так и по столбцам матрицы косинусных сходств.
 +
 +
Результат такого предобучения — общее пространство представлений, в котором изображение и описывающий его текст оказываются близки. Это позволяет решать задачи zero-shot классификации: класс объекта определяется путём сравнения представления изображения с представлениями текстовых промптов вида «фотография {класс}» без какого-либо дообучения на целевом наборе данных. Подход CLIP послужил основой для последующих мультимодальных контрастивных моделей (например, ALIGN) и широко используется как источник эмбеддингов для задач мультимодального поиска и в качестве управляющего сигнала в генеративных моделях изображений.
 +
 +
== Пример: обучение представлений на CIFAR-10 с SimCLR ==
 +
 +
Проиллюстрируем типичный пайплайн на примере CIFAR-10 (условные, ориентировочные цифры). В качестве энкодера берётся сеть уменьшенной глубины (например, ResNet-18, адаптированный под разрешение 32×32). Предобучение проводится без меток в течение порядка 200–500 эпох с батчем размера 256–512 (небольшое разрешение CIFAR-10 позволяет обойтись без экстремально больших батчей, характерных для ImageNet), с аугментациями: случайный кроп с изменением масштаба, горизонтальное отражение, цветовые искажения, перевод в оттенки серого. Используется проекционная головка — двухслойный MLP, лосс — NT-Xent с температурой порядка 0.5.
 +
 +
После предобучения энкодер замораживается, поверх представления <tex>h</tex> обучается линейный классификатор на полном размеченном наборе CIFAR-10. Ориентировочно такой протокол позволяет получить точность в районе 90% и выше, при том что полностью контролируемое обучение сравнимой по размеру сети на CIFAR-10 обычно даёт порядка 93–95% — то есть контрастивное предобучение без единой метки позволяет приблизиться к качеству обучения с учителем.
 +
 +
На практике реализовывать подобный пайплайн с нуля не обязательно: библиотека PyTorch Lightning (в частности, надстройки вроде Lightning Bolts и сторонняя библиотека lightly) предоставляет готовые реализации SimCLR, MoCo, BYOL и SimSiam с настраиваемыми аугментациями и логированием; экосистема Hugging Face предоставляет предобученные контрастивные модели (в частности, чекпоинты CLIP) и библиотеку sentence-transformers для текстовых представлений, обучаемых по контрастивным и близким к ним схемам.
 +
 +
== Достоинства и ограничения ==
 +
 +
'''Достоинства:'''
 +
* не требует разметки данных, использует внутреннюю структуру самих данных;
 +
* даёт универсальные представления, переносимые на разные последующие задачи — классификацию, детекцию, поиск, кластеризацию;
 +
* хорошо масштабируется с ростом объёма непомеченных данных и вычислительных ресурсов;
 +
* не зависит от качества и полноты человеческой разметки, а значит устойчиво к её отсутствию или неполноте;
 +
* единый принцип «притяжение — отталкивание» переносится между модальностями — изображениями, текстом, графами, аудио, мультимодальными парами.
 +
 +
'''Ограничения:'''
 +
* сильная чувствительность к выбору и силе аугментаций: неудачный набор либо тривиализирует задачу, либо разрушает полезную семантику;
 +
* методам с явными негативами (SimCLR, MoCo) требуются большие батчи или банки памяти, что увеличивает вычислительные затраты;
 +
* риск коллапса представлений, требующий дополнительных архитектурных приёмов (stop-gradient, momentum-энкодер, регуляризация ковариации);
 +
* нет формальной гарантии, что инварианты, навязанные аугментациями, совпадают с инвариантами, нужными для конкретной целевой задачи;
 +
* более низкая интерпретируемость по сравнению с обучением на явно размеченных признаках — сложно диагностировать, какая именно информация закодирована в представлении;
 +
* обучение чувствительно к гиперпараметрам — температуре, составу аугментаций, длительности предобучения и размеру батча.
 +
 +
== См. также ==
 +
* [[Самообучение]]
 +
* [[Компьютерное зрение]]
 +
* [[Обработка естественного языка]]
 +
* [[CLIP]]
 +
* [[SimCLR]]
 +
* [[MoCo]]
 +
 +
== Литература ==
 +
# Hadsell R., Chopra S., LeCun Y. Dimensionality Reduction by Learning an Invariant Mapping // CVPR. — 2006.
 +
# Oord A. van den, Li Y., Vinyals O. Representation Learning with Contrastive Predictive Coding // arXiv:1807.03748. — 2018.
 +
# Chen T., Kornblith S., Norouzi M., Hinton G. A Simple Framework for Contrastive Learning of Visual Representations // ICML. — 2020.
 +
# He K., Fan H., Wu Y., Xie S., Girshick R. Momentum Contrast for Unsupervised Visual Representation Learning // CVPR. — 2020.
 +
# Grill J.-B., Strub F., Altché F. et al. Bootstrap Your Own Latent: A New Approach to Self-Supervised Learning // NeurIPS. — 2020.
 +
# Chen X., He K. Exploring Simple Siamese Representation Learning // CVPR. — 2021.
 +
# Radford A., Kim J.W., Hallacy C. et al. Learning Transferable Visual Models From Natural Language Supervision // ICML. — 2021.
 +
# Schroff F., Kalenichenko D., Philbin J. FaceNet: A Unified Embedding for Face Recognition and Clustering // CVPR. — 2015.
 +
# Wu Z., Xiong Y., Yu S.X., Lin D. Unsupervised Feature Learning via Non-Parametric Instance Discrimination // CVPR. — 2018.
 +
# Zbontar J., Jing L., Misra I., LeCun Y., Deny S. Barlow Twins: Self-Supervised Learning via Redundancy Reduction // ICML. — 2021.
 +
 +
[[Категория:Машинное обучение]]
 +
[[Категория:Глубокое обучение]]
 +
[[Категория:Самообучение]]
 +
```
 +
 +
 +
 +
 +
 +
 +
 +
 +
Нормализация и стандартизация признаков
 +
 +
 +
Ты специалист в области машинного обучения, профессор в ведущем техническом университете и популяризатор науки. Напиши энциклопедическую статью для MachineLearning.ru на тему «Нормализация и стандартизация признаков».
 +
 +
Целевая аудитория: мотивированные студенты, преподаватели и специалисты в AI/ML. Статья должна быть полезна новичку: дать понятные определения, объяснить разницу между нормализацией (min-max scaling), стандартизацией (z-score) и робастным масштабированием, показать на простом примере с конкретными числами. Профессионалу статья должна дать математические формулы, объяснить влияние на сходимость градиентных методов, на регуляризацию (L1, L2), на методы, основанные на расстояниях (KNN, SVM), и на интерпретируемость моделей.
 +
 +
Обязательные разделы:
 +
1. Введение (кратко, 2 абзаца)
 +
2. Постановка задачи: почему признаки бывают в разных масштабах — пример с возрастом и доходом
 +
3. Нормализация (min-max scaling): формула, диапазон [0,1], когда использовать, чувствительность к выбросам
 +
4. Стандартизация (z-score): формула, нулевое среднее и единичная дисперсия, когда использовать, связь с нормальным распределением
 +
5. Робастное масштабирование: медиана и IQR, формула, устойчивость к выбросам
 +
6. Другие методы: MaxAbsScaler, PowerTransformer (Box-Cox, Yeo-Johnson), QuantileTransformer — кратко
 +
7. Влияние на алгоритмы: таблица, какие методы чувствительны к масштабу (линейные модели, SVM, KNN, PCA), а какие нет (деревья решений, случайный лес, градиентный бустинг)
 +
8. Влияние на регуляризацию: почему L1 и L2 требуют стандартизации
 +
9. Сравнение методов: таблица с плюсами и минусами
 +
10. Пример: подготовка данных для логистической регрессии на задаче прогнозирования оттока клиентов (с конкретными числами до и после)
 +
11. Практические рекомендации: когда что выбирать
 +
12. См. также: внутренние ссылки на другие страницы (Ослабление и усиление шкал признаков, Предобработка данных, Регуляризация, Логистическая регрессия, Метод главных компонент)
 +
13. Литература (реальные источники)
 +
 +
Важно: статья должна быть практичной, с конкретными примерами. Упомяни реализацию в scikit-learn (StandardScaler, MinMaxScaler, RobustScaler, PowerTransformer).
 +
 +
Стиль академичный, ясный, без рекламных фраз и нейросетевых штампов. Формулы оформляй только через <tex>...</tex>, выключные формулы через :: <tex>...</tex>. Термины оформляй как внутренние ссылки. В начале статьи добавь предупреждение: {{well|Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 15:56, 10 июля 2026 (MSD)}}
 +
 +
Выдай только сырой вики-код статьи.
 +
 +
 +
 +
 +
 +
 +
{{well|Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 15:56, 10 июля 2026 (MSD)}}
{{well|Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 15:56, 10 июля 2026 (MSD)}}
Строка 241: Строка 777:
* Yeo I.-K., Johnson R. A. A New Family of Power Transformations to Improve Normality or Symmetry // Biometrika. — 2000. — Vol. 87, No. 4. — P. 954—959.
* Yeo I.-K., Johnson R. A. A New Family of Power Transformations to Improve Normality or Symmetry // Biometrika. — 2000. — Vol. 87, No. 4. — P. 954—959.
* Документация scikit-learn: preprocessing — [https://scikit-learn.org/stable/modules/preprocessing.html scikit-learn.org/stable/modules/preprocessing.html]
* Документация scikit-learn: preprocessing — [https://scikit-learn.org/stable/modules/preprocessing.html scikit-learn.org/stable/modules/preprocessing.html]
 +
 +
 +
 +
 +
 +
Метрики качества в машинном обучении
 +
 +
 +
 +
 +
Ты специалист в области машинного обучения, профессор в ведущем техническом университете и популяризатор науки. Напиши энциклопедическую статью для MachineLearning.ru на тему «Метрики качества в машинном обучении».
 +
 +
Целевая аудитория: мотивированные студенты, преподаватели и специалисты в AI/ML. Статья должна быть полезна новичку: дать понятные определения Accuracy, Precision, Recall, F1, ROC-AUC, объяснить, в каких задачах какую метрику использовать, с простыми примерами. Профессионалу статья должна дать математические формулы, объяснить компромиссы (precision/recall, sensitivity/specificity), связь с матрицей ошибок, использование в задачах с дисбалансом классов, многоклассовые обобщения (micro/macro/macro-weighted).
 +
 +
Обязательные разделы:
 +
1. Введение: что такое метрика качества, зачем она нужна (кратко, 2 абзаца)
 +
2. Матрица ошибок (Confusion Matrix): определение и структура для бинарной классификации
 +
3. Метрики для бинарной классификации: Accuracy, Precision, Recall, Specificity, F1-мера — формулы и интерпретация
 +
4. Компромисс Precision/Recall: объяснение на примере, почему нельзя оптимизировать обе одновременно
 +
5. ROC-кривая и AUC-ROC: построение, интерпретация, связь с порогом классификации
 +
6. PR-кривая и AUC-PR: когда использовать вместо ROC (сильный дисбаланс классов)
 +
7. Многоклассовые обобщения: микро-, макро- и взвешенное усреднение, отличие
 +
8. Метрики для регрессии: MSE, MAE, RMSE, R², MAPE — формулы и интерпретация
 +
9. Метрики для ранжирования: NDCG, MAP, MRR — кратко
 +
10. Выбор метрики под задачу: практические рекомендации
 +
11. Пример: выбор метрики для медицинской диагностики редкого заболевания (дисбаланс классов, важность полноты)
 +
12. См. также: внутренние ссылки на другие страницы (Матрица ошибок, Точность и полнота, F-мера, Классификационный порог, Дисбаланс классов, ROC-кривая)
 +
13. Литература (реальные источники)
 +
 +
Важно: статья должна быть структурированной и наглядной. Добавь таблицы для формул и сравнения метрик.
 +
 +
Стиль академичный, ясный, без рекламных фраз и нейросетевых штампов. Формулы оформляй только через <tex>...</tex>, выключные формулы через :: <tex>...</tex>. Термины оформляй как внутренние ссылки. В начале статьи добавь предупреждение: {{well|Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 16:49, 10 июля 2026 (MSD)}}
 +
 +
Выдай только сырой вики-код статьи.
 +
 +
 +
 +
 +
{{well|Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 16:49, 10 июля 2026 (MSD)}}
 +
 +
'''Метрики качества в машинном обучении''' — совокупность количественных показателей, позволяющих оценить эффективность работы модели и сравнить между собой различные алгоритмы. Выбор метрики определяет цель оптимизации и непосредственно влияет на поведение обученной модели в реальных условиях эксплуатации.
 +
 +
== Введение ==
 +
 +
'''Метрика качества''' (англ. evaluation metric) — это функция, отображающая предсказания модели и истинные значения целевой переменной в числовую оценку, характеризующую степень соответствия модели решаемой задаче. В отличие от [[функция потерь|функции потерь]], используемой на этапе обучения и обязанной быть дифференцируемой, метрика качества может быть произвольной вычислимой функцией, что позволяет точнее отражать бизнес-требования или клинические стандарты.
 +
 +
Корректный выбор метрики критически важен по двум причинам. Во-первых, метрика служит ориентиром при [[валидация модели|валидации]] и отборе моделей: модель, оптимальная по одной метрике, может оказаться неприемлемой по другой. Во-вторых, в условиях [[дисбаланс классов|дисбаланса классов]] или асимметричной цены ошибок традиционные метрики вроде [[Accuracy|доли правильных ответов]] дают чрезмерно оптимистичную картину, маскируя неспособность модели распознавать миноритарный класс.
 +
 +
== Матрица ошибок ==
 +
 +
'''[[Матрица ошибок]]''' (англ. confusion matrix) для задачи [[бинарная классификация|бинарной классификации]] представляет собой таблицу размером 2×2, строки которой соответствуют истинным классам, а столбцы — предсказанным. Приняты следующие обозначения:
 +
 +
{| class="wikitable" style="text-align:center;"
 +
|+ Матрица ошибок бинарного классификатора
 +
|-
 +
! colspan="2" rowspan="2" |
 +
! colspan="2" | Предсказанный класс
 +
|-
 +
! Положительный (P)
 +
! Отрицательный (N)
 +
|-
 +
! rowspan="2" | Истинный класс
 +
! Положительный (P)
 +
| style="background:#d4edda;" | TP<br>(True Positive)
 +
| style="background:#f8d7da;" | FN<br>(False Negative)
 +
|-
 +
! Отрицательный (N)
 +
| style="background:#f8d7da;" | FP<br>(False Positive)
 +
| style="background:#d4edda;" | TN<br>(True Negative)
 +
|}
 +
 +
Здесь:
 +
 +
* <tex>\text{TP}</tex> (True Positive) — число верно предсказанных положительных объектов;
 +
* <tex>\text{TN}</tex> (True Negative) — число верно предсказанных отрицательных объектов;
 +
* <tex>\text{FP}</tex> (False Positive) — число ошибочно предсказанных положительных объектов ([[ошибка I рода]]);
 +
* <tex>\text{FN}</tex> (False Negative) — число ошибочно предсказанных отрицательных объектов ([[ошибка II рода]]).
 +
 +
Сумма всех элементов равна общему числу наблюдений: <tex>N = \text{TP} + \text{TN} + \text{FP} + \text{FN}</tex>.
 +
 +
== Метрики для бинарной классификации ==
 +
 +
На основе матрицы ошибок вычисляются производные показатели, каждый из которых отражает определённый аспект качества классификации.
 +
 +
=== Accuracy (доля правильных ответов) ===
 +
 +
:: <tex>\text{Accuracy} = \frac{\text{TP} + \text{TN}}{\text{TP} + \text{TN} + \text{FP} + \text{FN}}</tex>
 +
 +
'''[[Accuracy]]''' показывает общую долю верных предсказаний. Метрика интуитивно понятна, но непригодна при сильном дисбалансе классов. Если отрицательный класс составляет 99% выборки, константный классификатор, всегда предсказывающий отрицательный класс, достигнет Accuracy = 0.99, будучи абсолютно бесполезным для детекции положительного класса.
 +
 +
=== Precision (точность) ===
 +
 +
:: <tex>\text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}}</tex>
 +
 +
'''[[Точность и полнота|Precision]]''' измеряет долю истинно положительных объектов среди всех, кого модель отнесла к положительному классу. Высокая точность означает, что модель редко ошибается, называя объект положительным. Метрика критична в задачах, где цена ложноположительного срабатывания велика — например, при фильтрации спама, когда ложное отнесение легитимного письма к спаму нежелательно.
 +
 +
=== Recall (полнота) ===
 +
 +
:: <tex>\text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}}</tex>
 +
 +
'''[[Точность и полнота|Recall]]''' (также называемый '''Sensitivity''' или '''True Positive Rate''') показывает, какую долю истинно положительных объектов модель сумела обнаружить. Метрика приоритетна в задачах, где пропуск положительного объекта недопустим — например, в [[медицинская диагностика|скрининге онкологических заболеваний]], когда ложноотрицательный диагноз стоит жизни.
 +
 +
=== Specificity (специфичность) ===
 +
 +
:: <tex>\text{Specificity} = \frac{\text{TN}}{\text{TN} + \text{FP}}</tex>
 +
 +
'''[[Specificity]]''' (True Negative Rate) — доля верно распознанных отрицательных объектов. Совместно с Recall образует пару, характеризующую способность модели разделять классы. В медицинской диагностике Specificity показывает, насколько хорошо тест исключает заболевание у здоровых пациентов.
 +
 +
=== F1-мера ===
 +
 +
:: <tex>F_1 = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}}</tex>
 +
 +
'''[[F-мера|F1-мера]]''' — гармоническое среднее Precision и Recall. В отличие от арифметического, гармоническое среднее сильнее штрафует дисбаланс составляющих: если одна из метрик близка к нулю, F1 также будет близка к нулю. Это делает F1 удобной агрегированной метрикой, когда важен баланс между точностью и полнотой. Обобщением служит <tex>F_\beta</tex>-мера:
 +
 +
:: <tex>F_\beta = (1 + \beta^2) \cdot \frac{\text{Precision} \cdot \text{Recall}}{\beta^2 \cdot \text{Precision} + \text{Recall}}</tex>
 +
 +
Параметр <tex>\beta > 1</tex> увеличивает вес Recall, <tex>\beta < 1</tex> — вес Precision.
 +
 +
=== Сводная таблица метрик ===
 +
 +
{| class="wikitable"
 +
|+ Основные метрики бинарной классификации
 +
|-
 +
! Метрика
 +
! Формула
 +
! Когда использовать
 +
|-
 +
| Accuracy
 +
| <tex>\frac{\text{TP} + \text{TN}}{N}</tex>
 +
| Сбалансированные классы, равнозначные ошибки
 +
|-
 +
| Precision
 +
| <tex>\frac{\text{TP}}{\text{TP} + \text{FP}}</tex>
 +
| Высокая цена ложных срабатываний
 +
|-
 +
| Recall
 +
| <tex>\frac{\text{TP}}{\text{TP} + \text{FN}}</tex>
 +
| Высокая цена пропуска цели
 +
|-
 +
| Specificity
 +
| <tex>\frac{\text{TN}}{\text{TN} + \text{FP}}</tex>
 +
| Дополнение к Recall, анализ обеих ошибок
 +
|-
 +
| F1
 +
| <tex>2 \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}}</tex>
 +
| Компромисс между Precision и Recall
 +
|}
 +
 +
== Компромисс Precision/Recall ==
 +
 +
Precision и Recall связаны обратной зависимостью: увеличение одной метрики часто ведёт к снижению другой. Фундаментальная причина — [[классификационный порог]]: понижая порог, модель относит к положительному классу больше объектов, что увеличивает Recall (находим больше истинно положительных), но одновременно снижает Precision (растёт число ложных срабатываний). Повышение порога даёт обратный эффект.
 +
 +
Рассмотрим задачу детекции мошеннических транзакций. Если банк установит низкий порог и будет блокировать любые подозрительные операции, Recall окажется высоким (почти все мошеннические транзакции заблокированы), но Precision — низким (множество легитимных операций ложно помечены как мошеннические, что вызывает недовольство клиентов). Если же банк повысит порог, Precision возрастёт, но часть мошеннических операций пройдёт незамеченной (Recall снизится). Выбор рабочей точки на кривой Precision-Recall определяется бизнес-ограничениями и относительной стоимостью ошибок FP и FN.
 +
 +
== ROC-кривая и AUC-ROC ==
 +
 +
'''[[ROC-кривая]]''' (Receiver Operating Characteristic) строится в координатах True Positive Rate (Recall) против False Positive Rate:
 +
 +
:: <tex>\text{TPR} = \frac{\text{TP}}{\text{TP} + \text{FN}}, \quad \text{FPR} = \frac{\text{FP}}{\text{TN} + \text{FP}}</tex>
 +
 +
Каждая точка кривой соответствует определённому [[классификационный порог|порогу классификации]]. При варьировании порога от 0 до 1 точка (FPR, TPR) перемещается от (1,1) до (0,0). Идеальный классификатор проходит через точку (0,1). Диагональ <tex>\text{TPR} = \text{FPR}</tex> соответствует случайному гаданию.
 +
 +
'''AUC-ROC''' (Area Under the ROC Curve) — площадь под ROC-кривой, принимающая значения от 0 до 1. Значение 0.5 означает бесполезный классификатор, 1.0 — идеальное разделение классов. AUC-ROC обладает вероятностной интерпретацией: это вероятность того, что случайно выбранный положительный объект получит от модели более высокую оценку принадлежности к положительному классу, чем случайно выбранный отрицательный.
 +
 +
Достоинство AUC-ROC — независимость от порога и априорных вероятностей классов. Недостаток — нечувствительность к калибровке вероятностей и маскировка проблем при сильном дисбалансе, когда большая площадь достигается за счёт корректного ранжирования отрицательных примеров, а положительные тонут в массе FP.
 +
 +
== PR-кривая и AUC-PR ==
 +
 +
'''PR-кривая''' (Precision-Recall curve) строится в координатах Precision против Recall. В отличие от ROC, PR-кривая не учитывает TN, что делает её чувствительной исключительно к качеству предсказаний положительного класса.
 +
 +
'''AUC-PR''' — площадь под PR-кривой. В условиях сильного дисбаланса (доля положительного класса < 5%) PR-кривая даёт более информативную картину, чем ROC. Причина в том, что FPR в знаменателе ROC-кривой доминируется огромным количеством TN, из-за чего даже значительный абсолютный рост FP слабо меняет FPR. Precision же непосредственно реагирует на каждый ложноположительный объект.
 +
 +
{| class="wikitable"
 +
|+ Сравнение ROC и PR кривых
 +
|-
 +
! Характеристика
 +
! ROC
 +
! PR
 +
|-
 +
| Оси
 +
| TPR vs FPR
 +
| Precision vs Recall
 +
|-
 +
| Учёт TN
 +
| Да (через FPR)
 +
| Нет
 +
|-
 +
| Чувствительность к дисбалансу
 +
| Занижена
 +
| Высокая
 +
|-
 +
| Рекомендуемое применение
 +
| Сбалансированные классы
 +
| Дисбаланс классов, фокус на положительном классе
 +
|}
 +
 +
== Многоклассовые обобщения ==
 +
 +
Для задач [[многоклассовая классификация|многоклассовой классификации]] метрики Precision, Recall и F1 обобщаются путём усреднения по классам.
 +
 +
Пусть <tex>C</tex> — множество классов, <tex>P_c, R_c, F1_c</tex> — точность, полнота и F1-мера для класса <tex>c</tex>, вычисленные по схеме «один против всех» (класс <tex>c</tex> считается положительным, остальные — отрицательным), <tex>N_c</tex> — число истинных примеров класса <tex>c</tex>.
 +
 +
'''Micro-усреднение''' агрегирует элементы матрицы ошибок по всем классам перед вычислением метрики:
 +
 +
:: <tex>P_{\text{micro}} = \frac{\sum_{c} \text{TP}_c}{\sum_{c} (\text{TP}_c + \text{FP}_c)}, \quad R_{\text{micro}} = \frac{\sum_{c} \text{TP}_c}{\sum_{c} (\text{TP}_c + \text{FN}_c)}</tex>
 +
 +
Micro-усреднение даёт больший вес классам с большим числом примеров. В пределе micro-averaged Accuracy, Precision и Recall численно совпадают.
 +
 +
'''Macro-усреднение''' вычисляет метрику независимо для каждого класса, затем берёт арифметическое среднее:
 +
 +
:: <tex>P_{\text{macro}} = \frac{1}{|C|} \sum_{c} P_c, \quad R_{\text{macro}} = \frac{1}{|C|} \sum_{c} R_c</tex>
 +
 +
Macro-усреднение придаёт равный вес всем классам, что делает его чувствительным к качеству классификации миноритарных классов, но и уязвимым к выбросам в классах с малым числом примеров.
 +
 +
'''Weighted-усреднение''' берёт средневзвешенное по числу истинных примеров класса:
 +
 +
:: <tex>P_{\text{weighted}} = \frac{\sum_{c} N_c \cdot P_c}{\sum_{c} N_c}, \quad R_{\text{weighted}} = \frac{\sum_{c} N_c \cdot R_c}{\sum_{c} N_c}</tex>
 +
 +
Weighted-усреднение занимает промежуточную позицию: учитывает размер классов, но чувствительнее к миноритарным классам, чем micro-усреднение.
 +
 +
== Метрики для регрессии ==
 +
 +
В задачах [[регрессионный анализ|регрессии]], где целевая переменная непрерывна, используются метрики, основанные на отклонениях предсказаний <tex>\hat{y}_i</tex> от истинных значений <tex>y_i</tex>.
 +
 +
{| class="wikitable"
 +
|+ Основные метрики регрессии
 +
|-
 +
! Метрика
 +
! Формула
 +
! Особенности
 +
|-
 +
| MSE<br>(Mean Squared Error)
 +
| <tex>\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2</tex>
 +
| Сильно штрафует большие ошибки (квадратичная зависимость). Дифференцируема, используется как функция потерь. Чувствительна к выбросам.
 +
|-
 +
| RMSE<br>(Root Mean Squared Error)
 +
| <tex>\sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2}</tex>
 +
| Интерпретируется в единицах целевой переменной. Сохраняет чувствительность к выбросам.
 +
|-
 +
| MAE<br>(Mean Absolute Error)
 +
| <tex>\frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i|</tex>
 +
| Менее чувствительна к выбросам, чем MSE. Даёт линейный штраф. Не дифференцируема в нуле.
 +
|-
 +
| MAPE<br>(Mean Absolute Percentage Error)
 +
| <tex>\frac{100\%}{n} \sum_{i=1}^{n} \left| \frac{y_i - \hat{y}_i}{y_i} \right|</tex>
 +
| Выражается в процентах, интуитивно понятна бизнес-пользователям. Неприменима при <tex>y_i = 0</tex>. Асимметрична: штраф за занижение и завышение различен.
 +
|-
 +
| <tex>R^2</tex><br>(Коэффициент детерминации)
 +
| <tex>1 - \frac{\sum_i (y_i - \hat{y}_i)^2}{\sum_i (y_i - \bar{y})^2}</tex>
 +
| Показывает долю дисперсии целевой переменной, объяснённой моделью. Значение 1 — идеальное предсказание, 0 — модель не лучше константы (среднего). Может быть отрицательным.
 +
|}
 +
 +
Выбор метрики в регрессии диктуется распределением ошибок и бизнес-требованиями. При наличии выбросов предпочтительнее MAE; если большие ошибки критичны — MSE или RMSE. <tex>R^2</tex> удобен для сравнительного анализа моделей на одном наборе данных, но не отражает абсолютную величину ошибки.
 +
 +
== Метрики для ранжирования ==
 +
 +
В задачах [[обучение ранжированию|ранжирования]] оценивается качество упорядочивания объектов согласно их релевантности запросу.
 +
 +
'''MRR''' (Mean Reciprocal Rank) — среднее обратное значение позиции первого релевантного документа:
 +
 +
:: <tex>\text{MRR} = \frac{1}{|Q|} \sum_{q \in Q} \frac{1}{\text{rank}_q}</tex>
 +
 +
где <tex>\text{rank}_q</tex> — позиция первого релевантного документа для запроса <tex>q</tex>. Метрика проста и интерпретируема, но учитывает только первый релевантный результат.
 +
 +
'''MAP''' (Mean Average Precision) — среднее по запросам значение средней точности:
 +
 +
:: <tex>\text{MAP} = \frac{1}{|Q|} \sum_{q \in Q} \frac{1}{R_q} \sum_{k=1}^{n_q} P_q(k) \cdot [\text{rel}_q(k) = 1]</tex>
 +
 +
где <tex>P_q(k)</tex> — Precision на глубине <tex>k</tex>, <tex>\text{rel}_q(k)</tex> — индикатор релевантности документа на позиции <tex>k</tex>. MAP учитывает все релевантные документы и их позиции.
 +
 +
'''NDCG''' (Normalized Discounted Cumulative Gain) — нормализованный накопленный выигрыш с дисконтированием:
 +
 +
:: <tex>\text{DCG}_q@k = \sum_{i=1}^{k} \frac{2^{\text{rel}_i} - 1}{\log_2(i + 1)}</tex>
 +
 +
:: <tex>\text{NDCG}_q@k = \frac{\text{DCG}_q@k}{\text{IDCG}_q@k}</tex>
 +
 +
где <tex>\text{rel}_i</tex> — оценка релевантности (возможно, многозначная), IDCG — DCG идеального ранжирования. NDCG учитывает как многоградационную релевантность, так и позицию документа, придавая больший вес верхним позициям списка.
 +
 +
== Выбор метрики под задачу ==
 +
 +
Выбор метрики определяется следующими факторами:
 +
 +
# '''Тип задачи.''' Классификация, регрессия или ранжирование задают семейство метрик.
 +
# '''Сбалансированность классов.''' При дисбалансе избегают Accuracy, предпочитая F1, AUC-PR или macro-F1.
 +
# '''Цена ошибок.''' При асимметричной стоимости ошибок ориентируются на Recall (высокая цена FN) или Precision (высокая цена FP).
 +
# '''Требования к интерпретируемости.''' Для коммуникации с заказчиком часто выбирают метрики в абсолютных величинах (RMSE в рублях, Recall в процентах обнаруженных дефектов).
 +
# '''Наличие нескольких классов.''' Выбирают micro- (важна общая эффективность) или macro-усреднение (важен каждый класс).
 +
 +
Рекомендуется использовать не единственную метрику, а батарею взаимодополняющих показателей для всесторонней оценки модели.
 +
 +
== Пример: медицинская диагностика редкого заболевания ==
 +
 +
Рассмотрим задачу скрининга заболевания с распространённостью 0.1% (один случай на тысячу пациентов). Разрабатывается классификатор, предсказывающий наличие болезни по лабораторным показателям.
 +
 +
'''Характеристики задачи:'''
 +
* Сильный дисбаланс классов (1:999).
 +
* Критически высокая цена ложноотрицательного результата: пропуск заболевания может привести к летальному исходу.
 +
* Ложноположительный результат также нежелателен (назначается ненужное дорогостоящее обследование), но его цена ниже.
 +
 +
'''Анализ метрик:'''
 +
 +
* '''Accuracy''' неприемлема. Модель, всегда предсказывающая «здоров», имеет Accuracy = 0.999, но не обнаруживает ни одного больного.
 +
* '''Precision''' важна для оценки нагрузки на систему здравоохранения: низкая точность означает, что большинство направленных на доп. обследование окажутся здоровы.
 +
* '''Recall''' — ключевая метрика. Необходимо максимизировать долю обнаруженных больных, возможно, ценой снижения Precision.
 +
* '''F1''' или '''F2-мера''' (с <tex>\beta = 2</tex>) дают сбалансированную оценку с повышенным приоритетом полноты.
 +
* '''ROC-AUC''' может дать завышенно оптимистичную картину из-за доминирования TN. Предпочтительнее использовать '''AUC-PR''', которая непосредственно оценивает способность модели находить редкий положительный класс.
 +
 +
Рекомендуемый набор метрик для данной задачи: Recall (основная), Precision (контролируемая), AUC-PR (интегральная оценка ранжирования), F2-мера (агрегированная).
 +
 +
== См. также ==
 +
 +
* [[Матрица ошибок]]
 +
* [[Точность и полнота]]
 +
* [[F-мера]]
 +
* [[Классификационный порог]]
 +
* [[Дисбаланс классов]]
 +
* [[ROC-кривая]]
 +
 +
 +
== Литература ==
 +
 +
# Powers D. M. W. Evaluation: From Precision, Recall and F-Measure to ROC, Informedness, Markedness & Correlation // Journal of Machine Learning Technologies. — 2011. — Vol. 2, no. 1. — P. 37–63.
 +
# Davis J., Goadrich M. The Relationship Between Precision-Recall and ROC Curves // Proceedings of the 23rd International Conference on Machine Learning (ICML). — 2006. — P. 233–240.
 +
# Fawcett T. An Introduction to ROC Analysis // Pattern Recognition Letters. — 2006. — Vol. 27, no. 8. — P. 861–874.
 +
# Saito T., Rehmsmeier M. The Precision-Recall Plot Is More Informative than the ROC Plot When Evaluating Binary Classifiers on Imbalanced Datasets // PLOS ONE. — 2015. — Vol. 10, no. 3. — e0118432.
 +
# Järvelin K., Kekäläinen J. Cumulated Gain-Based Evaluation of IR Techniques // ACM Transactions on Information Systems. — 2002. — Vol. 20, no. 4. — P. 422–446.
 +
# Груздев А. В. Прогнозное моделирование в IBM SPSS Statistics, R и Python. Метод деревьев решений и случайный лес. — М.: ДМК Пресс, 2018. — Гл. 4: Оценка качества моделей.
 +
 +
 +
 +
 +
 +
ТО ЧТО ИЛЬЯ СКИНУЛ
 +
 +
```
 +
{{well|Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 15:56, 10 июля 2026 (MSD)}}
 +
 +
'''Нормализация признаков''' и '''стандартизация признаков''' (обобщённо — ''масштабирование признаков'', англ. ''feature scaling'') — методы [[Предобработка данных|предварительной обработки данных]], приводящие числовые [[Признак|признаки]] к сопоставимому диапазону значений или к сопоставимой статистической форме распределения. Масштабирование не меняет информативность признака в статистическом смысле (взаимную связь с целевой переменной), но существенно влияет на поведение многих алгоритмов [[Машинное обучение|машинного обучения]] — от скорости сходимости [[Градиентный спуск|градиентных методов]] до корректности работы [[Регуляризация|регуляризации]] и методов, основанных на расстояниях между объектами.
 +
 +
В литературе термины употребляются не вполне единообразно. В узком смысле ''нормализацией'' называют приведение признака к фиксированному диапазону, чаще всего <tex>[0,1]</tex> (min-max scaling), а ''стандартизацией'' — приведение к нулевому среднему и единичной дисперсии (z-score). В широком смысле оба термина нередко используются как синонимы для обозначения любого масштабирования признаков; в данной статье эти понятия разграничиваются в узком, более строгом смысле. Наряду с ними рассматривается робастное масштабирование и ряд специализированных преобразований (MaxAbsScaler, PowerTransformer, QuantileTransformer), реализованных, в частности, в модуле <tt>sklearn.preprocessing</tt> библиотеки [[Scikit-learn|scikit-learn]].
 +
 +
== Постановка задачи ==
 +
 +
Признаки, описывающие объекты реального мира, как правило, измерены в разных единицах и имеют разные диапазоны значений. Рассмотрим задачу [[Классификация|классификации]] клиентов банка, где каждый объект описывается двумя признаками — возрастом (в годах) и месячным доходом (в рублях):
 +
 +
{| class="wikitable"
 +
! Клиент !! Возраст, лет !! Доход, руб./мес.
 +
|-
 +
| Иванов || 25 || 45 000
 +
|-
 +
| Петров || 45 || 47 000
 +
|}
 +
 +
Возраст изменяется в диапазоне единиц-десятков, доход — в диапазоне десятков тысяч. Если вычислить евклидово расстояние между объектами без предварительного масштабирования:
 +
 +
:: <tex>d = \sqrt{(45-25)^2 + (47000-45000)^2} = \sqrt{400 + 4\,000\,000} \approx 2000{,}1</tex>
 +
 +
признак «возраст» практически не вносит вклада в итоговое расстояние: его слагаемое (400) на четыре порядка меньше слагаемого дохода (4 000 000). Для любого метода, опирающегося на расстояния между объектами — [[Метод ближайших соседей|метода ближайших соседей]], [[Метод опорных векторов|метода опорных векторов]], кластеризации методом k-средних, [[Метод главных компонент|метода главных компонент]] — это означает, что признак с большим численным диапазоном будет доминировать в решении независимо от его действительной значимости для задачи.
 +
 +
Аналогичная проблема возникает при обучении моделей [[Градиентный спуск|градиентными методами]]. Функция потерь как функция параметров модели образует в пространстве весов некоторую поверхность; при сильно различающихся масштабах признаков линии уровня этой поверхности превращаются в вытянутые эллипсы с большим числом обусловленности гессиана. Градиентный спуск на такой поверхности движется зигзагообразно, и для достижения минимума требуется существенно больше итераций либо очень малый шаг обучения. После масштабирования признаков линии уровня приближаются по форме к окружностям, направление антиградиента указывает более точно на минимум, и сходимость ускоряется — этот эффект хорошо задокументирован для [[Линейная регрессия|линейной]] и [[Логистическая регрессия|логистической регрессии]], а также для [[Нейронная сеть|нейронных сетей]].
 +
 +
== Нормализация (min-max scaling) ==
 +
 +
'''Min-max scaling''' линейно преобразует признак так, чтобы его значения попали в заданный диапазон, чаще всего <tex>[0,1]</tex>:
 +
 +
:: <tex>x' = \frac{x - x_{min}}{x_{max} - x_{min}}</tex>
 +
 +
где <tex>x_{min}</tex> и <tex>x_{max}</tex> — минимальное и максимальное значен
 +
ия признака на обучающей выборке. Для произвольного целевого диапазона <tex>[a,b]</tex> формула обобщается:
 +
 +
:: <tex>x' = a + \frac{(x - x_{min})(b-a)}{x_{max} - x_{min}}</tex>
 +
 +
Метод сохраняет форму исходного распределения (все относительные расстояния между значениями пропорционально сжимаются или растягиваются), что удобно, когда диапазон признака имеет содержательный смысл — например, для признаков, ограниченных по своей природе (доля, вероятность, пиксельная интенсивность 0–255), а также при подготовке входов для нейронных сетей с сигмоидными или иными ограниченными функциями активации.
 +
 +
Существенный недостаток — высокая чувствительность к выбросам, поскольку <tex>x_{min}</tex> и <tex>x_{max}</tex> определяются единственными экстремальными наблюдениями. Продемонстрируем это на выборке значений дохода (тыс. руб.): 30, 45, 50, 55, 60, 65, 400, где последнее значение — аномально высокий доход.
 +
 +
Здесь <tex>x_{min}=30</tex>, <tex>x_{max}=400</tex>, диапазон равен 370. После min-max масштабирования:
 +
 +
{| class="wikitable"
 +
! Исходное значение !! После Min-Max
 +
|-
 +
| 30 || 0,000
 +
|-
 +
| 45 || 0,041
 +
|-
 +
| 50 || 0,054
 +
|-
 +
| 55 || 0,068
 +
|-
 +
| 60 || 0,081
 +
|-
 +
| 65 || 0,095
 +
|-
 +
| 400 (выброс) || 1,000
 +
|}
 +
 +
Единственный выброс растянул диапазон настолько, что все «типичные» значения оказались сжаты в узкий интервал <tex>[0;\,0{,}095]</tex> и стали практически неразличимы для алгоритма. Это ключевое ограничение метода: перед его применением рекомендуется отдельно проверить данные на наличие выбросов (см. [[Выброс|выбросы]]).
 +
 +
В scikit-learn метод реализован классом <tt>MinMaxScaler</tt>:
 +
 +
<syntaxhighlight lang="python">
 +
from sklearn.preprocessing import MinMaxScaler
 +
 +
scaler = MinMaxScaler(feature_range=(0, 1))
 +
X_scaled = scaler.fit_transform(X)
 +
</syntaxhighlight>
 +
 +
== Стандартизация (z-score) ==
 +
 +
'''Стандартизация''' (z-score normalization) центрирует признак относительно среднего и масштабирует его по стандартному отклонению:
 +
 +
:: <tex>x' = \frac{x - \mu}{\sigma}</tex>
 +
 +
где
 +
 +
:: <tex>\mu = \frac{1}{n}\sum_{i=1}^{n} x_i, \qquad \sigma = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(x_i - \mu)^2}</tex>
 +
 +
После преобразования признак имеет нулевое среднее и единичную дисперсию: <tex>\mathbb{E}[x']=0</tex>, <tex>\mathrm{Var}[x']=1</tex>. Величина <tex>x'</tex> показывает, на сколько стандартных отклонений исходное значение отстоит от среднего, что делает интерпретацию наглядной при приближённо [[Нормальное распределение|нормальном распределении]] признака: согласно правилу «трёх сигм» около 68 % значений попадают в интервал <tex>[-1,1]</tex>, около 95 % — в <tex>[-2,2]</tex>. При этом сама по себе стандартизация не делает распределение нормальным — она лишь центрирует и масштабирует его, сохраняя исходную форму (асимметрию, эксцесс).
 +
 +
Продолжим пример с доходом. Для выборки {30, 45, 50, 55, 60, 65, 400} среднее <tex>\mu \approx 100{,}71</tex>, стандартное отклонение <tex>\sigma \approx 122{,}63</tex>. После стандартизации:
 +
 +
{| class="wikitable"
 +
! Исходное значение !! После Z-score
 +
|-
 +
| 30 || −0,577
 +
|-
 +
| 45 || −0,454
 +
|-
 +
| 50 || −0,414
 +
|-
 +
| 55 || −0,373
 +
|-
 +
| 60 || −0,332
 +
|-
 +
| 65 || −0,291
 +
|-
 +
| 400 (выброс) || 2,441
 +
|}
 +
 +
По сравнению с min-max масштабированием типичные значения распределены несколько шире (интервал <tex>[-0{,}58;\,-0{,}29]</tex> против <tex>[0;\,0{,}095]</tex>), однако среднее и стандартное отклонение по-прежнему вычисляются с учётом выброса, а значит, остаются им искажены.
 +
 +
Стандартизация — метод по умолчанию для линейных и логистических моделей с регуляризацией, [[Метод опорных векторов|метода опорных векторов]], [[Метод главных компонент|метода главных компонент]] и линейного дискриминантного анализа, а также для большинства архитектур нейронных сетей. В отличие от min-max scaling, результат не ограничен фиксированным диапазоном, что не создаёт проблем при появлении на этапе применения модели значений, выходящих за пределы диапазона обучающей выборки.
 +
 +
<syntaxhighlight lang="python">
 +
from sklearn.preprocessing import StandardScaler
 +
 +
scaler = StandardSca
 +
ler()
 +
X_scaled = scaler.fit_transform(X)
 +
</syntaxhighlight>
 +
 +
Стоит отметить, что <tt>StandardScaler</tt> в scikit-learn по умолчанию вычисляет смещённую (population) дисперсию, то есть делит сумму квадратов отклонений на <tex>n</tex>, а не на <tex>n-1</tex>.
 +
 +
== Робастное масштабирование ==
 +
 +
'''Робастное масштабирование''' (robust scaling) использует вместо среднего и стандартного отклонения статистики, устойчивые к выбросам, — [[Медиана|медиану]] и [[Квартиль|межквартильный размах]] (IQR):
 +
 +
:: <tex>x' = \frac{x - Q_2}{Q_3 - Q_1}</tex>
 +
 +
где <tex>Q_2</tex> — медиана (второй квартиль), <tex>Q_1</tex> и <tex>Q_3</tex> — первый и третий квартили, а разность <tex>Q_3-Q_1</tex> — межквартильный размах (IQR), охватывающий центральные 50 % наблюдений.
 +
 +
Медиана и квартили — порядковые статистики, устойчивые к экстремальным значениям: смещение одного выброса в область бесконечности практически не меняет положение медианы или границ IQR, поскольку эти величины определяются не самими значениями, а их рангом в отсортированной выборке.
 +
 +
Завершим сквозной пример с доходом. Для выборки {30, 45, 50, 55, 60, 65, 400}: медиана <tex>Q_2=55</tex>, <tex>Q_1=45</tex>, <tex>Q_3=65</tex>, IQR <tex>=20</tex>. Сведём все три метода в одну таблицу:
 +
 +
{| class="wikitable"
 +
! Исходное значение !! Min-Max !! Z-score !! Robust
 +
|-
 +
| 30 || 0,000 || −0,577 || −1,25
 +
|-
 +
| 45 || 0,041 || −0,454 || −0,50
 +
|-
 +
| 50 || 0,054 || −0,414 || −0,25
 +
|-
 +
| 55 || 0,068 || −0,373 || 0,00
 +
|-
 +
| 60 || 0,081 || −0,332 || 0,25
 +
|-
 +
| 65 || 0,095 || −0,291 || 0,50
 +
|-
 +
| 400 (выброс) || 1,000 || 2,441 || 17,25
 +
|}
 +
 +
Различие хорошо видно: под min-max и z-score основная масса «нормальных» значений сжата в узкий интервал из-за влияния выброса на <tex>x_{max}</tex>, <tex>\mu</tex> и <tex>\sigma</tex>. Робастное масштабирование, напротив, не изменило относительное расположение типичных значений (интервал <tex>[-1{,}25;\,0{,}5]</tex> пропорционален исходным различиям), а выброс получил большое по модулю, но не искажающее остальные данные значение — 17,25, что само по себе может служить сигналом об аномалии. Ценой этой устойчивости является то, что робастное масштабирование не гарантирует единичной дисперсии преобразованного признака и хуже подходит там, где важна именно эта статистическая интерпретация.
 +
 +
<syntaxhighlight lang="python">
 +
from sklearn.preprocessing import RobustScaler
 +
 +
scaler = RobustScaler(quantile_range=(25.0, 75.0))
 +
X_scaled = scaler.fit_transform(X)
 +
</syntaxhighlight>
 +
 +
== Другие методы ==
 +
 +
Помимо трёх базовых подходов, в scikit-learn реализован ряд специализированных преобразований.
 +
 +
'''MaxAbsScaler''' делит значения признака на максимальный модуль:
 +
 +
:: <tex>x' = \frac{x}{|x_{max}|}</tex>
 +
 +
Результат попадает в диапазон <tex>[-1,1]</tex>. Важное свойство — преобразование не сдвигает данные (не вычитает среднее или минимум), поэтому нулевые значения остаются нулевыми. Это делает MaxAbsScaler предпочтительным для разреженных матриц (например, TF-IDF представлений текста), где сохранение разреженности критично для памяти и скорости вычислений.
 +
 +
'''PowerTransformer''' — семейство нелинейных степенных преобразований, приближающих распределение признака к нормальному и стабилизирующих дисперсию. Преобразование Бокса — Кокса (Box-Cox) определено только для строго положительных значений:
 +
 +
:: <tex>x^{(\lambda)} = \begin{cases} \dfrac{x^{\lambda} - 1}{\lambda}, & \lambda \neq 0 \\[4pt] \ln x, & \lambda = 0 \end{cases}</tex>
 +
 +
Параметр <tex>\lambda</tex> подбирается по данным (обычно методом максимального правдоподобия). Преобразование Йео — Джонсона (Yeo-Johnson) — обобщение, допускающее нулевые и отрицательные значения:
 +
 +
:: <tex>x^{(\lambda)} = \begin{cases} \dfrac{(x+1)^{\lambda} - 1}{\lambda}, & \lambda \neq 0,\ x \geq 0 \\[4pt] \ln(x+1), & \lambda = 0,\ x \geq 0 \\[4pt] -\dfrac{(-x+1)^{2-\lambda} - 1}{2-\lambda}, & \lambda \neq 2,\ x < 0 \\[4pt] -\ln(-x+1), & \lambda = 2,\ x < 0 \end{cases}</tex>
 +
 +
Оба преобразования полезны для сильно асимметричных признаков (доход, число визитов, время
 +
ожидания), особенно для моделей, чувствительных к форме распределения.
 +
 +
'''QuantileTransformer''' строит нелинейное отображение на основе эмпирической функции распределения признака, приводя его к равномерному либо нормальному распределению. Метод наиболее агрессивно устраняет влияние выбросов и асимметрии, поскольку опирается только на ранги наблюдений, но может исказить взаимосвязи между признаками (нелинейное преобразование не сохраняет корреляции) и чувствителен к объёму обучающей выборки.
 +
 +
<syntaxhighlight lang="python">
 +
from sklearn.preprocessing import MaxAbsScaler, PowerTransformer, QuantileTransformer
 +
 +
pt = PowerTransformer(method="yeo-johnson")
 +
X_pt = pt.fit_transform(X)
 +
 +
qt = QuantileTransformer(output_distribution="normal")
 +
X_qt = qt.fit_transform(X)
 +
</syntaxhighlight>
 +
 +
== Влияние на алгоритмы ==
 +
 +
Чувствительность к масштабу признаков существенно различается между семействами алгоритмов.
 +
 +
{| class="wikitable"
 +
|+ Чувствительность алгоритмов машинного обучения к масштабу признаков
 +
! Алгоритм !! Чувствительность !! Обоснование
 +
|-
 +
| [[Линейная регрессия|Линейная]] / [[Логистическая регрессия|логистическая регрессия]] с регуляризацией || Высокая || [[Регуляризация|Регуляризационный]] штраф зависит от масштаба коэффициентов, который, в свою очередь, зависит от масштаба признаков
 +
|-
 +
| [[Метод опорных векторов|Метод опорных векторов]] (SVM) || Высокая || Построение разделяющей гиперплоскости и ядровые функции опираются на евклидово расстояние между объектами
 +
|-
 +
| [[Метод ближайших соседей|Метод ближайших соседей]] (KNN) || Высокая || Классификация непосредственно основана на расстояниях между объектами в признаковом пространстве
 +
|-
 +
| [[Метод главных компонент|Метод главных компонент]] (PCA) || Высокая || Направления максимальной дисперсии определяются абсолютным масштабом признаков, а не их относительной значимостью
 +
|-
 +
| Кластеризация методом k-средних || Высокая || Формирование кластеров основано на расстояниях до центроидов
 +
|-
 +
| [[Нейронная сеть|Нейронные сети]] (градиентное обучение) || Высокая (влияет на скорость и устойчивость сходимости) || Разномасштабные входы приводят к вытянутому рельефу функции потерь и неравномерным градиентам по слоям
 +
|-
 +
| [[Дерево решений|Деревья решений]] || Низкая || Разбиения строятся по пороговым значениям одного признака независимо от масштаба остальных
 +
|-
 +
| [[Случайный лес|Случайный лес]] || Низкая || Ансамбль деревьев решений, наследует их инвариантность к монотонным преобразованиям признаков
 +
|-
 +
| [[Градиентный бустинг|Градиентный бустинг]] (XGBoost, LightGBM, CatBoost) || Низкая || Также опирается на пороговые разбиения по отдельным признакам
 +
|-
 +
| Наивный байесовский классификатор || Низкая / умеренная || Оценивает распределение каждого признака отдельно; масштаб не влияет на итоговую разделяющую способность
 +
|}
 +
 +
Общая закономерность: методы, основанные на пороговых разбиениях одного признака (деревья и их ансамбли), инвариантны к любому монотонному преобразованию масштаба, тогда как методы, использующие расстояния, скалярные произведения или градиентную оптимизацию, чувствительны к нему напрямую.
 +
 +
== Влияние на регуляризацию ==
 +
 +
[[Регуляризация|L1- и L2-регуляризация]] штрафуют величину коэффициентов модели. Для линейной регрессии с L2-штрафом (гребневая регрессия) функционал имеет вид:
 +
 +
:: <tex>L(\beta) = \sum_{i=1}^{n}\left(y_i - \beta_0 - \sum_{j=1}^{p}\beta_j x_{ij}\right)^2 + \lambda \sum_{j=1}^{p}\beta_j^2</tex>
 +
 +
а для L1-регуляризации (лассо) — соответственно с штрафом <tex>\lambda\sum_{j}|\beta_j|</tex>. В обоих случаях величина штрафа зависит исключительно от численного значения коэффициента <tex>\beta_j</tex>, а не от того, насколько признак <tex>x_j</tex> в действительности значим для предсказания.
 +
 +
Проблема в том, что масштаб коэффициента обратно пропорционален масштабу признака: если признак измерен в рублях с диапазоном значений порядка <tex>10^5</tex>–<tex>10^6</tex>, соответствующий ему коэффициент естественным образом окажется очень малым (порядка <tex>10^{-5}</tex>–<
 +
tex>10^{-6}</tex>) просто для того, чтобы вклад <tex>\beta_j x_j</tex> в предсказание оставался разумной величины. Признак же, измеренный в единицах (например, число визитов в месяц), потребует коэффициента на несколько порядков больше. Регуляризация в этом случае штрафует признаки неравномерно — не пропорционально их реальной значимости, а обратно пропорционально их естественному масштабу: крупномасштабные признаки получают заниженный (и потому слабо штрафуемый) коэффициент, тогда как мелкомасштабные — завышенный и, соответственно, сильнее подавляемый. Особенно чувствительно к этому L1-регуляризация: поскольку она способна обнулять коэффициенты полностью, отбор признаков при несогласованных масштабах оказывается смещённым в пользу признаков с большим численным диапазоном, а не в пользу признаков с наибольшей предсказательной силой.
 +
 +
Именно поэтому стандартизация признаков перед обучением регуляризованных линейных моделей считается стандартной практикой: приведение всех признаков к единичной дисперсии уравнивает условия, при которых регуляризационный штраф применяется к каждому из них, и делает итоговые коэффициенты сопоставимыми как меры относительной значимости признаков.
 +
 +
== Сравнение методов ==
 +
 +
{| class="wikitable"
 +
! Метод !! Формула !! Диапазон результата !! Устойчивость к выбросам !! Основные плюсы !! Основные минусы
 +
|-
 +
| Min-Max || <tex>x'=\frac{x-x_{min}}{x_{max}-x_{min}}</tex> || <tex>[0,1]</tex> (настраиваемый) || Низкая || Фиксированный, интерпретируемый диапазон; сохраняет форму распределения || Сильно искажается единичными выбросами; новые данные вне обучающего диапазона выходят за границы
 +
|-
 +
| Z-score || <tex>x'=\frac{x-\mu}{\sigma}</tex> || Теоретически не ограничен (практически [-3,3]) || Умеренная || Стандарт для линейных моделей, SVM, PCA, нейросетей; интерпретация в единицах стандартного отклонения || Среднее и дисперсия чувствительны к выбросам
 +
|-
 +
| Robust || <tex>x'=\frac{x-Q_2}{Q_3-Q_1}</tex> || Не ограничен || Высокая || Устойчив к выбросам и асимметрии распределения || Не даёт единичной дисперсии; менее привычная интерпретация
 +
|-
 +
| MaxAbs || <tex>x'=\frac{x}{|x_{max}|}</tex> || <tex>[-1,1]</tex> || Низкая || Сохраняет разреженность данных (нули остаются нулями) || Чувствителен к выбросам, как и Min-Max
 +
|-
 +
| PowerTransformer || нелинейное степенное преобразование || Приближается к нормальному распределению || Умеренная || Снижает асимметрию, стабилизирует дисперсию || Box-Cox требует строго положительных значений; интерпретация затруднена
 +
|-
 +
| QuantileTransformer || преобразование по эмпирической функции распределения || <tex>[0,1]</tex> либо нормальное || Высокая || Полностью устраняет влияние выбросов и асимметрии || Нелинейно; может исказить взаимосвязи между признаками, риск переобучения на малых выборках
 +
|}
 +
 +
== Пример: подготовка данных для логистической регрессии в задаче прогнозирования оттока клиентов ==
 +
 +
Рассмотрим упрощённый набор данных телекоммуникационной компании для задачи прогнозирования оттока (churn) с двумя признаками — стажем обслуживания (в месяцах) и ежемесячным платежом (в рублях):
 +
 +
{| class="wikitable"
 +
! Клиент !! Стаж, мес. !! Платёж, руб./мес. !! Отток
 +
|-
 +
| 1 || 2 || 3 500 || 1
 +
|-
 +
| 2 || 34 || 1 200 || 0
 +
|-
 +
| 3 || 58 || 4 200 || 0
 +
|-
 +
| 4 || 4 || 900 || 1
 +
|-
 +
| 5 || 45 || 5 600 || 0
 +
|}
 +
 +
Стаж имеет среднее <tex>\mu \approx 28{,}6</tex> и стандартное отклонение <tex>\sigma \approx 22{,}25</tex>; платёж — среднее <tex>\mu \approx 3080</tex> и стандартное отклонение <tex>\sigma \approx 1792{,}65</tex>. После стандартизации по формуле <tex>x' = (x-\mu)/\sigma</tex>:
 +
 +
{| class="wikitable"
 +
! Клиент !! Стаж (станд.) !! Платёж (станд.) !! Отток
 +
|-
 +
| 1 || −1,196 || 0,234 || 1
 +
|-
 +
| 2 || 0,243 || −1,049 || 0
 +
|-
 +
| 3 || 1,321 || 0,625 || 0
 +
|-
 +
| 4 || −1,106 || −1,216 || 1
 +
|-
 +
| 5 || 0,737 || 1,406 || 0
 +
|}
 +
 +
До масштабирования диапазон платежа (900–5600) на два порядка превышает диапазон стажа (2–58). При обучении [[Логистическая регрессия|логистической регрессии]] градиентными методами это означа
 +
ет, что частная производная функции потерь по коэффициенту при платеже на несколько порядков отличается по величине от производной по коэффициенту при стаже, и без индивидуальной настройки шага обучения для каждого признака сходимость существенно замедляется. Кроме того, при использовании L2- или L1-регуляризации коэффициент при платеже, обученный на исходных данных, будет иметь порядок <tex>10^{-4}</tex>, а коэффициент при стаже — порядок <tex>10^{-2}</tex>–<tex>10^{-1}</tex>; сравнение таких коэффициентов напрямую ничего не говорит об относительной значимости признаков. После стандартизации оба признака приведены к общему масштабу (нулевое среднее, единичная дисперсия), их вклад в предсказание и в регуляризационный штраф сопоставим, а абсолютные значения обученных коэффициентов допустимо интерпретировать как меру относительной важности признака при фиксированной силе регуляризации.
 +
 +
<syntaxhighlight lang="python">
 +
from sklearn.preprocessing import StandardScaler
 +
from sklearn.linear_model import LogisticRegression
 +
from sklearn.pipeline import Pipeline
 +
 +
pipeline = Pipeline([
 +
("scaler", StandardScaler()),
 +
("model", LogisticRegression(penalty="l2", C=1.0))
 +
])
 +
pipeline.fit(X_train, y_train)
 +
</syntaxhighlight>
 +
 +
Существен методический момент: параметры масштабирования (<tex>\mu</tex>, <tex>\sigma</tex>, <tex>x_{min}</tex>, <tex>x_{max}</tex>, <tex>Q_1</tex>, <tex>Q_2</tex>, <tex>Q_3</tex>) должны вычисляться исключительно на обучающей выборке методом <tt>fit</tt> и затем применяться к валидационной и тестовой выборкам методом <tt>transform</tt>, без повторного вычисления статистик на них. Нарушение этого правила приводит к утечке информации из тестовой выборки в процесс обучения (data leakage) и завышенной оценке качества модели.
 +
 +
== Практические рекомендации ==
 +
 +
* Для '''линейных и логистических моделей с регуляризацией''' — стандартизация (z-score); при наличии выраженных выбросов — робастное масштабирование.
 +
* Для '''метода опорных векторов, метода ближайших соседей, k-средних и метода главных компонент''' — стандартизация практически обязательна, поскольку эти методы напрямую оперируют расстояниями или дисперсией.
 +
* Для '''деревьев решений, случайного леса и градиентного бустинга''' — масштабирование, как правило, не требуется, поскольку эти алгоритмы инвариантны к монотонным преобразованиям отдельных признаков.
 +
* Для '''нейронных сетей''' — стандартизация или min-max scaling к диапазону <tex>[0,1]</tex> либо <tex>[-1,1]</tex>, в зависимости от функций активации; для сверточных сетей, работающих с изображениями, min-max к <tex>[0,1]</tex> — стандартная практика.
 +
* При '''наличии выбросов''', которые не являются ошибками измерения и должны быть сохранены в выборке, — робастное масштабирование или QuantileTransformer вместо min-max и z-score.
 +
* Для '''разреженных данных''' (например, TF-IDF, one-hot представления с большим числом признаков) — MaxAbsScaler, не разрушающий разреженность, в отличие от методов, включающих центрирование.
 +
* При '''сильной асимметрии распределения''' признака (доход, время ожидания, количество событий) — PowerTransformer перед стандартизацией.
 +
* Параметры масштабирования всегда вычисляются на обучающей выборке и фиксируются для последующего применения к новым данным; включение шага масштабирования в единый [[Конвейер обработки данных|конвейер]] (<tt>sklearn.pipeline.Pipeline</tt>) снижает риск утечки данных при кросс-валидации.
 +
 +
== См. также ==
 +
 +
* [[Ослабление и усиление шкал признаков]]
 +
* [[Предобработка данных]]
 +
* [[Регуляризация]]
 +
* [[Логистическая регрессия]]
 +
* [[Метод главных компонент]]
 +
 +
== Литература ==
 +
 +
* Hastie T., Tibshirani R., Friedman J. The Elements of Statistical Learning: Data Mining, Inference, and Prediction. — 2nd ed. — Springer, 2009.
 +
* Bishop C. M. Pattern Recognition and Machine Learning. — Springer, 2006.
 +
* Géron A. Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow. — 3rd ed. — O'Reilly, 2022.
 +
* Zheng A., Casari A. Feature Engineering for Machine Learning.
 +
Microsoft Azure Web App - Error 404
 +
pipeline.fit
 +
— O'Reilly, 2018.
 +
* Box G. E. P., Cox D. R. An Analysis of Transformations // Journal of the Royal Statistical Society, Series B. — 1964. — Vol. 26, No. 2.
 +
* Yeo I.-K., Johnson R. A. A New Family of Power Transformations to Improve Normality or Symmetry // Biometrika. — 2000. — Vol. 87, No. 4.
 +
* Ioffe S., Szegedy C. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift // Proceedings of the 32nd International Conference on Machine Learning (ICML). — 2015.
 +
* Scikit-learn developers. Preprocessing data // Scikit-learn User Guide. — [https://scikit-learn.org/stable/modules/preprocessing.html scikit-learn.org/stable/modules/preprocessing.html]
 +
 +
[[Категория:Машинное обучение]]
 +
[[Категория:Предобработка данных]]
 +
```
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
Аугментация данных
 +
 +
 +
 +
 +
Ты специалист в области машинного обучения, профессор в ведущем техническом университете и популяризатор науки. Напиши энциклопедическую статью для MachineLearning.ru на тему «Аугментация данных».
 +
 +
Целевая аудитория: мотивированные студенты, преподаватели и специалисты в AI/ML. Статья должна быть полезна новичку: дать понятное определение, объяснить, зачем увеличивать выборку, показать на простых примерах (поворот картинки, замена слова в тексте). Профессионалу статья должна дать систематизацию методов для разных типов данных, объяснить связь с регуляризацией и обобщающей способностью, описать современные подходы (AutoAugment, RandAugment, MixUp, CutMix, back-translation).
 +
 +
Обязательные разделы:
 +
1. Введение: определение аугментации, её цели (борьба с переобучением, повышение робастности, увеличение выборки)
 +
2. Мотивация: почему аугментация работает — связь с регуляризацией и увеличением эффективного размера выборки
 +
3. Аугментация изображений: геометрические преобразования (повороты, отражения, сдвиги, масштабирование), цветовые преобразования (яркость, контраст, насыщенность), добавление шума
 +
4. Продвинутые методы для изображений: MixUp, CutMix, Random Erasing, AutoAugment, RandAugment
 +
5. Аугментация текстов: синонимичные замены, back-translation, случайные вставки/удаления, EDA (Easy Data Augmentation)
 +
6. Аугментация табличных данных: добавление шума, SMOTE для дисбаланса классов, генерация синтетических примеров
 +
7. Аугментация аудио и временных рядов: растяжение времени, сдвиг по высоте, добавление фонового шума, маскирование
 +
8. Динамическая vs статическая аугментация: применение на лету (во время обучения) vs предварительная генерация
 +
9. Ограничения и риски: когда аугментация может навредить, проблема "нереалистичных" примеров
 +
10. Библиотеки и инструменты: Albumentations, imgaug, torchvision.transforms, nlpaug, audiomentations
 +
11. См. также: внутренние ссылки на другие страницы (Регуляризация, Переобучение, Дисбаланс классов, Компьютерное зрение, Обработка естественного языка)
 +
12. Литература (реальные источники)
 +
 +
Важно: статья должна быть практичной, с примерами кода (псевдокод или ссылки на реальные библиотеки). Добавь таблицу сравнения методов для разных типов данных.
 +
 +
Стиль академичный, ясный, без рекламных фраз и нейросетевых штампов. Формулы оформляй только через <tex>...</tex>, выключные формулы через :: <tex>...</tex>. Термины оформляй как внутренние ссылки. В начале статьи добавь предупреждение: {{well|Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 16:49, 10 июля 2026 (MSD)}}
 +
 +
Выдай только сырой вики-код статьи.
 +
 +
 +
 +
 +
 +
 +
{{well|Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 7:49, 11 июля 2026 (MSD)}}
 +
 +
'''Аугментация данных''' (''data augmentation'') — совокупность методов искусственного расширения обучающей выборки путём применения к имеющимся объектам преобразований, сохраняющих или контролируемо изменяющих их метку. Аугментация используется при обучении моделей [[машинное обучение|машинного обучения]] для борьбы с [[переобучение|переобучением]], повышения устойчивости моделей к вариативности реальных данных и увеличения эффективного объёма обучающей выборки без затрат на разметку новых примеров.
 +
 +
== Введение ==
 +
 +
Пусть задана обучающая выборка <tex>X = \{(x_i, y_i)\}_{i=1}^n</tex>, где <tex>x_i</tex> — объект, <tex>y_i</tex> — его метка (ответ). ''Аугментацией'' называется применение к объекту <tex>x_i</tex> некоторого преобразования <tex>t</tex> из заданного семейства <tex>\mathcal{T}</tex>, порождающего новый объект <tex>t(x_i)</tex>, который либо сохраняет исходную метку <tex>y_i</tex> (label-preserving augmentation), либо порождает вместе с ней новую, скорректированную метку — как в методах [[#MixUp|MixUp]] и [[#CutMix|CutMix]].
 +
 +
Формально расширенная выборка имеет вид:
 +
 +
:: <tex> X_{aug} = \{(t(x_i), y_i) \mid (x_i, y_i) \in X,\ t \in \mathcal{T}\} </tex>
 +
 +
Аугментация решает три взаимосвязанные задачи.
 +
 +
# '''Борьба с переобучением.''' Современные модели, особенно глубокие [[нейронная сеть|нейронные сети]], обладают числом параметров, зачастую превышающим число обучающих примеров. Без ограничения сложности такая модель способна запомнить обучающую выборку, потеряв [[обобщающая способность|обобщающую способность]]. Аугментация уменьшает разрыв между эмпирическим и ожидаемым риском, действуя как форма [[регуляризация|регуляризации]].
 +
# '''Повышение робастности.''' Модель, обученная на аугментированных данных, лучше переносит вариативность реальных условий эксплуатации — изменение освещения, ракурса, шум в канале связи, опечатки в тексте, — поскольку встречала аналогичные искажения при обучении.
 +
# '''Увеличение эффективного размера выборки.''' Сбор и разметка новых данных часто дороги или невозможны (редкие заболевания, аварийные ситуации, малоресурсные языки). Аугментация позволяет получить дополнительные обучающие примеры почти бесплатно, хотя и не привносит принципиально новой информации об истинном распределении данных.
 +
 +
Аугментацию данных следует отличать от смежных понятий. В отличие от синтеза данных (data synthesis), где новые объекты порождаются генеративной моделью без опоры на конкретный исходный пример, аугментация всегда отталкивается от реального объекта выборки. В отличие от простого передискретизации (resampling, например дублирования примеров редкого класса), аугментация создаёт новые, отличающиеся от исходных объекты.
 +
 +
== Мотивация ==
 +
 +
С теоретической точки зрения аугментацию удобно рассматривать в рамках концепции ''минимизации риска в окрестности'' (Vicinal Risk Minimization, VRM), предложенной Шапелем и соавторами. Классическая минимизация эмпирического риска ищет функцию <tex>f</tex>, минимизирующую
 +
 +
:: <tex> R_{emp}(f) = \frac{1}{n}\sum_{i=1}^n L(f(x_i), y_i) </tex>
 +
 +
Однако эмпирическое распределение, сосредоточенное в точках выборки, — крайне грубое приближение истинного распределения данных. Идея VRM состоит в замене этого распределения на распределение, «размазанное» по окрестности (vicinity) каждой точки:
 +
 +
:: <tex> R_{vic}(f) = \frac{1}{n}\sum_{i=1}^n \mathbb{E}_{(\tilde{x}, \tilde{y}) \sim v(x_i, y_i)} \left[ L(f(\tilde{x}), \tilde{y}) \right] </tex>
 +
 +
где <tex>v(x_i, y_i)</tex> — распределение вероятностей на объектах, «похожих» на <tex>(x_i, y_i)</tex>. Аугментация — это практический способ построения выборки из <tex>v(x_i, y_i)</tex>: каждое случайное преобразование <tex>t \sim \mathcal{T}</tex> задаёт один сэмпл из окрестности исходной точки.
 +
 +
Такая интерпретация напрямую связывает аугментацию с [[регуляризация|регуляризацией]]:
 +
 +
* Как и <tex>L_1</tex>/<tex>L_2</tex>-регуляризация, аугментация ограничивает эффективную сложность модели — но не через штраф на веса, а через расширение множества примеров, на которых модель обязана давать согласованный ответ.
 +
* Аугментация вносит в обучение априорное знание о том, какие преобразования объекта не должны менять его метку (инвариантности). Поворот фотографии кошки на 10° не должен превращать её в собаку — это знание нельзя вывести из самих пикселей, оно привносится извне, подобно тому, как архитектурные ограничения (например, свёрточные слои) кодируют априорное знание о трансляционной инвариантности.
 +
* Эмпирически модели, обученные с аугментацией, демонстрируют меньший разрыв между качеством на обучающей и тестовой выборках при сопоставимом или лучшем качестве на тесте — то есть меньшее переобучение.
 +
 +
Выигрыш от аугментации максимален, когда используемые преобразования действительно сохраняют семантику задачи и отражают вариативность, ожидаемую в реальных данных. Преобразования, не соответствующие этому условию, способны не регуляризировать, а вносить шум — см. раздел [[#Ограничения и риски|«Ограничения и риски»]].
 +
 +
== Аугментация изображений ==
 +
 +
Изображения — исторически первая и наиболее развитая область применения аугментации, начиная с классической работы Крижевского, Суцкевера и Хинтона по сети AlexNet (2012), где применялись случайные сдвиги, отражения и изменение интенсивности каналов RGB.
 +
 +
=== Геометрические преобразования ===
 +
 +
* '''Повороты''' (rotation) — поворот изображения на случайный угол <tex>\theta</tex>:
 +
 +
:: <tex> \begin{pmatrix} x' \\ y' \end{pmatrix} = \begin{pmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} </tex>
 +
 +
Небольшие углы (обычно ±10–30°) сохраняют метку класса; углы, кратные 90°, применимы почти всегда, за исключением задач, где ориентация значима (распознавание дорожных знаков, текста).
 +
 +
* '''Отражения''' (flip) — горизонтальное отражение почти универсально применимо; вертикальное — только если ориентация объекта не несёт смысла.
 +
* '''Сдвиги''' (translation) — перенос изображения по осям с заполнением освободившейся области (padding, reflection, constant fill).
 +
* '''Масштабирование и обрезка''' (scale, random crop) — изменение масштаба объекта и вырезание случайного фрагмента, эмулирующее вариативность расстояния до камеры.
 +
* '''Аффинные и перспективные искажения''' — сдвиг (shear), изменение перспективы, эластичные деформации (elastic distortions), впервые систематически использованные Симаром и соавторами для распознавания рукописных цифр.
 +
 +
=== Цветовые (фотометрические) преобразования ===
 +
 +
* Изменение '''яркости''' (brightness), '''контраста''' (contrast), '''насыщенности''' (saturation) и '''оттенка''' (hue) — как правило, реализуется случайным изменением соответствующих каналов в цветовом пространстве HSV.
 +
* '''PCA color augmentation''' («fancy PCA») — добавление шума вдоль главных компонент распределения цветов по каналам RGB, впервые предложенное в работе по AlexNet.
 +
* Перевод в оттенки серого, постеризация, инверсия цвета — используются реже, в задачах, устойчивых к потере цветовой информации.
 +
 +
=== Добавление шума ===
 +
 +
Наложение гауссовского шума, шума типа «соль и перец» (salt-and-pepper), размытия (Gaussian blur, motion blur) эмулирует артефакты реальных камер и каналов передачи и повышает устойчивость модели к низкому качеству входных изображений.
 +
 +
Пример на псевдокоде (библиотека Albumentations):
 +
 +
<source lang="python">
 +
import albumentations as A
 +
 +
transform = A.Compose([
 +
A.Rotate(limit=25, p=0.5),
 +
A.HorizontalFlip(p=0.5),
 +
A.RandomBrightnessContrast(brightness_limit=0.2, contrast_limit=0.2, p=0.5),
 +
A.GaussNoise(var_limit=(10.0, 50.0), p=0.3),
 +
])
 +
 +
augmented = transform(image=image)["image"]
 +
</source>
 +
 +
== Продвинутые методы для изображений ==
 +
 +
=== MixUp ===
 +
 +
Метод MixUp (Чжан и соавторы, 2018) отходит от идеи преобразования одного объекта и вместо этого строит новый объект как линейную комбинацию двух случайно выбранных примеров обучающей выборки вместе с их метками:
 +
 +
:: <tex> \tilde{x} = \lambda x_i + (1-\lambda) x_j, \qquad \tilde{y} = \lambda y_i + (1-\lambda) y_j </tex>
 +
 +
где коэффициент смешивания <tex>\lambda \sim \mathrm{Beta}(\alpha, \alpha)</tex>, а параметр <tex>\alpha</tex> обычно берётся в диапазоне 0.1–0.4. MixUp — прямая практическая реализация VRM: окрестность точки задаётся не локальным искажением, а отрезком, соединяющим её с другими точками выборки. Метод сглаживает решающую поверхность классификатора и снижает его чувствительность к состязательным возмущениям.
 +
 +
=== CutMix ===
 +
 +
CutMix (Юн и соавторы, 2019) комбинирует идею MixUp с идеей вырезания области (см. Random Erasing ниже): прямоугольная область одного изображения заменяется соответствующей областью другого, а метка смешивается пропорционально площади вставленного фрагмента:
 +
 +
:: <tex> \tilde{x} = M \odot x_i + (1-M) \odot x_j, \qquad \tilde{y} = \lambda y_i + (1-\lambda) y_j </tex>
 +
 +
где <tex>M</tex> — бинарная маска, вырезающая прямоугольную область, <tex>\lambda</tex> — доля площади, приходящаяся на <tex>x_i</tex>. По сравнению с MixUp, CutMix не создаёт визуально неестественных «полупрозрачных» изображений и, по данным авторов, даёт дополнительный выигрыш в задачах локализации объектов, поскольку заставляет модель использовать всю информативную область изображения, а не только наиболее заметный фрагмент.
 +
 +
=== Random Erasing и Cutout ===
 +
 +
Методы Random Erasing (Чжун и соавторы) и близкий к нему Cutout (Де Врис и Тейлор) случайным образом закрашивают прямоугольную область изображения однородным цветом или шумом, метка при этом не меняется. Эффект аналогичен dropout, но применяется на уровне входных данных: модель вынуждена не полагаться на какой-то один локальный признак и распределять внимание по всему объекту.
 +
 +
=== AutoAugment ===
 +
 +
AutoAugment (Кубук и соавторы, 2019) переформулирует выбор политики аугментации как задачу обучения с подкреплением: контроллер (рекуррентная сеть) ищет оптимальную последовательность операций (тип преобразования, вероятность применения и магнитуда), максимизирующую качество модели-«ребёнка» на отложенной выборке. Найденные политики для CIFAR-10, SVHN и ImageNet оказались переносимыми между задачами, но сам поиск чрезвычайно затратен вычислительно (тысячи GPU-часов).
 +
 +
=== RandAugment ===
 +
 +
RandAugment (Кубук и соавторы, 2020) — упрощение AutoAugment, устраняющее необходимость дорогостоящего поиска политики. Вместо обучаемого контроллера RandAugment случайным образом выбирает <tex>N</tex> операций из фиксированного набора и применяет их с единой глобальной магнитудой <tex>M</tex>, которые подбираются простым перебором по сетке на небольшом числе значений. При сопоставимом качестве RandAugment требует на порядки меньше вычислений, чем AutoAugment, что сделало его стандартом де-факто в современных конвейерах обучения свёрточных сетей и трансформеров зрения.
 +
 +
<source lang="python">
 +
import torchvision.transforms as T
 +
 +
transform = T.Compose([
 +
T.RandAugment(num_ops=2, magnitude=9),
 +
T.ToTensor(),
 +
])
 +
</source>
 +
 +
== Аугментация текстов ==
 +
 +
В отличие от изображений, текст дискретен, что делает многие геометрические аналогии неприменимыми: небольшое «искажение» символа может полностью разрушить смысл слова. Поэтому текстовая аугментация опирается на лингвистически осмысленные преобразования.
 +
 +
=== EDA (Easy Data Augmentation) ===
 +
 +
Вэй и Цзоу (2019) предложили набор из четырёх простых операций, применяемых к случайно выбранным словам предложения:
 +
 +
# '''Синонимичная замена''' (synonym replacement) — замена слова на синоним из тезауруса (например, WordNet).
 +
# '''Случайная вставка''' (random insertion) — вставка синонима случайного слова предложения в случайную позицию.
 +
# '''Случайное удаление''' (random deletion) — удаление слова с заданной вероятностью.
 +
# '''Случайная перестановка''' (random swap) — обмен местами двух случайно выбранных слов.
 +
 +
Несмотря на простоту, EDA даёт заметный прирост качества классификации текста на малых выборках при незначительных вычислительных затратах.
 +
 +
=== Обратный перевод (back-translation) ===
 +
 +
Метод, предложенный Зеннрихом и соавторами (2016) первоначально для машинного перевода, заключается в переводе текста на промежуточный язык и обратно (например, русский → английский → русский). Результат сохраняет смысл исходного текста, но может отличаться лексически и синтаксически, что даёт естественную и разнообразную аугментацию:
 +
 +
<source lang="python">
 +
text_en = translate(text_ru, src="ru", tgt="en")
 +
text_ru_aug = translate(text_en, src="en", tgt="ru")
 +
</source>
 +
 +
Back-translation особенно ценен тем, что не требует внешнего тезауруса и хорошо работает даже для сложных, многозначных конструкций, где простая замена слов ведёт к потере смысла.
 +
 +
=== Другие методы ===
 +
 +
* '''Контекстные замены на основе языковых моделей''' — маскирование слова и его восстановление предобученной языковой моделью (например, BERT), что даёт более естественные, согласованные с контекстом замены по сравнению со словарными синонимами.
 +
* '''Перефразирование''' (paraphrasing) генеративными моделями.
 +
* '''Добавление шума на уровне символов''' — опечатки, замена раскладки клавиатуры, случайные вставки/удаления символов — полезно для повышения устойчивости моделей к «грязному» пользовательскому вводу.
 +
 +
== Аугментация табличных данных ==
 +
 +
Табличные данные хуже поддаются интуитивным преобразованиям: у признаков часто нет естественной топологии (в отличие от соседних пикселей изображения), поэтому произвольный шум может нарушить статистические зависимости между признаками.
 +
 +
=== Добавление шума ===
 +
 +
Простейший приём — добавление небольшого гауссовского шума к числовым признакам, джиттеринг:
 +
 +
:: <tex> \tilde{x}^{(k)} = x^{(k)} + \varepsilon, \qquad \varepsilon \sim \mathcal{N}(0, \sigma^2) </tex>
 +
 +
Величина <tex>\sigma</tex> подбирается пропорционально дисперсии признака, чтобы не разрушить полезный сигнал.
 +
 +
=== SMOTE для дисбаланса классов ===
 +
 +
SMOTE (Synthetic Minority Over-sampling Technique, Чавла и соавторы, 2002) — стандартный метод борьбы с [[дисбаланс классов|дисбалансом классов]]. Для объекта <tex>x_i</tex> миноритарного класса находятся его <tex>k</tex> ближайших соседей того же класса, один из них <tex>x_{zi}</tex> выбирается случайно, и новый синтетический объект строится как точка на отрезке между ними:
 +
 +
:: <tex> x_{new} = x_i + \delta \cdot (x_{zi} - x_i), \qquad \delta \sim U(0, 1) </tex>
 +
 +
В отличие от простого дублирования объектов миноритарного класса, SMOTE порождает разнообразные, но правдоподобные точки внутри его области в признаковом пространстве, снижая риск переобучения на буквально повторяющихся примерах.
 +
 +
<source lang="python">
 +
from imblearn.over_sampling import SMOTE
 +
 +
smote = SMOTE(k_neighbors=5, random_state=42)
 +
X_resampled, y_resampled = smote.fit_resample(X_train, y_train)
 +
</source>
 +
 +
Существует ряд модификаций: Borderline-SMOTE (генерация только вблизи границы классов), ADASYN (адаптивное распределение количества синтетических примеров в зависимости от локальной сложности классификации), SMOTE-NC (для смешанных категориальных и числовых признаков).
 +
 +
=== Генеративные подходы ===
 +
 +
Для более сложных зависимостей между признаками применяют генеративные модели — вариационные автокодировщики и генеративно-состязательные сети, обученные аппроксимировать совместное распределение признаков и способные генерировать новые правдоподобные строки таблицы (например, CTGAN в библиотеке SDV). Такие методы дороже в применении и требуют отдельного этапа обучения генератора, но лучше сохраняют многомерные зависимости между признаками, чем покомпонентный шум.
 +
 +
== Аугментация аудио и временных рядов ==
 +
 +
* '''Растяжение по времени''' (time stretching) — изменение длительности сигнала без изменения высоты тона.
 +
* '''Сдвиг по высоте тона''' (pitch shifting) — изменение высоты тона без изменения темпа.
 +
* '''Добавление фонового шума''' — наложение записанного шума окружения (уличный шум, шум толпы) с заданным отношением сигнал/шум.
 +
* '''Временной сдвиг''' (time shift) — циклический сдвиг сигнала во времени.
 +
* '''SpecAugment''' (Парк и соавторы, 2019) — вместо преобразования исходного сигнала во временной области метод оперирует спектрограммой: случайно маскируются полосы по оси времени (time masking) и по оси частот (frequency masking), а также применяется деформация оси времени (time warping). SpecAugment стал стандартом в задачах распознавания речи, обходясь без необходимости отдельно моделировать акустический шум.
 +
* Для '''временных рядов общего вида''' применяются: window warping (локальное растяжение/сжатие отдельных участков ряда), перестановка сегментов, magnitude warping (плавное изменение амплитуды).
 +
 +
<source lang="python">
 +
from audiomentations import Compose, AddGaussianNoise, TimeStretch, PitchShift
 +
 +
augment = Compose([
 +
AddGaussianNoise(min_amplitude=0.001, max_amplitude=0.015, p=0.5),
 +
TimeStretch(min_rate=0.8, max_rate=1.25, p=0.5),
 +
PitchShift(min_semitones=-4, max_semitones=4, p=0.5),
 +
])
 +
 +
augmented_samples = augment(samples=samples, sample_rate=16000)
 +
</source>
 +
 +
== Сравнение методов по типам данных ==
 +
 +
{| class="wikitable"
 +
|+ Аугментация данных: сводная таблица по типам данных
 +
! Тип данных !! Базовые методы !! Продвинутые методы !! Основные библиотеки !! Типичные задачи
 +
|-
 +
| Изображения || Повороты, отражения, сдвиги, масштабирование, изменение яркости/контраста, шум || MixUp, CutMix, Random Erasing, AutoAugment, RandAugment || Albumentations, imgaug, torchvision.transforms || Классификация, детекция, сегментация
 +
|-
 +
| Текст || Синонимичные замены, случайные вставка/удаление/перестановка слов (EDA) || Обратный перевод, контекстные замены на основе языковых моделей || nlpaug, TextAttack || Классификация текста, NER, машинный перевод
 +
|-
 +
| Табличные данные || Гауссовский шум, джиттеринг числовых признаков || SMOTE и его модификации, генерация через GAN/VAE || imbalanced-learn, SDV || Кредитный скоринг, медицинская диагностика, детекция мошенничества
 +
|-
 +
| Аудио и временные ряды || Растяжение времени, сдвиг высоты тона, фоновый шум || SpecAugment, window warping, magnitude warping || audiomentations, librosa, torchaudio.transforms || Распознавание речи, анализ сенсорных сигналов
 +
|}
 +
 +
== Динамическая vs статическая аугментация ==
 +
 +
По моменту применения различают два режима.
 +
 +
* '''Статическая аугментация''' (offline augmentation) — новые объекты генерируются заранее и сохраняются на диск вместе с исходной выборкой. Преимущество — предсказуемая и воспроизводимая скорость обучения, отсутствие накладных расходов на преобразование во время обучения. Недостаток — конечное, фиксированное число вариаций каждого примера и повышенный расход дискового пространства.
 +
* '''Динамическая аугментация''' (online / on-the-fly augmentation) — преобразование применяется к каждому примеру заново на каждой эпохе обучения, обычно в процессе загрузки батча. Модель практически никогда не видит два эпохи подряд один и тот же объект в неизменном виде, что даёт эффективно неограниченное число вариаций и лучше действует как регуляризатор. Плата — дополнительная вычислительная нагрузка на CPU/GPU во время обучения, которая при плохой организации конвейера данных может стать узким местом, особенно для затратных преобразований (back-translation, генеративные модели).
 +
 +
На практике для изображений и аудио почти всегда используется динамическая аугментация (стандартный загрузчик данных в PyTorch или tf.data в TensorFlow применяют преобразования «на лету» в параллельных потоках), тогда как дорогостоящие методы — back-translation, генерация синтетических табличных строк GAN-моделью — чаще выполняются статически, один раз, поскольку их вычислительная стоимость несопоставима со стоимостью одного шага обучения.
 +
 +
== Ограничения и риски ==
 +
 +
Аугментация — не универсально полезный приём, и её бездумное применение способно ухудшить качество модели.
 +
 +
* '''Нарушение семантики задачи.''' Преобразование, кажущееся безобидным для одной задачи, может разрушать критичную информацию для другой. Вертикальное отражение допустимо для классификации пейзажей, но недопустимо для распознавания рукописных цифр (перевёрнутая «6» становится похожей на «9»). Изменение цвета недопустимо в задачах, где цвет — диагностический признак.
 +
* '''«Нереалистичные» примеры.''' Чрезмерно сильная или неудачно подобранная магнитуда преобразования порождает объекты, не встречающиеся в реальном распределении данных. Обучение на таких примерах не улучшает, а искажает представление модели о задаче, тратя ёмкость модели на нерелевантные вариации.
 +
* '''Смещение статистики распределения.''' Некоторые методы (например, агрессивный MixUp) смещают эффективное распределение обучающей выборки относительно тестового распределения, что может ухудшить калибровку итоговых вероятностей модели.
 +
* '''Ложное чувство защищённости от переобучения.''' Аугментация снижает, но не устраняет переобучение полностью и не заменяет собой недостаток данных для принципиально новых классов или редких сценариев, отсутствующих в обучающей выборке ни в каком виде.
 +
* '''Вычислительная стоимость.''' Продвинутые методы (AutoAugment, back-translation, генеративные модели для табличных данных) требуют значительных дополнительных вычислительных ресурсов, что не всегда оправдано выигрышем в качестве.
 +
* '''Разрушение зависимостей между признаками.''' Для табличных данных особенно легко случайно нарушить содержательные зависимости между признаками, если шум добавляется к каждому признаку независимо, — стоит проверять, что аугментированные объекты остаются правдоподобными с точки зрения предметной области.
 +
 +
Практическая рекомендация — подбирать набор и магнитуду преобразований на отложенной (валидационной) выборке, а не полагаться на «стандартный» набор, скопированный из другой предметной области.
 +
 +
== Библиотеки и инструменты ==
 +
 +
* '''[https://albumentations.ai Albumentations]''' — библиотека для аугментации изображений, оптимизированная по скорости (реализация на OpenCV), поддерживает согласованное преобразование изображений вместе с масками сегментации, ограничивающими рамками и ключевыми точками, что важно для задач детекции и сегментации.
 +
* '''[https://github.com/aleju/imgaug imgaug]''' — одна из первых широко используемых библиотек аугментации изображений в Python, гибкий API для построения сложных цепочек преобразований.
 +
* '''[https://pytorch.org/vision/stable/transforms.html torchvision.transforms]''' — модуль аугментации изображений, встроенный в PyTorch, включает готовые реализации RandAugment, AutoAugment, MixUp и CutMix.
 +
* '''[https://github.com/makcedward/nlpaug nlpaug]''' — библиотека текстовой аугментации на уровне символов, слов и предложений, включая контекстные замены на основе языковых моделей и интеграцию с сервисами перевода для back-translation.
 +
* '''[https://github.com/iver56/audiomentations audiomentations]''' — аналог Albumentations для аудиосигналов, реализует растяжение времени, сдвиг тона, добавление шума и другие преобразования.
 +
* '''[https://imbalanced-learn.org imbalanced-learn]''' — реализация SMOTE и его модификаций (Borderline-SMOTE, ADASYN, SMOTE-NC) для табличных данных, совместима с API scikit-learn.
 +
 +
== См. также ==
 +
 +
* [[Регуляризация]]
 +
* [[Переобучение]]
 +
* [[Дисбаланс классов]]
 +
* [[Компьютерное зрение]]
 +
* [[Обработка естественного языка]]
 +
 +
== Литература ==
 +
 +
# ''Krizhevsky A., Sutskever I., Hinton G. E.'' ImageNet Classification with Deep Convolutional Neural Networks // Advances in Neural Information Processing Systems (NIPS). — 2012. — Vol. 25.
 +
# ''Simard P. Y., Steinkraus D., Platt J. C.'' Best Practices for Convolutional Neural Networks Applied to Visual Document Analysis // Proceedings of ICDAR. — 2003.
 +
# ''Chawla N. V., Bowyer K. W., Hall L. O., Kegelmeyer W. P.'' SMOTE: Synthetic Minority Over-sampling Technique // Journal of Artificial Intelligence Research. — 2002. — Vol. 16. — P. 321–357.
 +
# ''Chapelle O., Weston J., Bottou L., Vapnik V.'' Vicinal Risk Minimization // Advances in Neural Information Processing Systems (NeurIPS). — 2000.
 +
# ''Zhang H., Cisse M., Dauphin Y. N., Lopez-Paz D.'' mixup: Beyond Empirical Risk Minimization // International Conference on Learning Representations (ICLR). — 2018.
 +
# ''Yun S., Han D., Oh S. J., Chun S., Choe J., Yoo Y.'' CutMix: Regularization Strategy to Train Strong Classifiers with Localizable Features // Proceedings of ICCV. — 2019.
 +
# ''DeVries T., Taylor G. W.'' Improved Regularization of Convolutional Neural Networks with Cutout // arXiv preprint. — 2017.
 +
# ''Zhong Z., Zheng L., Kang G., Li S., Yang Y.'' Random Erasing Data Augmentation // Proceedings of the AAAI Conference on Artificial Intelligence. — 2020.
 +
# ''Cubuk E. D., Zoph B., Mane D., Vasudevan V., Le Q. V.'' AutoAugment: Learning Augmentation Policies from Data // Proceedings of CVPR. — 2019.
 +
# ''Cubuk E. D., Zoph B., Shlens J., Le Q. V.'' RandAugment: Practical Automated Data Augmentation with a Reduced Search Space // Advances in Neural Information Processing Systems (NeurIPS). — 2020.
 +
# ''Wei J., Zou K.'' EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks // Proceedings of EMNLP-IJCNLP. — 2019.
 +
# ''Sennrich R., Haddow B., Birch A.'' Improving Neural Machine Translation Models with Monolingual Data // Proceedings of the 54th Annual Meeting of the ACL. — 2016.
 +
# ''Park D. S., Chan W., Zhang Y., Chiu C.-C., Zoph B., Cubuk E. D., Le Q. V.'' SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition // Proceedings of Interspeech. — 2019.
 +
# ''Shorten C., Khoshgoftaar T. M.'' A Survey on Image Data Augmentation for Deep Learning // Journal of Big Data. — 2019. — Vol. 6, No. 60.
 +
# ''Goodfellow I., Bengio Y., Courville A.'' Deep Learning. — MIT Press, 2016.
 +
 +
[[Категория:Машинное обучение]]
 +
[[Категория:Нейронные сети]]
 +
[[Категория:Энциклопедия анализа данных]]
 +
[[Категория:Популярные и обзорные статьи]]
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
Дообучение нейронных сетей (Fine-Tuning)
 +
 +
 +
 +
 +
 +
Ты специалист в области машинного обучения, профессор в ведущем техническом университете и популяризатор науки. Напиши энциклопедическую статью для MachineLearning.ru на тему «Дообучение нейронных сетей».
 +
 +
Целевая аудитория: мотивированные студенты, преподаватели и специалисты в AI/ML. Статья должна быть полезна новичку: дать понятное определение, объяснить идею "предобучение + дообучение" (pre-train + fine-tune) на пальчиковом уровне, показать, чем это отличается от обучения с нуля. Профессионалу статья должна дать описание стратегий (полное дообучение, дообучение последних слоёв, параметро-эффективные методы), объяснить выбор скорости обучения и регуляризации.
 +
 +
Обязательные разделы:
 +
1. Введение: определение дообучения, его роль в трансферном обучении, почему это стало стандартом для глубоких нейронных сетей
 +
2. Постановка задачи: предобученная модель на большом датасете (ImageNet, Wikipedia), адаптация к новой задаче
 +
3. Стратегии дообучения: полное дообучение (fine-tune всех слоёв), дообучение только последних слоёв (feature extraction), дообучение с заморозкой части слоёв
 +
4. Выбор скорости обучения: меньшая скорость для предобученных слоёв, большая — для новых; дифференциальные скорости обучения (discriminative learning rates)
 +
5. Регуляризация при дообучении: ранняя остановка, меньший вес регуляризации, использование меньшего размера батча
 +
6. Связь с объёмом данных: когда дообучение оправдано, а когда лучше обучать с нуля (маленькие датасеты, специфические данные)
 +
7. Параметро-эффективные методы дообучения: адаптеры (adapters), префиксное обучение (prefix-tuning), LoRA (Low-Rank Adaptation), их преимущества и недостатки
 +
8. Примеры из практики: дообучение BERT для задач NLP, дообучение ResNet для классификации медицинских изображений, дообучение CLIP для мультимодальных задач
 +
9. Дообучение с подкреплением из обратной связи человека (RLHF): особый случай дообучения для больших языковых моделей
 +
10. Ограничения и риски: катастрофическое забывание (catastrophic forgetting), переобучение на малом датасете, вычислительные затраты
 +
11. См. также: внутренние ссылки на другие страницы (Трансферное обучение, Предобучение, Большая языковая модель, Трансформер, Дистилляция моделей, Адаптация низкого ранга)
 +
12. Литература (реальные источники)
 +
 +
Важно: статья должна быть практичной, с конкретными рекомендациями по выбору стратегии. Добавь таблицу сравнения методов дообучения (полное vs частичное vs параметро-эффективное).
 +
 +
Стиль академичный, ясный, без рекламных фраз и нейросетевых штампов. Формулы оформляй только через <tex>...</tex>, выключные формулы через :: <tex>...</tex>. Термины оформляй как внутренние ссылки. В начале статьи добавь предупреждение: {{well|Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 16:49, 10 июля 2026 (MSD)}}
 +
 +
Выдай только сырой вики-код статьи.
 +
 +
 +
 +
 +
{{well|Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 11:49, 11 июля 2026 (MSD)}}
 +
 +
'''Дообучение нейронных сетей''' (''fine-tuning'') — процесс адаптации параметров предварительно обученной модели к новой, обычно более узкой задаче путём продолжения обучения на данных этой задачи. Дообучение является ключевым этапом парадигмы [[Трансферное обучение|трансферного обучения]] и на сегодняшний день представляет собой стандартный способ применения глубоких нейронных сетей к прикладным задачам — вместо обучения архитектуры с нуля.
 +
 +
== Введение ==
 +
 +
Схема «[[Предобучение|предобучение]] + дообучение» стала доминирующей практикой в глубоком обучении по простой причине: обучение большой модели с нуля требует огромных объёмов размеченных данных и вычислительных ресурсов, которых часто нет в распоряжении конкретной прикладной задачи. Вместо этого модель сначала обучают на большом, как правило, общедоступном наборе данных (ImageNet для изображений, Wikipedia и Common Crawl для текстов), где она усваивает общие закономерности предметной области — контуры и текстуры для изображений, синтаксис и семантику для языка. Затем эта модель, уже обладающая содержательными внутренними представлениями, дообучается на существенно меньшем наборе данных, специфичном для целевой задачи.
 +
 +
Такой подход имеет два принципиальных преимущества по сравнению с обучением с нуля. Во-первых, он резко сокращает требуемый объём размеченных данных для целевой задачи: модель начинает не со случайной инициализации весов, а с параметров, уже кодирующих полезные закономерности. Во-вторых, он сокращает вычислительные затраты и время обучения, поскольку большая часть «тяжёлой» работы по извлечению общих признаков уже выполнена на этапе предобучения.
 +
 +
Дообучение стало практически повсеместным стандартом с распространением [[Трансформер|трансформерных]] архитектур и [[Большая языковая модель|больших языковых моделей]]: модели типа BERT, GPT, ResNet, CLIP выпускаются как общедоступные предобученные чекпоинты, а подавляющее большинство прикладных систем строится путём их дообучения, а не обучения аналогичной по размеру архитектуры заново.
 +
 +
== Постановка задачи ==
 +
 +
Пусть имеется модель с параметрами <tex>\theta_0</tex>, обученная на большом исходном наборе данных <tex>\mathcal{D}_{src}</tex> для решения некоторой исходной задачи (например, классификации на 1000 классов ImageNet или предсказания следующего токена на корпусе текстов). Требуется адаптировать эту модель к целевой задаче с набором данных <tex>\mathcal{D}_{tgt}</tex>, который, как правило, существенно меньше исходного и может иметь другое распределение признаков, другое число классов или вовсе другой тип разметки.
 +
 +
Формально дообучение сводится к продолжению оптимизации параметров, инициализированных значением <tex>\theta_0</tex>, на функции потерь целевой задачи:
 +
 +
:: <tex>\theta^{*} = \arg\min_{\theta} \; \mathcal{L}_{tgt}(\theta), \quad \theta_{init} = \theta_0</tex>
 +
 +
Ключевое отличие от обучения с нуля — не в формуле, а в начальной точке оптимизации и, как правило, в существенно меньшей скорости обучения, поскольку задача состоит не в том, чтобы заново «выучить» представления, а в том, чтобы аккуратно скорректировать уже накопленные знания под особенности целевого распределения данных, не разрушив их.
 +
 +
== Стратегии дообучения ==
 +
 +
Выбор конкретной стратегии дообучения определяется объёмом целевых данных, степенью их близости к исходному распределению и доступными вычислительными ресурсами.
 +
 +
'''Полное дообучение''' (full fine-tuning) — обновлению градиентным спуском подвергаются все параметры модели, включая самые ранние слои. Даёт наибольшую гибкость адаптации и, при достаточном объёме целевых данных, как правило, наилучшее итоговое качество. Требует, однако, хранения градиентов и состояний оптимизатора для всех параметров модели, что для современных моделей с миллиардами параметров может быть неподъёмно с точки зрения памяти.
 +
 +
'''Дообучение только последних слоёв''' (feature extraction, linear probing) — все слои, кроме последних (обычно — только классификационная «голова»), замораживаются: их веса не изменяются, через них лишь выполняется прямой проход. Обучению подвергается небольшое число параметров новой головы. Такой подход рассматривает предобученную сеть как фиксированный экстрактор признаков. Он существенно дешевле по вычислениям и памяти, но ограничен в качестве, если целевая задача существенно отличается от исходной по распределению данных.
 +
 +
'''Дообучение с частичной заморозкой''' — промежуточный вариант: замораживаются ранние слои сети (как правило, отвечающие за наиболее общие, низкоуровневые признаки — границы и текстуры в изображениях, базовые синтаксические закономерности в тексте), а более поздние слои, ближе к выходу, дообучаются вместе с новой головой. Постепенная разморозка слоёв (gradual unfreezing), начиная с последних и постепенно продвигаясь к более ранним по мере обучения, — практика, предложенная в методе ULMFiT (Howard & Ruder, 2018) и до сих пор используемая как эвристика для стабилизации дообучения.
 +
 +
Выбор между этими стратегиями напрямую связан с объёмом доступных данных целевой задачи и подробнее рассматривается в разделе о связи дообучения с объёмом данных.
 +
 +
== Выбор скорости обучения ==
 +
 +
Скорость обучения (learning rate) — один из наиболее чувствительных гиперпараметров при дообучении. Слишком большая скорость способна быстро разрушить полезные представления, накопленные на этапе предобучения, — это явление иногда называют «забыванием» уже на первых шагах дообучения. Общая рекомендация — использовать существенно меньшую скорость обучения, чем при обучении с нуля: типичные значения при дообучении трансформеров лежат в диапазоне <tex>10^{-5}</tex>–<tex>10^{-4}</tex>, тогда как обучение с нуля часто ведётся со скоростями порядка <tex>10^{-3}</tex>.
 +
 +
Естественное развитие этой идеи — '''дифференциальные скорости обучения''' (discriminative learning rates), предложенные в том же ULMFiT: разным слоям сети назначаются разные скорости обучения, при этом более ранним, более «общим» слоям соответствует меньшая скорость, а более поздним, специфичным для задачи слоям (включая новую голову) — большая. Если пронумеровать слои от входа к выходу индексом <tex>l = 1, \dots, L</tex>, типичная схема задаёт скорость обучения слоя <tex>l</tex> как
 +
 +
:: <tex>\eta_l = \eta_L \cdot \xi^{\,L-l}</tex>
 +
 +
где <tex>\eta_L</tex> — скорость обучения последнего слоя, а <tex>\xi < 1</tex> (типично около 0.9–0.95) — коэффициент затухания скорости при движении к более ранним слоям.
 +
 +
Дополнительно почти всегда используется '''разогрев скорости обучения''' (learning rate warmup) — постепенное увеличение скорости от малого значения до целевого в течение первых итераций дообучения, что снижает риск резкого разрушения предобученных представлений на старте, когда статистики оптимизатора ещё не накоплены, а также последующее плавное затухание скорости (linear или cosine decay) до конца обучения.
 +
 +
== Регуляризация при дообучении ==
 +
 +
Поскольку целевой набор данных при дообучении, как правило, невелик, а модель обладает большой ёмкостью, риск переобучения на этапе дообучения существенно выше, чем при обучении на большом исходном наборе. Практические приёмы регуляризации при дообучении:
 +
 +
* '''Ранняя остановка''' (early stopping) — обучение прерывается при первом ухудшении метрики на валидационном наборе, а не по достижении фиксированного числа эпох, что особенно важно при малых целевых наборах данных, где переобучение наступает быстро.
 +
* '''Уменьшение веса регуляризации''' — коэффициент weight decay и сила dropout, оптимальные для предобучения на большом наборе, зачастую избыточны для дообучения; их принято уменьшать, поскольку модель уже находится в разумной области пространства параметров и не нуждается в столь сильном сдерживании.
 +
* '''Меньший размер батча''' — при малых целевых наборах данных использование меньшего батча увеличивает число шагов оптимизации за эпоху и вносит дополнительный стохастический шум в градиенты, что эмпирически способствует лучшей генерализации и снижает риск резкого переобучения на немногочисленных примерах.
 +
* '''Регуляризация через близость к исходным весам''' — отдельный класс методов (например, L2-SP) добавляет к функции потерь штраф за отклонение текущих параметров от исходных предобученных значений <tex>\theta_0</tex>, явно ограничивая степень «дрейфа» модели от исходного решения.
 +
 +
== Связь с объёмом данных ==
 +
 +
Решение о выборе стратегии дообучения и о том, оправдано ли дообучение вообще, определяется в первую очередь соотношением объёма целевых данных и степенью их сходства с данными, на которых проводилось предобучение. Удобно рассматривать четыре характерных случая:
 +
 +
* '''Много данных, высокое сходство с исходным распределением''' — предпочтительно полное дообучение: данных достаточно, чтобы безопасно адаптировать все слои, а близость распределений снижает риск катастрофического забывания.
 +
* '''Много данных, низкое сходство''' — полное дообучение также оправдано, а в отдельных случаях объём данных может быть достаточен и для обучения с нуля, хотя дообучение обычно всё равно даёт выигрыш по скорости сходимости.
 +
* '''Мало данных, высокое сходство''' — рекомендуется дообучение только последних слоёв (feature extraction) либо частичная заморозка: близость распределений позволяет полагаться на предобученные признаки без риска, а малый объём данных делает полное дообучение опасным с точки зрения переобучения.
 +
* '''Мало данных, низкое сходство''' — наиболее сложный случай: полное дообучение рискует переобучиться на малом наборе, а заморозка ранних слоёв может оказаться неоптимальной, поскольку предобученные признаки плохо соответствуют новой предметной области. На практике здесь часто применяют частичную разморозку средних слоёв, сильную аугментацию данных и параметро-эффективные методы адаптации.
 +
 +
Общее эмпирическое правило: обучение с нуля становится предпочтительнее дообучения только тогда, когда целевой набор данных сопоставим по объёму с исходным набором предобучения либо когда предметная область целевой задачи настолько специфична (например, узкоспециализированные медицинские или спутниковые изображения), что предобученные признаки почти не переносятся.
 +
 +
== Параметро-эффективные методы дообучения ==
 +
 +
С ростом размеров моделей — в первую очередь [[Большая языковая модель|больших языковых моделей]] с миллиардами параметров — полное дообучение становится дорогостоящим не только по вычислениям, но и по памяти, поскольку требует хранения градиентов и состояний оптимизатора для каждого параметра. Это привело к развитию '''параметро-эффективных методов дообучения''' (parameter-efficient fine-tuning, PEFT), обновляющих лишь малую долю параметров модели или добавляющих небольшое число новых, при этом сохраняя основные веса замороженными.
 +
 +
'''Адаптеры''' (adapters, Houlsby et al., 2019) — небольшие обучаемые модули (обычно двухслойные MLP с узким «бутылочным горлышком»), вставляемые внутрь каждого слоя предобученной сети, как правило, после блока внимания и после полносвязного блока трансформера. При дообучении обновляются только веса адаптеров, основная сеть остаётся замороженной. Недостаток — дополнительная задержка на этапе инференса, так как адаптеры увеличивают глубину вычислительного графа.
 +
 +
'''Префиксное обучение''' (prefix-tuning, Li & Liang, 2021) и близкий к нему метод обучаемых промптов (prompt tuning) добавляют небольшое число обучаемых векторов («виртуальных токенов») к входу или к ключам и значениям механизма внимания на каждом слое, оставляя все исходные веса модели неизменными. Обучению подвергаются только эти добавленные векторы, что делает метод крайне экономным по памяти, хотя часто уступающим по качеству адаптерам и LoRA при сопоставимом числе обучаемых параметров.
 +
 +
'''LoRA''' (Low-Rank Adaptation, Hu et al., 2021) — один из наиболее распространённых на сегодняшний день методов PEFT для больших моделей, в частности для [[Адаптация низкого ранга|адаптации низкого ранга]]. Идея состоит в том, что изменение весовой матрицы слоя <tex>\Delta W</tex>, необходимое для адаптации к целевой задаче, представляется в виде произведения двух матриц низкого ранга:
 +
 +
:: <tex>W = W_0 + \Delta W = W_0 + BA, \qquad B \in \mathbb{R}^{d \times r}, \; A \in \mathbb{R}^{r \times k}, \; r \ll \min(d,k)</tex>
 +
 +
где <tex>W_0</tex> — исходная, замороженная матрица весов, а обучению подвергаются только матрицы <tex>A</tex> и <tex>B</tex> существенно меньшей размерности, задаваемой рангом <tex>r</tex> (типичные значения — от 4 до 64). Это резко сокращает число обучаемых параметров (зачастую на два-три порядка по сравнению с полным дообучением) без дополнительной задержки на инференсе, поскольку после обучения матрицу <tex>BA</tex> можно один раз сложить с <tex>W_0</tex>, полностью устранив дополнительные вычисления.
 +
 +
Сравнение параметро-эффективных методов между собой и с полным дообучением — в таблице ниже.
 +
 +
{| class="wikitable"
 +
! Метод !! Доля обучаемых параметров !! Задержка на инференсе !! Типичное качество !! Особенности
 +
|-
 +
| Полное дообучение || 100% || Без изменений || Максимальное (при достаточных данных) || Требует наибольшей памяти под градиенты и оптимизатор
 +
|-
 +
| Дообучение последних слоёв || < 1% || Без изменений || Ниже при сильном расхождении задач || Минимальные вычислительные затраты
 +
|-
 +
| Адаптеры || 1–5% || Небольшое увеличение || Близко к полному дообучению || Модульность, лёгкость переключения между задачами
 +
|-
 +
| Prefix/Prompt-tuning || < 1% || Небольшое увеличение (за счёт длины последовательности) || Уступает адаптерам и LoRA на сложных задачах || Наиболее компактен по числу параметров
 +
|-
 +
| LoRA || 0.1–1% || Без изменений после слияния весов || Сопоставимо с полным дообучением на многих задачах || Наиболее распространён для больших языковых моделей
 +
|}
 +
 +
== Примеры из практики ==
 +
 +
'''Дообучение BERT для задач NLP.''' Предобученная на корпусах Wikipedia и BookCorpus модель BERT (Devlin et al., 2019) дообучается на конкретной задаче — классификации тональности текста, извлечении именованных сущностей, ответах на вопросы — путём добавления небольшой линейной головы поверх выходного представления специального токена [CLS] или токенов последовательности и полного дообучения всей модели на размеченном наборе целевой задачи, обычно за 2–4 эпохи с малой скоростью обучения порядка <tex>2\cdot10^{-5}</tex>.
 +
 +
'''Дообучение ResNet для классификации медицинских изображений.''' Свёрточная сеть, предобученная на ImageNet, дообучается на существенно меньшем и специфичном наборе медицинских снимков (рентгеновские снимки, гистологические срезы). Из-за заметного расхождения распределений (естественные фотографии против медицинских изображений) и, как правило, ограниченного объёма размеченных данных типична стратегия частичной заморозки: ранние свёрточные слои, кодирующие общие низкоуровневые признаки (границы, текстуры), замораживаются, поздние слои и классификационная голова дообучаются, часто в сочетании с сильной аугментацией данных.
 +
 +
'''Дообучение CLIP для мультимодальных задач.''' Предобученная модель [[CLIP]] дообучается для узкоспециализированных задач сопоставления изображений и текста — например, для доменов с нетипичной для веб-данных лексикой (медицинские изображения с диагностическими описаниями, спутниковые снимки с географическими подписями). Ввиду масштаба модели и её мультимодальной природы для CLIP особенно часто применяются параметро-эффективные методы, в частности LoRA, накладываемые на энкодеры изображения и текста.
 +
 +
== Дообучение с подкреплением из обратной связи человека (RLHF) ==
 +
 +
Особый и отдельно выделяемый случай дообучения — '''обучение с подкреплением из обратной связи человека''' (Reinforcement Learning from Human Feedback, RLHF), применяемое при доводке [[Большая языковая модель|больших языковых моделей]] после этапа предобучения на предсказание следующего токена. Классическая схема RLHF (Ouyang et al., 2022, метод InstructGPT) состоит из трёх последовательных этапов:
 +
 +
# '''Дообучение с учителем''' (supervised fine-tuning, SFT) — модель дообучается на наборе демонстраций «инструкция — качественный ответ», подготовленных людьми-разметчиками, что задаёт базовый формат следования инструкциям.
 +
# '''Обучение модели вознаграждения''' (reward model) — отдельная модель обучается предсказывать предпочтения людей: разметчики сравнивают пары ответов модели на одну инструкцию, и модель вознаграждения обучается присваивать более высокую оценку предпочитаемому ответу.
 +
# '''Оптимизация политики''' — исходная дообученная на этапе SFT модель далее дообучается алгоритмом обучения с подкреплением (в оригинальной работе — PPO) так, чтобы максимизировать оценку, выдаваемую моделью вознаграждения, при этом штрафуется чрезмерное отклонение от политики SFT-этапа (обычно через KL-дивергенцию), что предотвращает вырождение в ответы, эксплуатирующие слабости модели вознаграждения.
 +
 +
RLHF отличается от рассмотренных выше стратегий тем, что обучающий сигнал для последнего этапа поступает не напрямую из размеченных пар «вход — выход», а опосредованно, через выученную модель предпочтений, что делает эту форму дообучения существенно сложнее с точки зрения инженерии и устойчивости обучения.
 +
 +
== Ограничения и риски ==
 +
 +
* '''Катастрофическое забывание''' (catastrophic forgetting) — при дообучении, особенно полном и с высокой скоростью обучения, модель может утратить полезные знания, накопленные на этапе предобучения, если целевая задача существенно уже или отличается по распределению от исходной; это особенно критично, когда от модели впоследствии ожидается сохранение широких, «общих» способностей наравне со специализацией.
 +
* '''Переобучение на малом целевом наборе''' — при малом объёме данных целевой задачи и высокой ёмкости модели риск переобучения существенно выше, чем на этапе предобучения; отсюда потребность в усиленной регуляризации, ранней остановке и, зачастую, в параметро-эффективных методах, ограничивающих число степеней свободы.
 +
* '''Вычислительные затраты''' — полное дообучение крупных моделей требует значительных объёмов видеопамяти для хранения градиентов и состояний оптимизатора по всем параметрам, что при современных масштабах моделей становится узким местом и мотивирует использование параметро-эффективных методов.
 +
* '''Чувствительность к гиперпараметрам''' — качество дообучения существенно зависит от выбора скорости обучения, длительности разогрева, стратегии заморозки слоёв; неудачный выбор способен либо разрушить предобученные представления, либо не дать модели адаптироваться к целевой задаче в достаточной мере.
 +
* '''Утрата калибровки и смещение распределения ответов''' — в частности при RLHF отмечается риск чрезмерной оптимизации под модель вознаграждения (reward hacking), приводящей к ответам, формально получающим высокую оценку, но не отражающим подлинные предпочтения пользователей.
 +
 +
== См. также ==
 +
* [[Трансферное обучение]]
 +
* [[Предобучение]]
 +
* [[Большая языковая модель]]
 +
* [[Трансформер]]
 +
* [[Дистилляция моделей]]
 +
* [[Адаптация низкого ранга]]
 +
 +
== Литература ==
 +
# Devlin J., Chang M.-W., Lee K., Toutanova K. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding // NAACL. — 2019.
 +
# Howard J., Ruder S. Universal Language Model Fine-tuning for Text Classification (ULMFiT) // ACL. — 2018.
 +
# Houlsby N., Giurgiu A., Jastrzębski S. et al. Parameter-Efficient Transfer Learning for NLP // ICML. — 2019.
 +
# Li X.L., Liang P. Prefix-Tuning: Optimizing Continuous Prompts for Generation // ACL. — 2021.
 +
# Hu E.J., Shen Y., Wallis P. et al. LoRA: Low-Rank Adaptation of Large Language Models // ICLR. — 2022.
 +
# Ouyang L., Wu J., Jiang X. et al. Training Language Models to Follow Instructions with Human Feedback // NeurIPS. — 2022.
 +
# Yosinski J., Clune J., Bengio Y., Lipson H. How Transferable Are Features in Deep Neural Networks? // NeurIPS. — 2014.
 +
# Xuhong L., Grandvalet Y., Davoine F. Explicit Inductive Bias for Transfer Learning with Convolutional Networks (L2-SP) // ICML. — 2018.
 +
 +
[[Категория:Машинное обучение]]
 +
[[Категория:Глубокое обучение]]
 +
[[Категория:Трансферное обучение]]
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
Инженерия признаков (Feature Engineering)
 +
 +
 +
 +
 +
 +
Ты специалист в области машинного обучения, профессор в ведущем техническом университете и популяризатор науки. Напиши энциклопедическую статью для MachineLearning.ru на тему «Инженерия признаков».
 +
 +
Целевая аудитория: мотивированные студенты, преподаватели и специалисты в AI/ML. Статья должна быть полезна новичку: дать понятное определение, объяснить, почему качество признаков важнее алгоритма, показать простые примеры (возраст из даты рождения, логарифм от признака). Профессионалу статья должна дать систематизацию методов работы с признаками и связать воедино разрозненные темы: создание признаков, преобразование, отбор, кодирование категорий, борьбу с пропусками и выбросами.
 +
 +
Обязательные разделы:
 +
1. Введение: определение инженерии признаков как процесса создания и преобразования признаков для улучшения качества модели
 +
2. Почему инженерия признаков важна: связь между качеством признаков и обобщающей способностью, примеры "удачных" и "неудачных" признаков
 +
3. Создание признаков (Feature Generation): извлечение из сырых данных, использование предметных знаний, создание комбинированных признаков (суммы, разности, отношения)
 +
4. Преобразование признаков (Feature Transformation): нормализация и стандартизация (min-max, z-score, robust), степенные и логарифмические преобразования, Box-Cox и Yeo-Johnson, дискретизация
 +
5. Отбор признаков (Feature Selection): фильтрующие методы (корреляция, хи-квадрат, взаимная информация), обёрточные методы (RFE, последовательный отбор), встроенные методы (L1-регуляризация, важность в деревьях)
 +
6. Кодирование категориальных признаков: one-hot encoding, label encoding, target encoding, WOE (Weight of Evidence), embedding-кодирование
 +
7. Обработка пропусков: удаление vs заполнение (среднее, медиана, мода, регрессионное заполнение, KNN-заполнение)
 +
8. Обработка выбросов: обнаружение (IQR, z-score, визуализация), обработка (удаление, капинг, преобразование)
 +
9. Уменьшение размерности: PCA, t-SNE, UMAP — как отдельный случай инженерии признаков
 +
10. Инженерия для разных типов данных: особенности для текстов, изображений, временных рядов, графов
 +
11. Автоматическая инженерия признаков (AutoFE): Deep Feature Synthesis, автоматические методы
 +
12. Практические рекомендации: чек-лист инженера по признакам, принцип "простые признаки — лучшие"
 +
13. См. также: внутренние ссылки на другие страницы (Генерация признаков, Отбор признаков, Нормализация и стандартизация, Понижение размерности, Предобработка данных, Метод главных компонент, Ослабление и усиление шкал признаков)
 +
14. Литература (реальные источники)
 +
 +
Важно: статья должна быть связующим звеном для многих тем. Добавь таблицу сравнения методов отбора признаков и кодирования категорий.
 +
 +
Стиль академичный, ясный, без рекламных фраз и нейросетевых штампов. Формулы оформляй только через <tex>...</tex>, выключные формулы через :: <tex>...</tex>. Термины оформляй как внутренние ссылки. В начале статьи добавь предупреждение: {{well|Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 16:49, 10 июля 2026 (MSD)}}
 +
 +
Выдай только сырой вики-код статьи.
 +
 +
 +
 +
 +
 +
{{well|Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 13:49, 11 июля 2026 (MSD)}}
 +
 +
'''Инженерия признаков''' (''feature engineering'') — процесс создания, преобразования, отбора и кодирования признаков, используемых в качестве входа для моделей машинного обучения, с целью повышения их качества и обобщающей способности. Инженерия признаков связывает воедино этапы [[Предобработка данных|предобработки данных]] и построения модели и традиционно считается одним из наиболее трудоёмких, но и наиболее влияющих на итоговое качество этапов практического машинного обучения.
 +
 +
== Введение ==
 +
 +
Под '''признаком''' (feature) понимается измеримая характеристика объекта, используемая моделью в качестве входа. Сырые данные — таблицы транзакций, тексты, изображения, показания датчиков — редко представлены в виде, непосредственно пригодном для подачи в модель: они могут содержать пропуски, выбросы, категориальные значения без естественного числового представления или скрывать закономерности, не выражаемые напрямую в исходных полях. Инженерия признаков — это набор приёмов, преобразующих такие сырые данные в представление, из которого модель способна эффективно извлекать закономерности.
 +
 +
== Почему инженерия признаков важна ==
 +
 +
Распространённый тезис в прикладном машинном обучении гласит: качество признаков зачастую важнее выбора алгоритма. Это утверждение не следует понимать буквально в отношении любых задач, но оно отражает практическое наблюдение: удачно сконструированный признак способен сделать закономерность линейно отделимой и тривиальной для простой модели, тогда как при неудачном наборе признаков даже сложная модель вынуждена приближённо восстанавливать эту закономерность по крупицам.
 +
 +
Рассмотрим два характерных примера. '''Удачный признак''': вместо того чтобы подавать модели дату рождения клиента как есть, полезно вычислить возраст — разность между текущей датой и датой рождения. Возраст напрямую коррелирует с большинством практических целевых переменных (кредитный риск, склонность к покупке определённых товаров), тогда как исходная дата в формате «день-месяц-год» такой корреляции почти не несёт: модели пришлось бы самостоятельно открыть, что именно разность дат имеет значение.
 +
 +
'''Неудачный признак''' — обратный случай: включение в модель идентификатора клиента или номера транзакции в качестве числового признака. Такой признак не несёт содержательной информации о целевой переменной, но может создавать иллюзию предсказательной силы за счёт случайных совпадений в обучающей выборке (data leakage через порядковый номер, коррелирующий с временем), что приводит к переобучению и резкому падению качества на новых данных.
 +
 +
Другой типичный пример полезного нелинейного преобразования — логарифмирование признака с сильно скошенным (skewed) распределением, например, дохода или цены: разность между доходами 10 000 и 20 000 денежных единиц содержательно отличается от разности между 1 010 000 и 1 020 000, и логарифмическое преобразование <tex>x' = \log(x+1)</tex> переводит мультипликативные отношения в аддитивные, что облегчает работу линейных моделей и стабилизирует дисперсию признака.
 +
 +
== Создание признаков (Feature Generation) ==
 +
 +
'''Создание признаков''' — построение новых переменных на основе сырых данных, использующее либо предметные знания (domain knowledge), либо автоматические комбинаторные схемы.
 +
 +
Извлечение признаков из сырых данных типично для полей даты и времени: из единственного поля timestamp можно извлечь день недели, час суток, номер месяца, признак выходного дня или праздника — каждый из них может нести самостоятельную предсказательную силу, скрытую в исходном представлении.
 +
 +
Использование предметных знаний позволяет строить признаки, отражающие содержательные закономерности предметной области: например, в задаче кредитного скоринга — отношение суммы долга к доходу (debt-to-income ratio), в задаче анализа веб-трафика — время, проведённое на странице, делённое на число просмотренных страниц.
 +
 +
'''Комбинированные признаки''' строятся простыми арифметическими операциями над существующими признаками: суммой (совокупный доход домохозяйства как сумма доходов его членов), разностью (изменение показателя между двумя измерениями), отношением (плотность населения как отношение численности к площади) или произведением (признаки взаимодействия, interaction features, отражающие совместный эффект двух переменных, не сводимый к сумме их отдельных эффектов).
 +
 +
== Преобразование признаков (Feature Transformation) ==
 +
 +
'''Нормализация и стандартизация.''' Многие модели (линейные модели с регуляризацией, метод опорных векторов, нейронные сети, методы на основе расстояний) чувствительны к масштабу признаков, поэтому приведение признаков к сопоставимому масштабу — необходимый этап предобработки.
 +
 +
* '''Min-max нормализация''' линейно переводит значения признака в фиксированный интервал, обычно <tex>[0,1]</tex>:
 +
:: <tex>x' = \dfrac{x - x_{\min}}{x_{\max} - x_{\min}}</tex>
 +
* '''Z-нормализация''' (стандартизация) центрирует признак и приводит его к единичной дисперсии:
 +
:: <tex>x' = \dfrac{x - \mu}{\sigma}</tex>
 +
где <tex>\mu</tex> и <tex>\sigma</tex> — среднее и стандартное отклонение признака на обучающей выборке.
 +
* '''Робастное масштабирование''' (robust scaling) использует медиану и межквартильный размах вместо среднего и стандартного отклонения, что делает преобразование устойчивым к выбросам:
 +
:: <tex>x' = \dfrac{x - \mathrm{median}(x)}{IQR(x)}</tex>
 +
 +
'''Степенные и логарифмические преобразования''' применяются к признакам с существенно асимметричным распределением для приближения его к нормальному и стабилизации дисперсии: помимо логарифма <tex>x' = \log(x+1)</tex>, используются квадратный корень, обратное преобразование <tex>1/x</tex>. Обобщением служит семейство '''Box-Cox''':
 +
 +
:: <tex>x'(\lambda) = \begin{cases} \dfrac{x^{\lambda} - 1}{\lambda}, & \lambda \neq 0 \\ \log x, & \lambda = 0 \end{cases}</tex>
 +
 +
применимое лишь к строго положительным значениям, и '''Yeo-Johnson''' — его обобщение, допускающее отрицательные и нулевые значения признака за счёт кусочного определения при <tex>x \geq 0</tex> и <tex>x < 0</tex>. В обоих случаях параметр <tex>\lambda</tex> подбирается по обучающим данным (как правило, максимизацией правдоподобия) так, чтобы преобразованное распределение было максимально близко к нормальному.
 +
 +
'''Дискретизация''' (binning) переводит непрерывный признак в категориальный, разбивая диапазон значений на интервалы — равношироких (equal-width), равнонаполненных по числу наблюдений (equal-frequency) либо заданных экспертно (например, возрастные группы). Дискретизация может улучшать качество для моделей, плохо улавливающих нелинейные зависимости, ценой потери части информации о точном значении признака.
 +
 +
== Отбор признаков (Feature Selection) ==
 +
 +
'''Отбор признаков''' — выбор подмножества наиболее информативных признаков из исходного набора, преследующий две цели: снижение размерности (и, как следствие, вычислительных затрат) и уменьшение риска переобучения за счёт устранения нерелевантных или избыточных переменных. Методы принято делить на три группы.
 +
 +
'''Фильтрующие методы''' (filter methods) оценивают признаки независимо от конкретной модели, на основе статистических критериев связи признака с целевой переменной: коэффициент корреляции Пирсона для количественных признаков и количественной цели, критерий хи-квадрат для категориальных признаков, [[взаимная информация]] (mutual information), способная улавливать и нелинейные зависимости. Фильтрующие методы вычислительно дёшевы, но не учитывают взаимодействие признаков между собой и специфику последующей модели.
 +
 +
'''Обёрточные методы''' (wrapper methods) оценивают подмножества признаков, обучая на них модель и измеряя итоговое качество. '''Рекурсивное исключение признаков''' (Recursive Feature Elimination, RFE) последовательно обучает модель, ранжирует признаки по важности (например, по весам линейной модели) и исключает наименее значимые, повторяя процедуру до достижения целевого числа признаков. '''Последовательный отбор''' (forward selection, backward elimination) наращивает или сокращает набор признаков по одному, каждый раз выбирая шаг, дающий наибольший прирост качества. Обёрточные методы точнее фильтрующих, но существенно дороже вычислительно, так как требуют многократного переобучения модели.
 +
 +
'''Встроенные методы''' (embedded methods) выполняют отбор признаков как часть самого процесса обучения модели. '''L1-регуляризация''' (лассо-регрессия) добавляет к функции потерь штраф на сумму модулей весов, что приводит к точному обнулению весов при малоинформативных признаках:
 +
 +
:: <tex>\mathcal{L}(\theta) = \mathcal{L}_{0}(\theta) + \lambda \sum_i |\theta_i|</tex>
 +
 +
'''Важность признаков в ансамблях деревьев''' (feature importance в случайном лесе или градиентном бустинге) оценивается по суммарному снижению критерия неоднородности (например, критерия Джини или прироста информации) при разбиениях по данному признаку по всем деревьям ансамбля, что даёт естественную и вычислительно дешёвую оценку значимости, получаемую как побочный продукт обучения.
 +
 +
{| class="wikitable"
 +
! Группа методов !! Примеры !! Учитывает модель !! Учитывает взаимодействие признаков !! Вычислительная стоимость
 +
|-
 +
| Фильтрующие || Корреляция, хи-квадрат, взаимная информация || Нет || Нет (обычно) || Низкая
 +
|-
 +
| Обёрточные || RFE, последовательный отбор || Да || Да || Высокая
 +
|-
 +
| Встроенные || L1-регуляризация, важность в деревьях || Да || Частично || Средняя
 +
|}
 +
 +
== Кодирование категориальных признаков ==
 +
 +
Категориальные признаки не имеют естественного числового представления и требуют явного кодирования для подачи в большинство моделей.
 +
 +
'''One-hot encoding''' представляет категориальный признак с <tex>K</tex> уникальными значениями в виде <tex>K</tex> бинарных индикаторных признаков, каждый из которых равен единице для соответствующей категории и нулю иначе. Метод не вносит ложного порядка между категориями, но плохо масштабируется при большом числе уникальных значений (высокая кардинальность), приводя к разреженным и высокоразмерным признаковым векторам.
 +
 +
'''Label encoding''' присваивает каждой категории целочисленный код. Подходит для древовидных моделей, устойчивых к произвольному порядку кодов, но некорректен для линейных моделей и моделей на основе расстояний, поскольку вносит несуществующий порядок между категориями.
 +
 +
'''Target encoding''' (mean encoding) заменяет каждую категорию средним значением целевой переменной по объектам этой категории на обучающей выборке. Метод компактен и эффективен для признаков высокой кардинальности, но подвержен утечке целевой переменной и переобучению, если не применяется с должной регуляризацией — обычно сглаживанием к общему среднему и вычислением кодировки только по данным, не входящим в текущий фолд кросс-валидации (out-of-fold encoding).
 +
 +
'''WOE''' (Weight of Evidence), распространённый в кредитном скоринге, кодирует категорию через логарифм отношения долей «плохих» и «хороших» исходов внутри категории:
 +
 +
:: <tex>WOE_k = \log\left(\dfrac{\%\,\text{good}_k}{\%\,\text{bad}_k}\right)</tex>
 +
 +
что даёт монотонную связь с логитом целевой переменной в задачах бинарной классификации и облегчает интерпретацию вклада категории.
 +
 +
'''Embedding-кодирование''' представляет каждую категорию вектором в непрерывном пространстве меньшей размерности, обучаемым совместно с основной моделью (типично для нейронных сетей, работающих с категориальными признаками высокой кардинальности — идентификаторами пользователей, товаров, слов). В отличие от one-hot, эмбеддинги способны улавливать содержательное сходство между категориями через близость соответствующих векторов.
 +
 +
{| class="wikitable"
 +
! Метод !! Подходит для высокой кардинальности !! Риск утечки цели !! Вносит ложный порядок !! Типичное применение
 +
|-
 +
| One-hot encoding || Нет || Нет || Нет || Линейные модели, признаки низкой кардинальности
 +
|-
 +
| Label encoding || Да || Нет || Да || Древовидные модели
 +
|-
 +
| Target encoding || Да || Да (требует регуляризации) || Нет || Градиентный бустинг, высокая кардинальность
 +
|-
 +
| WOE || Да || Умеренный || Нет || Кредитный скоринг, логистическая регрессия
 +
|-
 +
| Embedding || Да || Нет (при должной валидации) || Нет || Нейронные сети, очень высокая кардинальность
 +
|}
 +
 +
== Обработка пропусков ==
 +
 +
Пропущенные значения — распространённая особенность реальных данных, требующая явного решения: удалить объекты или признаки с пропусками либо заполнить их (impute). Удаление оправдано, когда доля пропусков в признаке или объекте крайне высока либо когда пропуски распределены случайно и их доля мала настолько, что удаление не искажает выборку; в противном случае предпочтительно заполнение, поскольку удаление сокращает и без того ограниченный объём данных.
 +
 +
Простейшие стратегии заполнения — средним или медианой значением признака (медиана предпочтительна при наличии выбросов) для количественных признаков и модой (наиболее частым значением) для категориальных. Более точные стратегии учитывают связь пропущенного признака с остальными: '''регрессионное заполнение''' обучает вспомогательную модель, предсказывающую значение признака по остальным признакам объекта, а '''KNN-заполнение''' восстанавливает пропуск как среднее (или взвешенное среднее) значения признака у ближайших по остальным признакам соседей. Существенно также фиксировать сам факт пропуска отдельным бинарным индикаторным признаком — отсутствие значения нередко само по себе несёт предсказательную информацию (например, отсутствие ответа на вопрос анкеты может коррелировать с целевой переменной).
 +
 +
== Обработка выбросов ==
 +
 +
'''Обнаружение выбросов''' может опираться на статистические критерии — правило межквартильного размаха (IQR), относящее к выбросам значения за пределами <tex>[Q_1 - 1.5\,IQR,\; Q_3 + 1.5\,IQR]</tex>, либо на z-оценку, помечающую как выброс значения с <tex>|z| > 3</tex>, — либо на визуализацию распределения признака (box-plot, гистограмма, диаграмма рассеяния).
 +
 +
После обнаружения возможны разные стратегии обработки: '''удаление''' объектов-выбросов, оправданное при уверенности в ошибочности значения (сбой измерения, ошибка ввода данных); '''капинг''' (winsorization) — замена экстремальных значений на ближайшую границу допустимого диапазона без полного удаления объекта; '''преобразование''' признака (логарифмирование, Box-Cox), уменьшающее относительное влияние экстремальных значений без их прямого удаления. Выбор стратегии определяется тем, являются ли выбросы артефактом измерения или содержательной, хотя и редкой, особенностью предметной области — во втором случае агрессивное удаление способно исказить модель, лишив её информации о редких, но значимых случаях.
 +
 +
== Уменьшение размерности ==
 +
 +
'''Уменьшение размерности''' можно рассматривать как отдельный частный случай инженерии признаков, при котором вместо ручного конструирования или отбора отдельных признаков строится новое, более компактное признаковое пространство, сохраняющее основную структуру исходных данных.
 +
 +
'''Метод главных компонент''' ([[Метод главных компонент|PCA]]) находит ортогональные направления максимальной дисперсии данных и проецирует исходные признаки на подпространство, натянутое на несколько первых главных компонент, что позволяет сократить размерность с минимальной потерей информации о дисперсии данных при условии преимущественно линейной структуры зависимостей.
 +
 +
'''t-SNE''' и '''UMAP''' — нелинейные методы уменьшения размерности, ориентированные в первую очередь на визуализацию многомерных данных в двух-трёх измерениях за счёт сохранения локальной структуры соседства точек; в отличие от PCA, они, как правило, не сохраняют глобальные расстояния и хуже подходят для использования результирующих компонент как признаков для последующего обучения модели, но полезны как инструмент разведочного анализа данных (EDA) и обнаружения кластерной структуры.
 +
 +
== Инженерия для разных типов данных ==
 +
 +
'''Тексты.''' Классические признаки — частоты слов (bag-of-words), взвешенные по TF-IDF, n-граммы слов и символов; современный подход — представления, полученные из предобученных языковых моделей (эмбеддинги слов, контекстуальные эмбеддинги трансформеров), фактически переносящие задачу конструирования признаков на этап предобучения модели.
 +
 +
'''Изображения.''' Классическая инженерия признаков опиралась на ручные дескрипторы (HOG, SIFT, гистограммы цвета); в современной практике эту роль почти повсеместно взяли на себя свёрточные и трансформерные сети, автоматически извлекающие иерархические признаки, однако предметно-специфичные признаки (например, геометрические измерения на медицинских снимках) остаются востребованными в специализированных приложениях.
 +
 +
'''Временные ряды.''' Типичные признаки — скользящие статистики (среднее, стандартное отклонение, минимум и максимум в скользящем окне), лаговые признаки (значение ряда со сдвигом на несколько шагов назад), признаки сезонности и тренда, а также спектральные характеристики, получаемые преобразованием Фурье.
 +
 +
'''Графы.''' Признаки узла могут включать степень узла, меры центральности (betweenness, PageRank), локальные структурные характеристики окрестности; современные методы также используют обучаемые представления узлов, получаемые методами графовых нейронных сетей или графовых эмбеддингов (node2vec, DeepWalk).
 +
 +
== Автоматическая инженерия признаков (AutoFE) ==
 +
 +
'''Автоматическая инженерия признаков''' стремится частично или полностью автоматизировать процесс создания и отбора признаков, традиционно требующий значительных временных затрат специалиста и глубокого понимания предметной области. '''Deep Feature Synthesis''' (Kanter & Veeramachaneni, 2015), лежащий в основе библиотеки Featuretools, автоматически строит признаки для реляционных данных, применяя последовательности агрегирующих и трансформирующих операций (сумма, среднее, число уникальных значений и другие) вдоль связей между таблицами, генерируя большое число кандидатов в признаки, из которых затем производится отбор. Иные подходы к AutoFE используют эволюционные алгоритмы или обучение с подкреплением для поиска полезных комбинаций преобразований признаков. Автоматизированные методы способны обнаруживать неочевидные комбинации, но, как правило, требуют последующего этапа отбора признаков для устранения избыточности и контроля переобучения, а также не заменяют полностью экспертное понимание предметной области, особенно при построении содержательных, предметно-обоснованных признаков.
 +
 +
== Практические рекомендации ==
 +
 +
Чек-лист инженера по признакам:
 +
 +
* проверить типы и распределения всех признаков до начала моделирования — выявить асимметрию, выбросы, пропуски;
 +
* начинать с простых, содержательно обоснованных признаков, прежде чем переходить к автоматической генерации большого числа кандидатов;
 +
* явно фиксировать факт пропуска отдельным индикаторным признаком, а не полагаться только на значение заполнения;
 +
* при кодировании категорий с высокой кардинальностью использовать target encoding или WOE с обязательной регуляризацией и вычислением вне текущего фолда кросс-валидации;
 +
* подбирать параметры любых преобразований (нормализации, Box-Cox, target encoding) исключительно по обучающей выборке, применяя затем те же параметры к валидационной и тестовой выборкам, во избежание утечки информации;
 +
* после генерации большого числа признаков обязательно проводить отбор — избыточные и коррелированные признаки не только не помогают, но зачастую ухудшают обобщающую способность и интерпретируемость модели;
 +
* руководствоваться принципом «простые признаки — лучшие»: там, где простое отношение или разность объясняют закономерность не хуже сложной комбинации, предпочтение стоит отдавать простому варианту, повышающему устойчивость и интерпретируемость модели.
 +
 +
== См. также ==
 +
* [[Генерация признаков]]
 +
* [[Отбор признаков]]
 +
* [[Нормализация и стандартизация]]
 +
* [[Понижение размерности]]
 +
* [[Предобработка данных]]
 +
* [[Метод главных компонент]]
 +
* [[Ослабление и усиление шкал признаков]]
 +
 +
== Литература ==
 +
# Zheng A., Casari A. Feature Engineering for Machine Learning: Principles and Techniques for Data Scientists. — O'Reilly Media, 2018.
 +
# Kuhn M., Johnson K. Feature Engineering and Selection: A Practical Approach for Predictive Models. — CRC Press, 2019.
 +
# Guyon I., Elisseeff A. An Introduction to Variable and Feature Selection // Journal of Machine Learning Research. — 2003.
 +
# Box G.E.P., Cox D.R. An Analysis of Transformations // Journal of the Royal Statistical Society. Series B. — 1964.
 +
# Yeo I.-K., Johnson R.A. A New Family of Power Transformations to Improve Normality or Symmetry // Biometrika. — 2000.
 +
# Kanter J.M., Veeramachaneni K. Deep Feature Synthesis: Towards Automating Data Science Endeavors // IEEE DSAA. — 2015.
 +
# van der Maaten L., Hinton G. Visualizing Data using t-SNE // Journal of Machine Learning Research. — 2008.
 +
# McInnes L., Healy J., Melville J. UMAP: Uniform Manifold Approximation and Projection for Dimension Reduction // arXiv:1802.03426. — 2018.
 +
 +
[[Категория:Машинное обучение]]
 +
[[Категория:Предобработка данных]]
 +
[[Категория:Инженерия признаков]]

Текущая версия

Байесовская оптимизация Контрастивное обучение Нормализация и стандартизация признаков Метрики качества в машинном обучении

Байесовская оптимизация

Ты специалист в области машинного обучения, профессор в ведущем техническом университете и популяризатор науки. Напиши энциклопедическую статью для MachineLearning.ru на тему «Байесовская оптимизация». Целевая аудитория: мотивированные студенты, преподаватели и специалисты в AI/ML. Статья должна быть полезна новичку: дать понятные определения, объяснить идею оптимизации чёрных ящиков, разницу между байесовской оптимизацией и другими методами (сеточный поиск, случайный поиск). Профессионалу статья должна дать математическую постановку, объяснить компоненты: суррогатная модель (гауссовский процесс), функция приобретения (EI, UCB, PI), стратегию выбора следующей точки. Обязательные разделы: 1. Введение (кратко, 2-3 абзаца) 2. Постановка задачи (оптимизация чёрного ящика) + сравнение с сеточным и случайным поиском в виде таблицы 3. Интуитивная идея (на пальчиковом уровне, метафора с картой местности) 4. Компоненты метода: суррогатная модель (гауссовский процесс, формулы для mu_t(x) и sigma_t^2(x)), функция приобретения (PI, EI, UCB с формулами и таблицей сравнения) 5. Математическая схема (байесовское обновление, гарантии сходимости GP-UCB) 6. Алгоритм (псевдокод) 7. Пример: настройка гиперпараметров градиентного бустинга для задачи кредитного скоринга — с таблицей гиперпараметров и сравнением со случайным поиском 8. Достоинства и ограничения (списками) 9. Варианты расширений: многомерная оптимизация, оптимизация с ограничениями, многокритериальная, мультифидельная (BOHB), поиск архитектур нейронных сетей (кратко) 10. Литература (реальные источники) Стиль академичный, ясный, без рекламных фраз и нейросетевых штампов. Избегай излишней длины — статья должна быть содержательной, но читаемой за 15-20 минут. Формулы оформляй только через ..., выключные формулы через :: .... Термины оформляй как внутренние ссылки. В начале статьи добавь предупреждение:

Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 14:49, 10 июля 2026 (MSD)


Выдай только сырой вики-код статьи.


Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 15:00, 10 июля 2026 (MSD)


Байесовская оптимизация (Шаблон:Lang-en) — метод глобальной оптимизации чёрных ящиков, основанный на построении вероятностной суррогатной модели целевой функции и последовательном выборе точек для оценки на основе так называемой функции приобретения. Метод предназначен для задач, в которых целевая функция дорого стоит вычислительно или ресурсно, не имеет аналитического выражения и недоступна для дифференцирования.

Содержание

Введение

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

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

В основе метода лежит идея, восходящая к работам Й. Мокуса (J. Mockus) конца 1970-х годов и получившая широкое развитие с появлением алгоритма Efficient Global Optimization (EGO) в конце 1990-х. В последнее десятилетие байесовская оптимизация стала стандартным инструментом автоматического машинного обучения (AutoML) и лежит в основе многих популярных библиотек подбора гиперпараметров.

Постановка задачи

Рассматривается задача поиска глобального максимума функции f, заданной на компактном множестве \mathcal{X} \subseteq \mathbb{R}^d:

x^{*} = \arg\max_{x \in \mathcal{X}} f(x)

Без ограничения общности рассматривается задача максимизации; задача минимизации сводится к ней заменой f на -f. Функция f называется чёрным ящиком (Шаблон:Lang-en), если выполнены следующие условия:

  • аналитическое выражение функции неизвестно, доступны только её значения в запрашиваемых точках («оракульный» доступ);
  • градиент \nabla f недоступен и не может быть эффективно вычислен;
  • каждое обращение к функции требует значительных затрат времени, вычислительных ресурсов или денег;
  • наблюдения могут быть зашумлены: y_i = f(x_i) + \varepsilon_i, где \varepsilon_i \sim \mathcal{N}(0,\sigma_n^2).

Задача состоит в том, чтобы найти точку, максимально близкую к x^*, использовав как можно меньше обращений к f. Именно ограниченность бюджета оценок отличает постановку задачи байесовской оптимизации от классических задач непрерывной оптимизации, где число вычислений функции и градиента практически не ограничено.

Сравнение с сеточным и случайным поиском

Наиболее простые альтернативы байесовской оптимизации при подборе параметров — сеточный поиск (Шаблон:Lang-en) и случайный поиск (Шаблон:Lang-en). Их принципиальное отличие в том, что они не используют информацию о ранее полученных значениях функции при выборе следующей точки.

Критерий Сеточный поиск Случайный поиск Байесовская оптимизация
Использование истории наблюдений Нет Нет Да, через суррогатную модель
Стратегия выбора точек Фиксированная регулярная сетка Случайная выборка из распределения Адаптивный выбор по функции приобретения
Масштабируемость по размерности Экспоненциальный рост числа узлов Не зависит явно от размерности, но эффективность падает Умеренная (эффективна примерно до 15–20 непрерывных переменных)
Учёт неравнозначности параметров Нет Нет (лишь статистически) Да, за счёт обучаемых длин корреляции ядра
Эффективность при малом бюджете итераций Низкая Средняя Высокая
Теоретические гарантии сходимости Только при исчерпании сетки Вероятностные, при бесконечном числе итераций Доказаны для ряда стратегий (например, GP-UCB)
Возможность параллелизации Тривиальная Тривиальная Требует специальных модификаций (batch-стратегии)
Сложность реализации и настройки Низкая Очень низкая Средняя (выбор ядра, функции приобретения)

Случайный поиск, как показали Бергстра и Бенжио (Bergstra, Bengio, 2012), как правило превосходит сеточный за счёт того, что не тратит ресурсы на менее значимые измерения пространства. Байесовская оптимизация идёт дальше: она направленно исследует область, руководствуясь текущими представлениями о форме функции, что даёт заметный выигрыш именно при малом бюджете вычислений.

Интуитивная идея

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

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

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

Компоненты метода

Суррогатная модель: гауссовский процесс

Наиболее распространённой суррогатной моделью в байесовской оптимизации выступает гауссовский процесс (Gaussian Process, GP) — распределение вероятностей на пространстве функций, полностью определяемое функцией среднего m(x) и ковариационной функцией (ядром) k(x,x'):

f(x) \sim \mathcal{GP}\big(m(x),\, k(x,x')\big)

На практике часто принимают m(x)=0, а всю содержательную информацию о гладкости и масштабе изменчивости функции кодируют в ядре. Типичный выбор — квадратично-экспоненциальное (гауссово) ядро

k(x,x') = \sigma_f^2 \exp\!\left(-\frac{\|x-x'\|^2}{2\ell^2}\right)

или семейство ядер Матерна, обеспечивающих менее жёсткое предположение о гладкости. Параметры ядра — длина корреляции \ell, дисперсия сигнала \sigma_f^2 и дисперсия шума \sigma_n^2 — подбираются максимизацией логарифма маргинального правдоподобия:

\log p(\mathbf{y}\mid X) = -\frac{1}{2}\mathbf{y}^\top (K+\sigma_n^2 I)^{-1}\mathbf{y} - \frac{1}{2}\log\left|K+\sigma_n^2 I\right| - \frac{t}{2}\log 2\pi

Ключевое свойство гауссовского процесса состоит в том, что при условии на уже полученные наблюдения \mathcal{D}_t=\{(x_i,y_i)\}_{i=1}^{t} апостериорное распределение значения функции в произвольной точке x вновь является гауссовским, с явно выражаемыми параметрами:

\mu_t(x) = \mathbf{k}_t(x)^\top \big(K_t + \sigma_n^2 I\big)^{-1} \mathbf{y}_{1:t}
\sigma_t^2(x) = k(x,x) - \mathbf{k}_t(x)^\top \big(K_t + \sigma_n^2 I\big)^{-1} \mathbf{k}_t(x)

где \mathbf{k}_t(x) = \big[k(x,x_1),\dots,k(x,x_t)\big]^\top, K_t — матрица Грама с элементами [K_t]_{ij}=k(x_i,x_j), а \mathbf{y}_{1:t}=[y_1,\dots,y_t]^\top. Функция \mu_t(x) задаёт текущую наилучшую оценку значения функции, а \sigma_t^2(x) — меру неопределённости этой оценки, естественным образом убывающую вблизи уже исследованных точек.

Функция приобретения

Апостериорное распределение GP само по себе не указывает, куда направить следующее измерение. Эту роль играет функция приобретения a(x) — скалярная функция, вычисляемая из \mu_t(x) и \sigma_t(x), значение которой велико в точках, перспективных для оценки. Следующая точка выбирается как

x_{t+1} = \arg\max_{x \in \mathcal{X}} a(x \mid \mathcal{D}_t)

Эта вспомогательная задача оптимизации сама по себе не является дорогостоящей (функция приобретения вычисляется аналитически из GP), поэтому её решают классическими методами — многостартовым L-BFGS, CMA-ES или плотным перебором.

Пусть f^{+}=\max_i y_i — наилучшее из наблюдённых значений (инкумбент), а \Phi и \phi — функция распределения и плотность стандартного нормального распределения.

Вероятность улучшения (Probability of Improvement, PI), предложенная Кушнером (Kushner, 1964):

\mathrm{PI}(x) = \Phi\!\left(\frac{\mu_t(x) - f^{+} - \xi}{\sigma_t(x)}\right)

Ожидаемое улучшение (Expected Improvement, EI), введённое Мокусом и популяризированное в алгоритме EGO (Jones, Schonlau, Welch, 1998):

\mathrm{EI}(x) = \begin{cases} \big(\mu_t(x)-f^{+}-\xi\big)\,\Phi(z) + \sigma_t(x)\,\phi(z), & \sigma_t(x)>0 \\ 0, & \sigma_t(x)=0 \end{cases}

где z = \dfrac{\mu_t(x)-f^{+}-\xi}{\sigma_t(x)}.

Верхняя доверительная граница (Upper Confidence Bound, GP-UCB), обоснованная теоретически Шринивасом с соавторами (Srinivas et al., 2010):

\mathrm{UCB}(x) = \mu_t(x) + \sqrt{\beta_t}\,\sigma_t(x)

Во всех формулах параметр \xi \geqslant 0 (для PI и EI) или \beta_t (для UCB) управляет соотношением исследования и эксплуатации: увеличение параметра смещает предпочтение в сторону точек с высокой неопределённостью. При зашумлённых наблюдениях в качестве инкумбента f^{+} корректнее использовать не наилучшее наблюдённое значение y_i, а наилучшее значение апостериорного среднего \mu_t(x_i).

Функция Учитывает Склонность Параметр Теоретические гарантии
PI Только вероятность превышения порога Излишне «жадная», недооценивает величину улучшения \xi Практически отсутствуют
EI Вероятность и ожидаемую величину улучшения Сбалансированное поведение, наиболее распространённый выбор \xi Есть асимптотические результаты сходимости
UCB Явный компромисс среднего и неопределённости Легко настраиваемая, интерпретируемая агрессивность исследования \beta_t Доказана оценка регрета (GP-UCB, Srinivas et al., 2010)

Математическая схема

Байесовская оптимизация представляет собой последовательный процесс байесовского обновления. На шаге t апостериорное распределение p(f\mid \mathcal{D}_{t-1}), полученное по формулам предыдущего раздела, используется для выбора точки x_t максимизацией функции приобретения. После получения наблюдения y_t=f(x_t)+\varepsilon_t набор данных пополняется: \mathcal{D}_t = \mathcal{D}_{t-1}\cup\{(x_t,y_t)\}, и апостериорное распределение пересчитывается — это и есть байесовское обновление, применяемое последовательно T раз при бюджете в T измерений.

Качество стратегии принято характеризовать величиной регрета. Простой регрет после T шагов:

r_T = f(x^{*}) - \max_{t\leqslant T} f(x_t)

Кумулятивный регрет:

R_T = \sum_{t=1}^{T} \big[f(x^{*}) - f(x_t)\big]

Стратегия называется «безрегретной» (Шаблон:Lang-en), если R_T/T \to 0 при T\to\infty, что влечёт сходимость простого регрета к нулю. Для GP-UCB Шриниваc с соавторами (2010) доказали следующий результат: если для конечного (или дискретизированного) множества \mathcal{X} положить

\beta_t = 2\log\!\left(\frac{|\mathcal{X}|\,t^2\pi^2}{6\delta}\right)

то с вероятностью не менее 1-\delta кумулятивный регрет ограничен как

R_T \leqslant \sqrt{C_1\, T\, \beta_T\, \gamma_T}

где C_1 = 8/\log(1+\sigma_n^{-2}), а \gamma_T — максимальный информационный выигрыш (Шаблон:Lang-en), характеризующий сложность класса функций, порождаемого ядром GP. Для гауссова ядра \gamma_T = O\big((\log T)^{d+1}\big), для ядра Матерна с параметром гладкости \nu\gamma_T = O\big(T^{\frac{d(d+1)}{2\nu+d(d+1)}}\log T\big). Поскольку в обоих случаях \gamma_T растёт медленнее T, оценка гарантирует сублинейный рост R_T и, следовательно, сходимость GP-UCB к глобальному оптимуму.

Алгоритм

Ниже приведена обобщённая псевдокодовая схема, справедливая для большинства реализаций байесовской оптимизации на основе гауссовского процесса.

Вход: чёрный ящик f, область поиска X, бюджет T,
      размер начального плана n0, функция приобретения a

1. Сформировать начальный план {x_1, ..., x_n0}
   (например, латинский гиперкуб или последовательность Соболя)
2. Для i = 1 .. n0: вычислить y_i = f(x_i)
3. D <- {(x_1,y_1), ..., (x_n0,y_n0)}

4. Для t = n0+1 .. T:
   4.1 Обучить гауссовский процесс на D:
       подобрать гиперпараметры ядра максимизацией
       маргинального правдоподобия
   4.2 Вычислить apostериорные mu(x), sigma^2(x) по формулам GP
   4.3 x_t <- argmax_{x in X} a(x | D)   // вспомогательная оптимизация
   4.4 y_t <- f(x_t)                     // дорогостоящее обращение к оракулу
   4.5 D <- D U {(x_t, y_t)}

5. Вернуть x+ = argmax_{(x_i,y_i) in D} y_i

Пример: настройка гиперпараметров градиентного бустинга для кредитного скоринга

Рассмотрим типовую задачу кредитного скоринга: построение бинарного классификатора, предсказывающего вероятность дефолта заёмщика, с использованием модели градиентного бустинга (например, XGBoost, LightGBM или CatBoost). В качестве целевой метрики обычно выступает площадь под ROC-кривой (AUC), оцениваемая по кросс-валидации. Один запуск обучения с фиксированным набором гиперпараметров и последующей k-блочной кросс-валидацией может занимать от нескольких минут до часов — это и есть «дорогой чёрный ящик» в терминах задачи.

Гиперпараметр Диапазон Тип Шкала
learning_rate (темп обучения) [0.01; 0.3] вещественный логарифмическая
max_depth (глубина дерева) [3; 10] целочисленный линейная
n_estimators (число деревьев) [100; 1000] целочисленный линейная
subsample (доля объектов) [0.5; 1.0] вещественный линейная
colsample_bytree (доля признаков) [0.5; 1.0] вещественный линейная
min_child_weight [1; 50] целочисленный линейная
reg_lambda (L2-регуляризация) [1e-3; 10] вещественный логарифмическая
reg_alpha (L1-регуляризация) [1e-3; 10] вещественный логарифмическая

Целевая функция в этом случае — f(\theta) = \mathrm{AUC}_{\mathrm{CV}}(\theta), где \theta — вектор из восьми перечисленных гиперпараметров, а оптимизация ведётся на максимум. Типичная схема запуска: начальный план из 10–15 точек по латинскому гиперкубу, далее 30–50 итераций байесовской оптимизации с GP-суррогатом (ядро Матерна 5/2) и функцией приобретения EI.

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

Число обращений к f Лучший AUC, случайный поиск Лучший AUC, байесовская оптимизация
10 0,780 0,795
25 0,791 0,804
50 0,798 0,808
100 0,803 0,809
200 0,807 0,810

Характерная картина: байесовская оптимизация достигает качества, сопоставимого с результатом случайного поиска при существенно большем бюджете, уже за первые несколько десятков итераций — это и есть проявление её выборочной эффективности (Шаблон:Lang-en), особенно ценной при дорогой целевой функции. Сходный вывод — превосходство байесовской оптимизации над случайным поиском при настройке гиперпараметров моделей машинного обучения — получен Снук с соавторами (Snoek, Larochelle, Adams, 2012).

Достоинства и ограничения

Достоинства:

  • высокая эффективность по числу обращений к целевой функции, особенно значимая при дорогих вычислениях;
  • корректная работа с зашумлёнными наблюдениями благодаря вероятностной природе модели;
  • явная количественная оценка неопределённости, позволяющая осмысленно управлять балансом исследования и эксплуатации;
  • отсутствие требования к дифференцируемости или явной аналитической форме целевой функции;
  • возможность включения априорных знаний через выбор ядра, функции среднего или ограничений;
  • хорошая применимость к экспериментальным и симуляционным задачам, где каждое измерение стоит дорого.

Ограничения:

  • кубическая сложность обучения гауссовского процесса по числу наблюдений (O(t^3)), что без разреженных аппроксимаций ограничивает практический бюджет итераций несколькими сотнями–тысячами;
  • заметная деградация качества при высокой размерности пространства поиска (свыше примерно 15–20 непрерывных переменных без специальных приёмов);
  • чувствительность к выбору ядра и способу настройки его гиперпараметров;
  • последовательная по своей природе процедура, затрудняющая тривиальную параллелизацию (хотя существуют пакетные, batch-модификации);
  • нетривиальная работа с дискретными, категориальными и условными (conditional) параметрами без специальных модификаций ядра или кодирования;
  • вспомогательная задача максимизации функции приобретения сама может быть многоэкстремальной и требовать многостартовой оптимизации.

Варианты расширений

Многомерная оптимизация
При росте размерности пространства поиска стандартный GP-подход теряет эффективность. Для смягчения проблемы применяют случайные вложения меньшей размерности (метод REMBO), аддитивные модели GP, а также методы, сужающие область поиска до доверительного региона на каждой итерации (TuRBO).
Оптимизация с ограничениями
Если помимо целевой функции присутствуют дорогостоящие ограничения c(x)\leqslant 0, применяется модификация функции приобретения — например, взвешивание EI вероятностью допустимости точки, оцениваемой отдельным GP-классификатором ограничения (constrained EI).
Многокритериальная оптимизация
При нескольких одновременно оптимизируемых целях вместо единственной точки ищется множество Парето-оптимальных решений. Используются функции приобретения вроде ожидаемого прироста гиперобъёма (Expected Hypervolume Improvement, EHVI) или скаляризационные подходы (ParEGO).
Мультифидельная оптимизация (BOHB)
Когда доступны дешёвые приближённые оценки функции (например, обучение на подвыборке данных или при малом числе эпох), их можно использовать наряду с дорогими точными измерениями. Алгоритм BOHB (Falkner, Klein, Hutter, 2018) сочетает бандитскую схему распределения ресурсов Hyperband с байесовской моделью выбора конфигураций, ускоряя сходимость по сравнению с обычной GP-оптимизацией.
Поиск архитектур нейронных сетей (NAS)
Байесовская оптимизация применяется и для поиска архитектур нейронных сетей — здесь пространство поиска дискретно, комбинаторно велико, а оценка каждой точки (обучение сети) крайне дорога. Для работы с такими пространствами используют специальные ядра, определённые на графах архитектур (например, на основе расстояния оптимального переноса, как в NASBOT), либо комбинируют байесовскую оптимизацию с методами разделения весов и другими техниками ускорения оценки кандидатов.

Литература

  1. Mockus J. On Bayesian methods for seeking the extremum // Optimization Techniques IFIP Technical Conference. — 1975.
  2. Jones D. R., Schonlau M., Welch W. J. Efficient Global Optimization of Expensive Black-Box Functions // Journal of Global Optimization. — 1998. — Vol. 13. — P. 455–492.
  3. Rasmussen C. E., Williams C. K. I. Gaussian Processes for Machine Learning. — MIT Press, 2006.
  4. Brochu E., Cora V. M., de Freitas N. A Tutorial on Bayesian Optimization of Expensive Cost Functions, with Application to Active User Modeling and Hierarchical Reinforcement Learning. — arXiv:1012.2599, 2010.
  5. Srinivas N., Krause A., Kakade S., Seeger M. Gaussian Process Optimization in the Bandit Setting: No Regret and Experimental Design // Proceedings of ICML. — 2010.
  6. Bergstra J., Bengio Y. Random Search for Hyper-Parameter Optimization // Journal of Machine Learning Research. — 2012. — Vol. 13. — P. 281–305.
  7. Snoek J., Larochelle H., Adams R. P. Practical Bayesian Optimization of Machine Learning Algorithms // Advances in Neural Information Processing Systems (NeurIPS). — 2012.
  8. Shahriari B., Swersky K., Wang Z., Adams R. P., de Freitas N. Taking the Human Out of the Loop: A Review of Bayesian Optimization // Proceedings of the IEEE. — 2016. — Vol. 104, № 1. — P. 148–175.
  9. Falkner S., Klein A., Hutter F. BOHB: Robust and Efficient Hyperparameter Optimization at Scale // Proceedings of ICML. — 2018.
  10. Frazier P. I. A Tutorial on Bayesian Optimization. — arXiv:1807.02811, 2018.




Контрастивное обучение



Ты специалист в области машинного обучения, профессор в ведущем техническом университете и популяризатор науки. Напиши энциклопедическую статью для MachineLearning.ru на тему «Контрастивное обучение».

Целевая аудитория: мотивированные студенты, преподаватели и специалисты в AI/ML. Статья должна быть полезна новичку: дать понятные определения, объяснить основную идею "притягивать похожее, отталкивать разное" на пальчиковом уровне с понятными примерами. Профессионалу статья должна дать математическую формализацию (функции потерь: InfoNCE, Triplet Loss, SimCLR), объяснить архитектурные решения (Siamese networks, проекционная головка), стратегии аугментации данных и проблему "коллапса представлений".

Обязательные разделы: 1. Введение (кратко, 2-3 абзаца, с историей: Hadsell et al. 2006, Oord et al. 2018, Chen et al. 2020 SimCLR) 2. Постановка задачи: обучение представлений без меток (self-supervised learning) 3. Интуитивная идея: на примере пар изображений, что такое "позитивные" и "негативные" пары 4. Математическая формализация: Triplet Loss, InfoNCE, NT-Xent — формулы 5. Архитектурные решения: Siamese networks, проекционная головка (MLP), симметричные и асимметричные архитектуры 6. Стратегии аугментации: для изображений, текста, графов 7. Проблема коллапса представлений и способы борьбы (stop-gradient, отрицательные примеры, нормализация) 8. Основные методы: SimCLR, MoCo, BYOL, SimSiam (кратко, с таблицей сравнения) 9. Связь с CLIP и мультимодальными моделями 10. Пример: обучение представлений на CIFAR-10 с SimCLR (условные цифры, не обязательно точные) 11. Достоинства и ограничения (списками) 12. См. также (внутренние ссылки: Самообучение, Компьютерное зрение, Обработка естественного языка, CLIP, SimCLR, MoCo) 13. Литература (реальные источники)

Важно: статья должна быть не слишком длинной — оптимально 25-30 тысяч символов. Упомяни популярные библиотеки: PyTorch Lightning, Hugging Face.

Стиль академичный, ясный, без рекламных фраз и нейросетевых штампов. Формулы оформляй только через ..., выключные формулы через :: .... Термины оформляй как внутренние ссылки. В начале статьи добавь предупреждение:

Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 15:00, 10 июля 2026 (MSD)


Выдай только сырой вики-код статьи.


```wikitext

Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 15:00, 10 июля 2026 (MSD)


Контрастивное обучение (contrastive learning) — семейство методов самообучения (self-supervised learning), в которых модель обучается строить представления (embeddings) объектов исходя не из явных меток класса, а из отношений сходства между парами или наборами объектов. Основной принцип формулируется коротко: похожие объекты должны иметь близкие представления, непохожие — далёкие. Эта идея легла в основу современных методов предобучения в компьютерном зрении, обработке естественного языка и мультимодальном обучении, включая модели типа CLIP.

Введение

Идея обучения по парам «похоже/непохоже» восходит к работам по метрическому обучению начала 1990-х годов, где сиамские нейронные сети применялись для верификации подписей (Bromley et al., 1993). Формальный вид современного контрастивного лосса был предложен в работе Hadsell, Chopra и LeCun (2006) «Dimensionality Reduction by Learning an Invariant Mapping», где для задачи снижения размерности использовалась функция потерь, притягивающая пары точек с одинаковой меткой окрестности и отталкивающая пары с разными метками — с использованием отступа (margin), аналогично более поздним триплет-лоссам.

Второй важный этап — работа ван ден Оорда и соавторов (Oord et al., 2018) «Representation Learning with Contrastive Predictive Coding», введшая функцию потерь InfoNCE и связавшая контрастивное обучение с оценкой взаимной информации между связанными фрагментами данных (например, соседними отрезками аудиосигнала). Это дало теоретическое обоснование того, почему контрастивные цели вообще позволяют извлекать полезные представления без разметки.

Третий, решающий для практики этап — статья Chen et al. (2020) «A Simple Framework for Contrastive Learning of Visual Representations» (SimCLR), показавшая, что при достаточно сильных аугментациях, большом размере батча и добавлении небольшой проекционной головки простая контрастивная цель на изображениях позволяет получить представления, по качеству приближающиеся к представлениям, полученным при обучении с учителем на ImageNet. После этой работы контрастивное обучение стало одним из основных подходов к предобучению без разметки, породив линейку методов — MoCo, BYOL, SimSiam — и в дальнейшем — мультимодальные модели вроде CLIP.

Постановка задачи

Формально задача ставится так: имеется набор немаркированных данных X = \{x_1, \dots, x_N\} (изображения, тексты, графы, аудиозаписи). Требуется найти функцию-энкодер f_\theta: X \to \mathbb{R}^d, отображающую объект в вектор фиксированной размерности так, чтобы это представление было полезно для широкого круга последующих задач (downstream tasks) — классификации, кластеризации, поиска ближайших соседей, дообучения (fine-tuning).

В отличие от обучения с учителем, где обучающий сигнал задаётся парами (x, y) с истинной меткой y, в контрастивном обучении сигнал формируется искусственно, из самой структуры данных: каждому объекту сопоставляется один или несколько «позитивных» связанных объектов (например, другая аугментация той же картинки) и множество «негативных» — не связанных с ним объектов. Обучение сводится к минимизации функции потерь, зависящей только от взаимного расположения представлений в пространстве embedding, без обращения к внешней разметке.

Качество полученных представлений принято оценивать протоколом линейной оценки (linear evaluation protocol): веса энкодера замораживаются, поверх представления h = f_\theta(x) обучается только линейный классификатор с использованием размеченных данных, и измеряется точность этого классификатора. Такой протокол позволяет сравнивать разные методы предобучения независимо от архитектуры «головы» классификатора.

Интуитивная идея

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

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

Удобная механическая аналогия — пружины и резинки в пространстве представлений. Позитивные пары соединены резинкой, которая стягивает их друг к другу; негативные пары соединены пружиной, которая их расталкивает. В равновесии объекты, похожие по смыслу, образуют плотные кластеры, а разнородные объекты расходятся — при этом сети ни разу не сообщалось явно, что перед ней «кот» или «автомобиль»: вся структура выучена из самой геометрии притяжения и отталкивания.

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

Математическая формализация

Пусть энкодер f_\theta отображает объект x в представление h = f_\theta(x). Рассмотрим три исторически последовательных формулировки контрастивного лосса.

Triplet Loss. Функция была популяризирована в задачах метрического обучения, в частности в работе FaceNet (Schroff et al., 2015). Для тройки (якорь a, позитив p, негатив n) и функции расстояния d(u,v) = \|u - v\|_2 лосс задаётся как:

\mathcal{L}_{triplet}(a,p,n) = \max\bigl(0,\; d(f(a),f(p))^2 - d(f(a),f(n))^2 + \alpha\bigr)

где \alpha — гиперпараметр отступа (margin). Лосс штрафует ситуацию, когда позитив не отделён от негатива хотя бы на величину \alpha; при выполнении неравенства с запасом градиент равен нулю. Существенный практический недостаток триплет-лосса — сильная зависимость от стратегии подбора триплетов (triplet mining): случайно выбранные тройки быстро становятся тривиальными (лосс равен нулю), и для эффективного обучения требуется добывать «трудные» негативы.

InfoNCE. Введена в работе Oord et al. (2018) в рамках метода Contrastive Predictive Coding. В отличие от триплет-лосса, сопоставляет один позитив сразу множеству негативов через softmax:

\mathcal{L}_{InfoNCE} = -\,\mathbb{E}\left[\log \frac{\exp\bigl(f(x)^{\top} f(x^{+})/\tau\bigr)}{\displaystyle\sum_{x_i \in \{x^+, x_1,\dots,x_{N-1}\}} \exp\bigl(f(x)^{\top} f(x_i)/\tau\bigr)}\right]

где x^+ — позитивный пример, x_1,\dots,x_{N-1} — негативные примеры, \tau — параметр температуры. Авторы показали, что минимизация этого выражения эквивалентна максимизации нижней оценки взаимной информации I(x; x^+) между двумя связанными представлениями данных — отсюда название InfoNCE (information noise-contrastive estimation).

NT-Xent (SimCLR). В работе Chen et al. (2020) используется нормализованная температурная кросс-энтропия (normalized temperature-scaled cross entropy). Из батча размера N с помощью двух независимых случайных аугментаций формируется 2N представлений; для каждой позитивной пары (i,j), полученной из одного исходного изображения, лосс имеет вид:

\ell_{i,j} = -\log \frac{\exp\bigl(\mathrm{sim}(z_i,z_j)/\tau\bigr)}{\displaystyle\sum_{k=1}^{2N}\mathbb{1}_{[k\neq i]}\,\exp\bigl(\mathrm{sim}(z_i,z_k)/\tau\bigr)}

где \mathrm{sim}(u,v) = \dfrac{u^{\top}v}{\|u\|\,\|v\|} — косинусное сходство, а z_i = g(f_\theta(x_i)) — представление после проекционной головки. Итоговый лосс на батч — среднее \ell_{i,j} по всем 2N позитивным парам (в обе стороны). Все остальные 2N-2 представления в батче выступают негативами для пары (i,j) — так называемые in-batch negatives.

Температура \tau играет роль настройки «жёсткости» распределения softmax: малые значения \tau сильнее штрафуют близкие негативы (эффект, близкий к hard negative mining), но одновременно делают обучение более чувствительным к шуму и переобучению на конкретных негативах внутри батча.

Архитектурные решения

Сиамские сети (Siamese networks) — базовая архитектурная схема контрастивного обучения: два (или более) прохода одного и того же энкодера с общими весами f_\theta применяются к разным входам (например, к двум аугментациям одного изображения), после чего представления сравниваются функцией расстояния или сходства. Название закрепилось за архитектурой ещё в работах по верификации подписей и лиц 1990–2000-х годов.

Проекционная головка. Ключевое наблюдение SimCLR состоит в том, что контрастивный лосс лучше вычислять не непосредственно на представлении h = f_\theta(x), которое затем используется в последующих задачах, а на выходе дополнительной небольшой сети — проекционной головки g(\cdot), обычно двухслойного MLP с нелинейностью ReLU: z = g(h). После предобучения головка g отбрасывается, для последующих задач используется h. Объяснение эффекта: контрастивная цель заставляет модель отбрасывать информацию, инвариантную относительно применённых аугментаций (например, цвет объекта, если применялось цветовое искажение) — такая информация может быть полезна для последующих задач, но вредна для контрастивной цели. Проекционная головка «принимает удар на себя», сохраняя более общее представление в h.

Симметричные и асимметричные архитектуры. В симметричной схеме (SimCLR) оба входа проходят через один и тот же энкодер с общими весами, и градиент течёт по обеим ветвям одинаково. В асимметричных схемах ветви различаются: например, в MoCo один энкодер (query encoder) обучается градиентным спуском, а второй (key encoder) обновляется через экспоненциальное скользящее среднее (momentum, EMA) весов первого энкодера и не получает градиента напрямую — это стабилизирует представления негативов, накапливаемых в очереди. В BYOL и SimSiam асимметрия усиливается ещё сильнее: на «онлайн»-ветви добавляется дополнительная сеть-предиктор, а на «целевой» ветви применяется остановка градиента (stop-gradient) — при этом негативные примеры вовсе не требуются.

Стратегии аугментации данных

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

Изображения. В экспериментах SimCLR показано, что сильнее всего на качество влияет комбинация случайного кропа с масштабированием (random resized crop) и цветовых искажений (color jitter, случайное преобразование яркости, контраста, насыщенности и оттенка). По отдельности ни один из этих видов аугментации не даёт сравнимого эффекта: случайный кроп без изменения цвета позволяет модели решать задачу по одним лишь статистикам цвета, не выучивая содержательных признаков формы и текстуры. Дополнительно применяются размытие по Гауссу, перевод в оттенки серого, горизонтальное отражение; в ряде более поздних методов (BYOL) добавляется соляризация.

Текст. Используются маскирование токенов, обратный перевод (back-translation), синонимическая замена слов, случайные удаление/вставка/перестановка слов (техника EDA), а также кроппинг фрагментов документа. Отдельный интересный приём — метод SimCSE, где две «разные» версии одного и того же предложения получаются простым повторным пропуском через энкодер с включённым dropout: разные случайные маски dropout дают немного разные представления одного и того же текста, которые и образуют позитивную пару.

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

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

Проблема коллапса представлений

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

Основные способы борьбы с коллапсом:

  • Явные негативные примеры. В InfoNCE-подобных лоссах наличие негативов создаёт отталкивающую силу: минимизация лосса требует не просто сближения позитива, а его отличимости от множества негативов через softmax, что делает константное решение невыгодным. Для устойчивой оценки такого softmax требуется достаточно большое число негативов — отсюда потребность SimCLR в больших батчах либо MoCo в очереди (queue) накопленных представлений.
  • Остановка градиента (stop-gradient). В BYOL и особенно наглядно в SimSiam показано, что коллапса можно избежать вовсе без негативных примеров: достаточно асимметрии между двумя ветвями сети (дополнительный предиктор на одной ветви) и остановки градиента на другой ветви. Полного теоретического объяснения этому явлению до конца не дано, но эмпирически и по ряду теоретических аргументов (аналогия с EM-алгоритмом попеременной оптимизации) показано, что такая схема устойчиво избегает вырождения.
  • Нормализация. L2-нормализация представлений (проекция на единичную гиперсферу) в сочетании с батч-нормализацией внутри проекционной головки и предиктора эмпирически связана со стабильностью обучения и, по ряду наблюдений, помогает избегать коллапса — хотя более поздние работы (в частности, эксперименты SimSiam) показывают, что одной нормализации без stop-gradient недостаточно.
  • Явная регуляризация ковариации. Отдельное направление — методы Barlow Twins (Zbontar et al., 2021) и VICReg (Bardes et al., 2022), которые вместо контрастивного или предикторного лосса напрямую штрафуют вырождение: требуют, чтобы дисперсия каждой компоненты представления по батчу была не ниже порога, и одновременно минимизируют корреляцию между разными компонентами вектора представления.

Основные методы

Метод Год Нужны негативные примеры Momentum-энкодер Механизм против коллапса Требования к батчу
SimCLR 2020 Да (in-batch) Нет Негативные примеры + проекционная головка Очень большой (2048–8192)
MoCo (v1/v2) 2019/2020 Да (очередь) Да Негативные примеры из очереди + momentum-энкодер Умеренный (очередь заменяет большой батч)
BYOL 2020 Нет Да Асимметрия «онлайн/цель» + предиктор + stop-gradient Умеренный
SimSiam 2021 Нет Нет Только предиктор + stop-gradient Умеренный

SimCLR (Chen et al., 2020) — симметричная сиамская схема с общей энкодер-проекцией на обеих ветвях, использующая NT-Xent-лосс с in-batch негативами; для достижения качественных представлений требует очень больших батчей, поскольку число негативов ограничено размером батча.

MoCo (He et al., 2019; версия v2 — Chen et al., 2020) решает проблему больших батчей за счёт отдельной очереди (dictionary) представлений-негативов, накапливаемых из предыдущих итераций, и momentum-энкодера — ключевой сети, чьи веса не обучаются градиентом напрямую, а обновляются как экспоненциальное скользящее среднее весов основной (query) сети. Это позволяет держать большое число негативов (десятки тысяч) при умеренном размере батча.

BYOL («Bootstrap Your Own Latent», Grill et al., 2020) полностью отказывается от негативных примеров: онлайн-сеть с дополнительным предиктором обучается предсказывать представление, выдаваемое целевой (target) сетью — копией с momentum-обновлением весов и остановленным градиентом — на другой аугментации того же изображения. Лосс — по существу регрессионный (нормализованная среднеквадратичная ошибка), а не классификационный.

SimSiam (Chen & He, 2021) показывает, что для избежания коллапса momentum-энкодер не обязателен: достаточно простой сиамской сети с общими весами, предиктора на одной ветви и остановки градиента на другой — без негативов, без очереди, без momentum-обновления.

Связь с CLIP и мультимодальными моделями

Контрастивный принцип естественно обобщается на пары объектов разной модальности. Модель CLIP (Radford et al., 2021, «Learning Transferable Visual Models From Natural Language Supervision») обучает одновременно энкодер изображений и энкодер текста на большом корпусе пар (изображение, подпись), используя, по существу, ту же схему, что и NT-Xent: внутри батча позитивной парой считается соответствующая друг другу пара «изображение — подпись», негативами — все остальные комбинации изображений и подписей внутри батча; лосс вычисляется симметрично — как по строкам, так и по столбцам матрицы косинусных сходств.

Результат такого предобучения — общее пространство представлений, в котором изображение и описывающий его текст оказываются близки. Это позволяет решать задачи zero-shot классификации: класс объекта определяется путём сравнения представления изображения с представлениями текстовых промптов вида «фотография {класс}» без какого-либо дообучения на целевом наборе данных. Подход CLIP послужил основой для последующих мультимодальных контрастивных моделей (например, ALIGN) и широко используется как источник эмбеддингов для задач мультимодального поиска и в качестве управляющего сигнала в генеративных моделях изображений.

Пример: обучение представлений на CIFAR-10 с SimCLR

Проиллюстрируем типичный пайплайн на примере CIFAR-10 (условные, ориентировочные цифры). В качестве энкодера берётся сеть уменьшенной глубины (например, ResNet-18, адаптированный под разрешение 32×32). Предобучение проводится без меток в течение порядка 200–500 эпох с батчем размера 256–512 (небольшое разрешение CIFAR-10 позволяет обойтись без экстремально больших батчей, характерных для ImageNet), с аугментациями: случайный кроп с изменением масштаба, горизонтальное отражение, цветовые искажения, перевод в оттенки серого. Используется проекционная головка — двухслойный MLP, лосс — NT-Xent с температурой порядка 0.5.

После предобучения энкодер замораживается, поверх представления h обучается линейный классификатор на полном размеченном наборе CIFAR-10. Ориентировочно такой протокол позволяет получить точность в районе 90% и выше, при том что полностью контролируемое обучение сравнимой по размеру сети на CIFAR-10 обычно даёт порядка 93–95% — то есть контрастивное предобучение без единой метки позволяет приблизиться к качеству обучения с учителем.

На практике реализовывать подобный пайплайн с нуля не обязательно: библиотека PyTorch Lightning (в частности, надстройки вроде Lightning Bolts и сторонняя библиотека lightly) предоставляет готовые реализации SimCLR, MoCo, BYOL и SimSiam с настраиваемыми аугментациями и логированием; экосистема Hugging Face предоставляет предобученные контрастивные модели (в частности, чекпоинты CLIP) и библиотеку sentence-transformers для текстовых представлений, обучаемых по контрастивным и близким к ним схемам.

Достоинства и ограничения

Достоинства:

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

Ограничения:

  • сильная чувствительность к выбору и силе аугментаций: неудачный набор либо тривиализирует задачу, либо разрушает полезную семантику;
  • методам с явными негативами (SimCLR, MoCo) требуются большие батчи или банки памяти, что увеличивает вычислительные затраты;
  • риск коллапса представлений, требующий дополнительных архитектурных приёмов (stop-gradient, momentum-энкодер, регуляризация ковариации);
  • нет формальной гарантии, что инварианты, навязанные аугментациями, совпадают с инвариантами, нужными для конкретной целевой задачи;
  • более низкая интерпретируемость по сравнению с обучением на явно размеченных признаках — сложно диагностировать, какая именно информация закодирована в представлении;
  • обучение чувствительно к гиперпараметрам — температуре, составу аугментаций, длительности предобучения и размеру батча.

См. также

Литература

  1. Hadsell R., Chopra S., LeCun Y. Dimensionality Reduction by Learning an Invariant Mapping // CVPR. — 2006.
  2. Oord A. van den, Li Y., Vinyals O. Representation Learning with Contrastive Predictive Coding // arXiv:1807.03748. — 2018.
  3. Chen T., Kornblith S., Norouzi M., Hinton G. A Simple Framework for Contrastive Learning of Visual Representations // ICML. — 2020.
  4. He K., Fan H., Wu Y., Xie S., Girshick R. Momentum Contrast for Unsupervised Visual Representation Learning // CVPR. — 2020.
  5. Grill J.-B., Strub F., Altché F. et al. Bootstrap Your Own Latent: A New Approach to Self-Supervised Learning // NeurIPS. — 2020.
  6. Chen X., He K. Exploring Simple Siamese Representation Learning // CVPR. — 2021.
  7. Radford A., Kim J.W., Hallacy C. et al. Learning Transferable Visual Models From Natural Language Supervision // ICML. — 2021.
  8. Schroff F., Kalenichenko D., Philbin J. FaceNet: A Unified Embedding for Face Recognition and Clustering // CVPR. — 2015.
  9. Wu Z., Xiong Y., Yu S.X., Lin D. Unsupervised Feature Learning via Non-Parametric Instance Discrimination // CVPR. — 2018.
  10. Zbontar J., Jing L., Misra I., LeCun Y., Deny S. Barlow Twins: Self-Supervised Learning via Redundancy Reduction // ICML. — 2021.

```





Нормализация и стандартизация признаков


Ты специалист в области машинного обучения, профессор в ведущем техническом университете и популяризатор науки. Напиши энциклопедическую статью для MachineLearning.ru на тему «Нормализация и стандартизация признаков».

Целевая аудитория: мотивированные студенты, преподаватели и специалисты в AI/ML. Статья должна быть полезна новичку: дать понятные определения, объяснить разницу между нормализацией (min-max scaling), стандартизацией (z-score) и робастным масштабированием, показать на простом примере с конкретными числами. Профессионалу статья должна дать математические формулы, объяснить влияние на сходимость градиентных методов, на регуляризацию (L1, L2), на методы, основанные на расстояниях (KNN, SVM), и на интерпретируемость моделей.

Обязательные разделы: 1. Введение (кратко, 2 абзаца) 2. Постановка задачи: почему признаки бывают в разных масштабах — пример с возрастом и доходом 3. Нормализация (min-max scaling): формула, диапазон [0,1], когда использовать, чувствительность к выбросам 4. Стандартизация (z-score): формула, нулевое среднее и единичная дисперсия, когда использовать, связь с нормальным распределением 5. Робастное масштабирование: медиана и IQR, формула, устойчивость к выбросам 6. Другие методы: MaxAbsScaler, PowerTransformer (Box-Cox, Yeo-Johnson), QuantileTransformer — кратко 7. Влияние на алгоритмы: таблица, какие методы чувствительны к масштабу (линейные модели, SVM, KNN, PCA), а какие нет (деревья решений, случайный лес, градиентный бустинг) 8. Влияние на регуляризацию: почему L1 и L2 требуют стандартизации 9. Сравнение методов: таблица с плюсами и минусами 10. Пример: подготовка данных для логистической регрессии на задаче прогнозирования оттока клиентов (с конкретными числами до и после) 11. Практические рекомендации: когда что выбирать 12. См. также: внутренние ссылки на другие страницы (Ослабление и усиление шкал признаков, Предобработка данных, Регуляризация, Логистическая регрессия, Метод главных компонент) 13. Литература (реальные источники)

Важно: статья должна быть практичной, с конкретными примерами. Упомяни реализацию в scikit-learn (StandardScaler, MinMaxScaler, RobustScaler, PowerTransformer).

Стиль академичный, ясный, без рекламных фраз и нейросетевых штампов. Формулы оформляй только через ..., выключные формулы через :: .... Термины оформляй как внутренние ссылки. В начале статьи добавь предупреждение:

Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 15:56, 10 июля 2026 (MSD)


Выдай только сырой вики-код статьи.





Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 15:56, 10 июля 2026 (MSD)


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

Введение

Многие алгоритмы машинного обучения чувствительны к масштабу входных признаков. Если один признак измеряется в единицах порядка десятков тысяч, а другой — в единицах порядка нескольких единиц, алгоритмы, основанные на вычислении расстояний, скалярных произведений или градиентной оптимизации, начинают неявно придавать больший вес признаку с большим числовым разбросом — вне зависимости от его реальной информативности. Это приводит к смещённым, плохо интерпретируемым и медленно обучающимся моделям.

Нормализация и стандартизация решают эту проблему, приводя признаки к единой шкале до подачи в модель. Несмотря на то, что оба термина в бытовом употреблении нередко смешиваются, в строгом смысле они обозначают разные преобразования: нормализация переносит значения в фиксированный диапазон (чаще всего [0,1]), а стандартизация центрирует признак и приводит его дисперсию к единице. Выбор конкретного метода зависит от природы данных, наличия выбросов и используемого алгоритма.

Постановка задачи

Рассмотрим датасет с двумя признаками: возраст клиента (лет) и годовой доход (в рублях).

Клиент Возраст, лет Доход, руб./год
1 25 450 000
2 40 1 200 000
3 60 3 000 000

Возраст изменяется в диапазоне примерно 25–60 (разброс порядка десятков), доход — в диапазоне 450 000–3 000 000 (разброс порядка миллионов). Если такие данные подать, например, в метод k ближайших соседей, евклидово расстояние между объектами будет практически полностью определяться разницей в доходе — вклад возраста окажется пренебрежимо мал, хотя с содержательной точки зрения оба признака могут быть одинаково важны. Аналогичная проблема возникает при обучении линейных моделей градиентными методами: поверхность функции потерь становится сильно вытянутой вдоль направления признака с малым масштабом, что замедляет сходимость градиентного спуска.

Нормализация (min-max scaling)

Нормализация (min-max scaling) линейно переносит значения признака в заданный диапазон, обычно [0,1]. Для признака x преобразование задаётся формулой:

x' = \frac{x - x_{min}}{x_{max} - x_{min}}

где x_{min} и x_{max} — минимальное и максимальное значения признака на обучающей выборке. Для приведения к произвольному диапазону [a, b] используется обобщённая формула:

x' = a + \frac{(x - x_{min})(b - a)}{x_{max} - x_{min}}

Числовой пример. Возьмём признак «возраст» из таблицы выше: значения 25, 40, 60. Тогда x_{min}=25, x_{max}=60:

  • для 25: x' = (25-25)/(60-25) = 0{,}00
  • для 40: x' = (40-25)/(60-25) = 0{,}43
  • для 60: x' = (60-25)/(60-25) = 1{,}00

Когда применять. Min-max scaling полезен, когда требуется строго ограниченный диапазон значений — например, для входов нейронных сетей с сигмоидными или tanh-активациями, для алгоритмов обработки изображений (пиксели естественно ограничены), а также когда распределение признака заведомо не является нормальным и не имеет тяжёлых выбросов.

Чувствительность к выбросам. Основной недостаток метода — сильная зависимость от экстремальных значений x_{min} и x_{max}. Единственный аномальный объект способен «сжать» основную массу данных в узкий поддиапазон. Например, если среди клиентов появится доход в 50 000 000 руб., все остальные значения дохода после нормализации окажутся сосредоточены вблизи нуля, потеряв различимость.

В библиотеке scikit-learn метод реализован классом MinMaxScaler.

Стандартизация (z-score)

Стандартизация (standardization, z-score normalization) центрирует признак относительно среднего и масштабирует его так, чтобы дисперсия стала равна единице. Формула преобразования:

x' = \frac{x - \mu}{\sigma}

где \mu — выборочное среднее признака, \sigma — выборочное стандартное отклонение:

\mu = \frac{1}{n}\sum_{i=1}^{n} x_i, \qquad \sigma = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(x_i - \mu)^2}

После преобразования признак имеет нулевое среднее и единичную дисперсию: E[x']=0, Var(x')=1. Полученные значения называют z-оценками (z-scores) — они показывают, на сколько стандартных отклонений конкретное наблюдение отстоит от среднего.

Числовой пример. Для того же признака «возраст» (25, 40, 60): \mu = 41{,}67, \sigma \approx 14{,}36. Тогда:

  • для 25: x' = (25-41{,}67)/14{,}36 \approx -1{,}16
  • для 40: x' = (40-41{,}67)/14{,}36 \approx -0{,}12
  • для 60: x' = (60-41{,}67)/14{,}36 \approx 1{,}28

Когда применять. Стандартизация — наиболее универсальный выбор для большинства алгоритмов, использующих градиентную оптимизацию (логистической регрессии, SVM, нейронных сетей), а также для методов, опирающихся на предположения о нормальном распределении данных или на разложение ковариационной матрицы, в первую очередь для метода главных компонент (PCA). В отличие от min-max scaling, стандартизация не привязана к жёсткому диапазону, поэтому она устойчивее к добавлению новых наблюдений и мягче реагирует на умеренные выбросы, хотя среднее и стандартное отклонение сами по себе также чувствительны к экстремальным значениям.

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

В scikit-learn метод реализован классом StandardScaler.

Робастное масштабирование

Робастное масштабирование (robust scaling) — метод, использующий устойчивые к выбросам статистики: медиану и межквартильный размах (IQR) вместо среднего и стандартного отклонения. Формула:

x' = \frac{x - Q_2}{Q_3 - Q_1}

где Q_2 — медиана (второй квартиль), Q_1 и Q_3 — первый и третий квартили, а разность Q_3 - Q_1 = IQR — межквартильный размах, охватывающий центральные 50% наблюдений.

Устойчивость к выбросам. Поскольку медиана и квартили являются робастными статистиками — их значение определяется порядком наблюдений, а не их абсолютной величиной, — единичные аномальные значения практически не влияют на результат преобразования. Это ключевое отличие от min-max scaling и стандартизации, где выброс напрямую входит в вычисление масштабирующих параметров (x_{max}, \mu, \sigma).

Пример влияния выброса. Пусть к выборке дохода (450 000, 1 200 000, 3 000 000) добавлено аномальное значение 50 000 000. При min-max scaling три «нормальных» наблюдения сожмутся в диапазон около 0–0,05. При робастном масштабировании медиана и IQR практически не изменятся, и относительное положение исходных наблюдений останется информативным.

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

В scikit-learn метод реализован классом RobustScaler.

Другие методы масштабирования

  • MaxAbsScaler — делит значения признака на максимум по модулю: x' = x / \max(|x|). Результат лежит в диапазоне [-1, 1], при этом сохраняется знак и разреженность данных (нулевые значения остаются нулевыми), поэтому метод удобен для разреженных матриц.
  • PowerTransformer — семейство степенных преобразований (Бокса—Кокса и Йео—Джонсона), приближающих распределение признака к нормальному. Преобразование Бокса—Кокса применимо только к строго положительным значениям:
x^{(\lambda)} = \begin{cases} \dfrac{x^\lambda - 1}{\lambda}, & \lambda \neq 0 \\ \ln(x), & \lambda = 0 \end{cases}

Преобразование Йео—Джонсона обобщает эту формулу на случай отрицательных и нулевых значений. Параметр \lambda подбирается по максимуму правдоподобия. Метод полезен для сильно скошенных распределений (доход, цены, время ожидания), после которых применение стандартизации даёт более симметричные признаки.

  • QuantileTransformer — непараметрическое преобразование, отображающее эмпирическую функцию распределения признака на равномерное или нормальное распределение. Метод наиболее устойчив к выбросам среди перечисленных, поскольку явно «сжимает» хвосты распределения, но является нелинейным и может исказить взаимные расстояния между близкими наблюдениями.

Влияние на алгоритмы машинного обучения

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

Алгоритм Чувствительность к масштабу Обоснование
Линейная регрессия, Логистическая регрессия Высокая Градиентная оптимизация и регуляризация зависят от масштаба коэффициентов
SVM Высокая Оптимизация зазора и ядровые функции зависят от геометрии пространства признаков
KNN Высокая Классификация напрямую основана на евклидовом (или ином) расстоянии
PCA Высокая Направления максимальной дисперсии определяются масштабом признаков
Нейронные сети Высокая Влияет на скорость и устойчивость сходимости градиентного спуска
Метод k-средних Высокая Кластеризация основана на расстояниях между объектами
Деревья решений Низкая Разбиения строятся по пороговым значениям отдельного признака, монотонные преобразования не меняют порядок
Случайный лес Низкая Ансамбль деревьев, наследует их нечувствительность к масштабу
Градиентный бустинг Низкая Базовые модели — деревья решений, разбиения не зависят от абсолютного масштаба
Наивный байесовский классификатор Низкая Оценивает распределения по каждому признаку независимо

Таким образом, масштабирование признаков критично для всех методов, работающих с расстояниями, скалярными произведениями или градиентной оптимизацией, и практически не влияет на модели, основанные на древовидных разбиениях.

Влияние на регуляризацию

Регуляризация штрафует величину коэффициентов модели, добавляя к функции потерь L1- или L2-норму вектора весов:

L1: \; \lambda \sum_{j=1}^{p} |w_j|, \qquad L2: \; \lambda \sum_{j=1}^{p} w_j^2

Штраф применяется одинаково ко всем коэффициентам w_j, независимо от того, какому признаку они соответствуют. Если признаки измеряются в разных масштабах, коэффициенты, соответствующие признакам с малым разбросом значений, вынуждены принимать большие абсолютные значения, чтобы вносить сопоставимый вклад в предсказание, — и именно эти коэффициенты регуляризация штрафует сильнее всего, хотя содержательно признак может быть не менее важен, чем остальные.

В результате без предварительной стандартизации регуляризация штрафует признаки не по их информ ативности, а по их исходному масштабу, что искажает как качество модели, так и интерпретацию значимости коэффициентов. По этой причине стандартизация признаков — обязательный шаг перед применением Ridge (L2), Lasso (L1) и Elastic Net регрессии.

Сравнение методов

Метод Формула Диапазон результата Устойчивость к выбросам Типичное применение
Min-max scaling (x-x_{min})/(x_{max}-x_{min}) [0,1] (фиксированный) Низкая Нейросети, изображения, признаки без выбросов
Стандартизация (z-score) (x-\mu)/\sigma не ограничен, \mu=0,\sigma=1 Средняя Линейные модели, SVM, PCA
Робастное масштабирование (x-Q_2)/(Q_3-Q_1) не ограничен Высокая Данные с выбросами
MaxAbsScaler x/\max(|x|) [-1,1] Низкая Разреженные данные
PowerTransformer Бокс—Кокс / Йео—Джонсон не ограничен, приближается к нормальному Средняя Скошенные распределения
QuantileTransformer отображение по квантилям [0,1] или нормальное Высокая Сильно неоднородные, многомодальные признаки

Общий недостаток всех перечисленных методов — параметры преобразования (минимум, максимум, среднее, медиана и т. д.) должны вычисляться исключительно на обучающей выборке и затем применяться к валидационной и тестовой выборкам без пересчёта, иначе возникает утечка данных (data leakage).

Пример: прогнозирование оттока клиентов

Рассмотрим упрощённую задачу бинарной классификации — прогноз оттока клиентов телекоммуникационной компании — с помощью логистической регрессии. Используются два признака: количество месяцев обслуживания (tenure) и ежемесячный платёж (monthly charges, руб.).

Клиент tenure, мес. monthly charges, руб. Отток
A 2 1 800 1
B 34 950 0
C 58 2 400 0
D 4 3 100 1

До масштабирования диапазон tenure — [2, 58], диапазон monthly charges — [950, 3100]. При обучении логистической регрессии без предобработки градиентный спуск будет крайне медленно двигаться вдоль оси tenure, а L2-регуляризация станет несоразмерно штрафовать коэффициент при tenure, поскольку для компенсации малого масштаба этот коэффициент должен быть на порядок больше коэффициента при monthly charges.

После стандартизации (\mu_{tenure}=24{,}5, \sigma_{tenure}\approx23{,}0; \mu_{charges}=2062{,}5, \sigma_{charges}\approx811{,}0) значения принимают вид:

Клиент tenure' charges'
A -0,98 -0,32
B 0,41 -1,37
C 1,46 0,42
D -0,89 1,28

Теперь оба признака имеют сопоставимый масштаб, градиентный спуск сходится быстрее, а величина коэффициентов при регуляризации отражает реальный вклад признака в предсказание, а не его исходную единицу измерения. На практике преобразование выполняется методом fit_transform объекта StandardScaler на обучающей выборке и методом transform — на тестовой:

from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

model = LogisticRegression()
model.fit(X_train_scaled, y_train)

Практические рекомендации

  • Для алгоритмов, основанных на расстояниях (KNN, k-means, SVM с ядрами), а также для PCA — использовать стандартизацию (StandardScaler) в качестве метода по умолчанию.
  • Для нейронных сетей и данных с известным ограниченным диапазоном (например, пиксели изображений) — использовать min-max scaling (MinMaxScaler).
  • При наличии выбросов, которые нежелательно удалять из выборки, — использовать роба

стное масштабирование (RobustScaler).

  • Для сильно скошенных распределений (доходы, цены) перед стандартизацией целесообразно применить PowerTransformer, чтобы приблизить распределение к симметричному.
  • Для разреженных матриц (например, после TF-IDF векторизации) — использовать MaxAbsScaler, не нарушающий разреженность.
  • Для древовидных моделей (деревья решений, случайный лес, градиентный бустинг) масштабирование, как правило, не требуется.
  • Параметры масштабирования всегда обучаются только на обучающей выборке и затем применяются к валидационной и тестовой выборкам без повторного вычисления.
  • Перед применением L1- или L2-регуляризации признаки необходимо стандартизировать в обязательном порядке.

См. также

Литература

  • Hastie T., Tibshirani R., Friedman J. The Elements of Statistical Learning: Data Mining, Inference, and Prediction. — 2nd ed. — Springer, 2009.
  • Bishop C. M. Pattern Recognition and Machine Learning. — Springer, 2006.
  • Géron A. Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow. — 3rd ed. — O'Reilly Media, 2022.
  • Box G. E. P., Cox D. R. An Analysis of Transformations // Journal of the Royal Statistical Society, Series B. — 1964. — Vol. 26, No. 2. — P. 211—252.
  • Yeo I.-K., Johnson R. A. A New Family of Power Transformations to Improve Normality or Symmetry // Biometrika. — 2000. — Vol. 87, No. 4. — P. 954—959.
  • Документация scikit-learn: preprocessing — scikit-learn.org/stable/modules/preprocessing.html



Метрики качества в машинном обучении



Ты специалист в области машинного обучения, профессор в ведущем техническом университете и популяризатор науки. Напиши энциклопедическую статью для MachineLearning.ru на тему «Метрики качества в машинном обучении».

Целевая аудитория: мотивированные студенты, преподаватели и специалисты в AI/ML. Статья должна быть полезна новичку: дать понятные определения Accuracy, Precision, Recall, F1, ROC-AUC, объяснить, в каких задачах какую метрику использовать, с простыми примерами. Профессионалу статья должна дать математические формулы, объяснить компромиссы (precision/recall, sensitivity/specificity), связь с матрицей ошибок, использование в задачах с дисбалансом классов, многоклассовые обобщения (micro/macro/macro-weighted).

Обязательные разделы: 1. Введение: что такое метрика качества, зачем она нужна (кратко, 2 абзаца) 2. Матрица ошибок (Confusion Matrix): определение и структура для бинарной классификации 3. Метрики для бинарной классификации: Accuracy, Precision, Recall, Specificity, F1-мера — формулы и интерпретация 4. Компромисс Precision/Recall: объяснение на примере, почему нельзя оптимизировать обе одновременно 5. ROC-кривая и AUC-ROC: построение, интерпретация, связь с порогом классификации 6. PR-кривая и AUC-PR: когда использовать вместо ROC (сильный дисбаланс классов) 7. Многоклассовые обобщения: микро-, макро- и взвешенное усреднение, отличие 8. Метрики для регрессии: MSE, MAE, RMSE, R², MAPE — формулы и интерпретация 9. Метрики для ранжирования: NDCG, MAP, MRR — кратко 10. Выбор метрики под задачу: практические рекомендации 11. Пример: выбор метрики для медицинской диагностики редкого заболевания (дисбаланс классов, важность полноты) 12. См. также: внутренние ссылки на другие страницы (Матрица ошибок, Точность и полнота, F-мера, Классификационный порог, Дисбаланс классов, ROC-кривая) 13. Литература (реальные источники)

Важно: статья должна быть структурированной и наглядной. Добавь таблицы для формул и сравнения метрик.

Стиль академичный, ясный, без рекламных фраз и нейросетевых штампов. Формулы оформляй только через ..., выключные формулы через :: .... Термины оформляй как внутренние ссылки. В начале статьи добавь предупреждение:

Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 16:49, 10 июля 2026 (MSD)


Выдай только сырой вики-код статьи.



Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 16:49, 10 июля 2026 (MSD)


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

Введение

Метрика качества (англ. evaluation metric) — это функция, отображающая предсказания модели и истинные значения целевой переменной в числовую оценку, характеризующую степень соответствия модели решаемой задаче. В отличие от функции потерь, используемой на этапе обучения и обязанной быть дифференцируемой, метрика качества может быть произвольной вычислимой функцией, что позволяет точнее отражать бизнес-требования или клинические стандарты.

Корректный выбор метрики критически важен по двум причинам. Во-первых, метрика служит ориентиром при валидации и отборе моделей: модель, оптимальная по одной метрике, может оказаться неприемлемой по другой. Во-вторых, в условиях дисбаланса классов или асимметричной цены ошибок традиционные метрики вроде доли правильных ответов дают чрезмерно оптимистичную картину, маскируя неспособность модели распознавать миноритарный класс.

Матрица ошибок

Матрица ошибок (англ. confusion matrix) для задачи бинарной классификации представляет собой таблицу размером 2×2, строки которой соответствуют истинным классам, а столбцы — предсказанным. Приняты следующие обозначения:

Матрица ошибок бинарного классификатора
Предсказанный класс
Положительный (P) Отрицательный (N)
Истинный класс Положительный (P) TP
(True Positive)
FN
(False Negative)
Отрицательный (N) FP
(False Positive)
TN
(True Negative)

Здесь:

  • \text{TP} (True Positive) — число верно предсказанных положительных объектов;
  • \text{TN} (True Negative) — число верно предсказанных отрицательных объектов;
  • \text{FP} (False Positive) — число ошибочно предсказанных положительных объектов (ошибка I рода);
  • \text{FN} (False Negative) — число ошибочно предсказанных отрицательных объектов (ошибка II рода).

Сумма всех элементов равна общему числу наблюдений: N = \text{TP} + \text{TN} + \text{FP} + \text{FN}.

Метрики для бинарной классификации

На основе матрицы ошибок вычисляются производные показатели, каждый из которых отражает определённый аспект качества классификации.

Accuracy (доля правильных ответов)

\text{Accuracy} = \frac{\text{TP} + \text{TN}}{\text{TP} + \text{TN} + \text{FP} + \text{FN}}

Accuracy показывает общую долю верных предсказаний. Метрика интуитивно понятна, но непригодна при сильном дисбалансе классов. Если отрицательный класс составляет 99% выборки, константный классификатор, всегда предсказывающий отрицательный класс, достигнет Accuracy = 0.99, будучи абсолютно бесполезным для детекции положительного класса.

Precision (точность)

\text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}}

Precision измеряет долю истинно положительных объектов среди всех, кого модель отнесла к положительному классу. Высокая точность означает, что модель редко ошибается, называя объект положительным. Метрика критична в задачах, где цена ложноположительного срабатывания велика — например, при фильтрации спама, когда ложное отнесение легитимного письма к спаму нежелательно.

Recall (полнота)

\text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}}

Recall (также называемый Sensitivity или True Positive Rate) показывает, какую долю истинно положительных объектов модель сумела обнаружить. Метрика приоритетна в задачах, где пропуск положительного объекта недопустим — например, в скрининге онкологических заболеваний, когда ложноотрицательный диагноз стоит жизни.

Specificity (специфичность)

\text{Specificity} = \frac{\text{TN}}{\text{TN} + \text{FP}}

Specificity (True Negative Rate) — доля верно распознанных отрицательных объектов. Совместно с Recall образует пару, характеризующую способность модели разделять классы. В медицинской диагностике Specificity показывает, насколько хорошо тест исключает заболевание у здоровых пациентов.

F1-мера

F_1 = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}}

F1-мера — гармоническое среднее Precision и Recall. В отличие от арифметического, гармоническое среднее сильнее штрафует дисбаланс составляющих: если одна из метрик близка к нулю, F1 также будет близка к нулю. Это делает F1 удобной агрегированной метрикой, когда важен баланс между точностью и полнотой. Обобщением служит F_\beta-мера:

F_\beta = (1 + \beta^2) \cdot \frac{\text{Precision} \cdot \text{Recall}}{\beta^2 \cdot \text{Precision} + \text{Recall}}

Параметр \beta > 1 увеличивает вес Recall, \beta < 1 — вес Precision.

Сводная таблица метрик

Основные метрики бинарной классификации
Метрика Формула Когда использовать
Accuracy \frac{\text{TP} + \text{TN}}{N} Сбалансированные классы, равнозначные ошибки
Precision \frac{\text{TP}}{\text{TP} + \text{FP}} Высокая цена ложных срабатываний
Recall \frac{\text{TP}}{\text{TP} + \text{FN}} Высокая цена пропуска цели
Specificity \frac{\text{TN}}{\text{TN} + \text{FP}} Дополнение к Recall, анализ обеих ошибок
F1 2 \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}} Компромисс между Precision и Recall

Компромисс Precision/Recall

Precision и Recall связаны обратной зависимостью: увеличение одной метрики часто ведёт к снижению другой. Фундаментальная причина — классификационный порог: понижая порог, модель относит к положительному классу больше объектов, что увеличивает Recall (находим больше истинно положительных), но одновременно снижает Precision (растёт число ложных срабатываний). Повышение порога даёт обратный эффект.

Рассмотрим задачу детекции мошеннических транзакций. Если банк установит низкий порог и будет блокировать любые подозрительные операции, Recall окажется высоким (почти все мошеннические транзакции заблокированы), но Precision — низким (множество легитимных операций ложно помечены как мошеннические, что вызывает недовольство клиентов). Если же банк повысит порог, Precision возрастёт, но часть мошеннических операций пройдёт незамеченной (Recall снизится). Выбор рабочей точки на кривой Precision-Recall определяется бизнес-ограничениями и относительной стоимостью ошибок FP и FN.

ROC-кривая и AUC-ROC

ROC-кривая (Receiver Operating Characteristic) строится в координатах True Positive Rate (Recall) против False Positive Rate:

\text{TPR} = \frac{\text{TP}}{\text{TP} + \text{FN}}, \quad \text{FPR} = \frac{\text{FP}}{\text{TN} + \text{FP}}

Каждая точка кривой соответствует определённому порогу классификации. При варьировании порога от 0 до 1 точка (FPR, TPR) перемещается от (1,1) до (0,0). Идеальный классификатор проходит через точку (0,1). Диагональ \text{TPR} = \text{FPR} соответствует случайному гаданию.

AUC-ROC (Area Under the ROC Curve) — площадь под ROC-кривой, принимающая значения от 0 до 1. Значение 0.5 означает бесполезный классификатор, 1.0 — идеальное разделение классов. AUC-ROC обладает вероятностной интерпретацией: это вероятность того, что случайно выбранный положительный объект получит от модели более высокую оценку принадлежности к положительному классу, чем случайно выбранный отрицательный.

Достоинство AUC-ROC — независимость от порога и априорных вероятностей классов. Недостаток — нечувствительность к калибровке вероятностей и маскировка проблем при сильном дисбалансе, когда большая площадь достигается за счёт корректного ранжирования отрицательных примеров, а положительные тонут в массе FP.

PR-кривая и AUC-PR

PR-кривая (Precision-Recall curve) строится в координатах Precision против Recall. В отличие от ROC, PR-кривая не учитывает TN, что делает её чувствительной исключительно к качеству предсказаний положительного класса.

AUC-PR — площадь под PR-кривой. В условиях сильного дисбаланса (доля положительного класса < 5%) PR-кривая даёт более информативную картину, чем ROC. Причина в том, что FPR в знаменателе ROC-кривой доминируется огромным количеством TN, из-за чего даже значительный абсолютный рост FP слабо меняет FPR. Precision же непосредственно реагирует на каждый ложноположительный объект.

Сравнение ROC и PR кривых
Характеристика ROC PR
Оси TPR vs FPR Precision vs Recall
Учёт TN Да (через FPR) Нет
Чувствительность к дисбалансу Занижена Высокая
Рекомендуемое применение Сбалансированные классы Дисбаланс классов, фокус на положительном классе

Многоклассовые обобщения

Для задач многоклассовой классификации метрики Precision, Recall и F1 обобщаются путём усреднения по классам.

Пусть C — множество классов, P_c, R_c, F1_c — точность, полнота и F1-мера для класса c, вычисленные по схеме «один против всех» (класс c считается положительным, остальные — отрицательным), N_c — число истинных примеров класса c.

Micro-усреднение агрегирует элементы матрицы ошибок по всем классам перед вычислением метрики:

P_{\text{micro}} = \frac{\sum_{c} \text{TP}_c}{\sum_{c} (\text{TP}_c + \text{FP}_c)}, \quad R_{\text{micro}} = \frac{\sum_{c} \text{TP}_c}{\sum_{c} (\text{TP}_c + \text{FN}_c)}

Micro-усреднение даёт больший вес классам с большим числом примеров. В пределе micro-averaged Accuracy, Precision и Recall численно совпадают.

Macro-усреднение вычисляет метрику независимо для каждого класса, затем берёт арифметическое среднее:

P_{\text{macro}} = \frac{1}{|C|} \sum_{c} P_c, \quad R_{\text{macro}} = \frac{1}{|C|} \sum_{c} R_c

Macro-усреднение придаёт равный вес всем классам, что делает его чувствительным к качеству классификации миноритарных классов, но и уязвимым к выбросам в классах с малым числом примеров.

Weighted-усреднение берёт средневзвешенное по числу истинных примеров класса:

P_{\text{weighted}} = \frac{\sum_{c} N_c \cdot P_c}{\sum_{c} N_c}, \quad R_{\text{weighted}} = \frac{\sum_{c} N_c \cdot R_c}{\sum_{c} N_c}

Weighted-усреднение занимает промежуточную позицию: учитывает размер классов, но чувствительнее к миноритарным классам, чем micro-усреднение.

Метрики для регрессии

В задачах регрессии, где целевая переменная непрерывна, используются метрики, основанные на отклонениях предсказаний \hat{y}_i от истинных значений y_i.

Основные метрики регрессии
Метрика Формула Особенности
MSE
(Mean Squared Error)
\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 Сильно штрафует большие ошибки (квадратичная зависимость). Дифференцируема, используется как функция потерь. Чувствительна к выбросам.
RMSE
(Root Mean Squared Error)
\sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2} Интерпретируется в единицах целевой переменной. Сохраняет чувствительность к выбросам.
MAE
(Mean Absolute Error)
\frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| Менее чувствительна к выбросам, чем MSE. Даёт линейный штраф. Не дифференцируема в нуле.
MAPE
(Mean Absolute Percentage Error)
\frac{100\%}{n} \sum_{i=1}^{n} \left| \frac{y_i - \hat{y}_i}{y_i} \right| Выражается в процентах, интуитивно понятна бизнес-пользователям. Неприменима при y_i = 0. Асимметрична: штраф за занижение и завышение различен.
R^2
(Коэффициент детерминации)
1 - \frac{\sum_i (y_i - \hat{y}_i)^2}{\sum_i (y_i - \bar{y})^2} Показывает долю дисперсии целевой переменной, объяснённой моделью. Значение 1 — идеальное предсказание, 0 — модель не лучше константы (среднего). Может быть отрицательным.

Выбор метрики в регрессии диктуется распределением ошибок и бизнес-требованиями. При наличии выбросов предпочтительнее MAE; если большие ошибки критичны — MSE или RMSE. R^2 удобен для сравнительного анализа моделей на одном наборе данных, но не отражает абсолютную величину ошибки.

Метрики для ранжирования

В задачах ранжирования оценивается качество упорядочивания объектов согласно их релевантности запросу.

MRR (Mean Reciprocal Rank) — среднее обратное значение позиции первого релевантного документа:

\text{MRR} = \frac{1}{|Q|} \sum_{q \in Q} \frac{1}{\text{rank}_q}

где \text{rank}_q — позиция первого релевантного документа для запроса q. Метрика проста и интерпретируема, но учитывает только первый релевантный результат.

MAP (Mean Average Precision) — среднее по запросам значение средней точности:

\text{MAP} = \frac{1}{|Q|} \sum_{q \in Q} \frac{1}{R_q} \sum_{k=1}^{n_q} P_q(k) \cdot [\text{rel}_q(k) = 1]

где P_q(k) — Precision на глубине k, \text{rel}_q(k) — индикатор релевантности документа на позиции k. MAP учитывает все релевантные документы и их позиции.

NDCG (Normalized Discounted Cumulative Gain) — нормализованный накопленный выигрыш с дисконтированием:

\text{DCG}_q@k = \sum_{i=1}^{k} \frac{2^{\text{rel}_i} - 1}{\log_2(i + 1)}
\text{NDCG}_q@k = \frac{\text{DCG}_q@k}{\text{IDCG}_q@k}

где \text{rel}_i — оценка релевантности (возможно, многозначная), IDCG — DCG идеального ранжирования. NDCG учитывает как многоградационную релевантность, так и позицию документа, придавая больший вес верхним позициям списка.

Выбор метрики под задачу

Выбор метрики определяется следующими факторами:

  1. Тип задачи. Классификация, регрессия или ранжирование задают семейство метрик.
  2. Сбалансированность классов. При дисбалансе избегают Accuracy, предпочитая F1, AUC-PR или macro-F1.
  3. Цена ошибок. При асимметричной стоимости ошибок ориентируются на Recall (высокая цена FN) или Precision (высокая цена FP).
  4. Требования к интерпретируемости. Для коммуникации с заказчиком часто выбирают метрики в абсолютных величинах (RMSE в рублях, Recall в процентах обнаруженных дефектов).
  5. Наличие нескольких классов. Выбирают micro- (важна общая эффективность) или macro-усреднение (важен каждый класс).

Рекомендуется использовать не единственную метрику, а батарею взаимодополняющих показателей для всесторонней оценки модели.

Пример: медицинская диагностика редкого заболевания

Рассмотрим задачу скрининга заболевания с распространённостью 0.1% (один случай на тысячу пациентов). Разрабатывается классификатор, предсказывающий наличие болезни по лабораторным показателям.

Характеристики задачи:

  • Сильный дисбаланс классов (1:999).
  • Критически высокая цена ложноотрицательного результата: пропуск заболевания может привести к летальному исходу.
  • Ложноположительный результат также нежелателен (назначается ненужное дорогостоящее обследование), но его цена ниже.

Анализ метрик:

  • Accuracy неприемлема. Модель, всегда предсказывающая «здоров», имеет Accuracy = 0.999, но не обнаруживает ни одного больного.
  • Precision важна для оценки нагрузки на систему здравоохранения: низкая точность означает, что большинство направленных на доп. обследование окажутся здоровы.
  • Recall — ключевая метрика. Необходимо максимизировать долю обнаруженных больных, возможно, ценой снижения Precision.
  • F1 или F2-мера\beta = 2) дают сбалансированную оценку с повышенным приоритетом полноты.
  • ROC-AUC может дать завышенно оптимистичную картину из-за доминирования TN. Предпочтительнее использовать AUC-PR, которая непосредственно оценивает способность модели находить редкий положительный класс.

Рекомендуемый набор метрик для данной задачи: Recall (основная), Precision (контролируемая), AUC-PR (интегральная оценка ранжирования), F2-мера (агрегированная).

См. также


Литература

  1. Powers D. M. W. Evaluation: From Precision, Recall and F-Measure to ROC, Informedness, Markedness & Correlation // Journal of Machine Learning Technologies. — 2011. — Vol. 2, no. 1. — P. 37–63.
  2. Davis J., Goadrich M. The Relationship Between Precision-Recall and ROC Curves // Proceedings of the 23rd International Conference on Machine Learning (ICML). — 2006. — P. 233–240.
  3. Fawcett T. An Introduction to ROC Analysis // Pattern Recognition Letters. — 2006. — Vol. 27, no. 8. — P. 861–874.
  4. Saito T., Rehmsmeier M. The Precision-Recall Plot Is More Informative than the ROC Plot When Evaluating Binary Classifiers on Imbalanced Datasets // PLOS ONE. — 2015. — Vol. 10, no. 3. — e0118432.
  5. Järvelin K., Kekäläinen J. Cumulated Gain-Based Evaluation of IR Techniques // ACM Transactions on Information Systems. — 2002. — Vol. 20, no. 4. — P. 422–446.
  6. Груздев А. В. Прогнозное моделирование в IBM SPSS Statistics, R и Python. Метод деревьев решений и случайный лес. — М.: ДМК Пресс, 2018. — Гл. 4: Оценка качества моделей.



ТО ЧТО ИЛЬЯ СКИНУЛ

```

Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 15:56, 10 июля 2026 (MSD)


Нормализация признаков и стандартизация признаков (обобщённо — масштабирование признаков, англ. feature scaling) — методы предварительной обработки данных, приводящие числовые признаки к сопоставимому диапазону значений или к сопоставимой статистической форме распределения. Масштабирование не меняет информативность признака в статистическом смысле (взаимную связь с целевой переменной), но существенно влияет на поведение многих алгоритмов машинного обучения — от скорости сходимости градиентных методов до корректности работы регуляризации и методов, основанных на расстояниях между объектами.

В литературе термины употребляются не вполне единообразно. В узком смысле нормализацией называют приведение признака к фиксированному диапазону, чаще всего [0,1] (min-max scaling), а стандартизацией — приведение к нулевому среднему и единичной дисперсии (z-score). В широком смысле оба термина нередко используются как синонимы для обозначения любого масштабирования признаков; в данной статье эти понятия разграничиваются в узком, более строгом смысле. Наряду с ними рассматривается робастное масштабирование и ряд специализированных преобразований (MaxAbsScaler, PowerTransformer, QuantileTransformer), реализованных, в частности, в модуле sklearn.preprocessing библиотеки scikit-learn.

Постановка задачи

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

Клиент Возраст, лет Доход, руб./мес.
Иванов 25 45 000
Петров 45 47 000

Возраст изменяется в диапазоне единиц-десятков, доход — в диапазоне десятков тысяч. Если вычислить евклидово расстояние между объектами без предварительного масштабирования:

d = \sqrt{(45-25)^2 + (47000-45000)^2} = \sqrt{400 + 4\,000\,000} \approx 2000{,}1

признак «возраст» практически не вносит вклада в итоговое расстояние: его слагаемое (400) на четыре порядка меньше слагаемого дохода (4 000 000). Для любого метода, опирающегося на расстояния между объектами — метода ближайших соседей, метода опорных векторов, кластеризации методом k-средних, метода главных компонент — это означает, что признак с большим численным диапазоном будет доминировать в решении независимо от его действительной значимости для задачи.

Аналогичная проблема возникает при обучении моделей градиентными методами. Функция потерь как функция параметров модели образует в пространстве весов некоторую поверхность; при сильно различающихся масштабах признаков линии уровня этой поверхности превращаются в вытянутые эллипсы с большим числом обусловленности гессиана. Градиентный спуск на такой поверхности движется зигзагообразно, и для достижения минимума требуется существенно больше итераций либо очень малый шаг обучения. После масштабирования признаков линии уровня приближаются по форме к окружностям, направление антиградиента указывает более точно на минимум, и сходимость ускоряется — этот эффект хорошо задокументирован для линейной и логистической регрессии, а также для нейронных сетей.

Нормализация (min-max scaling)

Min-max scaling линейно преобразует признак так, чтобы его значения попали в заданный диапазон, чаще всего [0,1]:

x' = \frac{x - x_{min}}{x_{max} - x_{min}}

где x_{min} и x_{max} — минимальное и максимальное значен ия признака на обучающей выборке. Для произвольного целевого диапазона [a,b] формула обобщается:

x' = a + \frac{(x - x_{min})(b-a)}{x_{max} - x_{min}}

Метод сохраняет форму исходного распределения (все относительные расстояния между значениями пропорционально сжимаются или растягиваются), что удобно, когда диапазон признака имеет содержательный смысл — например, для признаков, ограниченных по своей природе (доля, вероятность, пиксельная интенсивность 0–255), а также при подготовке входов для нейронных сетей с сигмоидными или иными ограниченными функциями активации.

Существенный недостаток — высокая чувствительность к выбросам, поскольку x_{min} и x_{max} определяются единственными экстремальными наблюдениями. Продемонстрируем это на выборке значений дохода (тыс. руб.): 30, 45, 50, 55, 60, 65, 400, где последнее значение — аномально высокий доход.

Здесь x_{min}=30, x_{max}=400, диапазон равен 370. После min-max масштабирования:

Исходное значение После Min-Max
30 0,000
45 0,041
50 0,054
55 0,068
60 0,081
65 0,095
400 (выброс) 1,000

Единственный выброс растянул диапазон настолько, что все «типичные» значения оказались сжаты в узкий интервал [0;\,0{,}095] и стали практически неразличимы для алгоритма. Это ключевое ограничение метода: перед его применением рекомендуется отдельно проверить данные на наличие выбросов (см. выбросы).

В scikit-learn метод реализован классом MinMaxScaler:

<syntaxhighlight lang="python"> from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler(feature_range=(0, 1)) X_scaled = scaler.fit_transform(X) </syntaxhighlight>

Стандартизация (z-score)

Стандартизация (z-score normalization) центрирует признак относительно среднего и масштабирует его по стандартному отклонению:

x' = \frac{x - \mu}{\sigma}

где

\mu = \frac{1}{n}\sum_{i=1}^{n} x_i, \qquad \sigma = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(x_i - \mu)^2}

После преобразования признак имеет нулевое среднее и единичную дисперсию: \mathbb{E}[x']=0, \mathrm{Var}[x']=1. Величина x' показывает, на сколько стандартных отклонений исходное значение отстоит от среднего, что делает интерпретацию наглядной при приближённо нормальном распределении признака: согласно правилу «трёх сигм» около 68 % значений попадают в интервал [-1,1], около 95 % — в [-2,2]. При этом сама по себе стандартизация не делает распределение нормальным — она лишь центрирует и масштабирует его, сохраняя исходную форму (асимметрию, эксцесс).

Продолжим пример с доходом. Для выборки {30, 45, 50, 55, 60, 65, 400} среднее \mu \approx 100{,}71, стандартное отклонение \sigma \approx 122{,}63. После стандартизации:

Исходное значение После Z-score
30 −0,577
45 −0,454
50 −0,414
55 −0,373
60 −0,332
65 −0,291
400 (выброс) 2,441

По сравнению с min-max масштабированием типичные значения распределены несколько шире (интервал [-0{,}58;\,-0{,}29] против [0;\,0{,}095]), однако среднее и стандартное отклонение по-прежнему вычисляются с учётом выброса, а значит, остаются им искажены.

Стандартизация — метод по умолчанию для линейных и логистических моделей с регуляризацией, метода опорных векторов, метода главных компонент и линейного дискриминантного анализа, а также для большинства архитектур нейронных сетей. В отличие от min-max scaling, результат не ограничен фиксированным диапазоном, что не создаёт проблем при появлении на этапе применения модели значений, выходящих за пределы диапазона обучающей выборки.

<syntaxhighlight lang="python"> from sklearn.preprocessing import StandardScaler

scaler = StandardSca ler() X_scaled = scaler.fit_transform(X) </syntaxhighlight>

Стоит отметить, что StandardScaler в scikit-learn по умолчанию вычисляет смещённую (population) дисперсию, то есть делит сумму квадратов отклонений на n, а не на n-1.

Робастное масштабирование

Робастное масштабирование (robust scaling) использует вместо среднего и стандартного отклонения статистики, устойчивые к выбросам, — медиану и межквартильный размах (IQR):

x' = \frac{x - Q_2}{Q_3 - Q_1}

где Q_2 — медиана (второй квартиль), Q_1 и Q_3 — первый и третий квартили, а разность Q_3-Q_1 — межквартильный размах (IQR), охватывающий центральные 50 % наблюдений.

Медиана и квартили — порядковые статистики, устойчивые к экстремальным значениям: смещение одного выброса в область бесконечности практически не меняет положение медианы или границ IQR, поскольку эти величины определяются не самими значениями, а их рангом в отсортированной выборке.

Завершим сквозной пример с доходом. Для выборки {30, 45, 50, 55, 60, 65, 400}: медиана Q_2=55, Q_1=45, Q_3=65, IQR =20. Сведём все три метода в одну таблицу:

Исходное значение Min-Max Z-score Robust
30 0,000 −0,577 −1,25
45 0,041 −0,454 −0,50
50 0,054 −0,414 −0,25
55 0,068 −0,373 0,00
60 0,081 −0,332 0,25
65 0,095 −0,291 0,50
400 (выброс) 1,000 2,441 17,25

Различие хорошо видно: под min-max и z-score основная масса «нормальных» значений сжата в узкий интервал из-за влияния выброса на x_{max}, \mu и \sigma. Робастное масштабирование, напротив, не изменило относительное расположение типичных значений (интервал [-1{,}25;\,0{,}5] пропорционален исходным различиям), а выброс получил большое по модулю, но не искажающее остальные данные значение — 17,25, что само по себе может служить сигналом об аномалии. Ценой этой устойчивости является то, что робастное масштабирование не гарантирует единичной дисперсии преобразованного признака и хуже подходит там, где важна именно эта статистическая интерпретация.

<syntaxhighlight lang="python"> from sklearn.preprocessing import RobustScaler

scaler = RobustScaler(quantile_range=(25.0, 75.0)) X_scaled = scaler.fit_transform(X) </syntaxhighlight>

Другие методы

Помимо трёх базовых подходов, в scikit-learn реализован ряд специализированных преобразований.

MaxAbsScaler делит значения признака на максимальный модуль:

x' = \frac{x}{|x_{max}|}

Результат попадает в диапазон [-1,1]. Важное свойство — преобразование не сдвигает данные (не вычитает среднее или минимум), поэтому нулевые значения остаются нулевыми. Это делает MaxAbsScaler предпочтительным для разреженных матриц (например, TF-IDF представлений текста), где сохранение разреженности критично для памяти и скорости вычислений.

PowerTransformer — семейство нелинейных степенных преобразований, приближающих распределение признака к нормальному и стабилизирующих дисперсию. Преобразование Бокса — Кокса (Box-Cox) определено только для строго положительных значений:

x^{(\lambda)} = \begin{cases} \dfrac{x^{\lambda} - 1}{\lambda}, & \lambda \neq 0 \\[4pt] \ln x, & \lambda = 0 \end{cases}

Параметр \lambda подбирается по данным (обычно методом максимального правдоподобия). Преобразование Йео — Джонсона (Yeo-Johnson) — обобщение, допускающее нулевые и отрицательные значения:

x^{(\lambda)} = \begin{cases} \dfrac{(x+1)^{\lambda} - 1}{\lambda}, & \lambda \neq 0,\ x \geq 0 \\[4pt] \ln(x+1), & \lambda = 0,\ x \geq 0 \\[4pt] -\dfrac{(-x+1)^{2-\lambda} - 1}{2-\lambda}, & \lambda \neq 2,\ x < 0 \\[4pt] -\ln(-x+1), & \lambda = 2,\ x < 0 \end{cases}

Оба преобразования полезны для сильно асимметричных признаков (доход, число визитов, время ожидания), особенно для моделей, чувствительных к форме распределения.

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

<syntaxhighlight lang="python"> from sklearn.preprocessing import MaxAbsScaler, PowerTransformer, QuantileTransformer

pt = PowerTransformer(method="yeo-johnson") X_pt = pt.fit_transform(X)

qt = QuantileTransformer(output_distribution="normal") X_qt = qt.fit_transform(X) </syntaxhighlight>

Влияние на алгоритмы

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

Чувствительность алгоритмов машинного обучения к масштабу признаков
Алгоритм Чувствительность Обоснование
Линейная / логистическая регрессия с регуляризацией Высокая Регуляризационный штраф зависит от масштаба коэффициентов, который, в свою очередь, зависит от масштаба признаков
Метод опорных векторов (SVM) Высокая Построение разделяющей гиперплоскости и ядровые функции опираются на евклидово расстояние между объектами
Метод ближайших соседей (KNN) Высокая Классификация непосредственно основана на расстояниях между объектами в признаковом пространстве
Метод главных компонент (PCA) Высокая Направления максимальной дисперсии определяются абсолютным масштабом признаков, а не их относительной значимостью
Кластеризация методом k-средних Высокая Формирование кластеров основано на расстояниях до центроидов
Нейронные сети (градиентное обучение) Высокая (влияет на скорость и устойчивость сходимости) Разномасштабные входы приводят к вытянутому рельефу функции потерь и неравномерным градиентам по слоям
Деревья решений Низкая Разбиения строятся по пороговым значениям одного признака независимо от масштаба остальных
Случайный лес Низкая Ансамбль деревьев решений, наследует их инвариантность к монотонным преобразованиям признаков
Градиентный бустинг (XGBoost, LightGBM, CatBoost) Низкая Также опирается на пороговые разбиения по отдельным признакам
Наивный байесовский классификатор Низкая / умеренная Оценивает распределение каждого признака отдельно; масштаб не влияет на итоговую разделяющую способность

Общая закономерность: методы, основанные на пороговых разбиениях одного признака (деревья и их ансамбли), инвариантны к любому монотонному преобразованию масштаба, тогда как методы, использующие расстояния, скалярные произведения или градиентную оптимизацию, чувствительны к нему напрямую.

Влияние на регуляризацию

L1- и L2-регуляризация штрафуют величину коэффициентов модели. Для линейной регрессии с L2-штрафом (гребневая регрессия) функционал имеет вид:

L(\beta) = \sum_{i=1}^{n}\left(y_i - \beta_0 - \sum_{j=1}^{p}\beta_j x_{ij}\right)^2 + \lambda \sum_{j=1}^{p}\beta_j^2

а для L1-регуляризации (лассо) — соответственно с штрафом \lambda\sum_{j}|\beta_j|. В обоих случаях величина штрафа зависит исключительно от численного значения коэффициента \beta_j, а не от того, насколько признак x_j в действительности значим для предсказания.

Проблема в том, что масштаб коэффициента обратно пропорционален масштабу признака: если признак измерен в рублях с диапазоном значений порядка 10^510^6, соответствующий ему коэффициент естественным образом окажется очень малым (порядка 10^{-5}–< tex>10^{-6}</tex>) просто для того, чтобы вклад \beta_j x_j в предсказание оставался разумной величины. Признак же, измеренный в единицах (например, число визитов в месяц), потребует коэффициента на несколько порядков больше. Регуляризация в этом случае штрафует признаки неравномерно — не пропорционально их реальной значимости, а обратно пропорционально их естественному масштабу: крупномасштабные признаки получают заниженный (и потому слабо штрафуемый) коэффициент, тогда как мелкомасштабные — завышенный и, соответственно, сильнее подавляемый. Особенно чувствительно к этому L1-регуляризация: поскольку она способна обнулять коэффициенты полностью, отбор признаков при несогласованных масштабах оказывается смещённым в пользу признаков с большим численным диапазоном, а не в пользу признаков с наибольшей предсказательной силой.

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

Сравнение методов

Метод Формула Диапазон результата Устойчивость к выбросам Основные плюсы Основные минусы
Min-Max x'=\frac{x-x_{min}}{x_{max}-x_{min}} [0,1] (настраиваемый) Низкая Фиксированный, интерпретируемый диапазон; сохраняет форму распределения Сильно искажается единичными выбросами; новые данные вне обучающего диапазона выходят за границы
Z-score x'=\frac{x-\mu}{\sigma} Теоретически не ограничен (практически [-3,3]) Умеренная Стандарт для линейных моделей, SVM, PCA, нейросетей; интерпретация в единицах стандартного отклонения Среднее и дисперсия чувствительны к выбросам
Robust x'=\frac{x-Q_2}{Q_3-Q_1} Не ограничен Высокая Устойчив к выбросам и асимметрии распределения Не даёт единичной дисперсии; менее привычная интерпретация
MaxAbs x'=\frac{x}{|x_{max}|} [-1,1] Низкая Сохраняет разреженность данных (нули остаются нулями) Чувствителен к выбросам, как и Min-Max
PowerTransformer нелинейное степенное преобразование Приближается к нормальному распределению Умеренная Снижает асимметрию, стабилизирует дисперсию Box-Cox требует строго положительных значений; интерпретация затруднена
QuantileTransformer преобразование по эмпирической функции распределения [0,1] либо нормальное Высокая Полностью устраняет влияние выбросов и асимметрии Нелинейно; может исказить взаимосвязи между признаками, риск переобучения на малых выборках

Пример: подготовка данных для логистической регрессии в задаче прогнозирования оттока клиентов

Рассмотрим упрощённый набор данных телекоммуникационной компании для задачи прогнозирования оттока (churn) с двумя признаками — стажем обслуживания (в месяцах) и ежемесячным платежом (в рублях):

Клиент Стаж, мес. Платёж, руб./мес. Отток
1 2 3 500 1
2 34 1 200 0
3 58 4 200 0
4 4 900 1
5 45 5 600 0

Стаж имеет среднее \mu \approx 28{,}6 и стандартное отклонение \sigma \approx 22{,}25; платёж — среднее \mu \approx 3080 и стандартное отклонение \sigma \approx 1792{,}65. После стандартизации по формуле x' = (x-\mu)/\sigma:

Клиент Стаж (станд.) Платёж (станд.) Отток
1 −1,196 0,234 1
2 0,243 −1,049 0
3 1,321 0,625 0
4 −1,106 −1,216 1
5 0,737 1,406 0

До масштабирования диапазон платежа (900–5600) на два порядка превышает диапазон стажа (2–58). При обучении логистической регрессии градиентными методами это означа ет, что частная производная функции потерь по коэффициенту при платеже на несколько порядков отличается по величине от производной по коэффициенту при стаже, и без индивидуальной настройки шага обучения для каждого признака сходимость существенно замедляется. Кроме того, при использовании L2- или L1-регуляризации коэффициент при платеже, обученный на исходных данных, будет иметь порядок 10^{-4}, а коэффициент при стаже — порядок 10^{-2}10^{-1}; сравнение таких коэффициентов напрямую ничего не говорит об относительной значимости признаков. После стандартизации оба признака приведены к общему масштабу (нулевое среднее, единичная дисперсия), их вклад в предсказание и в регуляризационный штраф сопоставим, а абсолютные значения обученных коэффициентов допустимо интерпретировать как меру относительной важности признака при фиксированной силе регуляризации.

<syntaxhighlight lang="python"> from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.pipeline import Pipeline

pipeline = Pipeline([

   ("scaler", StandardScaler()),
   ("model", LogisticRegression(penalty="l2", C=1.0))

]) pipeline.fit(X_train, y_train) </syntaxhighlight>

Существен методический момент: параметры масштабирования (\mu, \sigma, x_{min}, x_{max}, Q_1, Q_2, Q_3) должны вычисляться исключительно на обучающей выборке методом fit и затем применяться к валидационной и тестовой выборкам методом transform, без повторного вычисления статистик на них. Нарушение этого правила приводит к утечке информации из тестовой выборки в процесс обучения (data leakage) и завышенной оценке качества модели.

Практические рекомендации

  • Для линейных и логистических моделей с регуляризацией — стандартизация (z-score); при наличии выраженных выбросов — робастное масштабирование.
  • Для метода опорных векторов, метода ближайших соседей, k-средних и метода главных компонент — стандартизация практически обязательна, поскольку эти методы напрямую оперируют расстояниями или дисперсией.
  • Для деревьев решений, случайного леса и градиентного бустинга — масштабирование, как правило, не требуется, поскольку эти алгоритмы инвариантны к монотонным преобразованиям отдельных признаков.
  • Для нейронных сетей — стандартизация или min-max scaling к диапазону [0,1] либо [-1,1], в зависимости от функций активации; для сверточных сетей, работающих с изображениями, min-max к [0,1] — стандартная практика.
  • При наличии выбросов, которые не являются ошибками измерения и должны быть сохранены в выборке, — робастное масштабирование или QuantileTransformer вместо min-max и z-score.
  • Для разреженных данных (например, TF-IDF, one-hot представления с большим числом признаков) — MaxAbsScaler, не разрушающий разреженность, в отличие от методов, включающих центрирование.
  • При сильной асимметрии распределения признака (доход, время ожидания, количество событий) — PowerTransformer перед стандартизацией.
  • Параметры масштабирования всегда вычисляются на обучающей выборке и фиксируются для последующего применения к новым данным; включение шага масштабирования в единый конвейер (sklearn.pipeline.Pipeline) снижает риск утечки данных при кросс-валидации.

См. также

Литература

  • Hastie T., Tibshirani R., Friedman J. The Elements of Statistical Learning: Data Mining, Inference, and Prediction. — 2nd ed. — Springer, 2009.
  • Bishop C. M. Pattern Recognition and Machine Learning. — Springer, 2006.
  • Géron A. Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow. — 3rd ed. — O'Reilly, 2022.
  • Zheng A., Casari A. Feature Engineering for Machine Learning.

Microsoft Azure Web App - Error 404 pipeline.fit — O'Reilly, 2018.

  • Box G. E. P., Cox D. R. An Analysis of Transformations // Journal of the Royal Statistical Society, Series B. — 1964. — Vol. 26, No. 2.
  • Yeo I.-K., Johnson R. A. A New Family of Power Transformations to Improve Normality or Symmetry // Biometrika. — 2000. — Vol. 87, No. 4.
  • Ioffe S., Szegedy C. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift // Proceedings of the 32nd International Conference on Machine Learning (ICML). — 2015.
  • Scikit-learn developers. Preprocessing data // Scikit-learn User Guide. — scikit-learn.org/stable/modules/preprocessing.html

```






Аугментация данных



Ты специалист в области машинного обучения, профессор в ведущем техническом университете и популяризатор науки. Напиши энциклопедическую статью для MachineLearning.ru на тему «Аугментация данных».

Целевая аудитория: мотивированные студенты, преподаватели и специалисты в AI/ML. Статья должна быть полезна новичку: дать понятное определение, объяснить, зачем увеличивать выборку, показать на простых примерах (поворот картинки, замена слова в тексте). Профессионалу статья должна дать систематизацию методов для разных типов данных, объяснить связь с регуляризацией и обобщающей способностью, описать современные подходы (AutoAugment, RandAugment, MixUp, CutMix, back-translation).

Обязательные разделы: 1. Введение: определение аугментации, её цели (борьба с переобучением, повышение робастности, увеличение выборки) 2. Мотивация: почему аугментация работает — связь с регуляризацией и увеличением эффективного размера выборки 3. Аугментация изображений: геометрические преобразования (повороты, отражения, сдвиги, масштабирование), цветовые преобразования (яркость, контраст, насыщенность), добавление шума 4. Продвинутые методы для изображений: MixUp, CutMix, Random Erasing, AutoAugment, RandAugment 5. Аугментация текстов: синонимичные замены, back-translation, случайные вставки/удаления, EDA (Easy Data Augmentation) 6. Аугментация табличных данных: добавление шума, SMOTE для дисбаланса классов, генерация синтетических примеров 7. Аугментация аудио и временных рядов: растяжение времени, сдвиг по высоте, добавление фонового шума, маскирование 8. Динамическая vs статическая аугментация: применение на лету (во время обучения) vs предварительная генерация 9. Ограничения и риски: когда аугментация может навредить, проблема "нереалистичных" примеров 10. Библиотеки и инструменты: Albumentations, imgaug, torchvision.transforms, nlpaug, audiomentations 11. См. также: внутренние ссылки на другие страницы (Регуляризация, Переобучение, Дисбаланс классов, Компьютерное зрение, Обработка естественного языка) 12. Литература (реальные источники)

Важно: статья должна быть практичной, с примерами кода (псевдокод или ссылки на реальные библиотеки). Добавь таблицу сравнения методов для разных типов данных.

Стиль академичный, ясный, без рекламных фраз и нейросетевых штампов. Формулы оформляй только через ..., выключные формулы через :: .... Термины оформляй как внутренние ссылки. В начале статьи добавь предупреждение:

Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 16:49, 10 июля 2026 (MSD)


Выдай только сырой вики-код статьи.




Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 7:49, 11 июля 2026 (MSD)


Аугментация данных (data augmentation) — совокупность методов искусственного расширения обучающей выборки путём применения к имеющимся объектам преобразований, сохраняющих или контролируемо изменяющих их метку. Аугментация используется при обучении моделей машинного обучения для борьбы с переобучением, повышения устойчивости моделей к вариативности реальных данных и увеличения эффективного объёма обучающей выборки без затрат на разметку новых примеров.

Введение

Пусть задана обучающая выборка X = \{(x_i, y_i)\}_{i=1}^n, где x_i — объект, y_i — его метка (ответ). Аугментацией называется применение к объекту x_i некоторого преобразования t из заданного семейства \mathcal{T}, порождающего новый объект t(x_i), который либо сохраняет исходную метку y_i (label-preserving augmentation), либо порождает вместе с ней новую, скорректированную метку — как в методах MixUp и CutMix.

Формально расширенная выборка имеет вид:

 X_{aug} = \{(t(x_i), y_i) \mid (x_i, y_i) \in X,\ t \in \mathcal{T}\}

Аугментация решает три взаимосвязанные задачи.

  1. Борьба с переобучением. Современные модели, особенно глубокие нейронные сети, обладают числом параметров, зачастую превышающим число обучающих примеров. Без ограничения сложности такая модель способна запомнить обучающую выборку, потеряв обобщающую способность. Аугментация уменьшает разрыв между эмпирическим и ожидаемым риском, действуя как форма регуляризации.
  2. Повышение робастности. Модель, обученная на аугментированных данных, лучше переносит вариативность реальных условий эксплуатации — изменение освещения, ракурса, шум в канале связи, опечатки в тексте, — поскольку встречала аналогичные искажения при обучении.
  3. Увеличение эффективного размера выборки. Сбор и разметка новых данных часто дороги или невозможны (редкие заболевания, аварийные ситуации, малоресурсные языки). Аугментация позволяет получить дополнительные обучающие примеры почти бесплатно, хотя и не привносит принципиально новой информации об истинном распределении данных.

Аугментацию данных следует отличать от смежных понятий. В отличие от синтеза данных (data synthesis), где новые объекты порождаются генеративной моделью без опоры на конкретный исходный пример, аугментация всегда отталкивается от реального объекта выборки. В отличие от простого передискретизации (resampling, например дублирования примеров редкого класса), аугментация создаёт новые, отличающиеся от исходных объекты.

Мотивация

С теоретической точки зрения аугментацию удобно рассматривать в рамках концепции минимизации риска в окрестности (Vicinal Risk Minimization, VRM), предложенной Шапелем и соавторами. Классическая минимизация эмпирического риска ищет функцию f, минимизирующую

 R_{emp}(f) = \frac{1}{n}\sum_{i=1}^n L(f(x_i), y_i)

Однако эмпирическое распределение, сосредоточенное в точках выборки, — крайне грубое приближение истинного распределения данных. Идея VRM состоит в замене этого распределения на распределение, «размазанное» по окрестности (vicinity) каждой точки:

 R_{vic}(f) = \frac{1}{n}\sum_{i=1}^n \mathbb{E}_{(\tilde{x}, \tilde{y}) \sim v(x_i, y_i)} \left[ L(f(\tilde{x}), \tilde{y}) \right]

где v(x_i, y_i) — распределение вероятностей на объектах, «похожих» на (x_i, y_i). Аугментация — это практический способ построения выборки из v(x_i, y_i): каждое случайное преобразование t \sim \mathcal{T} задаёт один сэмпл из окрестности исходной точки.

Такая интерпретация напрямую связывает аугментацию с регуляризацией:

  • Как и L_1/L_2-регуляризация, аугментация ограничивает эффективную сложность модели — но не через штраф на веса, а через расширение множества примеров, на которых модель обязана давать согласованный ответ.
  • Аугментация вносит в обучение априорное знание о том, какие преобразования объекта не должны менять его метку (инвариантности). Поворот фотографии кошки на 10° не должен превращать её в собаку — это знание нельзя вывести из самих пикселей, оно привносится извне, подобно тому, как архитектурные ограничения (например, свёрточные слои) кодируют априорное знание о трансляционной инвариантности.
  • Эмпирически модели, обученные с аугментацией, демонстрируют меньший разрыв между качеством на обучающей и тестовой выборках при сопоставимом или лучшем качестве на тесте — то есть меньшее переобучение.

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

Аугментация изображений

Изображения — исторически первая и наиболее развитая область применения аугментации, начиная с классической работы Крижевского, Суцкевера и Хинтона по сети AlexNet (2012), где применялись случайные сдвиги, отражения и изменение интенсивности каналов RGB.

Геометрические преобразования

  • Повороты (rotation) — поворот изображения на случайный угол \theta:
 \begin{pmatrix} x' \\ y' \end{pmatrix} = \begin{pmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix}

Небольшие углы (обычно ±10–30°) сохраняют метку класса; углы, кратные 90°, применимы почти всегда, за исключением задач, где ориентация значима (распознавание дорожных знаков, текста).

  • Отражения (flip) — горизонтальное отражение почти универсально применимо; вертикальное — только если ориентация объекта не несёт смысла.
  • Сдвиги (translation) — перенос изображения по осям с заполнением освободившейся области (padding, reflection, constant fill).
  • Масштабирование и обрезка (scale, random crop) — изменение масштаба объекта и вырезание случайного фрагмента, эмулирующее вариативность расстояния до камеры.
  • Аффинные и перспективные искажения — сдвиг (shear), изменение перспективы, эластичные деформации (elastic distortions), впервые систематически использованные Симаром и соавторами для распознавания рукописных цифр.

Цветовые (фотометрические) преобразования

  • Изменение яркости (brightness), контраста (contrast), насыщенности (saturation) и оттенка (hue) — как правило, реализуется случайным изменением соответствующих каналов в цветовом пространстве HSV.
  • PCA color augmentation («fancy PCA») — добавление шума вдоль главных компонент распределения цветов по каналам RGB, впервые предложенное в работе по AlexNet.
  • Перевод в оттенки серого, постеризация, инверсия цвета — используются реже, в задачах, устойчивых к потере цветовой информации.

Добавление шума

Наложение гауссовского шума, шума типа «соль и перец» (salt-and-pepper), размытия (Gaussian blur, motion blur) эмулирует артефакты реальных камер и каналов передачи и повышает устойчивость модели к низкому качеству входных изображений.

Пример на псевдокоде (библиотека Albumentations):

import albumentations as A
 
transform = A.Compose([
    A.Rotate(limit=25, p=0.5),
    A.HorizontalFlip(p=0.5),
    A.RandomBrightnessContrast(brightness_limit=0.2, contrast_limit=0.2, p=0.5),
    A.GaussNoise(var_limit=(10.0, 50.0), p=0.3),
])
 
augmented = transform(image=image)["image"]

Продвинутые методы для изображений

MixUp

Метод MixUp (Чжан и соавторы, 2018) отходит от идеи преобразования одного объекта и вместо этого строит новый объект как линейную комбинацию двух случайно выбранных примеров обучающей выборки вместе с их метками:

 \tilde{x} = \lambda x_i + (1-\lambda) x_j, \qquad \tilde{y} = \lambda y_i + (1-\lambda) y_j

где коэффициент смешивания \lambda \sim \mathrm{Beta}(\alpha, \alpha), а параметр \alpha обычно берётся в диапазоне 0.1–0.4. MixUp — прямая практическая реализация VRM: окрестность точки задаётся не локальным искажением, а отрезком, соединяющим её с другими точками выборки. Метод сглаживает решающую поверхность классификатора и снижает его чувствительность к состязательным возмущениям.

CutMix

CutMix (Юн и соавторы, 2019) комбинирует идею MixUp с идеей вырезания области (см. Random Erasing ниже): прямоугольная область одного изображения заменяется соответствующей областью другого, а метка смешивается пропорционально площади вставленного фрагмента:

 \tilde{x} = M \odot x_i + (1-M) \odot x_j, \qquad \tilde{y} = \lambda y_i + (1-\lambda) y_j

где M — бинарная маска, вырезающая прямоугольную область, \lambda — доля площади, приходящаяся на x_i. По сравнению с MixUp, CutMix не создаёт визуально неестественных «полупрозрачных» изображений и, по данным авторов, даёт дополнительный выигрыш в задачах локализации объектов, поскольку заставляет модель использовать всю информативную область изображения, а не только наиболее заметный фрагмент.

Random Erasing и Cutout

Методы Random Erasing (Чжун и соавторы) и близкий к нему Cutout (Де Врис и Тейлор) случайным образом закрашивают прямоугольную область изображения однородным цветом или шумом, метка при этом не меняется. Эффект аналогичен dropout, но применяется на уровне входных данных: модель вынуждена не полагаться на какой-то один локальный признак и распределять внимание по всему объекту.

AutoAugment

AutoAugment (Кубук и соавторы, 2019) переформулирует выбор политики аугментации как задачу обучения с подкреплением: контроллер (рекуррентная сеть) ищет оптимальную последовательность операций (тип преобразования, вероятность применения и магнитуда), максимизирующую качество модели-«ребёнка» на отложенной выборке. Найденные политики для CIFAR-10, SVHN и ImageNet оказались переносимыми между задачами, но сам поиск чрезвычайно затратен вычислительно (тысячи GPU-часов).

RandAugment

RandAugment (Кубук и соавторы, 2020) — упрощение AutoAugment, устраняющее необходимость дорогостоящего поиска политики. Вместо обучаемого контроллера RandAugment случайным образом выбирает N операций из фиксированного набора и применяет их с единой глобальной магнитудой M, которые подбираются простым перебором по сетке на небольшом числе значений. При сопоставимом качестве RandAugment требует на порядки меньше вычислений, чем AutoAugment, что сделало его стандартом де-факто в современных конвейерах обучения свёрточных сетей и трансформеров зрения.

import torchvision.transforms as T
 
transform = T.Compose([
    T.RandAugment(num_ops=2, magnitude=9),
    T.ToTensor(),
])

Аугментация текстов

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

EDA (Easy Data Augmentation)

Вэй и Цзоу (2019) предложили набор из четырёх простых операций, применяемых к случайно выбранным словам предложения:

  1. Синонимичная замена (synonym replacement) — замена слова на синоним из тезауруса (например, WordNet).
  2. Случайная вставка (random insertion) — вставка синонима случайного слова предложения в случайную позицию.
  3. Случайное удаление (random deletion) — удаление слова с заданной вероятностью.
  4. Случайная перестановка (random swap) — обмен местами двух случайно выбранных слов.

Несмотря на простоту, EDA даёт заметный прирост качества классификации текста на малых выборках при незначительных вычислительных затратах.

Обратный перевод (back-translation)

Метод, предложенный Зеннрихом и соавторами (2016) первоначально для машинного перевода, заключается в переводе текста на промежуточный язык и обратно (например, русский → английский → русский). Результат сохраняет смысл исходного текста, но может отличаться лексически и синтаксически, что даёт естественную и разнообразную аугментацию:

text_en = translate(text_ru, src="ru", tgt="en")
text_ru_aug = translate(text_en, src="en", tgt="ru")

Back-translation особенно ценен тем, что не требует внешнего тезауруса и хорошо работает даже для сложных, многозначных конструкций, где простая замена слов ведёт к потере смысла.

Другие методы

  • Контекстные замены на основе языковых моделей — маскирование слова и его восстановление предобученной языковой моделью (например, BERT), что даёт более естественные, согласованные с контекстом замены по сравнению со словарными синонимами.
  • Перефразирование (paraphrasing) генеративными моделями.
  • Добавление шума на уровне символов — опечатки, замена раскладки клавиатуры, случайные вставки/удаления символов — полезно для повышения устойчивости моделей к «грязному» пользовательскому вводу.

Аугментация табличных данных

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

Добавление шума

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

 \tilde{x}^{(k)} = x^{(k)} + \varepsilon, \qquad \varepsilon \sim \mathcal{N}(0, \sigma^2)

Величина \sigma подбирается пропорционально дисперсии признака, чтобы не разрушить полезный сигнал.

SMOTE для дисбаланса классов

SMOTE (Synthetic Minority Over-sampling Technique, Чавла и соавторы, 2002) — стандартный метод борьбы с дисбалансом классов. Для объекта x_i миноритарного класса находятся его k ближайших соседей того же класса, один из них x_{zi} выбирается случайно, и новый синтетический объект строится как точка на отрезке между ними:

 x_{new} = x_i + \delta \cdot (x_{zi} - x_i), \qquad \delta \sim U(0, 1)

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

from imblearn.over_sampling import SMOTE
 
smote = SMOTE(k_neighbors=5, random_state=42)
X_resampled, y_resampled = smote.fit_resample(X_train, y_train)

Существует ряд модификаций: Borderline-SMOTE (генерация только вблизи границы классов), ADASYN (адаптивное распределение количества синтетических примеров в зависимости от локальной сложности классификации), SMOTE-NC (для смешанных категориальных и числовых признаков).

Генеративные подходы

Для более сложных зависимостей между признаками применяют генеративные модели — вариационные автокодировщики и генеративно-состязательные сети, обученные аппроксимировать совместное распределение признаков и способные генерировать новые правдоподобные строки таблицы (например, CTGAN в библиотеке SDV). Такие методы дороже в применении и требуют отдельного этапа обучения генератора, но лучше сохраняют многомерные зависимости между признаками, чем покомпонентный шум.

Аугментация аудио и временных рядов

  • Растяжение по времени (time stretching) — изменение длительности сигнала без изменения высоты тона.
  • Сдвиг по высоте тона (pitch shifting) — изменение высоты тона без изменения темпа.
  • Добавление фонового шума — наложение записанного шума окружения (уличный шум, шум толпы) с заданным отношением сигнал/шум.
  • Временной сдвиг (time shift) — циклический сдвиг сигнала во времени.
  • SpecAugment (Парк и соавторы, 2019) — вместо преобразования исходного сигнала во временной области метод оперирует спектрограммой: случайно маскируются полосы по оси времени (time masking) и по оси частот (frequency masking), а также применяется деформация оси времени (time warping). SpecAugment стал стандартом в задачах распознавания речи, обходясь без необходимости отдельно моделировать акустический шум.
  • Для временных рядов общего вида применяются: window warping (локальное растяжение/сжатие отдельных участков ряда), перестановка сегментов, magnitude warping (плавное изменение амплитуды).
from audiomentations import Compose, AddGaussianNoise, TimeStretch, PitchShift
 
augment = Compose([
    AddGaussianNoise(min_amplitude=0.001, max_amplitude=0.015, p=0.5),
    TimeStretch(min_rate=0.8, max_rate=1.25, p=0.5),
    PitchShift(min_semitones=-4, max_semitones=4, p=0.5),
])
 
augmented_samples = augment(samples=samples, sample_rate=16000)

Сравнение методов по типам данных

Аугментация данных: сводная таблица по типам данных
Тип данных Базовые методы Продвинутые методы Основные библиотеки Типичные задачи
Изображения Повороты, отражения, сдвиги, масштабирование, изменение яркости/контраста, шум MixUp, CutMix, Random Erasing, AutoAugment, RandAugment Albumentations, imgaug, torchvision.transforms Классификация, детекция, сегментация
Текст Синонимичные замены, случайные вставка/удаление/перестановка слов (EDA) Обратный перевод, контекстные замены на основе языковых моделей nlpaug, TextAttack Классификация текста, NER, машинный перевод
Табличные данные Гауссовский шум, джиттеринг числовых признаков SMOTE и его модификации, генерация через GAN/VAE imbalanced-learn, SDV Кредитный скоринг, медицинская диагностика, детекция мошенничества
Аудио и временные ряды Растяжение времени, сдвиг высоты тона, фоновый шум SpecAugment, window warping, magnitude warping audiomentations, librosa, torchaudio.transforms Распознавание речи, анализ сенсорных сигналов

Динамическая vs статическая аугментация

По моменту применения различают два режима.

  • Статическая аугментация (offline augmentation) — новые объекты генерируются заранее и сохраняются на диск вместе с исходной выборкой. Преимущество — предсказуемая и воспроизводимая скорость обучения, отсутствие накладных расходов на преобразование во время обучения. Недостаток — конечное, фиксированное число вариаций каждого примера и повышенный расход дискового пространства.
  • Динамическая аугментация (online / on-the-fly augmentation) — преобразование применяется к каждому примеру заново на каждой эпохе обучения, обычно в процессе загрузки батча. Модель практически никогда не видит два эпохи подряд один и тот же объект в неизменном виде, что даёт эффективно неограниченное число вариаций и лучше действует как регуляризатор. Плата — дополнительная вычислительная нагрузка на CPU/GPU во время обучения, которая при плохой организации конвейера данных может стать узким местом, особенно для затратных преобразований (back-translation, генеративные модели).

На практике для изображений и аудио почти всегда используется динамическая аугментация (стандартный загрузчик данных в PyTorch или tf.data в TensorFlow применяют преобразования «на лету» в параллельных потоках), тогда как дорогостоящие методы — back-translation, генерация синтетических табличных строк GAN-моделью — чаще выполняются статически, один раз, поскольку их вычислительная стоимость несопоставима со стоимостью одного шага обучения.

Ограничения и риски

Аугментация — не универсально полезный приём, и её бездумное применение способно ухудшить качество модели.

  • Нарушение семантики задачи. Преобразование, кажущееся безобидным для одной задачи, может разрушать критичную информацию для другой. Вертикальное отражение допустимо для классификации пейзажей, но недопустимо для распознавания рукописных цифр (перевёрнутая «6» становится похожей на «9»). Изменение цвета недопустимо в задачах, где цвет — диагностический признак.
  • «Нереалистичные» примеры. Чрезмерно сильная или неудачно подобранная магнитуда преобразования порождает объекты, не встречающиеся в реальном распределении данных. Обучение на таких примерах не улучшает, а искажает представление модели о задаче, тратя ёмкость модели на нерелевантные вариации.
  • Смещение статистики распределения. Некоторые методы (например, агрессивный MixUp) смещают эффективное распределение обучающей выборки относительно тестового распределения, что может ухудшить калибровку итоговых вероятностей модели.
  • Ложное чувство защищённости от переобучения. Аугментация снижает, но не устраняет переобучение полностью и не заменяет собой недостаток данных для принципиально новых классов или редких сценариев, отсутствующих в обучающей выборке ни в каком виде.
  • Вычислительная стоимость. Продвинутые методы (AutoAugment, back-translation, генеративные модели для табличных данных) требуют значительных дополнительных вычислительных ресурсов, что не всегда оправдано выигрышем в качестве.
  • Разрушение зависимостей между признаками. Для табличных данных особенно легко случайно нарушить содержательные зависимости между признаками, если шум добавляется к каждому признаку независимо, — стоит проверять, что аугментированные объекты остаются правдоподобными с точки зрения предметной области.

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

Библиотеки и инструменты

  • Albumentations — библиотека для аугментации изображений, оптимизированная по скорости (реализация на OpenCV), поддерживает согласованное преобразование изображений вместе с масками сегментации, ограничивающими рамками и ключевыми точками, что важно для задач детекции и сегментации.
  • imgaug — одна из первых широко используемых библиотек аугментации изображений в Python, гибкий API для построения сложных цепочек преобразований.
  • torchvision.transforms — модуль аугментации изображений, встроенный в PyTorch, включает готовые реализации RandAugment, AutoAugment, MixUp и CutMix.
  • nlpaug — библиотека текстовой аугментации на уровне символов, слов и предложений, включая контекстные замены на основе языковых моделей и интеграцию с сервисами перевода для back-translation.
  • audiomentations — аналог Albumentations для аудиосигналов, реализует растяжение времени, сдвиг тона, добавление шума и другие преобразования.
  • imbalanced-learn — реализация SMOTE и его модификаций (Borderline-SMOTE, ADASYN, SMOTE-NC) для табличных данных, совместима с API scikit-learn.

См. также

Литература

  1. Krizhevsky A., Sutskever I., Hinton G. E. ImageNet Classification with Deep Convolutional Neural Networks // Advances in Neural Information Processing Systems (NIPS). — 2012. — Vol. 25.
  2. Simard P. Y., Steinkraus D., Platt J. C. Best Practices for Convolutional Neural Networks Applied to Visual Document Analysis // Proceedings of ICDAR. — 2003.
  3. Chawla N. V., Bowyer K. W., Hall L. O., Kegelmeyer W. P. SMOTE: Synthetic Minority Over-sampling Technique // Journal of Artificial Intelligence Research. — 2002. — Vol. 16. — P. 321–357.
  4. Chapelle O., Weston J., Bottou L., Vapnik V. Vicinal Risk Minimization // Advances in Neural Information Processing Systems (NeurIPS). — 2000.
  5. Zhang H., Cisse M., Dauphin Y. N., Lopez-Paz D. mixup: Beyond Empirical Risk Minimization // International Conference on Learning Representations (ICLR). — 2018.
  6. Yun S., Han D., Oh S. J., Chun S., Choe J., Yoo Y. CutMix: Regularization Strategy to Train Strong Classifiers with Localizable Features // Proceedings of ICCV. — 2019.
  7. DeVries T., Taylor G. W. Improved Regularization of Convolutional Neural Networks with Cutout // arXiv preprint. — 2017.
  8. Zhong Z., Zheng L., Kang G., Li S., Yang Y. Random Erasing Data Augmentation // Proceedings of the AAAI Conference on Artificial Intelligence. — 2020.
  9. Cubuk E. D., Zoph B., Mane D., Vasudevan V., Le Q. V. AutoAugment: Learning Augmentation Policies from Data // Proceedings of CVPR. — 2019.
  10. Cubuk E. D., Zoph B., Shlens J., Le Q. V. RandAugment: Practical Automated Data Augmentation with a Reduced Search Space // Advances in Neural Information Processing Systems (NeurIPS). — 2020.
  11. Wei J., Zou K. EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks // Proceedings of EMNLP-IJCNLP. — 2019.
  12. Sennrich R., Haddow B., Birch A. Improving Neural Machine Translation Models with Monolingual Data // Proceedings of the 54th Annual Meeting of the ACL. — 2016.
  13. Park D. S., Chan W., Zhang Y., Chiu C.-C., Zoph B., Cubuk E. D., Le Q. V. SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition // Proceedings of Interspeech. — 2019.
  14. Shorten C., Khoshgoftaar T. M. A Survey on Image Data Augmentation for Deep Learning // Journal of Big Data. — 2019. — Vol. 6, No. 60.
  15. Goodfellow I., Bengio Y., Courville A. Deep Learning. — MIT Press, 2016.







Дообучение нейронных сетей (Fine-Tuning)



Ты специалист в области машинного обучения, профессор в ведущем техническом университете и популяризатор науки. Напиши энциклопедическую статью для MachineLearning.ru на тему «Дообучение нейронных сетей».

Целевая аудитория: мотивированные студенты, преподаватели и специалисты в AI/ML. Статья должна быть полезна новичку: дать понятное определение, объяснить идею "предобучение + дообучение" (pre-train + fine-tune) на пальчиковом уровне, показать, чем это отличается от обучения с нуля. Профессионалу статья должна дать описание стратегий (полное дообучение, дообучение последних слоёв, параметро-эффективные методы), объяснить выбор скорости обучения и регуляризации.

Обязательные разделы: 1. Введение: определение дообучения, его роль в трансферном обучении, почему это стало стандартом для глубоких нейронных сетей 2. Постановка задачи: предобученная модель на большом датасете (ImageNet, Wikipedia), адаптация к новой задаче 3. Стратегии дообучения: полное дообучение (fine-tune всех слоёв), дообучение только последних слоёв (feature extraction), дообучение с заморозкой части слоёв 4. Выбор скорости обучения: меньшая скорость для предобученных слоёв, большая — для новых; дифференциальные скорости обучения (discriminative learning rates) 5. Регуляризация при дообучении: ранняя остановка, меньший вес регуляризации, использование меньшего размера батча 6. Связь с объёмом данных: когда дообучение оправдано, а когда лучше обучать с нуля (маленькие датасеты, специфические данные) 7. Параметро-эффективные методы дообучения: адаптеры (adapters), префиксное обучение (prefix-tuning), LoRA (Low-Rank Adaptation), их преимущества и недостатки 8. Примеры из практики: дообучение BERT для задач NLP, дообучение ResNet для классификации медицинских изображений, дообучение CLIP для мультимодальных задач 9. Дообучение с подкреплением из обратной связи человека (RLHF): особый случай дообучения для больших языковых моделей 10. Ограничения и риски: катастрофическое забывание (catastrophic forgetting), переобучение на малом датасете, вычислительные затраты 11. См. также: внутренние ссылки на другие страницы (Трансферное обучение, Предобучение, Большая языковая модель, Трансформер, Дистилляция моделей, Адаптация низкого ранга) 12. Литература (реальные источники)

Важно: статья должна быть практичной, с конкретными рекомендациями по выбору стратегии. Добавь таблицу сравнения методов дообучения (полное vs частичное vs параметро-эффективное).

Стиль академичный, ясный, без рекламных фраз и нейросетевых штампов. Формулы оформляй только через ..., выключные формулы через :: .... Термины оформляй как внутренние ссылки. В начале статьи добавь предупреждение:

Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 16:49, 10 июля 2026 (MSD)


Выдай только сырой вики-код статьи.



Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 11:49, 11 июля 2026 (MSD)


Дообучение нейронных сетей (fine-tuning) — процесс адаптации параметров предварительно обученной модели к новой, обычно более узкой задаче путём продолжения обучения на данных этой задачи. Дообучение является ключевым этапом парадигмы трансферного обучения и на сегодняшний день представляет собой стандартный способ применения глубоких нейронных сетей к прикладным задачам — вместо обучения архитектуры с нуля.

Введение

Схема «предобучение + дообучение» стала доминирующей практикой в глубоком обучении по простой причине: обучение большой модели с нуля требует огромных объёмов размеченных данных и вычислительных ресурсов, которых часто нет в распоряжении конкретной прикладной задачи. Вместо этого модель сначала обучают на большом, как правило, общедоступном наборе данных (ImageNet для изображений, Wikipedia и Common Crawl для текстов), где она усваивает общие закономерности предметной области — контуры и текстуры для изображений, синтаксис и семантику для языка. Затем эта модель, уже обладающая содержательными внутренними представлениями, дообучается на существенно меньшем наборе данных, специфичном для целевой задачи.

Такой подход имеет два принципиальных преимущества по сравнению с обучением с нуля. Во-первых, он резко сокращает требуемый объём размеченных данных для целевой задачи: модель начинает не со случайной инициализации весов, а с параметров, уже кодирующих полезные закономерности. Во-вторых, он сокращает вычислительные затраты и время обучения, поскольку большая часть «тяжёлой» работы по извлечению общих признаков уже выполнена на этапе предобучения.

Дообучение стало практически повсеместным стандартом с распространением трансформерных архитектур и больших языковых моделей: модели типа BERT, GPT, ResNet, CLIP выпускаются как общедоступные предобученные чекпоинты, а подавляющее большинство прикладных систем строится путём их дообучения, а не обучения аналогичной по размеру архитектуры заново.

Постановка задачи

Пусть имеется модель с параметрами \theta_0, обученная на большом исходном наборе данных \mathcal{D}_{src} для решения некоторой исходной задачи (например, классификации на 1000 классов ImageNet или предсказания следующего токена на корпусе текстов). Требуется адаптировать эту модель к целевой задаче с набором данных \mathcal{D}_{tgt}, который, как правило, существенно меньше исходного и может иметь другое распределение признаков, другое число классов или вовсе другой тип разметки.

Формально дообучение сводится к продолжению оптимизации параметров, инициализированных значением \theta_0, на функции потерь целевой задачи:

\theta^{*} = \arg\min_{\theta} \; \mathcal{L}_{tgt}(\theta), \quad \theta_{init} = \theta_0

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

Стратегии дообучения

Выбор конкретной стратегии дообучения определяется объёмом целевых данных, степенью их близости к исходному распределению и доступными вычислительными ресурсами.

Полное дообучение (full fine-tuning) — обновлению градиентным спуском подвергаются все параметры модели, включая самые ранние слои. Даёт наибольшую гибкость адаптации и, при достаточном объёме целевых данных, как правило, наилучшее итоговое качество. Требует, однако, хранения градиентов и состояний оптимизатора для всех параметров модели, что для современных моделей с миллиардами параметров может быть неподъёмно с точки зрения памяти.

Дообучение только последних слоёв (feature extraction, linear probing) — все слои, кроме последних (обычно — только классификационная «голова»), замораживаются: их веса не изменяются, через них лишь выполняется прямой проход. Обучению подвергается небольшое число параметров новой головы. Такой подход рассматривает предобученную сеть как фиксированный экстрактор признаков. Он существенно дешевле по вычислениям и памяти, но ограничен в качестве, если целевая задача существенно отличается от исходной по распределению данных.

Дообучение с частичной заморозкой — промежуточный вариант: замораживаются ранние слои сети (как правило, отвечающие за наиболее общие, низкоуровневые признаки — границы и текстуры в изображениях, базовые синтаксические закономерности в тексте), а более поздние слои, ближе к выходу, дообучаются вместе с новой головой. Постепенная разморозка слоёв (gradual unfreezing), начиная с последних и постепенно продвигаясь к более ранним по мере обучения, — практика, предложенная в методе ULMFiT (Howard & Ruder, 2018) и до сих пор используемая как эвристика для стабилизации дообучения.

Выбор между этими стратегиями напрямую связан с объёмом доступных данных целевой задачи и подробнее рассматривается в разделе о связи дообучения с объёмом данных.

Выбор скорости обучения

Скорость обучения (learning rate) — один из наиболее чувствительных гиперпараметров при дообучении. Слишком большая скорость способна быстро разрушить полезные представления, накопленные на этапе предобучения, — это явление иногда называют «забыванием» уже на первых шагах дообучения. Общая рекомендация — использовать существенно меньшую скорость обучения, чем при обучении с нуля: типичные значения при дообучении трансформеров лежат в диапазоне 10^{-5}10^{-4}, тогда как обучение с нуля часто ведётся со скоростями порядка 10^{-3}.

Естественное развитие этой идеи — дифференциальные скорости обучения (discriminative learning rates), предложенные в том же ULMFiT: разным слоям сети назначаются разные скорости обучения, при этом более ранним, более «общим» слоям соответствует меньшая скорость, а более поздним, специфичным для задачи слоям (включая новую голову) — большая. Если пронумеровать слои от входа к выходу индексом l = 1, \dots, L, типичная схема задаёт скорость обучения слоя l как

\eta_l = \eta_L \cdot \xi^{\,L-l}

где \eta_L — скорость обучения последнего слоя, а \xi < 1 (типично около 0.9–0.95) — коэффициент затухания скорости при движении к более ранним слоям.

Дополнительно почти всегда используется разогрев скорости обучения (learning rate warmup) — постепенное увеличение скорости от малого значения до целевого в течение первых итераций дообучения, что снижает риск резкого разрушения предобученных представлений на старте, когда статистики оптимизатора ещё не накоплены, а также последующее плавное затухание скорости (linear или cosine decay) до конца обучения.

Регуляризация при дообучении

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

  • Ранняя остановка (early stopping) — обучение прерывается при первом ухудшении метрики на валидационном наборе, а не по достижении фиксированного числа эпох, что особенно важно при малых целевых наборах данных, где переобучение наступает быстро.
  • Уменьшение веса регуляризации — коэффициент weight decay и сила dropout, оптимальные для предобучения на большом наборе, зачастую избыточны для дообучения; их принято уменьшать, поскольку модель уже находится в разумной области пространства параметров и не нуждается в столь сильном сдерживании.
  • Меньший размер батча — при малых целевых наборах данных использование меньшего батча увеличивает число шагов оптимизации за эпоху и вносит дополнительный стохастический шум в градиенты, что эмпирически способствует лучшей генерализации и снижает риск резкого переобучения на немногочисленных примерах.
  • Регуляризация через близость к исходным весам — отдельный класс методов (например, L2-SP) добавляет к функции потерь штраф за отклонение текущих параметров от исходных предобученных значений \theta_0, явно ограничивая степень «дрейфа» модели от исходного решения.

Связь с объёмом данных

Решение о выборе стратегии дообучения и о том, оправдано ли дообучение вообще, определяется в первую очередь соотношением объёма целевых данных и степенью их сходства с данными, на которых проводилось предобучение. Удобно рассматривать четыре характерных случая:

  • Много данных, высокое сходство с исходным распределением — предпочтительно полное дообучение: данных достаточно, чтобы безопасно адаптировать все слои, а близость распределений снижает риск катастрофического забывания.
  • Много данных, низкое сходство — полное дообучение также оправдано, а в отдельных случаях объём данных может быть достаточен и для обучения с нуля, хотя дообучение обычно всё равно даёт выигрыш по скорости сходимости.
  • Мало данных, высокое сходство — рекомендуется дообучение только последних слоёв (feature extraction) либо частичная заморозка: близость распределений позволяет полагаться на предобученные признаки без риска, а малый объём данных делает полное дообучение опасным с точки зрения переобучения.
  • Мало данных, низкое сходство — наиболее сложный случай: полное дообучение рискует переобучиться на малом наборе, а заморозка ранних слоёв может оказаться неоптимальной, поскольку предобученные признаки плохо соответствуют новой предметной области. На практике здесь часто применяют частичную разморозку средних слоёв, сильную аугментацию данных и параметро-эффективные методы адаптации.

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

Параметро-эффективные методы дообучения

С ростом размеров моделей — в первую очередь больших языковых моделей с миллиардами параметров — полное дообучение становится дорогостоящим не только по вычислениям, но и по памяти, поскольку требует хранения градиентов и состояний оптимизатора для каждого параметра. Это привело к развитию параметро-эффективных методов дообучения (parameter-efficient fine-tuning, PEFT), обновляющих лишь малую долю параметров модели или добавляющих небольшое число новых, при этом сохраняя основные веса замороженными.

Адаптеры (adapters, Houlsby et al., 2019) — небольшие обучаемые модули (обычно двухслойные MLP с узким «бутылочным горлышком»), вставляемые внутрь каждого слоя предобученной сети, как правило, после блока внимания и после полносвязного блока трансформера. При дообучении обновляются только веса адаптеров, основная сеть остаётся замороженной. Недостаток — дополнительная задержка на этапе инференса, так как адаптеры увеличивают глубину вычислительного графа.

Префиксное обучение (prefix-tuning, Li & Liang, 2021) и близкий к нему метод обучаемых промптов (prompt tuning) добавляют небольшое число обучаемых векторов («виртуальных токенов») к входу или к ключам и значениям механизма внимания на каждом слое, оставляя все исходные веса модели неизменными. Обучению подвергаются только эти добавленные векторы, что делает метод крайне экономным по памяти, хотя часто уступающим по качеству адаптерам и LoRA при сопоставимом числе обучаемых параметров.

LoRA (Low-Rank Adaptation, Hu et al., 2021) — один из наиболее распространённых на сегодняшний день методов PEFT для больших моделей, в частности для адаптации низкого ранга. Идея состоит в том, что изменение весовой матрицы слоя \Delta W, необходимое для адаптации к целевой задаче, представляется в виде произведения двух матриц низкого ранга:

W = W_0 + \Delta W = W_0 + BA, \qquad B \in \mathbb{R}^{d \times r}, \; A \in \mathbb{R}^{r \times k}, \; r \ll \min(d,k)

где W_0 — исходная, замороженная матрица весов, а обучению подвергаются только матрицы A и B существенно меньшей размерности, задаваемой рангом r (типичные значения — от 4 до 64). Это резко сокращает число обучаемых параметров (зачастую на два-три порядка по сравнению с полным дообучением) без дополнительной задержки на инференсе, поскольку после обучения матрицу BA можно один раз сложить с W_0, полностью устранив дополнительные вычисления.

Сравнение параметро-эффективных методов между собой и с полным дообучением — в таблице ниже.

Метод Доля обучаемых параметров Задержка на инференсе Типичное качество Особенности
Полное дообучение 100% Без изменений Максимальное (при достаточных данных) Требует наибольшей памяти под градиенты и оптимизатор
Дообучение последних слоёв < 1% Без изменений Ниже при сильном расхождении задач Минимальные вычислительные затраты
Адаптеры 1–5% Небольшое увеличение Близко к полному дообучению Модульность, лёгкость переключения между задачами
Prefix/Prompt-tuning < 1% Небольшое увеличение (за счёт длины последовательности) Уступает адаптерам и LoRA на сложных задачах Наиболее компактен по числу параметров
LoRA 0.1–1% Без изменений после слияния весов Сопоставимо с полным дообучением на многих задачах Наиболее распространён для больших языковых моделей

Примеры из практики

Дообучение BERT для задач NLP. Предобученная на корпусах Wikipedia и BookCorpus модель BERT (Devlin et al., 2019) дообучается на конкретной задаче — классификации тональности текста, извлечении именованных сущностей, ответах на вопросы — путём добавления небольшой линейной головы поверх выходного представления специального токена [CLS] или токенов последовательности и полного дообучения всей модели на размеченном наборе целевой задачи, обычно за 2–4 эпохи с малой скоростью обучения порядка 2\cdot10^{-5}.

Дообучение ResNet для классификации медицинских изображений. Свёрточная сеть, предобученная на ImageNet, дообучается на существенно меньшем и специфичном наборе медицинских снимков (рентгеновские снимки, гистологические срезы). Из-за заметного расхождения распределений (естественные фотографии против медицинских изображений) и, как правило, ограниченного объёма размеченных данных типична стратегия частичной заморозки: ранние свёрточные слои, кодирующие общие низкоуровневые признаки (границы, текстуры), замораживаются, поздние слои и классификационная голова дообучаются, часто в сочетании с сильной аугментацией данных.

Дообучение CLIP для мультимодальных задач. Предобученная модель CLIP дообучается для узкоспециализированных задач сопоставления изображений и текста — например, для доменов с нетипичной для веб-данных лексикой (медицинские изображения с диагностическими описаниями, спутниковые снимки с географическими подписями). Ввиду масштаба модели и её мультимодальной природы для CLIP особенно часто применяются параметро-эффективные методы, в частности LoRA, накладываемые на энкодеры изображения и текста.

Дообучение с подкреплением из обратной связи человека (RLHF)

Особый и отдельно выделяемый случай дообучения — обучение с подкреплением из обратной связи человека (Reinforcement Learning from Human Feedback, RLHF), применяемое при доводке больших языковых моделей после этапа предобучения на предсказание следующего токена. Классическая схема RLHF (Ouyang et al., 2022, метод InstructGPT) состоит из трёх последовательных этапов:

  1. Дообучение с учителем (supervised fine-tuning, SFT) — модель дообучается на наборе демонстраций «инструкция — качественный ответ», подготовленных людьми-разметчиками, что задаёт базовый формат следования инструкциям.
  2. Обучение модели вознаграждения (reward model) — отдельная модель обучается предсказывать предпочтения людей: разметчики сравнивают пары ответов модели на одну инструкцию, и модель вознаграждения обучается присваивать более высокую оценку предпочитаемому ответу.
  3. Оптимизация политики — исходная дообученная на этапе SFT модель далее дообучается алгоритмом обучения с подкреплением (в оригинальной работе — PPO) так, чтобы максимизировать оценку, выдаваемую моделью вознаграждения, при этом штрафуется чрезмерное отклонение от политики SFT-этапа (обычно через KL-дивергенцию), что предотвращает вырождение в ответы, эксплуатирующие слабости модели вознаграждения.

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

Ограничения и риски

  • Катастрофическое забывание (catastrophic forgetting) — при дообучении, особенно полном и с высокой скоростью обучения, модель может утратить полезные знания, накопленные на этапе предобучения, если целевая задача существенно уже или отличается по распределению от исходной; это особенно критично, когда от модели впоследствии ожидается сохранение широких, «общих» способностей наравне со специализацией.
  • Переобучение на малом целевом наборе — при малом объёме данных целевой задачи и высокой ёмкости модели риск переобучения существенно выше, чем на этапе предобучения; отсюда потребность в усиленной регуляризации, ранней остановке и, зачастую, в параметро-эффективных методах, ограничивающих число степеней свободы.
  • Вычислительные затраты — полное дообучение крупных моделей требует значительных объёмов видеопамяти для хранения градиентов и состояний оптимизатора по всем параметрам, что при современных масштабах моделей становится узким местом и мотивирует использование параметро-эффективных методов.
  • Чувствительность к гиперпараметрам — качество дообучения существенно зависит от выбора скорости обучения, длительности разогрева, стратегии заморозки слоёв; неудачный выбор способен либо разрушить предобученные представления, либо не дать модели адаптироваться к целевой задаче в достаточной мере.
  • Утрата калибровки и смещение распределения ответов — в частности при RLHF отмечается риск чрезмерной оптимизации под модель вознаграждения (reward hacking), приводящей к ответам, формально получающим высокую оценку, но не отражающим подлинные предпочтения пользователей.

См. также

Литература

  1. Devlin J., Chang M.-W., Lee K., Toutanova K. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding // NAACL. — 2019.
  2. Howard J., Ruder S. Universal Language Model Fine-tuning for Text Classification (ULMFiT) // ACL. — 2018.
  3. Houlsby N., Giurgiu A., Jastrzębski S. et al. Parameter-Efficient Transfer Learning for NLP // ICML. — 2019.
  4. Li X.L., Liang P. Prefix-Tuning: Optimizing Continuous Prompts for Generation // ACL. — 2021.
  5. Hu E.J., Shen Y., Wallis P. et al. LoRA: Low-Rank Adaptation of Large Language Models // ICLR. — 2022.
  6. Ouyang L., Wu J., Jiang X. et al. Training Language Models to Follow Instructions with Human Feedback // NeurIPS. — 2022.
  7. Yosinski J., Clune J., Bengio Y., Lipson H. How Transferable Are Features in Deep Neural Networks? // NeurIPS. — 2014.
  8. Xuhong L., Grandvalet Y., Davoine F. Explicit Inductive Bias for Transfer Learning with Convolutional Networks (L2-SP) // ICML. — 2018.







Инженерия признаков (Feature Engineering)



Ты специалист в области машинного обучения, профессор в ведущем техническом университете и популяризатор науки. Напиши энциклопедическую статью для MachineLearning.ru на тему «Инженерия признаков».

Целевая аудитория: мотивированные студенты, преподаватели и специалисты в AI/ML. Статья должна быть полезна новичку: дать понятное определение, объяснить, почему качество признаков важнее алгоритма, показать простые примеры (возраст из даты рождения, логарифм от признака). Профессионалу статья должна дать систематизацию методов работы с признаками и связать воедино разрозненные темы: создание признаков, преобразование, отбор, кодирование категорий, борьбу с пропусками и выбросами.

Обязательные разделы: 1. Введение: определение инженерии признаков как процесса создания и преобразования признаков для улучшения качества модели 2. Почему инженерия признаков важна: связь между качеством признаков и обобщающей способностью, примеры "удачных" и "неудачных" признаков 3. Создание признаков (Feature Generation): извлечение из сырых данных, использование предметных знаний, создание комбинированных признаков (суммы, разности, отношения) 4. Преобразование признаков (Feature Transformation): нормализация и стандартизация (min-max, z-score, robust), степенные и логарифмические преобразования, Box-Cox и Yeo-Johnson, дискретизация 5. Отбор признаков (Feature Selection): фильтрующие методы (корреляция, хи-квадрат, взаимная информация), обёрточные методы (RFE, последовательный отбор), встроенные методы (L1-регуляризация, важность в деревьях) 6. Кодирование категориальных признаков: one-hot encoding, label encoding, target encoding, WOE (Weight of Evidence), embedding-кодирование 7. Обработка пропусков: удаление vs заполнение (среднее, медиана, мода, регрессионное заполнение, KNN-заполнение) 8. Обработка выбросов: обнаружение (IQR, z-score, визуализация), обработка (удаление, капинг, преобразование) 9. Уменьшение размерности: PCA, t-SNE, UMAP — как отдельный случай инженерии признаков 10. Инженерия для разных типов данных: особенности для текстов, изображений, временных рядов, графов 11. Автоматическая инженерия признаков (AutoFE): Deep Feature Synthesis, автоматические методы 12. Практические рекомендации: чек-лист инженера по признакам, принцип "простые признаки — лучшие" 13. См. также: внутренние ссылки на другие страницы (Генерация признаков, Отбор признаков, Нормализация и стандартизация, Понижение размерности, Предобработка данных, Метод главных компонент, Ослабление и усиление шкал признаков) 14. Литература (реальные источники)

Важно: статья должна быть связующим звеном для многих тем. Добавь таблицу сравнения методов отбора признаков и кодирования категорий.

Стиль академичный, ясный, без рекламных фраз и нейросетевых штампов. Формулы оформляй только через ..., выключные формулы через :: .... Термины оформляй как внутренние ссылки. В начале статьи добавь предупреждение:

Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 16:49, 10 июля 2026 (MSD)


Выдай только сырой вики-код статьи.




Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 13:49, 11 июля 2026 (MSD)


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

Введение

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

Почему инженерия признаков важна

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

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

Неудачный признак — обратный случай: включение в модель идентификатора клиента или номера транзакции в качестве числового признака. Такой признак не несёт содержательной информации о целевой переменной, но может создавать иллюзию предсказательной силы за счёт случайных совпадений в обучающей выборке (data leakage через порядковый номер, коррелирующий с временем), что приводит к переобучению и резкому падению качества на новых данных.

Другой типичный пример полезного нелинейного преобразования — логарифмирование признака с сильно скошенным (skewed) распределением, например, дохода или цены: разность между доходами 10 000 и 20 000 денежных единиц содержательно отличается от разности между 1 010 000 и 1 020 000, и логарифмическое преобразование x' = \log(x+1) переводит мультипликативные отношения в аддитивные, что облегчает работу линейных моделей и стабилизирует дисперсию признака.

Создание признаков (Feature Generation)

Создание признаков — построение новых переменных на основе сырых данных, использующее либо предметные знания (domain knowledge), либо автоматические комбинаторные схемы.

Извлечение признаков из сырых данных типично для полей даты и времени: из единственного поля timestamp можно извлечь день недели, час суток, номер месяца, признак выходного дня или праздника — каждый из них может нести самостоятельную предсказательную силу, скрытую в исходном представлении.

Использование предметных знаний позволяет строить признаки, отражающие содержательные закономерности предметной области: например, в задаче кредитного скоринга — отношение суммы долга к доходу (debt-to-income ratio), в задаче анализа веб-трафика — время, проведённое на странице, делённое на число просмотренных страниц.

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

Преобразование признаков (Feature Transformation)

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

  • Min-max нормализация линейно переводит значения признака в фиксированный интервал, обычно [0,1]:
x' = \dfrac{x - x_{\min}}{x_{\max} - x_{\min}}
  • Z-нормализация (стандартизация) центрирует признак и приводит его к единичной дисперсии:
x' = \dfrac{x - \mu}{\sigma}

где \mu и \sigma — среднее и стандартное отклонение признака на обучающей выборке.

  • Робастное масштабирование (robust scaling) использует медиану и межквартильный размах вместо среднего и стандартного отклонения, что делает преобразование устойчивым к выбросам:
x' = \dfrac{x - \mathrm{median}(x)}{IQR(x)}

Степенные и логарифмические преобразования применяются к признакам с существенно асимметричным распределением для приближения его к нормальному и стабилизации дисперсии: помимо логарифма x' = \log(x+1), используются квадратный корень, обратное преобразование 1/x. Обобщением служит семейство Box-Cox:

x'(\lambda) = \begin{cases} \dfrac{x^{\lambda} - 1}{\lambda}, & \lambda \neq 0 \\ \log x, & \lambda = 0 \end{cases}

применимое лишь к строго положительным значениям, и Yeo-Johnson — его обобщение, допускающее отрицательные и нулевые значения признака за счёт кусочного определения при x \geq 0 и x < 0. В обоих случаях параметр \lambda подбирается по обучающим данным (как правило, максимизацией правдоподобия) так, чтобы преобразованное распределение было максимально близко к нормальному.

Дискретизация (binning) переводит непрерывный признак в категориальный, разбивая диапазон значений на интервалы — равношироких (equal-width), равнонаполненных по числу наблюдений (equal-frequency) либо заданных экспертно (например, возрастные группы). Дискретизация может улучшать качество для моделей, плохо улавливающих нелинейные зависимости, ценой потери части информации о точном значении признака.

Отбор признаков (Feature Selection)

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

Фильтрующие методы (filter methods) оценивают признаки независимо от конкретной модели, на основе статистических критериев связи признака с целевой переменной: коэффициент корреляции Пирсона для количественных признаков и количественной цели, критерий хи-квадрат для категориальных признаков, взаимная информация (mutual information), способная улавливать и нелинейные зависимости. Фильтрующие методы вычислительно дёшевы, но не учитывают взаимодействие признаков между собой и специфику последующей модели.

Обёрточные методы (wrapper methods) оценивают подмножества признаков, обучая на них модель и измеряя итоговое качество. Рекурсивное исключение признаков (Recursive Feature Elimination, RFE) последовательно обучает модель, ранжирует признаки по важности (например, по весам линейной модели) и исключает наименее значимые, повторяя процедуру до достижения целевого числа признаков. Последовательный отбор (forward selection, backward elimination) наращивает или сокращает набор признаков по одному, каждый раз выбирая шаг, дающий наибольший прирост качества. Обёрточные методы точнее фильтрующих, но существенно дороже вычислительно, так как требуют многократного переобучения модели.

Встроенные методы (embedded methods) выполняют отбор признаков как часть самого процесса обучения модели. L1-регуляризация (лассо-регрессия) добавляет к функции потерь штраф на сумму модулей весов, что приводит к точному обнулению весов при малоинформативных признаках:

\mathcal{L}(\theta) = \mathcal{L}_{0}(\theta) + \lambda \sum_i |\theta_i|

Важность признаков в ансамблях деревьев (feature importance в случайном лесе или градиентном бустинге) оценивается по суммарному снижению критерия неоднородности (например, критерия Джини или прироста информации) при разбиениях по данному признаку по всем деревьям ансамбля, что даёт естественную и вычислительно дешёвую оценку значимости, получаемую как побочный продукт обучения.

Группа методов Примеры Учитывает модель Учитывает взаимодействие признаков Вычислительная стоимость
Фильтрующие Корреляция, хи-квадрат, взаимная информация Нет Нет (обычно) Низкая
Обёрточные RFE, последовательный отбор Да Да Высокая
Встроенные L1-регуляризация, важность в деревьях Да Частично Средняя

Кодирование категориальных признаков

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

One-hot encoding представляет категориальный признак с K уникальными значениями в виде K бинарных индикаторных признаков, каждый из которых равен единице для соответствующей категории и нулю иначе. Метод не вносит ложного порядка между категориями, но плохо масштабируется при большом числе уникальных значений (высокая кардинальность), приводя к разреженным и высокоразмерным признаковым векторам.

Label encoding присваивает каждой категории целочисленный код. Подходит для древовидных моделей, устойчивых к произвольному порядку кодов, но некорректен для линейных моделей и моделей на основе расстояний, поскольку вносит несуществующий порядок между категориями.

Target encoding (mean encoding) заменяет каждую категорию средним значением целевой переменной по объектам этой категории на обучающей выборке. Метод компактен и эффективен для признаков высокой кардинальности, но подвержен утечке целевой переменной и переобучению, если не применяется с должной регуляризацией — обычно сглаживанием к общему среднему и вычислением кодировки только по данным, не входящим в текущий фолд кросс-валидации (out-of-fold encoding).

WOE (Weight of Evidence), распространённый в кредитном скоринге, кодирует категорию через логарифм отношения долей «плохих» и «хороших» исходов внутри категории:

WOE_k = \log\left(\dfrac{\%\,\text{good}_k}{\%\,\text{bad}_k}\right)

что даёт монотонную связь с логитом целевой переменной в задачах бинарной классификации и облегчает интерпретацию вклада категории.

Embedding-кодирование представляет каждую категорию вектором в непрерывном пространстве меньшей размерности, обучаемым совместно с основной моделью (типично для нейронных сетей, работающих с категориальными признаками высокой кардинальности — идентификаторами пользователей, товаров, слов). В отличие от one-hot, эмбеддинги способны улавливать содержательное сходство между категориями через близость соответствующих векторов.

Метод Подходит для высокой кардинальности Риск утечки цели Вносит ложный порядок Типичное применение
One-hot encoding Нет Нет Нет Линейные модели, признаки низкой кардинальности
Label encoding Да Нет Да Древовидные модели
Target encoding Да Да (требует регуляризации) Нет Градиентный бустинг, высокая кардинальность
WOE Да Умеренный Нет Кредитный скоринг, логистическая регрессия
Embedding Да Нет (при должной валидации) Нет Нейронные сети, очень высокая кардинальность

Обработка пропусков

Пропущенные значения — распространённая особенность реальных данных, требующая явного решения: удалить объекты или признаки с пропусками либо заполнить их (impute). Удаление оправдано, когда доля пропусков в признаке или объекте крайне высока либо когда пропуски распределены случайно и их доля мала настолько, что удаление не искажает выборку; в противном случае предпочтительно заполнение, поскольку удаление сокращает и без того ограниченный объём данных.

Простейшие стратегии заполнения — средним или медианой значением признака (медиана предпочтительна при наличии выбросов) для количественных признаков и модой (наиболее частым значением) для категориальных. Более точные стратегии учитывают связь пропущенного признака с остальными: регрессионное заполнение обучает вспомогательную модель, предсказывающую значение признака по остальным признакам объекта, а KNN-заполнение восстанавливает пропуск как среднее (или взвешенное среднее) значения признака у ближайших по остальным признакам соседей. Существенно также фиксировать сам факт пропуска отдельным бинарным индикаторным признаком — отсутствие значения нередко само по себе несёт предсказательную информацию (например, отсутствие ответа на вопрос анкеты может коррелировать с целевой переменной).

Обработка выбросов

Обнаружение выбросов может опираться на статистические критерии — правило межквартильного размаха (IQR), относящее к выбросам значения за пределами [Q_1 - 1.5\,IQR,\; Q_3 + 1.5\,IQR], либо на z-оценку, помечающую как выброс значения с |z| > 3, — либо на визуализацию распределения признака (box-plot, гистограмма, диаграмма рассеяния).

После обнаружения возможны разные стратегии обработки: удаление объектов-выбросов, оправданное при уверенности в ошибочности значения (сбой измерения, ошибка ввода данных); капинг (winsorization) — замена экстремальных значений на ближайшую границу допустимого диапазона без полного удаления объекта; преобразование признака (логарифмирование, Box-Cox), уменьшающее относительное влияние экстремальных значений без их прямого удаления. Выбор стратегии определяется тем, являются ли выбросы артефактом измерения или содержательной, хотя и редкой, особенностью предметной области — во втором случае агрессивное удаление способно исказить модель, лишив её информации о редких, но значимых случаях.

Уменьшение размерности

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

Метод главных компонент (PCA) находит ортогональные направления максимальной дисперсии данных и проецирует исходные признаки на подпространство, натянутое на несколько первых главных компонент, что позволяет сократить размерность с минимальной потерей информации о дисперсии данных при условии преимущественно линейной структуры зависимостей.

t-SNE и UMAP — нелинейные методы уменьшения размерности, ориентированные в первую очередь на визуализацию многомерных данных в двух-трёх измерениях за счёт сохранения локальной структуры соседства точек; в отличие от PCA, они, как правило, не сохраняют глобальные расстояния и хуже подходят для использования результирующих компонент как признаков для последующего обучения модели, но полезны как инструмент разведочного анализа данных (EDA) и обнаружения кластерной структуры.

Инженерия для разных типов данных

Тексты. Классические признаки — частоты слов (bag-of-words), взвешенные по TF-IDF, n-граммы слов и символов; современный подход — представления, полученные из предобученных языковых моделей (эмбеддинги слов, контекстуальные эмбеддинги трансформеров), фактически переносящие задачу конструирования признаков на этап предобучения модели.

Изображения. Классическая инженерия признаков опиралась на ручные дескрипторы (HOG, SIFT, гистограммы цвета); в современной практике эту роль почти повсеместно взяли на себя свёрточные и трансформерные сети, автоматически извлекающие иерархические признаки, однако предметно-специфичные признаки (например, геометрические измерения на медицинских снимках) остаются востребованными в специализированных приложениях.

Временные ряды. Типичные признаки — скользящие статистики (среднее, стандартное отклонение, минимум и максимум в скользящем окне), лаговые признаки (значение ряда со сдвигом на несколько шагов назад), признаки сезонности и тренда, а также спектральные характеристики, получаемые преобразованием Фурье.

Графы. Признаки узла могут включать степень узла, меры центральности (betweenness, PageRank), локальные структурные характеристики окрестности; современные методы также используют обучаемые представления узлов, получаемые методами графовых нейронных сетей или графовых эмбеддингов (node2vec, DeepWalk).

Автоматическая инженерия признаков (AutoFE)

Автоматическая инженерия признаков стремится частично или полностью автоматизировать процесс создания и отбора признаков, традиционно требующий значительных временных затрат специалиста и глубокого понимания предметной области. Deep Feature Synthesis (Kanter & Veeramachaneni, 2015), лежащий в основе библиотеки Featuretools, автоматически строит признаки для реляционных данных, применяя последовательности агрегирующих и трансформирующих операций (сумма, среднее, число уникальных значений и другие) вдоль связей между таблицами, генерируя большое число кандидатов в признаки, из которых затем производится отбор. Иные подходы к AutoFE используют эволюционные алгоритмы или обучение с подкреплением для поиска полезных комбинаций преобразований признаков. Автоматизированные методы способны обнаруживать неочевидные комбинации, но, как правило, требуют последующего этапа отбора признаков для устранения избыточности и контроля переобучения, а также не заменяют полностью экспертное понимание предметной области, особенно при построении содержательных, предметно-обоснованных признаков.

Практические рекомендации

Чек-лист инженера по признакам:

  • проверить типы и распределения всех признаков до начала моделирования — выявить асимметрию, выбросы, пропуски;
  • начинать с простых, содержательно обоснованных признаков, прежде чем переходить к автоматической генерации большого числа кандидатов;
  • явно фиксировать факт пропуска отдельным индикаторным признаком, а не полагаться только на значение заполнения;
  • при кодировании категорий с высокой кардинальностью использовать target encoding или WOE с обязательной регуляризацией и вычислением вне текущего фолда кросс-валидации;
  • подбирать параметры любых преобразований (нормализации, Box-Cox, target encoding) исключительно по обучающей выборке, применяя затем те же параметры к валидационной и тестовой выборкам, во избежание утечки информации;
  • после генерации большого числа признаков обязательно проводить отбор — избыточные и коррелированные признаки не только не помогают, но зачастую ухудшают обобщающую способность и интерпретируемость модели;
  • руководствоваться принципом «простые признаки — лучшие»: там, где простое отношение или разность объясняют закономерность не хуже сложной комбинации, предпочтение стоит отдавать простому варианту, повышающему устойчивость и интерпретируемость модели.

См. также

Литература

  1. Zheng A., Casari A. Feature Engineering for Machine Learning: Principles and Techniques for Data Scientists. — O'Reilly Media, 2018.
  2. Kuhn M., Johnson K. Feature Engineering and Selection: A Practical Approach for Predictive Models. — CRC Press, 2019.
  3. Guyon I., Elisseeff A. An Introduction to Variable and Feature Selection // Journal of Machine Learning Research. — 2003.
  4. Box G.E.P., Cox D.R. An Analysis of Transformations // Journal of the Royal Statistical Society. Series B. — 1964.
  5. Yeo I.-K., Johnson R.A. A New Family of Power Transformations to Improve Normality or Symmetry // Biometrika. — 2000.
  6. Kanter J.M., Veeramachaneni K. Deep Feature Synthesis: Towards Automating Data Science Endeavors // IEEE DSAA. — 2015.
  7. van der Maaten L., Hinton G. Visualizing Data using t-SNE // Journal of Machine Learning Research. — 2008.
  8. McInnes L., Healy J., Melville J. UMAP: Uniform Manifold Approximation and Projection for Dimension Reduction // arXiv:1802.03426. — 2018.
Личные инструменты