Introducere
Imaginați-vă că avem o funcție și am dori să-i găsim minimul. ce ai face?
Simplu nu? Trebuie doar să rezolvăm următoarea ecuație:
Chestia este că găsirea formulei lui nu este întotdeauna ușoară, deoarece acestea tind să fie extrem de complicate, mai ales în deep learning, unde ne ocupăm de funcții complexe. Deci trebuie să găsim o altă metodă care să ne ofere minimul unei funcții fără a fi nevoie să găsim formula derivatei .
Să construim ceva intuiție
Să presupunem că avem o funcție f cu graficul corespunzător:
Să începem cu un punct aleatoriu . Scopul este de a muta acest punct și de a-l apropia din ce în ce mai mult de astfel încât x*. Deci problema poate fi împărțită în două părți:
-
În ce direcție trebuie să mutăm punctul ? Stânga sau Dreapta?
-
Cât de mult ar trebui să-l mutăm?
Direcția
Să construim puțină intuiție pentru a răspunde la prima întrebare. Aruncă o privire la următorul punct:
Rețineți că:
-
când punctul este la dreapta punctului optim linia sa tangentă urcă.
-
când punctul este la dreapta punctului optim linia sa tangentă coboară.
Direcția unei linii este determinată de semnul pantei sale:
-
O linie urcă că panta este pozitivă.
-
O linie coboară că panta este negativă.
Rețineți că: \
Panta dreptei tangente a unei funcții într-un anumit punct nu este mai mare decât derivata din acel punct :
Deci, ca răspuns la întrebarea „Unde ar trebui să mutăm ?”:
-
la dreapta lui Trebuie să mutăm la stânga.
-
la stânga lui Trebuie să mutăm la dreapta.
Pașii
Acum, pentru a doua întrebare, Cât ar trebui să mutăm ?
Aruncă o privire la următoarele exemple:
Putem concluziona că:
-
este aproape de => Panta tangentei este mică => este mică.
-
este distant de => Panta tangentei este mare => este mare.
Răspunzând la ambele întrebări, am ajuns la concluzia că numai cunoașterea derivatei în punctul ne poate oferi o mulțime de informații despre direcția și distanța punctului optim .
Coborâre în gradient
Coborârea în gradient este formularea răspunsurilor la cele două întrebări anterioare. Este un algoritm iterativ de optimizare care aproximează minimul al funcției pornind de la un punct inițial aleator . Algoritmul este prezentat după cum urmează:
unde:
-
nu este mai mult decât derivata lui în punctul .
-
este o constantă pozitivă care determină cât de mari vor fi pașii.
Observați că:
-
este la dreapta lui => => => se deplasează la stânga.
-
este la stânga lui => => pozitiv => se deplasează la dreapta.
-
aproape de => aproape de => Mică actualizare la .
Test
-
Când se oprește coborârea în gradient:
-
Când este suficient de mic.
-
Când este aproape de .
-
Când . XXX
-
Cum alegem :
-
O alegem la întâmplare. XXX
-
O luăm în vecinătatea .
-
Depinde de problemă.
-
De ce avem nevoie de coborâre în gradient:
-
Pentru că computerele nu sunt suficient de puternice pentru a calcula derivate.
-
Pentru că este extrem de greu să găsești formulele derivate ale modelelor de deep learning. XXX
-
Pentru că funcțiile au mai mult de un minim local.
Master Data Science and AI cu Code Labs Academy! Alăturați-vă campului nostru de pregătire online – Opțiuni flexibile disponibile cu normă parțială și cu normă întreagă.