Gradientti laskeutuminen

syväoppiminen
matematiikka
kaltevuuslasku
Gradientti laskeutuminen cover image

Johdanto

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

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

f(x)=0f'(x) = 0

Asia on siinä, että ff':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 ff' kaavaa.

Rakennataan intuitiota

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

Graph 1

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

  • Mihin suuntaan pistettä xx 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 x0x_{0} on optimaalisen pisteen xx* oikealla puolella, sen tangenttiviiva nousee.

  • kun piste x0x_{0} on optimaalisen pisteen xx* oikealla puolella, sen tangenttiviiva laskee.

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

  • Viiva nousee \implikoi\implikoi, kaltevuus aa on positiivinen.

  • Viiva laskee \implys\implys kaltevuus aa on negatiivinen.

Huomaa, että: \

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

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

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

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

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

Askeleet

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

Katso seuraavat esimerkit:

Graph 4

Graph 5

Voimme päätellä, että:

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

  • x0x_{0} on kaukana kohteesta xx* => Tangentin kaltevuus on suuri => f(x0)f'(x_{0}) on suuri.

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

Gradienttilasku

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

xn+1=xnlr×dfdx_nx*{n+1} = x*{n} - lr \times \frac{\mathrm{d} f}{\mathrm{d} x\_{n}}

missä:

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

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

Huomaa, että:

  • xnx_{n} on oikealla xx* => dfdxn>0\frac{\mathrm{d} f}{\mathrm{d} x_{n}} > 0 => xn+1=xnpositiivinenx_{n+ 1} = x_{n} - positiivinen => xnx_{n} siirtyy vasemmalle.

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

  • xnx_{n} lähellä xx* => dfdxn\frac{\mathrm{d} f}{\mathrm{d} x_{n}} lähellä 00 => Pieni päivitys hintaan xnx_{ n} .

Tietovisa

  • Milloin gradienttilasku lopettaa iteroinnin:

  • Kun xnx_{n} on tarpeeksi pieni.

  • Kun xnx_{n} on lähellä x0x_{0} .

  • Kun dfdx_n=0\frac{\mathrm{d} f}{\mathrm{d} x\_{n}} = 0 . XXX

  • Kuinka valitsemme x0x_{0}:

  • Valitsemme sen satunnaisesti. XXX

  • Otamme sen naapurustossa xnx{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 © 2025 Kaikki oikeudet pidätetään.