Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Implementierung Eines Einzelnen Neurons | Neural Network von Grund Auf
Einführung in Neuronale Netze mit Python

bookImplementierung Eines Einzelnen Neurons

Note
Definition

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:

  1. Jede Eingabe mit ihrem Gewicht multiplizieren;
  2. Alle gewichteten Eingaben aufsummieren;
  3. Einen Bias hinzufügen, um die Ausgabe zu verschieben;
  4. Das Ergebnis durch eine Sigmoid-Aktivierung leiten, die es in den Bereich ((0,1)) für die Wahrscheinlichkeitsausgabe umwandelt.
Note
Hinweis

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.

Note
Hinweis

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]) mit np.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)=11+ez\sigma(z) = \frac{1}{1 + e^{-z}}

Sie 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 zz, falls diese positiv ist, und andernfalls auf 0:

ReLU(z)=max(0,z)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?

question mark

Welche Rolle spielt der Bias-Term in einem einzelnen Neuron?

Select the correct answer

question mark

Warum initialisieren wir Gewichte mit kleinen Zufallswerten anstatt mit Nullen?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 1

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Awesome!

Completion rate improved to 4

bookImplementierung Eines Einzelnen Neurons

Swipe um das Menü anzuzeigen

Note
Definition

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:

  1. Jede Eingabe mit ihrem Gewicht multiplizieren;
  2. Alle gewichteten Eingaben aufsummieren;
  3. Einen Bias hinzufügen, um die Ausgabe zu verschieben;
  4. Das Ergebnis durch eine Sigmoid-Aktivierung leiten, die es in den Bereich ((0,1)) für die Wahrscheinlichkeitsausgabe umwandelt.
Note
Hinweis

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.

Note
Hinweis

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]) mit np.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)=11+ez\sigma(z) = \frac{1}{1 + e^{-z}}

Sie 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 zz, falls diese positiv ist, und andernfalls auf 0:

ReLU(z)=max(0,z)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?

question mark

Welche Rolle spielt der Bias-Term in einem einzelnen Neuron?

Select the correct answer

question mark

Warum initialisieren wir Gewichte mit kleinen Zufallswerten anstatt mit Nullen?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 1
some-alt