Wynik Cybenko jest dość intuicyjny, co mam nadzieję przekazać poniżej; trudniejsze jest to, że dążył zarówno do ogólności, jak i do minimalnej liczby ukrytych warstw. Wynik Kołmogorowa (wspomniany przez vzn) faktycznie zapewnia silniejszą gwarancję, ale jest nieco mniej istotny dla uczenia maszynowego (w szczególności nie buduje standardowej sieci neuronowej, ponieważ węzły są niejednorodne); ten wynik z kolei jest zniechęcający, ponieważ na powierzchni są tylko 3 strony rejestrujące pewne ograniczenia i funkcje ciągłe, ale w rzeczywistości konstruuje zestaw fraktali. Chociaż wynik Cybenko jest niezwykły i bardzo interesujący ze względu na dokładne techniki, których używa, wyniki tego smaku są bardzo szeroko stosowane w uczeniu maszynowym (i mogę wskazać innym).
Oto ogólne podsumowanie, dlaczego wynik Cybenko powinien się utrzymać.
- Funkcja ciągła w zwartym zestawie może być aproksymowana przez funkcję częściową stałą.
- Częściowo stała funkcja może być przedstawiona w następujący sposób jako sieć neuronowa. Dla każdego regionu, w którym funkcja jest stała, użyj sieci neuronowej jako funkcji wskaźnika dla tego regionu. Następnie zbuduj ostatnią warstwę z pojedynczym węzłem, którego wejściowa kombinacja liniowa jest sumą wszystkich wskaźników, o wadze równej stałej wartości odpowiedniego regionu w pierwotnej funkcji stałej częściowej.
Odnosząc się do pierwszego punktu powyżej, można to uznać za stwierdzenie „ciągła funkcja w zwartym zestawie jest jednolicie ciągła”. Dla nas oznacza to, że możesz wziąć swoją funkcję ciągłą ponad , i jakiś błąd docelowy , a następnie możesz gridować w skali (kończąc z zgrubnie podklubami), dzięki czemu funkcja, która jest stała w każdym podmodule, znajduje się w funkcji docelowej. ϵ > 0 [ 0 , 1 ] d τ > 0 ( 1 / τ ) d ϵ[ 0 , 1 ]reϵ > 0[ 0 , 1 ]reτ> 0( 1 / τ)reϵ
Teraz sieć neuronowa nie może dokładnie reprezentować wskaźnika, ale możesz podejść bardzo blisko. Załóżmy, że „funkcja przenoszenia” jest sigmoidem. (Funkcja przenoszenia to funkcja ciągła, którą stosuje się do liniowej kombinacji danych wejściowych w celu uzyskania wartości węzła sieci neuronowej.) Następnie, przez zwiększenie ciężarów, wyprowadzasz coś bliskiego 0 lub bliskiego 1, aby uzyskać więcej danych wejściowych. Jest to zgodne z rozwojem Cybenko: zauważ, że potrzebuje on funkcji, które mają być równe 0 lub 1 w limicie: z definicji limitu otrzymujesz dokładnie to, co mówię, co oznacza, że popychasz rzeczy arbitralnie blisko 0 lub 1.
(Zignorowałem funkcję przenoszenia w końcowej warstwie; jeśli jest tam i jest ciągła, wówczas możemy dopasować dowolne odwzorowanie do poprzez zastąpienie stałych wag czymś na odwrotnym obrazie tej stałej zgodnie z transferem funkcjonować.)[ 0 , 1 ]
Zauważ, że powyższe może wydawać się obejmować kilka warstw: powiedzmy 2, aby zbudować wskaźniki na kostkach, a następnie ostatnią warstwę wyjściową. Cybenko starał się o dwa punkty ogólności: minimalną liczbę ukrytych warstw i elastyczność w wyborze funkcji przenoszenia. Opisałem już, jak on wypracowuje elastyczność w funkcji transferu.
Aby uzyskać minimalną liczbę warstw, unika powyższej konstrukcji i zamiast tego używa analizy funkcjonalnej, aby rozwinąć sprzeczność. Oto szkic argumentu.
Ostatni węzeł oblicza liniową kombinację elementów warstwy poniżej i stosuje do niego funkcję przenoszenia. Ta liniowa kombinacja jest liniową kombinacją funkcji i jako taka sama w sobie jest funkcją, funkcją w ramach pewnej podprzestrzeni funkcji, rozpiętej przez możliwe węzły w ukrytej warstwie.
Podprzestrzeń funkcji jest jak zwykła podprzestrzeń o skończonych wymiarach, z tą główną różnicą, że potencjalnie nie jest to zamknięty zbiór; dlatego argumenty cybenko zamykają tę podprzestrzeń. Próbujemy udowodnić, że to zamknięcie zawiera wszystkie funkcje ciągłe; oznacza to, że jesteśmy arbitralnie blisko wszystkich funkcji ciągłych.
Gdyby przestrzeń funkcji była prosta (przestrzeń Hilberta), moglibyśmy argumentować w następujący sposób. Wybierz docelową funkcję ciągłą, która nie powinna leżeć w podprzestrzeni, i rzutuj ją na ortogonalne dopełnienie podprzestrzeni. Ta reszta musi być niezerowa. Ale ponieważ nasza podprzestrzeń może przedstawiać takie rzeczy jak te małe kostki powyżej, możemy znaleźć jakiś obszar tej resztki, dopasować do niej małą kostkę (jak wyżej), a tym samym zbliżyć się do naszej funkcji celu. Jest to sprzeczność, ponieważ projekcje wybierają minimalne elementy. (Zauważ, że zostawiam coś tutaj: argument Cybenko nie buduje żadnych małych kostek, zajmuje się tym również ogólnie; tutaj używa formy twierdzenia o reprezentacji Riesza i właściwości funkcji przenoszenia (jeśli pamiętam poprawnie, dla tego kroku istnieje osobny lemat,
Nie znajdujemy się w przestrzeni Hilberta, ale możemy użyć twierdzenia Hahna-Banacha, aby zastąpić powyższy krok projekcji (zauważ, że Hahn-Banach używa aksjomatu wyboru).
Teraz chciałbym powiedzieć kilka rzeczy o wyniku Kołmogorowa. Chociaż wynik ten najwyraźniej nie potrzebuje tego rodzaju tła Cybenko, osobiście uważam, że jest on znacznie bardziej onieśmielający.
Oto dlaczego. Wynik Cybenko jest gwarancją przybliżenia : nie oznacza, że możemy dokładnie reprezentować cokolwiek. Z drugiej strony wynik Kołmogorowa zapewnia równość . Co śmieszniejsze, mówi rozmiar sieci: potrzebujesz tylko węzłów. Aby osiągnąć to wzmocnienie, istnieje oczywiście pewien haczyk, o którym wspomniałem powyżej: sieć jest heterogeniczna, co oznacza, że wszystkie funkcje przenoszenia nie są takie same.O ( d2))
Okej, więc z tym wszystkim, jak to możliwe?
Wróćmy do naszych kostek powyżej. Zauważ, że musieliśmy piec z precyzją: na każde musimy wracać i wybierać bardziej wyrafinowane . Ponieważ pracujemy z (skończonymi) liniowymi kombinacjami wskaźników, nigdy dokładnie nie reprezentujemy niczego. (sytuacja pogorszy się tylko wtedy, gdy uwzględnisz przybliżone działanie sigmoidów).τ > 0ϵ > 0τ> 0
Więc jakie jest rozwiązanie? A może poradzimy sobie ze wszystkimi skalami jednocześnie? Nie zmyślam tego: dowodem Kołmogorowa jest skuteczne konstruowanie ukrytej warstwy jako zestawu fraktali. Innymi słowy, są to zasadniczo krzywe wypełniające przestrzeń, które odwzorowują na ; w ten sposób, mimo że mamy kombinację funkcji jednowymiarowych, możemy dopasować dowolną funkcję wielowymiarową. W rzeczywistości możesz heurystycznie uzasadnić, że jest „poprawny” za pomocą absurdalnego argumentu liczenia: piszemy funkcję ciągłą od do za pomocą funkcji ciągłych jednowymiarowych i dlatego, aby uchwycić wszystkie interakcje między współrzędnymi, potrzebujemy[ 0 , 1 ] d O ( d 2 ) R d R O ( d 2 )[0 , 1 ][ 0 , 1 ]reO ( d2))RreRO ( d2)) Funkcje...
Zauważ, że wynik Cybenko, ze względu na użycie tylko jednego rodzaju funkcji przesyłania, jest bardziej odpowiedni dla uczenia maszynowego. Twierdzenia tego typu są bardzo powszechne w uczeniu maszynowym (vzn zasugerował to w swojej odpowiedzi, jednak odniósł się do wyniku Kołmogorowa, który jest mniej przydatny ze względu na niestandardowe funkcje przenoszenia; jest to osłabione w niektórych bardziej fantazyjnych wersjach wyniku Kołmogorowa (wytworzonych przez inni autorzy), ale nadal dotyczą fraktali i co najmniej dwóch funkcji przenoszenia).
Mam kilka slajdów na te tematy, które mógłbym opublikować, jeśli jesteś zainteresowany (mam nadzieję, że mniej chaotyczny niż powyższy, i mam kilka zdjęć; napisałem je, zanim jeszcze opanowałem Hahna-Banacha). Myślę, że oba dowody są bardzo, bardzo ładne. (Mam też kolejną odpowiedź na te tematy, ale napisałem ją, zanim omieszałem wynik Kołmogorowa).