ai.vostman.fi
← Tekoälysanasto

Tekoälyn tietosanakirja

Dekooderi: maski määrää, mitä sijainti saa tietää

Dekooderi (decoder) tuottaa ulostuloesityksen tai jonon. Kausaalisen kielimallin dekooderissa kukin sijainti saa käyttää itseään ja aiempia kohtia ennustaessaan seuraavaa tokenia.

Alkuperäinen kooderi–dekooderi-Transformer antaa dekooderille myös ristiin kohdistuvan attention-mekanismin kooderin tuloksiin. Pelkkään dekooderiin perustuva kielimalli käsittelee kehotteen ja jatkon samassa kausaalisessa jonossa.

Pakota tiedon raja

NumPy-esimerkki laskee yhden attention-pään kolmelle sijainnille. Diagonaalin yläpuoliset alkiot estetään ennen softmaxia.

import numpy as np

rng = np.random.default_rng(7)
queries, keys, values = rng.normal(size=(3, 3, 4))
scores = queries @ keys.T / np.sqrt(4)
allowed = np.tril(np.ones((3, 3), dtype=bool))
scores = np.where(allowed, scores, -np.inf)
weights = np.exp(scores - scores.max(axis=-1, keepdims=True))
weights /= weights.sum(axis=-1, keepdims=True)
output = weights @ values

Ensimmäinen tulos voi lukea vain ensimmäisen arvon, viimeinen voi yhdistää kaikki kolme. Ilman maskia varhaiset kohdat voisivat käyttää myöhempiä syötteitä koulutuksessa, mikä muuttaisi ennustustehtävän.

Tunnetut koulutustokenit voidaan silti käsitellä rinnakkain, koska maski toteuttaa riippuvuuden. Generoinnissa tuntematon seuraava token on valittava ennen kuin sitä seuraava askel voi käyttää sitä. Eron selittää kausaalinen sääntö, ei pelkkä sana dekooderi.

Lähteet