Sådan forstås Gradient Descent, den mest populære ML-algoritme

Gradient Descent er en af ​​de mest populære og udbredte algoritmer til træning af maskinlæringsmodeller.

Maskinindlæringsmodeller har typisk parametre (vægte og forspændinger) og en omkostningsfunktion til at evaluere, hvor godt et bestemt sæt parametre er. Mange maskinindlæringsproblemer reduceres til at finde et sæt vægte til modellen, der minimerer omkostningsfunktionen.

For eksempel, hvis forudsigelsen er p , målet er t , og vores fejlmåling er kvadratisk fejl, så er omkostningsfunktionen J (W) = (p - t) ² .

Bemærk, at den forudsagte værdi p afhænger af indsatsen X samt maskinindlæring model og (løbende) værdier af parametrene W . Under træning er vores mål at finde et sæt værdier til W, således at (p - t) ² er lille. Dette betyder, at vores forudsigelse p vil være tæt på målet t .

Gradientnedstigning er en iterativ metode. Vi starter med nogle sæt værdier for vores modelparametre (vægte og forspændinger) og forbedrer dem langsomt.

For at forbedre et givet sæt vægte forsøger vi at få en fornemmelse af værdien af ​​omkostningsfunktionen for vægte svarende til de aktuelle vægte (ved at beregne gradienten). Derefter bevæger vi os i den retning, der reducerer omkostningsfunktionen.

Ved at gentage dette trin tusinder af gange minimerer vi løbende vores omkostningsfunktion.

Pseudokode til gradientafstamning

Gradient nedstigning bruges til at minimere en omkostningsfunktion J (W) af parametre en model parametre W .

Gradienten (eller afledt) fortæller os hældningen eller hældningen af ​​omkostningsfunktionen. Derfor bevæger vi os i den modsatte retning af gradienten for at minimere omkostningsfunktionen.

  1. Initialiser vægtene W tilfældigt.
  2. Beregn gradienterne G for parametre for omkostningsfunktion. Dette gøres ved hjælp af delvis differentiering: G = ∂J (W) / ∂W. Værdien af ​​gradienten G afhænger af input, de aktuelle værdier for modelparametrene og omkostningsfunktionen. Det kan være nødvendigt at revidere emnet differentiering, hvis du beregner gradienten manuelt.
  3. Opdater vægtene med en mængde, der er proportional med G, dvs. W = W - ηG
  4. Gentag indtil omkostningerne J ( w ) holder op med at reducere, eller nogle andre foruddefinerede opsigelseskriterier er opfyldt.

I trin 3, η er den læring sats , der bestemmer størrelsen af de skridt, vi tager for at nå et minimum. Vi skal være meget forsigtige med denne parameter. Høje værdier af η kan overskride minimumet, og meget lave værdier når minimum meget langsomt.

Et populært valg for opsigelseskriterierne er, at prisen J ( w ) holder op med at reducere i et valideringsdatasæt.

Intuition til Gradient Descent

Forestil dig, at du har bind for øjnenei ujævnt terræn, og dit mål er at nå den laveste højde.

En af de enkleste strategier, du kan bruge, er at føle jorden i alle retninger og tage et skridt i den retning, hvor jorden falder hurtigst.

Hvis du fortsætter med at gentage denne proces, ender du muligvis ved søen, eller endnu bedre, et eller andet sted i den enorme dal.

Det ru terræn er analogt med omkostningsfunktionen, og minimering af omkostningsfunktionen er analog med at forsøge at nå lavere højder.

Du er blindfoldet, da vi ikke har den luksus at evaluere (eller 'se') værdien af ​​funktionen for alle mulige sæt parametre.

At føle terrænets hældning er analog med beregning af gradienten, og at tage et skridt er analog med en iteration af opdatering til parametrene.

Forresten - som en lille side - er denne tutorial en del af det gratis Data Science-kursus og det gratis Machine Learning-kursus på Commonlounge. Kurserne inkluderer mange praktiske opgaver og projekter. Hvis du er interesseret i at lære Data Science / ML, kan du absolut anbefale at tjekke det ud.

Varianter af Gradient Descent

Der er flere varianter af gradientafstamning, afhængigt af hvor meget af data der bruges til at beregne gradienten.

Hovedårsagen til disse variationer er beregningseffektivitet. Et datasæt kan have millioner af datapunkter, og det kan være beregningsmæssigt dyrt at beregne gradienten over hele datasættet.

  • Batchgradientnedstigning beregner gradienten af ​​omkostningsfunktionen wrt til parameter W for hele træningsdata . Da vi skal beregne gradienterne for hele datasættet for at udføre en parameteropdatering, kan nedgang i batchgradient være meget langsom.
  • Stokastisk gradientnedstigning (SGD) beregner gradienten for hver opdatering ved hjælp af et enkelt træningsdatapunkt x_i (tilfældigt valgt). Tanken er, at den gradient, der beregnes på denne måde, er en stokastisk tilnærmelse til den gradient, der beregnes ved hjælp af hele træningsdataene. Hver opdatering er nu meget hurtigere at beregne end i batchgradientnedstigning, og over mange opdateringer går vi i samme generelle retning.
  • I mini-batch gradient nedstigning beregner vi gradienten for hver lille mini-batch træningsdata. Det vil sige, at vi først opdeler træningsdataene i små batches (for eksempel M- prøver pr. Batch). Vi udfører en opdatering pr. Mini-batch. M er normalt i området 30-500 afhængigt af problemet. Normalt bruges mini-batch GD, fordi computerinfrastruktur - kompilatorer, CPU'er, GPU'er - ofte er optimeret til at udføre vektortilføjelser og vektormultiplikationer.

Af disse er SGD og mini-batch GD mest populære.

I et typisk scenarie foretager vi flere overskridelser af træningsdataene inden opsigelseskriterierne er opfyldt. Hvert pass kaldes en epoke . Bemærk også, at da opdateringstrinnet er meget mere beregningseffektivt i SGD og mini-batch GD, udfører vi typisk 100'-1000'ers opdateringer imellem kontrol af opsigelseskriterier, der er opfyldt.

Valg af læringsrate

Normalt vælges værdien af ​​læringshastigheden manuelt. Vi starter normalt med en lille værdi som 0,1, 0,01 eller 0,001 og tilpasser den baseret på, om omkostningsfunktionen reduceres meget langsomt (øger læringshastigheden) eller eksploderer / er uregelmæssig (mindsk læringshastigheden).

Selvom manuel valg af læringshastighed stadig er den mest almindelige praksis, er flere metoder som Adam optimizer, AdaGrad og RMSProp blevet foreslået til automatisk at vælge en passende læringshastighed.

Medforfatter af Keshav Dhandhania og Savan Visalpara.

Oprindeligt udgivet som en del af det gratis maskinlæringskursus og gratis datalogikursus på www.commonlounge.com.