Haaste: Perceptronin Kouluttaminen
Ennen kuin jatkat perceptronin kouluttamista, huomioi, että se käyttää aiemmin käsiteltyä binääristä ristientropiahäviöfunktiota. Viimeinen keskeinen käsite ennen takaisinkytkennän toteutusta 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 koulutusesimerkeistä:
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
Tavoitteena on saattaa loppuun monikerroksisen perceptronin koulutusprosessi toteuttamalla takaisinkytkentä (backpropagation) ja päivittämällä mallin parametrit.
Noudata näitä vaiheita huolellisesti:
- Toteuta
backward()-metodiLayer-luokkaan:
- Laske seuraavat gradientit:
dz: tappion derivaatta suhteessa pre-aktivaatioarvoihin, käyttäen aktivointifunktion derivaattaa;
d_weights: tappion gradientti suhteessa painoihin, laskettunadz:n ja syötevektorin transpoosin pistetulona;d_biases: tappion gradientti suhteessa bias-arvoihin, yhtä suuri kuindz;
da_prev: tappion gradientti edellisen kerroksen aktivaatioihin, saadaan kertomalla painomatriisin transpoosidz:lla.- Päivitä painot ja bias-arvot käyttäen oppimisnopeutta.
- Täydennä
fit()-metodiPerceptron-luokassa:- Laske mallin ulostulo kutsumalla
forward()-metodia; - Laske tappio käyttäen ristientropia-kaavaa;
- Laske mallin ulostulo kutsumalla
- Laske dan — tappion derivaatta suhteessa ulostuloaktivaatioihin;
- Käy kerrokset taaksepäin läpi ja suorita takaisinkytkentä kutsumalla jokaisen kerroksen
backward()-metodia.
- Käy kerrokset taaksepäin läpi ja suorita takaisinkytkentä kutsumalla jokaisen kerroksen
- Tarkista koulutuksen eteneminen:
- Jos kaikki on toteutettu oikein, tappion tulisi vähentyä tasaisesti jokaisella epookilla, kun käytetään oppimisnopeutta
0.01.
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, huomioi, että se käyttää aiemmin käsiteltyä binääristä ristientropiahäviöfunktiota. Viimeinen keskeinen käsite ennen takaisinkytkennän toteutusta 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 koulutusesimerkeistä:
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
Tavoitteena on saattaa loppuun monikerroksisen perceptronin koulutusprosessi toteuttamalla takaisinkytkentä (backpropagation) ja päivittämällä mallin parametrit.
Noudata näitä vaiheita huolellisesti:
- Toteuta
backward()-metodiLayer-luokkaan:
- Laske seuraavat gradientit:
dz: tappion derivaatta suhteessa pre-aktivaatioarvoihin, käyttäen aktivointifunktion derivaattaa;
d_weights: tappion gradientti suhteessa painoihin, laskettunadz:n ja syötevektorin transpoosin pistetulona;d_biases: tappion gradientti suhteessa bias-arvoihin, yhtä suuri kuindz;
da_prev: tappion gradientti edellisen kerroksen aktivaatioihin, saadaan kertomalla painomatriisin transpoosidz:lla.- Päivitä painot ja bias-arvot käyttäen oppimisnopeutta.
- Täydennä
fit()-metodiPerceptron-luokassa:- Laske mallin ulostulo kutsumalla
forward()-metodia; - Laske tappio käyttäen ristientropia-kaavaa;
- Laske mallin ulostulo kutsumalla
- Laske dan — tappion derivaatta suhteessa ulostuloaktivaatioihin;
- Käy kerrokset taaksepäin läpi ja suorita takaisinkytkentä kutsumalla jokaisen kerroksen
backward()-metodia.
- Käy kerrokset taaksepäin läpi ja suorita takaisinkytkentä kutsumalla jokaisen kerroksen
- Tarkista koulutuksen eteneminen:
- Jos kaikki on toteutettu oikein, tappion tulisi vähentyä tasaisesti jokaisella epookilla, kun käytetään oppimisnopeutta
0.01.
Ratkaisu
Kiitos palautteestasi!
single