Автокодировщик
Материал из MachineLearning.
| | Статья написана с использованием LLM GPT-5.5 Thinking и проверена участником Vladimir Garanin Vladimir Garanin 18:37, 29 июня 2026 (MSD) |
Автокодировщик (англ. autoencoder) — нейронная сеть, обучаемая восстанавливать входной объект на выходе через некоторое внутреннее представление. Обычно автокодировщик состоит из двух частей: кодировщика (англ. encoder), который переводит объект в скрытое представление, и декодировщика (англ. decoder), который пытается восстановить исходный объект по этому представлению.
Автокодировщики используются для сокращения размерности, извлечения признаков, шумоподавления, обнаружения аномалий и построения генеративных моделей. Их важная особенность состоит в том, что модель обучается не по внешним меткам классов, а по задаче восстановления самого входа.
Общая архитектура
Пусть объект подаётся на вход нейронной сети. Кодировщик строит скрытое представление:
где — код, или латентное представление, а
— параметры кодировщика. Затем декодировщик восстанавливает объект:
где — параметры декодировщика.
Обучение сводится к минимизации ошибки восстановления:
Здесь — функция потерь, измеряющая отличие исходного объекта от восстановленного. Для вещественных данных часто используется среднеквадратичная ошибка:
Для бинарных или нормированных данных, например изображений с пикселями в диапазоне от 0 до 1, может применяться бинарная кросс-энтропия.
Узкое горлышко
Классический автокодировщик содержит узкое горлышко (англ. bottleneck) — скрытое представление меньшей размерности, чем входной объект:
Если модель вынуждена восстановить объект после сжатия в пространство меньшей размерности, она не может просто скопировать вход. Ей приходится сохранять в коде наиболее существенную информацию о данных.
Например, если автокодировщик обучается на изображениях рукописных цифр, его скрытое представление может не хранить каждый пиксель буквально, а кодировать более общие свойства: форму штриха, наклон, толщину линии, положение цифры в кадре.
Однако одного узкого горлышка не всегда достаточно. Слишком мощный декодировщик может научиться восстанавливать данные по неустойчивым или плохо интерпретируемым признакам. Поэтому на практике часто используют дополнительные ограничения и регуляризацию.
Линейный автокодировщик и метод главных компонент
Если кодировщик и декодировщик являются линейными отображениями, функция потерь — среднеквадратичная ошибка, а размерность скрытого представления меньше размерности входа, то автокодировщик тесно связан с методом главных компонент.
В таком случае модель фактически учится проецировать данные на низкоразмерное линейное подпространство, из которого можно с минимальной ошибкой восстановить исходные объекты. При подходящих ограничениях это подпространство совпадает с пространством, натянутым на первые главные компоненты.
Нелинейные автокодировщики обобщают эту идею: вместо линейного подпространства они могут изучать более сложное низкоразмерное многообразие, на котором сосредоточены данные.
Недополный и переполный автокодировщики
Недополный автокодировщик (англ. undercomplete autoencoder) имеет скрытое представление меньшей размерности, чем вход:
Такой автокодировщик вынужден сжимать информацию и поэтому может использоваться для сокращения размерности.
Переполный автокодировщик (англ. overcomplete autoencoder) имеет скрытое представление той же или большей размерности, чем вход:
Без дополнительных ограничений такая модель может выучить почти тождественное отображение и не получить полезного представления. Чтобы избежать этого, применяют регуляризацию: разреженность, добавление шума, штрафы на чувствительность или ограничения на распределение латентных кодов.
Разреженный автокодировщик
Разреженный автокодировщик (англ. sparse autoencoder) обучается так, чтобы большая часть компонент скрытого представления была близка к нулю. Это достигается добавлением регуляризатора к функции потерь:
Здесь штрафует слишком активные скрытые признаки. Обычно используются
-регуляризация или штраф на отличие средней активности нейрона от заданного малого значения.
Интуитивно разреженность заставляет модель кодировать объект небольшим числом активных признаков. Это может улучшать интерпретируемость представления и уменьшать риск простого копирования входа.
Шумоподавляющий автокодировщик
Шумоподавляющий автокодировщик (англ. denoising autoencoder) обучается восстанавливать исходный объект не по самому
, а по его искажённой версии
[1].
Искажённый объект можно записать как
После этого автокодировщик строит восстановление:
Функция потерь сравнивает восстановление не с зашумлённым входом, а с чистым объектом:
Например, если на изображение добавляется шум, автокодировщик должен восстановить исходное изображение. Такая постановка препятствует простому копированию входа и заставляет модель изучать устойчивые признаки данных.
С геометрической точки зрения шумоподавляющий автокодировщик можно понимать как модель, которая учится возвращать искажённые объекты обратно к области высокой плотности данных.
Сжимающий автокодировщик
Сжимающий автокодировщик (англ. contractive autoencoder) добавляет штраф за чувствительность скрытого представления к малым изменениям входа. Обычно используется регуляризация нормы матрицы Якоби кодировщика:
Здесь — матрица Якоби отображения
в точке
. Такой штраф заставляет кодировщик отображать близкие объекты в близкие скрытые представления и делает модель более устойчивой к малым возмущениям.
Вариационный автокодировщик
Вариационный автокодировщик (англ. variational autoencoder, VAE) — вероятностная генеративная модель, внешне похожая на автокодировщик, но имеющая другую математическую постановку[1].
В обычном автокодировщике код является детерминированной функцией входа. В VAE кодировщик задаёт параметры распределения скрытой переменной:
Чаще всего используется нормальное распределение с параметрами, зависящими от входного объекта. Декодировщик, в свою очередь, задаёт распределение наблюдаемого объекта при заданном скрытом коде:
Обучение VAE основано на максимизации вариационной нижней оценки логарифма правдоподобия:
Первое слагаемое отвечает за качество восстановления, второе заставляет распределение кодов быть близким к заранее выбранному априорному распределению , обычно стандартному нормальному.
Благодаря этому VAE можно использовать не только для восстановления объектов, но и для генерации новых: достаточно взять случайный скрытый код из априорного распределения и пропустить его через декодировщик.
Обнаружение аномалий
Автокодировщики часто применяются для обнаружения аномалий. Модель обучают на нормальных объектах, после чего измеряют ошибку восстановления новых объектов:
Если объект похож на обучающие данные, автокодировщик обычно восстанавливает его хорошо. Если объект необычен, ошибка восстановления может оказаться большой. Поэтому объекты с большим рассматриваются как потенциальные аномалии.
Такой подход применяется в промышленной диагностике, анализе сетевого трафика, финансовом мониторинге и поиске дефектов на изображениях. Однако большая ошибка восстановления не всегда означает настоящую аномалию: она может быть вызвана шумом, изменением условий измерения или недостаточным качеством обучения.
Применения
Автокодировщики используются в разных задачах анализа данных:
- Сокращение размерности — построение компактных представлений объектов;
- Извлечение признаков — получение признаков для последующей классификации или кластеризации;
- шумоподавление изображений, аудио и сигналов;
- восстановление повреждённых или частично скрытых данных;
- обнаружение аномалий по ошибке реконструкции;
- предварительное обучение глубоких сетей;
- генерация объектов в вариационных и других генеративных моделях.
Исторически автокодировщики сыграли важную роль в развитии глубокого обучения. В частности, глубокие автокодировщики использовались для сокращения размерности данных и предварительного обучения нейронных сетей[1].
Ограничения
Автокодировщик не гарантирует, что найденное скрытое представление будет интерпретируемым. Модель может хорошо восстанавливать данные, но хранить информацию в коде способом, неудобным для человека.
Другой риск связан с чрезмерной мощностью модели. Если архитектура слишком выразительна и не имеет достаточных ограничений, автокодировщик может научиться почти копировать вход, не выделяя полезных закономерностей.
При обнаружении аномалий также возможна ошибка: автокодировщик иногда хорошо восстанавливает не только нормальные, но и аномальные объекты, особенно если декодировщик достаточно мощный. Поэтому ошибку реконструкции следует рассматривать как эвристику, а не как строгий критерий необычности.
Наконец, автокодировщик оптимизирует качество восстановления, а не качество решения конечной задачи. Представление, хорошее для реконструкции, не всегда является лучшим для классификации, прогнозирования или интерпретации данных.
См. также
- Нейронная сеть
- Метод обратного распространения ошибки
- Сокращение размерности
- Метод главных компонент
- Извлечение признаков
- Обнаружение аномалий
- Глубокое обучение
- Генеративная модель
Литература
- Rumelhart, D. E., Hinton, G. E., Williams, R. J. Learning representations by back-propagating errors. Nature, 1986, Vol. 323, pp. 533–536.
- Hinton, G. E., Salakhutdinov, R. R. Reducing the Dimensionality of Data with Neural Networks. Science, 2006, Vol. 313, No. 5786, pp. 504–507.
- Vincent, P., Larochelle, H., Bengio, Y., Manzagol, P.-A. Extracting and Composing Robust Features with Denoising Autoencoders. Proceedings of ICML, 2008.
- Vincent, P., Larochelle, H., Lajoie, I., Bengio, Y., Manzagol, P.-A. Stacked Denoising Autoencoders: Learning Useful Representations in a Deep Network with a Local Denoising Criterion. Journal of Machine Learning Research, 2010, Vol. 11, pp. 3371–3408.
- Kingma, D. P., Welling, M. Auto-Encoding Variational Bayes. International Conference on Learning Representations, 2014.

