заглушки Что такое автоэнкодер? - Unite.ИИ
Свяжитесь с нами:
Мастер-класс по ИИ:

AI 101

Что такое автоэнкодер?

mm
обновленный on

Если вы раньше читали о методах обучения без учителя, возможно, вы встречали термин «автоэнкодер». Автоэнкодеры — один из основных способов разработки моделей обучения без учителя. И все же, что такое автоэнкодер?

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

Что такое автоэнкодер?

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

Данные, которые проходят через автоэнкодер, не просто сопоставляются напрямую с входа на выход, а это означает, что сеть не просто копирует входные данные. В автокодировщике есть три компонента: часть кодирования (ввод), которая сжимает данные, компонент, который обрабатывает сжатые данные (или узкое место), и часть декодера (выход). Когда данные подаются в автоэнкодер, они кодируются, а затем сжимаются до меньшего размера. Затем сеть обучается на закодированных/сжатых данных и выводит воссоздание этих данных.

Так зачем вам обучать сеть просто восстанавливать данные, которые ей даются? Причина в том, что сеть изучает «суть» или наиболее важные особенности входных данных. После того, как вы обучили сеть, можно создать модель, которая может синтезировать аналогичные данные с добавлением или вычитанием определенных целевых функций. Например, вы можете обучить автоэнкодер на зернистых изображениях, а затем использовать обученную модель для удаления зернистости/шума с изображения.

Архитектура автоэнкодера

Давайте посмотрим на Архитектура автоэнкодера. Здесь мы обсудим основную архитектуру автоэнкодера. Существуют вариации этой общей архитектуры, которые мы обсудим в следующем разделе.

Фото: Микела Масси из Викисклада (https://commons.wikimedia.org/wiki/File:Autoencoder_schema.png)

Как упоминалось ранее, автоэнкодер можно по существу разделить на три различных компонента: кодировщик, узкое место и декодер.

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

Слои кода, или узкое место, имеют дело со сжатым представлением данных. Код узкого места тщательно разработан для определения наиболее важных частей наблюдаемых данных или, другими словами, характеристик данных, наиболее важных для реконструкции данных. Цель здесь состоит в том, чтобы определить, какие аспекты данных необходимо сохранить, а какие можно отбросить. Код узкого места должен сбалансировать два разных соображения: размер представления (насколько компактно представление) и релевантность переменных/функций. Узкое место выполняет поэлементную активацию весов и смещений сети. Слой узкого места также иногда называют скрытым представлением или скрытыми переменными.

Уровень декодера отвечает за получение сжатых данных и преобразование их обратно в представление с теми же размерами, что и исходные неизмененные данные. Преобразование выполняется с использованием представления скрытого пространства, созданного кодировщиком.

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

Атрибуты автоэнкодера

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

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

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

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

Размер кода определяет, сколько узлов начинают среднюю часть сети, и чем меньше узлов, тем больше сжатие данных. В глубоком автоэнкодере количество слоев может быть любым, которое инженер сочтет нужным, но количество узлов в слое должно уменьшаться по мере работы кодировщика. Между тем, в декодере верно обратное, а это означает, что количество узлов на уровень должно увеличиваться по мере того, как уровни декодера приближаются к последнему слою. Наконец, функция потерь автоэнкодера обычно представляет собой либо двоичную кросс-энтропию, либо среднеквадратичную ошибку. Двоичная кросс-энтропия подходит для случаев, когда входные значения данных находятся в диапазоне 0–1.

Типы автоэнкодера

Как упоминалось выше, существуют вариации классической архитектуры автоэнкодера. Давайте рассмотрим различные архитектуры автоэнкодера.

Разреженный

Фото: Микела Масси, Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Autoencoder_sparso.png)

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

Сжимающийся

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

Сверточное

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

шумодав

Фото: MAL через Wikimedia Commons, CC BY SA 3.0 (https://en.wikipedia.org/wiki/File:ROF_Denoising_Example.png)

Шумоподавление автоэнкодеров вносить шум в кодировку, что приводит к кодированию, которое является поврежденной версией исходных входных данных. Эта поврежденная версия данных используется для обучения модели, но функция потерь сравнивает выходные значения с исходными входными данными, а не с искаженными входными данными. Цель состоит в том, чтобы сеть смогла воспроизвести оригинальную, неповрежденную версию изображения. Сравнивая поврежденные данные с исходными данными, сеть узнает, какие функции данных являются наиболее важными, а какие неважными/испорченными. Другими словами, для того, чтобы модель могла удалить шум с поврежденных изображений, она должна извлечь важные особенности данных изображения.

Вариационный

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

 

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

При обучении сети закодированные данные анализируются, и модель распознавания выводит два вектора, рисуя среднее значение и стандартное отклонение изображений. Распределение создается на основе этих значений. Это делается для различных скрытых состояний. Затем декодер берет случайные выборки из соответствующего распределения и использует их для восстановления исходных входных данных в сеть.

Приложения автоэнкодера

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

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

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

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

Блогер и программист со специализацией в Машинное обучение и Глубокое обучение темы. Дэниел надеется помочь другим использовать возможности ИИ на благо общества.