Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Perceptronlagen | Neuraal Netwerk Vanaf Nul
Introductie tot Neurale Netwerken met Python

bookPerceptronlagen

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:

  1. Invoerlaag — ontvangt gegevens;
  2. Verborgen lagen — extraheert patronen;
  3. 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=[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 is WijW_{ij} het gewicht van de jj-de invoer naar het ii-de neuron; bib_i is de bias van neuron ii.

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)a = activation(Wx + b)

waarbij aa 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_inputs elementen);
  • outputs: ruwe neuronoutputs (n_neurons elementen);
  • 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
Note
Opmerking

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.

Note
Opmerking

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?

question mark

Wat maakt een multilayer perceptron (MLP) krachtiger dan een eenvoudige perceptron?

Select the correct answer

question mark

Waarom is het noodzakelijk om deze code toe te passen voordat inputs met de gewichtenmatrix wordt vermenigvuldigd?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 3

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Suggested prompts:

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?

bookPerceptronlagen

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:

  1. Invoerlaag — ontvangt gegevens;
  2. Verborgen lagen — extraheert patronen;
  3. 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=[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 is WijW_{ij} het gewicht van de jj-de invoer naar het ii-de neuron; bib_i is de bias van neuron ii.

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)a = activation(Wx + b)

waarbij aa 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_inputs elementen);
  • outputs: ruwe neuronoutputs (n_neurons elementen);
  • 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
Note
Opmerking

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.

Note
Opmerking

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?

question mark

Wat maakt een multilayer perceptron (MLP) krachtiger dan een eenvoudige perceptron?

Select the correct answer

question mark

Waarom is het noodzakelijk om deze code toe te passen voordat inputs met de gewichtenmatrix wordt vermenigvuldigd?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 3
some-alt