Johdanto
Kuvittele, että meillä on funktio ja haluaisimme löytää sen minimin. Mitä sinä tekisit ?
Yksinkertaista eikö? Meidän tarvitsee vain ratkaista seuraava yhtälö:
Asia on siinä, että :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 kaavaa.
Rakennataan intuitiota
Oletetaan, että meillä on funktio f, jolla on vastaava graafi:
Aloitetaan satunnaisesta pisteestä . Tavoitteena on siirtää tätä pistettä ja tehdä siitä lähemmäs kohtaa siten, että x*. Joten ongelma voidaan jakaa kahteen osaan:
-
Mihin suuntaan pistettä 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:
Ota huomioon, että:
-
kun piste on optimaalisen pisteen oikealla puolella, sen tangenttiviiva nousee.
-
kun piste on optimaalisen pisteen oikealla puolella, sen tangenttiviiva laskee.
Viivan suunta määräytyy sen kaltevuuden merkillä:
-
Viiva nousee , kaltevuus on positiivinen.
-
Viiva laskee kaltevuus on negatiivinen.
Huomaa, että: \
Funktion tangenttiviivan kaltevuus tietyssä pisteessä ei ole suurempi kuin derivaatta kyseisessä pisteessä :
Joten vastauksena kysymykseen "Mihin meidän pitäisi siirtää ?":
-
oikealla Meidän täytyy siirtää vasemmalle.
-
vasemmalla Meidän täytyy siirtää oikealle.
Askeleet
Nyt toiseen kysymykseen Kuinka paljon meidän pitäisi siirtää ?
Katso seuraavat esimerkit:
Voimme päätellä, että:
-
on lähellä => Tangentin kaltevuus on pieni => on pieni.
-
on kaukana kohteesta => Tangentin kaltevuus on suuri => on suuri.
Vastaamalla molempiin kysymyksiin päätimme, että vain pisteen derivaatan tunteminen voi antaa meille paljon käsitystä optimaalisen pisteen suunnasta ja etäisyydestä.
Gradienttilasku
Gradienttilasku on kahden edellisen kysymyksen vastausten muotoilu. Se on iteratiivinen optimointialgoritmi, joka arvioi funktion minimiarvon alkaen satunnaisesta alkupisteestä . Algoritmi esitetään seuraavasti:
missä:
-
ei ole enempää kuin :n derivaatta pisteessä .
-
on positiivinen vakio, joka määrittää kuinka suuria askeleita tulee olemaan.
Huomaa, että:
-
on oikealla => => => siirtyy vasemmalle.
-
on => => => siirtyy oikealle.
-
lähellä => lähellä => Pieni päivitys hintaan .
Tietovisa
-
Milloin gradienttilasku lopettaa iteroinnin:
-
Kun on tarpeeksi pieni.
-
Kun on lähellä .
-
Kun . XXX
-
Kuinka valitsemme :
-
Valitsemme sen satunnaisesti. XXX
-
Otamme sen naapurustossa .
– 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.