Perzeptron-Schichten
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, komplexere Muster zu erlernen.
Ein MLP besteht aus:
- Eingabeschicht — empfängt Daten;
- Versteckte Schichten — extrahieren Muster;
- Ausgabeschicht — erzeugt Vorhersagen.
Jede Schicht enthält mehrere Neuronen; die Ausgabe einer Schicht wird zur Eingabe der nächsten.
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=[W11W21W12W22W13W23],b=[b1b2]Hier ist Wij das Gewicht von der j-ten Eingabe zum i-ten Neuron; bi ist der Bias des Neurons i.
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) der Gewichtungsvektor eines Neurons ist, berechnet die Matrixmultiplikation zwischen der Gewichtsmatrix und dem Eingabevektor automatisch die gewichteten Summen aller Neuronen gleichzeitig.
Um die Biases zu den Ausgaben der jeweiligen Neuronen hinzuzufügen, sollte ebenfalls ein Bias-Vektor addiert werden:
Abschließend wird die Aktivierungsfunktion auf das Ergebnis angewendet — in unserem Fall Sigmoid oder ReLU. Die resultierende Formel für die Vorwärtsausbreitung in der Schicht lautet:
a=activation(Wx+b)wobei a den Vektor der Neuronenaktivierungen (Ausgaben) bezeichnet.
Layer-Klasse
Da MLPs aus Schichten aufgebaut sind, definieren wir eine eigene Layer-Klasse. Ihre Attribute:
inputs: Eingabevektor (n_inputsElemente);outputs: Roh-Ausgaben der Neuronen (n_neuronsElemente);weights: Gewichtsmatrix;biases: Bias-Vektor;activation_function: in der Schicht verwendete Aktivierungsfunktion.
Gewichte und Biases werden mit Zufallswerten aus einer gleichverteilten Verteilung in ([-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 zu gewährleisten.
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
Das Initialisieren von inputs und outputs mit Nullen verhindert Formfehler und stellt sicher, dass die Schichten während der Vorwärts- und Rückwärtsdurchläufe konsistent bleiben.
Forward-Methode
Die Vorwärtsausbreitung einer 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.
Auf Wunsch kann ich dies auch 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?
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
Can you explain how the weights and biases are initialized in the Layer class?
What activation functions can I use in the Layer class?
Can you walk me through how forward propagation works step by step?
Awesome!
Completion rate improved to 4
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, komplexere Muster zu erlernen.
Ein MLP besteht aus:
- Eingabeschicht — empfängt Daten;
- Versteckte Schichten — extrahieren Muster;
- Ausgabeschicht — erzeugt Vorhersagen.
Jede Schicht enthält mehrere Neuronen; die Ausgabe einer Schicht wird zur Eingabe der nächsten.
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=[W11W21W12W22W13W23],b=[b1b2]Hier ist Wij das Gewicht von der j-ten Eingabe zum i-ten Neuron; bi ist der Bias des Neurons i.
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) der Gewichtungsvektor eines Neurons ist, berechnet die Matrixmultiplikation zwischen der Gewichtsmatrix und dem Eingabevektor automatisch die gewichteten Summen aller Neuronen gleichzeitig.
Um die Biases zu den Ausgaben der jeweiligen Neuronen hinzuzufügen, sollte ebenfalls ein Bias-Vektor addiert werden:
Abschließend wird die Aktivierungsfunktion auf das Ergebnis angewendet — in unserem Fall Sigmoid oder ReLU. Die resultierende Formel für die Vorwärtsausbreitung in der Schicht lautet:
a=activation(Wx+b)wobei a den Vektor der Neuronenaktivierungen (Ausgaben) bezeichnet.
Layer-Klasse
Da MLPs aus Schichten aufgebaut sind, definieren wir eine eigene Layer-Klasse. Ihre Attribute:
inputs: Eingabevektor (n_inputsElemente);outputs: Roh-Ausgaben der Neuronen (n_neuronsElemente);weights: Gewichtsmatrix;biases: Bias-Vektor;activation_function: in der Schicht verwendete Aktivierungsfunktion.
Gewichte und Biases werden mit Zufallswerten aus einer gleichverteilten Verteilung in ([-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 zu gewährleisten.
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
Das Initialisieren von inputs und outputs mit Nullen verhindert Formfehler und stellt sicher, dass die Schichten während der Vorwärts- und Rückwärtsdurchläufe konsistent bleiben.
Forward-Methode
Die Vorwärtsausbreitung einer 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.
Auf Wunsch kann ich dies auch 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?
Danke für Ihr Feedback!