Аугментация данных
Материал из MachineLearning.
| | Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Imil Baltaniazov 7:49, 11 июля 2026 (MSD) |
Аугментация данных (data augmentation) — совокупность методов искусственного расширения обучающей выборки путём применения к имеющимся объектам преобразований, сохраняющих или контролируемо изменяющих их метку. Аугментация используется при обучении моделей машинного обучения для борьбы с переобучением, повышения устойчивости моделей к вариативности реальных данных и увеличения эффективного объёма обучающей выборки без затрат на разметку новых примеров.
Введение
Пусть задана обучающая выборка , где
— объект,
— его метка (ответ). Аугментацией называется применение к объекту
некоторого преобразования
из заданного семейства
, порождающего новый объект
, который либо сохраняет исходную метку
(label-preserving augmentation), либо порождает вместе с ней новую, скорректированную метку — как в методах MixUp и CutMix.
Формально расширенная выборка имеет вид:
Аугментация решает три взаимосвязанные задачи.
- Борьба с переобучением. Современные модели, особенно глубокие нейронные сети, обладают числом параметров, зачастую превышающим число обучающих примеров. Без ограничения сложности такая модель способна запомнить обучающую выборку, потеряв обобщающую способность. Аугментация уменьшает разрыв между эмпирическим и ожидаемым риском, действуя как форма регуляризации.
- Повышение робастности. Модель, обученная на аугментированных данных, лучше переносит вариативность реальных условий эксплуатации — изменение освещения, ракурса, шум в канале связи, опечатки в тексте, — поскольку встречала аналогичные искажения при обучении.
- Увеличение эффективного размера выборки. Сбор и разметка новых данных часто дороги или невозможны (редкие заболевания, аварийные ситуации, малоресурсные языки). Аугментация позволяет получить дополнительные обучающие примеры почти бесплатно, хотя и не привносит принципиально новой информации об истинном распределении данных.
Аугментацию данных следует отличать от смежных понятий. В отличие от синтеза данных (data synthesis), где новые объекты порождаются генеративной моделью без опоры на конкретный исходный пример, аугментация всегда отталкивается от реального объекта выборки. В отличие от простого передискретизации (resampling, например дублирования примеров редкого класса), аугментация создаёт новые, отличающиеся от исходных объекты.
Мотивация
С теоретической точки зрения аугментацию удобно рассматривать в рамках концепции минимизации риска в окрестности (Vicinal Risk Minimization, VRM), предложенной Шапелем и соавторами. Классическая минимизация эмпирического риска ищет функцию , минимизирующую
Однако эмпирическое распределение, сосредоточенное в точках выборки, — крайне грубое приближение истинного распределения данных. Идея VRM состоит в замене этого распределения на распределение, «размазанное» по окрестности (vicinity) каждой точки:
где — распределение вероятностей на объектах, «похожих» на
. Аугментация — это практический способ построения выборки из
: каждое случайное преобразование
задаёт один сэмпл из окрестности исходной точки.
Такая интерпретация напрямую связывает аугментацию с регуляризацией:
- Как и
/
-регуляризация, аугментация ограничивает эффективную сложность модели — но не через штраф на веса, а через расширение множества примеров, на которых модель обязана давать согласованный ответ.
- Аугментация вносит в обучение априорное знание о том, какие преобразования объекта не должны менять его метку (инвариантности). Поворот фотографии кошки на 10° не должен превращать её в собаку — это знание нельзя вывести из самих пикселей, оно привносится извне, подобно тому, как архитектурные ограничения (например, свёрточные слои) кодируют априорное знание о трансляционной инвариантности.
- Эмпирически модели, обученные с аугментацией, демонстрируют меньший разрыв между качеством на обучающей и тестовой выборках при сопоставимом или лучшем качестве на тесте — то есть меньшее переобучение.
Выигрыш от аугментации максимален, когда используемые преобразования действительно сохраняют семантику задачи и отражают вариативность, ожидаемую в реальных данных. Преобразования, не соответствующие этому условию, способны не регуляризировать, а вносить шум — см. раздел «Ограничения и риски».
Аугментация изображений
Изображения — исторически первая и наиболее развитая область применения аугментации, начиная с классической работы Крижевского, Суцкевера и Хинтона по сети AlexNet (2012), где применялись случайные сдвиги, отражения и изменение интенсивности каналов RGB.
Геометрические преобразования
- Повороты (rotation) — поворот изображения на случайный угол
:
Небольшие углы (обычно ±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) отходит от идеи преобразования одного объекта и вместо этого строит новый объект как линейную комбинацию двух случайно выбранных примеров обучающей выборки вместе с их метками:
где коэффициент смешивания , а параметр
обычно берётся в диапазоне 0.1–0.4. MixUp — прямая практическая реализация VRM: окрестность точки задаётся не локальным искажением, а отрезком, соединяющим её с другими точками выборки. Метод сглаживает решающую поверхность классификатора и снижает его чувствительность к состязательным возмущениям.
CutMix
CutMix (Юн и соавторы, 2019) комбинирует идею MixUp с идеей вырезания области (см. Random Erasing ниже): прямоугольная область одного изображения заменяется соответствующей областью другого, а метка смешивается пропорционально площади вставленного фрагмента:
где — бинарная маска, вырезающая прямоугольную область,
— доля площади, приходящаяся на
. По сравнению с MixUp, CutMix не создаёт визуально неестественных «полупрозрачных» изображений и, по данным авторов, даёт дополнительный выигрыш в задачах локализации объектов, поскольку заставляет модель использовать всю информативную область изображения, а не только наиболее заметный фрагмент.
Random Erasing и Cutout
Методы Random Erasing (Чжун и соавторы) и близкий к нему Cutout (Де Врис и Тейлор) случайным образом закрашивают прямоугольную область изображения однородным цветом или шумом, метка при этом не меняется. Эффект аналогичен dropout, но применяется на уровне входных данных: модель вынуждена не полагаться на какой-то один локальный признак и распределять внимание по всему объекту.
AutoAugment
AutoAugment (Кубук и соавторы, 2019) переформулирует выбор политики аугментации как задачу обучения с подкреплением: контроллер (рекуррентная сеть) ищет оптимальную последовательность операций (тип преобразования, вероятность применения и магнитуда), максимизирующую качество модели-«ребёнка» на отложенной выборке. Найденные политики для CIFAR-10, SVHN и ImageNet оказались переносимыми между задачами, но сам поиск чрезвычайно затратен вычислительно (тысячи GPU-часов).
RandAugment
RandAugment (Кубук и соавторы, 2020) — упрощение AutoAugment, устраняющее необходимость дорогостоящего поиска политики. Вместо обучаемого контроллера RandAugment случайным образом выбирает операций из фиксированного набора и применяет их с единой глобальной магнитудой
, которые подбираются простым перебором по сетке на небольшом числе значений. При сопоставимом качестве RandAugment требует на порядки меньше вычислений, чем AutoAugment, что сделало его стандартом де-факто в современных конвейерах обучения свёрточных сетей и трансформеров зрения.
import torchvision.transforms as T transform = T.Compose([ T.RandAugment(num_ops=2, magnitude=9), T.ToTensor(), ])
Аугментация текстов
В отличие от изображений, текст дискретен, что делает многие геометрические аналогии неприменимыми: небольшое «искажение» символа может полностью разрушить смысл слова. Поэтому текстовая аугментация опирается на лингвистически осмысленные преобразования.
EDA (Easy Data Augmentation)
Вэй и Цзоу (2019) предложили набор из четырёх простых операций, применяемых к случайно выбранным словам предложения:
- Синонимичная замена (synonym replacement) — замена слова на синоним из тезауруса (например, WordNet).
- Случайная вставка (random insertion) — вставка синонима случайного слова предложения в случайную позицию.
- Случайное удаление (random deletion) — удаление слова с заданной вероятностью.
- Случайная перестановка (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) генеративными моделями.
- Добавление шума на уровне символов — опечатки, замена раскладки клавиатуры, случайные вставки/удаления символов — полезно для повышения устойчивости моделей к «грязному» пользовательскому вводу.
Аугментация табличных данных
Табличные данные хуже поддаются интуитивным преобразованиям: у признаков часто нет естественной топологии (в отличие от соседних пикселей изображения), поэтому произвольный шум может нарушить статистические зависимости между признаками.
Добавление шума
Простейший приём — добавление небольшого гауссовского шума к числовым признакам, джиттеринг:
Величина подбирается пропорционально дисперсии признака, чтобы не разрушить полезный сигнал.
SMOTE для дисбаланса классов
SMOTE (Synthetic Minority Over-sampling Technique, Чавла и соавторы, 2002) — стандартный метод борьбы с дисбалансом классов. Для объекта миноритарного класса находятся его
ближайших соседей того же класса, один из них
выбирается случайно, и новый синтетический объект строится как точка на отрезке между ними:
В отличие от простого дублирования объектов миноритарного класса, 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.
См. также
Литература
- 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.

