Czym są sieci neuronowe?
Sieci neuronowe, znane również jako sztuczne sieci neuronowe (ANN) lub symulowane sieci neuronowe (SNN), stanowią podzbiór uczenia maszynowego i są sercem algorytmów głębokiego uczenia. Ich nazwa i struktura są inspirowane przez ludzki mózg, naśladując sposób, w jaki biologiczne neurony sygnalizują sobie nawzajem.
Sztuczne sieci neuronowe (ANN) składają się z warstw węzłów, zawierających warstwę wejściową, jedną lub więcej warstw ukrytych oraz warstwę wyjściową. Każdy węzeł, czyli sztuczny neuron, łączy się z innym i ma przypisaną wagę oraz próg. Jeśli wyjście dowolnego pojedynczego węzła jest powyżej określonej wartości progowej, węzeł ten jest aktywowany, wysyłając dane do następnej warstwy sieci. W przeciwnym razie, żadne dane nie są przekazywane do następnej warstwy sieci.
Sieci neuronowe polegają na danych treningowych, aby uczyć się i poprawiać swoją dokładność w czasie. Jednakże, gdy te algorytmy uczenia się są już dostrojone do dokładności, są potężnymi narzędziami w informatyce i sztucznej inteligencji, pozwalając nam klasyfikować i grupować dane z dużą prędkością. Zadania w rozpoznawaniu mowy lub obrazu mogą trwać minuty w porównaniu z godzinami w porównaniu do ręcznej identyfikacji przez ludzkich ekspertów. Jedną z najbardziej znanych sieci neuronowych jest algorytm wyszukiwania Google.
Jak działają sieci neuronowe?
Pomyśl o każdym pojedynczym węźle jako o własnym modelu regresji liniowej, składającym się z danych wejściowych, wag, skosu (lub progu) i wyjścia. Wzór wyglądałby mniej więcej tak:
Po wyznaczeniu warstwy wejściowej, przypisywane są wagi. Wagi te pomagają określić znaczenie każdej zmiennej, przy czym większe z nich przyczyniają się bardziej znacząco do wyniku w porównaniu do innych danych wejściowych. Wszystkie dane wejściowe są następnie mnożone przez ich odpowiednie wagi, a następnie sumowane. Następnie, dane wyjściowe są przepuszczane przez funkcję aktywacji, która określa wartość wyjściową. Jeśli wyjście to przekroczy dany próg, następuje „odpalenie” (lub aktywacja) węzła, przekazującego dane do następnej warstwy sieci. W ten sposób wyjście jednego węzła staje się wejściem następnego węzła. Ten proces przekazywania danych z jednej warstwy do następnej definiuje tę sieć neuronową jako sieć typu feedforward.
Rozbijmy, jak może wyglądać pojedynczy węzeł przy użyciu wartości binarnych. Możemy zastosować tę koncepcję do bardziej namacalnego przykładu, takiego jak to, czy powinieneś iść na surfing (Tak: 1, Nie: 0). Decyzja o pójściu lub nie pójściu jest naszym przewidywanym wynikiem, czyli y-hatem. Załóżmy, że istnieją trzy czynniki wpływające na podejmowanie decyzji:
- Czy fale są dobre? (Tak: 1, Nie: 0)
- Czy line-up jest pusty? (Tak: 1, Nie: 0)
- Czy był tam ostatnio atak rekinów? (Tak: 0, Nie: 1)
Potem załóżmy, że mamy następujące dane wejściowe:
- X1 = 1, ponieważ fale są pompowane
- X2 = 0, ponieważ tłumy są na zewnątrz
- X3 = 1, ponieważ nie było ostatnio ataku rekinów
Teraz musimy przypisać pewne wagi, aby określić ważność. Większe wagi oznaczają, że poszczególne zmienne mają większe znaczenie dla decyzji lub wyniku.
- W1 = 5, ponieważ duże fale nie pojawiają się często
- W2 = 2, ponieważ jesteś przyzwyczajony do tłumów
- W3 = 4, ponieważ boisz się rekinów
Na koniec, założymy również wartość progową 3, co przełożyłoby się na wartość błędu systematycznego -3. Mając wszystkie różne dane wejściowe, możemy zacząć wstawiać wartości do wzoru, aby uzyskać pożądane wyjście.
Y-hat = (1*5) + (0*2) + (1*4) – 3 = 6
Jeśli użyjemy funkcji aktywacji z początku tego rozdziału, możemy określić, że wyjście tego węzła wyniesie 1, ponieważ 6 jest większe niż 0. W tym przypadku pójdziesz na surfing; ale jeśli dostosujemy wagi lub próg, możemy uzyskać różne wyniki z modelu. Kiedy obserwujemy jedną decyzję, tak jak w powyższym przykładzie, możemy zobaczyć, jak sieć neuronowa może podejmować coraz bardziej złożone decyzje w zależności od wyników poprzednich decyzji lub warstw.
W powyższym przykładzie użyliśmy perceptronów, aby zilustrować niektóre z matematycznych rozwiązań, ale sieci neuronowe wykorzystują neurony sigmoidalne, które wyróżniają się tym, że mają wartości pomiędzy 0 a 1. Ponieważ sieci neuronowe zachowują się podobnie do drzew decyzyjnych, kaskadując dane z jednego węzła do drugiego, posiadanie wartości x pomiędzy 0 a 1 zmniejszy wpływ każdej zmiany pojedynczej zmiennej na wyjście danego węzła, a następnie na wyjście sieci neuronowej.
Jak zaczniemy myśleć o bardziej praktycznych przypadkach użycia sieci neuronowych, takich jak rozpoznawanie obrazów lub klasyfikacja, będziemy wykorzystywać uczenie nadzorowane, czyli zbiory danych z etykietami, do trenowania algorytmu. Podczas trenowania modelu będziemy chcieli ocenić jego dokładność za pomocą funkcji kosztu (lub straty). Jest to również powszechnie określane jako błąd średniokwadratowy (MSE). W poniższym równaniu,
- i reprezentuje indeks próbki,
- y-hat jest przewidywanym wynikiem,
- y jest rzeczywistą wartością, a
- m jest liczbą próbek.
W ostatecznym rozrachunku celem jest minimalizacja naszej funkcji kosztu, aby zapewnić poprawność dopasowania dla każdej danej obserwacji. W miarę jak model dostosowuje swoje wagi i skośność, wykorzystuje funkcję kosztu i uczenie wzmacniające, aby osiągnąć punkt zbieżności lub lokalne minimum. Proces, w którym algorytm dostosowuje swoje wagi odbywa się poprzez zejście gradientowe, co pozwala modelowi określić kierunek, w którym należy podążać, aby zredukować błędy (lub zminimalizować funkcję kosztu). Z każdym przykładem treningowym, parametry modelu dostosowują się, aby stopniowo zbiegać do minimum.
Zobacz ten artykuł IBM Developer, aby uzyskać głębsze wyjaśnienie koncepcji ilościowych związanych z sieciami neuronowymi.
Większość głębokich sieci neuronowych to sieci typu feedforward, co oznacza, że płyną one tylko w jednym kierunku, od wejścia do wyjścia. Jednak można również trenować model poprzez wsteczną propagację, to znaczy poruszać się w przeciwnym kierunku od wyjścia do wejścia. Backpropagation pozwala nam obliczyć i przypisać błąd związany z każdym neuronem, co pozwala nam dostosować i dopasować parametry modelu (ów) odpowiednio.
Typy sieci neuronowych
Sieci neuronowe mogą być klasyfikowane do różnych typów, które są wykorzystywane do różnych celów. Chociaż nie jest to pełna lista typów, poniżej będzie reprezentatywna dla najbardziej powszechnych typów sieci neuronowych, które można napotkać dla jego wspólnych przypadków użycia:
Perceptron jest najstarszą siecią neuronową, stworzony przez Franka Rosenblatta w 1958 roku. Posiada jeden neuron i jest najprostszą formą sieci neuronowej:
Sieci neuronowe typu „forwardward”, czyli perceptrony wielowarstwowe (MLP), są tym, na czym głównie skupiamy się w tym artykule. Składają się one z warstwy wejściowej, warstwy lub warstw ukrytych oraz warstwy wyjściowej. Chociaż te sieci neuronowe są również powszechnie określane jako MLP, ważne jest, aby zauważyć, że w rzeczywistości składają się one z neuronów sigmoidalnych, a nie perceptronów, ponieważ większość problemów w świecie rzeczywistym jest nieliniowa. Dane są zazwyczaj wprowadzane do tych modeli w celu ich wytrenowania i stanowią podstawę wizji komputerowej, przetwarzania języka naturalnego i innych sieci neuronowych.
Konwolucyjne sieci neuronowe (CNN) są podobne do sieci typu feedforward, ale są zazwyczaj wykorzystywane do rozpoznawania obrazów, rozpoznawania wzorców i/lub wizji komputerowej. Sieci te wykorzystują zasady algebry liniowej, w szczególności mnożenie macierzy, do identyfikacji wzorców w obrazie.
Recurrent neural networks (RNNs) są identyfikowane przez ich pętle sprzężenia zwrotnego. Te algorytmy uczenia się są głównie wykorzystywane podczas korzystania z danych szeregu czasowego do przewidywania przyszłych wyników, takich jak prognozy giełdowe lub prognozowanie sprzedaży.
Sieci neuronowe vs. głębokie uczenie
Głębokie uczenie i sieci neuronowe mają tendencję do być używane zamiennie w rozmowie, co może być mylące. W rezultacie, warto zauważyć, że „głębokie” w głębokim uczeniu jest po prostu odnosząc się do głębokości warstw w sieci neuronowej. Sieć neuronowa, która składa się z więcej niż trzech warstw – co obejmowałoby wejścia i wyjścia – może być uznana za algorytm głębokiego uczenia. Sieć neuronowa, która ma tylko dwie lub trzy warstwy, jest po prostu podstawową siecią neuronową.
Aby dowiedzieć się więcej o różnicach między sieciami neuronowymi a innymi formami sztucznej inteligencji, takimi jak uczenie maszynowe, przeczytaj wpis na blogu „AI vs. Machine Learning vs. Deep Learning vs. Neural Networks: What’s the Difference?”
Historia sieci neuronowych
Historia sieci neuronowych jest dłuższa niż większość ludzi myśli. Choć ideę „maszyny, która myśli” można prześledzić już u starożytnych Greków, my skupimy się na kluczowych wydarzeniach, które doprowadziły do ewolucji myślenia o sieciach neuronowych, których popularność rosła i rosła na przestrzeni lat:
1943: Warren S. McCulloch i Walter Pitts opublikowali „A logical calculus of the ideas immanent in nervous activity (PDF, 1K KB) (link resides outside IBM)” Badania te miały na celu zrozumienie, w jaki sposób ludzki mózg może wytwarzać złożone wzory poprzez połączone komórki mózgowe, czyli neurony. Jedną z głównych idei, która pojawiła się w tej pracy, było porównanie neuronów z progiem binarnym do logiki Boole’a (tj. stwierdzeń 0/1 lub prawda/fałsz).
1958: Frankowi Rosenblattowi przypisuje się rozwój perceptronu, udokumentowany w jego badaniach „The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain” (PDF, 1.6K KB) (link znajduje się poza IBM). Posunął się on o krok dalej, wprowadzając do równania wagi. Wykorzystując IBM 704, Rosenblatt był w stanie sprawić, by komputer nauczył się rozróżniać karty zaznaczone po lewej stronie od kart zaznaczonych po prawej.
1974: Podczas gdy wielu badaczy przyczyniło się do powstania idei wstecznej propagacji, Paul Werbos był pierwszą osobą w USA, która odnotowała jej zastosowanie w sieciach neuronowych w swojej pracy doktorskiej (PDF, 7.8 MB) (link znajduje się poza IBM).
1989: Yann LeCun opublikował pracę (PDF, 5.5K KB) (link znajduje się poza IBM) ilustrującą, jak wykorzystanie ograniczeń w wstecznej propagacji i jej integracja z architekturą sieci neuronowej może być użyta do trenowania algorytmów. W badaniach tych z powodzeniem wykorzystano sieć neuronową do rozpoznawania ręcznie pisanych cyfr kodu pocztowego dostarczonego przez U.S. Postal Service.
Sieci neuronowe i chmura IBM
Od dziesięcioleci IBM jest pionierem w rozwoju technologii sztucznej inteligencji i sieci neuronowych, czego wyrazem jest rozwój i ewolucja IBM Watson. Watson jest obecnie zaufanym rozwiązaniem dla przedsiębiorstw, które chcą zastosować zaawansowane techniki przetwarzania języka naturalnego i głębokiego uczenia się w swoich systemach, korzystając ze sprawdzonego wielopoziomowego podejścia do przyjęcia i wdrożenia AI.
Watson wykorzystuje framework Apache Unstructured Information Management Architecture (UIMA) oraz oprogramowanie IBM DeepQA, aby udostępnić aplikacjom potężne możliwości głębokiego uczenia się. Korzystając z narzędzi takich jak IBM Watson Studio i Watson Machine Learning, firma może bezproblemowo wdrażać projekty open-source AI do produkcji, jednocześnie wdrażając i uruchamiając modele w dowolnej chmurze.
Aby uzyskać więcej informacji o tym, jak rozpocząć pracę z technologią głębokiego uczenia, zapoznaj się z IBM Watson Studio.
Zaloguj się, aby uzyskać identyfikator IBMid i utwórz konto IBM Cloud.
Więcej informacji na temat technologii głębokiego uczenia.