Istnieje szereg technologii i metod tworzenia sztucznej inteligencji. Jedną z nich są sztuczne sieci neuronowe, narzędzie obliczeniowe imitujące w prosty sposób działanie ludzkiego mózgu. „Sieci” to zbiór jednostek przetwarzających dane, komunikujących się miedzy sobą i pracujących równolegle. Znajdują zastosowanie w systemach służących do rozpoznawania wzorców i rozwiązywania problemów typowych dla dziedzin sztucznej inteligencji, uczenia maszynowego i uczenia głębokiego. Określenie sztuczne sieci neuronowe wykorzystywane jest także jako nazwa dziedziny zajmującej się konstrukcją i badaniem tego rodzaju sieci. Istnieją one już od blisko 50 lat, a od dłuższego czasu proste sieci są wykorzystywana na przykład do rozpoznawania odręcznego pisma.
„The more the mind receives, the more does it expand.” —Seneca the Younger, 5 B.C.E.
Czym tak właściwie są sieci neuronowe?
Sztuczna sieć neuronowa to połączenie elementów zwanych sztucznymi neuronami, które tworzą warstwy: wejściową, ukrytą i wyjściową, przy czym warstw ukrytych może być wiele. Istnieją także sieci jednowarstwowe i dwuwarstwowe. Inspiracją dla sztucznych sieci neuronowych była budowa naturalnych neuronów. Sztuczny neuron funkcjonuje na innych zasadach. Sztuczny neuron to specyficzny obiekt przetwarzający sygnały, komunikujący się i współpracujący z innymi takimi obiektami. Neurony sieci przetwarzają informacje dzięki temu, że ich połączeniom nadaje się parametry, zwane wagami, które modyfikuje się podczas działania sieci. Modyfikowanie wag nazywane jest „uczeniem się” sieci. W procesie uczenia się sieci tkwi istota i rzeczywista wartość sieci neuronowych.
Ilustracja przedstawia schemat budowy ludzkiego neuronu wraz z wskazaniem nazw poszczególnych struktur. Źródło: https://www.freepik.com/free-photos-vectors/neuron/4
Rys historyczny powstawania sieci neuronowych.
Badania dotyczące sieci neuronowych mają swoje podstawy w badaniach neurofizjologicznych i bio cybernetycznych. Najprostsza sieć neuronowa, składająca się z jednego lub kilku niezależnych neuronów McCullocha-Pittsa (będących jednym z matematycznych modeli neuronu, opisany w roku 1943), nazywamy perceptronem.
Perceptron, zbudowany w roku 1958 przez Arturo Rosenblatha i Charlesa Wrightmana był urządzeniem elektromechanicznym, które miało za zadanie rozpoznawanie znaków alfanumerycznych (system kodu składający się ze znaków A-Z i cyfr 0-9). Składał się z 8 elementów nazywanych komórkami nerwowymi oraz z 512 połączeń, które były ustalane losowo. Jego szybkość działania wynosiła 103 połączenia na sekundę. Percepton poprawnie rozpoznawał jedynie proste znaki, słabo radząc sobie ze znakami złożonymi. Jego działanie charakteryzowały dodatkowo dwie bardzo ciekawe cechy.
Percepton zachowywał poprawność działania nawet wtedy, kiedy część jego systemów i elementów uległa uszkodzeniu oraz uczył się rozpoznawania znaków nawet w sytuacjach, w których na wejściu pojawiały się dane cząstkowe. Był on siecią jednowarstwową, która jak wskazywali M. Minsky i S. Papert w roku 1969, charakteryzowała się szeregiem ograniczeń. Ich publikacja wstrzymała na dekadę badania nad sieciami neuronowymi. Kiedy w latach 80. XX. wieku zaczęto budować sieci nieliniowe i wielowarstwowe nastąpił rozwój technologii. Nie posiadały one ograniczeń wskazywanych przez Minskiego i Paperta. Rozwój technologii układów scalonych o dużej skali integracji spowodował, że zaczęto budować sieci coraz bardziej złożone, wykazujące w pewnej klasie problemów zdecydowaną przewagę nad komputerami klasycznymi. (Perceptron Wikipedia)
Zastosowania sieci neuronowych.
Sieci neuronowe znajdują zastosowania m.in. w: diagnostyce medycznej, rozpoznawaniu obrazów, mowy i pisma, kompresji danych, prognozowaniu oraz modelowaniu różnych zjawisk i procesów. Uniwersalność sieci neuronowych pozwala na ich efektywne stosowanie w technice, ekonomii i finansach, medycynie, geologii, matematyce, informatyce.
Mikroprocesory stosowane współcześnie w komputerach nie są w stanie samodzielnie uczyć się i rozwijać, a każda funkcja wykonywana przez mikroprocesor musi zostac wcześniej zaimplementowana przez programistę. Pytanie jest następujące. Czy w niedalekiej przyszłości ta sytuacja może ulec zmianie? Od roku 2008 firma IBM oraz agencja DARPA (USA) rozpoczęły projekt SyNAPSE, którego celem jest stworzenie neurokomputera, którego działanie opiera się na podobnych zasadach co ludzki mózg. W roku 2011 firma IBM zaprezentowała mikroprocesor nowej generacji (tzw. układy neuromorficzne) złożony z 256 neuronów, 262 144 synaps i 256 aksonów. w roku 2014 zaprezentowano drugą generację mikroprocesora. (IBM) (IEEE)
Ilustracja: IBM. Zobacz więcej na oficjalnej stronie IBM.
Mikroprocesor drugiej generacji, nazywany TrueNOrth składa się z 1000000 programowalnych neuronów oraz 256 000 000 programowalnych synaps. Ludzki mózg jest bardzo złożoną strukturą biologiczną składającą się z ok. 10 miliardów neuronów oraz 10 bilionów synaps. Jak zapowiada Dharmendra Modha (menadżer IBM cognitive computing initiative), finalnym osiągnięciem projektu SyNAPSE powinno być zbudowanie mózgu w pudełku małej wielkości o niewielkim zapotrzebowaniu na energię.
Sieci neuronowe są narzędziem bardzo wygodnym. Są bardzo użyteczne w wielu zastosowaniach, nie są jednak tak uniwersalne jak klasyczne komputery. Cytując Ryszarda Tadeusiewcza:
„Entuzjastom łatwo jest wskazać zadania, których rozwiązania za pomocą sieci okazały się znacząco lepsze, niż rozwiązania uzyskane przez klasyczne komputery, zaś malkontenci bez trudu wskażą zadania, dla których rozwiązania wykorzystujące sieci okazały się groteskowo niepoprawne. Prawda, jak zwykle, leży pośrodku.”
Istnieje jednak szereg zagadnień, w których zastosowanie sieci neuronowych nie przynosi spodziewanych efektów jak na przykład:
Manipulacje na symbolach – przetwarzanie informacji w postaci symbolicznej jest bardzo trudne do przeprowadzenia przy użyciu sieci neuronowej.
Obliczenia, w których wymagana jest duża dokładność – sieć neuronowa daje zawsze wyniki przybliżone. Dokładność tego przybliżenia jest zadawalająca np. przy przetwarzaniu sygnałów, analizie obrazów, rozpoznawaniu mowy, prognozowaniu wartości notowań giełdowych, sterowaniu robotów. Nie jest jednak wystarczająca w przypadku precyzyjnych obliczeń inżynierskich, czy obsługi kont bankowych.
Zadania wymagające wieloetapowego rozumowania – sieci neuronowe na ogół usiłują rozwiązywać problemy jednokrokowo. Jeśli istnieje konieczność przeprowadzenia ciągu rozumowań, sieci neuronowe są nieprzydatne, a wszelkie próby ich zastosowań w tym zakresie prowadziły do niepowodzeń.
Sztuczne sieci neuronowe stają się fascynacją inżynierów, między innymi dlatego, że imitują szereg, dość zadziwiających, cech ludzkiego mózgu, jak wysoki stopień równoległości przesyłu impulsów, umiejętność radzenia sobie z informacjami niepełnymi lub zaszumionymi, małe rozmiary i zużycie energii, posiadają także umiejętność dostosowywania się do zmiennych sytuacji bez potrzeby programowania działania.
Stąd przechodzimy do do wielu zalet sztucznych sieci neuronowych, które są skutkiem powyższych cech. Jedną z nich jest zdolność do nauki na podstawie przykładów, tak jak człowiek uczy się na podstawie doświadczeń i powtarzania informacji. Posiadają także zdolność do uogólniania zjawisk, – np. podział rodzajów uszkodzeń na typy. Ale także:
Zdolność do interpretacji zależności i zjawisk zawierających informacje niekompletne lub z błędami,
Równoległość przetwarzania informacji – szczególnie istotne przy przetwarzaniu informacji w czasie rzeczywistym, np. neurokomputer Mitsubishi używany do rozpoznawania mowy i przetwarzania obrazu.
Niski koszt budowy w stosunku do szybkości przetwarzania informacji – duża liczba prostych (i tanich) procesorów.
Odporność na uszkodzenie układów – dzięki dużej liczbie neuronów, po utracie części neuronów sztuczna sieć neuronowa nie musi działać błędnie.
Sztuczne sieci neuronowe w praktyce i zagrożenia.
Sztuczne sieci neuronowe mają wiele zastosowań praktycznych (a w najbliższej przyszłości pojawi się zapewne wiele nowych). Zastosowania sztucznych sieci neuronowych można przedstawić w kategoriach kojarzenia danych, klasyfikacji czyli przyporządkowywania zdarzenia do określonej klasy. Analizy danych, inaczej wykrywania grup co umożliwia np. filtrację różnych sygnałów. Wydobywanie cech umożliwia redukcję rozmiaru danych, inaczej ich kompresję. Aproksymacja natomiast, mówi o tym, że na podstawie znajomości punktów sztucznej sieci neuronowej uczy się kształtu funkcji. Dodatkowo sztuczne sieci neuronowe umożliwiają predykcję, optymalizację (w tym problemów kombinatorycznych) tworzenie układów sterujących, gdzie na podstawie podawania wzorców reakcji na określone bodźce, sztuczna sieć neuronowa może automatycznie interpretować sytuację i na nią reagować. Rozpoznawanie i odtwarzanie obrazów, rozpoznawanie obrazu i przypisywanie do danej grupy, nawet przy dość dużym zniekształceniu, a także pamięć czyli możliwość wybiórczego pobierania w bardzo krótkim czasie.
Cytując Mikołaja Magnuskiego, neurokognitywistę z Uniwersytetu SWPS:
Człowiek dużo lepiej radzi sobie również z niepewnością – w sytuacji gdy bodziec nie może być skutecznie rozpoznany, możemy podjąć decyzję o zmianie perspektywy, zbliżeniu się do danego obiektu albo dokładniejszej analizie cech, które mogą być kluczowe w rozstrzygnięciu naszych wątpliwości. To znaczy, że jesteśmy w stanie tak ukierunkować nasze zachowanie, by tę niepewność zmniejszyć. Większość stosowanych obecnie sztucznych sieci neuronowych kończy natomiast pracę na opisaniu pewności, z jaką klasyfikuje obraz, ale nie są w stanie podjąć żadnych dodatkowych działań, by upewnić się, że rozpoznanie jest poprawne w sytuacji, gdy na przykład bodziec jest nietypowy.
Odpowiadając na pytanie „Jakie mogą być konsekwencje pomyłek w wykonaniu sztucznych sieci neuronowych?“ odpowiedział:
Można wydrukować trójwymiarowy obiekt, w którym każdy człowiek rozpozna żółwia, ale na przykład ze względu na użytą teksturę sztuczna sieć neuronowa uzna, że to karabin maszynowy. To jest czysto spekulatywny przykład, ale gdyby w armii w 100 proc. polegano na systemach bezpieczeństwa opartych na SI, to mogłyby one oddać strzał w kierunku dziecka idącego z pluszowym żółwiem pod pachą, którego zaklasyfikują jako broń. Konsekwencje pomyłek w systemach inteligentnych mogą być tragiczne, dlatego człowiek powinien nadal odgrywać kluczową rolę w ich kontroli. Tu nasuwa się przykład już nie spekulatywny, lecz wzięty z życia, konkretnie ze Stanów Zjednoczonych, gdzie całkowicie autonomiczny pojazd spowodował śmierć pieszego.
Jak działają sieci neuronowe?
Sieci neuronowe są na tyle złożonym i obszernym zagadnieniem, że o tym, jak działają, powstają całe książki i prace naukowe. Można by je opisywać skomplikowanymi wzorami matematycznymi czy funkcjami. Warto jednak przedstawić schemat ich działania w sposób uproszony w celu łatwiejszego zrozumienia, o co właściwie chodzi.
Prawdziwe sieci neuronowe naturalnie występują w mózgu. Tworzą je neurony i połączenia między nimi – synapsy. Kiedy mówimy jednak o sztucznych sieciach neuronowych, neurony są reprezentowane przez węzły (ang. nodes). Węzły mogą komunikować się z innymi węzłami poprzez wysłanie sygnału. Jest to możliwe jednak tylko w wypadku kiedy sam jest pobudzony. W jaki sposób węzeł może zostać pobudzony? W tym miejscu występuje kolejne podobieństwo do biologicznych sieci neuronowych w mózgu – wartość progowa. Jeżeli siła połączenia przekracza wartość progową, wtedy węzeł zostanie „uruchomiony” i wyślę sygnał do kolejnego węzła.
Połączenia między konkretnymi węzłami mają przypisane wagi. Jest to wartość liczbowa mieszcząca się w przedziale od -1 do 1, określa ona siłę połączenia. Wartość, którą węzeł wysyła do kolejnego, to suma wszystkich dochodzących do niego wag pomnożona przez jego wartość progową. Tak też na przykład węzeł o wartości progowej 1, do którego dochodzą łącza o wartości wagi 0,2, wyśle dalej sygnał o wartości 0,2 (gdyż 1 × 0,2 = 0,2). Poniższy schemat pokazuje prostą dwuwarstwową sieć i opisuje w dobry sposób, o co chodzi.
Ilustracja pochodzi z książki J.D Friedenberg, Gordon W. Silverman,Cognitive Science: An Introduction to the Study of Mind.
W tym schemacie wagi są podane na strzałkach a siła netto połączenia przy grocie strzałki. Węzeł A ma wartość aktywacji równą 2 i wagę +0,6 stąd też jego siła netto wynosi 1,2. Wartość aktywacji węzła B ma wartość równą 1 natomiast wagę połączenia równą -0,3 co daje wynik siły netto równy -0,3. Te wyniki są sumowane w węźle C i wynik ten jest jego wartością aktywacji, który w tym wypadku wynosi +0,9. Wartość aktywacji zostaje następnie pomnożona przez wagę połączenia wynoszącą +0,4 co daje wynik siły netto +0,36.
Powyżej opisany sposób działania jest dużym uproszczeniem i nie może być traktowany jako dokładny akademicki schemat, mimo to dość trafnie przedstawia samą koncepcję tego, jak działają sieci neuronowe. Jednak patrząc na powyższy obrazek, trudno jest wyobrazić sobie, o jak pożytecznym narzędziu mówimy. O wiele bardziej interesująco robi się, gdy zamiast 3 węzłów weźmiemy ich na przykład 16 czy 14.
.
Ilustracja pochodzi z książki J.D Friedenberg, Gordon W. Silverman,Cognitive Science: An Introduction to the Study of Mind.
Powyższe schematy przedstawiają sieci dwuwarstwowe i trójwarstwowe zawierające input i output oraz także ukrytą warstwę w przypadku sieci trójwarstwowej. Istnieją jednak sieci zawierające o wiele więcej warstw. Im więcej warstw tym bardziej skomplikowana a co za tym idzie także bardziej funkcjonalna sieć neuronowa, pozwalająca na wykonywanie bardziej zaawansowanych czynności, jak na przykład uczenie głębokie. Można zobaczyć to w poniższym filmie, gdzie bazując na czterowarstwowej sieci, zaprojektowano program uczący samochodzik, jak jechać zgodnie z trasą.
Jak sieci się uczą?
Jak już wyżej zostało wspomniane, sieci neuronowe mają możliwość uczenia się. Dotyczy to sieci, które zawierają więcej warstw na przykład trzy. W takiej sytuacji można je podzielić na warstwę wejściową (ang. input), warstwę ukrytą (ang. hidden) oraz warstwę wyjściową (ang. output). W warstwie wejściowej reprezentowany jest jakiś bodziec, następnie zwoje z tej warstwy wysyłają informację do zwoi w warstwie ukrytej, która z kolei wysyła je do zwoi warstwy wyjściowej. Ostatnia warstwa w ten sposób generuję jakiś sygnał, który jest odpowiedzią na dany bodziec. Odpowiedź ta jest następnie porównywana ze wzorcem, którego chcemy nauczyć sieć. W przypadku, jeżeli odpowiedź jest błędna (zbyt bardzo odbiega od wzorca) do sieci zostaje wysłany sygnał błędu, który powoduje w sieci zmiany wartości wag między łączami. Pozwala to sieci na wygenerowanie kolejnej odpowiedzi, która może być już bliższa wzorcowi. Metoda ta oparta jest na sprzężeniu zwrotnym i nazywany jest modelem uczenia wstecznego. Poniższy schemat przedstawia tę metodę.
Ilustracja pochodzi z książki J.D Friedenberg, Gordon W. Silverman,Cognitive Science: An Introduction to the Study of Mind.
Uczenie się sieci neuronowych jest prawdopodobnie ich najbardziej funkcjonalnym i pożądanym aspektem. Powyższa metoda jest uproszczonym opisem tego, jak się to dzieje.
Na powyższym filmie można zobaczyć bardziej zaawansowaną sieć neuronową, która została nauczona gry w Snake’a.
W celu doświadczenia na własnej skórze tego jak uczą się sieci neuronowe, polecam stronę A Neural Network Playground, gdzie można zobaczyć działanie takiej sieci, dodając kolejne warstwy, węzły lub inne zmienne.
Literatura
R. Tadeusiewicz (red.), Wprowadzenie do sieci neuronowych, Kraków, 2001.
J.D Friedenberg, Gordon W. Silverman,Cognitive Science: An Introduction to the Study of Mind
IEEE Spectrum – IBM’s Brain-Inspired Computer Chip Comes from the Future – An IBM computer chip modelled on biological brains aims to make everything more intelligent, https://spectrum.ieee.org/ibms-braininspired-computer-chip-comes-from-the-future
IBM -Novel Synaptic Architecture for Brain Inspired Computing, https://www.ibm.com/blogs/research/2018/07/synaptic-architecture/
IBM – Sieci neuronowe, https://www.ibm.com/pl-pl/cloud/learn/neural-networks
IBM – https://www.ibm.com/us-en?lnk=m
GlobEMA – Czym są sztuczne sieci neuronowe i jak można je wykorzystać?
Kognitywistyka.uwb – Sieci neuronowe, https://kognitywistyka.uwb.edu.pl/component/k2/item/406-sieci-neuronowe
Strefa Psyche Uniwersytetu SWPS – Sekretne życie sieci neuronowych. Sztuczna inteligencja a neuronauka, https://web.swps.pl/strefa-psyche/blog/relacje/22346-sekretne-zycie-sieci-neuronowych-sztuczna-inteligencja-a-neuronauka?dt=1666824040262
Wikipedia – Perceptron, https://pl.wikipedia.org/wiki/Perceptron
W ramach odpowiedzi na pytanie dotyczące wpływu uszkodzeń na działanie perceptronu, które pojawiło się podczas zajęć, pragnę załączyć linki do dwóch ciekawych artykułów popularnonaukowych napisanych przez Profesora Ryszarda Tadeusiewicza. Odpowiedź na pytanie znajduje się w drugim z nich, lecz szczerze zachęcam do zapoznania się z obydwiema propozycjami.
Pierwszy elektroniczny model mózgu:
https://natemat.pl/blogi/ryszardtadeusiewicz/129195,pierwszy-dzialajacy-techniczny-model-mozgu
Perceptronu przygód ciąg dalszy:
https://natemat.pl/blogi/ryszardtadeusiewicz/129321,perceptronu-przygod-ciag-dalszy
[…] Dla zainteresowanych więcej o sieciach neuronowych można przeczytać tutaj. […]