Недавно я читал о глубоком обучении, и я запутался в терминах (или, скажем, технологиях). В чем разница между
- Сверточные нейронные сети (CNN),
- Ограниченные машины Больцмана (RBM) и
- Авто-кодеры?
Недавно я читал о глубоком обучении, и я запутался в терминах (или, скажем, технологиях). В чем разница между
Автоэнкодер - это простая 3-слойная нейронная сеть, в которой выходные блоки напрямую подключаются к входным блокам . Например, в такой сети:
output[i]
имеет преимущество input[i]
для каждого i
. Как правило, количество скрытых единиц намного меньше, чем количество видимых (вход / выход) единиц. В результате, когда вы передаете данные через такую сеть, он сначала сжимает (кодирует) входной вектор, чтобы «подогнать» его к меньшему представлению, а затем пытается восстановить (декодировать) его обратно. Задача обучения состоит в том, чтобы минимизировать ошибку или реконструкцию, т.е. найти наиболее эффективное компактное представление (кодирование) для входных данных.
RBM разделяет аналогичную идею, но использует стохастический подход. Вместо детерминированного (например, логистического или ReLU) он использует стохастические единицы с определенным (обычно двоичным гауссовым) распределением. Процедура обучения состоит из нескольких этапов выборки Гиббса (распространение: выборка скрытых с учетом видимых предметов; реконструкция: выборка скрытых с учетом скрытых; повторение) и настройка весов для минимизации ошибки реконструкции.
Интуиция за RBM заключается в том, что есть некоторые видимые случайные переменные (например, обзоры фильмов от разных пользователей) и некоторые скрытые переменные (например, жанры фильмов или другие внутренние особенности), и задача обучения состоит в том, чтобы выяснить, как эти два набора переменных на самом деле связаны друг с другом (подробнее об этом примере можно узнать здесь ).
Сверточные нейронные сети чем-то похожи на эти две, но вместо изучения единой глобальной весовой матрицы между двумя слоями, они стремятся найти набор локально связанных нейронов. CNN в основном используются в распознавании изображений. Их название происходит от оператора «свертка» или просто «фильтр». Короче говоря, фильтры - это простой способ выполнить сложную операцию с помощью простой замены ядра свертки. Примените ядро Gaussian Blur, и вы получите его сглаженным. Примените ядро Canny, и вы увидите все края. Примените ядро Gabor, чтобы получить градиентные функции.
(изображение отсюда )
Цель сверточных нейронных сетей состоит не в том, чтобы использовать одно из предопределенных ядер, а в том, чтобы изучать специфичные для данных ядра . Идея та же, что и в случае с автоэнкодерами или RBM - преобразование многих низкоуровневых объектов (например, пользовательских обзоров или пикселей изображения) в сжатое высокоуровневое представление (например, жанры фильмов или края), - но теперь веса изучаются только из нейронов, которые пространственно близко друг к другу.
Все три модели имеют свои преимущества, плюсы и минусы, но, вероятно, наиболее важными свойствами являются:
UPD.
Уменьшение размерности
Когда мы представляем некоторый объект как вектор из элементов, мы говорим, что это вектор в мерном пространстве. Таким образом, уменьшение размерности относится к процессу уточнения данных таким образом, что каждый вектор данных преобразуется в другой вектор в мерном пространстве (вектор с элементами), где . Вероятно, наиболее распространенный способ сделать это - PCA . Грубо говоря, PCA находит «внутренние оси» набора данных (называемые «компонентами») и сортирует их по важности. Первыйнаиболее важные компоненты затем используются в качестве новой основы. Каждый из этих компонентов может рассматриваться как функция высокого уровня, описывающая векторы данных лучше, чем исходные оси.
Оба - автокодеры и RBM - делают одно и то же. Взяв вектор в мерном пространстве, они переводят его в мерный, стараясь сохранить как можно больше важной информации и в то же время убрать шум. Если тренировка автоэнкодера / RBM прошла успешно, каждый элемент результирующего вектора (т.е. каждая скрытая единица) представляет что-то важное в объекте - форму брови на изображении, жанр фильма, область исследования в научной статье и т. Д. Вы взять много шумных данных в качестве входных данных и производить гораздо меньше данных в гораздо более эффективном представлении.
Глубокие архитектуры
Итак, если у нас уже был PCA, какого черта мы придумали автоэнкодеры и RBM? Оказывается, что PCA допускает только линейное преобразование векторов данных. То есть, имея главных компонентов , вы можете представлять только векторы . Это уже довольно хорошо, но не всегда достаточно. Независимо от того, сколько раз вы будете применять PCA к данным - отношения всегда будут оставаться линейными.
Автоэнкодеры и RBM, с другой стороны, являются нелинейными по своей природе, и, таким образом, они могут выучить более сложные отношения между видимыми и скрытыми единицами. Кроме того, они могут быть сложены , что делает их еще более мощными. Например, вы тренируете RBM с видимыми и скрытыми юнитами, затем вы помещаете другой RBM с видимыми и скрытыми юнитами поверх первого и тоже обучаете его и т. Д. И точно так же, как с автоэнкодерами.
Но вы не просто добавляете новые слои. На каждом слое вы пытаетесь узнать наилучшее возможное представление данных из предыдущего:
На изображении выше есть пример такой глубокой сети. Мы начинаем с обычных пикселей, переходим к простым фильтрам, затем с элементами лица и, наконец, получаем целые лица! Это суть глубокого обучения .
Теперь обратите внимание, что в этом примере мы работали с данными изображения и последовательно брали все большие и большие области пространственно близких пикселей. Разве это не похоже? Да, потому что это пример глубокой сверточной сети. Будь то на основе автоэнкодеров или RBM, он использует свертку, чтобы подчеркнуть важность местности. Вот почему CNN несколько отличаются от автоэнкодеров и RBM.
классификация
Ни одна из моделей, упомянутых здесь, не работает в качестве алгоритмов классификации как таковых. Вместо этого они используются для предварительной подготовки - изучения трансформаций из низкоуровневого и трудоемкого представления (например, пикселей) в высокоуровневое. Как только глубокая (или, может быть, не такая глубокая) сеть предварительно обучена, входные векторы преобразуются в лучшее представление, и результирующие векторы, наконец, передаются в реальный классификатор (такой как SVM или логистическая регрессия). На изображении выше это означает, что в самом низу есть еще один компонент, который фактически выполняет классификацию.
Все эти архитектуры могут быть интерпретированы как нейронная сеть. Основное различие между AutoEncoder и Convolutional Network заключается в уровне сетевой проводки. Сверточные сети в значительной степени зашиты. Операция свертки в значительной степени локальна в области изображений, что означает гораздо больше разреженности в количестве соединений в представлении нейронной сети. Операция пула (подвыборки) в домене изображений также представляет собой аппаратный набор нейронных соединений в нейронном домене. Такие топологические ограничения на структуру сети. Учитывая такие ограничения, обучение CNN изучает лучшие веса для этой операции свертки (На практике есть несколько фильтров). CNN обычно используются для задач изображения и речи, где сверточные ограничения являются хорошим допущением.
Напротив, автоэнкодеры почти ничего не указывают на топологию сети. Они гораздо более общие. Идея состоит в том, чтобы найти хорошее нейронное преобразование, чтобы восстановить вход. Они состоят из кодера (проецирует ввод в скрытый слой) и декодера (репроектирует скрытый слой для вывода). Скрытый слой изучает набор скрытых функций или скрытых факторов. Линейные автоэнкодеры охватывают то же подпространство с PCA. Учитывая набор данных, они изучают количество основ, чтобы объяснить основную структуру данных.
RBM также являются нейронной сетью. Но интерпретация сети совершенно иная. RBM интерпретируют сеть как не прямую связь, а двудольный граф, где идея состоит в том, чтобы изучить совместное распределение вероятностей скрытых и входных переменных. Они рассматриваются как графическая модель. Помните, что и AutoEncoder, и CNN изучают детерминированную функцию. УКР, с другой стороны, является генеративной моделью. Он может генерировать образцы из изученных скрытых представлений. Существуют разные алгоритмы обучения УКР. Однако, в конце концов, после изучения RBM, вы можете использовать вес сети, чтобы интерпретировать ее как сеть с прямой связью.
источник
RBM можно рассматривать как своего рода вероятностный автоматический кодировщик. На самом деле было показано, что при определенных условиях они становятся эквивалентными.
Тем не менее, показать эту эквивалентность гораздо сложнее, чем просто поверить, что они разные звери. Действительно, мне трудно найти много общего между этими тремя, как только я начинаю присматриваться.
Например, если вы запишите функции, реализованные автоматическим кодировщиком, RBM и CNN, вы получите три совершенно разных математических выражения.
источник
Я не могу рассказать вам много о RBM, но авто-кодеры и CNN - это разные вещи. Автоэнкодер - это нейронная сеть, которая обучается неконтролируемым образом. Цель автоматического кодера состоит в том, чтобы найти более компактное представление данных, изучая кодер, который преобразует данные в их соответствующее компактное представление, и декодер, который восстанавливает исходные данные. Часть кодировщика автоэнкодеров (и первоначально RBM) использовалась для изучения хороших начальных весов более глубокой архитектуры, но есть и другие приложения. По сути, автоэнкодер изучает кластеризацию данных. Напротив, термин CNN относится к типу нейронной сети, в которой используется оператор свертки (часто это свертка 2D, когда он используется для задач обработки изображений) для извлечения признаков из данных. В обработке изображений, фильтры, которые свернуты с изображениями, обучаются автоматически для решения поставленной задачи, например, задачи классификации. Независимо от того, является ли критерий обучения регрессия / классификация (контролируемая) или реконструкция (не контролируемая), это не связано с идеей сверток как альтернативы аффинным преобразованиям. Вы также можете иметь CNN-автоэнкодер.
источник