Czy wiesz że… – Sieci neuronowe 101

Wiele wynalazków i rozwiązań technicznych powstało dzięki naśladowaniu natury. Takie podejście do opracowywania innowacji nazywamy biomimikrą. Od rzepów, które powstały na wzór owocostanów łopianu, przyczepiających się do sierści zwierząt; przez materiały hydrofobiczne inspirowane powierzchnią liścia lotosu, która, odpychając wodę, sama się oczyszcza; po systemy pasywnej wentylacji budynków, przypominające te obecne w kopcach termitów.

Życie na ziemi istnieje już od ok.3.7 miliardów (109) lat. Miało zatem mnóstwo czasu, aby za sprawą ewolucji znaleźć masę różnorakich rozwiązań na wszelkie napotkane problemy.

Jednym z ciekawszych rozwiązań inspirowanych naturą są sieci neuronowe, służące do rozpoznawania i klasyfikacji wzorców. Są to systemy luźno naśladujące budowę i działanie mózgu: tak jak i mózg, zbudowane są one z połączonych neuronów, przekazujących między sobą informacje. Ich budowę można podzielić na trzy główne elementy: warstwę wejściową, warstwy ukryte i warstwę wyjściową.

Uproszczony model sieci neuronowej

Warstwa wejściowa odpowiedzialna jest za dostarczanie informacji do modelu. Ma tyle neuronów, ile parametrów posiada klasyfikowany obiekt. Dostarczone dane zależą od problemów, jaki próbujemy rozwiązać. Na przykład, chcąc rozpoznać, czy pacjent jest zdrowy, dostarczymy takie informacje o tętnie, ciśnieniu krwi, temperaturze ciała, składzie krwi… Natomiast próbując przyporządkować roślinę do jakiegoś gatunku, możemy posłużyć się obrazkiem, gdzie każdy piksel jest jednym wejściem (lub trzema w przypadku obrazów kolorowych – model RGB).

Warstwy ukryte przekazują informacje w głąb modelu, jednocześnie modyfikując je. Pojedynczy neuron połączony jest ze wszystkimi neuromami z warstwy poprzedniej oraz następnej. Każde takie połączenie ma przypisaną wagę, odpowiadającą za wzmocnienie lub osłabienie sygnału poprzez jego wymnożenie. W dodatku, każdy neuron ma swój „bias” modyfikujący jego wartość, która stanowi sumę wszystkich otrzymanych sygnałów poprzez dodanie lub odjęcie wartości.

Finalnie: warstwa wyjściowa przekazuje informacje o przyporządkowanej klasyfikacji. Warstwa ta musi mieć tyle neuronów, ile jest klas. Jej wartością jest liczba z przedziału od 0 do 1, gdzie im wyższa wartość, tym większa pewność, że obiekt należy do odpowiadającej kategorii.

Wizualizacja przykładowej sieć neuronowej stworzona z wykorzystaniem „neural network playground”

Istotną zaletą sieci neuronowych jest to, że proces ich uczenia się przebiega automatycznie. Po dostarczeniu odpowiedniej ilości danych, same ustalają odpowiednie wagi i „bias’y”. Proces ten polega na drobnej zmianie ich wartości, a następnie na teście, czy po tej zmianie sieć jest dokładniejsza, czy nie. Takie podejście przypomina ewolucję, gdzie stare modele zastępowane są przez nowsze, docelowo lepiej przystosowane.

Jednakże, ta właściwość samoistnego nauczania jest również największą wadą sieci neuronowych. W przypadku bardziej rozbudowanych modeli, z uwagi na olbrzymią liczbę neuronów, zwyczajnie nie możemy ustalić, w jaki sposób one działają. Z tego powodu usprawnianie ich działania oraz zrozumienie zależności, które wykryły, jest znacznie utrudnione. Dla przykładu, pewna sieć służąca do diagnozy, czy pacjent jest narażony na pewną chorobę, nauczyła się z dużą dokładnością rozpoznawać płeć pacjenta po samym zdjęciu oka, gdzie naukowcy nie byli w stanie określić, w jaki sposób to robi.

Inny przykład: sieć jest podatna na fałszywe wzorce. Na przykład, sieć służąca rozpoznawaniu zdjęć kotów i psów – gdzie większość kotów na zdjęciach była wewnątrz, a psów na zewnątrz budynków – nauczyła się rozpoznawać zwierzęta właśnie po otoczeniu, co powodowało liczne błędy.

Istnieją metody sprawdzania, jakie wartości aktywują poszczególne neurony, ale przez to, że sieci mogą jednocześnie wykrywać zupełnie różne obiekty, jak koty i samochody, odpowiadające im obrazy potrafią być naprawdę abstrakcyjne.

Obrazy w pełni aktywujące neurony pewnej sieci

Autor: Paweł Olszewski

Dla tych, którzy chcą wiedzieć więcej:

Idealny wstęp do sieci neuronowych: https://playground.tensorflow.org

Linki do źródeł:

https://pl.wikipedia.org/wiki/Bionika

https://pl.wikipedia.org/wiki/Sie%C4%87_neuronowa

https://pl.wikipedia.org/wiki/Velcro

https://www.science.org/doi/10.1126/sciadv.aat8520

https://www.researchgate.net/figure/a-Termite-Mound-59-b-Overall-ventilation-system-of-the-Eastgate-building-60_fig2_368583106

https://en.wikipedia.org/wiki/Neural_network_(machine_learning)