Tabt Funktion
Ved træning af et neuralt netværk er det nødvendigt at måle, hvor præcist modellen forudsiger de korrekte resultater. Dette gøres ved hjælp af en tab-funktion, som beregner forskellen mellem modellens forudsigelser og de faktiske målværdier. Målet med træningen er at minimere dette tab, så forudsigelserne kommer så tæt som muligt på de sande output.
For binære klassifikationsopgaver er en af de mest anvendte tab-funktioner krydsentropi-tab, som er særligt effektiv for modeller, der returnerer sandsynligheder.
Udledning af krydsentropi-tab
For at forstå krydsentropi-tab skal man overveje maksimum likelihood-princippet. I et binært klassifikationsproblem er målet at træne en model, der estimerer sandsynligheden y^ for, at en given input tilhører klasse 1. Den sande etiket y kan antage en af to værdier: 0 eller 1.
En effektiv model bør tildele høje sandsynligheder til korrekte forudsigelser. Denne idé formaliseres gennem likelihood-funktionen, som repræsenterer sandsynligheden for at observere de faktiske data givet modellens forudsigelser.
For et enkelt træningseksempel, under antagelse af uafhængighed, kan likelihood udtrykkes som:
P(y∣x)=y^y(1−y^)1−yDette udtryk betyder følgende:
- Hvis y=1, så P(y∣x)=y^ — modellen bør tildele en høj sandsynlighed til klasse 1;
- Hvis y=0, så P(y∣x)=1−y^ — modellen bør tildele en høj sandsynlighed til klasse 0.
I begge tilfælde er målet at maksimere den sandsynlighed, som modellen tildeler den korrekte klasse.
P(y∣x) betyder sandsynligheden for at observere den faktiske klasselabel y givet inputtene x.
For at forenkle optimeringen anvendes log-likelihood i stedet for likelihood-funktionen, fordi logaritmen omdanner produkter til summer, hvilket gør differentiering mere ligetil:
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Da træning har til formål at maksimere log-likelihood, defineres loss-funktionen som dens negative værdi, så optimeringsprocessen bliver et minimeringsproblem:
L=−(ylog(y^)+(1−y)log(1−y^))Dette er binary cross-entropy tab-funktionen, som ofte anvendes til klassifikationsproblemer.
Givet at variablen output repræsenterer y^ for et bestemt træningseksempel, og variablen target repræsenterer y for dette træningseksempel, kan denne tab-funktion implementeres således:
import numpy as np
loss = -(target * np.log(output) + (1 - target) * np.log(1 - output))
Hvorfor denne formel?
Cross-entropy tab har en klar intuitiv fortolkning:
- Hvis y=1, forenkles tabet til −log(y^), hvilket betyder, at tabet er lavt, når y^ er tæt på 1 og meget højt, når y^ er tæt på 0;
- Hvis y=0, forenkles tabet til −log(1−y^), hvilket betyder, at tabet er lavt, når y^ er tæt på 0 og meget højt, når det er tæt på 1.
Da logaritmer bliver negativt store, når deres input nærmer sig nul, bliver forkerte forudsigelser kraftigt straffet, hvilket opmuntrer modellen til at lave sikre, korrekte forudsigelser.
Hvis flere eksempler sendes gennem forward propagation, beregnes det samlede tab som gennemsnitstabet på tværs af alle eksempler:
L=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))hvor N er antallet af træningsprøver.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Awesome!
Completion rate improved to 4
Tabt Funktion
Stryg for at vise menuen
Ved træning af et neuralt netværk er det nødvendigt at måle, hvor præcist modellen forudsiger de korrekte resultater. Dette gøres ved hjælp af en tab-funktion, som beregner forskellen mellem modellens forudsigelser og de faktiske målværdier. Målet med træningen er at minimere dette tab, så forudsigelserne kommer så tæt som muligt på de sande output.
For binære klassifikationsopgaver er en af de mest anvendte tab-funktioner krydsentropi-tab, som er særligt effektiv for modeller, der returnerer sandsynligheder.
Udledning af krydsentropi-tab
For at forstå krydsentropi-tab skal man overveje maksimum likelihood-princippet. I et binært klassifikationsproblem er målet at træne en model, der estimerer sandsynligheden y^ for, at en given input tilhører klasse 1. Den sande etiket y kan antage en af to værdier: 0 eller 1.
En effektiv model bør tildele høje sandsynligheder til korrekte forudsigelser. Denne idé formaliseres gennem likelihood-funktionen, som repræsenterer sandsynligheden for at observere de faktiske data givet modellens forudsigelser.
For et enkelt træningseksempel, under antagelse af uafhængighed, kan likelihood udtrykkes som:
P(y∣x)=y^y(1−y^)1−yDette udtryk betyder følgende:
- Hvis y=1, så P(y∣x)=y^ — modellen bør tildele en høj sandsynlighed til klasse 1;
- Hvis y=0, så P(y∣x)=1−y^ — modellen bør tildele en høj sandsynlighed til klasse 0.
I begge tilfælde er målet at maksimere den sandsynlighed, som modellen tildeler den korrekte klasse.
P(y∣x) betyder sandsynligheden for at observere den faktiske klasselabel y givet inputtene x.
For at forenkle optimeringen anvendes log-likelihood i stedet for likelihood-funktionen, fordi logaritmen omdanner produkter til summer, hvilket gør differentiering mere ligetil:
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Da træning har til formål at maksimere log-likelihood, defineres loss-funktionen som dens negative værdi, så optimeringsprocessen bliver et minimeringsproblem:
L=−(ylog(y^)+(1−y)log(1−y^))Dette er binary cross-entropy tab-funktionen, som ofte anvendes til klassifikationsproblemer.
Givet at variablen output repræsenterer y^ for et bestemt træningseksempel, og variablen target repræsenterer y for dette træningseksempel, kan denne tab-funktion implementeres således:
import numpy as np
loss = -(target * np.log(output) + (1 - target) * np.log(1 - output))
Hvorfor denne formel?
Cross-entropy tab har en klar intuitiv fortolkning:
- Hvis y=1, forenkles tabet til −log(y^), hvilket betyder, at tabet er lavt, når y^ er tæt på 1 og meget højt, når y^ er tæt på 0;
- Hvis y=0, forenkles tabet til −log(1−y^), hvilket betyder, at tabet er lavt, når y^ er tæt på 0 og meget højt, når det er tæt på 1.
Da logaritmer bliver negativt store, når deres input nærmer sig nul, bliver forkerte forudsigelser kraftigt straffet, hvilket opmuntrer modellen til at lave sikre, korrekte forudsigelser.
Hvis flere eksempler sendes gennem forward propagation, beregnes det samlede tab som gennemsnitstabet på tværs af alle eksempler:
L=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))hvor N er antallet af træningsprøver.
Tak for dine kommentarer!