Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Perceptron-lag | Neuralt Netværk fra Bunden
Introduktion til neurale netværk med Python

bookPerceptron-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:

  1. Inputlag — modtager data;
  2. Skjulte lag — udtrækker mønstre;
  3. 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=[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}

Her er WijW_{ij} vægten fra den jj-te input til den ii-te neuron; bib_i er bias for neuron ii.

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

hvor aa er vektoren af neuronaktiveringer (output).

Layer-klasse

Da MLP'er er opbygget af lag, defineres en dedikeret Layer-klasse. Dens attributter:

  • inputs: inputvektor (n_inputs elementer);
  • outputs: rå neuronoutput (n_neurons elementer);
  • 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
Note
Bemærk

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.

Note
Bemærk

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?

question mark

Hvad gør et multilags perceptron (MLP) mere kraftfuldt end et simpelt perceptron?

Select the correct answer

question mark

Hvorfor er det nødvendigt at anvende denne kode, før inputs ganges med vægtmatricen?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 3

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

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?

Awesome!

Completion rate improved to 4

bookPerceptron-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:

  1. Inputlag — modtager data;
  2. Skjulte lag — udtrækker mønstre;
  3. 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=[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}

Her er WijW_{ij} vægten fra den jj-te input til den ii-te neuron; bib_i er bias for neuron ii.

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

hvor aa er vektoren af neuronaktiveringer (output).

Layer-klasse

Da MLP'er er opbygget af lag, defineres en dedikeret Layer-klasse. Dens attributter:

  • inputs: inputvektor (n_inputs elementer);
  • outputs: rå neuronoutput (n_neurons elementer);
  • 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
Note
Bemærk

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.

Note
Bemærk

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?

question mark

Hvad gør et multilags perceptron (MLP) mere kraftfuldt end et simpelt perceptron?

Select the correct answer

question mark

Hvorfor er det nødvendigt at anvende denne kode, før inputs ganges med vægtmatricen?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 3
some-alt