Dzisiaj miała być obiecana porcja mięska (pierwszy kod). Jednak wpis wyszedł
całkiem długi i bez tego więc mięsko będzie związane tylko z biologią. Lecimy.
Dawno dawno temu, ale też w XIX wieku uważano nasz kochany mózg za jednolitą masę.
Na szczęście świat posiada wielu ciekawskich, którzy nie zatrzymują się tam gdzie
stoją i próbują coś zbadać, obejrzeć, pokroić, sprawdzić. Do takich ludzi należał
Włoch Camillo Golgi (na obrazku powyżej po lewej stronie), który już w XIX wieku
opracował "czarną
reakcję" (jak ją nazywał)
czyli metodę barwienia preparatów. Metoda ta polegała na naprzemiennym użyciu kilku
odczynników i suszeniu kawałka tkanki. Bazowała na podobnych metodach stosowanych
wtedy w fotografii. Dzięki temu możliwe stało się takie
przygotowanie preparatu, że mając mikroskop można było zaobserwować neurony.
Dzięki tej metodzie Hiszpan Santiago Ramón y Cajal (na obrazku powżej po prawej
stronie) mógł bez przeszkód kroić,
przygotowywać i badać tysiące zwierzątek i skutecznie badać ich mózgi. Poczynił on
ważne odkrycie dotczyące neuronów. Zauważył, że aksony kilku neuronów nie są ze
sobą
połączone. Łączą się za to z dendrytami innych neuronów. Mamy więc do czynienia ze
swego rodzaju uporządkowaną siecią. Ale zanim przejdziemy do całej sieci
zatrzymajmy się na chwilę przy neuronie.
Neuron
W naszej głowie mamy ich miliardy. Ich bodowę wewnętrzną poznaliśmy już na tyle, że możemy rozpoznać w nich wiele skomplikowanych elementów wewnętrznych. Jednak dla potrzeb budowanych przez nas sieci neuronowych możemy poprzestać na prostym schemacie neuronów oraz ich połączeń i przedstawić je tak jak w XIX wieku widział je Santiago. Dla nas neuron to przede wszystkim:
- ciało komórki
- akson - czyli "wyjście" neruonu
- dendryty - czyli "wejścia" neuronu

Otwartym zostaje pytanie: jak on to robi? Załóżmy więc że mamy neuron działający na dwóch wartościach 0 oraz 1. Tylko takie wartości będą na wejściu i wyjściu całego układu. Wewnątrz mogą być inne. Dodatkowo chcemy, aby nasz neuron mógł wykonać trzy najprostsze operacje logiczne: alternatywy (dodawania logicznego), koniunkcji (mnożenia logicznego) oraz negacji. Oczywiście nie będzie wykonywać tego w jednym czasie. Spróbujmy zobaczyć co musi posiadać neuron aby mógł sprostać temu zadaniu.
Ciało komórki
Sygnały ze wszystkich dendrytów "spotykają" się w ciele komórki. Co się tam z nimi
dzieje? Sumują się? Mnożą? Coś innego?
Co musiałoby się tam stać abyśmy mogli dodać i pomnożyć (logicznie) dwie
zerojedynkowe
wartości? Zobaczmy jak wygląda tzw. tabela prawdy dla tych dwóch funkcji:
Załóżmy więc, że wartości sygnałów są przez siebie przemnożone logicznie (we
wnętrzu ciała
komórki). Spowoduje to oczywiście, że będzie nam działać funkcja koniunkcji. Jednak
nie zadziała nam funkcja alternatywy. Jeśli dodamy (logicznie) wartości to z kolei
nie zadziała nam funcka koniunkcji. Niestety jedynka na wejściu pojawia się raz
wcześniej (już w drugim wierszy dla alternatywy) a raz później (dopiero w ostatnim
wierszu w przypadku koniunkcji). Dla obu funkcji mamy więc jakiegoś rodzaju
"progi",
które sprawiają, że w którymś momencie pojawia się na wyjściu jedynka. Poniżej
tabela z zaznaczonymi progami (czerwony dla alternatywy i niebieski dla
koniunkcji):
Jak może działać nasz neuron w tym momencie (aby było to dla nas wystarczające dla
przeprowadzenie operacji alternatywy i koniunkcji)? Otóż dodaje on (arytmetycznie)
sygnały z
dendrytów, a gdy ich wartość urośnie ponad pewien próg (określony dla jego
wewnętrzej
funkcji aktywacji) na jego wyjściu pojawi się wartość 1. Gdy suma wejść będzie za
mała
akson (wyjście) będzie posiadał wartość zerową. Mamy więc na tą chwilę trzy
zasady neuronu:
- ciało komórki dodaje arytmetycznie sygnały
- suma sygnałów przekraczająca pewien próg aktywuje neuron (i 0 na wyjściu zamienia się na 1)
- w zależności od realizowanej funkcji próg ma inną wartość

Synapsa
W przypadku biologicznym jest to swego rodzaju przeszkoda dla sygnału. Swego
rodzaju regulator, który przepuszcza więcej lub mniej sygnału z jednej komórki do
drugiej. Używając porównania: mamy więc wiele wysp na morzu (komórek nerwowych). Na
wyspę można dojachać mostem (dendryt). Każdy most ma jednak punkt poboru opłat,
który przepuszcza więcej lub mniej pojazdów (synapsa).
Ta właśnie zmienna przepuszczalność pozwoli nam uzyskać neuron, który reagowałby
tylko na sygnał z jednego dendrytu a był obojętny na sygnał z drugiego ("szlaban" w
drugim punkcie pobory opłat będzie zawsze zamknięty).
Jak zamodelujemy synapsę w przypadku naszego sztucznego systemu. Po prostu użyjemy
mnożenia. Pomnożymy sygnał, który przychodzi do synapsy z innych komórek przez
pewną wartość, która będzie odpowadała "przepustowości" synapsy. Będzie to pewna
waga związana z każdym z wejść neuronu. Dla naszego drugiego
dendrytu będzie to zero. Zatem sygnał dochodący z dendrytu do
komórki możemy zapisać prostym wzorem:
Gdzie A prev to wartość sygnału jaka przyszła od poprzedniego neuronu, a S to waga/mnożnik przypisana do każdej synapsy.
Możemy więc wykonać kolejną funkcję (trzecią). Wiemy również, że wartości każdego z sygnałów wejściowych są przemnażane na wejściu. Dochodzi nam więc czwarta zasada:
każdy z sygnałów wejściowych pochodzących od innych neronów jest przemnażany przez wagę synapsy na połączaniu z tym neuronem
Czy to koniec. Nie. Okazuje się, że możemy wyrzucić jedną z zasad i uprościć nieco nasz system. Ponieważ dzielenie to mnożenie przez liczbę odwrotną, a my każdy z sygnałów na wejściu mnożymy, możemy podzielić wszystkie wagi synaps przez wartość progu aktywacji neuronu. Co nam to da? Otóż próg aktywacji będzie miał wtedy zawsze wartość 1. Oznacza to, że rozważane przez nas dotychczas funkcje możemy zrealizować przyjmując następujące zasady neuronu:
- ciało komórki dodaje arytmetycznie sygnały
- suma sygnałów przekraczająca 1 aktywuje neuron (i 0 na wyjściu zamienia się na 1)
- każdy z sygnałów wejściowych pochodzących od innych neronów jest przemnażany przez wagę synapsy
Wróćmy jednak do zapomnianej negacji. Jest ona jeszcze prostszą funcką niż omawiane wcześniej. Czy uda nam się ją zaimplementować za pomocą naszego neuronu. Jaką wartość powinna mieć waga synapsy abyśmy spełnili następującą tablicę prawdy:

Co do negacji, która musi "odwracać" wartość sygnału. Jak tego dokonać? Otóż musimy zastosować odwrotność (liczbę odwrotną). Ustawiamy wartość wagi synapsy na odwrotność 1 czyli: -1. Otrzymamy wtedy sumę dendrytów równą -1 (dla jednego przypadku) lub 0 (dla drugiego):

Bias
Jak widać na powyższej tabeli, gdybyśmy wartością sygnałów jakie ma dendryt dodali
po 1 (w każdym wierszu) osiągnęli byśmy neuron realizujący funkcję negacji. I to w
dużym skrócie jest zadanie biasu. Jest on dodatkowym dendrytem, który dodaje pewną
stałą wartość do sumy sygnałów przychodzących do ciała komórki ze wszystkich
"normalnych" dendrytów. Możemy więc zmodyfikować nieco schemat naszego prostego
neuronu:
Podsumowanie
Doszliśmy więc do neuronu, który potrafi wykonać kilka podstawowych funkcji w
zależności od tego jakie wagi ustawione są na jego wejściwoych synapsach.
Ostateczny schemat sztucznego neurony na tym etapie wygląda następująco:
- x1, x2, x3 - są to wartości sygnałów które przychodzą do synaps wejściowych naszego neuronu
- 1 - wartość stała sygnału podawanego na bias
- S0, S1, S2, S2 - są to synapsy wejściowe naszego neurony, które posiadają wagi liczbowe
- w0, w1, w2, w3 - są to wartości liczbowe wag synaps wejściowych naszego neuronu
- D1, D2, D3 - są to dendryty
- B - bias (dodatkowy dendryt)
- Σ - umowny sumator znajdujący się na wejściu ciała komórki i dodający sygnały ze wszystkich dendrytów
- FA - funkcja aktywacji (zapisywana także jako f) - funkcja przeliczająca wartość z sumatora na sygnał podawany na wyjście neuronu. W najprostszym przypadku zmienia 0 na 1 po przekroczeniu przez sumę pewnego progu
- A - akson (wyjście) neuronu
- y - wartość sygnału w aksonie
Skoro mamy tyle symboli, to na koniec przydałby się jakiś wzorek ;-)
Jak nietrudno się domyślić będziemy wyznaczać y w zależności od x (i innych wartości). Wzór na sygnał wyjściowy neuronu wygląda następująco:
Także tym pięknym wzorem kończymy ten wpis. Mam nadzieję, że następny nie będzie trzeba tyle czekać ile na ten ;-)