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

Perceptronlag

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.

Forenklet billede af neuralt netværk

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.

Lagvægtninger

Fremadpropagering

Fremadpropagering aktiverer hver neuron ved at beregne en vægtet sum, tilføje bias og anvende aktiveringsfunktionen.

Tidligere brugte en enkelt neuron:

[ z = W \cdot x + b ]

Nu, da hver række af (W) er en neurons vægtvektor, beregner matrixmultiplikation mellem vægtmatricen og inputvektoren automatisk alle neuroners vægtede summer på én gang.

Matrix-vektor multiplikation for laget

For at tilføje bias til outputtene fra de respektive neuroner, skal der også tilføjes en vektor af bias:

Fremadpropagering for laget

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).

Lagklasse

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

  • inputs: inputvektor (n_inputs elementer);
  • outputs: rå neuronudgange (n_neurons elementer);
  • weights: vægtmatrix;
  • biases: biasvektor;
  • activation_function: aktiveringsfunktion anvendt i laget.

Vægte og biaser 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 ensartede 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 bagudpassage.

Forward-metode

Fremadpropagering for et lag beregner rå udgange 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, at den multipliceres korrekt 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, lave et diagram over lagstrukturen eller generere den fuldt 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?

Vælg det korrekte svar

question mark

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

Vælg det korrekte svar

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

Sektion 2. Kapitel 3
some-alt