Chmura neuronowa
Opracował: dr inż. Igor Skalski
Projekt został opublikowany dla dobra publicznego. Autor projektu zastrzega sobie honorowe prawa autorskie. Projekt w całości lub w części może być nieodpłatnie stosowany do celów komercyjnych.
Sztuczne sieci neuronowe, oparte na podstawowych założeniach podobnych do tych, jakie spotyka się w układach nerwowych zwierząt, posiadają istotne ograniczenia. W szczególności do prawidłowej pracy sieci niezbędna jest jej odpowiednia konfiguracja.
Od chwili powstania sztuczne sieci neuronowe ulegają modyfikacjom, prowadzącym do osiągnięcia zmian układowych. Nowoczesne sztuczne sieci neuronowe są szybsze, bardziej niezawodne i bardziej uniwersalne. Wszystkie te prace, jakkolwiek istotne, prowadzą jednak do zmian wyłącznie ilościowych.
Zmiana zachowania sieci neuronowych i osiągnięcie ich większej uniwersalności wymaga zastosowania zmian koncepcyjnych, jakościowych.
Celem projektu jest wykonanie chmury neuronowej. Porzucono koncepcję warstw i specjalizacji neuronów.
- Chmura neuronowa jest zbudowana z określonej liczby prostych i identycznych neuronów.
- Każdy neuron przyjmuje wartości wejściowe.
- Każdy neuron posiada połączenie ze wszystkimi innymi neuronami.
- Każdy neuron ma wpływ na wartość wyjściową.
- Neuron w chmurze neuronowej zawiera wagi wejściowe, sumator i nieliniową funkcję aktywacji, w szczególności opisaną funkcją sigmoidalną.
Chmura neuronowa, w początkowym etapie rozwoju projektu, będzie optymalizowana za pomocą algorytmu genetycznego - ewolucyjnego.
Chmura neuronowa zawiera zestaw równoważnych neuronów. Każdy neuron zawiera wejścia i przypisane im wagi. Na wejścia (synapsy) podawane są skalowane wartości wejściowe (dane) oraz wartości wyjściowe wszystkich neuronów, w tym wartość wyjściowa własna. Wyjścia neuronów są liczone jako ważona wartość funkcji aktywacji ze średniej: ważonych wartości z wejść danych i ważonych wartości z wyjść wszystkich neuronów - po przejściu każdej z tych wartości przez funkcję aktywacji.
Wszystkie wartości danych, przed podaniem na wejścia neuronu, są skalowane do wartości przyjmowanych przez funkcję aktywacji.
Wartości wyjściowe z neuronów są skalowane przed podaniem na wyjścia (neuryty) chmury.
Każdy neuron posiada możliwość częściowego, upośledzania wejść (synaps) na drodze losowej dezaktywacji wag synaptycznych.
Błąd chmury podczas procesu nauczania chmury jest liczony jako różnica pomiędzy wartością neurytu (wartość średnia z wyjść neuronów) i wartością rzeczywistą.
Chmura neuronowa jest optymalizowana za pomocą algorytmu genetycznego operującego na wartościach zmiennoprzecinkowych. Dla uniknięcia długich okresów redundancji obliczeniowej algorytm genetyczny jest wspomagany algorytmem systematycznego przeszukiwania przestrzeni parametrów.
Wyniki pierwszych obliczeń zakończonych sukcesem przedstawiono na wykresach. Modele przedstawiają zależność szybkości korozji stali węglowej, w pierwszej dobie ekspozycji w roztworze chlorku sodowego, od stężenia chlorku sodowego i temperatury. Po prawej stronie przedstawiono modele z wyświetlonymi wynikami pomiarowymi (czerwone punkty), wartościami obliczeniowymi (czarne punkty). Model uzyskany za pomocą chmury neuronowej przyrównano do modelu uzyskanego za pomocą sztucznej sieci neuronowej.
Model utworzony za pomocą chmury neuronowej
Model utworzony za pomocą sztucznej sieci neuronowej
Model utworzony za pomocą chmury neuronowej
Wersja archiwalna 0.1.1 z dnia 04.04.2016 r.
Model utworzony za pomocą chmury neuronowej
Kod źródłowy programu: wersja 0.2.0 z dnia 08.05.2017 r. [ANSI C]
Kod źródłowy należy skompilować za pomocą polecenia:
gcc -ansi -pedantic -Wall -lm -O3 nc.c -o nc
Opublikowano: 25 stycznia 2015 r.
Ostatnia modyfikacja: 08 maja 2017 r.