Haaste: 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, an. Alla ovat häviöfunktion ja sen derivaatan kaavat:
Ldan=−(ylog(y^)+(1−y)log(1−y^))=y^(1−y^)y^−ymissä an=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=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))Lopuksi gradienttien laskentakaavat ovat seuraavat:
dzldWldbldal−1=dal⊙f′l(zl)=dzl⋅(al−1)T=dzl=(Wl)T⋅dzlEsimerkkikoulutusdata (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()
Swipe to start coding
- Laske seuraavat gradientit:
dz
,d_weights
,d_biases
jada_prev
backward()
-luokanLayer
-metodissa. - Laske mallin
output
fit()
-luokanPerceptron
-metodissa. - Laske
da
(dan) ennen silmukkaa; tämä on tappion gradientti suhteessa ulostuloaktivaatioihin. - 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
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
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?
Awesome!
Completion rate improved to 4
Haaste: 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, an. Alla ovat häviöfunktion ja sen derivaatan kaavat:
Ldan=−(ylog(y^)+(1−y)log(1−y^))=y^(1−y^)y^−ymissä an=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=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))Lopuksi gradienttien laskentakaavat ovat seuraavat:
dzldWldbldal−1=dal⊙f′l(zl)=dzl⋅(al−1)T=dzl=(Wl)T⋅dzlEsimerkkikoulutusdata (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()
Swipe to start coding
- Laske seuraavat gradientit:
dz
,d_weights
,d_biases
jada_prev
backward()
-luokanLayer
-metodissa. - Laske mallin
output
fit()
-luokanPerceptron
-metodissa. - Laske
da
(dan) ennen silmukkaa; tämä on tappion gradientti suhteessa ulostuloaktivaatioihin. - 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
Kiitos palautteestasi!
single