Głębokie sieci neuronowe: czym są i jak działają
Głębokie sieci neuronowe to koncepcja, która stanowi główną architekturę technologiczną wykorzystywaną w modelach Deep Learning. Struktur tych nie można zrozumieć bez zrozumienia ogólnej idei sztucznych sieci neuronowych, fundamentalnych dla sztucznej inteligencji.
Sieci neuronowe są wykorzystywane do tysiąca rzeczy: rozpoznawania tablic rejestracyjnych, piosenek, twarzy, głosów, a nawet owoców w naszej kuchni. Są szczególnie użyteczną technologią i choć dopiero niedawno stały się praktyczne, będą przyszłością ludzkości.
Następny Przyjrzymy się dogłębnie idei sztucznych sieci neuronowych i głębokim, zrozumienie, jak działają, jak są szkolone i jak zachodzą interakcje między różnymi neuronami, które je tworzą.
- Powiązany artykuł: „Czym jest kognitywistyka? Jego podstawowe idee i fazy rozwoju”
Czym są głębokie sieci neuronowe i czym się charakteryzują?
Głębokie sieci neuronowe są jedna z najważniejszych architektur technologicznych stosowanych w Deep Learning lub Deep Learning. Te szczególne sztuczne sieci odnotowały zawrotny wzrost w ostatnich latach, ponieważ stanowią fundamentalny aspekt, jeśli chodzi o rozpoznawanie wszelkiego rodzaju wzorców. Sztuczna inteligencja istnieje dzięki działaniu tych właśnie sieci, które m.in Zasadniczo stają się repliką tego, jak działają nasze mózgi, chociaż w technologii i matematyka.
Zanim przejdziemy dalej do tego, czym są głębokie sieci neuronowe, musimy najpierw zrozumieć, jak ogólnie działają sztuczne sieci neuronowe i do czego służą. Łsieci neuronowe to gałąź „uczenia maszynowego”, która wywarła ogromny wpływ w ostatnich latach, pomagając programistom i informatykom w tworzeniu rzeczy takich jak chatboty, które, gdy z nimi rozmawiamy, sprawiają, że myślimy, że rozmawiamy z prawdziwymi ludźmi.
Sztuczne sieci neuronowe zostały również wykorzystane w samojezdnych samochodach, aplikacje mobilne, które rozpoznają naszą twarz i przekształcają ją w to, czego chcemy i wiele innych Funkcje. Jego zastosowanie jest bardzo szerokie, służy jako podstawa nowoczesnej sztucznej inteligencji i ma niezliczone korzystne zastosowania w naszym codziennym życiu.
sztuczne sieci neuronowe
Wyobraźmy sobie, że jesteśmy w naszej kuchni i postanawiamy poszukać pomarańczy, co jest bardzo prostym zadaniem.. Wiemy, jak bardzo łatwo zidentyfikować pomarańczę, a także wiemy, jak odróżnić ją od innych owoców, które znajdujemy w kuchni, takich jak banany, jabłka i gruszki. Jak? Ponieważ w naszym mózgu bardzo dobrze przyswoiliśmy sobie typowe właściwości pomarańczy: jej jego rozmiar, kształt, kolor, jaki ma, jak pachnie… To wszystko parametry, których używamy, aby znaleźć Pomarańczowy.
To proste zadanie dla ludzi, ale... Czy komputer też to potrafi? Odpowiedź brzmi tak. W zasadzie wystarczyłoby zdefiniować te same parametry i przypisać wartość węzłowi lub czemuś, co równie dobrze moglibyśmy nazwać „sztucznym neuronem”. Powiedzielibyśmy temu neuronowi, jakie są pomarańcze, wskazując ich wielkość, wagę, kształt, kolor lub jakikolwiek inny parametr, który przypisujemy temu owocowi. Oczekuje się, że mając te informacje, neuron będzie wiedział, jak rozpoznać pomarańczę, gdy zostanie mu przedstawiona.
Jeśli dobrze dobraliśmy parametry, łatwo będzie ci odróżnić pomarańcze od rzeczy, które nie są pomarańczami, po prostu biorąc pod uwagę te cechy. Kiedy zostanie przedstawiony obraz dowolnego owocu, ten neuron będzie szukał cech kojarzy się z pomarańczą i zdecydować, czy umieścić ją w kategorii „pomarańcza”, czy w kategorii „inne”. owoc". W kategoriach statystycznych byłoby to znalezienie regionu na wykresie parametrów, który odpowiada temu, co jest poszukuje regionu, który obejmowałby wszystkie kawałki owoców o tej samej wielkości, kształcie, kolorze, wadze i aromacie pomarańcze.
Na początku wszystko to wydaje się bardzo łatwe do zakodowania i w rzeczywistości tak jest. Odróżnienie pomarańczy od banana lub jabłka działa bardzo dobrze, ponieważ mają one różne kolory i kształty. A gdybyśmy jednak sprezentowali Ci grejpfruta? i bardzo duża mandarynka? To owoce, które doskonale można pomylić z pomarańczą. Czy sztuczny neuron będzie w stanie samodzielnie odróżnić pomarańcze od grejpfrutów? Odpowiedź brzmi: nie, aw rzeczywistości prawdopodobnie uważa się, że są takie same.
Problem z używaniem tylko jednej warstwy sztucznych neuronów lub, co jest tym samym, z użyciem najpierw tylko prostych neuronów, polega na tym generować bardzo nieprecyzyjne granice decyzyjne, gdy pojawia się coś, co ma wiele cech wspólnych z tym, co powinieneś być w stanie rozpoznać, ale w rzeczywistości tak nie jest. Jeśli przedstawimy coś, co wygląda jak pomarańcza, na przykład grejpfrut, nawet jeśli nie jest to ten owoc, zidentyfikuje to jako taki.
Te granice decyzyjne, jeśli są reprezentowane w postaci wykresu, zawsze będą liniowe. Używanie pojedynczego sztucznego neuronu, czyli pojedynczego węzła, który ma zintegrowane parametry konkretne, ale nie można się ich nauczyć, uzyskamy bardzo bliskie granice decyzyjne. rozproszony. Jego głównym ograniczeniem jest to, że używa dwóch metod statystycznych, w szczególności regresji wieloklasowej i regresji logistycznej, co oznacza, że w razie wątpliwości zawiera coś, co nie jest tym, czego się spodziewaliśmy. będzie identyfikować.
Gdybyśmy podzielili wszystkie owoce na „pomarańcze” i „nie pomarańcze”, używając tylko jednego neuronu, jasne jest, że banany, gruszki, jabłka, arbuzy i wszelkie owoce, które nie odpowiadają rozmiarem, kolorem, kształtem, aromatem itd. pomarańczom, umieściłbym je w kategorii „nie”. pomarańcze". Jednak grejpfruty i mandarynki umieściłyby je w kategorii „pomarańczy”, źle wykonując zadanie, do którego zostały zaprojektowane.
A kiedy mówimy o pomarańczach i grejpfrutach, równie dobrze moglibyśmy mówić o psach i wilkach, kurach i kurczakach, książkach i zeszytach... Wszystkie Sytuacje te to przypadki, w których prosta seria „jeśli…” („jeśli…”) nie wystarczyłaby do wyraźnego rozróżnienia między jednym a drugim. Inny. Potrzebny jest bardziej złożony, nieliniowy system, który jest bardziej precyzyjny, jeśli chodzi o rozróżnianie różnych elementów. Coś, co uwzględnia, że między podobieństwami mogą występować różnice. I tu wkraczają sieci neuronowe.
Więcej warstw, bardziej podobnych do ludzkiego mózgu
Sztuczne sieci neuronowe, jak sama nazwa wskazuje, są sztucznymi modelami obliczeniowymi inspirowanymi w sieciach neuronowych ludzkiego mózgu, sieciach, które w rzeczywistości naśladują funkcjonowanie tego narządu biologiczny. System ten inspirowany jest funkcjonowaniem neuronów, a jego głównym zastosowaniem jest rozpoznawanie wzory wszelkiego rodzaju: identyfikacja twarzy, rozpoznawanie głosu, odcisk palca, pismo odręczne, Tablice rejestracyjne… Rozpoznawanie wzorców działa prawie we wszystkim..
Ponieważ istnieją różne neurony, stosowane parametry są różne i uzyskuje się wyższy stopień precyzji. Te sieci neuronowe to systemy, które pozwalają nam rozdzielać elementy na kategorie, gdy różnica może być subtelna, oddzielając je w sposób nieliniowy, co byłoby niemożliwe w inny sposób sposób.
Z pojedynczym węzłem, z pojedynczym neuronem, podczas przetwarzania informacji odbywa się regresja wieloklasowa. Dodając więcej neuronów, ponieważ każdy z nich ma swoją nieliniową funkcję aktywacji, co w prostszym tłumaczeniu sprawia, że mają one granice decyzyjne, które są dokładniej, będąc graficznie przedstawionym w zakrzywionym kształcie i biorąc pod uwagę więcej cech charakterystycznych przy rozróżnianiu „pomarańczy” od „niepomarańczy”, kontynuując ten przykład.
Krzywizna tych granic decyzyjnych będzie bezpośrednio zależeć od tego, ile warstw neuronów dodamy do naszej sieci neuronowej. Te warstwy neuronów, które czynią system bardziej złożonym i precyzyjnym, są w istocie głębokimi sieciami neuronowymi. W zasadzie im więcej mamy warstw głębokich sieci neuronowych, tym dokładniejszy i bardziej zbliżony będzie program do ludzkiego mózgu.
Krótko mówiąc, sieci neuronowe to nic innego jak inteligentny system, który umożliwia podejmowanie bardziej precyzyjnych decyzji, w sposób bardzo podobny do tego, jak robimy to my, ludzie. Istoty ludzkie opierają się na doświadczeniu, ucząc się od naszego środowiska. Na przykład wracając do przypadku pomarańczy i grejpfruta, jeśli nigdy go nie widzieliśmy, doskonale pomylimy go z pomarańczą. Kiedy już się z nim zapoznamy, to wtedy będziemy już wiedzieć, jak go zidentyfikować i odróżnić od pomarańczy.
Pierwszą rzeczą, którą się robi, jest podanie pewnych parametrów sieciom neuronowym, aby wiedziały, jak to jest, że chcemy, aby nauczyły się identyfikować. Potem przychodzi faza uczenia się lub szkolenia, dzięki czemu jest coraz bardziej dokładna i stopniowo ma mniejszy margines błędu. To czas, w którym przedstawilibyśmy naszą sieć neuronową z pomarańczą i innymi owocami. W fazie szkoleniowej otrzymają przypadki, w których są pomarańczowe i przypadki, w których nie są pomarańczowi, sprawdzając, czy udzielili prawidłowej odpowiedzi i podając im poprawną odpowiedź.
Postaramy się podejmować liczne próby i jak najbardziej zbliżone do rzeczywistości.. W ten sposób pomagamy sieci neuronowej działać, gdy nadejdą prawdziwe przypadki, i wie, jak właściwie dyskryminować, w taki sam sposób, jak zrobiłby to człowiek w prawdziwym życiu. Jeśli szkolenie było odpowiednie, przy dobraniu dobrych parametrów rozpoznawania i dobrze sklasyfikowane, sieć neuronowa będzie miała bardzo wysoki wskaźnik sukcesu rozpoznawania wzorców. wysoki.
- Możesz być zainteresowany: „Jak działają neurony?”
Czym są i jak dokładnie działają?
Teraz, gdy widzieliśmy ogólne pojęcie o tym, czym są sieci neuronowe, i zrozumiemy pełniej, czym one są i jak te emulatory neuronów ludzkiego mózgu działają i gdzie w tym wszystkim malują głębokie sieci neuronowe proces.
Wyobraźmy sobie, że mamy następującą sieć neuronową: mamy trzy warstwy sztucznych neuronów. Powiedzmy, że pierwsza warstwa ma 4 neurony lub węzły, druga 3, a ostatnia tylko 2. To wszystko jest przykładem sztucznej sieci neuronowej, dość łatwej do zrozumienia.
Pierwsza warstwa to ta, która odbiera dane., czyli informacje, które równie dobrze mogą nadejść w postaci dźwięku, obrazu, zapachu, impulsów elektrycznych… To pierwsze warstwa jest warstwą wejściową i jest odpowiedzialna za odbieranie wszystkich danych, aby móc później wysłać je do następujących warstwy. Podczas treningu naszej sieci neuronowej będzie to warstwa, z którą będziemy pracować w pierwszej kolejności, podając ją dane, których użyjemy, aby zobaczyć, jak dobrze radzisz sobie z prognozowaniem lub identyfikowaniem informacji, które otrzymujesz daje.
Druga warstwa naszego hipotetycznego modelu to warstwa ukryta, która znajduje się pośrodku pierwszej i ostatniej warstwy., jakby nasza sieć neuronowa była kanapką. W tym przykładzie mamy tylko jedną warstwę ukrytą, ale może być ich tyle, ile chcemy. Moglibyśmy mówić o 50, 100, 1000, a nawet 50 000 warstw. Zasadniczo te ukryte warstwy są częścią sieci neuronowej, którą nazwalibyśmy głęboką siecią neuronową. Im większa głębokość, tym bardziej złożona jest sieć neuronowa.
Wreszcie mamy trzecią warstwę naszego przykładu, która jest warstwą wyjściową. Warstwa ta, jak sama nazwa wskazuje, odpowiada za odbiór informacji z poprzednich warstw, podjęcie decyzji i przekazanie nam odpowiedzi lub wyniku.
W sieci neuronowej każdy sztuczny neuron jest połączony ze wszystkimi kolejnymi. W naszym przykładzie, gdzie skomentowaliśmy, że mamy trzy warstwy po 4, 3 i 2 neurony, 4 warstwy wejściowej to połączone z 3 warstwy ukrytej, a 3 warstwy ukrytej z 2 wyjścia, co daje nam w sumie 18 znajomości.
Wszystkie te neurony są połączone z neuronami następnej warstwy, wysyłając informacje w kierunku wejście->ukryte->wyjście.. Gdyby było więcej warstw ukrytych, mówilibyśmy o większej liczbie połączeń, przesyłaniu informacji z warstwy ukrytej do warstwy ukrytej, aż dotrze ona do warstwy wyjściowej. Warstwa wyjściowa, po otrzymaniu informacji, da nam wynik na podstawie otrzymanych informacji i sposobu ich przetwarzania.
Kiedy trenujemy nasz algorytm, czyli naszą sieć neuronową, ten proces, który właśnie wyjaśniliśmy, będzie wykonywany wiele razy. Dostarczymy trochę danych do sieci, zobaczymy, co nam da wynik, przeanalizujemy to i porównamy z tym, czego się spodziewaliśmy po wyniku. Jeśli istnieje duża różnica między tym, czego się oczekuje, a tym, co się otrzymuje, oznacza to, że istnieje duży margines błędu i dlatego konieczne jest wprowadzenie kilku modyfikacji.
Jak działają sztuczne neurony?
Teraz zrozumiemy indywidualne funkcjonowanie neuronów, które działają w sieci neuronowej. Neuron otrzymuje dane wejściowe od poprzedniego neuronu. Powiedzmy, że ten neuron otrzymuje trzy wejścia informacyjne, z których każdy pochodzi z trzech neuronów poprzedniej warstwy. Z kolei ten neuron generuje wyjścia, w tym przypadku powiedzmy, że jest podłączony tylko do neuronu następnej warstwy.
Każde połączenie tego neuronu z trzema neuronami poprzedniej warstwy przynosi wartość „x”, czyli wartość, którą wysyła nam poprzedni neuron.; i ma też wartość „w”, która jest wagą tego połączenia. Waga jest wartością, która pomaga nam nadać jednemu połączeniu większą wagę niż innym. Krótko mówiąc, każde połączenie z poprzednimi neuronami ma wartość „x” i „w”, które są mnożone (x·w).
My też będziemy mieć wartość zwana „odchyleniem” lub odchyleniem reprezentowanym przez „b”, która jest liczbą błędów, która zachęca niektóre neurony do aktywacji łatwiej niż inne. Ponadto mamy funkcję aktywacji w obrębie neuronu, co sprawia, że jego stopień klasyfikacji różnych elementów (s. pomarańcze) nie jest liniowy. Każdy neuron z osobna ma inne parametry do uwzględnienia, co sprawia, że cały system, czyli sieć neuronowa, klasyfikuje w sposób nieliniowy.
Skąd neuron wie, czy musi się aktywować, czy nie? czyli kiedy wiesz, czy musisz przesłać informacje do następnej warstwy? Cóż, ta decyzja jest regulowana następującym równaniem:
![sieć neuronowa](/f/beea4b7006e1043772cc8925746bd6ab.jpg)
Ta formuła oznacza, że należy sporządzić sumę wszystkich wag „w” pomnożonych przez wszystkie wartości „x”, które neuron otrzymuje z poprzedniej warstwy. Dodaje się do tego odchylenie „b”.
Wynik tego równania jest przesyłany do funkcji aktywacji, która jest po prostu funkcją, która mówi nam, że jeśli wynik tego równania jest większy niż a określonej liczby, neuron wyśle sygnał do następnej warstwy, a jeśli będzie on mniejszy, nie wyśle sygnału wysłać W ten sposób sztuczny neuron decyduje, czy wysłać informacje do neuronów w następujący sposób: warstwy za pomocą wyjścia, które nazwiemy „y”, wyjścia, które z kolei jest wejściem „x” następującego neuron.
A jak trenować całą sieć?
Pierwszą rzeczą, która jest wykonywana, jest dostarczenie danych do pierwszej warstwy, jak już wcześniej komentowaliśmy. Ta warstwa będzie przesyłać informacje do kolejnych warstw, którymi są warstwy ukryte lub głęboka sieć neuronowa. Neurony tych warstw uaktywnią się lub nie w zależności od otrzymanych informacji. Na koniec warstwa wyjściowa da nam wynik, który porównamy z wartością, na którą czekaliśmy, aby sprawdzić, czy sieć neuronowa nauczyła się, co ma robić poprawnie.
Jeśli nie nauczył się dobrze to wykonamy kolejną interakcję, czyli ponownie przedstawimy Ci informacje i zobaczymy, jak zachowuje się sieć neuronowa. W zależności od uzyskanych wyników zostaną skorygowane wartości „b”, czyli odchylenie każdego neuronu, oraz „w”, czyli waga każdego połączenia z każdym neuronem, aby zmniejszyć błąd. Aby dowiedzieć się, jak duży jest ten błąd, użyjemy innego równania, które jest następujące:
![sieć neuronowa](/f/d446eca4ba6c3824dba28b3b5e681418.jpg)
To równanie jest pierwiastkiem błędu średniokwadratowego. Zrobimy sumę y (x), która jest wartością, którą nasza sieć dała nam w interakcji minus „a”, czyli wartość, której się spodziewaliśmy, podniesioną do kwadratu. Na koniec pomnożymy tę sumę przez 1/2n, przy czym „n” to liczba interakcji, które wysłaliśmy, aby wytrenować naszą sieć neuronową.
Załóżmy na przykład, że mamy następujące wartości
![sieć neuronowa](/f/6bcb4ccd47e215bc6da91ce40740bd7e.jpg)
Pierwsza kolumna „y (x)” reprezentuje to, co dała nam nasza sieć w każdej z czterech interakcji, które ją przetestowaliśmy. Wartości, które uzyskaliśmy, jak widać, nie odpowiadają wartościom z drugiej kolumny „a”, które są pożądanymi wartościami dla każdej z badanych interakcji. Ostatnia kolumna reprezentuje błąd każdej interakcji.
Stosując powyższy wzór i korzystając z tych danych tutaj, pamiętając, że w tym przypadku n = 4 (4 interakcji) daje nam wartość 3,87, która jest średnim błędem kwadratowym, jaki ma nasza sieć neuronowa w tych chwile. Znając błąd, co musimy teraz zrobić, to, jak skomentowaliśmy wcześniej, zmienić nastawienie i wagi każdego z neuronów i ich interakcje z zamiarem, że w ten sposób jest błąd zmniejszyć.
W tym momencie zgłaszają się inżynierowie i informatycy algorytm zwany zejściem gradientowym za pomocą których mogą uzyskać wartości do testowania i modyfikowania odchylenia i wagi każdego sztucznego neuronu tak, że w ten sposób uzyskuje się coraz mniejszy błąd, zbliżający się do prognozy lub wyniku poszukiwany. Jest to kwestia testowania, a im więcej interakcji, tym więcej szkoleń i tym więcej nauczy się sieć.
Gdy sieć neuronowa zostanie odpowiednio przeszkolona, będzie to moment, w którym zapewni nam dokładne i niezawodne przewidywania i identyfikacje. W tym momencie będziemy mieli sieć, która będzie miała w każdym ze swoich neuronów wartość określoną wagę, z kontrolowanym obciążeniem i zdolnością decyzyjną, która stworzy system praca.
Odniesienia bibliograficzne:
- Puig, A. [AMP Tech] (2017, 28 lipca). Jak działają sieci neuronowe? [Plik wideo]. Wyzdrowiał z https://www.youtube.com/watch? v=IQMoglp-fBk&ab_channel=AMPTech
- Santaolalla, J. [Podaruj sobie vloga] (2017, 11 kwietnia) Wyzwanie CienciaClip - Czym są sieci neuronowe? [Plik wideo]. https://www.youtube.com/watch? v=rTpr6DuY4LU&ab_channel=DateunVlog
- Schmidhuber, J. (2015). „Głębokie uczenie się w sieciach neuronowych: przegląd”. Sieci neuronowe. 61: 85–117. ar Xiv: 1404.7828. doi: 10.1016/j.neunet.2014.09.003. PMID 25462637. S2CID 11715509