Tapefunksjon
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^ for at en gitt input tilhører klasse 1. Den sanne etiketten y 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(y∣x)=y^y(1−y^)1−yDette uttrykket betyr følgende:
- Hvis y=1, da er P(y∣x)=y^ — modellen bør tildele en høy sannsynlighet til klasse 1;
- Hvis y=0, da er P(y∣x)=1−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.
P(y∣x) betyr sannsynligheten for å observere den faktiske klasseetiketten y gitt inputene x.
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(y∣x)=ylog(y^)+(1−y)log(1−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^)+(1−y)log(1−y^))Dette er binær kryssentropi-tapfunksjonen, ofte brukt for klassifiseringsproblemer.
Gitt at variabelen output representerer y^ for et bestemt trenings-eksempel, og variabelen target representerer y 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=1, forenkles tapet til −log(y^), noe som betyr at tapet er lavt når y^ er nær 1 og svært høyt når y^ er nær 0;
- Hvis y=0, forenkles tapet til −log(1−y^), noe som betyr at tapet er lavt når 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=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))hvor N er antall trenings-eksempler.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
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
Tapefunksjon
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^ for at en gitt input tilhører klasse 1. Den sanne etiketten y 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(y∣x)=y^y(1−y^)1−yDette uttrykket betyr følgende:
- Hvis y=1, da er P(y∣x)=y^ — modellen bør tildele en høy sannsynlighet til klasse 1;
- Hvis y=0, da er P(y∣x)=1−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.
P(y∣x) betyr sannsynligheten for å observere den faktiske klasseetiketten y gitt inputene x.
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(y∣x)=ylog(y^)+(1−y)log(1−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^)+(1−y)log(1−y^))Dette er binær kryssentropi-tapfunksjonen, ofte brukt for klassifiseringsproblemer.
Gitt at variabelen output representerer y^ for et bestemt trenings-eksempel, og variabelen target representerer y 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=1, forenkles tapet til −log(y^), noe som betyr at tapet er lavt når y^ er nær 1 og svært høyt når y^ er nær 0;
- Hvis y=0, forenkles tapet til −log(1−y^), noe som betyr at tapet er lavt når 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=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))hvor N er antall trenings-eksempler.
Takk for tilbakemeldingene dine!