Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Häviöfunktio | Neuroverkon Rakentaminen Alusta Alkaen
Johdatus neuroverkkoihin

bookHäviöfunktio

Neuroverkon koulutuksessa tarvitsemme tavan mitata, kuinka hyvin mallimme suoriutuu. Tämä tehdään tappiofunktion avulla, joka kvantifioi ennustettujen tulosten ja todellisten tavoitearvojen välisen eron. Koulutuksen tavoitteena on minimoida tämä tappio, jotta ennusteemme olisivat mahdollisimman lähellä todellisia arvoja.

Yksi yleisimmin käytetyistä tappiofunktioista binääriluokittelussa on ristientropiatappio, joka toimii hyvin malleissa, jotka tuottavat todennäköisyyksiä.

Ristientropiatappion johtaminen

Ristientropiatappion ymmärtämiseksi aloitamme maksimimääräperiaatteesta. Binääriluokitteluongelmassa tavoitteena on kouluttaa malli, joka arvioi todennäköisyyden y^\hat{y} sille, että annettu syöte kuuluu luokkaan 1. Todellinen luokkamerkintä yy voi olla joko 0 tai 1.

Hyvän mallin tulisi maksimoida kaikkien koulutusesimerkkien oikean ennustamisen todennäköisyys. Tämä tarkoittaa, että haluamme maksimoida todennäköisyysfunktion, joka kuvaa havaittujen tietojen todennäköisyyttä mallin ennusteiden perusteella.

Yhdelle koulutusesimerkille, oletetaan riippumattomuus, todennäköisyys voidaan kirjoittaa seuraavasti:

P(yx)=y^y(1y^)1yP(y|x) = \hat{y}^y(1 - \hat{y})^{1-y}

Tämä lauseke tarkoittaa yksinkertaisesti:

  • Jos y=1y = 1, niin P(yx)=y^P(y|x) = \hat{y}, eli haluamme maksimoida y^\hat{y} (luokalle 1 annetun todennäköisyyden);
  • Jos y=0y = 0, niin P(yx)=1y^P(y|x) = 1 - \hat{y}, eli haluamme maksimoida 1y^1 - \hat{y} (luokalle 0 annetun todennäköisyyden).
Note
Huomautus

P(yx)P(y|x) tarkoittaa todennäköisyyttä havaita todellinen luokkamerkintä yy annetuille syötteille xx.

Optimoimisen helpottamiseksi käytetään logaritmista todennäköisyyttä (log-likelihood) itse todennäköisyyden sijaan (koska logaritmit muuttavat tulot summiksi, mikä yksinkertaistaa derivointia):

logP(yx)=ylog(y^)+(1y)log(1y^)\log P(y|x) = y\log(\hat{y}) + (1-y)\log(1-\hat{y})

Koska tavoitteena on maksimointi, määritellään häviöfunktio (loss function) negatiivisena logaritmisena todennäköisyytenä, jota pyritään minimoimaan:

L=(ylog(y^)+(1y)log(1y^))L = -(y\log(\hat{y}) + (1-y)\log(1-\hat{y}))

Tämä on binäärinen ristientropiahäviöfunktio, jota käytetään yleisesti luokitteluongelmissa.

Kun output-muuttuja edustaa y^\hat{y} tietylle opetusesimerkille ja target-muuttuja edustaa yy 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=1y = 1, häviö yksinkertaistuu muotoon log(y^)-\log(\hat{y}), eli häviö on pieni, kun y^\hat{y} on lähellä arvoa 1 ja hyvin suuri, kun y^\hat{y} on lähellä nollaa;
  • Jos y=0y = 0, häviö yksinkertaistuu muotoon log(1y^)-\log(1 - \hat{y}), eli häviö on pieni, kun y^\hat{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ä, kokonais­häviö lasketaan kaikkien esimerkkien keskimääräisenä häviönä:

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

missä NN on opetusesimerkkien määrä.

question mark

Mikä seuraavista kuvaa parhaiten ristientropiahäviöfunktion tarkoitusta binääriluokittelussa?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 6

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Awesome!

Completion rate improved to 4

bookHäviöfunktio

Pyyhkäise näyttääksesi valikon

Neuroverkon koulutuksessa tarvitsemme tavan mitata, kuinka hyvin mallimme suoriutuu. Tämä tehdään tappiofunktion avulla, joka kvantifioi ennustettujen tulosten ja todellisten tavoitearvojen välisen eron. Koulutuksen tavoitteena on minimoida tämä tappio, jotta ennusteemme olisivat mahdollisimman lähellä todellisia arvoja.

Yksi yleisimmin käytetyistä tappiofunktioista binääriluokittelussa on ristientropiatappio, joka toimii hyvin malleissa, jotka tuottavat todennäköisyyksiä.

Ristientropiatappion johtaminen

Ristientropiatappion ymmärtämiseksi aloitamme maksimimääräperiaatteesta. Binääriluokitteluongelmassa tavoitteena on kouluttaa malli, joka arvioi todennäköisyyden y^\hat{y} sille, että annettu syöte kuuluu luokkaan 1. Todellinen luokkamerkintä yy voi olla joko 0 tai 1.

Hyvän mallin tulisi maksimoida kaikkien koulutusesimerkkien oikean ennustamisen todennäköisyys. Tämä tarkoittaa, että haluamme maksimoida todennäköisyysfunktion, joka kuvaa havaittujen tietojen todennäköisyyttä mallin ennusteiden perusteella.

Yhdelle koulutusesimerkille, oletetaan riippumattomuus, todennäköisyys voidaan kirjoittaa seuraavasti:

P(yx)=y^y(1y^)1yP(y|x) = \hat{y}^y(1 - \hat{y})^{1-y}

Tämä lauseke tarkoittaa yksinkertaisesti:

  • Jos y=1y = 1, niin P(yx)=y^P(y|x) = \hat{y}, eli haluamme maksimoida y^\hat{y} (luokalle 1 annetun todennäköisyyden);
  • Jos y=0y = 0, niin P(yx)=1y^P(y|x) = 1 - \hat{y}, eli haluamme maksimoida 1y^1 - \hat{y} (luokalle 0 annetun todennäköisyyden).
Note
Huomautus

P(yx)P(y|x) tarkoittaa todennäköisyyttä havaita todellinen luokkamerkintä yy annetuille syötteille xx.

Optimoimisen helpottamiseksi käytetään logaritmista todennäköisyyttä (log-likelihood) itse todennäköisyyden sijaan (koska logaritmit muuttavat tulot summiksi, mikä yksinkertaistaa derivointia):

logP(yx)=ylog(y^)+(1y)log(1y^)\log P(y|x) = y\log(\hat{y}) + (1-y)\log(1-\hat{y})

Koska tavoitteena on maksimointi, määritellään häviöfunktio (loss function) negatiivisena logaritmisena todennäköisyytenä, jota pyritään minimoimaan:

L=(ylog(y^)+(1y)log(1y^))L = -(y\log(\hat{y}) + (1-y)\log(1-\hat{y}))

Tämä on binäärinen ristientropiahäviöfunktio, jota käytetään yleisesti luokitteluongelmissa.

Kun output-muuttuja edustaa y^\hat{y} tietylle opetusesimerkille ja target-muuttuja edustaa yy 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=1y = 1, häviö yksinkertaistuu muotoon log(y^)-\log(\hat{y}), eli häviö on pieni, kun y^\hat{y} on lähellä arvoa 1 ja hyvin suuri, kun y^\hat{y} on lähellä nollaa;
  • Jos y=0y = 0, häviö yksinkertaistuu muotoon log(1y^)-\log(1 - \hat{y}), eli häviö on pieni, kun y^\hat{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ä, kokonais­häviö lasketaan kaikkien esimerkkien keskimääräisenä häviönä:

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

missä NN on opetusesimerkkien määrä.

question mark

Mikä seuraavista kuvaa parhaiten ristientropiahäviöfunktion tarkoitusta binääriluokittelussa?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 6
some-alt