15 valittua monimuotoisen koneoppimisen haastattelukysymystä ryhmiteltynä kokemustason mukaan. Käytä niitä perusteiden, käytännön kompromissien ja senior-tason tuotantopäätelmien kertaamiseen.
1Selitä kontrastiivisen oppimisen perusidea kuva- ja tekstiesitysten linjaamiseen ja miksi jaettu upotusavaruus on hyödyllinen.
Kontrastiivisen oppimisen perusidea kuva- ja tekstiesitysten linjaamiseen on projisoida kuva- ja syötekäskyt jaettuun latenttiin vektoriavaruuteen siten, että semanttisesti yhteensopivat (positiiviset) parit vedetään lähemmäksi toisiaan, kun taas ei-yhteensopivat (negatiiviset) parit työnnetään kauemmas toisistaan. Kouluttamalla erillisiä näkö- ja tekstinkoodereita samankaltaisuustavoitteiden (kuten kosisamankaltaisuuden) avulla, malli linjaa jatkuvien visuaalisten pikselien semantiikan diskreettien tekstuaalisten tokenien kanssa. Jaettu upotusavaruus on hyödyllinen, koska se mahdollistaa monimuotoisten tehtävien ratkaisemisen suoraan vektorin samankaltaisuushaun kautta. Tässä yhtenäisessä avaruudessa modaalienvälinen haku (kuvien etsiminen tekstikyselyiden perusteella tai päinvastoin) ja nollapisteluokittelu (kuvaupotuksen arvioiminen kehotetekstien upotuksia vastaan, kuten 'kuva koirasta') muuttuvat yksinkertaisiksi, erittäin tehokkaiksi lähimmän naapurin tai pistetuotteen hauiksi ilman tehtäväkohtaisia luokittelupäitä.
import torch
import torch.nn.functional as F
# image_features: [B, D], text_features: [B, D]
image_norm = F.normalize(image_features, dim=-1)
text_norm = F.normalize(text_features, dim=-1)
# Pairwise cosine similarity matrix: [B, B]
sim_matrix = image_norm @ text_norm.T
# Positive pairs lie on the diagonal; off-diagonals are negatives
2Selitä CLIP-tyyppinen kaksoiskooderiarkkitehtuuri ja sen oletukset kuvan ja tekstin välisestä vuorovaikutuksesta.
CLIP-tyyppinen kaksoiskooderiarkkitehtuuri koostuu kahdesta erillisestä, toisiinsa kytkemättömästä neuroverkosta: visuaalisesta kooderista (esim. Vision Transformer tai ResNet), joka käsittelee kuvia visuaalisiksi piirrevektoreiksi, ja tekstikooderista (esim. Transformer), joka käsittelee tekstiä tekstin piirrevektoreiksi. Molemmat esitykset projisoidaan yhteiseen upotusulottuvuuteen, jossa kohdistus mitataan yksinkertaisella samankaltaisuusmittarilla (kuten normalisoidulla kosinusamankaltaisuudella tai pistetulolla). Fundamentaalinen arkkitehtoninen oletus on myöhäinen fuusio (eli faktorisoitu ristiintila-vuorovaikutus): kuva- ja tekstitilat eivät vuorovaikuta välikerroksissa ristiinhuomion (cross-attention) tai token-tason vuorovaikutusten kautta. Sen sijaan kunkin tilan täysi semantiikka oletetaan tiivistettävän yhdeksi tiheäksi vektoriyhteenvedoksi, ja ristiintila-vuorovaikutuksen oletetaan olevan täysin hajotettavissa sisätuloksi. Tämä kompromissi priorisoi äärimmäisen hakutehokkuuden (mahdollistaen kuvaupotusten offline-esilaskennan miljardien skaalan vektorihakua varten) hienorakeisen ristiintila-päättelyn (kuten tokenin alueeseen kohdistamisen tai monimutkaisten koostumuksellisten spatiaalisten suhteiden) sijaan.
3Kuvaile intuitiota sen takana, että kuvien ja tekstien piirteet projisoidaan yhteiseen normalisoituun avaruuteen ja kosinussamankaltaisuutta optimoidaan.
Kuvien ja tekstien piirteiden projisointi yhteiseen normalisoituun avaruuteen (tyypillisesti yksikköhypersfäärille L2-normalisoinnin kautta) ja kosinussamankaltaisuuden optimointi irrottaa upotuksen semanttisen suunnan sen vektorisuuruudesta. Ilman normalisointia rajoittamaton pistotulo antaa mallille mahdollisuuden minimoida harjoitustappion triviaalisti paisuttamalla piirteiden normeja helppojen tai usein esiintyvien näytteiden kohdalla sen sijaan, että kohdistaisi niiden semanttiset suunnat.
Normalisointi vektoreiden yksikköhypersfäärille rajaa samankaltaisuusarvot tarkasti välille [-1, 1], varmistaen, että etäisyys vastaa puhtaasti kulmaerotusta. Tämä vakauttaa optimointigradientit, estää representaation räjähdyksen tai romahtamisen ja varmistaa, että jokainen näyte erässä vaikuttaa tasapuolisesti tappiofunktioon riippumatta modaliteettisidonnaisista skaalaeroista. Yhdistettynä opittavissa olevaan lämpötilaparametriin se säätelee todennäköisyysjakauman terävyyttä hypersfäärillä tasapainottaakseen todellisten parien kohdistuksen negatiivisten parien tasaisen hajautuksen kanssa.
import torch
import torch.nn.functional as F
# Unnormalized embeddings with extreme norm differences
v = torch.tensor([[10.0, 0.0], [0.1, 0.0]])
t = torch.tensor([[5.0, 0.0], [0.1, 0.0]])
# Raw dot products: heavily distorted by magnitude (50.0 vs 0.01)
raw_dot = v @ t.T
# L2 Normalized:
v_norm = F.normalize(v, p=2, dim=-1)
t_norm = F.normalize(t, p=2, dim=-1)
cosine_sim = v_norm @ t_norm.T
print('Cosine similarity matrix:\n', cosine_sim)
4Selitä visuaalinen maadoitus (visual grounding) ja viittaavan ilmaisun ymmärtäminen (Referring Expression Comprehension, REC) kieliehdoitettuna lokalisointina, ja miten ne eroavat kuvatason samankaltaisuudesta.
Visuaalinen maadoitus (joka usein operationalisoidaan viittaavan ilmaisun ymmärtämisenä, eli REC:nä) on tehtävä, jossa lokalisoidaan tietty visuaalinen alue, rajauslaatikko (bounding box) tai segmentointimaski kuvan sisällä luonnollisen kielen viittaavan ilmaisun perusteella (esim. 'mies sinisessä takissa lampun vieressä'). Se käsittelee lokalisointia kieleen sidottuna, vaatien mallilta kielellisten spatiaalisten suhteiden, attribuuttien ja objektien identiteettien ratkaisemista pikseli- tai spatiaalisiin koordinaatteihin. Tämä eroaa perustavanlaatuisesti kuvatason samankaltaisuudesta (image-level similarity), joka laskee yhden kokonaisvaltaisen semanttisen samankaltaisuuspistemäärän koko kuvan ja tekstimerkkijonon välillä (esim. sen määrittämiseksi, vastaako kuva kuvatekstiä 'mies puistossa'). Kuvatason samankaltaisuus ei tuota spatiaalisia koordinaatteja, voi löytää vastaavuuksia kuvista, joissa viitattu objekti ei ole yksilöllisesti lokalisoitu, ja epäonnistuu usein hienojakoisen viittausten disambiguaation ratkaisemisessa useiden samankaltaisten objektien välillä samassa näkymässä.
# Image-level similarity:
# Input: Image I, Text T ("black dog sitting on the left")
# Output: scalar score s in [0, 1] or dot product
similarity_score = image_text_model(image, text)
# Referring Expression Comprehension (Visual Grounding):
# Input: Image I, Text T ("black dog sitting on the left")
# Output: Bounding box coordinates [x_min, y_min, x_max, y_max]
bbox = grounding_model.predict_box(image, text)
5Selitä risti-attentio (cross-attention) fuusiomekanismina visuaalisten tokenien ja tekstilähdöjen välillä monimodaalisissa muuntajaverkoissa.
Monimodaalisissa muuntajaverkoissa risti-attentio toimii epäsymmetrisenä fuusiomekanismina, jossa yksi modaliteetti ohjaa kyselyitä (Q) huomioimaan toisesta modaliteetista poimittuja avaimia (K) ja arvoja (V). Esimerkiksi, kun visuaaliset tokenit toimivat kyselyinä ja tekstilähdöt avaimina ja arvoina, jokainen visuaalinen token laskee attentiolla painotetun summan tekstirepresentaatioista, ehdollistaen dynaamisesti visuaalisia ominaisuuksia tekstuaalisen kontekstin perusteella (ja päinvastoin, kun tekstilähdöt kysyvät visuaalisia tokeneita). Matemaattisesti, kun annetaan visuaalinen sekvenssi X_v ja tekstisekvenssi X_t, risti-attentio laskee: CrossAttention(Q_v, K_t, V_t) = softmax((Q_v * K_t^T) / sqrt(d)) * V_t, missä Q_v = X_v * W_Q, K_t = X_t * W_K ja V_t = X_t * W_V. Tämä mekanismi antaa mallin suorittaa hienorakeista tokenienvälistä semanttista kohdistusta modaliteettien välillä riippumatta sekvenssin pituuksien tai alkuperäisten ominaisuusavaruuksien eroista. Kaksisuuntainen fuusio voidaan saavuttaa käyttämällä kahta symmetristä risti-attentiokerrosta (esim. näkö-kielestä ja kieli-näköön) tai vuorottelemalla risti-attentioblokkeja.
6Selitä, miten kuvien augmentaatiot (image augmentations), kuten rajaus, värivärähtely (color jitter) ja pakkaus, voivat auttaa tai haitata kuva-teksti-kontrastiivista kohdistusta.
Multimodaalisessa kontrastiivisessa oppimisessa (kuten CLIP (Contrastive Language-Image Pre-training)) kuvien augmentaatiot palvelevat eri tarkoitusta kuin unimodaalisessa itseohjatussa oppimisessa (kuten SimCLR (Simple Framework for Contrastive Learning of Visual Representations)). Koska kuvia verrataan paritettuihin tekstikuvauksiin sen sijaan, että niitä verrattaisiin saman kuvan toiseen augmentoituun näkymään, augmentaatiot voivat sekä hyödyttää että vääristää representaation oppimista.
**Miten augmentaatiot auttavat:**
1. **Oikopolkuoppimisen estäminen:** Miedot augmentaatiot (kuten satunnainen rajaus, kevyt vaakasuora peilaus ja kohtalainen värivärähtely) estävät näköenkooderia tukeutumasta merkityksettömiin matalan tason visuaalisiin artefakteihin (esim. taustavärijakaumiin, kulmavesileimoihin tai spatiaalisiin sijaintiharhoihin).
2. **Näkökulma- ja mittakaavainvarianssi:** Kohtalainen skaalaus ja rajaus kannustavat mallia tunnistamaan semanttisia objekteja vaihtelevilla polttoväleillä ja perspektiiveillä, mikä varmistaa vankan zero-shot-yleistyksen.
**Miten augmentaatiot voivat vahingoittaa (semanttinen epäsuhta):**
1. **Aggressiivinen satunnainen rajaus:** Jos kuvateksti kuvaa tiettyä objektia ('lintu oksalla') ja aggressiivinen rajaus poistaa linnun kokonaan, jäljellä oleva rajaus (vain lehdet/taivas) pakotetaan silti kohdistumaan lintua koskevaan kuvatekstiin. Tämä lisää virheellistä ohjausmelua ja heikentää tiedonhausta tarkkuutta.
2. **Voimakas värivärähtely / sävyn kääntäminen:** Monet kuvatekstit kuvaavat eksplisiittisesti väriominaisuuksia ('keltainen taksi', 'punainen omena'). Voimakkaat värimuutokset muuttavat taksin siniseksi tai omenan vihreäksi, mikä aiheuttaa suoran semanttisen ristiriidan visuaalisen syötteen ja tekstikuvauksen välille.
3. **Voimakas sumennus ja pakkaus:** Aggressiivinen spatiaalinen alinäytteistys, JPEG-pakkaus tai Gaussin sumennus tuhoavat hienojakoisia tekstuaalisia vihjeitä (OCR (Optical Character Recognition) -teksti kylteissä, logoissa, hienoissa tekstuureissa), jotka on eksplisiittisesti kuvattu paritetuissa kuvateksteissä.
**Käytännön sääntö:** Multimodaalinen kontrastiivinen harjoittelu vaatii huomattavasti konservatiivisempia augmentaatioita (esim. satunnainen koon muuttaminen ja rajaus skaala-alueella [0.5, 1.0] sekä kevyt peilaus) kuin unimodaalinen itseohjattu oppiminen.
7Selitä kuva-teksti-haku (image-text retrieval) tehtävänä ja ero suljetun joukon täsmäytyksen (closed-set matching) ja avointen maailmojen haun (open-world retrieval) välillä suurissa korpuksissa.
Kuva-teksti-haku (image-text retrieval) on tehtävä, jossa etsitään vastaavia tietoja eri modaliteettien välillä, kun kysely annetaan yhdessä modaliteetissa (tekstistä kuvaksi tai kuvasta tekstiksi). Tämä toteutetaan tyypillisesti kuvaamalla sekä kuvat että tekstit jaettuun esitystilaan, jossa samankaltaisuus korreloi relevanssin kanssa. Suljetun joukon täsmäytys (closed-set matching) olettaa kiinteän, ennalta määritellyn ehdokasjoukon tunnetuilla todellisilla vastaavuuksilla (kuten standardi Flickr30k- tai MS-COCO-vertailuaineistot), mikä mahdollistaa tyhjentävän parittaisen samankaltaisuuslaskennan tai kaikki-kaikkiin ristihakukon (cross-attention). Avointen maailmojen haku (open-world retrieval) toimii massiivisten, dynaamisten, kuratoimattomien korpusten (esim. miljoonista miljardeihin verkkosivuihin tai luettelokohteisiin) kanssa, joissa ehdokasjoukot ovat rajoittamattomia, harhauttajat (distractors) ja vääriä negatiivisia (false negatives) ovat yleisiä, ja skaalautuvat likimääräisen lähimmän naapurin (ANN) hakuindeksit (esim. Faiss, HNSW) ovat välttämättömiä, koska tyhjentävä ristiattentio kaikkien parien yli on laskennallisesti hallitsematonta.
import torch
import torch.nn.functional as F
# Closed-set matching: full pairwise similarity matrix over fixed evaluation set
image_embeds = F.normalize(torch.randn(1000, 512), dim=-1)
text_embeds = F.normalize(torch.randn(1000, 512), dim=-1)
sim_matrix = torch.matmul(text_embeds, image_embeds.T) # (1000, 1000)
# Open-world retrieval: query vector queried against an indexed corpus using ANN
# index = faiss.IndexHNSWFlat(512, 32)
# distances, indices = index.search(query_embed, k=10)
InfoNCE-tyyppiset kontrastiiviset häviöfunktiot (kuten CLIP:ssä) käsittelevät kohdistusta kategoriallisena moniluokkaluokittelutehtävänä. Kullekin näytteelle se laskee softmax-jakauman kaikkien ehdokasnegatiivisten parien yli erässä normalisoiden samankaltaisuudet koko eräjoukosta. Sen sijaan parittaiset sigmoid-kontrastiiviset häviöfunktiot (kuten SigLIP:ssä) käsittelevät jokaista kuva-teksti-samankaltaisuusmatriisin merkintää itsenäisenä binääriluokittelutehtävänä, soveltaen sigmoid-funktiota ja binääristä ristientropiahäviötä paria kohti (positiiviset parit tavoittavat +1, negatiiviset parit -1). Keskeiset erot ovat: 1. Kytkentä vs. irrotus: InfoNCE kytkee kaikki negatiiviset globaalin softmax-osittelun nimittäjän kautta, mikä aiheuttaa kilpailua, jossa kovimmat negatiiviset hallitsevat gradientteja. SigLIP:n itsenäinen parittainen häviö voidaan laskea paikallisesti ilman globaalia GPU:iden (Graphics Processing Unit) välistä softmax-normalisointia, mikä parantaa skaalautuvuuden tehokkuutta ja säilyy vakaana sekä pienillä että erittäin suurilla eräkooilla. 2. Hajautettu skaalautuvuus ja tehokkuus: InfoNCE vaatii samankaltaisuusmatriisien keräämisen GPU:iden yli globaalia normalisointia varten (all-gather-kommunikaation pullonkaula). SigLIP:n itsenäinen parittainen häviö voidaan laskea paikallisesti ilman globaalia GPU:iden välistä softmax-normalisointia, mikä parantaa skaalautuvuuden tehokkuutta ja säilyy vakaana sekä pienillä että erittäin suurilla eräkooilla.
import torch
import torch.nn.functional as F
def siglip_loss(sim_matrix, temperature, bias):
# sim_matrix: [B, B] dot product of normalized embeddings
# targets: 1 on diagonal (positive), -1 on off-diagonals (negative)
B = sim_matrix.size(0)
targets = 2 * torch.eye(B, device=sim_matrix.device) - 1.0
logits = sim_matrix * temperature + bias
# Pairwise binary cross entropy with log-sigmoid
return -torch.mean(F.logsigmoid(targets * logits))
9Selitä, miten vaikeat negatiivit (hard negatives) ja väärät negatiivit (false negatives) vaikuttavat kuva-teksti-kontrastiiviseen oppimiseen.
Vaikeat negatiivit ja väärät negatiivit vaikuttavat vastakkaisesti kuva-teksti-kontrastiiviseen oppimiseen:
1. Vaikeat negatiivit ovat epäyhteensopivia pareja, jotka ovat semanttisesti tai visuaalisesti hyvin lähellä ankkuria (esim. kuva siperianhuskystä yhdistettynä kuvatekstiin 'alaskanmalamuutti'). Vaikeat negatiivit tarjoavat suuruisia, informatiivisia gradienttisignaaleja. Ne pakottavat mallin katsomaan karkeiden kategoriapiirteiden ohi ja oppimaan hienojakoisia visuaalis-kielellisiä yksityiskohtia ja tarkkoja päätösrajoja.
2. Väärät negatiivit esiintyvät, kun satunnaisesti poimitut 'negatiiviset' parit erässä ovat itse asiassa päteviä semanttisia vastineita (esim. kaksi erillistä kuvaa kultaisistanoutajista, joista toinen on yhdistetty negatiiviseksi 'söpö kultainennoutaja puistossa' -kuvatekstiä vastaan). Väärät negatiivit rankaisevat oikeita semanttisia kohdistuksia pakottamalla mallin siirtämään päteviä vastine-esityksiä (representations) toisistaan. Tämä vioittaa gradientteja, heikentää esityksen laatua ja vaimentaa oikeutettua synonyymisyyttä ja visuaalista vaihtelua. Lieventämisstrategioita vääriä negatiiveja varten ovat esimerkiksi pehmeät/etikettisiloittavat kontrastiiviset tavoitteet, puolueettomuutta korjaava kontrastiivinen oppiminen, aineiston duplikaattien poisto ja moni-positiivinen yhdistäminen.
import torch
import torch.nn.functional as F
# Image 0 and Image 1 both depict 'a red sports car'
# Text 0: 'a red sports car', Text 1: 'a fast red car'
# In standard InfoNCE, Text 1 is treated as a negative for Image 0.
sim = torch.tensor([[0.95, 0.90], # Image 0 similarities
[0.88, 0.94]]) # Image 1 similarities
loss_img0 = -F.log_softmax(sim / 0.07, dim=-1)[0, 0]
print(f'InfoNCE loss for Image 0: {loss_img0.item():.4f}')
# High similarity to false negative Text 1 (0.90) heavily penalizes the model
10Vertaa globaalia kuva-teksti-kohdistusta alue-sana- tai token-tason kohdistustavoitteisiin.
Globaali kuva-teksti-kohdistus (global image-text alignment) yhdistää kokonaisen kuvan ja kokonaisen tekstisekvenssin yksittäisiin kokonaisvaltaisiin upotusvektoreihin (esim. CLIP-mallin yhdistettyjen piirteiden kautta) ja kohdistaa ne kontrastivisen tavoitefunktion, kuten InfoNCE:n, avulla. Tämä tarjoaa erinomaiset skaalautuvuusominaisuudet, nopeat indeksoitavat esitykset hakuun ja vahvan semanttisen klusteroinnin. Se kuitenkin kärsii karkeasta spatiaalisesta rakeisuudesta, kamppailee hienorakeisten visuaalisten yksityiskohtien, kompositionaalisuuden, laskemisen ja spatiaalisten suhteiden kanssa, ja osoittaa usein attribuuttien sitomisongelmia.
Sen sijaan alue-sana- tai token-tason kohdistus (region-word or token-level alignment) toimii hienorakeisemmällä tasolla kuvan osissa (esim. patch-tokenit, objektin rajauslaatikon piirteet) ja lauseen osissa (esim. sana- tai alisanatokenit). Menetelmät, kuten FILIP, GLIP tai VinVL, kohdistavat tokeneita hienorakeisten kontrastivisten häviöiden (kuten token-kohtainen maksimisimilaarisuus tai Chamfer-samankaltaisuus) tai optimaalisen siirron / ristiinhuomiomekanismin kohdistuksen avulla. Tämä säilyttää eksplisiittisesti spatiaaliset ja kielelliset koostumukselliset yksityiskohdat, mahdollistaen objektintunnistuksen, visuaalisen maadoituksen ja tarkan attribuuttien sitomisen, mutta korkeamman laskenta- ja muistikompleksisuuden, suuremman päättelyviiveen ja meluisampien kohdistussignaalien kustannuksella.
import torch
import torch.nn.functional as F
# visual_tokens: [B, N_v, D], text_tokens: [B, N_t, D]
def token_level_maxsim_similarity(visual_tokens, text_tokens):
v_norm = F.normalize(visual_tokens, dim=-1)
t_norm = F.normalize(text_tokens, dim=-1)
# Compute similarity matrix between all visual and text tokens: [B, N_t, N_v]
sim_matrix = torch.bmm(t_norm, v_norm.transpose(1, 2))
# Text-to-image: For each word token, find maximum visual token similarity and average
t2i_sim = sim_matrix.max(dim=-1).values.mean(dim=-1) # [B]
return t2i_sim
11Vertaa varhaista fuusiota, myöhäistä fuusiota, väliaikaista fuusiota, ristiattentiofuusiota, portitettua fuusiota ja ketjutusta monimodaalisten mallien yhteydessä.
Monimodaaliset fuusiostrategiat yhdistävät näkö- ja kielisignaaleja eri syvyyksillä ja rakenteellisilla kokoonpanoilla:
1. **Varhainen fuusio:** Raaka- tai matalan tason piirteet (esim. kuvalohkojen upotukset ja sanatunnusten upotukset) yhdistetään syöttövaiheessa ja syötetään yhteen jaettuun runkoarkkitehtuuriin (backbone). Tämä mahdollistaa syvälliset risti-modaaliset vuorovaikutukset heti ensimmäisestä kerroksesta lähtien, mutta on laskennallisesti kallista ja vaikeuttaa unimodaalisen esikoulutuksen uudelleenkäyttöä.
2. **Myöhäinen fuusio:** Modaliteetit käsitellään itsenäisesti syvien unimodaalisten runkoarkkitehtuurien avulla globaaleiksi representaatiovektoreiksi, jotka yhdistetään vasta aivan lopussa yksinkertaisen aggregaation avulla (esim. pistotulo, kosiniyhtenäisyys tai matala MLP (Multi-Layer Perceptron)). Tämä on erittäin tehokas ja ihanteellinen indeksoitavaan hakuun, mutta se ei pysty vangitsemaan hienojakoisia risti-modaalisia vuorovaikutuksia.
3. **Väliaikainen fuusio:** Unimodaaliset runkoarkkitehtuurit käsittelevät syötteitä useiden kerrosten ajan, ja fuusio tapahtuu välivaiheissa jaettujen kerrosten tai sivuttaisyhteyksien kautta tasapainottaen unimodaalisen erikoistumisen ja monimodaalisen vuorovaikutuksen.
4. **Ristiattentiofuusio:** Käyttää monipäistä attentioita, jossa toinen modaliteetti toimittaa kyselyt (queries) ja toinen avaimet/arvot (keys/values). Se tarjoaa korkean representaatiokyvyn tunnuksesta tunnukseen -ehdollistamisen avulla, sopeutuen heterogeenisiin sekvenssipituuksiin.
5. **Portitettu fuusio:** Käyttää opittuja portitusmekanismeja (esim. sigmoidi- tai tanh-portit) dynaamisesti painottamaan kunkin modaliteetin tai fuusiokerroksen panosta kontekstuaalisen luottamuksen perusteella, estäen yhtä modaliteettia dominoimasta tai korruptoimasta esikoulutettuja painoja.
6. **Ketjutus:** Yhdistää piirrevektoreita tai tunnussekvenssejä piirredimension mukaisesti (piirreketjutus) tai sekvenssin pituusdimension mukaisesti (tunnusketjutus ennen yhtenäistä transformeria). Se on yksinkertainen ja ei-parametrinen, mutta piirreketjutus vaatii kohdistettuja spatiaalisia/temporaalisia dimensioita, kun taas tunnusketjutus skaalautuu neliöllisesti kokonaissekvenssipituuden suhteen itsearvioinnissa (self-attention).
12Vertaa kaksoiskooderin haku-malleja (dual-encoder retrieval models) ristikooderin uudelleenjärjestelijöihin (cross-encoder rerankers) kuvan ja tekstin yhteensopivuudessa vuorovaikutuskyvyn, tarkkuuden ja viiveen osalta.
Kaksoiskooderi- (dual-encoder, bi-encoder) mallit ja ristikooderin uudelleenjärjestelijät (cross-encoder rerankers) edustavat kahta erillistä paradigmaa kuvan ja tekstin yhteensopivuudessa, ja ne tarjoavat perustavanlaatuisia kompromisseja vuorovaikutuskyvyn, tarkkuuden ja viiveen välillä:
1. **Vuorovaikutuskyky:**
* **Kaksoiskooderit** (esim. CLIP): Käsittelevät kuvaa ja tekstiä erillisten, irrallisten taustaverkkojen kautta. Monimodaalinen vuorovaikutus on tiukasti myöhäistä ja matalaa, rajoittuen yhteen pistetuloon tai kosinisimilaarisuuteen globaalisti yhdistettyjen vektoreiden välillä. Niistä puuttuu token-tason risti-modaaliset vuorovaikutukset.
* **Ristikooderit** (esim. UNITER, ViLT, ALBEF:n monimodaalinen haara): Yhdistävät visuaaliset ja tekstitokenit jaettuun transformeriin tai käyttävät risti-attentiokerroksia. Jokainen visuaalinen token voi olla vuorovaikutuksessa jokaisen tekstitokenin kanssa useiden kerrosten läpi, mikä mahdollistaa syvän risti-modaali päättelyn.
2. **Tarkkuus:**
* Kaksoiskooderit saavuttavat heikomman tarkkuuden monimutkaisissa yhdistelmäkyselyissä, spatiaalisissa suhteissa, negatoinnissa ja hienojakoisessa attribuuttien vastaavuudessa yksittäisten vektoriesitysten pullonkaulan vuoksi.
* Ristikooderit saavuttavat merkittävästi korkeamman tarkkuuden monimutkaisissa, hienojakoisissa ja koostumuksellisissa kuvan ja tekstin yhteensopivuustehtävissä.
3. **Viive ja Skaalautuvuus:**
* Kaksoiskooderit mahdollistavat kuvien upotusten (embeddings) esilaskennan ja indeksoinnin offline-tilassa vektoritietokannassa (esim. Milvus, FAISS). Päätelmäajossa vain tekstikysely koodataan, ja haku miljoonista ehdokkaista vaatii vain kevyitä likimääräisiä lähimpien naapureiden (Approximate Nearest Neighbor, ANN) pistetuloja (alle millisekunnin viiveellä).
* Ristikooderit vaativat täyden yhteisen neuroverkon ajamista jokaiselle (kuva, teksti) ehdokasparille kyselyhetkellä (O(N) eteenpäinsyöttöä N ehdokkaalle), mikä johtaa suuruusluokkia suurempaan viiveeseen ja tekee niistä laskennallisesti liian kalliita ensimmäisen vaiheen hakuun suurista korpuksista. Käytännön tuotantojärjestelmissä kaksivaiheinen putki on standardi: kaksoiskooderi hakee top-K ehdokasta (esim. K=100) pienellä viiveellä, jonka jälkeen ristikooderi järjestää ne uudelleen korkean tarkkuuden saavuttamiseksi.
13Suunnittele multimodaalinen RAG (Retrieval-Augmented Generation) -järjestelmä PDF-tiedostojen tai käyttöoppaiden yli, jotka sisältävät tekstiä, taulukoita, kaavioita, kuvakaappauksia, diagrammeja ja upotettuja kuvia.
Päästä päähän multimodaalinen RAG (Retrieval-Augmented Generation) -järjestelmä monimutkaisille visuaalisille dokumenteille (PDF-tiedostot, käyttöoppaat, raportit) kattaa neljä keskeistä arkkitehtuurivaihetta:
1. **Sisäänluku ja asettelun huomioiva jäsentäminen:** PDF-sivut käsitellään asettelun huomioivien dokumenttimallien (esim. LayoutLM, DocTR) tai näköjärjestelmän jäsentämisputkien (vision parsing pipelines) kautta sisällön segmentoinniksi jäsennellyiksi lohkoiksi: tekstikappaleet, jäsennellyt taulukot (muunnettuna HTML/Markdown-muotoon solujen yhdistelyineen), renderöidyt kaaviokuvat datasaroineen sekä erilliset diagrammit tai kuvakaappaukset alueellisine rajauslaatikoineen.
2. **Multimodaalinen indeksointi ja kaksoisesitys:**
* **Visuaaliset resurssit (kaaviot, kuvakaappaukset, diagrammit):** Tallennetaan kuvien leikkauksina tiiviiden multimodaalisten upotusten (dense multimodal embeddings) (esim. SigLIP, CLIP tai ColPali-visuaaliset patch-tokenit) kanssa, sekä synteettisten teksti-yhteenvetojen ja VLM:n (Vision-Language Model) luoman optisen tekstintunnistuksen (OCR) tekstin kanssa tiiviiseen tekstihakemistoon.
* **Taulukot:** Tallennetaan jäsenneltynä Markdown/HTML-muodossa tekstivektori- ja BM25-indekseihin.
* **Teksti:** Jaetaan semanttisten osioiden mukaan ja indeksoidaan tiiviiden upotusten ja harvojen avainsanojen avulla.
3. **Hybridi haku ja multimodaalinen uudelleenjärjestely:**
* **Ensimmäisen vaiheen haku:** Suorittaa rinnakkaisen haun harvojen BM25-hakemistojen (avainsanat, OCR-teksti, taulukkomerkintä), tiiviiden tekstivektoreiden ja visuaalisten upotusindeksien (ANN-haku) poikki.
* **Fuusio ja uudelleenjärjestely:** Yhdistää ehdokkaat (esim. Reciprocal Rank Fusionin avulla) ja pisteyttää parhaat kohteet käyttäen multimodaalista ristiinenkooderia tai visuaalista myöhäisen vuorovaikutuksen mallia (pisteyttämällä kyselytekstin korkearesoluutioisia kuvien leikkauksia ja jäsennettyä tekstiä vastaan).
4. **Multimodaalinen kontekstin kokoaminen ja maadoitettu generointi:** Top-$k$ multimodaalinen konteksti – renderöidyt kuvapatchit, taulukoskeemat ja tekstikappaleet asiakirja-/sivumetatietoineen – välitetään ohjeistuskoulutetulle VLM:lle (esim. GPT-4o, Claude 3.5 Sonnet tai avoimen lähdekoodin Qwen2-VL). Generointikehote varmistaa lähteen alkuperän vaatimalla eksplisiittisiä viittauksia (sivunumerot, kuvionumerot tai rajauslaatikot).
from dataclasses import dataclass
from typing import Optional, List
@dataclass
class MultimodalChunk:
chunk_id: str
document_id: str
page_number: int
modality_type: str # 'text', 'table', 'chart', 'diagram'
text_payload: str # Raw text or structured Markdown/HTML
vlm_caption: Optional[str] = None # Synthetic summary of visual content
bbox: Optional[List[float]] = None # [x0, y0, x1, y1]
image_crop_path: Optional[str] = None
dense_embedding: Optional[List[float]] = None
# Indexing strategy: Text search covers text_payload + vlm_caption;
# Multimodal search matches dense_embedding or visual tokens.
14Selitä, miten monimodaalisen RAG (hakuun perustuva generointi) -arvioinnin tulisi erikseen mitata haun laatua, todisteiden hyödyntämistä, alkuperää ja lopullisen vastauksen luotettavuutta.
Monimodaalisen RAG:n (hakuun perustuvan generoinnin) arviointi edellyttää järjestelmän hajottamista neljään irralliseen arviointidimensioon sen selvittämiseksi, johtuvatko virheet hausta, kontekstin kulutuksesta, viittausten tarkkuudesta vai generoinnista:
1. **Haun laatu:** Arvioi, tunnistaako hakija tarvittavat visuaaliset ja tekstilliset palat. Keskeisiä mittareita ovat monimodaalinen Recall@K, NDCG@K ja MRR. Visuaalisten elementtien osalta tämä sisältää myös Visuaalisen IoU (Intersection over Union) / Rajaavan laatikon palautuksen (sisältääkö haettu kuv rajaavan laatikon relevantin kaavion/kuvaajan) ja Modaalisuuden palautuksen tasapainon (varmistaen, että muut kuin tekstimuodot, kuten taulukot ja kuvaajat, eivät jää järjestelmällisesti huomaamatta).
2. **Todisteiden hyödyntäminen (riittävyys ja välttämättömyys):** Mittaa, tukeutuuko generointimalli todella haettuun monimodaaliseen todisteaineistoon sen sijaan, että se generoi vastauksia puhtaasti parametrisesta muistista. Tätä mitataan kontekstin relevanssin (haettujen visuaalisten/tekstillisten tokenien tarkkuus kysymystä tukien), todisteiden välttämättömyyden / ablaatiotestauksen (peitetään tai poistetaan haettu kaavio/taulukko sen tarkistamiseksi, epäonnistuuko vastaus) ja ristihuomioattribuution analyysin avulla.
3. **Alkuperä ja viittausten tarkkuus:** Mittaa, ovatko lähteen attribuutiot tarkkoja ja todennettavissa. Arvioidaan Precision, Recall ja F1 -mittareilla viittausten (asiakirjojen nimet, sivunumerot, kuvatunnisteet tai rajaavan laatikon koordinaatit) osalta. Automatisoidut tarkistukset varmistavat, että viitattu rajaava laatikko tai sivu todella sisältää kysymykseen vastaamiseen tarvittavan todellisen todisteaineiston.
4. **Lopullisen vastauksen luotettavuus ja oikeellisuus:**
* **Luotettavuus / Perustelu:** Arvioi, onko jokainen generoitu väite haetun monimodaalisen kontekstin mukainen ilman hallusinaatiota (tyypillisesti arvioidaan VLM (Visual Language Model) tuomarina tarkistamalla väitteen seurausta tekstiä ja visuaalisia otteita vastaan).
* **Faktuaalinen oikeellisuus:** Arvioi, vastaako generoitu vastaus todellisuutta.
* **Kieltäytymisen kestävyys:** Testaa, kieltäytyykö malli oikein vastaamasta, kun haettu konteksti on epäolennainen tai ristiriitainen.
# Evaluation record schema for a single Multimodal RAG query:
eval_record = {
'retrieval_quality': {
'hit_at_k': True, # Top-3 chunks contain target diagram
'visual_bbox_iou': 0.85 # Retrieved crop overlap with true figure region
},
'evidence_utilization': {
'necessity_ablation_passed': True # Removing chart causes answer to fail
},
'provenance': {
'page_match': True, # Cited Page 12 (Ground Truth Page 12)
'figure_id_match': True # Cited 'Figure 4'
},
'faithfulness': {
'claim_entailment_score': 1.0, # All claims entailed by context
'hallucination_detected': False
}
}
all_passed = all(all(metrics.values()) for metrics in eval_record.values())
print(f'System passes all decoupled checks: {all_passed}')
15Pohdi tuotannon monimodaalisten hakumallien päivittämistä, kun gallerian upotukset ja indeksit on päivitettävä suuressa mittakaavassa.
Monimodaalisen haku järjestelmän päivittäminen suuressa mittakaavassa aiheuttaa esitystavan ajelehtimisen ongelman: uudelleen generoidut upotukset sijaitsevat eri geometrisessa latentissa tilassa, eikä niitä voida verrata suoraan olemassa oleviin gallerian upotuksiin ilman merkittävää hakuasteen heikkenemistä. Siksi nolla-katkosaikaiset päivitykset edellyttävät joko kahden indeksin blue/green-käyttöönottoja, yhteensopivuusoppimista (kuten taaksepäin yhteensopiva koulutus tai muunnosadapterit) tai vaiheistettuja uudelleentallennusputkia. Standardissa blue/green-uudelleentallennusprosessissa offline-erätyöt laskevat uusia upotuksia koko galleriasta ja rakentavat uuden vektorindeksin (kuten HNSW tai IVF). Kun uudelleenrakennus on käynnissä, reaaliaikainen hakuliikenne jatkaa aktiivisen vanhan indeksin kyselyä. Uudet saapuvat kohteet käsitellään kaksoiskirjoituksen tai suoratoistettavien muutosten tiedonkeruun (CDC, Change Data Capture) lokien avulla, jotta molemmat indeksit pysyvät ajan tasalla. Kun uusi indeksi on validoitu varjoliikenteen avulla ja lämmitetty muistiin, liikenne siirtyy atomisesti uuteen kooderiin ja indeksiin, minkä jälkeen vanha indeksi poistetaan käytöstä. Vaihtoehtoisesti taaksepäin yhteensopiva oppiminen rajoittaa uuden kyselykooderin linjautumaan vanhan galleriatilan kanssa, mikä mahdollistaa välittömät kyselymallipäivitykset samalla kun galleriaa täytetään asynkronisesti ajan myötä.
class MultimodalRetrievalRouter:
def __init__(self, v1_service, v2_service, dual_write=True):
self.v1 = v1_service # Model v1 + Index v1
self.v2 = v2_service # Model v2 + Index v2
self.active_version = "v1"
self.dual_write = dual_write
def search(self, query_multimodal):
# Route query strictly to the encoder matching the active index
if self.active_version == "v1":
return self.v1.search(query_multimodal)
return self.v2.search(query_multimodal)
def ingest_new_item(self, item):
# Dual-write during migration window so the new index is up-to-date at cutover
self.v1.index_item(item)
if self.dual_write and self.v2.is_ready_for_ingest:
self.v2.index_item(item)