Обучение нейросети с учителем, без учителя, с подкреплением — в чем отличие? Какой алгоритм лучше?

19 октября 2018
обучение с без учителя, с подкреплением

Обучение нейросети с учителем, без учителя, с подкреплением — в чем отличие? Какой алгоритм лучше?

Обучить нейронную сеть можно разными способами: с учителем, без учителя, с подкреплением. Но как выбрать оптимальный алгоритм и чем они отличаются? Есть несколько способов собрать мебель из IKEA. Каждый из…

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

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

Все то же самое с глубоким обучением (deep learning). Разработчик предпочтет алгоритм с конкретным способом обучения, учитывая вид данных и стоящую перед ним задачу.

обучение без учителя
Результат обучения нейронной сети — кластеризация изображений

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

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

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

Обучение с учителем

Обучение с учителем (supervised learning) предполагает наличие полного набора размеченных данных для тренировки модели на всех этапах ее построения.

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

пример обучения с учителем - классификация
Пример обучения с учителем — классификация (слева), и дальнейшее ее использование для сегментации и распознавания объектов

В основном обучение с учителем применяется для решения двух типов задач: классификации и регрессии.

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

А вот задачи регрессии связаны с непрерывными данными. Один из примеров, линейная регрессия, вычисляет ожидаемое значение переменной y, учитывая конкретные значения x.

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

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

Обучение без учителя

Идеально размеченные и чистые данные достать нелегко. Поэтому иногда перед алгоритмом стоит задача найти заранее не известные ответы. Вот где нужно обучение без учителя.

В обучении без учителя (unsupervised learning) у модели есть набор данных, и нет явных указаний, что с ним делать. Нейронная сеть пытается самостоятельно найти корелляции в данных, извлекая полезные признаки и анализируя их.

обучение без учителя кластеризация
Кластеризация данных на основе общих признаков

В зависимости от задачи модель систематизирует данные по-разному.

  • Кластеризация. Даже без специальных знаний эксперта-орнитолога можно посмотреть на коллекцию фотографий и разделить их на группы по видам птиц, опираясь на цвет пера, размер или форму клюва. Именно в этом заключается кластеризация — наиболее распространенная задача для обучения без учителя. Алгоритм подбирает похожие данные, находя общие признаки, и группируют их вместе.
  • Обнаружение аномалий. Банки могут обнаружить мошеннические операции, выявляя необычные действия в покупательском поведении клиентов. Например, подозрительно, если одна кредитная карта используется в Калифорнии и Дании в один и тот же день. Похожим образом, обучение без учителя используют для нахождения выбросов в данных.
  • Ассоциации. Выберете в онлайн-магазине подгузники, яблочное пюре и детскую кружку-непроливайку и сайт порекомендует вам добавить нагрудник и радионяню к заказу. Это пример ассоциаций: некоторые характеристики объекта коррелируют с другими признаками. Рассматривая пару ключевых признаков объекта, модель может предсказать другие, с которыми существует связь.
  • Автоэнкодеры. Автоэнкодеры принимают входные данные, кодируют их, а затем пытаются воссоздать начальные данные из полученного кода. Не так много реальных ситуаций, когда используют простой автоэнкодер. Но стоит добавить слои и возможности расширятся: используя зашумленные и исходные версии изображений для обучения, автоэнкодеры могут удалять шум из видеоданных, изображений или медицинских сканов, чтобы повысить качество данных.

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

Обучение с частичным привлечением учителя

Это золотая середина.

Обучение с частичным привлечением (semi-supervised learning) учителя характеризуется своим названием: обучающий датасет содержит как размеченные, так и неразмеченные данные. Этот метод особенно полезен, когда трудно извлечь из данных важные признаки или разметить все объекты – трудоемкая задача.

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

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

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

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

обучение с частичным привлечением учителя
Как работает GAN: дискриминатору «D» показывают исходные изображения и данные, созданные генератором «G». Дискриминатор должен определить, какие изображения являются реальными, а какие поддельными.

Обучение с подкреплением

Видеоигры основаны на системе стимулов. Завершите уровень и получите награду. Победите всех монстров и заработаете бонус. Попали в ловушку – конец игры, не попадайте. Эти стимулы помогают игрокам понять, как лучше действовать в следующем раунде игры. Без обратной связи люди бы просто принимали случайные решения и надеялись перейти на следующий игровой уровень.

Обучение с подкреплением (reinforcement learning) действует по тому же принципу. Видеоигры — популярная тестовая среда для исследований.

обучение с подкреплением
Результат обучения с подкреплением — «агент» проходит трассу, не выезжая за ее пределы. Далее можно добивиться повышения скорости прохождения трассы.

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

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

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

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


Интересные статьи:

Google AI представили Piano Genie — контроллер для импровизации с сетью энкодер-декодер

19 октября 2018
piano-genie

Google AI представили Piano Genie — контроллер для импровизации с сетью энкодер-декодер

Команда разработчиков Google AI представили Piano Genie — 8-клавишный контроллер на основе нейронных сетей для импровизации на фортепиано. Интерактивная демо-версия есть в открытом доступе. Посмотрите импровизацию на Piano Genie, которую…

Команда разработчиков Google AI представили Piano Genie — 8-клавишный контроллер на основе нейронных сетей для импровизации на фортепиано. Интерактивная демо-версия есть в открытом доступе.

Посмотрите импровизацию на Piano Genie, которую опубликовали разработчики контроллера:

Как работает Piano Genie

После первичного нажатия на кнопку контроллера проигрывается одна из 88 нот на фортепиано. Двунаправленная RNN с LTSM кодирует монофонические последовательности фортепиано (88-мерные) в дискретные скрытые переменные (4-мерные). После чего однонаправленный декодер обучается декодировать последовательность нажатия кнопок обратно в музыку. Во время импровизации вывод энкодера заменяется последовательностью нажатия клавиш на контроллере — человек задаёт последовательности, а декодер связывает полученные комбинации с выученными ранее.

Алгоритм Piano Genie
Алгоритм работы Piano Genie

Нейросеть обучалась на 1400 записях фортепианных выступлений конкурса International Piano-e-Competition. «Мы считаем, что автоэнкодеры — многообещающая находка для обучения сопоставлений между сложными и простыми интерфейсами, и надеемся, что наша работа будет способствовать будущим исследованиям в этой области» — написали исследователи в статье.

Работа опубликована на ArXiv. Исходный код модели доступен на GitHub. Протестировать онлайн-версию можно здесь.


Интересные статьи:

7 архитектур нейронных сетей для решения задач NLP

14 октября 2018
neural network nlp architectures

7 архитектур нейронных сетей для решения задач NLP

Искусственная нейронная сеть (ИНС) — вычислительная нелинейная модель, в основе которой лежит нейронная структура мозга, способная обучаться выполнению задач классификации, предсказания, принятия решений, визуализации и некоторых других только благодаря рассмотрению…

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

Любая архитектура ИНС состоит из искусственных нейронов — элементов обработки, имеющих структуру 3 связанных друг с другом слоев: входным, состоящим из одного или более слоев скрытым и выходным.

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

Искусственная нейронная сеть с 4 входами
Искусственная нейронная сеть с 4 входами

Функция активации

Взвешенная сумма со входов — активационный сигнал — проходит через функцию активации для вывода данных из нейрона. Есть несколько видов функции активации: линейная, ступенчатая, сигмоидная, тангенциальная, выпрямительная (Rectified linear unit, ReLu).

Линейная функция

f(x)=ax

Ступенчатая функция

Сигмоида

Функция гиперболического тангенса

Функция линейного выпрямителя

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

С помощью дополнительных скрытых слоев возможно сделать систему более гибкой и мощной. ИНС с многими скрытыми слоями называются глубокими нейронными сетями (deep neural network, DNN); они создают сложные нелинейные связи.

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

1. Многослойный перцептрон

Перцептрон
Перцептрон

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

2. Сверточная нейронная сеть

применение сверточной нейросети

Сверточная нейронная сеть (Convolutional neural network, CNN) содержит один или более объединенных или соединенных сверточных слоев. CNN использует вариацию многослойного перцептрона, рассмотренного выше. Сверточные слои используют  операцию свертки для входных данных и передают результат в следующий слой. Эта операция позволяет сети быть глубже с меньшим количеством параметров.

Сверточные сети показывают выдающиеся результаты в приложениях к картинкам и речи. В статье Convolutional Neural Networks for Sentence Classification автор описывает процесс и результаты задач классификации текста с помощью CNN. В работе представлена модель на основе word2vec, которая проводит эксперименты, тестируется на нескольких бенчмарках и демонстрирует блестящие результаты.

В работе Text Understanding from Scratch авторы показывают, что сверточная сеть достигает выдающихся результатов даже без знания слов, фраз предложений и любых других синтаксических или семантических структур присущих человеческому языку. Семантический разбор, поиск парафраз, распознавание речи — тоже приложения CNN.

3. Рекурсивная нейронная сеть

рекурсивная нейронная сеть

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

4. Рекуррентная нейронная сеть

Рекуррентная нейронная сеть, в отличие от прямой нейронной сети, является вариантом рекурсивной ИНС, в которой связи между нейронами — направленные циклы. Последнее означает, что выходная информация зависит не только от текущего входа, но также от состояний нейрона на предыдущем шаге. Такая память позволяет пользователям решать задачи NLP: распознание рукописного текста или речи. В статье Natural Language Generation, Paraphrasing and Summarization of User Reviews with Recurrent Neural Networks авторы показывают модель рекуррентной сети, которая генерирует новые предложения и краткое содержание текстового документа.

Siwei Lai, Liheng Xu, Kang Liu, и Jun Zhao в своей работе Recurrent Convolutional Neural Networks for Text Classification создали рекуррентную сверточную нейросеть для классификации текста без рукотворных признаков. Модель сравнивается с существующими методами классификации текста — Bag of Words, Bigrams + LR, SVM, LDA, Tree Kernels, рекурсивными и сверточными сетями. Описанная модель превосходит по качеству традиционные методы для всех используемых датасетов.

5. LSTM

LSTM блок с входным, выходным затворами и гейтом забывания
LSTM блок с входным, выходным и гейтом забывания

Сеть долгой краткосрочной памяти (Long Short-Term Memory, LSTM) — разновидность архитектуры рекуррентной нейросети, созданная для более точного моделирования временных последовательностей и их долгосрочных зависимостей, чем традиционная рекуррентная сеть. LSTM-сеть не использует функцию активации в рекуррентных компонентах, сохраненные значения не модифицируются, а градиент не стремится исчезнуть во время тренировки. Часто LSTM применяется в блоках по несколько элементов. Эти блоки состоят из 3 или 4 затворов (например, входного, выходного и гейта забывания), которые контролируют построение информационного потока по логистической функции.

В Long Short-Term Memory Recurrent Neural Network Architectures for Large Scale Acoustic Modeling авторы показывают архитектуру глубокой LSTM рекуррентной сети, которая достигает хороших результатов для крупномасштабного акустического моделирования.

В работе Part-of-Speech Tagging with Bidirectional Long Short-Term Memory Recurrent Neural Network представлена модель для автоматической морфологической разметки. Модель показывает точность 97.4 % в задаче разметки. Apple, Amazon, Google, Microsoft и другие компании внедрили в продукты LSTM-сети как фундаментальный элемент.

6. Sequence-to-sequence модель

Часто Sequence-to-sequence модели состоят из двух рекуррентных сетей: кодировщика, который обрабатывает входные данные, и декодера, который осуществляет вывод.

Читайте: Оценка глубины на изображении при помощи Encoder-Decoder сетей

Sequence-to-Sequence модели часто используются в вопросно-ответных системах, чат-ботах и машинном переводе. Такие многослойные ячейки успешно использовались в sequence-to-sequence моделях для перевода в статье Sequence to Sequence Learning with Neural Networks study.

В Paraphrase Detection Using Recursive Autoencoder представлена новая рекурсивная архитектура автокодировщика, в которой представления — вектора в n-мерном семантическом пространстве, где фразы с похожими значением близки друг к другу.

7. Неглубокие (shallow) нейронные сети

Неглубокие модели, как и глубокие нейронные сети, тоже популярные и полезные инструменты. Например, word2vec — группа неглубоких двухслойных моделей, которая используется для создания векторных представлений слов (word embeddings). Представленная в Efficient Estimation of Word Representations in Vector Space, word2vec принимает на входе большой корпус текста и создает векторное пространство. Каждому слову в этом корпусе приписывается соответствующий вектор в этом пространстве. Отличительное свойство — слова из общих текстов в корпусе расположены близко друг к другу в векторном пространстве.


В статье описаны архитектуры нейронных сетей: глубокий многослойный перцептрон, сверточная, рекурсивная, рекуррентная сети, нейросети долгой краткосрочной памяти, sequence-to-sequence модели и неглубокие (shallow) сети, word2vec для векторных представлений слов. Кроме того, было показано, как функционируют эти сети, и как различные модели справляются с задачами обработки естественного языка. Также отмечено, что сверточные нейронные сети в основном используются для задач классификации текста, в то время как рекуррентные сети хорошо работают с воспроизведением естественного языка или машинным переводом. В следующих части серии будут описаны существующие инструменты и библиотеки для реализации описанных типов нейросетей.


Интересные статьи:

Как работает вариационный автоэнкодер (VAE)

11 октября 2018
вариационный автоэнкодер vae

Как работает вариационный автоэнкодер (VAE)

В противоположность использованию нейросетей в качестве регрессоров или классификаторов, вариационный автоэнкодер (Variational Autoencoder – VAE) — генеративная модель, которая находит применение во многих областях исследований: от генерации новых человеческих лиц…

В противоположность использованию нейросетей в качестве регрессоров или классификаторов, вариационный автоэнкодер (Variational Autoencoder – VAE) — генеративная модель, которая находит применение во многих областях исследований: от генерации новых человеческих лиц до создания полностью искусственной музыки.

Обычный вариационный автоэнкодер
Обычный вариационный автоэнкодер

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

Прежде всего, зачем нужен вариационный автоэнкодер?

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

Специфичное изменение входных данных
Специфичное изменение входных данных

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

В случае, если вы незнакомы с энкодерами, но знаете о свёрточных нейронных сетях (Convolutional Neural Networks — CNNs), то, по сути, вы уже знаете, что делает автоэнкодер.

Энкодер внутри CNN
Энкодер внутри сверточной нейросети

Свёрточные слои принимают большое изображение (к примеру, тензор 3-го ранга размером 299х299х3) и преобразует его в более компактный, плотный вид (к примеру, тензор 1-го ранга размером 1000). Этот сжатый вид затем использует нейросеть для классификации изображения.

Энкодер выполняет похожие операции. Это нейросеть, которая принимает входные данные и выдаёт их в сжатом виде (т.е. выполняет их кодирование), которые содержит достаточно информации для трансформации этих данным следующей нейросетью в желаемый формат. Обычно энкодер обучается одновременно с другими частями нейросети на основе метода обратного распространения, что позволяет ему производить вид кодирования, необходимый в конкретной задаче. В CNN кодирование изображения в массив из 1000 элементов производится таким образом, что этот массив становится пригодным для задач классификации.

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

Классический автоэнкодер
Классический автоэнкодер

Нейросеть обычно обучается как единое целое. Функция потерь выбирается как среднеквадратичная ошибка или как кросс-энтропия между входными и выходными данными, также известная как потеря восстановления (reconstruction loss), которая не позволяет нейросети создавать выходные данные, сильно отличающиеся от входных.

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

Проблема классических автоэнкодеров

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

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

Оптимизация потерь восстановления
Оптимизация потерь восстановления

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

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

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

Вариационные Автоэнкодеры

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

Непрерывность скрытого пространства достигается неожиданным способом: энкодер выдаёт не один вектор размера n, а два вектора размера n – вектор средних значений µ и вектор стандартных отклонений σ.

Схема работы Вариационного автоэнкодера
Схема работы Вариационного автоэнкодера

Вариационные автоэнкодеры формируют параметры вектора длины n из случайных величин Xi, причем i-е элементы векторов µ и σ являются средним и стандартным отклонением i-й случайной величины Xi. Вместе эти величины образуют n-мерный случайный вектор, который посылается на декодер для восстановления данных:

Стохастическая генерация векторов кодирования
Стохастическая генерация векторов кодирования

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

Среднее значение вектора определяет точку, вблизи которой будет вершина вектора, в то время как стандартное отклонение определяет насколько далеко может отстоять вершина от этого среднего. Таким образом, вершина вектора кодирования может лежать внутри n-мерного круга (см. рис. выше). Поэтому входному объекту соответствует уже не одна точка в скрытом пространстве, а некоторая непрерывная область. Этот факт позволяет декодеру работать не с одним единственным вектором кодирования, соответствующим входным данным, а с их набором, благодаря чему в восстановление даже одного изображения вносится доля вариативности. Код реализации такого подхода.

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

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

Для того чтобы достичь этого, в функцию потерь вводится так называемая Kullback–Leibler расходимость (KL divergence). КL расходимость между двумя функциями распределения показывает насколько сильно они отличаются друг от друга. Минимизация KL расходимости означает оптимизацию параметров распределения µ и σ таким образом, что они становятся близки к параметрам целевого распределения.

Для Вариационных Автоэнкодеров KL потери эквивалентны сумме всех KL расходимостей между распределением компонент Xi~N(μi, σi²) в векторе Х и нормальным распределением. Минимум достигается, когда µi = 0 и σi = 1.

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

При использовании KL потерь области кодирования расположены случайным образом в окрестности выделенной точки в скрытом пространстве со слабым учётом сходства между образцами входных данных. Поэтому декодер не способен извлечь что-либо значащее из этого пространства:

Оптимизация с использованием KL потерь
Оптимизация с использованием KL потерь

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

Оптимизация с использованием потерь восстановления и KL потерь
Оптимизация с использованием потерь восстановления и KL потерь

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

Код общей функции потерь

Векторная алгебра

Как мы производим гладкую интерполяцию, о которой было так много сказано выше? Ответ кроется в простой векторной алгебре — рассмотрим её.

Интерполяция между двумя векторами
Интерполяция между двумя векторами

К примеру, вы хотите сгенерировать новый образец как нечто среднее между двумя заданными образцами. В этом случае вы находите разницу между двумя средними векторами этих образцов, делите её пополам и прибавляете этот результат к вектору, который был вычитаемым. Вы получили вектор, который является чем-то средним между двумя заданными векторами. Расшифровывая его, вы получите желаемый результат (см. рис.выше).

Добавление новых особенностей к заданному образцу
Добавление новых особенностей к заданному образцу

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

Улучшения VAE

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

Создание искусственных фото людей
Создание искусственных фото людей

Кроме того, вы можете обучать автоэнкодер, используя LSTM пару энкодер-декодер и модифицированную версию архитектуры seq2seq,и использовать его для дискретных данных. К примеру, генерировать текст или даже производить интерполяцию между MIDI сигнашами, как делает Google Brain’s Magenta’s MusicVAE:

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


Интересные статьи:

Тепловые карты компонент помогают восстановить лица на фотографиях с низким разрешением

8 октября 2018
face-resolution-upscaling-facial-component-heatmap

Тепловые карты компонент помогают восстановить лица на фотографиях с низким разрешением

Результаты многих техник анализа лица полагаются на соответствующее разрешение изображения. Например, распознавание лица не будет работать корректно, если разрешение лица на фотографии низкое. Что такое Super-Resolution Face super-resolution (FSR) или…

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

Что такое Super-Resolution

Face super-resolution (FSR) или лицевая галлюцинация (face hallucination) восстанавливает изображение лица в высоком разрешении (HR) из картинки низкого разрешения (LR). Эта область исследований привлекает к себе интерес в последние годы, однако даже современные методы часто выдают изображения с искаженной лицевой структурой и только частичным восстановлением деталей лица. Методы глубокого обучения для FSR не справляются с восстановление LR-лиц во некоторых позах, причем количество таких поз велико.

Как же решить данную проблему? Есть два варианта:

  • Изменение тренировочных данных с большим количеством поз. Но это все еще приводит к субоптимальным результатам: детали лица размыты или вовсе отсутствуют
  • Напрямую находить лицевые компоненты на LR изображениях. Это может привести к фантомным артефактам в финальном результате.

Но что насчет метода, который восстанавливает изображения учитывая предсказание лицевой структуры? Можем ли мы использовать тепловые карты для представления вероятности возникновения лицевого компонента?

Вскоре мы узнаем об этом, а пока обратимся к предыдущим подходам.

Связанные работы

Методы построения галлюцинации лица могут быть грубо разделены на три категории

  • Подходы основанные на “глобальных моделях”, главная цель которых восстановить низкокачественное изображение путем обучения целостного отображения, например PCA. В частности  Wang и Tang реконструируют HR изображения по коэффициентам PCA от LR — входа. Liu и др. разработали Марковское случайное поле (Markov Random Field (MRF) для уменьшения фантомных артефактов порожденных неправильной оценкой LR-изображения.
  • Kolouri и  Rohde используют оптимальные техники переноса, чтобы преобразовать HR-результат путем интерполяции образцовых HR лиц.
  • Предлагаются “частичные методы” для восстановления отдельных участков лица по отдельности. Например, Tappen и Liu восстанавливают детали лица, деформируя опорные изображения HR;
  • Yang и др. локализуют компоненты лица в изображениях LR с помощью детектора ключевых точек лица, а затем реконструируют отсутствующие HR детали из аналогичных компонентов HR.
  • Глубокое обучение: Xu и др. используют фреймворк GAN для восстановления размытого изображения лица;
  • Zhu и коллеги представили каскадную bi-сеть, названную CBN, которая сначала локализует LR лицевые компоненты, а затем увеличивает разрешения деталей лица.

State-of-the-art идея

Xin Yu и его коллеги предлагают многозадачную глубокую нейронную сеть, которая не только восстанавливает LR-изображения, но и оценивает пространственные положения лицевых компонентов. Их сверточная нейронная сеть (CNN) имеет две ветви: одну для восстановления изображений лица, а другую — для прогнозирования характерных областей лица по тепловыми картам.

Целиком процесс выглядеть следующим образом:

  1. Распознавание признаков (фич) по входящему LR изображению.
  2. Использование пространственного преобразования для выравнивнивания фич-карт.
  3. Оценка тепловых карт лицевых компонентов по улучшенным фич-картам.
  4. Конкатенация оценочных тепловых карт с фич-картами.

Метод позволяет улучшить крошечное выровненное изображение лица (16х16 пикселей) с множителем 8х с сохранением структуры лица.

улучшение качества фотографий с лицами
(a) изображение LR; (б) изображение HR; c) ближайшие соседи; (d) CBN, (e) TDAE, (f) TDAE обучается лучшему набору данных, (g) предлагаемый подход

Обзор модели

Нейросеть имеет следующую структуру:

  1. Многозадачная улучшающая нейросеть (MTUN):
    • Ветка улучшения ( состоит из автоэнкодера, разверточных слоев и сети пространственное трансформации)
    • Ветка оценки теплокарт лица (HEB)
  2. Дискриминационная сеть, которая состоит из сверточных слоев и полносвязных слоев.

архитектура модели

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

2D-фотографии могут иметь широкий диапазон поз. Таким образом, чтобы уменьшить количество обучающих образов, необходимых для обучения HEB, они предлагают использовать сеть пространственных трансформаторов (STN) для выравнивания характеристик с улучшенной дискретизацией перед оценкой тепловых карт.

По оценкам, четыре карты представляют четыре компонента лица: глаза, нос, рот и подбородок (см. Изображение ниже).

Визуализация оценочных тепловых карт лицевого компонента: (a) невыровненное изображение LR; (б) изображение HR; c) карты теплоты; d) результат; (e) Предполагаемые тепловые карты, лежащие в основе результатов
Визуализация оценочных тепловых карт лицевого компонента: (a) невыровненное изображение LR; (б) изображение HR; c) карты теплоты; d) результат; (e) Предполагаемые тепловые карты, лежащие в основе результатов

Функция потерь. Результат использования различных комбинации функции потерь показаны ниже

a. невыровненное изображение LR, b. оригинальное изображение HR, c. только пиксельные потери, d. пиксельные и многофункциональные потери, e. пиксельные, функциональные и дискриминационные потери, f. пиксельные и лицевой структуры потери, g. пиксельные, функциональные и потери структуры h. пиксельные, функциональные, дискриминационные и структурные потери.
a. невыровненное изображение LR, b. оригинальное изображение HR, c. только пиксельные потери, d. пиксельные и многофункциональные потери, e. пиксельные, функциональные и дискриминационные потери, f. пиксельные и лицевой структуры потери, g. пиксельные, функциональные и потери структуры h. пиксельные, функциональные, дискриминационные и структурные потери.

При обучении своей многозадачной улучшающей сети исследователи выбрали последний вариант (h).

Качественные и количественные сравнения

Качественное сравнение предлагаемого подхода с использованием самых современных методов:

Сравнение с самыми современными методами: (a) LR image; (б) изображение HR; c) бикубическая интерполяция; d) VDSR; e) SRGAN; (f) метод Ma и др.; g) CBN; h) TDAE; (i) Предлагаемый подход
Сравнение с самыми современными методами: (a) LR image; (б) изображение HR; c) бикубическая интерполяция; d) VDSR; e) SRGAN; (f) метод Ma и др.; g) CBN; h) TDAE; (i) Предлагаемый подход

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

Количественное сравнение с самыми современными методами приводит нас к тем же выводам. Все методы оценивались по всему тестовому набору данных по среднему значению PSNR и по шкале структурного сходства (SSIM).

Количественные сравнения по всему набору тестовых данных
Количественные сравнения по всему набору тестовых данных

Выводы

Подведем итог вкладу этой работы:

  • Он представляет собой новую многозадачную сеть с повышающей дискретизацией, которая может обрабатывать очень маленькие изображения лица LR (16 x 16 пикселей) с помощью коэффициента масштабирования 8x.
  • Метод не только использует сходство интенсивности изображения, но и оценивает структуру лица с помощью тепловых карт лицевых компонент.
  • Оцененные тепловые карты лицевых компонент обеспечивают не только пространственную информацию о компонентах лица, но также информацию о видимости.
  • Благодаря выравниванию карт функций перед оценкой тепловой карты количество изображений, необходимых для обучения модели, в значительной степени сокращается.

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

Деформирующие автоэнкодеры

2 октября 2018
DAE-deforming-autoencoders-e1537543914660

Деформирующие автоэнкодеры

В настоящее время генеративные модели привлекают к себе огромное внимание в мировой среде машинного обучения. Этот тип моделей имеет практическое применение в различных сферах. Одни из самых эффективных и широко…

В настоящее время генеративные модели привлекают к себе огромное внимание в мировой среде машинного обучения. Этот тип моделей имеет практическое применение в различных сферах. Одни из самых эффективных и широко используемых типов данной модели – это Вариационные Автоэнкодеры (Variational Autoencoders – VAE) и Генеративные состязательные нейросети (Generative Adversarial Networks – GAN).

Деформирующие автоэнкодеры

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

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

Ранние работы

Проблема выявления признаков (feature disentanglement) давно была рассмотрена в литературе на примере обработки изображений и видео, а также анализа текстов. Выявление факторов вариации играет важную роль для управления глубокими нейросетями и понимания их принципа работы.

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

Деформирующий автоэнкодер

Не так давно, Zhixin Shu и коллеги представили новые Деформирующие Автоэнкодеры, или коротко – DAEs (Deforming autoencoders). DAE представляет собой генеративную модель анализа изображений, которая выделяет признаки без дополнительных подсказок. В своей работе, исследователи предлагают способ выделения признаков, предполагая создавать экземпляры объектов посредством деформации «шаблонного» объекта. Это означает, что вариативность объекта может быть разделена на уровни, связанные с пространственными трансформациями формы объекта. Несмотря на простоту идеи, это решение, основанное на глубоких автоэнкодерах и самостоятельном обучении нейросети, доказало свою эффективность в ряде задач.

Описание метода

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

Архитектура предлагаемого деформирующего автоэнкодера
Рис 1. Архитектура предлагаемого деформирующего автоэнкодера

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

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

Архитектура предлагаемого Деформирующего Автоэнкодера с заданной классификацией
Рис.2. Архитектура предлагаемого Деформирующего Автоэнкодера с заданной классификацией

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

Структура Встроенного Деформирующего Автоэнкодера
Рис.3. Структура встроенного Деформирующего Автоэнкодера

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

Результаты

Было показано, что DAE способен успешно выявлять форму и внешний вид объектов во время обучения. Исследователи показали, что Деформирующие Автоэнкодеры с заданной классификацией дают наилучшие результаты как при восстановлении, так и при изучении внешнего вида объектов.

Результаты восстановления MNIST изображений Деформирующим Автоэнкодером
Рис.4. Результаты восстановления MNIST изображений Деформирующим Автоэнкодером

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

  1. Наложении изображений без учителя.
  2. Изучении семантически важных множеств для формы и внешнего вида объектов.
  3. Внутренняя декомпозиция без учителя.
  4. Детектирование локализации без учителя.
Результаты восстановления MNIST изображений Деформирующим Автоэнкодером с заданной классификацией.
Рис.5. Результаты восстановления MNIST изображений Деформирующим Автоэнкодером с заданной классификацией.
Наложение изображений ладоней без учителя
Рис.6. Наложение изображений ладоней без учителя. (а) – Входные изображения. (b) – восстановленные изображения. (c) – изображения текстур, деформированные с использованием среднего декодированной деформации. (d) – среднее входное изображение. (e) – средняя текстура.

defermation interpolation

Smooth interpolation of the latent space representation
Рис.7. Гладкая интерполяция представлений скрытого пространства

Видео, показывающее возможности Деформирующих Автоэнкодеров:

Сравнение с другими современными методами

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

Сравнение результатов работы Деформирующего Автоэнкодера и метода Thewlis и коллег
Рис.8. Сравнение результатов работы Деформирующего Автоэнкодера и метода Thewlis и коллег

Заключение

Lighting interpolation with Intrinsic-DAE
Рис.9. Интерполяция освещения с помощью встроенного DAE

Приведение изображений в каноническую систему координат облегчает оценку альбедо и затенения без дополнительных исследований. Авторы ожидают, что это приведет в будущем к полноценному выявлению признаков (disentanglement) в нормалях, освещении и 3D геометрии.

Исследователи представили Деформирующие Автоэнкодеры как специфичную архитектуру, способную выявлять определённые факторы вариативности – в данном случае это форма и внешний вид объектов. Результаты работы этой модели показывают, что она способна успешно выявлять факторы вариативности посредством применения архитектуры автоэнкодеров, и дают основание полагать, что DAE найдут широкое применение в задачах компьютерного зрения в ближайшем будущем.

Автоэнкодеры: типы архитектур и применение

11 сентября 2018
автоэнкодер

Автоэнкодеры: типы архитектур и применение

Autoencoder (автокодер, автоэнкодер, AE) — нейронная сеть, которая копирует входные данные на выход. По архитектуре похож на персептрон. Автоэнкодеры сжимают входные данные для представления их в latent-space (скрытое пространство), а затем…

Autoencoder (автокодер, автоэнкодер, AE) — нейронная сеть, которая копирует входные данные на выход. По архитектуре похож на персептрон. Автоэнкодеры сжимают входные данные для представления их в latent-space (скрытое пространство), а затем восстанавливают из этого представления output (выходные данные). Цель — получить на выходном слое отклик, наиболее близкий к входному.

Отличительная особенность автоэнкодеров — количество нейронов на входе и на выходе совпадает.

Автокодер состоит из двух частей:

  1. Энкодер: отвечает за сжатие входа в latent-space. Представлен функцией кодирования h = f (x);
  2. Декодер: предназначеа для восстановления ввода из latent-space. Представлен функцией декодирования h = f (x).
Архитектура автокодеров
Архитектура автоэнкодера

Таким образом, автокодер описывают функцией g (f (x)) = r, где r совпадает с изначальным x на входе.

Зачем копировать вход на выход

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

Этого добиваются созданием ограничений для задачи копирования. Один из способов получить полезные результаты от автоэнкодера — ограничить h размерами меньшими , чем x. D этом случае автокодирование называется неполным.

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

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

В этих случаях даже линейный кодер и линейный декодер копируют входные данные на выход, не изучая ничего полезного о распределении.

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


Где применяются автоэнкодеры

Два основных практических применения автоэнкодеров для визуализации данных:

  • сглаживание шума;
  • снижение размерности.

С соответствующими ограничениями по размерности и разреженности автоэнкодеры могут изучать data projections, которые более интересны, чем PCA (метод главных компонент) или другие базовые техники.

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

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

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


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

В этой статье будут описаны четыре следующих типа автокодеров:

  1. Автокодер Vanilla;
  2. Многослойный автокодер;
  3. Сверточный автокодер;
  4. Регуляризованный.

Чтобы проиллюстрировать типы автокодеров, с помощью структуры Keras и датасета MNIST создан пример каждого из них. Код для каждого типа автокодера доступен на GitHub.

Автоэнкодер vanilla

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

Здесь мы видим неполный автокодер, поскольку размер скрытого слоя (64) меньше, чем вход (784). Это ограничение заставит нашу нейронную сеть изучить сжатое представление данных.

Многослойный автоэнкодер

Если одного скрытого слоя недостаточно, автокодер расширяют до большего их количества.

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

Сверточные автоэнкодеры

Можно ли использовать автокодеры со свертками вместо использования с полносвязными слоями?

Ответ — да. И принцип тот же, но только с использованием 3D-векторов вместо 1D-векторов.

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

Регуляризованный автоэнкодер

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

Sparse

Sparse автокодеры обычно изучают образы для других (по сравнению с классификацией) задач. Автоэнкодер, регуляризованный как sparse, реагирует на уникальные характеристики датасета, на котором он был обучен, а не просто действовать в качестве идентификатора. Таким образом, обучая sparse автокодер, получают модель, которая в качестве побочного эффекта изучила полезные образы.

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

В наш скрытый слой мы добавили регулятор активности l1, который будет применять штраф к функции потерь во время фазы оптимизации. Как результат, представление теперь более уникальное по сравнению с автокодером vanilla.

Denoising

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


Интересные статьи по теме:

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

16 мая 2018
svedenie trekov neironnye seti

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

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

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

Но иногда возникают сложности. Так плэйлист, состоящий из треков в жанрах техно, электро и IDM, отражающий настроение или эмоции — не просто набор треков в стиле техно, который намного проще свести.

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

Архитектура сети

Метод основан на глубоком обучении и использует вариационные автоэнкодеры (Variational Autoencoder — VAE) и интерполяцию в неизвестную область. Представление музыкальных данных, архитектура сети, а также способ интерполяции и сам метод описаны ниже.

Для использования метода авторы создали датасет ритмических рисунков трёх популярных электронных направлений: электро-фанк, техно и интеллектуальной танцевальной музыки (IDM), который содержит 1–1.5 часа записи для каждого из жанров. Датасет состоит из 1782 ритмических рисунков. Каждый шаблон представлен как двумерный массив, ось Y которого содержит 6 ударных инструментов, а ось X — время. Размер массива — 6х64 элемента, так как все рисунки имеют длину 64.

Drum patterns in the EDM dataset
Десять образцов ритмических шаблонов в датасете. Инструменты сверху вниз: 1) Большой барабан 2) Малый барабан. 3) Закрытый хай-хэт 4) Открытый хай-хэт. 5) Удар по ободу барабана. 6) Колокольчик. Цвет пикселей соответствует громкости MIDI сигнала. Верхняя строка: Электро-Фанк; Две средних строки: интеллектуальная танцевальная музыка; Две нижних: Техно.

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

Идея в том, что интерполяция в неизвестную область между шаблонами даёт лучшие результаты, чем интерполяция внутри шаблонов. Возникает вопрос: всегда ли это верно? Оказывается, да. Ответ кроется в теории глубокого обучения. Интерполяция в неизвестную область работает лучше из-за нелинейного отображения входных данных в неизвестную область и из неизвестной области на выход системы. В рамках работы генерация взвешенного среднего двух шаблонов даёт перекрёстное затухание (плавное уменьшение громкости одного трека и одновременное увеличение громкости другого). В сущности, данный подход является интерполяцией в закодированном пространстве, т.е. просто линейной комбинацией двух закодированных шаблонов.

Encoding-decoding
Схема процедуры кодирования/декодирования для создания плавного перехода между шаблонами

Вариационный автоэнкодер, описанный в статье, состоит из трёх частей: входного слоя, рекуррентных слоёв — двунаправленных LSTM слоёв с нелинейностью гиперболического тангенса, и полностью соединённых слоёв, которые переводят входные данные в скрытое пространство — вектор из 4-х элементов. В свою очередь, декодер состоит только из полностью соединённых слоёв, выдающих структуру того же размера (6х64). За слоями декодера следует ReLU нелинейная активация.

Encoder Network
Структура энкодера

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

С целью понять, насколько оригинальны генерируемые шаблоны, авторы провели интересный эксперимент, выполнив Анализ Главных Компонентов (Principal Component Analysis — PCA) тренировочных и генерируемых шаблонов посредством интерполяции.

Decoder Network
Структура декодера

Авторы визуализировали оба типа шаблонов в пространстве первых двух главных компонент (которые хранят большое количество деталей).

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

Plot of the patterns in the 2D space
График представления шаблонов в пространстве первых двух главных компонент

В сухом остатке

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

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

Перевел Борис Румянцев, оригинал — Dane Mitriev

 

Нейросеть сжимает изображения без потери качества

24 апреля 2018
Neural Network Compresses Images Without Loss Of Quality

Нейросеть сжимает изображения без потери качества

Графическая информация требует больших ресурсов для хранения, и основная задача разработчиков — научиться сжимать изображения без потери качества. Решение от Computer Vision Laboratory Группа исследователей из швейцарской лаборатории Computer Vision предложили способ обработки изображений…

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

Решение от Computer Vision Laboratory

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

Computer Vision Laboratory Solution

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

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

Такое решение стало возможным благодаря использованию глубоких нейронных сетей (DNNs) в качестве систем сжатия изображения. Мы сталкиваемся с их применением при поиске информации в Google или Яндекс, а также при переводе текста с помощью Google Translate и Яндекс.Переводчик.

Режимы работы GANs

Генеративно-состязательные сети (GANs), разработанные в лаборатории компьютерного зрения, могут функционировать в двух режимах:

а) глобального генерирующего сжатия (GC);

global generative compression

б) выборочного генерирующего сжатия (SC).

selective generative compression

На схеме оригинальное изображение обозначено как x, а карта семантических меток — s. В модели GC семантическая карта может использоваться опционально. В выборочном сжатии она применяется в обязательном порядке.

Другие обозначения на схеме:

  • E — кодировщик изображения;
  • w — код изображения;
  • w (c галочкой) — код после процедуры квантования (второго уровня дискретизации информации);
  • G — генератор сжатого изображения;
  • x (c галочкой) — сжатое изображение.

В схему SC добавляется устройство F, которое извлекает данные из семантической карты и указывает их место генератору.

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

Серьезные погрешности в сжатом изображении возникают при битрейтах ниже 0,1 бит на пиксель (bpp). При стремлении bpp к нулю сохранять полное содержание изображения становится невозможным.

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

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

Заключение

Генеративно-состязательные сети (GANs) стали популярным инструментом для обучения нейронных сетей. Они позволяют создавать более чёткие изображения по сравнению с прежними технологиями.