ai.vostman.fi
← Tekoälysanasto

Tekoälyn tietosanakirja

Optimointialgoritmit: gradientti ei vielä ole päivitys

Optimointialgoritmi (optimizer) päättää, miten parametreja muutetaan gradienttien perusteella. Tavallinen stokastinen gradienttimenetelmä skaalaa nykyisen gradientin oppimisnopeudella. Mukautuvat menetelmät käyttävät lisäksi aiemmista askelista kertynyttä tilaa.

Adam ylläpitää gradienttien ja niiden neliöiden eksponentiaalisesti painotettuja keskiarvoja. Ensimmäinen kuljettaa suuntaa kohinaisten päivitysten läpi; toinen säätää kunkin parametrin päivityksen mittakaavaa. Harhakorjaus kompensoi keskiarvojen alustamista nolliksi.

AdamW erottaa painojen vaimennuksen

Tämä NumPy-askel päivittää painotaulukkoa ja kahta tilataulukkoa suoraan. Alusta moment ja square nolliksi, aloita step arvosta 1 ja kasvata sitä jokaisen päivityksen jälkeen. Oletukset käyttävät Adamin tuttuja vaimennuskertoimia.

import numpy as np

def adamw(weight, gradient, moment, square, step, rate, decay=0.01):
    beta1, beta2 = 0.9, 0.999
    moment *= beta1
    moment += (1 - beta1) * gradient
    square *= beta2
    square += (1 - beta2) * gradient * gradient
    corrected_moment = moment / (1 - beta1 ** step)
    corrected_square = square / (1 - beta2 ** step)
    weight *= 1 - rate * decay
    weight -= rate * corrected_moment / (np.sqrt(corrected_square) + 1e-8)

Painojen vaimennusrivi (weight decay) pienentää parametria suoraan. Se ei lisää rangaistusta gradienttien tilasuureisiin. Tämä erottaminen erottaa AdamW:n tavallisesta L2-rangaistuksen lisäämisestä Adamin häviöön.

Tila kuluttaa muistia

Parametri voi tarvita koulutuksessa painonsa, gradientin ja optimointitilan. Adamin kaksi tilataulukkoa selittävät osaltaan, miksi koulutuksen muistitarve ylittää lopullisen mallin tallennuskoon. Sekatarkkuus ja hajautus muuttavat taulukoiden sijaintia ja esitystapaa.

Optimointialgoritmi ei valitse, mikä on hyvä vastaus. Häviö antaa tavoitteen, vastavirta-algoritmi derivaatat ja oppimisnopeuden aikataulu peräkkäisten askelten mittakaavan.

Lähteet