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 erstellen wir ein neuronales Netzwerk mit einem Neuron für eine binäre Klassifizierungsaufgabe (z. B. Spam-Erkennung). 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.
Schrittweise Vorgehensweise:
- Jede Eingabe mit ihrem Gewicht multiplizieren;
- Alle gewichteten Eingaben aufsummieren;
- Einen Bias hinzufügen, um die Ausgabe zu verschieben;
- Das Ergebnis durch eine Sigmoid-Aktivierung leiten, die es in den Bereich ((0,1)) für die Wahrscheinlichkeitsausgabe umwandelt.
Bias des Neurons ist ebenfalls ein trainierbarer Parameter.
Neuron-Klasse
Ein Neuron muss seine Gewichte und den 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 Zufallswert. Beide werden aus einer gleichverteilten Verteilung in ([-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 transformiert diesen Rohwert anschließend in eine Wahrscheinlichkeit:
def activate(self, inputs):
input_sum_with_bias = ...
output = ...
return output
Sigmoid-Aktivierung
Für eine rohe Ausgabe (z) gilt für die Sigmoidfunktion:
σ(z)=1+e−z1Sie ordnet jede Zahl auf den Bereich ((0,1)) ab 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 Sigmoidfunktion 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, falls diese positiv ist, und auf 0 andernfalls:
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 statt 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