Verliesfunctie
Bij het trainen van een neuraal netwerk is het noodzakelijk om te meten hoe nauwkeurig het model de juiste resultaten voorspelt. Dit gebeurt met behulp van een verliesfunctie, die het verschil berekent tussen de voorspellingen van het model en de werkelijke doelwaarden. Het doel van de training is om dit verlies te minimaliseren, zodat de voorspellingen zo dicht mogelijk bij de werkelijke uitkomsten liggen.
Voor binaire classificatie-taken is een van de meest gebruikte verliesfuncties de cross-entropy loss, die bijzonder effectief is voor modellen die waarschijnlijkheden als output geven.
Afleiding van Cross-Entropy Loss
Om de cross-entropy loss te begrijpen, wordt het maximum likelihood-principe gehanteerd. Bij een binaire classificatie is het doel om een model te trainen dat de waarschijnlijkheid y^ schat dat een gegeven invoer tot klasse 1 behoort. Het ware label y kan twee waarden aannemen: 0 of 1.
Een effectief model moet hoge waarschijnlijkheden toekennen aan correcte voorspellingen. Dit idee wordt geformaliseerd via de likelihoodfunctie, die de kans weergeeft om de werkelijke data te observeren gegeven de voorspellingen van het model.
Voor een enkele trainingsvoorbeeld, uitgaande van onafhankelijkheid, kan de likelihood als volgt worden uitgedrukt:
P(y∣x)=y^y(1−y^)1−yDeze uitdrukking betekent het volgende:
- Als y=1, dan P(y∣x)=y^ — het model moet een hoge waarschijnlijkheid toekennen aan klasse 1;
- Als y=0, dan P(y∣x)=1−y^ — het model moet een hoge waarschijnlijkheid toekennen aan klasse 0.
In beide gevallen is het doel om de kans te maximaliseren die het model aan de juiste klasse toekent.
P(y∣x) betekent de kans om het werkelijke klasse-label y te observeren gegeven de invoerwaarden x.
Om optimalisatie te vereenvoudigen wordt de log-likelihood gebruikt in plaats van de likelihoodfunctie, omdat het nemen van de logaritme producten omzet in sommen, waardoor differentiëren eenvoudiger wordt:
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Omdat het trainen gericht is op het maximaliseren van de log-likelihood, wordt de verliesfunctie gedefinieerd als de negatieve waarde hiervan zodat het optimalisatieproces een minimalisatieprobleem wordt:
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 bepaald trainingsvoorbeeld, en de variabele target y voor dit trainingsvoorbeeld voorstelt, 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 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 nauwkeurig het model de juiste resultaten voorspelt. Dit gebeurt met behulp van een verliesfunctie, die het verschil berekent tussen de voorspellingen van het model en de werkelijke doelwaarden. Het doel van de training is om dit verlies te minimaliseren, zodat de voorspellingen zo dicht mogelijk bij de werkelijke uitkomsten liggen.
Voor binaire classificatie-taken is een van de meest gebruikte verliesfuncties de cross-entropy loss, die bijzonder effectief is voor modellen die waarschijnlijkheden als output geven.
Afleiding van Cross-Entropy Loss
Om de cross-entropy loss te begrijpen, wordt het maximum likelihood-principe gehanteerd. Bij een binaire classificatie is het doel om een model te trainen dat de waarschijnlijkheid y^ schat dat een gegeven invoer tot klasse 1 behoort. Het ware label y kan twee waarden aannemen: 0 of 1.
Een effectief model moet hoge waarschijnlijkheden toekennen aan correcte voorspellingen. Dit idee wordt geformaliseerd via de likelihoodfunctie, die de kans weergeeft om de werkelijke data te observeren gegeven de voorspellingen van het model.
Voor een enkele trainingsvoorbeeld, uitgaande van onafhankelijkheid, kan de likelihood als volgt worden uitgedrukt:
P(y∣x)=y^y(1−y^)1−yDeze uitdrukking betekent het volgende:
- Als y=1, dan P(y∣x)=y^ — het model moet een hoge waarschijnlijkheid toekennen aan klasse 1;
- Als y=0, dan P(y∣x)=1−y^ — het model moet een hoge waarschijnlijkheid toekennen aan klasse 0.
In beide gevallen is het doel om de kans te maximaliseren die het model aan de juiste klasse toekent.
P(y∣x) betekent de kans om het werkelijke klasse-label y te observeren gegeven de invoerwaarden x.
Om optimalisatie te vereenvoudigen wordt de log-likelihood gebruikt in plaats van de likelihoodfunctie, omdat het nemen van de logaritme producten omzet in sommen, waardoor differentiëren eenvoudiger wordt:
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Omdat het trainen gericht is op het maximaliseren van de log-likelihood, wordt de verliesfunctie gedefinieerd als de negatieve waarde hiervan zodat het optimalisatieproces een minimalisatieprobleem wordt:
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 bepaald trainingsvoorbeeld, en de variabele target y voor dit trainingsvoorbeeld voorstelt, 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 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!