Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Udfordring: Træning af Perceptronen | Neuralt Netværk fra Bunden
Introduktion til neurale netværk

bookUdfordring: Træning af Perceptronen

Før du fortsætter med at træne perceptronen, skal du være opmærksom på, at den anvender binary cross-entropy tab-funktionen, som tidligere er blevet gennemgået. Det sidste centrale begreb før implementering af backpropagation er formlen for afledte af denne tab-funktion med hensyn til output-aktiveringerne, ana^n. Nedenfor ses formlerne for tab-funktionen og dens afledte:

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 at verificere at perceptronen trænes korrekt, udskriver fit()-metoden også gennemsnitligt tab ved hver epoke. Dette beregnes ved at tage gennemsnittet af tabet over alle træningseksempler i den pågældende epoke:

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

Endelig er formlerne til beregning af gradienter 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}

De eksemplariske træningsdata (X_train) sammen med de tilsvarende etiketter (y_train) er gemt som NumPy-arrays i filen utils.py. Derudover er instanser af aktiveringsfunktionerne også defineret der:

relu = ReLU()
sigmoid = Sigmoid()
Opgave

Swipe to start coding

Dit mål er at fuldføre træningsprocessen for en multilagsperceptron ved at implementere backpropagation og opdatere modelparametrene.

Følg disse trin nøje:

  1. Implementér backward()-metoden i Layer-klassen:
  • Beregn følgende gradienter:
  • dz: afledt af tabet med hensyn til præaktiveringsværdierne, ved brug af den afledte af aktiveringsfunktionen;
  • d_weights: gradient af tabet med hensyn til vægtene, beregnet som prikproduktet af dz og den transponerede inputvektor;
  • d_biases: gradient af tabet med hensyn til bias, svarende til dz;
  • da_prev: gradient af tabet med hensyn til aktiveringerne fra det forrige lag, opnået ved at multiplicere den transponerede vægtmatrix med dz.
  • Opdater vægte og bias ved hjælp af læringsraten.
  1. Fuldfør fit()-metoden i Perceptron-klassen:
    • Beregn modeloutput ved at kalde forward()-metoden;
  • Beregn tabet ved hjælp af krydsentropiformlen;
  • Beregn danda^n — den afledte af tabet med hensyn til outputaktiveringerne;
    • Gå baglæns gennem lagene og udfør backpropagation ved at kalde hvert lags backward()-metode.
  1. Kontrollér træningsforløbet:
  • Hvis alt er implementeret korrekt, bør tabet falde støt for hver epoke, når der bruges en læringsrate på 0.01.

Løsning

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 10
single

single

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

bookUdfordring: Træning af Perceptronen

Stryg for at vise menuen

Før du fortsætter med at træne perceptronen, skal du være opmærksom på, at den anvender binary cross-entropy tab-funktionen, som tidligere er blevet gennemgået. Det sidste centrale begreb før implementering af backpropagation er formlen for afledte af denne tab-funktion med hensyn til output-aktiveringerne, ana^n. Nedenfor ses formlerne for tab-funktionen og dens afledte:

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 at verificere at perceptronen trænes korrekt, udskriver fit()-metoden også gennemsnitligt tab ved hver epoke. Dette beregnes ved at tage gennemsnittet af tabet over alle træningseksempler i den pågældende epoke:

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

Endelig er formlerne til beregning af gradienter 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}

De eksemplariske træningsdata (X_train) sammen med de tilsvarende etiketter (y_train) er gemt som NumPy-arrays i filen utils.py. Derudover er instanser af aktiveringsfunktionerne også defineret der:

relu = ReLU()
sigmoid = Sigmoid()
Opgave

Swipe to start coding

Dit mål er at fuldføre træningsprocessen for en multilagsperceptron ved at implementere backpropagation og opdatere modelparametrene.

Følg disse trin nøje:

  1. Implementér backward()-metoden i Layer-klassen:
  • Beregn følgende gradienter:
  • dz: afledt af tabet med hensyn til præaktiveringsværdierne, ved brug af den afledte af aktiveringsfunktionen;
  • d_weights: gradient af tabet med hensyn til vægtene, beregnet som prikproduktet af dz og den transponerede inputvektor;
  • d_biases: gradient af tabet med hensyn til bias, svarende til dz;
  • da_prev: gradient af tabet med hensyn til aktiveringerne fra det forrige lag, opnået ved at multiplicere den transponerede vægtmatrix med dz.
  • Opdater vægte og bias ved hjælp af læringsraten.
  1. Fuldfør fit()-metoden i Perceptron-klassen:
    • Beregn modeloutput ved at kalde forward()-metoden;
  • Beregn tabet ved hjælp af krydsentropiformlen;
  • Beregn danda^n — den afledte af tabet med hensyn til outputaktiveringerne;
    • Gå baglæns gennem lagene og udfør backpropagation ved at kalde hvert lags backward()-metode.
  1. Kontrollér træningsforløbet:
  • Hvis alt er implementeret korrekt, bør tabet falde støt for hver epoke, når der bruges en læringsrate på 0.01.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 10
single

single

some-alt