Автокодировщик

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

Версия от 18:22, 29 июня 2026; Vladimir Garanin (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Статья написана с использованием LLM GPT-5.5 Thinking и проверена участником Vladimir Garanin 18:37, 29 июня 2026 (MSD)


Автокодировщик (англ. autoencoder) — нейронная сеть, обучаемая восстанавливать входной объект на выходе через некоторое внутреннее представление. Обычно автокодировщик состоит из двух частей: кодировщика (англ. encoder), который переводит объект в скрытое представление, и декодировщика (англ. decoder), который пытается восстановить исходный объект по этому представлению.

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

Содержание

Общая архитектура

Пусть объект x подаётся на вход нейронной сети. Кодировщик строит скрытое представление:

z = f_\theta(x),

где z — код, или латентное представление, а \theta — параметры кодировщика. Затем декодировщик восстанавливает объект:

\hat{x} = g_\phi(z) = g_\phi(f_\theta(x)),

где \phi — параметры декодировщика.

Обучение сводится к минимизации ошибки восстановления:

\min_{\theta,\phi} \sum_{i=1}^{n} L(x_i, g_\phi(f_\theta(x_i))).

Здесь L — функция потерь, измеряющая отличие исходного объекта от восстановленного. Для вещественных данных часто используется среднеквадратичная ошибка:

L(x,\hat{x}) = ||x-\hat{x}||_2^2.

Для бинарных или нормированных данных, например изображений с пикселями в диапазоне от 0 до 1, может применяться бинарная кросс-энтропия.

Узкое горлышко

Классический автокодировщик содержит узкое горлышко (англ. bottleneck) — скрытое представление меньшей размерности, чем входной объект:

k < d.

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

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

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

Линейный автокодировщик и метод главных компонент

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

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

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

Недополный и переполный автокодировщики

Недополный автокодировщик (англ. undercomplete autoencoder) имеет скрытое представление меньшей размерности, чем вход:

\dim z < \dim x.

Такой автокодировщик вынужден сжимать информацию и поэтому может использоваться для сокращения размерности.

Переполный автокодировщик (англ. overcomplete autoencoder) имеет скрытое представление той же или большей размерности, чем вход:

\dim z \geq \dim x.

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

Разреженный автокодировщик

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

\min_{\theta,\phi} \sum_{i=1}^{n} L(x_i,\hat{x}_i) + \lambda R(z_i).

Здесь R(z_i) штрафует слишком активные скрытые признаки. Обычно используются L_1-регуляризация или штраф на отличие средней активности нейрона от заданного малого значения.

Интуитивно разреженность заставляет модель кодировать объект небольшим числом активных признаков. Это может улучшать интерпретируемость представления и уменьшать риск простого копирования входа.

Шумоподавляющий автокодировщик

Шумоподавляющий автокодировщик (англ. denoising autoencoder) обучается восстанавливать исходный объект x не по самому x, а по его искажённой версии \tilde{x}[1].

Искажённый объект можно записать как

\tilde{x} \sim q(\tilde{x}|x).

После этого автокодировщик строит восстановление:

\hat{x} = g_\phi(f_\theta(\tilde{x})).

Функция потерь сравнивает восстановление не с зашумлённым входом, а с чистым объектом:

L(x, g_\phi(f_\theta(\tilde{x}))).

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

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

Сжимающий автокодировщик

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

||J_f(x)||_F^2.

Здесь J_f(x) — матрица Якоби отображения f_\theta в точке x. Такой штраф заставляет кодировщик отображать близкие объекты в близкие скрытые представления и делает модель более устойчивой к малым возмущениям.

Вариационный автокодировщик

Вариационный автокодировщик (англ. variational autoencoder, VAE) — вероятностная генеративная модель, внешне похожая на автокодировщик, но имеющая другую математическую постановку[1].

В обычном автокодировщике код z является детерминированной функцией входа. В VAE кодировщик задаёт параметры распределения скрытой переменной:

q_\phi(z|x).

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

p_\theta(x|z).

Обучение VAE основано на максимизации вариационной нижней оценки логарифма правдоподобия:

{\cal L}(\theta,\phi;x) = E_{q_\phi(z|x)}[\log p_\theta(x|z)] - D_{\rm KL}(q_\phi(z|x), p(z)).

Первое слагаемое отвечает за качество восстановления, второе заставляет распределение кодов быть близким к заранее выбранному априорному распределению p(z), обычно стандартному нормальному.

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

Обнаружение аномалий

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

r(x) = ||x - \hat{x}||.

Если объект похож на обучающие данные, автокодировщик обычно восстанавливает его хорошо. Если объект необычен, ошибка восстановления может оказаться большой. Поэтому объекты с большим r(x) рассматриваются как потенциальные аномалии.

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

Применения

Автокодировщики используются в разных задачах анализа данных:

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

Исторически автокодировщики сыграли важную роль в развитии глубокого обучения. В частности, глубокие автокодировщики использовались для сокращения размерности данных и предварительного обучения нейронных сетей[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.