ai.vostman.fi
← Tekoälysanasto

Tekoälyn tietosanakirja

Sijaintikoodaus: anna tokeneille järjestys

Tokenin upotus tunnistaa sisällön. Sijaintikoodaus (positional encoding) tuo tiedon siitä, missä sisältö esiintyy. Ilman järjestystiedon lähdettä pelkkä attention-mekanismin samankaltaisuuslaskenta ei erota kaikkia kielimallin tarvitsemia järjestyksiä.

Alkuperäinen Transformer lisäsi upotuksiin sijainnista riippuvia sini- ja kosinivektoreita. Osa malleista oppii sijaintivektorit. Rotary position embeddings (RoPE) puolestaan kiertää kysely- ja avainvektorien komponentteja ennen niiden vertailua attention-laskennassa.

Kaksi kysely- ja avainvektorin komponenttiparin kuvaa näyttää yhteisen lisäkierron säilyttävän suhteellisen kulman ja pistetulon.

Kierrä pareja, säilytä pituus

Tämä NumPy-funktio ottaa liukulukuiset vektorit muodossa tokens × head_width. Leveyden täytyy olla parillinen, ja jokaisella rivillä on oma sijaintinsa. Vierekkäisiä komponenttipareja kierretään eri taajuuksilla. Käytä samaa sääntöä erikseen kyselyihin ja avaimiin.

import numpy as np

def rope(vectors, positions, base=10_000.0):
    width = vectors.shape[1]
    frequencies = base ** (-np.arange(0, width, 2) / width)
    angles = np.asarray(positions)[:, None] * frequencies
    cosine, sine = np.cos(angles), np.sin(angles)
    even, odd = vectors[:, 0::2], vectors[:, 1::2]
    rotated = np.empty_like(vectors)
    rotated[:, 0::2] = even * cosine - odd * sine
    rotated[:, 1::2] = even * sine + odd * cosine
    return rotated

Yhdessä parissa sijainti määrää kiertokulman. Kun sekä kyselyn että avaimen sijaintiin lisätään sama siirtymä, niiden suhteellinen kierto pysyy ennallaan. Pistetulo sisältää siten suhteellista sijaintitietoa, ja kierto säilyttää kummankin vektorin pituuden.

Useat parit kiertyvät eri nopeuksilla ja tuovat esitykseen eri sijaintimittakaavoja. Todelliset mallit voivat käyttää erilaisia taajuuskantoja, komponenttien järjestyksiä ja skaalaussääntöjä.

Sijaintisäännöt vaikuttavat kontekstin pidentämiseen

Mallin koulutuksessa käytetty sijaintialue ja toiminta sen ulkopuolella merkitsevät. RoPE-skaalan muuttaminen voi sallia pidemmän syötteen, mutta pidemmän jonon hyväksyminen ei yksin osoita luotettavaa pitkän kontekstin käsittelyä.

Sijaintitieto ja kausaalinen maski tekevät eri työtä. Sijaintitieto esittää järjestystä; maski määrää, mitä sijainteja saa lukea. Molemmat ovat tarpeen kausaalisessa Transformerissa.

Lähteet