Почему автоэнкодеры для уменьшения размера симметричны?

13

Я ни в коем случае не эксперт по автоэнкодерам или нейронным сетям, так что извините, если это глупый вопрос.

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

[X]N1=100N2=25(N3=2)N4=25N5=100[X]

где - входные данные, а - количество узлов в м слое.N l lXNll

Теперь мой вопрос: зачем нам симметричная архитектура? Разве зеркало глубокой фазы «сжатия» не означает, что у нас может быть такая же сложная фаза «декомпрессии», которая приводит к выходу из 2 узлов, который не обязательно должен быть очень интуитивным? Другими словами, разве более простая фаза декодирования не приведет к тому, что вывод слоя с 2 узлами тоже обязательно будет проще?

Я думаю, что чем менее сложна фаза декомпрессии, тем проще (более линейным?) 2D представление. Более сложная фаза декомпрессии позволила бы более сложное 2D представление.

DCL
источник

Ответы:

13

Нет конкретного ограничения на симметрию автоэнкодера.

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

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

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

ncasas
источник
7

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

Попробуйте их обоих

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

Анкит Сури
источник
2

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

JamesLi
источник