Häviöfunktio
Neuroverkon koulutuksessa tarvitaan tapa mitata, kuinka hyvin malli suoriutuu. Tämä tehdään tappiofunktion avulla, joka kvantifioi ennustettujen tulosten ja todellisten arvojen välisen eron. Koulutuksen tavoitteena on minimoida tämä tappio, jolloin ennusteet ovat mahdollisimman lähellä todellisia arvoja.
Yksi yleisimmin käytetyistä tappiofunktioista binääriluokittelussa on ristientropiatappio, joka soveltuu hyvin malleille, jotka tuottavat todennäköisyyksiä.
Ristientropiatappion johtaminen
Ristientropiatappion ymmärtämiseksi aloitetaan maksimimääräisyysperiaatteesta. Binääriluokittelussa tavoitteena on kouluttaa malli, joka arvioi todennäköisyyden y^ sille, että annettu syöte kuuluu luokkaan 1. Todellinen luokkamerkintä y voi olla 0 tai 1.
Hyvän mallin tulisi maksimoida kaikkien koulutusesimerkkien oikean ennustamisen todennäköisyys. Tämä tarkoittaa, että halutaan maksimoida todennäköisyysfunktio, joka kuvaa havaittujen tietojen todennäköisyyttä mallin ennusteiden perusteella.
Yhdelle koulutusesimerkille, oletetaan riippumattomuus, todennäköisyys voidaan kirjoittaa seuraavasti:
P(y∣x)=y^y(1−y^)1−yTämä lauseke tarkoittaa yksinkertaisesti:
- Jos y=1, niin P(y∣x)=y^, eli halutaan maksimoida y^ (luokan 1 todennäköisyys);
- Jos y=0, niin P(y∣x)=1−y^, eli halutaan maksimoida 1−y^ (luokan 0 todennäköisyys).
P(y∣x) tarkoittaa todennäköisyyttä havaita todellinen luokkamerkintä y annetuille syötteille x.
Optimoimisen helpottamiseksi käytetään logaritmista todennäköisyyttä (log-likelihood) pelkän todennäköisyyden sijaan (koska logaritmit muuttavat tulot summiksi, mikä helpottaa derivointia):
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Koska tavoitteena on maksimointi, määritellään häviöfunktio (loss function) negatiivisena logaritmisena todennäköisyytenä (negative log-likelihood), jota pyritään minimoimaan:
L=−(ylog(y^)+(1−y)log(1−y^))Tämä on binäärinen ristientropiahäviöfunktio, jota käytetään yleisesti luokitteluongelmissa.
Kun output-muuttuja edustaa y^ tietylle opetusesimerkille ja target-muuttuja edustaa y tälle opetusesimerkille, tämä häviöfunktio voidaan toteuttaa seuraavasti:
import numpy as np
loss = -(target * np.log(output) + (1 - target) * np.log(1 - output))
Miksi tämä kaava?
Ristientropiahäviöllä on selkeä intuitiivinen tulkinta:
- Jos y=1, häviö yksinkertaistuu muotoon −log(y^), eli häviö on pieni, kun y^ on lähellä arvoa 1 ja hyvin suuri, kun y^ on lähellä nollaa;
- Jos y=0, häviö yksinkertaistuu muotoon −log(1−y^), eli häviö on pieni, kun y^ on lähellä nollaa ja hyvin suuri, kun se on lähellä arvoa 1.
Koska logaritmit kasvavat negatiivisesti suuriksi syötteen lähestyessä nollaa, väärät ennusteet rangaistaan voimakkaasti, mikä kannustaa mallia tekemään varmoja ja oikeita ennusteita.
Jos eteenpäinlevityksessä käytetään useita esimerkkejä, kokonaishäviö lasketaan kaikkien esimerkkien keskimääräisenä häviönä:
L=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))missä N on opetusesimerkkien määrä.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 4
Häviöfunktio
Pyyhkäise näyttääksesi valikon
Neuroverkon koulutuksessa tarvitaan tapa mitata, kuinka hyvin malli suoriutuu. Tämä tehdään tappiofunktion avulla, joka kvantifioi ennustettujen tulosten ja todellisten arvojen välisen eron. Koulutuksen tavoitteena on minimoida tämä tappio, jolloin ennusteet ovat mahdollisimman lähellä todellisia arvoja.
Yksi yleisimmin käytetyistä tappiofunktioista binääriluokittelussa on ristientropiatappio, joka soveltuu hyvin malleille, jotka tuottavat todennäköisyyksiä.
Ristientropiatappion johtaminen
Ristientropiatappion ymmärtämiseksi aloitetaan maksimimääräisyysperiaatteesta. Binääriluokittelussa tavoitteena on kouluttaa malli, joka arvioi todennäköisyyden y^ sille, että annettu syöte kuuluu luokkaan 1. Todellinen luokkamerkintä y voi olla 0 tai 1.
Hyvän mallin tulisi maksimoida kaikkien koulutusesimerkkien oikean ennustamisen todennäköisyys. Tämä tarkoittaa, että halutaan maksimoida todennäköisyysfunktio, joka kuvaa havaittujen tietojen todennäköisyyttä mallin ennusteiden perusteella.
Yhdelle koulutusesimerkille, oletetaan riippumattomuus, todennäköisyys voidaan kirjoittaa seuraavasti:
P(y∣x)=y^y(1−y^)1−yTämä lauseke tarkoittaa yksinkertaisesti:
- Jos y=1, niin P(y∣x)=y^, eli halutaan maksimoida y^ (luokan 1 todennäköisyys);
- Jos y=0, niin P(y∣x)=1−y^, eli halutaan maksimoida 1−y^ (luokan 0 todennäköisyys).
P(y∣x) tarkoittaa todennäköisyyttä havaita todellinen luokkamerkintä y annetuille syötteille x.
Optimoimisen helpottamiseksi käytetään logaritmista todennäköisyyttä (log-likelihood) pelkän todennäköisyyden sijaan (koska logaritmit muuttavat tulot summiksi, mikä helpottaa derivointia):
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Koska tavoitteena on maksimointi, määritellään häviöfunktio (loss function) negatiivisena logaritmisena todennäköisyytenä (negative log-likelihood), jota pyritään minimoimaan:
L=−(ylog(y^)+(1−y)log(1−y^))Tämä on binäärinen ristientropiahäviöfunktio, jota käytetään yleisesti luokitteluongelmissa.
Kun output-muuttuja edustaa y^ tietylle opetusesimerkille ja target-muuttuja edustaa y tälle opetusesimerkille, tämä häviöfunktio voidaan toteuttaa seuraavasti:
import numpy as np
loss = -(target * np.log(output) + (1 - target) * np.log(1 - output))
Miksi tämä kaava?
Ristientropiahäviöllä on selkeä intuitiivinen tulkinta:
- Jos y=1, häviö yksinkertaistuu muotoon −log(y^), eli häviö on pieni, kun y^ on lähellä arvoa 1 ja hyvin suuri, kun y^ on lähellä nollaa;
- Jos y=0, häviö yksinkertaistuu muotoon −log(1−y^), eli häviö on pieni, kun y^ on lähellä nollaa ja hyvin suuri, kun se on lähellä arvoa 1.
Koska logaritmit kasvavat negatiivisesti suuriksi syötteen lähestyessä nollaa, väärät ennusteet rangaistaan voimakkaasti, mikä kannustaa mallia tekemään varmoja ja oikeita ennusteita.
Jos eteenpäinlevityksessä käytetään useita esimerkkejä, kokonaishäviö lasketaan kaikkien esimerkkien keskimääräisenä häviönä:
L=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))missä N on opetusesimerkkien määrä.
Kiitos palautteestasi!