Czym są sztuczne sieci neuronowe?

Duża część postępów w sztucznej inteligencji to nowe modele statystyczne, ale przeważająca większość postępów ma miejsce podczas stosowania technologii zwanej sztucznymi sieciami neuronowymi (ANN). Jeśli już cokolwiek o nich czytałeś, przeczytałeś, że te ANN są naprawdę szorstkim modelem struktury ludzkiego mózgu. Zauważ, że istnieje różnica między sztucznymi sieciami neuronowymi a sieciami neuronowymi. Chociaż większość ludzi rezygnuje z syntetycznych ze względu na zwięzłość, słowo sztuczne zostało poprzedzone tym zwrotem, aby ludzie w neurobiologii obliczeniowej mogli nadal używać terminu sieć neuronowa w celu zapytania o swoją pracę. Poniżej może znajdować się wykres rzeczywistych neuronów i synaps w mózgu w porównaniu z neuronami sztucznymi.

Nie bójcie się, jeśli wykres nie wydaje się jasny. Ważne jest, abyście wiedzieli, że w naszych ANN mamy te jednostki obliczeniowe zwane neuronami. Te sztuczne neurony są połączone synapsami, które są naprawdę tylko wartościami ważonymi. Sugeruje to, że dana odmiana, neuron wykona jakiś rodzaj obliczeń (np. funkcję esicy), a następnie wyniki tych obliczeń zostaną pomnożone przez wagę, ponieważ “podróżuje”. Ważony wynik może czasem być wyjściem twojej sieci neuronowej, albo jak zaraz wspomnę, będziesz miał więcej neuronów skonfigurowanych w warstwach, co jest podstawowym pojęciem myśli, którą nazywamy głębokim uczeniem się.

Skąd są one dostępne?

https://miro.medium.com/max/362/1*iKcFg_tho1ByDfQjF9hXPg.jpeg

Sztuczne sieci neuronowe nie są pojęciem zastępczym. W rzeczywistości nawet nie zawsze nazywaliśmy je sieciami neuronowymi i z pewnością nie wyglądają one teraz tak samo jak w chwili ich powstania. W latach 60-tych XX wieku mieliśmy tak zwany perceptron. Perceptrony były zrobione z neuronów McCulloch-Pitts. Mieliśmy nawet tendencyjne perceptrony, a ostatecznie ludzie zaczęli tworzyć perceptrony wielowarstwowe, co jest synonimem całej sztucznej sieci neuronowej, o której teraz słyszymy.

Ale poczekaj, jeśli mamy sieci neuronowe od lat 60-tych, to dlaczego dopiero teraz stają się one ogromne? Jest to rozszerzona historia, i że zachęcam do skupienia się na obecnym odcinku podcast do “ojców” ostatnich ANN wspomnieć ich perspektywę tematu . Aby szybko podsumować, jest ręka pełna czynników, które utrzymywały ANN z coraz większą popularnością. Nie mieliśmy mocy przetwarzania na komputerze i że nie mieliśmy informacji, aby je trenować. Używanie ich było niemiłe, ponieważ miały pozornie arbitralną zdolność do dobrych wyników. Wszystkie te czynniki się zmieniają. Nasze komputery stają się coraz szybsze i potężniejsze, a wraz z internetem mamy do dyspozycji wszystkie rodzaje wiedzy do wykorzystania.

Jak one działają?

Widzisz, omówiłem powyżej, że neurony i synapsy wykonują obliczenia. Pytanie na twój umysł powinno brzmieć: “Jak się nauczą, jakie obliczenia wykonać?” Czy miałem rację? Rozwiązanie polega na tym, że w zasadzie chcielibyśmy zadać im ogromną ilość pytań i dostarczyć odpowiedzi. Jest to często dziedzina zwana nauką nadzorowaną. Przy wystarczającej ilości próbek par pytanie-odpowiedź, obliczenia i wartości przechowywane przy każdym neuronie i synapsie są powoli dostosowywane. Zazwyczaj odbywa się to poprzez proces zwany backpropagacją.

https://miro.medium.com/max/337/1*uIVBAMYTtX-3nU14_jhTSA.jpeg

Wyobraź sobie, że idziesz chodnikiem i widzisz latarnię. Nigdy wcześniej nie widziałeś latarni, więc wchodzisz prosto w nią i mówisz “ouch”. Gdy zobaczysz latarnię, hulasz kilka cali na bok i idziesz dalej. W tym momencie uderzasz ramieniem w latarnię i znów mówisz “ała”. Trzeci raz, gdy widzisz latarnię, posuwasz się do przodu, aby upewnić się, że nie trafisz w latarnię. Z wyjątkiem tego, że teraz stało się coś strasznego – teraz idziesz prosto w ślad za skrzynką pocztową i nigdy wcześniej jej nie widziałeś. Wchodzisz do niej i dlatego cały proces się powtarza. Oczywiście, często jest to nadmierne uproszczenie, ale tak naprawdę to właśnie robi backpropogation. Stworzona przez człowieka sieć neuronowa otrzymuje bałagan przykładów, a następnie próbuje wymusić równoważną odpowiedź, ponieważ podany przykład. Kiedy jest to błędne, obliczany jest błąd i dlatego wartości w każdym neuronie i synapsie są propagowane wstecz przez ANN na kolejny czas. Proces ten wymaga wielu przykładów. Dla zastosowań światowych, ilość przykładów często mieści się w granicach milionów.

Teraz, gdy rozumiemy sztuczne sieci neuronowe i nieco rozumiemy jak one działają, jest jeszcze jedno pytanie, które powinno nasunąć się na myśl. Jak możemy opanować wiele neuronów, które chcielibyśmy wykorzystać? I dlaczego śmiałeś wcześniej warstwy słowne? Warstwy to tylko zestawy neuronów. Mamy warstwę wejściową, czyli dane, które oferujemy ANN. Mamy warstwy ukryte, czyli tam gdzie dzieje się magia. Na koniec mamy warstwę wyjściową, w której umieszczamy gotowe obliczenia sieci do wykorzystania.

https://miro.medium.com/max/300/1*f0hA2R652htmc1EaDrgG8g.png

Same warstwy to tylko zestawy neuronów. W młodości wielowarstwowych perceptronów początkowo myśleliśmy, że wystarczy mieć tylko jedną warstwę wejściową, jedną ukrytą i jedną wyjściową. Jest to rozsądne, prawda? Biorąc pod uwagę niektóre liczby, wystarczy tylko jeden zestaw obliczeń, a wtedy otrzymamy wyjście. Jeśli Twój ANN nie obliczył właściwej wartości, dodałeś tylko więcej neuronów do jedynej ukrytej warstwy. W końcu dowiedzieliśmy się, że robiąc to, tak naprawdę tylko tworzyliśmy liniowe mapowanie z każdego wejścia na wyjście. Innymi słowy, dowiedzieliśmy się, że dane wejście zawsze będzie mapowane na konkretne wyjście. Nie mieliśmy żadnej elastyczności i naprawdę mogliśmy tylko obsługiwać wejścia, które wcześniej widzieliśmy. W żadnym wypadku nie było to tym, czego chcieliśmy.

Teraz wprowadzamy głębokie uczenie się, które kiedyś miało dość jedną ukrytą warstwę. Często jest to jedno z wyjaśnień, które teraz mamy lepsze ANN-y, ponieważ chcielibyśmy mieć wiele węzłów z dziesiątkami, jeśli mniej warstw. Powoduje to ogromną ilość zmiennych, które chcielibyśmy śledzić na bieżąco. Postępy w programowaniu równoległym pozwalają nam również na uruchamianie jeszcze większych ANN-ów w trybie wsadowym. Nasze sztuczne sieci neuronowe stają się teraz tak duże, że nie będziemy uruchamiać jednej epoki, która jest iteracją przez całą sieć na raz. Chcielibyśmy spróbować wszystkiego w partiach, które są tylko podzbiorem całej sieci, a kiedy skończymy całą epokę, wtedy zastosujemy backpropagację.

Jakie to są rodzaje?

Wraz z użyciem teraz głębokiego uczenia się, ważne jest, aby zrozumieć, że istnieje bałagan różnych architektur sztucznych sieci neuronowych. Standardowa ANN jest ustawiona w taki sposób, że każdy neuron jest połączony z innym neuronem w kolejnej warstwie. Są one specjalnie nazywane feed forwardem sztucznych sieci neuronowych (chociaż ANN są na ogół wszystkie feed forwardem). Nauczyliśmy się, że łącząc neurony z innymi neuronami w pewnych wzorcach, jeszcze lepiej doprowadzimy je do konkretnych scenariuszy.

Nowoczesne sieci neuronowe (ang. Recurrent Neural Networks)

Współczesne sieci neuronowe (RNN) zostały stworzone w celu usunięcia wady sztucznych sieci neuronowych, które nie podjęły decyzji wspierających wcześniejszą wiedzę. Typowa sieć neuronowa nauczyła się formułować decyzje wspierające kontekst szkolenia, ale po podjęciu decyzji, które miały być wykorzystane, wybory były dokonywane niezależnie od innych.

https://miro.medium.com/max/504/1*nPz3TnsVZvFdgG8LQ8cwuA.png

Kiedy chcielibyśmy czegoś takiego? Cóż, uwierzcie, że gracie w Blackjacka. Jeśli masz 4 i 5 na początek, to zdajesz sobie sprawę, że 2 niskie karty są poza talią. Takie informacje mogą pomóc ci określić, czy powinieneś trafić, czy nie. RNN są bardzo przydatne w przetwarzaniu języka, ponieważ wcześniejsze słowa lub znaki są przydatne w zrozumieniu kontekstu innego słowa. Istnieje wiele różnych implementacji, ale intencja jest zazwyczaj równoważna . Chcielibyśmy zachować informacje. Osiągniemy to dzięki dwukierunkowym RNN-om lub zaimplementujemy powtarzającą się warstwę ukrytą, która będzie modyfikowana z każdym feedforwardem. Jeśli chciałbyś dowiedzieć się więcej na temat RNN, zapoznaj się albo z tym tutorialem, w którym implementujesz RNN w Pythonie, albo z tym postem na blogu, gdzie zastosowania dla RNN są dokładniej wyjaśnione.

Wzmianka na ten temat znajduje się w dziale Memory Networks. Koncepcja jest taka, że chcielibyśmy zachować więcej informacji niż to, co zachowuje RNN lub LSTM, jeśli chcielibyśmy wiedzieć coś w rodzaju filmu lub książki, gdzie mogą wystąpić tony zdarzeń, które odpychają się od siebie.

Sam wchodzi do kuchni.

Sam podnosi jabłko.

Sam wchodzi do sypialni.

Sam upuszcza jabłko.

Q: Gdzie jest to jabłko.

A: Sypialnia

Próbka pobrana z tej gazety.

Konwolucyjne sieci neuronowe

Konwolucyjne sieci neuronowe (CNN), czasami nazywane LeNets (nazwa pochodzi od Yanna LeCun), są sztucznymi sieciami neuronowymi, w których połączenia między warstwami wydają się być nieco dowolne. Jednakże, racjonalnym uzasadnieniem konfiguracji synaps jest pomoc w zmniejszeniu ilości parametrów, które muszą być zoptymalizowane. Często robi się to poprzez odnotowanie konkretnej symetrii w sposobie łączenia neuronów, wtedy zasadniczo “ponownie użyjesz” neuronów do posiadania identycznych kopii bez konieczności posiadania równoważnej liczby synaps. Sieci CNN są powszechnie wykorzystywane w pracy z obrazami ze względu na ich zdolność do rozpoznawania wzorów w otaczających je pikselach. Po sprawdzeniu każdego pojedynczego piksela w porównaniu z otaczającymi go pikselami, nadmiarowe są informacje, które można skompresować ze względu na ich właściwości symetryczne. Wydaje się, że jest to właściwa sytuacja dla CNN, jeśli zapytasz mnie . Christopher Olah posiada świetny post na blogu o rozumieniu CNN również jako innych rodzajów ANN, które można znaleźć tutaj. Innym wspaniałym źródłem wiedzy na temat zrozumienia CNN jest ten post na blogu.

Wzmocnienie Nauka

Ostatnim typem ANN, o którym chcę wspomnieć, jest typ o nazwie Reinforcement Learning. Reinforcement Learning może być ogólnym terminem używanym dla zachowania, które komputery wykazują podczas próby maksymalizacji konkretnej nagrody, co sugeruje, że sam w sobie nie jest to stworzona przez człowieka specyfikacja neuronowa. Jednakże, zastosujesz uczenie się wzmacniające lub algorytmy genetyczne, aby stworzyć stworzoną przez człowieka specyfikację neuronową, o której wcześniej nie myślałeś. Doskonały przykład i wyjaśnienie są często spotykane w tym filmie, gdzie użytkownik YouTube SethBling tworzy system uczenia się wzmocnienia, który buduje stworzoną przez człowieka specyfikację neuronową, która gra w grę Mario całkowicie samodzielnie. Inny udany przykład nauki wzmacniającej jest często widoczny podczas tego filmu, gdzie korporacyjny DeepMind był gotów nauczyć program do opanowania różnych gier Atari.