Być może słyszeliście, że sieci neuronowe są „ uniwersalnymi aproksymatorami funkcji ”. Zasadniczo twierdzenie Cybenko mówi, że dla każdej funkcji odwzorowującej rzeczywiste na rzeczywiste, można to przybliżyć za pomocą sieci neuronowej z funkcjami aktywacji sigmoidalnej. W rzeczywistości okazuje się, że sieci neuronowe pozwalają obliczyć dowolną funkcję obliczalną przez maszynę Turinga (tzn. Wszystko, co można napisać do obliczenia algorytmu). Niestety, dowody te mówią tylko, że dla niektórych skończonych konfiguracji neuronów i ciężarów można przybliżyć dowolną funkcję.
Teoria jest ładna i elegancka, ale twoje pytanie wydaje się być bardziej zgodne z tym, jak faktycznie zakodować obliczenia niektórych funkcji w zestawie neuronów i ciężarów. Aby to zilustrować, rozważ prosty przykład - ekskluzywny-lub. XOR pobiera dwa wejścia, przekazuje je. Gdy jedno i tylko jedno z wejść jest aktywowane, wówczas aktywowany jest węzeł wyjściowy. Gdy oba wejścia nie zostaną aktywowane, węzeł wyjściowy nie zostanie aktywowany.
Zauważ, że trzy ukryte węzły robią różne rzeczy. Najbardziej lewe i prawe najbardziej węzły po prostu przechodzą przez odpowiednie aktywacje węzłów wejściowych. Środkowy neuron przyjmuje dwa wejścia i jakoś je neguje, jeśli oba są włączone. To sprytne łączenie i ponowne łączenie danych wejściowych polega zasadniczo na pracy w sieci neuronowej.
Oczywiście w przypadku bardziej złożonych funkcji łączenie i rekombinowanie musi odbywać się w bardziej sprytny i skomplikowany sposób, ale w istocie dzieje się to na niskim poziomie. Szaloną rzeczą jest to, że to naprawdę wszystko, czego potrzebujesz do obliczenia dowolnej funkcji obliczeniowej! Z drugiej strony maszyny Turinga również są zwodniczo proste ...
Problem polega na tym, że tak naprawdę nie mamy sposobu na magiczne wygenerowanie sieci neuronowej, która oblicza jakąkolwiek dowolną funkcję. Dowody mówią nam tylko, że istnieje sieć, która mogłaby to zrobić. Kiedy trenujemy nasze sieci neuronowe, po prostu staramy się znaleźć sieć, która jest całkiem blisko.
W kontekście rozpoznawania obrazu można wyobrazić sobie wzorce kodowania w sieci. Na przykład, aby rozpoznać liczbę „1”, możesz wyobrazić sobie ukryte węzły, które oczekują, że kolumna pikseli zostanie w większości lub w całości aktywowana, a sąsiednie piksele będą wyłączone. Ten ukryty węzeł mógłby być całkiem dobry w rozpoznawaniu linii prostej w tej konkretnej kolumnie. Złóż ich wystarczająco dużo, a wkrótce masz grupę węzłów, które robią to w wystarczającej liczbie miejsc twojego obrazu, że jeśli pokażę sieć jeden, wystarczająca liczba ukrytych węzłów w linii prostej zostanie aktywowana, wskazując „1”. Problemem jest oczywiście uogólnienie sieci, aby mogła ona rozpoznać zróżnicowany zestaw danych wejściowych.
Mamy nadzieję, że pomoże to zrozumieć mniej więcej koncepcje wykonywania obliczeń przez sieć neuronową. Dotarłeś jednak do punktu, który jest dość ważny w przypadku sieci neuronowych: ogólnie trudno jest w najlepszym razie zrozumieć, dlaczego sieć wypluwa określone dane wyjściowe, zwłaszcza gdy weźmie się pod uwagę, że w przypadku czegoś takiego jak rozpoznawanie obrazu, sieci są ogólnie wystarczająco duże, aby ludzie mieli trudności ze zrozumieniem każdej z ruchomych części maszyny. Dalsza komplikacja polega na tym, że generalnie większość sieci neuronowych nie ma w rzeczywistości pojedynczego ukrytego węzła dla każdej małej funkcji, którą sieć może dowiedzieć się o danych. Zamiast tego wykrycie czegoś w rodzaju linii prostej w celu sklasyfikowania liczby „1” odbyłoby się w sposób niecentralny na wielu ukrytych węzłach. Inne algorytmy,
Jeśli szukasz więcej lektur, zdecydowanie polecam przeczytanie tego samouczka w ai ćpunu. Przeprowadza Cię przez podstawy działania sieci neuronowej, a nawet podaje prosty przykład kodu zachęcający sieci neuronowe do poprowadzenia czołgu do celu. Samouczek nie obejmuje jednak propagacji wstecznej, która jest zdecydowanie najczęstszym sposobem szkolenia sieci neuronowych, i zamiast tego wykorzystuje prosty algorytm genetyczny. Kiedy zacznie mówić o genetyki, myślę, że możesz przestać czytać ...