Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Verliesfunctie | Neuraal Netwerk Vanaf Nul
Introductie tot Neurale Netwerken

bookVerliesfunctie

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^\hat{y} schat dat een gegeven invoer tot klasse 1 behoort. Het werkelijke label yy 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(yx)=y^y(1y^)1yP(y|x) = \hat{y}^y(1 - \hat{y})^{1-y}

Deze uitdrukking betekent eenvoudigweg:

  • Als y=1y = 1, dan P(yx)=y^P(y|x) = \hat{y}, wat betekent dat we y^\hat{y} (de kans toegekend aan klasse 1) willen maximaliseren;
  • Als y=0y = 0, dan P(yx)=1y^P(y|x) = 1 - \hat{y}, wat betekent dat we 1y^1 - \hat{y} (de kans toegekend aan klasse 0) willen maximaliseren.
Note
Opmerking

P(yx)P(y|x) betekent de kans om het werkelijke klasse-label yy te observeren gegeven de invoerwaarden xx.

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(yx)=ylog(y^)+(1y)log(1y^)\log P(y|x) = y\log(\hat{y}) + (1-y)\log(1-\hat{y})

Aangezien het doel maximalisatie is, definiëren we de verliesfunctie als de negatieve log-likelihood, die we willen minimaliseren:

L=(ylog(y^)+(1y)log(1y^))L = -(y\log(\hat{y}) + (1-y)\log(1-\hat{y}))

Dit is de binaire cross-entropy verliesfunctie, veelgebruikt bij classificatieproblemen.

Aangenomen dat de variabele output y^\hat{y} voorstelt voor een specifiek trainingsvoorbeeld, en de variabele target yy 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=1y = 1, vereenvoudigt het verlies tot log(y^)-\log(\hat{y}), wat betekent dat het verlies laag is wanneer y^\hat{y} dicht bij 1 ligt en zeer hoog wanneer y^\hat{y} dicht bij 0 ligt;
  • Als y=0y = 0, vereenvoudigt het verlies tot log(1y^)-\log(1 - \hat{y}), wat betekent dat het verlies laag is wanneer y^\hat{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=1Ni=1N(yilog(y^i)+(1yi)log(1y^i))L = -\frac1N \sum_{i=1}^N (y_i\log(\hat{y}_i) + (1-y_i)\log(1-\hat{y}_i))

waarbij NN het aantal trainingsvoorbeelden is.

question mark

Welke van de volgende omschrijvingen geeft het beste het doel van de cross-entropy verliesfunctie weer bij binaire classificatie?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 6

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Awesome!

Completion rate improved to 4

bookVerliesfunctie

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^\hat{y} schat dat een gegeven invoer tot klasse 1 behoort. Het werkelijke label yy 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(yx)=y^y(1y^)1yP(y|x) = \hat{y}^y(1 - \hat{y})^{1-y}

Deze uitdrukking betekent eenvoudigweg:

  • Als y=1y = 1, dan P(yx)=y^P(y|x) = \hat{y}, wat betekent dat we y^\hat{y} (de kans toegekend aan klasse 1) willen maximaliseren;
  • Als y=0y = 0, dan P(yx)=1y^P(y|x) = 1 - \hat{y}, wat betekent dat we 1y^1 - \hat{y} (de kans toegekend aan klasse 0) willen maximaliseren.
Note
Opmerking

P(yx)P(y|x) betekent de kans om het werkelijke klasse-label yy te observeren gegeven de invoerwaarden xx.

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(yx)=ylog(y^)+(1y)log(1y^)\log P(y|x) = y\log(\hat{y}) + (1-y)\log(1-\hat{y})

Aangezien het doel maximalisatie is, definiëren we de verliesfunctie als de negatieve log-likelihood, die we willen minimaliseren:

L=(ylog(y^)+(1y)log(1y^))L = -(y\log(\hat{y}) + (1-y)\log(1-\hat{y}))

Dit is de binaire cross-entropy verliesfunctie, veelgebruikt bij classificatieproblemen.

Aangenomen dat de variabele output y^\hat{y} voorstelt voor een specifiek trainingsvoorbeeld, en de variabele target yy 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=1y = 1, vereenvoudigt het verlies tot log(y^)-\log(\hat{y}), wat betekent dat het verlies laag is wanneer y^\hat{y} dicht bij 1 ligt en zeer hoog wanneer y^\hat{y} dicht bij 0 ligt;
  • Als y=0y = 0, vereenvoudigt het verlies tot log(1y^)-\log(1 - \hat{y}), wat betekent dat het verlies laag is wanneer y^\hat{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=1Ni=1N(yilog(y^i)+(1yi)log(1y^i))L = -\frac1N \sum_{i=1}^N (y_i\log(\hat{y}_i) + (1-y_i)\log(1-\hat{y}_i))

waarbij NN het aantal trainingsvoorbeelden is.

question mark

Welke van de volgende omschrijvingen geeft het beste het doel van de cross-entropy verliesfunctie weer bij binaire classificatie?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 6
some-alt