ai.vostman.fi
← Tekoälysanasto

Tekoälyn tietosanakirja

Koulutus: yhdistä ennuste, häviö ja päivitys

Koulutus (training) muuttaa mallia oppimissignaalin avulla. Neuroverkon tavallinen askel laskee ennusteet, mittaa häviön, derivoi sen ja tekee optimoijan päivityksen.

Ajaminen käyttää nykyisiä parametreja tulosteen tuottamiseen. Koulutus lisää mekanismin, joka ratkaisee, miten parametrien pitäisi muuttua.

Koko päivitys yhdessä funktiossa

TensorFlow-askel saa luokkalogitteja palauttavan mallin, optimoijan, syötteet ja kokonaislukumuotoiset luokkatunnisteet. Esimerkkien häviöistä muodostetaan keskiarvotavoite.

import tensorflow as tf

def train_step(model, optimizer, inputs, labels):
    with tf.GradientTape() as tape:
        logits = model(inputs, training=True)
        loss = tf.reduce_mean(
            tf.keras.losses.sparse_categorical_crossentropy(
                labels, logits, from_logits=True
            )
        )
    gradients = tape.gradient(loss, model.trainable_variables)
    optimizer.apply_gradients(zip(gradients, model.trainable_variables))
    return loss

Nauha tallentaa eteenpäinlaskennan. gradient laskee derivaatat, ja apply_gradients muuttaa painoja sekä optimoijan tilaa. Nämä ovat erillisiä operaatioita.

training=True ottaa myös dropoutin kaltaisten kerrosten koulutustoiminnan käyttöön. Validointikierros arvioi ennusteita päivittämättä painoja ja käyttää vastaavaa arviointitilaa.

Onnistunut askel parantaa vain valittua koulutustavoitetta paikallisesti. Aineiston kattavuus ja erillinen arviointi ratkaisevat, siirtyykö oppiminen hyödyksi uusiin syötteisiin.

Lähteet