Verlies en nauwkeurigheid interpreteren voor een machine learning-model

Als ik mijn neurale netwerk heb getraind met Theano of Tensorflow, rapporteren ze een variabele met de naam “verlies” per tijdperk.

Hoe moet ik deze variabele interpreteren? Hoger verlies is beter of slechter, of wat betekent het voor de uiteindelijke prestatie (nauwkeurigheid) van mijn neurale netwerk?


Antwoord 1, autoriteit 100%

Hoe lager het verlies, hoe beter een model (tenzij het model te veel is aangepast aan de trainingsgegevens). Het verlies wordt berekend op basis van trainingen validatieen de interperatie ervan is hoe goed het model het doet voor deze twee sets. In tegenstelling tot nauwkeurigheid is verlies geen percentage. Het is een optelling van de fouten die voor elk voorbeeld in trainings- of validatiesets zijn gemaakt.

In het geval van neurale netwerken is het verlies meestal negatieve log-waarschijnlijkheiden restsom van kwadratenvoor respectievelijk classificatie en regressie. Dan is het belangrijkste doel van een leermodel natuurlijk om de waarde van de verliesfunctie te verminderen (minimaliseren) met betrekking tot de parameters van het model door de gewichtsvectorwaarden te wijzigen via verschillende optimalisatiemethoden, zoals backpropagation in neurale netwerken.

Verlieswaarde geeft aan hoe goed of slecht een bepaald model zich gedraagt ​​na elke iteratie van optimalisatie. In het ideale geval zou je de vermindering van het verlies verwachten na elke of meerdere iteratie(s).

De nauwkeurigheidvan een model wordt meestal bepaald nadat de modelparameters zijn geleerd en vastgesteld en er vindt geen leerproces plaats. Vervolgens worden de testmonsters aan het model toegevoerd en wordt het aantal fouten (verlies van nul) dat het model maakt, geregistreerd, na vergelijking met de echte doelen. Vervolgens wordt het percentage misclassificatie berekend.

Als het aantal testmonsters bijvoorbeeld 1000 is en het model 952 daarvan correct classificeert, is de nauwkeurigheid van het model 95,2%.

voer hier de afbeeldingsbeschrijving in

Er zijn ook enkele subtiliteiten bij het verminderen van de verlieswaarde. U kunt bijvoorbeeld het probleem tegenkomen van overfittingwaarbij het model de trainingsvoorbeelden en wordt een beetje ineffectief voor de testset. Overaanpassing komt ook voor in gevallen waarin u geen regularisatietoepast, u heeft een zeer complex model (het aantal vrije parameters Wis groot) of het aantal datapunten Nis erg laag.


Antwoord 2, autoriteit 8%

Het zijn twee verschillende statistieken om de prestaties van uw model te evalueren, die gewoonlijk in verschillende fasen worden gebruikt.

Verlies wordt vaak gebruikt in het trainingsproces om de ‘beste’ parameterwaarden voor uw model te vinden (bijvoorbeeld gewichten in neuraal netwerk). Het is wat je probeert te optimaliseren in de training door gewichten bij te werken.

Nauwkeurigheid is meer vanuit een toegepast perspectief. Zodra u de bovenstaande geoptimaliseerde parameters heeft gevonden, gebruikt u deze statistieken om te evalueren hoe nauwkeurig de voorspelling van uw model is in vergelijking met de werkelijke gegevens.

Laten we een voorbeeld van speelgoedclassificatie gebruiken. U wilt het geslacht voorspellen op basis van iemands gewicht en lengte. Je hebt 3 gegevens, deze zijn als volgt:(0 staat voor mannelijk, 1 staat voor vrouwelijk)

y1 = 0, x1_w = 50kg, x2_h = 160cm;

y2 = 0, x2_w = 60kg, x2_h = 170cm;

y3 = 1, x3_w = 55 kg, x3_h = 175 cm;

U gebruikt een eenvoudig logistisch regressiemodel dat y = 1/(1+exp-(b1*x_w+b2*x_h)) is

Hoe vind je b1 en b2? u definieert eerst een verlies en gebruikt de optimalisatiemethode om het verlies op een iteratieve manier te minimaliseren door b1 en b2 bij te werken.

In ons voorbeeld kan een typisch verlies voor dit binaire classificatieprobleem zijn:
(er moet een minteken worden toegevoegd voor het sommatieteken)

We weten niet wat b1 en b2 zouden moeten zijn. Laten we een willekeurige gok doen, zeg b1 = 0,1 en b2 = -0,03. Wat is dan ons verlies nu?

dus het verlies is

Dan zal je lerende algoritme (bijv. gradiëntafdaling) een manier vinden om b1 en b2 bij te werken om het verlies te verminderen.

Wat als b1=0.1 en b2=-0.03 de laatste b1 en b2 zijn (output van gradiëntdaling), wat is nu de nauwkeurigheid?

Laten we aannemen dat als y_hat >= 0,5, we besluiten dat onze voorspelling vrouwelijk is(1). anders zou het 0 zijn. Daarom voorspelt ons algoritme y1 = 1, y2 = 1 en y3 = 1. Wat is onze nauwkeurigheid? We maken een verkeerde voorspelling op y1 en y2 en maken een juiste op y3. Dus nu is onze nauwkeurigheid 1/3 = 33,33%

PS: In Amir’s antwoordzou back-propagatie een optimalisatiemethode zijn in NN. Ik denk dat het zou worden behandeld als een manier om gradiënt voor gewichten in NN te vinden. Veelgebruikte optimalisatiemethoden in NN zijn GradientDescent en Adam.


Antwoord 3, autoriteit 2%

Ter verduidelijking van de trainings-/validatie-/testdatasets:
De trainingsset wordt gebruikt om de initiële training van het model uit te voeren, waarbij de gewichten van het neurale netwerk worden geïnitialiseerd.

De validatieset wordt gebruikt nadat het neurale netwerk is getraind. Het wordt gebruikt om de hyperparameters van het netwerk af te stemmen en om te vergelijken hoe wijzigingen daarin de voorspellende nauwkeurigheid van het model beïnvloeden. Terwijl de trainingsset kan worden beschouwd als gebruikt om de poortgewichten van het neurale netwerk te bouwen, maakt de validatieset het mogelijk om de parameters of architectuur van het neurale netwerkmodel nauwkeurig af te stemmen. Het is handig omdat het een herhaalbare vergelijking van deze verschillende parameters/architecturen met dezelfde gegevens- en netwerkgewichten mogelijk maakt, om te zien hoe parameter-/architectuurveranderingen de voorspellende kracht van het netwerk beïnvloeden.

Vervolgens wordt de testset alleen gebruikt om de voorspellende nauwkeurigheid van het getrainde neurale netwerk te testen op voorheen ongeziene gegevens, na training en parameter-/architectuurselectie met de trainings- en validatiegegevenssets.

Other episodes