Perceptron-lag
Perceptron er det simpleste neurale netværk—kun én neuron. Til mere komplekse opgaver anvendes et multilags-perceptron (MLP), som indeholder et eller flere skjulte lag, der gør det muligt for netværket at lære mere komplekse mønstre.
Et MLP består af:
- Inputlag — modtager data;
- Skjulte lag — udtrækker mønstre;
- Outputlag — genererer forudsigelser.
Hvert lag har flere neuroner; outputtet fra ét lag bliver input til det næste.
Lagets vægte og bias
Tidligere gemte en neuron sine vægte som en vektor og bias som en skalar. Et lag indeholder dog mange neuroner, så dets vægte bliver en matrix, hvor hver række gemmer vægtene for én neuron. Bias for alle neuroner danner en vektor.
For et lag med 3 input og 2 neuroner:
W=[W11W21W12W22W13W23],b=[b1b2]Her er Wij vægten fra den j-te input til den i-te neuron; bi er bias for neuron i.
Fremadrettet propagering
Fremadrettet propagering aktiverer hver neuron ved at beregne en vægtet sum, lægge bias til og anvende aktiveringsfunktionen.
Tidligere brugte en enkelt neuron:
[ z = W \cdot x + b ]
Nu, da hver række af (W) er én neurons vægtvektor, beregner matrixmultiplikation mellem vægtmatricen og inputvektoren automatisk alle neuronernes vægtede summer på én gang.
For at tilføje bias til outputtene fra de respektive neuroner, skal der også tilføjes en vektor af bias:
Til sidst anvendes aktiveringsfunktionen på resultatet — sigmoid eller ReLU i dette tilfælde. Den resulterende formel for fremadpropagering i laget er som følger:
a=activation(Wx+b)hvor a er vektoren af neuronaktiveringer (output).
Layer-klasse
Da MLP'er er opbygget af lag, defineres en dedikeret Layer-klasse. Dens attributter:
inputs: inputvektor (n_inputselementer);outputs: rå neuronoutput (n_neuronselementer);weights: vægtmatrix;biases: biasvektor;activation_function: aktiveringsfunktion anvendt i laget.
Vægte og bias initialiseres med tilfældige værdier fra en uniform fordeling i ([-1, 1]). inputs og outputs initialiseres som nul-fyldte NumPy-arrays for at sikre konsistente former til senere backpropagation.
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
Initialisering af inputs og outputs med nuller forhindrer formfejl og sikrer, at lagene forbliver konsistente under både fremad- og bagudpassager.
Forward-metode
Fremadpropagering for et lag beregner rå output og anvender aktiveringsfunktionen:
def forward(self, inputs):
self.inputs = np.array(inputs).reshape(-1, 1)
# Raw outputs: weighted sum + bias
self.outputs = ...
# Apply activation
return ...
Omformning af input til en kolonnevektor sikrer korrekt multiplikation med vægtmatricen og matcher de forventede dimensioner gennem hele netværket.
Hvis du ønsker det, kan jeg også forkorte dette yderligere, fremstille et diagram over lagstrukturen eller generere den fulde fungerende kode for Layer-klassen.
1. Hvad gør et multilags perceptron (MLP) mere kraftfuldt end et simpelt perceptron?
2. Hvorfor er det nødvendigt at anvende denne kode, før inputs ganges med vægtmatricen?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
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
Perceptron-lag
Stryg for at vise menuen
Perceptron er det simpleste neurale netværk—kun én neuron. Til mere komplekse opgaver anvendes et multilags-perceptron (MLP), som indeholder et eller flere skjulte lag, der gør det muligt for netværket at lære mere komplekse mønstre.
Et MLP består af:
- Inputlag — modtager data;
- Skjulte lag — udtrækker mønstre;
- Outputlag — genererer forudsigelser.
Hvert lag har flere neuroner; outputtet fra ét lag bliver input til det næste.
Lagets vægte og bias
Tidligere gemte en neuron sine vægte som en vektor og bias som en skalar. Et lag indeholder dog mange neuroner, så dets vægte bliver en matrix, hvor hver række gemmer vægtene for én neuron. Bias for alle neuroner danner en vektor.
For et lag med 3 input og 2 neuroner:
W=[W11W21W12W22W13W23],b=[b1b2]Her er Wij vægten fra den j-te input til den i-te neuron; bi er bias for neuron i.
Fremadrettet propagering
Fremadrettet propagering aktiverer hver neuron ved at beregne en vægtet sum, lægge bias til og anvende aktiveringsfunktionen.
Tidligere brugte en enkelt neuron:
[ z = W \cdot x + b ]
Nu, da hver række af (W) er én neurons vægtvektor, beregner matrixmultiplikation mellem vægtmatricen og inputvektoren automatisk alle neuronernes vægtede summer på én gang.
For at tilføje bias til outputtene fra de respektive neuroner, skal der også tilføjes en vektor af bias:
Til sidst anvendes aktiveringsfunktionen på resultatet — sigmoid eller ReLU i dette tilfælde. Den resulterende formel for fremadpropagering i laget er som følger:
a=activation(Wx+b)hvor a er vektoren af neuronaktiveringer (output).
Layer-klasse
Da MLP'er er opbygget af lag, defineres en dedikeret Layer-klasse. Dens attributter:
inputs: inputvektor (n_inputselementer);outputs: rå neuronoutput (n_neuronselementer);weights: vægtmatrix;biases: biasvektor;activation_function: aktiveringsfunktion anvendt i laget.
Vægte og bias initialiseres med tilfældige værdier fra en uniform fordeling i ([-1, 1]). inputs og outputs initialiseres som nul-fyldte NumPy-arrays for at sikre konsistente former til senere backpropagation.
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
Initialisering af inputs og outputs med nuller forhindrer formfejl og sikrer, at lagene forbliver konsistente under både fremad- og bagudpassager.
Forward-metode
Fremadpropagering for et lag beregner rå output og anvender aktiveringsfunktionen:
def forward(self, inputs):
self.inputs = np.array(inputs).reshape(-1, 1)
# Raw outputs: weighted sum + bias
self.outputs = ...
# Apply activation
return ...
Omformning af input til en kolonnevektor sikrer korrekt multiplikation med vægtmatricen og matcher de forventede dimensioner gennem hele netværket.
Hvis du ønsker det, kan jeg også forkorte dette yderligere, fremstille et diagram over lagstrukturen eller generere den fulde fungerende kode for Layer-klassen.
1. Hvad gør et multilags perceptron (MLP) mere kraftfuldt end et simpelt perceptron?
2. Hvorfor er det nødvendigt at anvende denne kode, før inputs ganges med vægtmatricen?
Tak for dine kommentarer!