Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Haaste: Perceptronin Kouluttaminen | Neuroverkon Rakentaminen Alusta Alkaen
Johdatus neuroverkkoihin

bookHaaste: Perceptronin Kouluttaminen

Ennen kuin jatkat perceptronin kouluttamista, muista että se käyttää aiemmin käsiteltyä binääristä ristientropiahäviöfunktiota. Viimeinen keskeinen käsite ennen takaisinkytkennän (backpropagation) toteuttamista on tämän häviöfunktion derivaatan kaava ulostuloaktivaation suhteen, ana^n. Alla ovat häviöfunktion ja sen derivaatan kaavat:

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}

missä an=y^a^n = \hat{y}

Perceptronin koulutuksen oikeellisuuden varmistamiseksi fit()-metodi tulostaa myös keskimääräisen häviön jokaisella epookilla. Tämä lasketaan ottamalla häviön keskiarvo kaikista kyseisen epookin harjoitusesimerkeistä:

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

Lopuksi gradienttien laskentakaavat ovat seuraavat:

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}

Esimerkkikoulutusdata (X_train) sekä vastaavat luokat (y_train) on tallennettu NumPy-taulukoina tiedostoon utils.py. Lisäksi aktivointifunktioiden instanssit on määritelty siellä:

relu = ReLU()
sigmoid = Sigmoid()
Tehtävä

Swipe to start coding

  1. Laske seuraavat gradientit: dz, d_weights, d_biases ja da_prev backward()-luokan Layer-metodissa.
  2. Laske mallin output fit()-luokan Perceptron-metodissa.
  3. Laske da (danda^n) ennen silmukkaa; tämä on tappion gradientti suhteessa ulostuloaktivaatioihin.
  4. Laske da ja suorita takaisinkytkentä silmukassa kutsumalla sopivaa metodia jokaiselle kerrokselle.

Jos koulutus on toteutettu oikein ja oppimisnopeus on 0.01, tappion tulisi vähentyä tasaisesti jokaisella epookilla.

Ratkaisu

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 10
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

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

bookHaaste: Perceptronin Kouluttaminen

Pyyhkäise näyttääksesi valikon

Ennen kuin jatkat perceptronin kouluttamista, muista että se käyttää aiemmin käsiteltyä binääristä ristientropiahäviöfunktiota. Viimeinen keskeinen käsite ennen takaisinkytkennän (backpropagation) toteuttamista on tämän häviöfunktion derivaatan kaava ulostuloaktivaation suhteen, ana^n. Alla ovat häviöfunktion ja sen derivaatan kaavat:

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}

missä an=y^a^n = \hat{y}

Perceptronin koulutuksen oikeellisuuden varmistamiseksi fit()-metodi tulostaa myös keskimääräisen häviön jokaisella epookilla. Tämä lasketaan ottamalla häviön keskiarvo kaikista kyseisen epookin harjoitusesimerkeistä:

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

Lopuksi gradienttien laskentakaavat ovat seuraavat:

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}

Esimerkkikoulutusdata (X_train) sekä vastaavat luokat (y_train) on tallennettu NumPy-taulukoina tiedostoon utils.py. Lisäksi aktivointifunktioiden instanssit on määritelty siellä:

relu = ReLU()
sigmoid = Sigmoid()
Tehtävä

Swipe to start coding

  1. Laske seuraavat gradientit: dz, d_weights, d_biases ja da_prev backward()-luokan Layer-metodissa.
  2. Laske mallin output fit()-luokan Perceptron-metodissa.
  3. Laske da (danda^n) ennen silmukkaa; tämä on tappion gradientti suhteessa ulostuloaktivaatioihin.
  4. Laske da ja suorita takaisinkytkentä silmukassa kutsumalla sopivaa metodia jokaiselle kerrokselle.

Jos koulutus on toteutettu oikein ja oppimisnopeus on 0.01, tappion tulisi vähentyä tasaisesti jokaisella epookilla.

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 10
single

single

some-alt