algorytm.org

Sieć neuronowa



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Sieć neuronowa
Ocena użytkowników:***** / 9
SłabyŚwietny 
Wpisany przez Tomasz Lubiński, 27 lipca 2005 18:39

Pojedynczy neuron nie wystarcza do rozwiązywania skomplikowanych zadań, dlatego też łączy się je tworząc sieć neuronową. Przykładowy model, którym będziemy się zajmować to sieć jednokierunkowa. Mamy tutaj m neuronów połączonych z n neuronami warstwy następnej bez sprzężeń zwrotnych i połączeń między neuronami z tej samej warstwy. Warstw możemy mieć k. Pierwsza warstwa to warstwa wejściowa ostatnia to wyjściowa, pozostałe to tzw. warstwy wewnętrzne lub ukryte. Zazwyczaj taka sieć posiada jedną warstwę neuronów wejściowych, jedną wartwę neuronów wyjściowych oraz jedną warstwę ukrytą. Dzięki zwiększaniu ilości warstw można rozwiązywać coraz bardziej skomplikowane problemy, aczkolwiek zwiększa się czas działania i uczenia sieci.

Model sieci neuronowej

Obliczenia dla takiej sieci następują identycznie jak dla pojedynczego neuronu. A zatem mamy dane wartości x1, x2, ... xn. Na ich podstawie obliczamy wartości neuronów (perceptronów) w warstwie ukrytej. A więc:
z_1=f(x_1*w_{11}^1 + x_2*w_{21}^1 + ... + x_n*w_{n1}^1)\\ ...
gdzie funkcja f jest funkcją aktywacji neuronu (liniowa (rzadko), sigmoidalna, tangens hiperboliczny, Gaussa lub signum). Kolejną warstwę (w naszym wypadku wyjściową, ale może to być kolejna warstwa ukryta) obliczamy podobnie:
y_1=f(z_1*w_{11}^2 + z_2*w_{21}^2)\\ ...

Implementacje
AutorJęzyk
programowania
KomentarzOtwórzPobierzOcena
Tomasz LubińskiDelphi/PascalBorland Delphi 5
.pas
.pas
***** / 3
 
Dodaj własną implementację tego algorytmu
  • Zaloguj się na stronie
Plik:
Język
programowania:
Komentarz:
  By móc dodać implementacje zaloguj się na stronie

Poprawiony: 26 września 2012 19:25
Komentarze
photo
+4 # Sławek I 2015-02-09 13:25
"Dzięki zwiększaniu ilości warstw można rozwiązywać coraz bardziej skomplikowane problemy..."

Praktyka pokazuje, że nie jest to zdanie prawdziwe. Zwykle powinniśmy pozostać przy klasycznych trzech warstwach natomiast zwiększyć liczbę neuronów.

Pozdrawiam.
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
+2 # Vit 2017-05-29 19:02
Zaprezentowana sieć to tzw perceptron. Praktyka pokazuje, że zwiększenie liczby warstw nie poprawia zdolności percepcyjnych. Perceptrony służą do rozpoznawania wzorców i uczy się je danymi treningowymi (z nauczycielem).
Dobrze jest to opisane w "Sieci neuronowe w ujęciu algorytmicznym" Osowskiego. IMO dobra pozycja.
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz