Kaip suprasti „Gradient Descent“ - populiariausią ML algoritmą

„Gradient Descent“ yra vienas populiariausių ir plačiausiai naudojamų mašininio mokymosi modelių mokymo algoritmų.

Mašininio mokymosi modeliai paprastai turi parametrus (svorį ir poslinkius) ir išlaidų funkciją, kad būtų galima įvertinti, ar tam tikras parametrų rinkinys yra geras. Daugelis mašininio mokymosi problemų sumažina modelio svorių rinkinį, kuris sumažina sąnaudų funkciją.

Pvz., Jei prognozė yra p , tikslas yra t , o mūsų klaidų metrika yra kvadratinė klaida, tada sąnaudų funkcija J (W) = (p - t) ² .

Atkreipkite dėmesį, kad numatoma reikšmė p priklauso nuo įvesties X , taip pat nuo mašininio mokymosi modelio ir (dabartinių) parametrų W reikšmių . Treniruotės metu mūsų tikslas yra rasti W reikšmių rinkinį, kad (p - t) ² būtų mažas. Tai reiškia, kad mūsų prognozė p bus artima tikslui t .

Gradiento nusileidimas yra iteracinis metodas. Pradedame nuo tam tikrų modelio parametrų (svorių ir poslinkių) verčių rinkinių ir juos lėtai tobuliname.

Norėdami pagerinti tam tikrą svorių rinkinį, mes stengiamės suvokti svorių, panašių į dabartinius svorius, sąnaudų funkcijos vertę (apskaičiuojant gradientą). Tada mes judame ta kryptimi, kuri sumažina sąnaudų funkciją.

Kartodami šį žingsnį tūkstančius kartų, mes nuolat mažinsime savo išlaidų funkciją.

Gradiento nusileidimo pseudokodas

Gradientas nusileidimas būtų naudojama siekiant sumažinti kaštų funkciją J (W), parametrinį pagal modelio parametrų W .

Gradientas (arba išvestinis) nurodo išlaidų funkcijos nuolydį ar nuolydį. Taigi, kad sumažintume sąnaudų funkciją, mes judame priešinga gradientui kryptimi.

  1. Inicializuokite svorius W atsitiktinai.
  2. Apskaičiuokite savikainos funkcijos Wrt parametrų gradientus G Tai daroma naudojant dalinę diferenciaciją: G = ∂J (W) / ∂W. G gradiento vertė priklauso nuo įvesties, dabartinių modelio parametrų reikšmių ir sąnaudų funkcijos. Jei gradientą skaičiuosite ranka, gali tekti dar kartą peržiūrėti diferenciacijos temą.
  3. Atnaujinkite svorius suma, proporcinga G, ty W = W - ηG
  4. Kartokite tol, kol sąnaudos J ( w ) nustos mažėti arba bus įvykdyti kiti iš anksto nustatyti nutraukimo kriterijai .

3 žingsnyje η yra mokymosi greitis , nustatantis žingsnių, kurių imamės, kad pasiektume minimumą, dydį. Turime būti labai atsargūs dėl šio parametro. Didelės η vertės gali viršyti minimumą, o labai mažos reikšmės pasieks minimumą labai lėtai.

Populiarus nutraukimo kriterijų pasirinkimas yra tas, kad patvirtinimo duomenų rinkinyje išlaidos J ( w ) nustoja mažėti.

Intuicija dėl gradientinio nusileidimo

Įsivaizduok, kad tau užrištos akysnelygiame reljefe ir jūsų tikslas yra pasiekti mažiausią aukštį.

Viena iš paprasčiausių strategijų, kurią galite naudoti, yra jausti žemę kiekviena kryptimi ir žengti žingsnį link to, kur žemė nusileidžia greičiausiai.

Jei nuolat kartosite šį procesą, galite atsidurti prie ežero, o dar geriau - kur nors didžiuliame slėnyje.

Nelygus reljefas yra analogiškas sąnaudų funkcijai, o sąnaudų funkcijos sumažinimas yra analogiškas bandymui pasiekti mažesnį aukštį.

Jūs esate aklai sulankstytas, nes mes neturime prabangos vertinti (arba „pamatyti“) funkcijos vertę kiekvienam galimam parametrų rinkiniui.

Pajusti reljefo nuolydį aplinkui yra analogiška gradiento skaičiavimui, o žingsnio žengimas yra analogiškas vienai parametrų atnaujinimo iteracijai.

Beje - kaip nedidelis dalykas - ši pamoka yra nemokamų duomenų mokslo kursų ir nemokamų mašininio mokymosi kursų „Commonlounge“ dalis. Kursai apima daug praktinių užduočių ir projektų. Jei jus domina mokytis duomenų mokslo / ML, tikrai rekomenduokite tai patikrinti.

Gradiento nusileidimo variantai

Yra keli gradiento nusileidimo variantai, priklausomai nuo to, kiek duomenų naudojama gradientui apskaičiuoti.

Pagrindinė šių variantų priežastis yra skaičiavimo efektyvumas. Duomenų rinkinyje gali būti milijonai duomenų taškų, o gradiento apskaičiavimas visame duomenų rinkinyje gali būti brangus skaičiavimams.

  • Partijos gradiento nusileidimas apskaičiuoja išlaidų funkcijos gradientą, parašytą pagal W parametrą , visiems treniruotės duomenims . Kadangi mes turime apskaičiuoti viso duomenų rinkinio gradientus, kad atliktume vieną parametrų atnaujinimą, partijos gradiento nusileidimas gali būti labai lėtas.
  • Stochastinis gradiento nusileidimas (SGD) apskaičiuoja kiekvieno atnaujinimo gradientą naudodamas vieną treniruotės duomenų tašką x_i (pasirinktas atsitiktinai). Idėja yra ta, kad tokiu būdu apskaičiuotas gradientas yra stochastinis artėjimas prie gradiento, apskaičiuoto naudojant visus treniruotės duomenis. Kiekvienas atnaujinimas dabar yra daug greičiau apskaičiuojamas nei partijos gradiento nusileidimas, o per daugelį atnaujinimų mes eisime ta pačia bendra kryptimi.
  • Į mini partijos gradientinis nusileidimas , mes galime apskaičiuoti kiekvieno mažo mini partijos mokymo duomenų gradientas. Tai yra, pirmiausia mes padalijame treniruotės duomenis į mažas partijas (tarkime, M partijos pavyzdžiai). Atliekame vieną atnaujinimą kiekvienai mini partijai. M paprastai yra 30–500, priklausomai nuo problemos. Paprastai naudojamas mini paketinis GD, nes skaičiavimo infrastruktūra - kompiliatoriai, centriniai procesoriai, GPU - dažnai yra optimizuoti atlikti vektorių pridėjimus ir vektorių dauginimą.

Iš jų populiariausi yra SGD ir mini partijų GD.

Įprastu scenarijumi mes kelis kartus perduodame mokymo duomenis prieš įvykdydami nutraukimo kriterijus. Kiekvienas praėjimas vadinamas epocha . Taip pat atkreipkite dėmesį, kad kadangi atnaujinimo žingsnis yra daug efektyvesnis skaičiavimais naudojant SGD ir mini paketinį GD, mes paprastai atliekame 100–1000 atnaujinimų tarp patikrinimų, ar laikomasi nutraukimo kriterijų.

Mokymosi greičio pasirinkimas

Paprastai mokymosi greičio vertė parenkama rankiniu būdu. Paprastai pradedame nuo mažos vertės, tokios kaip 0,1, 0,01 ar 0,001, ir pritaikome ją atsižvelgdami į tai, ar išlaidų funkcija mažėja labai lėtai (didėja mokymosi greitis), ar sprogsta / yra nepastovi (mažėja mokymosi greitis).

Nors rankinis mokymosi greičio pasirinkimas vis dar yra labiausiai paplitusi praktika, buvo siūlomi keli metodai, tokie kaip Adamo optimizavimo priemonė, „AdaGrad“ ir „RMSProp“, kad automatiškai pasirinktų tinkamą mokymosi greitį.

Bendraautoriai Keshav Dhandhania ir Savan Visalpara.

Iš pradžių paskelbta kaip nemokamų mašininio mokymo ir nemokamų duomenų mokslo kursų dalis www.commonlounge.com.