Een loss function is de score die een AI-model tijdens de training vertelt hoe fout zijn antwoorden zijn. Het model voorspelt iets, de loss function vergelijkt dat met het goede antwoord en maakt van het verschil één getal, en de training past het model aan om dat getal te verlagen. Wat je als fout meetelt, bepaalt wat het model leert, bijvoorbeeld of één grote fout zwaarder weegt dan wat kleine.
Hoe werkt het?
Het leerboek Deep Learning van Goodfellow, Bengio en Courville gebruikt objective function, criterion, cost function, loss function en error function als namen voor hetzelfde: de functie die de training minimaliseert. De Machine Learning Crash Course van Google omschrijft loss als een getal voor hoe fout de voorspellingen van een model zijn, de afstand tussen de voorspellingen en de werkelijke labels. Tijdens de training wordt de loss berekend over een batch voorbeelden, backpropagation rekent uit hoe elk gewicht die beïnvloedt, en gradient descent verschuift de gewichten om hem te verlagen.
De loss staat vaak in voor wat je eigenlijk wilt meten. Hoofdstuk 8 van het leerboek noemt dat een surrogate loss: het aantal verkeerd ingedeelde voorbeelden valt niet efficiënt met gradiënten te minimaliseren, dus traint een classifier meestal op de negatieve log-likelihood van de juiste klasse.
Welke loss functions zijn gangbaar?
- Mean squared error (MSE) en mean absolute error (MAE), voor het voorspellen van getallen zoals een prijs of een levertijd. MSE kwadrateert elke fout, dus bestraft uitschieters zwaarder dan MAE. Hoofdstuk 6 van het leerboek laat zien wat dat betekent: met genoeg data voorspelt een model dat op MSE is getraind per invoer het gemiddelde, en een model dat op MAE is getraind de mediaan.
- Cross-entropy, voor het kiezen tussen klassen, zoals spam of geen spam, of het volgende token in een tekst. Volgens het leerboek worden de meeste moderne neurale netwerken getraind met maximum likelihood, wat neerkomt op het minimaliseren van de cross-entropy tussen de trainingsdata en de voorspellingen van het model. Kaplan e.a. (OpenAI, 2020) trainden taalmodellen op deze loss, gemiddeld over een context van 1.024 tokens, en gebruikten hem als hun belangrijkste prestatiemaat (schalingswetten).
- Contrastive loss, voor embeddings: die trekt de vectoren van bij elkaar horende paren naar elkaar toe en duwt de rest weg.
PyTorch levert deze als kant-en-klare klassen, onder meer nn.MSELoss, nn.L1Loss (MAE), nn.CrossEntropyLoss en nn.BCEWithLogitsLoss, die een sigmoid combineert met binary cross-entropy voor ja/nee-labels.
Waar gaat het mis?
- De loss op de trainingsdata blijft dalen terwijl het model slechter wordt op nieuwe data: overfitting. De crash course van Google laat dat zien als twee losscurves die uit elkaar lopen: na een tijd vlakt de loss op de trainingsset af of daalt hij verder, en stijgt de loss op de validatieset.
- De loss stijgt in plaats van te dalen. Is de learning rate te groot, dan kan gradient descent de trainingsfout vergroten (Deep Learning, hoofdstuk 11).
- De gradiënten worden te klein. Het leerboek merkt op dat MSE en MAE bij training met gradiënten vaak slechte resultaten geven als uitvoereenheden verzadigen, een van de redenen dat cross-entropy populairder is.
Voorbeeld
Stel: een model schat de verkoopprijs van drie huizen en zit er €10.000, €10.000 en €40.000 naast. De mean absolute error is €20.000. De mean squared error is (10.000² + 10.000² + 40.000²) / 3 = 600.000.000, in euro's in het kwadraat; de wortel daarvan, de RMSE, is ongeveer €24.500. De ene grote misser weegt in de MSE zwaarder mee, dus een model dat daarop traint, doet meer moeite om grote missers te vermijden. Bij een taalmodel werkt het net zo met kansen: geeft het model het juiste volgende token een kans van 10%, dan is de cross-entropy loss voor dat token −ln 0,1 ≈ 2,3; bij 90% is hij ongeveer 0,1.
Bronnen
- Goodfellow, Bengio and Courville: Deep Learning, chapter 6, Deep Feedforward Networks (2016)Web
- Google for Developers: Machine Learning Crash Course, Linear regression: LossWeb
- Google for Developers: Machine Learning Crash Course, OverfittingWeb
- PyTorch: torch.nn, Loss FunctionsWeb
- Kaplan et al. (OpenAI): Scaling Laws for Neural Language Models (2020)arXiv
