ai.vostman.fi
← Tekoälysanasto

Tekoälyn tietosanakirja

Oppimisnopeus: hallitse koulutuksen askelpituutta

Oppimisnopeus (learning rate) määrää parametripäivitysten mittakaavan. Hyödyllinenkin gradientti voi johtaa huonoon askeleeseen, jos päivitys on liian suuri. Hyvin pieni arvo voi hidastaa edistymistä tarpeettomasti.

Mukautuvassa optimointialgoritmissa se on yhteinen kerroin parametrikohtaisen skaalauksen ympärillä. Se ei tarkoita jokaisen painon muuttuvan saman verran.

Aloita varovasti ja pienennä myöhemmin

Lämmittely (warmup) nostaa oppimisnopeutta alkuvaiheessa. Myöhempi lasku pienentää sitä koulutuksen edetessä. Lämmittelyä seuraava kosinimuotoinen lasku (cosine decay) on tavallinen aikataulu, ei yleispätevä vaatimus.

Funktio määrittelee arvon välillä 0 <= step <= total, kun 0 < warmup < total. Askel tarkoittaa tässä optimointipäivitystä, ei yksittäistä esimerkkiä eikä gradienttien kertymisen mikroerää.

from math import cos, pi

def learning_rate(step, total, warmup, peak):
    if step < warmup:
        return peak * step / warmup
    progress = (step - warmup) / (total - warmup)
    return peak * (1 + cos(pi * progress)) / 2

Aikataulu saavuttaa arvon peak lämmittelyn lopussa ja nollan viimeisellä askeleella. Se muuttaa päivityksen mittakaavaa, ei aineiston järjestystä eikä mallin tulosteen lämpötilaa.

Eräkoko muuttaa myös koulutuksen kelloa

Jos usean mikroerän gradientit kertyvät yhdeksi päivitykseksi, aikataulun tulee edetä tarkoitettujen optimointipäivitysten tahdissa. Eteneminen joka mikroerällä kuluttaa aikataulun huomaamatta liian nopeasti.

Eräkoko, optimointialgoritmi, alustus ja tehtävä vaikuttavat hyödyllisiin arvoihin. Häviöpiikki voi kertoa epävakaista askelista, mutta oppimisnopeus ei korjaa jokaista aineisto- tai toteutusvirhettä.

Jatkamiseen käytettävän tarkistuspisteen täytyy säilyttää tarvittava aikataulun sijainti ja optimointitila. Pelkkien painojen palauttaminen voi käynnistää erilaisen koulutuspolun, vaikka näkyvä malli on sama.

Lähteet