Próbuję dowiedzieć się, jak sieć neuronowa działa na rozpoznawanie obrazów. Widziałem kilka przykładów i stałem się jeszcze bardziej zdezorientowany. W przykładzie rozpoznawania liter obrazu 20 x 20 wartości każdego piksela stają się warstwą wejściową. A więc 400 neuronów. Następnie ukryta warstwa neuronów i 26 neuronów wyjściowych. Potem wytrenuj sieć, a wtedy zadziała, a nie idealnie.
Tym, co wprawiło mnie w zakłopotanie w sieci neuronowej, jest to, że dowiaduje się o tym, co jest na obrazie. Nie trzeba wykonywać progów, segmentacji ani pomiarów, w jakiś sposób sieć uczy się porównywać obrazy i rozpoznawać. To jest teraz dla mnie jak magia. Gdzie zacząć uczyć się sieci neuronowej?
machine-learning
neural-networks
image-processing
użytkownik1731927
źródło
źródło
Odpowiedzi:
Dogłębny wgląd w to, jak sieć neuronowa może nauczyć się klasyfikować coś tak złożonego jak dane obrazowe, podając tylko przykłady i prawidłowe odpowiedzi, przyszedł do mnie podczas studiowania pracy profesora Kunihiko Fukushimy na temat neokognitionu w latach osiemdziesiątych. Zamiast po prostu pokazywać swojej sieci kilka obrazów i korzystać z propagacji wstecznej, aby sam mógł sobie wyobrazić różne rzeczy, przyjął inne podejście i trenował swoją sieć warstwa po warstwie, a nawet węzeł po węźle. Przeanalizował wydajność i działanie każdego węzła sieci i celowo zmodyfikował te części, aby reagowały w zamierzony sposób.
Na przykład wiedział, że chce, aby sieć była w stanie rozpoznawać linie, dlatego wytrenował określone warstwy i węzły, aby rozpoznawały trzy pikselowe linie poziome, 3 piksele linie pionowe i określone warianty linii ukośnych pod każdym kątem. W ten sposób wiedział dokładnie, na które części sieci można liczyć, że strzelą, gdy będą istnieć pożądane wzorce. Następnie, ponieważ każda warstwa jest silnie połączona, cały neokognitron jako całość może zidentyfikować każdą z części kompozytowych obecnych na obrazie, bez względu na to, gdzie fizycznie istniały. Kiedy więc gdzieś na obrazie istniał określony segment linii, zawsze pojawiałby się określony węzeł, który by się uruchamiał.
Utrzymując ten obraz zawsze obecny, rozważ regresję liniową, która polega na znalezieniu formuły (lub linii) na podstawie sumy błędu kwadratu, który najbardziej dokładnie przechodzi przez twoje dane, co jest łatwe do zrozumienia. Aby znaleźć zakrzywione „linie”, możemy wykonać tę samą sumę obliczeń produktów, tyle że teraz dodajemy kilka parametrów x ^ 2 lub x ^ 3 lub nawet wielomianów wyższego rzędu. Teraz masz klasyfikator regresji logistycznej. Ten klasyfikator może znaleźć relacje, które nie mają charakteru liniowego. W rzeczywistości regresja logistyczna może wyrażać dowolnie złożone relacje, ale nadal musisz ręcznie wybrać prawidłową liczbę funkcji zasilania, aby dobrze wykonać prognozowanie danych.
Jednym ze sposobów myślenia o sieci neuronowej jest rozważenie ostatniej warstwy jako klasyfikatora regresji logistycznej , a następnie ukryte warstwy można uznać za automatyczne „selektory cech” . Eliminuje to konieczność ręcznego wybierania prawidłowej liczby i mocy funkcji wejściowych. W ten sposób NN staje się automatycznym selektorem cech mocy i może znaleźć dowolną zależność liniową lub nieliniową lub służyć jako klasyfikator dowolnie złożonych zestawów ** (zakłada to tylko, że istnieje wystarczająca liczba ukrytych warstw i połączeń, które reprezentują złożoność model, którego musi się nauczyć). W końcu oczekuje się, że dobrze działająca NN nauczy się nie tylko „relacji” między danymi wejściowymi i wyjściowymi, ale zamiast tego dążymy do abstrakcji lub modelu, którydobrze uogólnia .
Z reguły sieć neuronowa nie może nauczyć się niczego, czego rozsądnie inteligentny człowiek nie mógłby teoretycznie nauczyć, biorąc pod uwagę wystarczająco dużo czasu z tych samych danych,
źródło
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ć ...
źródło
To, co cię zdezorientowało
To, co jest na obrazie, jest cyfrowo reprezentowane przez wartości w pikselach obrazu. Jeśli weźmiesz przykład koloru na obrazie. Piksel może mieć trzy wartości, każda dla trzech głównych kolorów - czerwonego, zielonego i niebieskiego (
RGB
). Piksel z (10,50,100
) oznacza, że ma „mniej” niebieskich elementów niż piksel z (40,50,100
). Zatem na obrazie pierwszy piksel reprezentuje region o mniejszym kolorze niebieskim. Jest to informacja, której uczy się sieć neuronowa, z jednej lokalizacji / regionu obrazu do drugiej i ostatecznie „wie”, co jest w obrazie. Tę samą zasadę stosuje się do innych funkcji obrazu (oprócz koloru), które mogą być wykorzystane jako dane wejściowe do sieci neuronowej. Zobacz to i to, aby poznać podstawowe pojęcia związane z obrazem, a następnie przejdź do tego aby dowiedzieć się, jak działa sieć neuronowa.źródło
Wszystkie problemy z uczeniem maszynowym są takie same. Masz trochę danych o pociągu, uczysz się modelu, który reprezentuje te dane, i masz możliwość uogólnienia tej wiedzy w taki sposób, w jaki grupujesz, klasyfikujesz, uczysz się za pomocą różnych algorytmów.
W rozpoznawaniu obrazów masz ponownie zestaw obrazów, o których chcesz się dowiedzieć.
Jeśli chcesz rozpoznać więcej niż jedną rzecz, użyj wielu klasyfikatorów dla każdego.
źródło
Chciałbym również wspomnieć o bardzo popularnej sieci neuronowej splotowej do rozpoznawania obrazów. Oto link do uproszczonego wyjaśnienia CNN .
W skrócie, w CNN obraz jest najpierw podzielony na cechy, takie jak krawędzie, kształty, zbiory kształtów. Następnie funkcje te są „zasilane” do „zwykłej” w pełni połączonej wielowarstwowej sieci neuronowej (perceptron wielowarstwowy).
Bardziej szczegółowo, zestaw filtrów jest stosowany do wydobywania obiektów w formie mapy obiektów. Filtr to po prostu matryca (na początku losowa), która jest stosowana do oryginalnego obrazu, dzięki czemu oblicza się iloczyn iloczynu oryginalnej matrycy obrazu i matrycy filtra, a wynik jest sumowany. Filtr przesuwa się wzdłuż oryginalnego obrazu o jeden piksel (krok) na raz, a matryca mapy obiektów jest wypełniana. Dla każdego filtra tworzona jest mapa obiektów. Następnie wprowadzono nieliniowość za pomocą RELU (Rectified Linear Unit) dla każdego piksela na każdej mapie obiektów. Powiązanie, poprzez zastosowanie wartości max (), sum () lub Average (), odbywa się po splataniu. Wreszcie, wyodrębnione w ten sposób funkcje wyglądają jak „powiększone” fragmenty oryginalnego obrazu. Funkcje te są wprowadzane do w pełni połączonej (wszystkie jednostki są połączone) sieci neuronowej, a prawdopodobieństwa dla każdego obrazu (powiedzmy, że wyszkoliliśmy naszą sieć na obrazach samochodów, drzew i łodzi) są obliczane po każdym przejściu przez sieć do przodu. Sieć jest szkolona, co oznacza, że parametry (wagi) i matryce filtrów są optymalizowane poprzez propagację wsteczną (minimalizacja błędu błędnej klasyfikacji). Gdy nowy obraz jest wprowadzany do wyuczonej sieci, potrzebne jest tylko sprzężenie zwrotne do identyfikacji obrazu (pod warunkiem, że sieć jest wystarczająco dokładna, tzn. Przeszkoliliśmy ją z wystarczającą liczbą przykładów itp.) co oznacza, że parametry (wagi) i matryce filtrów są optymalizowane poprzez propagację wsteczną (minimalizacja błędu błędnej klasyfikacji). Gdy nowy obraz jest wprowadzany do wyuczonej sieci, potrzebne jest tylko sprzężenie zwrotne do identyfikacji obrazu (pod warunkiem, że sieć jest wystarczająco dokładna, tzn. Przeszkoliliśmy ją z wystarczającą liczbą przykładów itp.) co oznacza, że parametry (wagi) i matryce filtrów są optymalizowane poprzez propagację wsteczną (minimalizacja błędu błędnej klasyfikacji). Gdy nowy obraz jest wprowadzany do wyuczonej sieci, potrzebne jest tylko sprzężenie zwrotne do identyfikacji obrazu (pod warunkiem, że sieć jest wystarczająco dokładna, tzn. Przeszkoliliśmy ją z wystarczającą liczbą przykładów itp.)
źródło
Dobrze wiedzieć, że ANN może utworzyć dowolną funkcję f (x) lub f (x, y, z, ..) lub dowolną funkcję wielofunkcyjną w tym zakresie. Ale ważne jest również, aby wiedzieć, że funkcje mają ograniczenia w sposobie klasyfikacji danych ... istnieją bardziej złożone podzbiory relacji zestawów mocy obiektów, które są ważne w klasyfikacji i nie są opisywane przez takie funkcje w elegancki lub naturalny sposób, ale są ważne w języku i klasyfikowaniu obiektów. ANN może to również osiągnąć.
źródło