Verliesfunctie
Bij het trainen van een neuraal netwerk is het noodzakelijk om te meten hoe goed ons model presteert. Dit gebeurt met behulp van een verliesfunctie, die het verschil kwantificeert tussen de voorspelde uitkomsten en de werkelijke doelwaarden. Het doel van de training is om dit verlies te minimaliseren, zodat onze voorspellingen zo dicht mogelijk bij de werkelijke waarden liggen.
Een van de meest gebruikte verliesfuncties voor binaire classificatie is het cross-entropy verlies, dat goed werkt bij modellen die waarschijnlijkheden als output geven.
Afleiding van Cross-Entropy Verlies
Om het cross-entropy verlies te begrijpen, beginnen we met het maximum likelihood principe. In een binaire classificatie-probleem is het doel om een model te trainen dat de kans y^ schat dat een gegeven invoer tot klasse 1 behoort. Het werkelijke label y kan 0 of 1 zijn.
Een goed model moet de kans maximaliseren om alle trainingsvoorbeelden correct te voorspellen. Dit betekent dat we de likelihoodfunctie willen maximaliseren, die de kans weergeeft om de waargenomen data te zien gegeven de voorspellingen van het model.
Voor een enkel trainingsvoorbeeld, uitgaande van onafhankelijkheid, kan de likelihood als volgt worden geschreven:
P(y∣x)=y^y(1−y^)1−yDeze uitdrukking betekent eenvoudigweg:
- Als y=1, dan P(y∣x)=y^, wat betekent dat we y^ (de kans toegekend aan klasse 1) willen maximaliseren;
- Als y=0, dan P(y∣x)=1−y^, wat betekent dat we 1−y^ (de kans toegekend aan klasse 0) willen maximaliseren.
P(y∣x) betekent de kans om het werkelijke klasse-label y te observeren gegeven de invoerwaarden x.
Om optimalisatie te vereenvoudigen, nemen we de log-likelihood in plaats van de likelihood zelf (omdat logaritmen producten omzetten in sommen, wat differentiëren eenvoudiger maakt):
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Aangezien het doel maximalisatie is, definiëren we de verliesfunctie als de negatieve log-likelihood, die we willen minimaliseren:
L=−(ylog(y^)+(1−y)log(1−y^))Dit is de binaire cross-entropy verliesfunctie, veelgebruikt bij classificatieproblemen.
Aangenomen dat de variabele output
y^ voorstelt voor een specifiek trainingsvoorbeeld, en de variabele target
y voorstelt voor dit trainingsvoorbeeld, kan deze verliesfunctie als volgt worden geïmplementeerd:
import numpy as np
loss = -(target * np.log(output) + (1 - target) * np.log(1 - output))
Waarom deze formule?
Cross-entropy verlies heeft een duidelijke intuïtieve interpretatie:
- Als y=1, vereenvoudigt het verlies tot −log(y^), wat betekent dat het verlies laag is wanneer y^ dicht bij 1 ligt en zeer hoog wanneer y^ dicht bij 0 ligt;
- Als y=0, vereenvoudigt het verlies tot −log(1−y^), wat betekent dat het verlies laag is wanneer y^ dicht bij 0 ligt en zeer hoog wanneer het dicht bij 1 ligt.
Aangezien logaritmen negatief groot worden naarmate hun invoer nul nadert, worden onjuiste voorspellingen zwaar bestraft, wat het model aanmoedigt om zelfverzekerde, correcte voorspellingen te doen.
Als meerdere voorbeelden worden doorgegeven tijdens de forward propagatie, wordt het totale verlies berekend als het gemiddelde verlies over alle voorbeelden:
L=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))waarbij N het aantal trainingsvoorbeelden is.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 4
Verliesfunctie
Veeg om het menu te tonen
Bij het trainen van een neuraal netwerk is het noodzakelijk om te meten hoe goed ons model presteert. Dit gebeurt met behulp van een verliesfunctie, die het verschil kwantificeert tussen de voorspelde uitkomsten en de werkelijke doelwaarden. Het doel van de training is om dit verlies te minimaliseren, zodat onze voorspellingen zo dicht mogelijk bij de werkelijke waarden liggen.
Een van de meest gebruikte verliesfuncties voor binaire classificatie is het cross-entropy verlies, dat goed werkt bij modellen die waarschijnlijkheden als output geven.
Afleiding van Cross-Entropy Verlies
Om het cross-entropy verlies te begrijpen, beginnen we met het maximum likelihood principe. In een binaire classificatie-probleem is het doel om een model te trainen dat de kans y^ schat dat een gegeven invoer tot klasse 1 behoort. Het werkelijke label y kan 0 of 1 zijn.
Een goed model moet de kans maximaliseren om alle trainingsvoorbeelden correct te voorspellen. Dit betekent dat we de likelihoodfunctie willen maximaliseren, die de kans weergeeft om de waargenomen data te zien gegeven de voorspellingen van het model.
Voor een enkel trainingsvoorbeeld, uitgaande van onafhankelijkheid, kan de likelihood als volgt worden geschreven:
P(y∣x)=y^y(1−y^)1−yDeze uitdrukking betekent eenvoudigweg:
- Als y=1, dan P(y∣x)=y^, wat betekent dat we y^ (de kans toegekend aan klasse 1) willen maximaliseren;
- Als y=0, dan P(y∣x)=1−y^, wat betekent dat we 1−y^ (de kans toegekend aan klasse 0) willen maximaliseren.
P(y∣x) betekent de kans om het werkelijke klasse-label y te observeren gegeven de invoerwaarden x.
Om optimalisatie te vereenvoudigen, nemen we de log-likelihood in plaats van de likelihood zelf (omdat logaritmen producten omzetten in sommen, wat differentiëren eenvoudiger maakt):
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Aangezien het doel maximalisatie is, definiëren we de verliesfunctie als de negatieve log-likelihood, die we willen minimaliseren:
L=−(ylog(y^)+(1−y)log(1−y^))Dit is de binaire cross-entropy verliesfunctie, veelgebruikt bij classificatieproblemen.
Aangenomen dat de variabele output
y^ voorstelt voor een specifiek trainingsvoorbeeld, en de variabele target
y voorstelt voor dit trainingsvoorbeeld, kan deze verliesfunctie als volgt worden geïmplementeerd:
import numpy as np
loss = -(target * np.log(output) + (1 - target) * np.log(1 - output))
Waarom deze formule?
Cross-entropy verlies heeft een duidelijke intuïtieve interpretatie:
- Als y=1, vereenvoudigt het verlies tot −log(y^), wat betekent dat het verlies laag is wanneer y^ dicht bij 1 ligt en zeer hoog wanneer y^ dicht bij 0 ligt;
- Als y=0, vereenvoudigt het verlies tot −log(1−y^), wat betekent dat het verlies laag is wanneer y^ dicht bij 0 ligt en zeer hoog wanneer het dicht bij 1 ligt.
Aangezien logaritmen negatief groot worden naarmate hun invoer nul nadert, worden onjuiste voorspellingen zwaar bestraft, wat het model aanmoedigt om zelfverzekerde, correcte voorspellingen te doen.
Als meerdere voorbeelden worden doorgegeven tijdens de forward propagatie, wordt het totale verlies berekend als het gemiddelde verlies over alle voorbeelden:
L=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))waarbij N het aantal trainingsvoorbeelden is.
Bedankt voor je feedback!