Perceptronlagen
Perceptron is het eenvoudigste neuraal netwerk—slechts één neuron. Voor complexere taken gebruiken we een multilayer perceptron (MLP), dat één of meer verborgen lagen bevat waarmee het netwerk rijkere patronen kan leren.
Een MLP bestaat uit:
- Invoerlaag — ontvangt gegevens;
- Verborgen lagen — extraheert patronen;
- Uitvoerlaag — genereert voorspellingen.
Elke laag bevat meerdere neuronen; de uitvoer van de ene laag wordt de invoer van de volgende.
Laaggewichten en Biases
Eerder sloeg een neuron zijn gewichten op als een vector en de bias als een scalair. Een laag bevat echter veel neuronen, dus worden de gewichten een matrix, waarbij elke rij de gewichten van één neuron bevat. Biases voor alle neuronen vormen een vector.
Voor een laag met 3 ingangen en 2 neuronen:
W=[W11W21W12W22W13W23],b=[b1b2]Hier is Wij het gewicht van de j-de invoer naar het i-de neuron; bi is de bias van neuron i.
Voorwaartse Propagatie
Voorwaartse propagatie activeert elk neuron door een gewogen som te berekenen, de bias toe te voegen en de activatiefunctie toe te passen.
Eerder gebruikte een enkel neuron:
[ z = W \cdot x + b ]
Nu, omdat elke rij van (W) het gewichtsvector van één neuron is, berekent matrixvermenigvuldiging tussen de gewichtenmatrix en de invoervector automatisch de gewogen sommen van alle neuronen tegelijk.
Om de biases toe te voegen aan de outputs van de respectievelijke neuronen, moet ook een vector van biases worden opgeteld:
Ten slotte wordt de activatiefunctie toegepast op het resultaat — sigmoid of ReLU in ons geval. De resulterende formule voor voorwaartse propagatie in de laag is als volgt:
a=activation(Wx+b)waarbij a de vector van neuronactivaties (outputs) is.
Layer-klasse
Aangezien MLP's zijn opgebouwd uit lagen, definiëren we een speciale Layer-klasse. De attributen hiervan:
inputs: inputvector (n_inputselementen);outputs: ruwe neuronoutputs (n_neuronselementen);weights: gewichtenmatrix;biases: biasvector;activation_function: activatiefunctie gebruikt in de laag.
Gewichten en biases worden geïnitialiseerd met willekeurige waarden uit een uniforme verdeling in ([-1, 1]). inputs en outputs worden geïnitialiseerd als met nullen gevulde NumPy-arrays om consistente vormen te waarborgen voor latere 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
Het initialiseren van inputs en outputs met nullen voorkomt vormfouten en zorgt ervoor dat de lagen consistent blijven tijdens zowel de voorwaartse als achterwaartse passes.
Forward-methode
Voorwaartse propagatie voor een laag berekent ruwe outputs en past de activatie toe:
def forward(self, inputs):
self.inputs = np.array(inputs).reshape(-1, 1)
# Raw outputs: weighted sum + bias
self.outputs = ...
# Apply activation
return ...
Het herschalen van de input naar een kolomvector zorgt ervoor dat deze correct wordt vermenigvuldigd met de gewichtenmatrix en overeenkomt met de verwachte dimensies in het hele netwerk.
Indien gewenst kan ik dit verder inkorten, een diagram van de laagstructuur maken of de volledige werkende code voor de Layer-klasse genereren.
1. Wat maakt een multilayer perceptron (MLP) krachtiger dan een eenvoudige perceptron?
2. Waarom is het noodzakelijk om deze code toe te passen voordat inputs met de gewichtenmatrix wordt vermenigvuldigd?
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
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
Perceptronlagen
Veeg om het menu te tonen
Perceptron is het eenvoudigste neuraal netwerk—slechts één neuron. Voor complexere taken gebruiken we een multilayer perceptron (MLP), dat één of meer verborgen lagen bevat waarmee het netwerk rijkere patronen kan leren.
Een MLP bestaat uit:
- Invoerlaag — ontvangt gegevens;
- Verborgen lagen — extraheert patronen;
- Uitvoerlaag — genereert voorspellingen.
Elke laag bevat meerdere neuronen; de uitvoer van de ene laag wordt de invoer van de volgende.
Laaggewichten en Biases
Eerder sloeg een neuron zijn gewichten op als een vector en de bias als een scalair. Een laag bevat echter veel neuronen, dus worden de gewichten een matrix, waarbij elke rij de gewichten van één neuron bevat. Biases voor alle neuronen vormen een vector.
Voor een laag met 3 ingangen en 2 neuronen:
W=[W11W21W12W22W13W23],b=[b1b2]Hier is Wij het gewicht van de j-de invoer naar het i-de neuron; bi is de bias van neuron i.
Voorwaartse Propagatie
Voorwaartse propagatie activeert elk neuron door een gewogen som te berekenen, de bias toe te voegen en de activatiefunctie toe te passen.
Eerder gebruikte een enkel neuron:
[ z = W \cdot x + b ]
Nu, omdat elke rij van (W) het gewichtsvector van één neuron is, berekent matrixvermenigvuldiging tussen de gewichtenmatrix en de invoervector automatisch de gewogen sommen van alle neuronen tegelijk.
Om de biases toe te voegen aan de outputs van de respectievelijke neuronen, moet ook een vector van biases worden opgeteld:
Ten slotte wordt de activatiefunctie toegepast op het resultaat — sigmoid of ReLU in ons geval. De resulterende formule voor voorwaartse propagatie in de laag is als volgt:
a=activation(Wx+b)waarbij a de vector van neuronactivaties (outputs) is.
Layer-klasse
Aangezien MLP's zijn opgebouwd uit lagen, definiëren we een speciale Layer-klasse. De attributen hiervan:
inputs: inputvector (n_inputselementen);outputs: ruwe neuronoutputs (n_neuronselementen);weights: gewichtenmatrix;biases: biasvector;activation_function: activatiefunctie gebruikt in de laag.
Gewichten en biases worden geïnitialiseerd met willekeurige waarden uit een uniforme verdeling in ([-1, 1]). inputs en outputs worden geïnitialiseerd als met nullen gevulde NumPy-arrays om consistente vormen te waarborgen voor latere 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
Het initialiseren van inputs en outputs met nullen voorkomt vormfouten en zorgt ervoor dat de lagen consistent blijven tijdens zowel de voorwaartse als achterwaartse passes.
Forward-methode
Voorwaartse propagatie voor een laag berekent ruwe outputs en past de activatie toe:
def forward(self, inputs):
self.inputs = np.array(inputs).reshape(-1, 1)
# Raw outputs: weighted sum + bias
self.outputs = ...
# Apply activation
return ...
Het herschalen van de input naar een kolomvector zorgt ervoor dat deze correct wordt vermenigvuldigd met de gewichtenmatrix en overeenkomt met de verwachte dimensies in het hele netwerk.
Indien gewenst kan ik dit verder inkorten, een diagram van de laagstructuur maken of de volledige werkende code voor de Layer-klasse genereren.
1. Wat maakt een multilayer perceptron (MLP) krachtiger dan een eenvoudige perceptron?
2. Waarom is het noodzakelijk om deze code toe te passen voordat inputs met de gewichtenmatrix wordt vermenigvuldigd?
Bedankt voor je feedback!