Care este diferența dintre coborârea în gradient și coborârea în gradient stochastic?

Care este diferența dintre Coborârea Gradientului și Coborârea Gradientului Stochastic?

Nu sunt foarte familiarizat cu acestea, puteți descrie diferența cu un scurt exemplu?

Răspuns

Pentru o explicație simplă și rapidă:

Atât în coborârea de gradient (GD) cât și în coborârea de gradient stochastic (SGD), actualizați un set de parametri într-un mod iterativ pentru a minimiza o funcție de eroare.

În GD, trebuie să parcurgeți TOATE mostrele din setul de antrenament pentru a efectua o singură actualizare pentru un parametru dintr-o anumită iterație, în SGD, pe de altă parte, utilizați DOAR UNUL sau SUBSETUL de eșantion de antrenament din setul dvs. de instruire pentru a face actualizarea pentru un parametru într-o anumită iterație. Dacă utilizați SUBSET, acesta se numește descindere cu gradient stochastic Minibatch.

Astfel, dacă numărul eșantioanelor de antrenament este mare, de fapt foarte mare, atunci utilizarea coborârii cu gradient poate dura prea mult, deoarece în fiecare iterație când actualizați valorile parametrilor, parcurgeți setul complet de antrenament. Pe de altă parte, utilizarea SGD va fi mai rapidă, deoarece folosiți un singur eșantion de antrenament și începe să se îmbunătățească imediat de la primul eșantion.

SGD converge adesea mult mai rapid în comparație cu GD, dar funcția de eroare nu este la fel de minimizat ca în cazul GD. Adesea, în majoritatea cazurilor, aproximarea strânsă pe care o obțineți în SGD pentru valorile parametrilor este suficientă, deoarece acestea ating valorile optime și continuă să oscileze acolo.

Dacă aveți nevoie de un exemplu în acest caz cu un caz practic, verificați Notele lui Andrew NG aici, unde vă arată clar pașii implicați în ambele cazuri. cs229-notes

Sursă: Subiect Quora

Comentarii

  • mulțumesc, pe scurt așa? Există trei variante ale Descendență în gradient: lot, stochastic și minibatch: lotul actualizează greutățile după ce toate probele de antrenament au fost evaluate. Stochastic, greutățile sunt actualizate după fiecare eșantion de antrenament. Minibatch combină cele mai bune din ambele lumi. Nu folosim setul complet de date, ci nu folosim un singur punct de date. Folosim un set de date selectat aleatoriu din setul nostru de date. În acest fel, reducem costul de calcul și obținem o varianță mai mică decât versiunea stocastică.
  • Rețineți că linkul de mai sus către cs229-notes nu este activ. Cu toate acestea, Wayback Machine, aliniat cu data postării, oferă – da! web.archive.org/web/20180618211933/http://cs229.stanford.edu/…

Răspuns

Includerea cuvântului stochastic înseamnă pur și simplu că eșantioanele aleatorii din datele de antrenament sunt alese în fiecare cursă pentru actualizarea parametrului în timpul optimizării, în cadrul coborâre în gradient .

Dacă faceți acest lucru, nu numai erorile calculate și actualizările de greutăți în iterații mai rapide (deoarece procesăm o selecție mică de eșantioane dintr-o singură dată), ajută și de multe ori să vă deplasați către o optim mai repede. priviți răspunsurile aici , pentru mai multe informații cu privire la motivele pentru care utilizarea minibatch-urilor stocastice pentru antrenament oferă avantaje.

Unul poate este un dezavantaj. că drumul către optim (presupunând că ar fi întotdeauna același optim) poate fi mult mai zgomotos. Deci, în loc de o curbă de pierdere netedă, care arată cum scade eroarea în fiecare iterație a coborârii în gradient, s-ar putea să vedeți așa ceva:

curbă de pierdere zgomotoasă

Vedem clar pierderea scăzând în timp, totuși există variații mari de la epocă la epocă (lot de antrenament la lot de antrenament), deci curba este zgomotoasă.

Acest lucru se întâmplă pur și simplu pentru că calculăm eroarea medie asupra subsetului nostru selectat stocastic / aleatoriu, din întregul set de date, în fiecare iterație. Unele eșantioane vor produce erori mari, altele mici. Deci, media poate varia, în funcție de eșantioanele pe care le-am folosit aleatoriu pentru o iterație a coborârii gradientului.

Comentarii

  • mulțumesc, pe scurt, așa? Există trei variante ale coborârii în gradient: lot, stochastic și minibatch: lotul actualizează greutățile după ce toate probele de antrenament au fost evaluate. Stochastic, greutățile sunt actualizate după fiecare probă de antrenament. Minibatch combină cele mai bune din ambele lumi. Nu folosim setul complet de date, dar nu folosim un singur punct de date. Folosim un set de date selectat aleatoriu din setul nostru de date. În acest fel, reducem costul de calcul și obținem o varianță mai mică decât versiunea stocastică.
  • Am ‘ spun că există lot, unde un lot este întregul set de antrenament (deci practic o epocă), atunci există mini-lot, unde un se folosește subset (deci orice număr mai mic decât întregul set $ N $) – acest subset este ales la întâmplare, deci este stocastic. Utilizarea unui singur eșantion ar fi denumită învățare online și este un subset de mini-lot … Sau pur și simplu mini-lot cu n=1.
  • tks, acest lucru este clar!

Răspuns

În descindere în gradient sau în coborâre în gradient în lot , folosim toate datele de antrenament pe epocă, în timp ce, în Descendența gradientului stochastic, folosim doar un singur exemplu de antrenament pe epocă, iar descinderea în gradient mini-lot se află între aceste două extreme, în care putem folosi un mini-lot (porțiune mică ) de date de antrenament pe epocă, regula degetului mare pentru selectarea dimensiunii mini-lotului este de 2 ca 32, 64, 128 etc.
Pentru mai multe detalii: cs231n note de lectură

Comentarii

  • mulțumesc, pe scurt așa? Există trei variante ale coborârii în gradient: lot, stochastic și minibatch: lotul actualizează greutățile după ce toate probele de antrenament au fost evaluate. Stochastic, greutățile sunt actualizate după fiecare probă de antrenament. Minibatch combină cele mai bune din ambele lumi. Nu folosim setul complet de date, dar nu folosim un singur punct de date. Folosim un set de date selectat aleatoriu din setul nostru de date. În acest fel, reducem costul de calcul și obținem o varianță mai mică decât versiunea stocastică.

Răspuns

Coborârea gradientului este un algoritm pentru a minimiza $ J (\ Theta) $ !

Ideea: Pentru valoarea curentă a theta, calculați $ J (\ Theta) $ , apoi faceți un mic pas în direcția gradientului negativ. Repetați.

Gradient_Descent

Actualizați ecuația = UpdateEqn

Algoritm:

while True: theta_grad = evaluate_gradient(J,corpus,theta) theta = theta - alpha * theta_grad 

Dar problema este $ J (\ Theta) $ este funcția întregului corpus din Windows, deci foarte scump de calculat.

Coborârea gradientului stochastic eșantionează în mod repetat fereastra și actualizează-le după fiecare

Algoritmul descendentului gradientului stochastic:

while True: window = sample_window(corpus) theta_grad = evaluate_gradient(J,window,theta) theta = theta - alpha * theta_grad 

De obicei, dimensiunea ferestrei eșantionului este puterea de 2, 32, 64 ca mini batch.

Răspuns

Ambii algoritmi sunt destul de similari. Singura diferență vine în timp ce iterați. În Descendența gradientului, luăm în considerare toate punctele din calcularea pierderii și a derivatei, în timp ce în descendența în gradient stochastic, folosim funcția de punct unic în pierdere și derivatul său în mod aleatoriu. Consultați aceste două articole, ambele sunt interdependente și sunt bine explicate. Sper că vă va fi de ajutor.

  1. Algoritmul de descrescare a gradientului

  2. Coborârea gradientului stochastic .

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *