Poprzednie wyzwania gry w golfa w sieci neuronowej ( to i tamto ) zainspirowały mnie do postawienia nowego wyzwania:
Wyzwanie
Znajdź najmniejszą sieć neuronową ze sprzężeniem zwrotnym, taką, że biorąc pod uwagę dowolny 4-wymiarowy wektor wejściowy z wpisami liczb całkowitych w , wyjścia sieciowe pomocą błąd współrzędnych ściśle mniejszy niż .
Dopuszczalność
W przypadku tego wyzwania sieć neuronowa typu feed-forward jest definiowana jako kompozycja warstw . Warstwa jest funkcją , która jest określona przez matrycę ∈ R m x n z ciężarkami , wektor b ∈ R m z odchyleń , i aktywacja funkcji F : R → R , który jest stosowany coordinate- mądry:
Ponieważ funkcje aktywacyjne można dostosować do dowolnego zadania, musimy ograniczyć klasę funkcji aktywacyjnych, aby wyzwanie było interesujące. Dozwolone są następujące funkcje aktywacji:
Tożsamość.
ReLU.
Softplus.
Styczna hiperboliczna.
Sigmoid.
Ogólnie rzecz biorąc, dopuszczalne sieć neuronowa ma postać z jakiegoś , gdzie każda warstwa jest określony przez wag , odchyleń i funkcji aktywacji z powyższej listy. Na przykład dopuszczalna jest następująca sieć neuronowa (chociaż nie spełnia celu wydajności tego wyzwania, może być przydatnym gadżetem):
Ten przykład pokazuje dwie warstwy. Obie warstwy mają zerowe obciążenie. Pierwsza warstwa wykorzystuje aktywację ReLU, a druga aktywację tożsamości.
Punktacja
Twój wynik to łączna liczba niezerowych wag i odchyleń.
(Np. Powyższy przykład ma wynik 16, ponieważ wektory odchylenia są równe zero.)
źródło
Odpowiedzi:
Oktawy ,
96 88 87 84 76 5450 obciążników i odchyleńTa 6-warstwowa sieć neuronowa jest w zasadzie 3, etap sortowania sieci zbudowana z bardzo prosty
min
/max
sieci jako składnika. Jest to w zasadzie przykładowa sieć z wikipedii, jak pokazano poniżej, z niewielką modyfikacją: Pierwsze dwa porównania są wykonywane równolegle. Aby ominąć liczby ujemne przez ReLU, najpierw dodajemy 100, a następnie odejmujemy 100 na końcu.Dlatego należy to uznać za punkt odniesienia, ponieważ jest to naiwne wdrożenie. Jednak idealnie sortuje wszystkie możliwe liczby, które nie mają zbyt dużej wielkości. (Możemy dostosować zakres, zastępując 100 innym numerem).
Wypróbuj online!
składnik maks./min
Istnieje (
znacznie mniej elegancki,teraz bardziej elegancki, dzięki @xnor!) Sposób na znalezienie minimum i maksimum dwóch liczb przy użyciu mniejszej liczby parametrów:Oznacza to, że musimy używać znacznie mniej obciążeń i stronniczości.
Dzięki @Joel za wskazanie, że wystarczy, aby wszystkie liczby były dodatnie w pierwszym kroku, i odwrócenie go w ostatnim, co daje -8 wag. Dzięki @xnor za wskazanie jeszcze krótszej metody max / min, która daje -22 wagi! Dzięki @ DustinG.Mixon za końcówkę łączenia niektórych matryc, które dają kolejne -4 wagi!
Wypróbuj online!
źródło
(a - relu(a-b), b + relu(a-b))
?