|
|
| Строка 1: |
Строка 1: |
| - | {{well|Статья написана с использованием LLM '''GPT-5.5 Thinking''' и проверена участником [[Участник: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.
| |
| - |
| |
| - | [[Категория:Нейронные сети]]
| |
| - | [[Категория:Глубокое обучение]]
| |
| - | [[Категория:Обучение без учителя]]
| |
| - | [[Категория:Сокращение размерности]]
| |
| - | [[Категория:Энциклопедия анализа данных]]
| |