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 er det nødvendig å måle hvor nøyaktig modellen forutsier de korrekte resultatene. Dette gjøres ved hjelp av en tapfunksjon, som beregner forskjellen mellom modellens prediksjoner og de faktiske målverdiene. Målet med treningen er å minimere dette tapet, slik at prediksjonene blir så nær de sanne utgangene som mulig.

For binære klassifiseringsoppgaver er en av de mest brukte tapfunksjonene kryssentropi-tapet, som er spesielt effektiv for modeller som gir sannsynligheter som utdata.

Utledning av kryssentropi-tap

For å forstå kryssentropi-tapet, vurder maksimal sannsynlighetsprinsippet. 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 sanne etiketten yy kan ha én av to verdier: 0 eller 1.

En effektiv modell bør tildele høye sannsynligheter til korrekte prediksjoner. Denne ideen formaliseres gjennom sannsynlighetsfunksjonen, som representerer sannsynligheten for å observere de faktiske dataene gitt modellens prediksjoner.

For et enkelt trenings-eksempel, under antakelse om uavhengighet, kan sannsynligheten uttrykkes som:

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

Dette uttrykket betyr følgende:

  • Hvis y=1y = 1, da er P(yx)=y^P(y|x) = \hat{y} — modellen bør tildele en høy sannsynlighet til klasse 1;
  • Hvis y=0y = 0, da er P(yx)=1y^P(y|x) = 1 - \hat{y} — modellen bør tildele en høy sannsynlighet til klasse 0.

I begge tilfeller er målet å maksimere sannsynligheten modellen tilordner til korrekt klasse.

Note
Merk

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

For å forenkle optimaliseringen brukes log-sannsynlighet i stedet for sannsynlighetsfunksjonen, fordi logaritmen gjør om produkter til summer, noe som gjør derivasjon enklere:

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

Siden treningen har som mål å maksimere log-sannsynligheten, defineres tapfunksjonen som dens negative verdi slik at optimaliseringsprosessen blir et minimeringsproblem:

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

Dette er binær kryssentropi-tapfunksjonen, ofte brukt 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, 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 trenings-eksempler.

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?

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

bookTapefunksjon

Sveip for å vise menyen

Ved trening av et nevralt nettverk er det nødvendig å måle hvor nøyaktig modellen forutsier de korrekte resultatene. Dette gjøres ved hjelp av en tapfunksjon, som beregner forskjellen mellom modellens prediksjoner og de faktiske målverdiene. Målet med treningen er å minimere dette tapet, slik at prediksjonene blir så nær de sanne utgangene som mulig.

For binære klassifiseringsoppgaver er en av de mest brukte tapfunksjonene kryssentropi-tapet, som er spesielt effektiv for modeller som gir sannsynligheter som utdata.

Utledning av kryssentropi-tap

For å forstå kryssentropi-tapet, vurder maksimal sannsynlighetsprinsippet. 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 sanne etiketten yy kan ha én av to verdier: 0 eller 1.

En effektiv modell bør tildele høye sannsynligheter til korrekte prediksjoner. Denne ideen formaliseres gjennom sannsynlighetsfunksjonen, som representerer sannsynligheten for å observere de faktiske dataene gitt modellens prediksjoner.

For et enkelt trenings-eksempel, under antakelse om uavhengighet, kan sannsynligheten uttrykkes som:

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

Dette uttrykket betyr følgende:

  • Hvis y=1y = 1, da er P(yx)=y^P(y|x) = \hat{y} — modellen bør tildele en høy sannsynlighet til klasse 1;
  • Hvis y=0y = 0, da er P(yx)=1y^P(y|x) = 1 - \hat{y} — modellen bør tildele en høy sannsynlighet til klasse 0.

I begge tilfeller er målet å maksimere sannsynligheten modellen tilordner til korrekt klasse.

Note
Merk

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

For å forenkle optimaliseringen brukes log-sannsynlighet i stedet for sannsynlighetsfunksjonen, fordi logaritmen gjør om produkter til summer, noe som gjør derivasjon enklere:

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

Siden treningen har som mål å maksimere log-sannsynligheten, defineres tapfunksjonen som dens negative verdi slik at optimaliseringsprosessen blir et minimeringsproblem:

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

Dette er binær kryssentropi-tapfunksjonen, ofte brukt 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, 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 trenings-eksempler.

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