Tabt Funktion
Ved træning af et neuralt netværk har vi brug for en metode til at måle, hvor godt vores model præsterer. Dette gøres ved hjælp af en tab-funktion, som kvantificerer forskellen mellem de forudsagte output og de faktiske målværdier. Målet med træningen er at minimere dette tab, så vores forudsigelser kommer så tæt på de faktiske værdier som muligt.
En af de mest anvendte tab-funktioner til binær klassifikation er kryds-entropi-tab, som fungerer godt med modeller, der returnerer sandsynligheder.
Udledning af kryds-entropi-tab
For at forstå kryds-entropi-tab starter vi med maksimal sandsynlighedsprincippet. 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 faktiske label y kan enten være 0 eller 1.
En god model bør maksimere sandsynligheden for korrekt at forudsige alle træningseksempler. Det betyder, at vi ønsker at maksimere sandsynlighedsfunktionen, som repræsenterer sandsynligheden for at observere de givne data under modellens forudsigelser.
For et enkelt træningseksempel, under antagelse af uafhængighed, kan sandsynligheden skrives som:
P(y∣x)=y^y(1−y^)1−yDette udtryk betyder ganske enkelt:
- Hvis y=1, så er P(y∣x)=y^, hvilket betyder, at vi ønsker at maksimere y^ (sandsynligheden tildelt klasse 1);
- Hvis y=0, så er P(y∣x)=1−y^, hvilket betyder, at vi ønsker at maksimere 1−y^ (sandsynligheden tildelt klasse 0).
P(y∣x) betyder sandsynligheden for at observere den faktiske klasselabel y givet inputtene x.
For at gøre optimering lettere, anvendes log-likelihood i stedet for selve likelihood (da logaritmer omdanner produkter til summer, hvilket gør differentiering enklere):
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Da målet er maksimering, defineres tabfunktionen som den negative log-likelihood, som vi ønsker at minimere:
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, straffes forkerte forudsigelser kraftigt, hvilket tilskynder 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
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
Tabt Funktion
Stryg for at vise menuen
Ved træning af et neuralt netværk har vi brug for en metode til at måle, hvor godt vores model præsterer. Dette gøres ved hjælp af en tab-funktion, som kvantificerer forskellen mellem de forudsagte output og de faktiske målværdier. Målet med træningen er at minimere dette tab, så vores forudsigelser kommer så tæt på de faktiske værdier som muligt.
En af de mest anvendte tab-funktioner til binær klassifikation er kryds-entropi-tab, som fungerer godt med modeller, der returnerer sandsynligheder.
Udledning af kryds-entropi-tab
For at forstå kryds-entropi-tab starter vi med maksimal sandsynlighedsprincippet. 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 faktiske label y kan enten være 0 eller 1.
En god model bør maksimere sandsynligheden for korrekt at forudsige alle træningseksempler. Det betyder, at vi ønsker at maksimere sandsynlighedsfunktionen, som repræsenterer sandsynligheden for at observere de givne data under modellens forudsigelser.
For et enkelt træningseksempel, under antagelse af uafhængighed, kan sandsynligheden skrives som:
P(y∣x)=y^y(1−y^)1−yDette udtryk betyder ganske enkelt:
- Hvis y=1, så er P(y∣x)=y^, hvilket betyder, at vi ønsker at maksimere y^ (sandsynligheden tildelt klasse 1);
- Hvis y=0, så er P(y∣x)=1−y^, hvilket betyder, at vi ønsker at maksimere 1−y^ (sandsynligheden tildelt klasse 0).
P(y∣x) betyder sandsynligheden for at observere den faktiske klasselabel y givet inputtene x.
For at gøre optimering lettere, anvendes log-likelihood i stedet for selve likelihood (da logaritmer omdanner produkter til summer, hvilket gør differentiering enklere):
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Da målet er maksimering, defineres tabfunktionen som den negative log-likelihood, som vi ønsker at minimere:
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, straffes forkerte forudsigelser kraftigt, hvilket tilskynder 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!