Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Utfordring: Trening av Perseptron | Nevralt Nettverk fra Bunnen Av
Introduksjon til nevrale nettverk med Python

bookUtfordring: Trening av Perseptron

Før du går videre med å trene perceptronen, husk at den benytter binær kryssentropi-tapfunksjonen som tidligere diskutert. Det siste nøkkelkonseptet før implementering av tilbakepropagasjon er formelen for den deriverte av denne tapfunksjonen med hensyn til utgangsaktiveringene, ana^n. Nedenfor vises formlene for tapfunksjonen og dens deriverte:

L=(ylog(y^)+(1y)log(1y^))dan=y^yy^(1y^)\begin{aligned} L &= -(y \log(\hat{y}) + (1-y) \log(1 - \hat{y}))\\ da^n &= \frac {\hat{y} - y} {\hat{y}(1 - \hat{y})} \end{aligned}

hvor an=y^a^n = \hat{y}

For å verifisere at perceptronen trenes korrekt, skriver fit()-metoden også ut gjennomsnittlig tap ved hver epoke. Dette beregnes ved å ta gjennomsnittet av tapet for alle treningsdata i den aktuelle epoken:

for epoch in range(epochs):
    loss = 0

    for i in range(training_data.shape[0]):
        loss += -(target * np.log(output) + (1 - target) * np.log(1 - output))

average_loss = loss[0, 0] / training_data.shape[0]
print(f'Loss at epoch {epoch + 1}: {average_loss:.3f}')
L=1Ni=1N(yilog(y^i)+(1yi)log(1y^i))L = -\frac1N \sum_{i=1}^N (y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i))

Til slutt er formlene for å beregne gradientene som følger:

dzl=dalfl(zl)dWl=dzl(al1)Tdbl=dzldal1=(Wl)Tdzl\begin{aligned} dz^l &= da^l \odot f'^l(z^l)\\ dW^l &= dz^l \cdot (a^{l-1})^T\\ db^l &= dz^l\\ da^{l-1} &= (W^l)^T \cdot dz^l \end{aligned}

Eksempeldata for trening (X_train) sammen med tilhørende etiketter (y_train) er lagret som NumPy-arrays i filen utils.py. I tillegg er instanser av aktiveringsfunksjonene også definert der:

relu = ReLU()
sigmoid = Sigmoid()
Oppgave

Swipe to start coding

Målet ditt er å fullføre treningsprosessen for en flerlags perceptron ved å implementere tilbakepropagering og oppdatere modellparametrene.

Følg disse trinnene nøye:

  1. Implementer backward()-metoden i Layer-klassen:
  • Beregn følgende gradienter:
  • dz: den deriverte av tapet med hensyn til preaktiveringsverdiene, ved å bruke den deriverte av aktiveringsfunksjonen;
    • d_weights: gradienten av tapet med hensyn til vektene, beregnet som prikkproduktet av dz og den transponerte input-vektoren;
  • d_biases: gradienten av tapet med hensyn til biasene, lik dz;
  • da_prev: gradienten av tapet med hensyn til aktiveringene i forrige lag, oppnådd ved å multiplisere den transponerte vektmatrisen med dz.
  • Oppdater vektene og biasene ved hjelp av læringsraten.
  1. Fullfør fit()-metoden i Perceptron-klassen:
    • Beregn modellens output ved å kalle forward()-metoden;
  • Kalkuler tapet ved hjelp av kryssentropiformelen;
  • Beregn danda^n — den deriverte av tapet med hensyn til utgangsaktiveringene;
    • Gå bakover gjennom lagene og utfør tilbakepropagering ved å kalle hver lag sin backward()-metode.
  1. Kontroller treningsforløpet:
  • Hvis alt er implementert korrekt, skal tapet jevnt avta for hver epoke når du bruker en læringsrate på 0.01.

Løsning

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 10
single

single

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

Suggested prompts:

Can you explain how the derivative of the binary cross-entropy loss is used in backpropagation?

What is the purpose of printing the average loss at each epoch?

Can you clarify how the gradients are computed using the provided formulas?

close

Awesome!

Completion rate improved to 4

bookUtfordring: Trening av Perseptron

Sveip for å vise menyen

Før du går videre med å trene perceptronen, husk at den benytter binær kryssentropi-tapfunksjonen som tidligere diskutert. Det siste nøkkelkonseptet før implementering av tilbakepropagasjon er formelen for den deriverte av denne tapfunksjonen med hensyn til utgangsaktiveringene, ana^n. Nedenfor vises formlene for tapfunksjonen og dens deriverte:

L=(ylog(y^)+(1y)log(1y^))dan=y^yy^(1y^)\begin{aligned} L &= -(y \log(\hat{y}) + (1-y) \log(1 - \hat{y}))\\ da^n &= \frac {\hat{y} - y} {\hat{y}(1 - \hat{y})} \end{aligned}

hvor an=y^a^n = \hat{y}

For å verifisere at perceptronen trenes korrekt, skriver fit()-metoden også ut gjennomsnittlig tap ved hver epoke. Dette beregnes ved å ta gjennomsnittet av tapet for alle treningsdata i den aktuelle epoken:

for epoch in range(epochs):
    loss = 0

    for i in range(training_data.shape[0]):
        loss += -(target * np.log(output) + (1 - target) * np.log(1 - output))

average_loss = loss[0, 0] / training_data.shape[0]
print(f'Loss at epoch {epoch + 1}: {average_loss:.3f}')
L=1Ni=1N(yilog(y^i)+(1yi)log(1y^i))L = -\frac1N \sum_{i=1}^N (y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i))

Til slutt er formlene for å beregne gradientene som følger:

dzl=dalfl(zl)dWl=dzl(al1)Tdbl=dzldal1=(Wl)Tdzl\begin{aligned} dz^l &= da^l \odot f'^l(z^l)\\ dW^l &= dz^l \cdot (a^{l-1})^T\\ db^l &= dz^l\\ da^{l-1} &= (W^l)^T \cdot dz^l \end{aligned}

Eksempeldata for trening (X_train) sammen med tilhørende etiketter (y_train) er lagret som NumPy-arrays i filen utils.py. I tillegg er instanser av aktiveringsfunksjonene også definert der:

relu = ReLU()
sigmoid = Sigmoid()
Oppgave

Swipe to start coding

Målet ditt er å fullføre treningsprosessen for en flerlags perceptron ved å implementere tilbakepropagering og oppdatere modellparametrene.

Følg disse trinnene nøye:

  1. Implementer backward()-metoden i Layer-klassen:
  • Beregn følgende gradienter:
  • dz: den deriverte av tapet med hensyn til preaktiveringsverdiene, ved å bruke den deriverte av aktiveringsfunksjonen;
    • d_weights: gradienten av tapet med hensyn til vektene, beregnet som prikkproduktet av dz og den transponerte input-vektoren;
  • d_biases: gradienten av tapet med hensyn til biasene, lik dz;
  • da_prev: gradienten av tapet med hensyn til aktiveringene i forrige lag, oppnådd ved å multiplisere den transponerte vektmatrisen med dz.
  • Oppdater vektene og biasene ved hjelp av læringsraten.
  1. Fullfør fit()-metoden i Perceptron-klassen:
    • Beregn modellens output ved å kalle forward()-metoden;
  • Kalkuler tapet ved hjelp av kryssentropiformelen;
  • Beregn danda^n — den deriverte av tapet med hensyn til utgangsaktiveringene;
    • Gå bakover gjennom lagene og utfør tilbakepropagering ved å kalle hver lag sin backward()-metode.
  1. Kontroller treningsforløpet:
  • Hvis alt er implementert korrekt, skal tapet jevnt avta for hver epoke når du bruker en læringsrate på 0.01.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 10
single

single

some-alt