ai.vostman.fi
← Tekoälysanasto

Tekoälyn tietosanakirja

Siirto-oppiminen: säilytä esitys, vaihda tehtävä

Siirto-oppiminen (transfer learning) hyödyntää yhdessä tehtävässä tai aineistossa opittua toisessa. Esikoulutettu kuvakooderi voi tuottaa piirteet uudelle luokittimelle, ja kielimallia voidaan mukauttaa erikoisalalle.

Hyödyllinen lähtökohta on jäädyttää esikoulutettu esitys ja kouluttaa vain uusi ulostulokerros. Myöhempi hienosäätö sallii myös aiempien painojen muuttua osittain tai kokonaan.

Uusi luokittelupää esikoulutetulle kooderille

TensorFlow/Keras-esimerkki lataa MobileNetV2:n painot ja rakentaa kolmen luokan luokittimen 224×224-kokoisille RGB-kuville, joiden pikseliarvot ovat välillä 0–255. Anna oma tunnisteellinen aineistosi kutsulle model.fit.

from tensorflow import keras

base = keras.applications.MobileNetV2(
    include_top=False, weights="imagenet", pooling="avg"
)
base.trainable = False
inputs = keras.Input(shape=(224, 224, 3))
scaled = keras.applications.mobilenet_v2.preprocess_input(inputs)
features = base(scaled, training=False)
outputs = keras.layers.Dense(3)(features)
model = keras.Model(inputs, outputs)
model.compile(
    optimizer=keras.optimizers.Adam(1e-3),
    loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),
)

Esikäsittely vastaa esikoulutettua kooderia. training=False säilyttää sen eränormalisoinnin toiminnan uuden pään oppiessa.

Jäädytetty kooderi tekee ensimmäisestä vaiheesta kevyemmän, mutta sen esityksen on sisällettävä uudessa tehtävässä hyödyllistä tietoa. Avaaminen koulutettavaksi pienemmällä oppimisnopeudella voi mukauttaa esitystä lisää. Keras-malli on käännettävä uudelleen koulutettavuuden muutoksen jälkeen.

Lähteet