Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Perseptronlag | Nevralt Nettverk fra Bunnen Av
Quizzes & Challenges
Quizzes
Challenges
/
Introduksjon til nevrale nettverk med Python

bookPerseptronlag

Perceptron er det enkleste nevrale nettverket—kun én nevron. For mer komplekse oppgaver bruker vi et flernivå-perceptron (MLP), som inneholder ett eller flere skjulte lag som gjør det mulig for nettverket å lære mer komplekse mønstre.

Et MLP består av:

  1. Inndatalag — mottar data;
  2. Skjulte lag — trekker ut mønstre;
  3. Utdatalag — produserer prediksjoner.

Hvert lag har flere nevroner; utdataene fra ett lag blir inndataene til det neste.

Lagvekter og bias

Tidligere lagret en nevron sine vekter som en vektor og bias som en skalar. Et lag inneholder derimot mange nevroner, så vektene blir en matrise, der hver rad lagrer vektene til én nevron. Bias for alle nevronene danner en vektor.

For et lag med 3 inndata og 2 nevroner:

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} vekten fra den jj-te inndataen til den ii-te nevronen; bib_i er bias til nevron ii.

Fremoverpropagering

Fremoverpropagering aktiverer hver nevron ved å beregne en vektet sum, legge til bias og anvende aktiveringsfunksjonen.

Tidligere brukte en enkelt nevron:

[ z = W \cdot x + b ]

Nå, siden hver rad i (W) er en nevron sin vektor med vekter, vil matrise-multiplikasjon mellom vektmatrisen og inndatavektoren automatisk beregne alle nevronenes vektede summer samtidig.

For å legge til biasene til utgangene fra de respektive nevronene, må en vektor av biaser også legges til:

Til slutt anvendes aktiveringsfunksjonen på resultatet — sigmoid eller ReLU i vårt tilfelle. Den resulterende formelen for fremoverpropagering i laget er som følger:

a=activation(Wx+b)a = activation(Wx + b)

hvor aa er vektoren av nevronaktiveringer (utganger).

Layer-klasse

Siden MLP-er er bygget opp av lag, definerer vi en dedikert Layer-klasse. Dens attributter:

  • inputs: input-vektor (n_inputs elementer);
  • outputs: rå nevronutganger (n_neurons elementer);
  • weights: vektmatrise;
  • biases: bias-vektor;
  • activation_function: aktiveringsfunksjon brukt i laget.

Vekter og biaser initialiseres med tilfeldige verdier fra en uniform fordeling i ([-1, 1]). inputs og outputs initialiseres som nullfylte NumPy-arrays for å sikre konsistente former for senere bakpropagering.

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
Merk

Initialisering av inputs og outputs med nullverdier forhindrer formfeil og sikrer at lagene forblir konsistente under både fremover- og bakoverpasseringer.

Forward-metode

Fremoverpropagering for et lag beregner rå utdata og anvender aktiveringsfunksjonen:

def forward(self, inputs):
    self.inputs = np.array(inputs).reshape(-1, 1)
    # Raw outputs: weighted sum + bias
    self.outputs = ...
    # Apply activation
    return ...

Omforming av input til en kolonnevektor sikrer korrekt multiplikasjon med vektmatrisen og at dimensjonene stemmer gjennom hele nettverket.

Note
Merk

Om ønskelig kan jeg også forkorte dette ytterligere, lage et diagram av lagstrukturen eller generere fullstendig fungerende kode for Layer-klassen.

1. Hva gjør et multilagsperseptron (MLP) mer kraftfullt enn et enkelt perseptron?

2. Hvorfor er det nødvendig å bruke denne koden før man multipliserer inputs med vektmatrisen?

question mark

Hva gjør et multilagsperseptron (MLP) mer kraftfullt enn et enkelt perseptron?

Select the correct answer

question mark

Hvorfor er det nødvendig å bruke denne koden før man multipliserer inputs med vektmatrisen?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 3

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Awesome!

Completion rate improved to 4

bookPerseptronlag

Sveip for å vise menyen

Perceptron er det enkleste nevrale nettverket—kun én nevron. For mer komplekse oppgaver bruker vi et flernivå-perceptron (MLP), som inneholder ett eller flere skjulte lag som gjør det mulig for nettverket å lære mer komplekse mønstre.

Et MLP består av:

  1. Inndatalag — mottar data;
  2. Skjulte lag — trekker ut mønstre;
  3. Utdatalag — produserer prediksjoner.

Hvert lag har flere nevroner; utdataene fra ett lag blir inndataene til det neste.

Lagvekter og bias

Tidligere lagret en nevron sine vekter som en vektor og bias som en skalar. Et lag inneholder derimot mange nevroner, så vektene blir en matrise, der hver rad lagrer vektene til én nevron. Bias for alle nevronene danner en vektor.

For et lag med 3 inndata og 2 nevroner:

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} vekten fra den jj-te inndataen til den ii-te nevronen; bib_i er bias til nevron ii.

Fremoverpropagering

Fremoverpropagering aktiverer hver nevron ved å beregne en vektet sum, legge til bias og anvende aktiveringsfunksjonen.

Tidligere brukte en enkelt nevron:

[ z = W \cdot x + b ]

Nå, siden hver rad i (W) er en nevron sin vektor med vekter, vil matrise-multiplikasjon mellom vektmatrisen og inndatavektoren automatisk beregne alle nevronenes vektede summer samtidig.

For å legge til biasene til utgangene fra de respektive nevronene, må en vektor av biaser også legges til:

Til slutt anvendes aktiveringsfunksjonen på resultatet — sigmoid eller ReLU i vårt tilfelle. Den resulterende formelen for fremoverpropagering i laget er som følger:

a=activation(Wx+b)a = activation(Wx + b)

hvor aa er vektoren av nevronaktiveringer (utganger).

Layer-klasse

Siden MLP-er er bygget opp av lag, definerer vi en dedikert Layer-klasse. Dens attributter:

  • inputs: input-vektor (n_inputs elementer);
  • outputs: rå nevronutganger (n_neurons elementer);
  • weights: vektmatrise;
  • biases: bias-vektor;
  • activation_function: aktiveringsfunksjon brukt i laget.

Vekter og biaser initialiseres med tilfeldige verdier fra en uniform fordeling i ([-1, 1]). inputs og outputs initialiseres som nullfylte NumPy-arrays for å sikre konsistente former for senere bakpropagering.

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
Merk

Initialisering av inputs og outputs med nullverdier forhindrer formfeil og sikrer at lagene forblir konsistente under både fremover- og bakoverpasseringer.

Forward-metode

Fremoverpropagering for et lag beregner rå utdata og anvender aktiveringsfunksjonen:

def forward(self, inputs):
    self.inputs = np.array(inputs).reshape(-1, 1)
    # Raw outputs: weighted sum + bias
    self.outputs = ...
    # Apply activation
    return ...

Omforming av input til en kolonnevektor sikrer korrekt multiplikasjon med vektmatrisen og at dimensjonene stemmer gjennom hele nettverket.

Note
Merk

Om ønskelig kan jeg også forkorte dette ytterligere, lage et diagram av lagstrukturen eller generere fullstendig fungerende kode for Layer-klassen.

1. Hva gjør et multilagsperseptron (MLP) mer kraftfullt enn et enkelt perseptron?

2. Hvorfor er det nødvendig å bruke denne koden før man multipliserer inputs med vektmatrisen?

question mark

Hva gjør et multilagsperseptron (MLP) mer kraftfullt enn et enkelt perseptron?

Select the correct answer

question mark

Hvorfor er det nødvendig å bruke denne koden før man multipliserer inputs med vektmatrisen?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 3
some-alt