Zitat:
Ich hatte mir ja bishier erst ein Tutorial durchgelesen (über Perzeptronennetze) und da stand, dass der (das?) Bias konstant bleibt und in der Ausgabefunktion wird dann mit Hilfe des Ergebnisses der Aktivitätsfunktion berechnet ob der (das?) Bias erreicht wurde. Hier setzt auch der Lernprozess an, jedoch werden nur die Gewichte der
Unit-Inputs verändert.
Ein Neuron hatte dort auch keinen extra Output, sondern nur ein Datum (nicht zu verwechseln mit Datum ), das einen Wert enthielt, welcher vom Dentrid (Input) anderer Neuronen ausgelesen wird.
Wo liegen die Unterschiede zwischen diesen beiden Lernweisen und was ist in welcher Hinsicht vorteilhafter?
Der BIAS ist ein "Störsignal" das zusätzlich zu den Nutzsignalen am Neuron anliegt. Dadurch wird verhindert das das Netzwerk anfängt sinnlos zu schwingen bzw. sich selbst zu blockieren. D.h. durch den BIAS wird sichergestellt das das Netz einen definierten Input erhält der als Referenzsignal zu den Nutzsignalen dient. Ein BIAS muß nicht auf fester Größe stehen, normalerweise wird er aber auf 1 gesetzt und beliebt fixiert. In meinem RCC Netzwerk ist der BIAS ebenfalls fixiert nach dem Training des Neurons. Allerdings wird der BIAS eben auch wie die anderen Gewichte mittrainiert. D.h. jedes Neuron hat einen individuellen BIAS-Wert. Man kann sich dieses BIAS wie den Helligkeitsregler am Fernseher vorstellen. Er reguliert/dämoft/verstärkt die "Spannungen" der anderen Input-Gewiche so daß das Neuron auch reagieren kann. Ein positiver Bias von +10 Volt würde demnach bedeuten das die Gesammtspannungen aller Inputgewichte um 10V gedämpft werden. (dies ist aber nur eine bildliche Erklärung der Vorgänge im Netz).
Als Anfänger hat man immer wieder das Problem die Bestandteile einen Netzwerkes räumlich voneinander zu erklären. Man fragt sich also was denn nun ein Neuron und was eine Nervenbahn ist, in einem NN !? Betrachtet auf ein Computer-Netzerek sieht's so aus:
Das Neuron als solches existiert als solches NICHT in einem Netzwerk. Das aktive Element das das Neuron beschreibt ist die Aktivierungsfunktion, eg. die Schwellenwert-Funktion. Sollten externe Parameter zu dieser Aktivierungsfunktion existieren, z.B. die Mathematische Formel oder Parameter, so werden diese als Neuron an sich gespeichert. D.h. ein Neuron ist ein Speicherbereich in dem die verwendete Aktivierungsfunktion, dessen Position im Netzwerk und die Verbindungen zu den Input-Neuronen gespeichert sind.
Jetzt kommen wir auch schon zu den "Dentriten", eg. Nervenbahnen des Neurons. Eine Nervenbahn ist nur ein Zahlenwert. Dieser Zahlenwert bestimmt wie stark das Aktivierungspotential des Ausgangssignal des Eingangsneurons in die Aktivierungsfunktion des aktuellen Neurons ist. Sinnvollerweise sollte man also alle diese Zahlenwerte=Nervenbahnen zum Neuron selber speichern.
So, nun zu dem was die meisten Anfänger in einem Neuron als "Zahlenwert" mißverstehen. Wir wissen das ein Neuron nur eine Aktivierungsfuntion = mathematische Formal ist, und nur die Nervenbahnen zu seinen Inputneuronen speichert. Denoch wird auf Grund softwaretechnischer Gegebenheiten im Neuron noch das Aktivierungspotential gespeichert. Dies ist eine Zahl die durch die Aktivierungsfunktion beerechnet wird. D.h. die Aktivierungsfunktion berechnet aus allen Aktivierungspotentialen der Inputneuronen + den Gewichten der Nerevenbahnen das Aktivierungspotential des aktuellen Neurons = Resultat der Aktivierungsfunktion. Man macht dies aber NUR weil es Softwaretechnisch vom Berechnungsalgortihmus besser zu codieren ist. D.h. dieser Zahlenwert des Neurons ist nicht das Neuron selber sondern nur eine Hilfsvariable. Somit besteht ein Neuron nur "virtuell" als mathematische Formel und deren Inputvariablen = Nervenbahnen.
In vielen NN's wird noch gespeichert zu welchen Inpuitneuronen auch tatsächlich eine Nervenbahn besteht. Solche Netze besitzen also die Möglichkeit das ein Neuron sehr individuell mit anderen Neuronen verknüpft wird. Die Anzahl der Nervenbahnen=Verknüpfungen bestimmen die Berechnungskomplexität des Netzwerkes, eg. Laufzeitverhalten. Theoretisch kann jedes Neuron mit jedem anderen Neuron und sogar mit sich selber verküpft sein. Allerdings erhöht sich der Berechnungs-/Speicheraufwand damit sehr drastisch. In meinem RCC Netzwerk sind solche individuellen Verküpfungen enthalten. D.h. eine Nervenbahn besteht aus einem Integer der das Input-Neuron der Nervenbahn als Index beschreibt plus dem Gewicht dieser Nervenbahn als Doublezahl.
Diese individuelle Verknüpfungen kommen unserem realen Hirn schon sehr nahe. Sie verkomplizieren aber die Berechnungen innerhalb des Netzwerkes. Als programmtechnische Optimierung und Vereinfachung der Netzwerkberechnugen wird deshalb das Aktivierungspotential des Neurons=Aktivierungsfunktion im Neuron zwischengespeichert. Dies verhindert Rekursive-Endlosberechnungen, denn normalerweise könnte man ausgehend vom aktuellen Neuron diese ohne solche Zwischenspeicherungen berechnen. Man berechnet dazu rekursiv die Potentiale aller Inputneuronen usw. usw. bis man zur Input-Schicht des Netzwerkes gelangt. Dies ist aber vom Berechnungsaufwand her eine invers-exponentielle aufwendige Funktion !! Deshalb besitzt ein Neuron eben auch eine Variable die das Resultat seiner Schwellenwertfunktion=Aktivierungsfunktion zwischenspeichert. Diese Variable ist aber NICHT das Neuron an sich.
Gruß Hagen