Implementierung Eines Einzelnen Neurons
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.
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 ist, veranschaulicht sie wichtige Prinzipien effektiv.
class Neuron:
def __init__(self, n_inputs):
self.weights = ...
self.bias = ...
weights: Zufällig initialisierte Werte (jeweils einer pro Eingang);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 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
Awesome!
Completion rate improved to 4
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.
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 ist, veranschaulicht sie wichtige Prinzipien effektiv.
class Neuron:
def __init__(self, n_inputs):
self.weights = ...
self.bias = ...
weights: Zufällig initialisierte Werte (jeweils einer pro Eingang);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 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!