[ Pobierz całość w formacie PDF ]
.Stosując prawa Hebba jako regułę uczenia uzyskuje się takie dopasowanie wag aby korelacja pomiędzy sygnałem wejściowym a zapamiętanym w formie wag wzorcem sygnału, na który dany neuron ma reagować.Stąd nazwa klasy takich strategii uczenia określana mianem uczenie korelacyjne (ang.correlation learning).Sieć swoje działanie opiera na grupowaniu sygnałów wejściowych w klasy podobieństwa (ang.cluster) w trakcie procesu uczenia, by następnie nadchodzące sygnały klasyfikować pod względem podobieństwa do określonej klasy (dany neuron - reprezentant klasy - posiada największą wartość wyjscia).Nasz program zawiera przykład, który obrazuje uczenie sieci neuronowej oparte o strategię reguł Hebba.Pozwala on w sposób krokowy bądź ciągły (cykle prezentacji sygnału wejściowego) obserwować zmiany wartości wag dwuwejściowych neuronów rzutowane na płaszczyznę.struktury danych algorytmu:LN - liczna neuronów w siecieta - współczynnik uczenialPokaz - liczba pokazów sygnału uczącego wykonanych w danej ćwiartce układu współrzędnychlNeuron - liczba neuronów które w bieżącym kroku znajdują się w danej ćwiartce układu współrzędnychcbxCiasno - przełącznik czy wagi początkowe mają być losowane z przedziału [-2,2] czy [-10,10] wokół losowego punktu startowegowagi - tablica wag rozmiar tablicy jest ustalany przez wartość zmiennej LN, neurony posiadają po dwa wejścia więc wagi na neuron jest dwiecbxLosowe - przełącznik czy ćwiartka układu współrzędnych do prezentacji ma być losowana czy zadana arbitralniesygnaly - wektor zawierający współrzędne punktu (sygnału) uczącego siećpobudzenie - tablica odpowiedzi neuronów w danym kroku przy ustalonej tablicy wag oraz zadanym sygnale uczącym{ ile neuronów będzie uczestniczyć w pokazie }LN := Trunc(enLiczbaNeuronow.Value);{ ustalenie początkowej wartości współczynnika uczenia }eta := 0.1;{ wyczyszczenie informacji o położeniu neuronów w odpowiednich ćwiartkach układu współrzędnych }for i := 1 to 4 do beginlPokaz[i] := 0; lNeuron[i] := 0;end;for i := 1 to LN domoc[i] := 0.0;{ początkowe wartości wag ułożone wokół punktu startowego (x,y) }Randomize;x := 16.0*Random-8.0;y := 16.0*Random-8.0;for i := 1 to LN doif not cbxCiasno then beginwagi[i,1] := 20.0*Random-10.0;wagi[i,2] := 20.0*Random-10.0;moc[i] := sqr(wagi[i,1]) + sqr(wagi[i,2]);endelse beginwagi[i,1] := x-2.0*Random;wagi[i,2] := y-2.0*Random;moc[i] := sqr(wagi[i,1]) + sqr(wagi[i,2]);end;{ główna pętla losowania punktu uczącego, modyfikacji wag oraz wizualizacji tego procesu na ekranie }swhile True dobegin{ wyczyszczenie obrazka }.{ rysunek sieci }for i := 1 to LN do beginix := pbrAuto.XRToPoint(wagi[i,1]);iy := pbrAuto.YRToPoint(wagi[i,2]);pbrAuto.Canvas.Polygon([Point(ix-2,iy-2),Point(ix+2,iy-2),Point(ix+2,iy+2),Point(ix-2,iy+2)]);end;{ losowanie ćwiartki lub wskazanie arbitralne przez użytkownika oraz wylosowanie punktu jako sygnału uczącego }.{ zliczanie liczby pokazow }.{ rysunek sygnału uczącego }.{ wyliczenie pobudzenia neuronów przez wyznaczone sygnały }.{ określenie maksymalnego pobudzenia }max := 0.0;for i := 1 to LN do beginpobudzenie[i] := wagi[i,1]*sygnaly[1] + wagi[i,2]*sygnaly[2];pobudzenie[i] := 4.0*pobudzenie[i]/moc[i];if pobudzenie[i] > max thenmax := pobudzenie[i];end;{ zerowanie liczników neuronów dla odpowiednich ćwiartek układu współrzędnych }for i := 1 to 4 do lNeuron[i] := 0;{ samouczenie sieci w oparciu o wyznaczone parametry pobudzenia }for i := 1 to LN do begin{ zapamiętanie starych wartości wag }wagiOld[i,1] := wagi[i,1];wagiOld[i,2] := wagi[i,2];if pobudzenie[i] < 0.2 * max then pobudzenie[i] := 0.3 * pobudzenie[i];if pobudzenie[i] < 0.0 then pobudzenie[i] := 0.1 * pobudzenie[i];wagi[i,1] := wagi[i,1] + eta * pobudzenie[i] * (sygnaly[1]-wagi[i,1]);wagi[i,2] := wagi[i,2] + eta * pobudzenie[i] * (sygnaly[2]-wagi[i,2]);moc[i] := moc[i] + Sqr(wagi[i,1]) + Sqr(wagi[i,2]);end;{ zliczanie liczby neuronów w odpowiednich ćwiartkach }.{ opisanie legendy uczenia w danym kroku }WypiszLiczbyPN;{ zerowanie liczników neuronów dla odpowiednich ćwiartek układu współrzędnych }for i := 1 to 4 do lNeuron[i] := 0;{ rysunek nowych wartości wag oraz obrazowanie zmiany }.{ rysunek zmiany } [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • igraszki.htw.pl