Gradientti laskeutuminen

syväoppiminen
matematiikka
kaltevuuslasku
Gradientti laskeutuminen cover image

Johdanto

Kuvittele, että meillä on funktio $f(x)$ ja haluaisimme löytää sen minimin. Mitä sinä tekisit ?

Yksinkertaista eikö? Meidän tarvitsee vain ratkaista seuraava yhtälö:

$$f'(x) = 0$$

Asia on siinä, että $f'$:n kaavan löytäminen ei ole aina helppoa, koska ne ovat yleensä erittäin monimutkaisia ​​varsinkin syväoppimisessa, jossa käsitellään monimutkaisia ​​​​funktioita. Joten meidän on löydettävä toinen menetelmä, joka voi tarjota meille funktion minimin ilman, että tarvitsee löytää derivaatan $f'$ kaavaa.

Rakennataan intuitiota

Oletetaan, että meillä on funktio f, jolla on vastaava graafi:

Graph 1

Aloitetaan satunnaisesta pisteestä $x_{0}$. Tavoitteena on siirtää tätä pistettä ja tehdä siitä lähemmäs kohtaa $x*$ siten, että $f'($x*$) = 0$. Joten ongelma voidaan jakaa kahteen osaan:

  • Mihin suuntaan pistettä $x$ pitäisi siirtää? Vasemmalle vai oikealle ?

  • Kuinka paljon meidän pitäisi siirtää sitä?

Suunta

Rakennetaan intuitiota, jotta voimme vastata ensimmäiseen kysymykseen. Katso seuraava kohta:

Graph 2

Graph 3

Ota huomioon, että:

  • kun piste $x_{0}$ on optimaalisen pisteen $x*$ oikealla puolella, sen tangenttiviiva nousee.

  • kun piste $x_{0}$ on optimaalisen pisteen $x*$ oikealla puolella, sen tangenttiviiva laskee.

Viivan suunta määräytyy sen kaltevuuden merkillä:

  • Viiva nousee $\implikoi$, kaltevuus $a$ on positiivinen.

  • Viiva laskee $\implys$ kaltevuus $a$ on negatiivinen.

Huomaa, että: \

Funktion tangenttiviivan kaltevuus tietyssä pisteessä $x_{0}$ ei ole suurempi kuin derivaatta kyseisessä pisteessä $f'(x_{0})$:

$$ tangent(x*{0}): g(x) = f'(x*{0}).(x-x*{0}) + f(x*{0}) $$

Joten vastauksena kysymykseen "Mihin meidän pitäisi siirtää $x_{0}$ ?":

  • $f'(x_{0}) < 0$ $\implies$ $x_{0}$ oikealla $x*$ $\implies$ Meidän täytyy siirtää $x_{0}$ vasemmalle.

  • $f'(x_{0}) > 0$ $\implies$ $x_{0}$ $x*$ $\implies$ vasemmalla Meidän täytyy siirtää $x_{0}$ oikealle.

Askeleet

Nyt toiseen kysymykseen Kuinka paljon meidän pitäisi siirtää $x_{0}$ ?

Katso seuraavat esimerkit:

Graph 4

Graph 5

Voimme päätellä, että:

  • $x_{0}$ on lähellä $x*$ => Tangentin kaltevuus on pieni => $f'(x_{0})$ on pieni.

  • $x_{0}$ on kaukana kohteesta $x*$ => Tangentin kaltevuus on suuri => $f'(x_{0})$ on suuri.

Vastaamalla molempiin kysymyksiin päätimme, että vain pisteen $x_{0}$ derivaatan tunteminen voi antaa meille paljon käsitystä optimaalisen pisteen $x_{0}$ suunnasta ja etäisyydestä.

Gradienttilasku

Gradienttilasku on kahden edellisen kysymyksen vastausten muotoilu. Se on iteratiivinen optimointialgoritmi, joka arvioi funktion minimiarvon $x*$ alkaen satunnaisesta alkupisteestä $x_{0}$. Algoritmi esitetään seuraavasti:

$$ x*{n+1} = x*{n} - lr \times \frac{\mathrm{d} f}{\mathrm{d} x_{n}} $$

missä:

  • $ \frac{\mathrm{d} f}{\mathrm{d} x*{n}} $ ei ole enempää kuin $f$:n derivaatta pisteessä $x*{n}$.

  • $lr$ on positiivinen vakio, joka määrittää kuinka suuria askeleita tulee olemaan.

Huomaa, että:

  • $x_{n}$ on oikealla $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} > 0 $ => $ x_{n+ 1} = x_{n} - positiivinen $ => $x_{n}$ siirtyy vasemmalle.

  • $x_{n}$ on $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} vasemmalla puolella < 0$ => $ x*{n +1} = x*{n} + positiivinen $ => $x_{n}$ siirtyy oikealle.

  • $x_{n}$ lähellä $x*$ => $\frac{\mathrm{d} f}{\mathrm{d} x_{n}}$ lähellä $0$ => Pieni päivitys hintaan $x_{ n} $.

Tietovisa

  • Milloin gradienttilasku lopettaa iteroinnin:

  • Kun $x_{n}$ on tarpeeksi pieni.

  • Kun $x_{n}$ on lähellä $x_{0}$ .

  • Kun $\frac{\mathrm{d} f}{\mathrm{d} x_{n}} = 0 $. XXX

  • Kuinka valitsemme $x_{0}$:

  • Valitsemme sen satunnaisesti. XXX

  • Otamme sen naapurustossa $x{n}$.

– Se riippuu ongelmasta.

  • Miksi tarvitsemme kaltevuuslaskua:

  • Koska tietokoneet eivät ole tarpeeksi tehokkaita laskemaan johdannaisia.

  • Koska syväoppimismallien derivaattakaavoja on äärimmäisen vaikea löytää. XXX

  • Koska funktioilla on useampi kuin yksi paikallinen minimi.


Career Services background pattern

Urapalvelut

Contact Section background image

Pidetään yhteyttä

Code Labs Academy © 2024 Kaikki oikeudet pidätetään.