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

Implementierung 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.

Schritt-für-Schritt:

  1. Multiplikation jedes Eingabewerts mit seinem Gewicht;
  2. Summierung aller gewichteten Eingaben;
  3. Hinzufügen eines Bias, um die Ausgabe zu verschieben;
  4. Weitergabe des Ergebnisses durch eine Sigmoid-Aktivierungsfunktion, die den Wert in den Bereich ((0,1)) für Wahrscheinlichkeitsausgaben umwandelt.
Note
Hinweis

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.

Note
Hinweis

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]) 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.

Skalarprodukt

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

Sie 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 zz, wenn dieser 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?

Wählen Sie die richtige Antwort aus

question mark

Warum initialisieren wir Gewichte mit kleinen Zufallswerten anstatt mit Nullen?

Wählen Sie die richtige Antwort aus

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

Abschnitt 2. Kapitel 1
some-alt