2

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

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

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

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

Вопрос: Какова наилучшая конфигурация для обучения полностью неконтролируемой многослойной восстановительной нейронной сети? Сначала по слоям, а затем какая-то тонкая настройка? Почему моя конфигурация не работает?

ответ

3

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

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

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

Я не знаю, должно ли это как-то соответствовать стандартным реализациям, но я нигде не нашел этого трюка.