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

Perzeptron-Schichten

Swipe um das Menü anzuzeigen

Perzeptron ist das einfachste neuronale Netzwerk—nur ein Neuron. Für komplexere Aufgaben wird ein mehrschichtiges Perzeptron (MLP) verwendet, das eine oder mehrere versteckte Schichten enthält, die es dem Netzwerk ermöglichen, reichhaltigere Muster zu erlernen.

Ein MLP besteht aus:

  1. Eingabeschicht — empfängt Daten;
  2. Versteckte Schichten — extrahieren Muster;
  3. Ausgabeschicht — erzeugt Vorhersagen.

Jede Schicht enthält mehrere Neuronen; die Ausgabe einer Schicht wird zur Eingabe der nächsten.

Vereinfachte Darstellung eines neuronalen Netzwerks

Schicht-Gewichte und Biases

Zuvor speicherte ein Neuron seine Gewichte als Vektor und den Bias als Skalar. Eine Schicht enthält jedoch viele Neuronen, daher werden die Gewichte zu einer Matrix, wobei jede Zeile die Gewichte eines Neurons speichert. Die Biases aller Neuronen bilden einen Vektor.

Für eine Schicht mit 3 Eingaben und 2 Neuronen:

W=[W11W12W13W21W22W23],b=[b1b2]W=\begin{bmatrix} W_{11} & W_{12} & W_{13} \\ W_{21} & W_{22} & W_{23} \end{bmatrix}, \qquad b=\begin{bmatrix} b_1 \\ b_2 \end{bmatrix}

Hier ist WijW_{ij} das Gewicht von der jj-ten Eingabe zum ii-ten Neuron; bib_i ist der Bias des Neurons ii.

Schichtgewichte

Vorwärtspropagation

Die Vorwärtspropagation aktiviert jedes Neuron, indem sie eine gewichtete Summe berechnet, den Bias addiert und die Aktivierungsfunktion anwendet.

Zuvor verwendete ein einzelnes Neuron:

[ z = W \cdot x + b ]

Da nun jede Zeile von (W) den Gewichtungsvektor eines Neurons darstellt, berechnet die Matrixmultiplikation zwischen der Gewichtungsmatrix und dem Eingabevektor automatisch die gewichteten Summen aller Neuronen gleichzeitig.

Matrix-Vektor-Multiplikation für die Schicht

Um die Biases zu den Ausgaben der jeweiligen Neuronen hinzuzufügen, sollte ebenfalls ein Bias-Vektor addiert werden:

Vorwärtsausbreitung für die Schicht

Abschließend wird die Aktivierungsfunktion auf das Ergebnis angewendet — Sigmoid oder ReLU in diesem Fall. Die resultierende Formel für die Vorwärtsausbreitung in der Schicht lautet:

a=activation(Wx+b)a = activation(Wx + b)

wobei aa der Vektor der Neuronenaktivierungen (Ausgaben) ist.

Layer-Klasse

Da MLPs aus Schichten bestehen, definieren wir eine eigene Layer-Klasse. Ihre Attribute:

  • inputs: Eingabevektor (n_inputs Elemente);
  • outputs: rohe Neuronen-Ausgaben (n_neurons Elemente);
  • weights: Gewichtsmatrix;
  • biases: Bias-Vektor;
  • activation_function: in der Schicht verwendete Aktivierungsfunktion.

Gewichte und Biases werden mit Zufallswerten aus einer gleichmäßigen Verteilung im Bereich ([-1, 1]) initialisiert. inputs und outputs werden als mit Nullen gefüllte NumPy-Arrays initialisiert, um konsistente Formen für das spätere Backpropagation-Verfahren sicherzustellen.

class Layer:
    def __init__(self, n_inputs, n_neurons, activation_function):
        self.inputs = np.zeros((n_inputs, 1))
        self.outputs = np.zeros((n_neurons, 1))
        self.weights = ...
        self.biases = ...
        self.activation = activation_function
Note
Hinweis

Die Initialisierung von inputs und outputs mit Nullen verhindert Formfehler und stellt sicher, dass die Schichten während Vorwärts- und Rückwärtsdurchlauf konsistent bleiben.

Forward-Methode

Die Vorwärtspropagation für eine Schicht berechnet rohe Ausgaben und wendet die Aktivierungsfunktion an:

def forward(self, inputs):
    self.inputs = np.array(inputs).reshape(-1, 1)
    # Raw outputs: weighted sum + bias
    self.outputs = ...
    # Apply activation
    return ...

Das Umformen der Eingabe in einen Spaltenvektor stellt sicher, dass sie korrekt mit der Gewichtsmatrix multipliziert wird und die erwarteten Dimensionen im gesamten Netzwerk erfüllt werden.

Note
Hinweis

Falls gewünscht, kann ich dies noch weiter kürzen, ein Diagramm der Schichtstruktur erstellen oder den vollständigen funktionierenden Code für die Layer-Klasse generieren.

1. Was macht ein Multilayer-Perzeptron (MLP) leistungsfähiger als ein einfaches Perzeptron?

2. Warum ist es notwendig, diesen Code auszuführen, bevor inputs mit der Gewichtsmatrix multipliziert werden?

question mark

Was macht ein Multilayer-Perzeptron (MLP) leistungsfähiger als ein einfaches Perzeptron?

Wählen Sie die richtige Antwort aus

question mark

Warum ist es notwendig, diesen Code auszuführen, bevor inputs mit der Gewichtsmatrix multipliziert werden?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 3

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 3
some-alt