Sieć Neuronowa
Propagacja Wsteczna

neural.neuron
Class NeuralNet

java.lang.Object
  |
  +--neural.neuron.NeuralNet
Direct Known Subclasses:
NeuralBiasedNet

public class NeuralNet
extends Object

Klasa sieci neuronowych. Może składać się z dowolnej liczby warstw. Wejścia każdego neuronu są dołącznone do wyjść wszystkich neuronów warstwy poprzedzającej (lub wejść sieci w przypadku pierwszej warstwy). Potrafi uczyć się metodą propagacji wstecznej.

Author:
Bartłomiej Starosta

Field Summary
protected  ActivationFunction actFun
          Funkcja aktywacji.
protected  double error
          Błąd sieci.
protected  Slot[] inputs
          Tablica wejść w sieci
protected  Neuron[][] net
          Tablica warstw neuronów tworzących sieć.
protected  Slot[] outputs
          Tablica wyjść.
 
Constructor Summary
NeuralNet(int ins, int[] layers)
          Tworzy sieć o podanych parametrach.
NeuralNet(int ins, int[] layers, ActivationFunction af)
          Tworzy sieć o podanych parametrach.
 
Method Summary
 void adjustWeights(double learningRate)
          Poprawia wagi wszystkich neuronów.
 double countErrors(double[] data)
          Wylicza błędy neuronów w sieci oraz ogólny błąd sieci.
 void fire()
          Uruchamia obliczenia.
 double[] fire(double[] input)
          Odpala sieć na podanym zestawie wejść i zwraca odpowiedź sieci.
 double getError()
          Zwraca wcześniej policzony błąd sieci.
 double getError(double[] data)
          Oblicza błąd sieci dla danego zestawu oczekiwanych wyjść.
protected  Neuron getNeuron(int ins, ActivationFunction af)
          Tworzy nowy neuron.
 double[] getOutput()
          Pobiera wartości stanów wyjściowych.
 double getOutput(int pos)
          pobiera wartość na danym wyjściu.
 void setInput(double[] data)
          Ustawia wartości sygnałów na wejściach.
 void setInput(int pos, double val)
          Ustawia wartość sygnału na podanym wejściu.
 String toString()
           
 double trainStep(double learningRate, double[] ins, double[] outs)
          Wykonuje jeden krok uczenia.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, wait, wait, wait
 

Field Detail

actFun

protected ActivationFunction actFun
Funkcja aktywacji.

error

protected double error
Błąd sieci. Używany podczas uczenia propagacją wsteczną. Kiedy wartość błędu jest nieaktualna przypisuje się tej zmiennej wartość nieokreśloną.

inputs

protected Slot[] inputs
Tablica wejść w sieci

net

protected Neuron[][] net
Tablica warstw neuronów tworzących sieć.

outputs

protected Slot[] outputs
Tablica wyjść.
Constructor Detail

NeuralNet

public NeuralNet(int ins,
                 int[] layers)
Tworzy sieć o podanych parametrach. Domyślną funkcją aktywacji jest UnipolarSigmoid.
Parameters:
layers - tablica zawierająca liczby neuronów w kolejnych warstawach (długość tablicy jest liczbą warstw)
ins - liczba wejść

NeuralNet

public NeuralNet(int ins,
                 int[] layers,
                 ActivationFunction af)
Tworzy sieć o podanych parametrach.
Parameters:
layers - tablica zawierająca liczby neuronów w kolejnych warstawach (długość tablicy jest liczbą warstw)
af - funkcja aktywacji
ins - liczba wejść
Method Detail

adjustWeights

public void adjustWeights(double learningRate)
Poprawia wagi wszystkich neuronów.
Parameters:
learningRate - wspołczynnik uczenia

countErrors

public double countErrors(double[] data)
Wylicza błędy neuronów w sieci oraz ogólny błąd sieci.
Parameters:
data - oczekiwane odpowiedzi (wartości wyjść)
Returns:
błąd sieci - odchylenie od oczekiwanej odpowiedzi

fire

public void fire()
Uruchamia obliczenia. Anuluje poprzednią wartość błędu.

fire

public double[] fire(double[] input)
Odpala sieć na podanym zestawie wejść i zwraca odpowiedź sieci.
Parameters:
input - dane wejściowe
Returns:
odpowiedź sieci

getError

public double getError()
Zwraca wcześniej policzony błąd sieci.
Returns:
błąd sieci

getError

public double getError(double[] data)
Oblicza błąd sieci dla danego zestawu oczekiwanych wyjść. Ma sens tylko po wywołaniu fire().
Parameters:
data - oczekiwane wyjście
Returns:
błąd sieci

getNeuron

protected Neuron getNeuron(int ins,
                           ActivationFunction af)
Tworzy nowy neuron. To jest wrapper dla konstruktorów klasy Neuron i pochodnych. Przdefiniowując tę funkcję w podklasie, można zbudować sieć z innych typów neuronów niż domyślne klasy Neuron.
Parameters:
ins - liczba wejść
af - funkcja aktywacji
Returns:
nowy neuron

getOutput

public double[] getOutput()
Pobiera wartości stanów wyjściowych.
Returns:
tablica wartości wyjściowych

getOutput

public double getOutput(int pos)
pobiera wartość na danym wyjściu.
Parameters:
pos - numer wyjścia
Returns:
wartość sygnału na podanym syjściu

setInput

public void setInput(double[] data)
Ustawia wartości sygnałów na wejściach.
Parameters:
data - tablica wartości wejściowych

setInput

public void setInput(int pos,
                     double val)
Ustawia wartość sygnału na podanym wejściu.
Parameters:
pos - numer wejścia
val - wartość sygnału

toString

public String toString()
Overrides:
toString in class Object

trainStep

public double trainStep(double learningRate,
                        double[] ins,
                        double[] outs)
Wykonuje jeden krok uczenia.
Parameters:
learningRate - stała uczenia
ins - dane wejściowe
outs - oczekiwane odpowiedzi
Returns:
błąd sieci

Sieć Neuronowa
Propagacja Wsteczna

Materiały dydaktyczne do zajęć NAI
Bartłomiej Starosta, barstar(at)pjwstk(dot)edu(dot)pl
PJWSTK 2001/2002