Есть ли какая-то разница между обучением сложному автоэнкодеру и двухслойной нейронной сети?

14

Допустим, я пишу алгоритм построения двухуровневого сложного автоэнкодера и двухслойной нейронной сети. Это одни и те же вещи или разница?

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

RockTheStar
источник

Ответы:

16

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

Как правило, автоэнкодеры обучаются неконтролируемым, жадным, послойным способом. (Нет меток, начните обучение только с первого слоя сети, а затем добавляйте новые слои по мере продвижения.) Веса можно узнать, используя различные методы, начиная от «пакетного» градиентного спуска (пожалуйста, не делайте этого), к мини-пакетному стохастическому градиентному спуску (SGD), к квазиньютоновским методам, таким как L-BFGS.

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

Преимущества этого способа обучения нейронных сетей:

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

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

sabalaba
источник
Меня смущает второй шаг, когда вы обучаете уровень кодирования уровню классификации (например, слою softmax) для задачи классификации. Вы снова используете набор данных обучения для этой части, чтобы изучить метки? Я нахожу это странным, потому что тренировочный набор просто использовался, чтобы узнать о себе.
парень
Это не имеет большого смысла, если у вас есть все помеченные данные в любом случае. Это больше подходит для ситуаций, когда у вас есть гораздо больше немаркированных данных для предварительной подготовки, а затем используйте помеченные «обучающие» данные для точной настройки.
мяу