Biorąc pod uwagę sieć neuronową która przyjmuje jako dane wejściowe punktów danych: . Mówimy, że jest niezmienną permutacją, jeśli
Czy ktoś mógłby polecić punkt początkowy (artykuł, przykład lub inny artykuł) dla niezmienniczych sieci neuronowych permutacji?
neural-networks
machine-learning
reference-request
Josef Ondrej
źródło
źródło
Odpowiedzi:
O ile mi wiadomo, nikt tego nie próbował ze względu na strukturę sieci. Każde wejście ma zestaw wag, które są połączone z większą liczbą wejść. Jeśli wejścia się zmienią, wyjście też .
Możesz jednak zbudować sieć zbliżającą się do tego zachowania. W zestawie szkoleniowym korzystaj z uczenia wsadowego i dla każdej próbki szkoleniowej podaj wszystkie możliwe permutacje dla sieci, tak aby uczyła się , że jest niezmienna permutacji. To nigdy nie będzie dokładnie niezmienne, może po prostu być blisko .
Innym sposobem na to jest replikacja wag dla wszystkich danych wejściowych. Załóżmy na przykład, że masz 3 wejścia (i0, i1, i2), a następna ukryta warstwa ma 2 węzły (hl0, hl1) i funkcję aktywacji F. Zakładając, że warstwa jest w pełni połączona, masz 2 wagi w0 i w1. Węzły warstwy ukrytej hl0 i hl1 są podane odpowiednio przez
hl0 = F (i0w0 + i1w0 + i2w0)
hl1 = F (i0w1 + i1w1 + i2w1)
W ten sposób otrzymujesz ukrytą warstwę, której wartości są permutacyjne niezmienne od danych wejściowych. Odtąd możesz uczyć się i budować resztę sieci według własnego uznania. Jest to podejście wywodzące się z warstw splotowych.
Nie na temat, wydaje się, że to fajny projekt. Jeśli chcesz współpracować przy jakimś projekcie badawczym, skontaktuj się ze mną (sprawdź mój profil)
źródło
Oto kilka, które mogą być tym, czego szukasz:
źródło
Zaimplementowałem tutaj warstwę permutacyjną za pomocą Keras: https://github.com/off99555/superkeras/blob/master/permutational_layer.py
Możesz wywołać
PermutationalModule
funkcję, aby z niej skorzystać.Zaimplementowano w oparciu o ten dokument: https://arxiv.org/pdf/1612.04530.pdf
Chodzi o porównanie wszystkich par N ^ 2 par z N danych wejściowych, użycie modelu ze wspólnymi wagami, a następnie użycie funkcji pulowania N razy na N danych wejściowych. Dane wyjściowe można użyć ponownie w puli, ale w dokumencie nie wspominają o kolejnej puli.
źródło