Автокодировщик
Идея
Автокодировщик (autoencoder) - это нейросеть , задача которой по входу , вос становить сам вход. Для настройки автокодировщика обычно используется квадрат потерь:
Поскольку в качестве целевой переменной (отклика) выступает исходное признаковое описание объекта без меток, то это задача обучения без учителя (unsupervised learning), что позволяет обучить автокодировщик очень точно, используя неразмеченные обучающие выборки, которые обычно значительно больше размеченных.
Структурно автокодировщик состоит из
-
кодировщика (encoder)
-
и декодировщика (decoder)
Кодировщик преобразует исходный объект в его внутреннее признаковое представление или эмбеддинг (embedding), а декодировщик пытается по эмбеддингу объекта восстановить сам объект.
Чтобы избежать т ривиального решения задачи, когда автокодировщик настраивается повторять тождественное преобразование , на архитектуру или процесс настройки весов накладываются некоторые ограничения, о которых будет рассказано далее.
Применения автокодировщика
-
Предобучение (pretraining). Если для конечной задачи обучения с учителем обучающая выборка мала, но есть много неразмеченных объектов , , то можно на большой неразмеченной выборке настроить автокодировщик , а потом инициализировать первые слои сети, решающей задачу обучения с учителем слоями кодировщика , т.е. применить трансферное обучение. Таким образом, даже без использования меток мы получим перевод объекта из исходного пространства низкоуровневых признаков в высокоуровневые , с которыми проще работать. При достаточном объёме размеченной выборки можно первые перенесённые слои донастроить под конечную задачи с небольшим шагом обучения.
-
Снижение размерности (dimensionality reduction). Если размерность пространства эмбеддингов существенно меньше размерности исходного пространства признаков , то объекты можно хранить не в исходном виде, а в сжатом - в виде эмбеддинга. Чтобы восстановить сжатый объект до исходного, достаточно просто пропустить его через декодировщик . Поскольку автокодировщик неидеально восстанавливает исходный объект, получим сжатие данных с потерями (lossy compression), которое часто используется на практике, как, например, при представлении изображений в JPEG формате.
-
Визуализация данных - частный случай снижения размерности, когда размерность эмбеддинга равна двум или трём. В этом случае сложные многомерные данные можно визуализировать для человека.
-
Фильтрация шума (denoising) достигается за счёт пропуск ания зашумлённого объекта (например, изображения с шумом) через автокодировщик. Удаление шума обеспечивается тем, что автокодировщик хорошо восстанавливает типичные паттерны реальных данных, а шум случаен, поэтому его сложно воспроизвести. Есть архитектура автокодировщика (denoising autoencoder), описанная далее, которая специально обучена фильтровать шум.
-
Детекция аномалий (anomaly detection) - задача, в которой нужно выделить нетипичные объекты, выбивающиеся из общего распределения объектов. Она также может решаться с помощью автокодировщика.
Как с помощью автокодировщика детектировать аномальные объекты?
Автокодировщик настраивается хорошо восстанавливать типичные объекты выборки. Нетипичные объекты имеют нестандартное распределение и встречаются редко, поэтому восстанавливаться автокодировщиком будут плохо. Поэтому о степени аномальности объекта можно судить по ошибке его восстановления: