Startseite
  Über...
  Archiv
  Gästebuch
  Kontakt
  Abonnieren


http://myblog.de/mycode

Gratis bloggen bei
myblog.de





Simples Neuronales Netz Teil 1

In dieser Beitrags-Reihe geht es um simple Neuronale Netze.
Um genauer zu sein, wird es um FeedForward Netze gehen.

Diese Art von Netzwerken eignen sich besonders für den
Einstieg in die Materie, da sie einen einfachen Aufbau haben
und mit etwas mathematischem Verständnis auch
sehr schnell zu Begreifen sind.

Teil 1. Grundlagen

Was ist ein Feed-Forward Netz?

Einfach gesagt ist ein FF-Netz (so wie jedes andere Netz allgemein auch)
ein Klassifizierer.
Es fließen Informationen in das Programm, sie werden Bewertet und am Ende steht ein (oder mehrere) Ergebnisse fest.
Genau genommen ist es nichts anderes als eine Funktion.

Nehmen wir z.B. f(x) = x². Hier wird jeder x-Wert einem y-Wert zugewiesen (hier y= x²).
So könnte auch das Ergebnis des Netzwerks aussehen, nur das dieses zunächst auf die Ausgangswerte trainiert werden muss und auch dann NUR die Werte beurteilen kann, die innerhalb des Trainings-Raums basiert.


Was heißt das also?

Trainieren wir das Netz darauf den Sinus von Zahlen von 0 bis 7 (ca. 2PI) zu berechnen und das in, sagen wir, 1er Schritten.
Die Eingangszahlen wären demnach:
0,1,2,3,4,5,6,7.
Anschließend kann das Netz die Ergebnisse aller Zahlen dazwischen berechnen, also von z.B. 3.1415 usw.
Darüber und darunter kann es nur Schätzungen abgeben (die meist nicht dem realen Ergebnis entsprechen).

Geht man von einem normalen FF-Netzwerk aus, so kann man
sagen: Hat man eine mathematische Formel, um die Ergebnisse zu berechnen, nutzt man lieber die Formel als ein neuronales Netz.
Der Grund liegt auf der Hand: Es ist genauer und muss nicht zuerst trainiert werden.
Hat man jedoch keine Formel und kennt nur Ursache und Ergebnis
trainiert man das neuronale Netz um Aussagen zu treffen.
(Wenn ihr Polynomaproximation kennt, wird euch das bekannt vorkommen).


Wie funktioniert es?

Ein Netzwerk besteht aus Knotenpunkten, sogenannten Neuronen (in Anlehnung an das menschliche Gehirn).

Jedes dieser Neuronen besitzt ein oder mehrere Eingänge und einen Ausgang. Zusätzlich besitzt jedes Neuron einen Bias-Wert, welches die Eingänge verstärkt oder abschwächt sowie eine Aktivierungsfunktion die entscheidet, ob das Neuron nun einen Wert weitergibt oder nicht.

Aber die Eingangswerte kommen nicht einfach so in das Neuron, sondern werden zunächst gewichtet.

Die Eingangswerte werden also zunächst gewichtet und dann aufsummiert (dazu gehört auch der Bias-Wert) und anschließend durch die Aktivierungsfunktion geschickt.
Der resultierende Wert liegt am Ausgang an.


Beispiel:

Das Neuron feuert nur, wenn das Resultat der Eingänge und des Bias
größer 0 ist. (D.h. 1 Wenn R > 0, sonst 0)
Das ist die Aktivierungsfunktion.

Das Neuron besitzt 2 Eingänge. Der Bias sei hierbei 1.
Die Eingänge sind beschaltet mit -1 und 0.5

Die Gewichtungen seien: 0.5 und 1

Die Summe der Eingangswerte (+Bias) sind demnach
R = 1+((-1)*0.5)+(0.5*1) = 1

Die Aktivierungsfunktion entscheidet, das der Wert groß genug ist.
Am Ausgang liegt demnach eine 1 an.
;

Der Aufbau

Ein Netz besteht in der Regel aus vielen solcher Neuronen und Neuronen-Schichten.

Es gibt die Eingangschicht, ein oder mehrere Hidden-Schichten (Schichten, die nichts an den Nutzer ausgeben und somit versteckt sind) und Ausgänge.

In jeder dieser Schichten sind ein oder mehrere Neuronen vorhanden.
Wichtig dabei ist, das jeder Knoten aus einer Schicht mit jedem Knoten aus der vorherigen verbunden ist.

Anschaulich heißt das:
Haben wir 2 Knoten am Eingang und 3 in der nächsten Schicht,
hat jeder der Knoten in der nächsten Schicht 2 Eingänge und kriegt
die Ergebnisse aus jedem der Eingangsknoten.




Wie lernt das Netzwerk?

Hier wird es etwas mathematischer (aber keine Sorge. Es ist eigentlich ganz simpel).
Es handelt sich hierbei um die Backpropagation mittels Gradientenwanderung. Hierdurch werden die Gewichtungen
verändert.
Dafür nutzen wir aus, dass wir uns (hoffentlich) eine einfach ableitbare Aktivierungsfunktion ausgesucht haben.

Hierbei wird ein Ausgangsfehler berechnet (der Fehler zwischen dem Ausgang des Netzwerkes und dem erwünschten Ausgangswert).

Dieser wird Knoten für Knoten zurückpropagiert. Dabei wird die Gewichtungen berücksichtigt, sodass der berechnete Fehler dort am größten wird, wo der größte Einfluss auf das Ergebnis besteht.

Anschließend wird der Fehlerwert in jedem Knoten benutzt, um die
Gewichtungen zu ändern.

In den folgenden Teilen werde ich etwas näher auf die Mathematik eingehen.
Aber für's erste war's das erst einmal.

Ich hoffe, ihr konntet in diesem Teil einen kleinen Einblick gewinnen.
17.3.16 11:27
 


bisher 0 Kommentar(e)     TrackBack-URL

Name:
Email:
Website:
E-Mail bei weiteren Kommentaren
Informationen speichern (Cookie)



 Smileys einfügen



Verantwortlich für die Inhalte ist der Autor. Dein kostenloses Blog bei myblog.de! Datenschutzerklärung
Werbung