Tappiofunktio
Neuroverkon koulutuksessa on tarpeen mitata, kuinka tarkasti malli ennustaa oikeat tulokset. Tämä tehdään käyttämällä tappiofunktiota (loss function), joka laskee mallin ennusteiden ja todellisten kohdearvojen välisen eron. Koulutuksen tavoitteena on minimoida tämä tappio, jolloin ennusteet ovat mahdollisimman lähellä todellisia tuloksia.
Binaariluokittelussa yksi yleisimmin käytetyistä tappiofunktioista on ristientropiatappio (cross-entropy loss), joka on erityisen tehokas malleille, jotka tuottavat todennäköisyyksiä.
Ristientropiatappion johdanto
Ristientropiatappion ymmärtämiseksi tarkastellaan maksimiennustettavuuden periaatetta (maximum likelihood principle). Binaariluokittelussa tavoitteena on kouluttaa malli, joka arvioi todennäköisyyden y^ sille, että annettu syöte kuuluu luokkaan 1. Todellinen luokkamerkintä y voi saada arvon 0 tai 1.
Tehokkaan mallin tulisi antaa korkeat todennäköisyydet oikeille ennusteille. Tämä ajatus muotoillaan todennäköisyysfunktion (likelihood function) avulla, joka kuvaa todennäköisyyttä havaita todelliset tiedot mallin ennusteiden perusteella.
Yhdelle koulutusesimerkille, olettaen riippumattomuuden, todennäköisyys voidaan esittää seuraavasti:
P(y∣x)=y^y(1−y^)1−yTämä lauseke tarkoittaa seuraavaa:
- Jos y=1, niin P(y∣x)=y^ — mallin tulisi antaa korkea todennäköisyys luokalle 1;
- Jos y=0, niin P(y∣x)=1−y^ — mallin tulisi antaa korkea todennäköisyys luokalle 0.
Molemmissa tapauksissa tavoitteena on maksimoida todennäköisyys, jonka malli antaa oikealle luokalle.
P(y∣x) tarkoittaa todennäköisyyttä havaita todellinen luokkamerkintä y annetuille syötteille x.
Optimoinnin yksinkertaistamiseksi käytetään logaritmista todennäköisyyttä (log-likelihood) todennäköisyysfunktion sijaan, koska logaritmin ottaminen muuttaa tulot summiksi, mikä helpottaa derivointia:
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Koska koulutuksen tavoitteena on maksimoida logaritminen todennäköisyys, häviöfunktio määritellään sen negatiiviseksi arvoksi, jotta optimointiprosessista tulee minimointiongelma:
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äinlevityksen aikana käsitellää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
Can you explain how cross-entropy loss differs from mean squared error?
What happens if the model predicts exactly 0 or 1 for the output?
Can you show how this loss function is used during neural network training?
Awesome!
Completion rate improved to 4
Tappiofunktio
Pyyhkäise näyttääksesi valikon
Neuroverkon koulutuksessa on tarpeen mitata, kuinka tarkasti malli ennustaa oikeat tulokset. Tämä tehdään käyttämällä tappiofunktiota (loss function), joka laskee mallin ennusteiden ja todellisten kohdearvojen välisen eron. Koulutuksen tavoitteena on minimoida tämä tappio, jolloin ennusteet ovat mahdollisimman lähellä todellisia tuloksia.
Binaariluokittelussa yksi yleisimmin käytetyistä tappiofunktioista on ristientropiatappio (cross-entropy loss), joka on erityisen tehokas malleille, jotka tuottavat todennäköisyyksiä.
Ristientropiatappion johdanto
Ristientropiatappion ymmärtämiseksi tarkastellaan maksimiennustettavuuden periaatetta (maximum likelihood principle). Binaariluokittelussa tavoitteena on kouluttaa malli, joka arvioi todennäköisyyden y^ sille, että annettu syöte kuuluu luokkaan 1. Todellinen luokkamerkintä y voi saada arvon 0 tai 1.
Tehokkaan mallin tulisi antaa korkeat todennäköisyydet oikeille ennusteille. Tämä ajatus muotoillaan todennäköisyysfunktion (likelihood function) avulla, joka kuvaa todennäköisyyttä havaita todelliset tiedot mallin ennusteiden perusteella.
Yhdelle koulutusesimerkille, olettaen riippumattomuuden, todennäköisyys voidaan esittää seuraavasti:
P(y∣x)=y^y(1−y^)1−yTämä lauseke tarkoittaa seuraavaa:
- Jos y=1, niin P(y∣x)=y^ — mallin tulisi antaa korkea todennäköisyys luokalle 1;
- Jos y=0, niin P(y∣x)=1−y^ — mallin tulisi antaa korkea todennäköisyys luokalle 0.
Molemmissa tapauksissa tavoitteena on maksimoida todennäköisyys, jonka malli antaa oikealle luokalle.
P(y∣x) tarkoittaa todennäköisyyttä havaita todellinen luokkamerkintä y annetuille syötteille x.
Optimoinnin yksinkertaistamiseksi käytetään logaritmista todennäköisyyttä (log-likelihood) todennäköisyysfunktion sijaan, koska logaritmin ottaminen muuttaa tulot summiksi, mikä helpottaa derivointia:
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Koska koulutuksen tavoitteena on maksimoida logaritminen todennäköisyys, häviöfunktio määritellään sen negatiiviseksi arvoksi, jotta optimointiprosessista tulee minimointiongelma:
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äinlevityksen aikana käsitellää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!