Я только что прочитал статью Джеффа Хинтона о преобразовании автоэнкодеров
Хинтон, Крижевский и Ван: Преобразование авто-кодировщиков . В искусственных нейронных сетях и машинном обучении, 2011.
и очень хотел бы поиграть с чем-то вроде этого. Но, прочитав его, я не смог получить достаточно подробностей из статьи о том, как я мог бы это реализовать.
- Кто-нибудь знает, как должно работать отображение между входными пикселями в капсулы?
- Что именно должно происходить в единицах распознавания?
- Как это надо тренировать? Это просто стандартная задняя опора между каждым соединением?
Еще лучше будет ссылка на некоторый исходный код для этого или что-то подобное.
neural-network
deep-learning
autoencoder
Дэниел Слэйтер
источник
источник
Ответы:
Я собрал несколько примеров кода tenorflow, чтобы помочь объяснить (полный, рабочий код в этой сути ). Этот код реализует капсульную сеть из первой части раздела 2 в документе, который вы связали:
Это зависит от структуры сети. Для первого эксперимента в этой статье (и кода выше), каждая капсула имеет восприимчивое поле, которое включает в себя все входное изображение. Это самая простая договоренность. В этом случае это полностью связанный слой между входным изображением и первым скрытым слоем в каждой капсуле.
Альтернативно, восприимчивые поля капсулы могут быть расположены больше как ядра CNN с шагами, как в более поздних экспериментах в этой статье.
Единицы распознавания - это внутреннее представление каждой капсулы. Каждая капсула использует это внутреннее представление для расчета
p
, вероятности присутствия функции капсулы иxy
предполагаемых значений перевода. Рисунок 2 в этом документе - проверка, чтобы убедиться, что сеть учитсяxy
правильно использовать (это так).В частности, вы должны обучить его как автоэнкодер, используя потери, которые навязывают сходство между сгенерированным выводом и оригиналом. Среднеквадратическая ошибка хорошо работает здесь. Помимо этого, да, вам нужно будет распространять градиентный спуск с помощью backprop.
источник