Дана нейронная сеть которая принимает в качестве входных данных точек: . Мы говорим, что является перестановкой, если
для любой перестановки .
Может ли кто-нибудь порекомендовать отправную точку (статью, пример или другую статью) для нейронных сетей, инвариантных к перестановкам?
neural-networks
machine-learning
reference-request
Йозеф Ондрей
источник
источник
Ответы:
Насколько я знаю, никто не пробовал это из-за структуры сети. Каждый вход имеет набор весов, которые связаны с большим количеством входов. Если входы переключатся, выход тоже будет .
Тем не менее, вы можете построить сеть, которая подходит к этому поведению. В вашем обучающем наборе используйте пакетное обучение и для каждой обучающей выборки укажите все возможные перестановки в сети, чтобы она научилась быть инвариантной по перестановкам. Это никогда не будет точно инвариантным, оно просто может быть близко .
Другой способ сделать это - скопировать веса для всех входных данных. Например, предположим, что у вас есть 3 входа (i0, i1, i2), а следующий скрытый слой имеет 2 узла (hl0, hl1) и функцию активации F. Предполагая, что у вас полностью связанный слой, у вас есть 2 веса w0 и w1. Узлы скрытого слоя hl0 и hl1 задаются соответственно
hl0 = F (i0w0 + i1w0 + i2w0)
hl1 = F (i0w1 + i1w1 + i2w1)
Таким образом, давая вам скрытый слой, значения которого являются перестановками, инвариантными от ввода. Отныне вы можете изучать и строить остальную сеть по своему усмотрению. Это подход, полученный из сверточных слоев.
Не по теме, это похоже на крутой проект. Если вы хотите сотрудничать в каком-либо исследовательском проекте, свяжитесь со мной (проверьте мой профиль)
источник
Вот некоторые из них, которые могут быть тем, что вы ищете:
источник
Я реализовал здесь Перестановочный слой, используя Keras: https://github.com/off99555/superkeras/blob/master/permutational_layer.py
Вы можете позвонить
PermutationalModule
функцию, чтобы использовать ее.Реализовано после этого документа: https://arxiv.org/pdf/1612.04530.pdf
Идея состоит в том, чтобы сравнить все пары из N ^ 2 пар из N входов, использовать модель с общими весами, а затем использовать функцию объединения N раз на N входах. Вывод, который вы можете использовать снова, но в статье не упоминается о другом пуле.
источник