Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Tapefunksjon | Nevralt Nettverk fra Bunnen Av
Introduksjon til nevrale nettverk

bookTapefunksjon

Ved trening av et nevralt nettverk trenger vi en metode for å måle hvor godt modellen vår presterer. Dette gjøres ved hjelp av en tapfunksjon, som kvantifiserer forskjellen mellom de predikerte utgangene og de faktiske målene. Målet med treningen er å minimere dette tapet, slik at prediksjonene våre blir så nær de faktiske verdiene som mulig.

En av de mest brukte tapfunksjonene for binær klassifisering er kryssentropi-tapet, som fungerer godt med modeller som gir sannsynligheter som utdata.

Utledning av kryssentropi-tap

For å forstå kryssentropi-tapet, starter vi med maksimum likelihood-prinsippet. I et binært klassifiseringsproblem er målet å trene en modell som estimerer sannsynligheten y^\hat{y} for at en gitt input tilhører klasse 1. Den faktiske etiketten yy kan være enten 0 eller 1.

En god modell bør maksimere sannsynligheten for å forutsi alle treningsdataene korrekt. Dette betyr at vi ønsker å maksimere likelihood-funksjonen, som representerer sannsynligheten for å observere dataene gitt modellens prediksjoner.

For et enkelt trenings-eksempel, under antakelse om uavhengighet, kan likelihood skrives som:

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

Dette uttrykket betyr ganske enkelt:

  • Hvis y=1y = 1, da er P(yx)=y^P(y|x) = \hat{y}, altså ønsker vi å maksimere y^\hat{y} (sannsynligheten tildelt klasse 1);
  • Hvis y=0y = 0, da er P(yx)=1y^P(y|x) = 1 - \hat{y}, altså ønsker vi å maksimere 1y^1 - \hat{y} (sannsynligheten tildelt klasse 0).
Note
Merk

P(yx)P(y|x) betyr sannsynligheten for å observere den faktiske klasseetiketten yy gitt inputtene xx.

For å gjøre optimaliseringen enklere, bruker vi log-sannsynlighet i stedet for selve sannsynligheten (siden logaritmer gjør produkter om til summer, noe som forenkler derivasjon):

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

Siden målet er maksimering, definerer vi tapfunksjonen som negativ log-sannsynlighet, som vi ønsker å minimere:

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

Dette er binær kryssentropi-tapfunksjonen, som ofte brukes for klassifiseringsproblemer.

Gitt at variabelen output representerer y^\hat{y} for et bestemt trenings-eksempel, og variabelen target representerer yy for dette trenings-eksemplet, kan denne tapfunksjonen implementeres slik:

import numpy as np

loss = -(target * np.log(output) + (1 - target) * np.log(1 - output))

Hvorfor denne formelen?

Kryssentropi-tap har en tydelig intuitiv tolkning:

  • Hvis y=1y = 1, forenkles tapet til log(y^)-\log(\hat{y}), noe som betyr at tapet er lavt når y^\hat{y} er nær 1 og svært høyt når y^\hat{y} er nær 0;
  • Hvis y=0y = 0, forenkles tapet til log(1y^)-\log(1 - \hat{y}), noe som betyr at tapet er lavt når y^\hat{y} er nær 0 og svært høyt når det er nær 1.

Siden logaritmer blir negativt store når input nærmer seg null, blir feil prediksjoner sterkt straffet, noe som oppmuntrer modellen til å gjøre selvsikre og korrekte prediksjoner.

Hvis flere eksempler sendes gjennom fremoverpropagering, beregnes det totale tapet som gjennomsnittlig tap på tvers av alle eksempler:

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

hvor NN er antall treningsprøver.

question mark

Hvilket av følgende beskriver best formålet med kryssentropi-tapfunksjonen i binær klassifisering?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 6

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Suggested prompts:

Can you explain how cross-entropy loss differs from mean squared error?

Why do we use the negative log-likelihood instead of just the likelihood?

Can you show how this loss function is used during neural network training?

Awesome!

Completion rate improved to 4

bookTapefunksjon

Sveip for å vise menyen

Ved trening av et nevralt nettverk trenger vi en metode for å måle hvor godt modellen vår presterer. Dette gjøres ved hjelp av en tapfunksjon, som kvantifiserer forskjellen mellom de predikerte utgangene og de faktiske målene. Målet med treningen er å minimere dette tapet, slik at prediksjonene våre blir så nær de faktiske verdiene som mulig.

En av de mest brukte tapfunksjonene for binær klassifisering er kryssentropi-tapet, som fungerer godt med modeller som gir sannsynligheter som utdata.

Utledning av kryssentropi-tap

For å forstå kryssentropi-tapet, starter vi med maksimum likelihood-prinsippet. I et binært klassifiseringsproblem er målet å trene en modell som estimerer sannsynligheten y^\hat{y} for at en gitt input tilhører klasse 1. Den faktiske etiketten yy kan være enten 0 eller 1.

En god modell bør maksimere sannsynligheten for å forutsi alle treningsdataene korrekt. Dette betyr at vi ønsker å maksimere likelihood-funksjonen, som representerer sannsynligheten for å observere dataene gitt modellens prediksjoner.

For et enkelt trenings-eksempel, under antakelse om uavhengighet, kan likelihood skrives som:

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

Dette uttrykket betyr ganske enkelt:

  • Hvis y=1y = 1, da er P(yx)=y^P(y|x) = \hat{y}, altså ønsker vi å maksimere y^\hat{y} (sannsynligheten tildelt klasse 1);
  • Hvis y=0y = 0, da er P(yx)=1y^P(y|x) = 1 - \hat{y}, altså ønsker vi å maksimere 1y^1 - \hat{y} (sannsynligheten tildelt klasse 0).
Note
Merk

P(yx)P(y|x) betyr sannsynligheten for å observere den faktiske klasseetiketten yy gitt inputtene xx.

For å gjøre optimaliseringen enklere, bruker vi log-sannsynlighet i stedet for selve sannsynligheten (siden logaritmer gjør produkter om til summer, noe som forenkler derivasjon):

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

Siden målet er maksimering, definerer vi tapfunksjonen som negativ log-sannsynlighet, som vi ønsker å minimere:

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

Dette er binær kryssentropi-tapfunksjonen, som ofte brukes for klassifiseringsproblemer.

Gitt at variabelen output representerer y^\hat{y} for et bestemt trenings-eksempel, og variabelen target representerer yy for dette trenings-eksemplet, kan denne tapfunksjonen implementeres slik:

import numpy as np

loss = -(target * np.log(output) + (1 - target) * np.log(1 - output))

Hvorfor denne formelen?

Kryssentropi-tap har en tydelig intuitiv tolkning:

  • Hvis y=1y = 1, forenkles tapet til log(y^)-\log(\hat{y}), noe som betyr at tapet er lavt når y^\hat{y} er nær 1 og svært høyt når y^\hat{y} er nær 0;
  • Hvis y=0y = 0, forenkles tapet til log(1y^)-\log(1 - \hat{y}), noe som betyr at tapet er lavt når y^\hat{y} er nær 0 og svært høyt når det er nær 1.

Siden logaritmer blir negativt store når input nærmer seg null, blir feil prediksjoner sterkt straffet, noe som oppmuntrer modellen til å gjøre selvsikre og korrekte prediksjoner.

Hvis flere eksempler sendes gjennom fremoverpropagering, beregnes det totale tapet som gjennomsnittlig tap på tvers av alle eksempler:

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

hvor NN er antall treningsprøver.

question mark

Hvilket av følgende beskriver best formålet med kryssentropi-tapfunksjonen i binær klassifisering?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 6
some-alt