Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Utmaning: Träna Perceptronen | Neuronnätverk Från Grunden
Quizzes & Challenges
Quizzes
Challenges
/
Introduktion till neurala nätverk med Python

bookUtmaning: Träna Perceptronen

Innan du fortsätter med att träna perceptronen, kom ihåg att den använder binär korsentropiförlustfunktion som diskuterats tidigare. Det sista viktiga begreppet innan implementering av backpropagation är formeln för derivatan av denna förlustfunktion med avseende på utgångsaktiveringar, ana^n. Nedan visas formlerna för förlustfunktionen och dess derivata:

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}

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

För att verifiera att perceptronen tränas korrekt skriver metoden fit() även ut genomsnittlig förlust vid varje epok. Detta beräknas genom att ta medelvärdet av förlusten över alla träningsdata i den 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))

Slutligen är formlerna för att beräkna gradienter följande:

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}

Exempeldatan för träning (X_train) tillsammans med motsvarande etiketter (y_train) är lagrade som NumPy-arrayer i filen utils.py. Dessutom är instanser av aktiveringsfunktionerna också definierade där:

relu = ReLU()
sigmoid = Sigmoid()
Uppgift

Swipe to start coding

Målet är att slutföra träningsprocessen för en flerskiktsperceptron genom att implementera backpropagation och uppdatera modellparametrarna.

Följ dessa steg noggrant:

  1. Implementera metoden backward() i klassen Layer:
  • Beräkna följande gradienter:
    • dz: derivatan av förlusten med avseende på pre-aktiveringsvärdena, med hjälp av derivatan av aktiveringsfunktionen;
  • d_weights: gradienten av förlusten med avseende på vikterna, beräknad som skalärprodukten av dz och den transponerade inmatningsvektorn;
  • d_biases: gradienten av förlusten med avseende på bias, lika med dz;
  • da_prev: gradienten av förlusten med avseende på aktiveringen i föregående lager, erhållen genom att multiplicera den transponerade viktmatrisen med dz.
  • Uppdatera vikter och bias med hjälp av inlärningshastigheten.
  1. Slutför metoden fit() i klassen Perceptron:
  • Beräkna modellens utdata genom att anropa metoden forward();
  • Beräkna förlusten med hjälp av korsentropiformeln;
  • Beräkna danda^n — derivatan av förlusten med avseende på utdataaktiveringen;
    • Gå baklänges genom lagren och utför backpropagation genom att anropa varje lags backward()-metod.
  1. Kontrollera träningsbeteendet:
  • Om allt är korrekt implementerat ska förlusten stadigt minska för varje epok när en inlärningshastighet på 0.01 används.

Lösning

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 10
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

close

Awesome!

Completion rate improved to 4

bookUtmaning: Träna Perceptronen

Svep för att visa menyn

Innan du fortsätter med att träna perceptronen, kom ihåg att den använder binär korsentropiförlustfunktion som diskuterats tidigare. Det sista viktiga begreppet innan implementering av backpropagation är formeln för derivatan av denna förlustfunktion med avseende på utgångsaktiveringar, ana^n. Nedan visas formlerna för förlustfunktionen och dess derivata:

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}

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

För att verifiera att perceptronen tränas korrekt skriver metoden fit() även ut genomsnittlig förlust vid varje epok. Detta beräknas genom att ta medelvärdet av förlusten över alla träningsdata i den 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))

Slutligen är formlerna för att beräkna gradienter följande:

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}

Exempeldatan för träning (X_train) tillsammans med motsvarande etiketter (y_train) är lagrade som NumPy-arrayer i filen utils.py. Dessutom är instanser av aktiveringsfunktionerna också definierade där:

relu = ReLU()
sigmoid = Sigmoid()
Uppgift

Swipe to start coding

Målet är att slutföra träningsprocessen för en flerskiktsperceptron genom att implementera backpropagation och uppdatera modellparametrarna.

Följ dessa steg noggrant:

  1. Implementera metoden backward() i klassen Layer:
  • Beräkna följande gradienter:
    • dz: derivatan av förlusten med avseende på pre-aktiveringsvärdena, med hjälp av derivatan av aktiveringsfunktionen;
  • d_weights: gradienten av förlusten med avseende på vikterna, beräknad som skalärprodukten av dz och den transponerade inmatningsvektorn;
  • d_biases: gradienten av förlusten med avseende på bias, lika med dz;
  • da_prev: gradienten av förlusten med avseende på aktiveringen i föregående lager, erhållen genom att multiplicera den transponerade viktmatrisen med dz.
  • Uppdatera vikter och bias med hjälp av inlärningshastigheten.
  1. Slutför metoden fit() i klassen Perceptron:
  • Beräkna modellens utdata genom att anropa metoden forward();
  • Beräkna förlusten med hjälp av korsentropiformeln;
  • Beräkna danda^n — derivatan av förlusten med avseende på utdataaktiveringen;
    • Gå baklänges genom lagren och utför backpropagation genom att anropa varje lags backward()-metod.
  1. Kontrollera träningsbeteendet:
  • Om allt är korrekt implementerat ska förlusten stadigt minska för varje epok när en inlärningshastighet på 0.01 används.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 10
single

single

some-alt