Могу ли я использовать ReLU в автоэнкодере в качестве функции активации?


11

При реализации автоэнкодера с нейронной сетью большинство людей используют сигмоид в качестве функции активации.

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

Ответы:


5

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

Чаглар Гюльчере (из лаборатории Йошуа Бенжио) сказал, что он успешно использовал следующую технику в вопросах знания: Важность предварительной информации для оптимизации :

обучите первый DAE как обычно, но с выпрямителями в скрытом слое: a1(x) = W1 x + b1 h1 = f1(x) = rectifier(a1(x)) g1(h1) = {sigmoid}(V1 h1 + c1) минимизируйте кросс-энтропию или потери MSE, сравнивая g1 (f1 (коррупционный (x))) и x. сигмоид является необязательным в зависимости от данных.

обучите 2-й DAE с добавленным шумом перед выпрямителем f1 и используйте единицы восстановления softplus с потерей MSE: h2 = f2(h1) = rectifier(W2 h1 + b2) g2(h2) = softplus(V2 h2 + c2) минимизируйте‖f1(x)−g2(f2(rectifier(corrupt(a1(x)))))‖2+λ1‖W‖1+λ2‖W‖2

Xavier Glorot, а также из лаборатории Bengio, сказал он сделал то же самое для замены , кроме с штрафа «на значения активации» (предположительно ?) В обоих доменов адаптации для Крупномасштабная классификация настроений: подход глубокого обучения (ICML 2011) и в нейронных сетях глубокого разреженного выпрямителя (AISTATS 2011).‖W‖1L1‖g2(…)‖1


Спасибо за быстрый ответ! Таким образом, вы говорите, что есть некоторая проблема в оптимизации auteencoder, когда вместо Sigmoid используется ReLU?
— RockTheStar

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

Я экспериментирую с простым автоэнкодером в наборе данных MNIST. Я использую полностью подключенные сети с архитектурой 784-128-64-2-64-128-784. Я использую relus везде, но я экспериментирую со слоем узкого места (relu или linear) и выходным слоем (relu или сигмоид). Использование выпрямителя на выходе приводит к ухудшению производительности; сигмоид делает лучше Для сигмоидального выхода, линейное узкое место, кажется, немного лучше. Поэтому моя любимая комбинация для этих двух слоев - линейная / сигмовидная. (Кстати, использование сигмоидов на всех слоях делает его явно хуже.)
— amoeba

@ameoba Меня не удивляет, что выходы relu плохие: если вы знаете, что выходы имеют определенные границы, имеет смысл использовать функцию активации, которая ограничивает вас этими границами. Я не очень опытный в этой области, но я бы, вероятно, попробовал ELU или негерметичный ReLU для скрытых слоев.
— Дугал

2
Ого, я не знала о ELU! Большое спасибо за совет, Дугал. Я попробовал их, и они работают лучше. Глубокое обучение удивительно: новые трюки появляются каждый год, и никто не знает, почему одни работают лучше, чем другие. (CC для @RockTheStar). Кстати, я также считаю, что оптимизатор Adam работает довольно круто.
— амеба
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.