Stochastinio gradiento optimizavimo išplėtimas naudojant ADAM

Stochastinio gradiento optimizavimo išplėtimas naudojant ADAM


Gradiento nusileidimas. Vaizdas paimtas iš – https://community.deeplearning.ai/t/difference-between-rmsprop-and-adam/310187

Kas yra gradiento nusileidimas?

Nusileidimas nuolydžiu yra tarsi žygis nuo kalno užmerktomis akimis, sekant šlaitu, kol pasieksite dugną (arba bent jau gražią plokščią vietą poilsiui). Techniškai tai yra būdas sumažinti tikslo funkcija F(θ), parametrizuojami modelio parametrais θ∈Rn, atnaujinant juos priešinga gradiento ∇F(θ) kryptimi.

Kiekvieno žingsnio dydį valdo mokymosi greitis α. Pagalvokite apie α kaip apie atsargų vadovą, kuris užtikrina, kad nenukristumėte per greitai. Jei tai skamba kaip graikiškai, nedvejodami peržiūrėkite mano ankstesnį straipsnį „Greitas žvilgsnis į gradiento nusileidimą mašininiame mokyme“ – pažadu, kad tai draugiškiau, nei skamba! 🙂

Apskritimas atgal: An objektyvią funkciją yra matematinė formulė arba funkcija, kurią jūsų modelis siekia sumažinti (arba padidinti, priklausomai nuo tikslo) treniruotės metu. Tai matas, kaip toli jūsų modelio prognozės nuo faktinių rezultatų arba norimų verčių.

Pavyzdžiui:

Į mašininis mokymasistai gali būti a praradimo funkcija kaip vidutinė kvadratinė klaida (MSE) regresijos užduotims arba kryžminės entropijos praradimas klasifikavimo užduotims.

Tikslo funkcija modelio prognozes susieja su a skaitinė reikšmėkur mažesnės reikšmės rodo geresnį našumą.

Paprasčiau tariant:

Tai tarsi jūsų modelio „fitneso stebėjimo priemonė“ – ji nurodo, kokios geros ar blogos yra jūsų modelio prognozės. Optimizavimo metu gradiento nusileidimas padeda koreguoti modelio parametrus θ, kad ši vertė palaipsniui mažėtų ir artėtų prie idealaus sprendimo. Supratai? 😄

Gradiento nusileidimo variantai

Nusileidimas nuo gradiento nėra universalus sprendimas. Yra trys variantai, kiekvienas kaip skirtingas žygeivis – vieni renkasi vaizdingą maršrutą, kiti skraido nuokalnėn, o keli renkasi nuorodas (kaip aš 😅). Šie variantai subalansuoja tikslumą ir greitį, priklausomai nuo to, kiek duomenų jie naudoja gradientui apskaičiuoti.

1. Paketinis gradiento nusileidimas

Paketinis gradiento nusileidimas, „viskas arba nieko“ keliautojas, naudoja visą duomenų rinkinį išlaidų funkcijos gradientui apskaičiuoti:

Įsivaizduokite, kad sustojate pažiūrėti 👀 į kiekvieną akmenį 🪨, medį 🌴 ir paukštį 🕊 prieš nuspręsdami, kur dėti koją 🦶🏽toliau. Tai išsamu, bet ne idealu, jei jūsų duomenų rinkinys yra toks didelis, kaip, tarkime, Amazonės atogrąžų miškai 😩. Taip pat nėra puiku, jei jums reikia mokytis skrydžio metu – pavyzdžiui, atnaujinti žygio maršrutą pastebėjus lokį 🐻‍❄️.

Kodo pavyzdys:

for i in range(nb_epochs):
    params_grad = evaluate_gradient(loss_function, data, params)
    params = params - learning_rate * params_grad

Paketinis gradiento nusileidimas šviečia, kai turite visą pasaulio laiką ir duomenų rinkinį, kuris puikiai telpa atmintyje. Garantuojama, kad bus nustatytas pasaulinis išgaubtų paviršių (lygių kalvos) minimumas arba vietinis neišgaubtų paviršių (rautų kalnų) minimumas.

2. Stochastinis gradiento nusileidimas (SGD)

SGD yra „impulsyvus“ žygeivis, kuris žengia vieną žingsnį vienu metu, atsižvelgdamas į esamą reljefą:

Tai greičiau, nes nesivargina viso kraštovaizdžio gradientų skaičiavimas. Vietoj to, vienu metu naudojamas vienas mokymo pavyzdys. Nors tai sutaupo laiko, dėl dažnų atnaujinimų SGD gali atrodyti kaip zigzagais žemyn, o tai gali būti ir įdomu, ir šiek tiek chaotiška. 😅

Įsivaizduokite, kad atnaujinate savo bakalėjos prekių sąrašą po kiekvieno praėjimo – greičiau pasieksite būtiniausių dalykų, tačiau jūsų krepšelis gali atrodyti laukinis. Tačiau laikui bėgant lėtėjant mokymosi greičiui SGD ilgainiui gali pasiekti dugną (arba geriausią vietinį minimumą).

Kodo pavyzdys:

for i in range(nb_epochs):
    np.random.shuffle(data)
    for example in data:
        params_grad = evaluate_gradient(loss_function, example, params)
        params = params - learning_rate * params_grad

3. Dienos herojus: Adomas 🙌🏽

Dabar pakalbėkime apie Adomą – „žygių guru“, kuris sujungia „Momentum“ ir „RMSprop“ išmintį. Adaptive Moment Estimation (Adam) yra tarsi protingas vadovas, kuris seka reljefą ir koreguoja jūsų žingsnius pagal ankstesnę patirtį ir dabartines sąlygas. Tai puikus optimizavimo įrankis, kai norite išmokyti neuroninius tinklus ir dar turite laiko kavos.

Kodėl tu mylėsi Adamą

  • Maži atminties reikalavimai: Tai tarsi nešiotis lengvą kuprinę – efektyvią, bet vis tiek prikrautą būtiniausių dalykų.

  • Minimalus hiperparametrų derinimas: Adomas puikiai veikia iš karto, todėl jums nereikės sukti per daug rankenėlių (tiesiog stebėkite mokymosi greitį).

  • Praktinis naudojimas: Nuo gaminių rekomendacijų tobulinimo iki kačių vaizdų atpažinimo internete – Adam kuria mašininio mokymosi sistemas, kurios daro jūsų kasdienes technologijas išmanesnes.

Kaip veikia Adomas

Adomas palaiko slankiuosius gradientų (mt) ir kvadratinių gradientų (vt) vidurkius, kad pritaikytų mokymosi greitį kiekvienam parametrui:

Štai puiki dalis: Adomas ištaiso paklaidas, kad užtikrintų tikslumą, ir atnaujina parametrus naudodamas šią formulę:

kur m^t ir v^t yra poslinkio pataisyti įverčiai, o epsilonas ϵ yra mažas skaičius, kad būtų išvengta padalijimo iš nulio.

Išvada

Adam yra Šveicarijos armijos optimizavimo peilis – universalus, efektyvus ir patikimas. Nesvarbu, ar treniruojate neuroninius tinklus, kad aptiktų sukčiavimą, ar kuriate naujos kartos pokalbių robotus, „Adam“ padės jums pasiekti greičiau ir su mažiau galvos skausmo. Taigi, apkabinkite Adamą, imkitės užtikrintų žingsnių ir mėgaukitės vaizdu iš mašininio mokymosi sėkmės viršūnės!

Nuorodos:

https://www.ceremade.dauphine.fr/\~waldspurger/tds/22_23_s1/advanced_gradient_descent.pdf

https://www.geeksforgeeks.org/rmsprop-optimizer-in-deep-learning/



Source link

Draugai: - Marketingo agentūra - Teisinės konsultacijos - Skaidrių skenavimas - Fotofilmų kūrimas - Miesto naujienos - Šeimos gydytojai - Saulius Narbutas - Įvaizdžio kūrimas - Veidoskaita - Nuotekų valymo įrenginiai - Teniso treniruotės - Pranešimai spaudai -