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

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

(Различия между версиями)
Перейти к: навигация, поиск
(Новая: {{well|Статья написана с использованием LLM '''GPT-5.5 Thinking''' и проверена участником [[Участник:Vladimir Garanin|Vladimir Ga...)
(Полностью удалено содержимое страницы)
 
(1 промежуточная версия не показана)
Строка 1: Строка 1:
-
{{well|Статья написана с использованием LLM '''GPT-5.5 Thinking''' и проверена участником [[Участник:Vladimir Garanin|Vladimir Garanin]] [[Участник:Vladimir Garanin|Vladimir Garanin]] 18:37, 29 июня 2026 (MSD)}}
 
-
'''Автокодировщик''' (англ. ''autoencoder'') — [[нейронная сеть]], обучаемая восстанавливать входной объект на выходе через некоторое внутреннее представление. Обычно автокодировщик состоит из двух частей: '''кодировщика''' (англ. ''encoder''), который переводит объект в скрытое представление, и '''декодировщика''' (англ. ''decoder''), который пытается восстановить исходный объект по этому представлению.
 
-
 
-
Автокодировщики используются для [[Сокращение размерности|сокращения размерности]], извлечения признаков, шумоподавления, обнаружения аномалий и построения генеративных моделей. Их важная особенность состоит в том, что модель обучается не по внешним меткам классов, а по задаче восстановления самого входа.
 
-
 
-
== Общая архитектура ==
 
-
 
-
Пусть объект <tex>x</tex> подаётся на вход нейронной сети. Кодировщик строит скрытое представление:
 
-
 
-
:: <tex>z = f_\theta(x),</tex>
 
-
 
-
где <tex>z</tex> — код, или латентное представление, а <tex>\theta</tex> — параметры кодировщика. Затем декодировщик восстанавливает объект:
 
-
 
-
:: <tex>\hat{x} = g_\phi(z) = g_\phi(f_\theta(x)),</tex>
 
-
 
-
где <tex>\phi</tex> — параметры декодировщика.
 
-
 
-
Обучение сводится к минимизации ошибки восстановления:
 
-
 
-
:: <tex>\min_{\theta,\phi} \sum_{i=1}^{n} L(x_i, g_\phi(f_\theta(x_i))).</tex>
 
-
 
-
Здесь <tex>L</tex> — функция потерь, измеряющая отличие исходного объекта от восстановленного. Для вещественных данных часто используется среднеквадратичная ошибка:
 
-
 
-
:: <tex>L(x,\hat{x}) = ||x-\hat{x}||_2^2.</tex>
 
-
 
-
Для бинарных или нормированных данных, например изображений с пикселями в диапазоне от 0 до 1, может применяться [[Кросс-энтропия|бинарная кросс-энтропия]].
 
-
 
-
== Узкое горлышко ==
 
-
 
-
Классический автокодировщик содержит '''узкое горлышко''' (англ. ''bottleneck'') — скрытое представление меньшей размерности, чем входной объект:
 
-
 
-
:: <tex>k < d.</tex>
 
-
 
-
Если модель вынуждена восстановить объект после сжатия в пространство меньшей размерности, она не может просто скопировать вход. Ей приходится сохранять в коде наиболее существенную информацию о данных.
 
-
 
-
Например, если автокодировщик обучается на изображениях рукописных цифр, его скрытое представление может не хранить каждый пиксель буквально, а кодировать более общие свойства: форму штриха, наклон, толщину линии, положение цифры в кадре.
 
-
 
-
Однако одного узкого горлышка не всегда достаточно. Слишком мощный декодировщик может научиться восстанавливать данные по неустойчивым или плохо интерпретируемым признакам. Поэтому на практике часто используют дополнительные ограничения и регуляризацию.
 
-
 
-
== Линейный автокодировщик и метод главных компонент ==
 
-
 
-
Если кодировщик и декодировщик являются линейными отображениями, функция потерь — среднеквадратичная ошибка, а размерность скрытого представления меньше размерности входа, то автокодировщик тесно связан с [[Метод главных компонент|методом главных компонент]].
 
-
 
-
В таком случае модель фактически учится проецировать данные на низкоразмерное линейное подпространство, из которого можно с минимальной ошибкой восстановить исходные объекты. При подходящих ограничениях это подпространство совпадает с пространством, натянутым на первые главные компоненты.
 
-
 
-
Нелинейные автокодировщики обобщают эту идею: вместо линейного подпространства они могут изучать более сложное низкоразмерное многообразие, на котором сосредоточены данные.
 
-
 
-
== Недополный и переполный автокодировщики ==
 
-
 
-
'''Недополный автокодировщик''' (англ. ''undercomplete autoencoder'') имеет скрытое представление меньшей размерности, чем вход:
 
-
 
-
:: <tex>\dim z < \dim x.</tex>
 
-
 
-
Такой автокодировщик вынужден сжимать информацию и поэтому может использоваться для сокращения размерности.
 
-
 
-
'''Переполный автокодировщик''' (англ. ''overcomplete autoencoder'') имеет скрытое представление той же или большей размерности, чем вход:
 
-
 
-
:: <tex>\dim z \geq \dim x.</tex>
 
-
 
-
Без дополнительных ограничений такая модель может выучить почти тождественное отображение и не получить полезного представления. Чтобы избежать этого, применяют регуляризацию: разреженность, добавление шума, штрафы на чувствительность или ограничения на распределение латентных кодов.
 
-
 
-
== Разреженный автокодировщик ==
 
-
 
-
'''Разреженный автокодировщик''' (англ. ''sparse autoencoder'') обучается так, чтобы большая часть компонент скрытого представления была близка к нулю. Это достигается добавлением регуляризатора к функции потерь:
 
-
 
-
:: <tex>\min_{\theta,\phi} \sum_{i=1}^{n} L(x_i,\hat{x}_i) + \lambda R(z_i).</tex>
 
-
 
-
Здесь <tex>R(z_i)</tex> штрафует слишком активные скрытые признаки. Обычно используются <tex>L_1</tex>-регуляризация или штраф на отличие средней активности нейрона от заданного малого значения.
 
-
 
-
Интуитивно разреженность заставляет модель кодировать объект небольшим числом активных признаков. Это может улучшать интерпретируемость представления и уменьшать риск простого копирования входа.
 
-
 
-
== Шумоподавляющий автокодировщик ==
 
-
 
-
'''Шумоподавляющий автокодировщик''' (англ. ''denoising autoencoder'') обучается восстанавливать исходный объект <tex>x</tex> не по самому <tex>x</tex>, а по его искажённой версии <tex>\tilde{x}</tex><ref>Vincent, P., Larochelle, H., Bengio, Y., Manzagol, P.-A. Extracting and Composing Robust Features with Denoising Autoencoders. ''Proceedings of ICML'', 2008.</ref>.
 
-
 
-
Искажённый объект можно записать как
 
-
 
-
:: <tex>\tilde{x} \sim q(\tilde{x}|x).</tex>
 
-
 
-
После этого автокодировщик строит восстановление:
 
-
 
-
:: <tex>\hat{x} = g_\phi(f_\theta(\tilde{x})).</tex>
 
-
 
-
Функция потерь сравнивает восстановление не с зашумлённым входом, а с чистым объектом:
 
-
 
-
:: <tex>L(x, g_\phi(f_\theta(\tilde{x}))).</tex>
 
-
 
-
Например, если на изображение добавляется шум, автокодировщик должен восстановить исходное изображение. Такая постановка препятствует простому копированию входа и заставляет модель изучать устойчивые признаки данных.
 
-
 
-
С геометрической точки зрения шумоподавляющий автокодировщик можно понимать как модель, которая учится возвращать искажённые объекты обратно к области высокой плотности данных.
 
-
 
-
== Сжимающий автокодировщик ==
 
-
 
-
'''Сжимающий автокодировщик''' (англ. ''contractive autoencoder'') добавляет штраф за чувствительность скрытого представления к малым изменениям входа. Обычно используется регуляризация нормы матрицы Якоби кодировщика:
 
-
 
-
:: <tex>||J_f(x)||_F^2.</tex>
 
-
 
-
Здесь <tex>J_f(x)</tex> — матрица Якоби отображения <tex>f_\theta</tex> в точке <tex>x</tex>. Такой штраф заставляет кодировщик отображать близкие объекты в близкие скрытые представления и делает модель более устойчивой к малым возмущениям.
 
-
 
-
== Вариационный автокодировщик ==
 
-
 
-
'''Вариационный автокодировщик''' (англ. ''variational autoencoder'', VAE) — вероятностная генеративная модель, внешне похожая на автокодировщик, но имеющая другую математическую постановку<ref>Kingma, D. P., Welling, M. Auto-Encoding Variational Bayes. ''International Conference on Learning Representations'', 2014.</ref>.
 
-
 
-
В обычном автокодировщике код <tex>z</tex> является детерминированной функцией входа. В VAE кодировщик задаёт параметры распределения скрытой переменной:
 
-
 
-
:: <tex>q_\phi(z|x).</tex>
 
-
 
-
Чаще всего используется нормальное распределение с параметрами, зависящими от входного объекта. Декодировщик, в свою очередь, задаёт распределение наблюдаемого объекта при заданном скрытом коде:
 
-
 
-
:: <tex>p_\theta(x|z).</tex>
 
-
 
-
Обучение VAE основано на максимизации вариационной нижней оценки логарифма правдоподобия:
 
-
 
-
:: <tex>{\cal L}(\theta,\phi;x) = E_{q_\phi(z|x)}[\log p_\theta(x|z)] - D_{\rm KL}(q_\phi(z|x), p(z)).</tex>
 
-
 
-
Первое слагаемое отвечает за качество восстановления, второе заставляет распределение кодов быть близким к заранее выбранному априорному распределению <tex>p(z)</tex>, обычно стандартному нормальному.
 
-
 
-
Благодаря этому VAE можно использовать не только для восстановления объектов, но и для генерации новых: достаточно взять случайный скрытый код из априорного распределения и пропустить его через декодировщик.
 
-
 
-
== Обнаружение аномалий ==
 
-
 
-
Автокодировщики часто применяются для обнаружения аномалий. Модель обучают на нормальных объектах, после чего измеряют ошибку восстановления новых объектов:
 
-
 
-
:: <tex>r(x) = ||x - \hat{x}||.</tex>
 
-
 
-
Если объект похож на обучающие данные, автокодировщик обычно восстанавливает его хорошо. Если объект необычен, ошибка восстановления может оказаться большой. Поэтому объекты с большим <tex>r(x)</tex> рассматриваются как потенциальные аномалии.
 
-
 
-
Такой подход применяется в промышленной диагностике, анализе сетевого трафика, финансовом мониторинге и поиске дефектов на изображениях. Однако большая ошибка восстановления не всегда означает настоящую аномалию: она может быть вызвана шумом, изменением условий измерения или недостаточным качеством обучения.
 
-
 
-
== Применения ==
 
-
 
-
Автокодировщики используются в разных задачах анализа данных:
 
-
 
-
* [[Сокращение размерности]] — построение компактных представлений объектов;
 
-
* [[Извлечение признаков]] — получение признаков для последующей классификации или кластеризации;
 
-
* шумоподавление изображений, аудио и сигналов;
 
-
* восстановление повреждённых или частично скрытых данных;
 
-
* обнаружение аномалий по ошибке реконструкции;
 
-
* предварительное обучение глубоких сетей;
 
-
* генерация объектов в вариационных и других генеративных моделях.
 
-
 
-
Исторически автокодировщики сыграли важную роль в развитии глубокого обучения. В частности, глубокие автокодировщики использовались для сокращения размерности данных и предварительного обучения нейронных сетей<ref>Hinton, G. E., Salakhutdinov, R. R. Reducing the Dimensionality of Data with Neural Networks. ''Science'', 2006, Vol. 313, No. 5786, pp. 504–507.</ref>.
 
-
 
-
== Ограничения ==
 
-
 
-
Автокодировщик не гарантирует, что найденное скрытое представление будет интерпретируемым. Модель может хорошо восстанавливать данные, но хранить информацию в коде способом, неудобным для человека.
 
-
 
-
Другой риск связан с чрезмерной мощностью модели. Если архитектура слишком выразительна и не имеет достаточных ограничений, автокодировщик может научиться почти копировать вход, не выделяя полезных закономерностей.
 
-
 
-
При обнаружении аномалий также возможна ошибка: автокодировщик иногда хорошо восстанавливает не только нормальные, но и аномальные объекты, особенно если декодировщик достаточно мощный. Поэтому ошибку реконструкции следует рассматривать как эвристику, а не как строгий критерий необычности.
 
-
 
-
Наконец, автокодировщик оптимизирует качество восстановления, а не качество решения конечной задачи. Представление, хорошее для реконструкции, не всегда является лучшим для классификации, прогнозирования или интерпретации данных.
 
-
 
-
== См. также ==
 
-
 
-
* [[Нейронная сеть]]
 
-
* [[Метод обратного распространения ошибки]]
 
-
* [[Сокращение размерности]]
 
-
* [[Метод главных компонент]]
 
-
* [[Извлечение признаков]]
 
-
* [[Обнаружение аномалий]]
 
-
* [[Глубокое обучение]]
 
-
* [[Генеративная модель]]
 
-
 
-
== Литература ==
 
-
 
-
<references/>
 
-
 
-
* 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.
 
-
 
-
[[Категория:Нейронные сети]]
 
-
[[Категория:Глубокое обучение]]
 
-
[[Категория:Обучение без учителя]]
 
-
[[Категория:Сокращение размерности]]
 
-
[[Категория:Энциклопедия анализа данных]]
 

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

Личные инструменты