Implementierung Eines Einzelnen Neurons
Swipe um das Menü anzuzeigen
Ein Neuron ist die grundlegende Recheneinheit eines neuronalen Netzwerks. Es verarbeitet mehrere Eingaben und erzeugt eine einzelne Ausgabe, wodurch das Netzwerk lernen und Vorhersagen treffen kann.
In diesem Beispiel wird ein neuronales Netzwerk mit einem Neuron für eine binäre Klassifizierungsaufgabe (z. B. Spam-Erkennung) erstellt. Das Neuron erhält numerische Merkmale und gibt einen Wert zwischen 0 und 1 aus, der die Wahrscheinlichkeit angibt, dass eine E-Mail Spam (1) oder Ham (0) ist.
Schritt-für-Schritt:
- Multiplikation jedes Eingabewerts mit seinem Gewicht;
- Summierung aller gewichteten Eingaben;
- Hinzufügen eines Bias, um die Ausgabe zu verschieben;
- Weitergabe des Ergebnisses durch eine Sigmoid-Aktivierungsfunktion, die den Wert in den Bereich ((0,1)) für Wahrscheinlichkeitsausgaben umwandelt.
Bias des Neurons ist ebenfalls ein trainierbarer Parameter.
Neuron-Klasse
Ein Neuron muss seine Gewichte und Bias speichern, wodurch sich eine Klasse als natürliche Möglichkeit zur Gruppierung dieser zusammengehörigen Eigenschaften anbietet.
Auch wenn diese Klasse nicht Teil der endgültigen Implementierung des neuronalen Netzes sein wird, veranschaulicht sie dennoch wichtige Prinzipien.
class Neuron:
def __init__(self, n_inputs):
self.weights = ...
self.bias = ...
weights: zufällig initialisierte Werte (je einer pro Eingabe);bias: ein einzelner zufälliger Wert. Beide werden aus einer gleichverteilten Verteilung im Bereich ([-1, 1]) mitnp.random.uniform()gezogen, um Symmetrie zu vermeiden.
Vorwärtspropagation
Die Methode activate() des Neurons berechnet die gewichtete Summe und wendet die Sigmoidfunktion an.
Die gewichtete Summe verwendet das Skalarprodukt der Gewichte und Eingaben:
input_sum_with_bias = np.dot(self.weights, inputs) + self.bias
Anschließend wird die Aktivierungsfunktion angewendet, um die endgültige Ausgabe des Neurons zu erhalten.
Die Verwendung von np.dot() vermeidet Schleifen und berechnet die gesamte gewichtete Summe in einer Zeile.
Die Sigmoidfunktion wandelt diesen Rohwert anschließend in eine Wahrscheinlichkeit um:
def activate(self, inputs):
input_sum_with_bias = ...
output = ...
return output
Sigmoid-Aktivierung
Für einen Rohwert (z) gilt für die Sigmoid-Funktion:
σ(z)=1+e−z1Sie ordnet jede Zahl einem Wert im Bereich ((0,1)) zu und ist daher ideal für binäre Klassifikation, bei der die Ausgabe des Neurons eine Wahrscheinlichkeit darstellen muss.
Mit dieser Formel lässt sich die Sigmoid-Funktion als einfache Funktion in Python implementieren:
def sigmoid(z):
return 1 / (1 + np.exp(-z))
Die Formel für die ReLU-Funktion lautet wie folgt. Sie setzt die Ausgabe auf z, wenn dieser positiv ist, und andernfalls auf 0:
ReLU(z)=max(0,z)def relu(z):
return np.maximum(0, z)
1. Welche Rolle spielt der Bias-Term in einem einzelnen Neuron?
2. Warum initialisieren wir Gewichte mit kleinen Zufallswerten anstatt mit Nullen?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen