Skip to main content
Christian Dalager

Fra semantisk søgning til semantisk læring?

Billede fra LinkedIn-opslag
Fra semantisk søgning til semantisk læring? I semantisk søgning bruger man en embedding-model til at placere en tekstbid i et multidimensionelt vector...

I semantisk søgning bruger man en embedding-model til at placere en tekstbid i et multidimensionelt vector space, der er modellens semantiske univers. Hvor modellen, hvis den er god til dansk, placerer sproglige konstruktioner tæt på hinanden, udfra hvad modellen viden. Så ens tekstsamling bliver fordelt semantisk i det rum, når man laver embeddings og gemmer dem i en særlig database der kan repræsentere disse mulitidimensionelle koordinater. Og når man så spørger "Hvad er en gedehams?" og laver en embedding af dette spørgsmål og beder om at finde noget, der er tæt på, så får man noget tilbage om insekter og hvepse, fordi det er i nærheden af.

Men hvad nu, hvis man kan putte andre ting ind i et vector space. Fx en sekvens af hændelser? Det kalder nogen for Trace Encoding og andre begreber omkring det er Representation Learning og Process Mining.

For at prøve at forstå det har jeg lavet et sten-saks-papir spil.

Og her er det, man laver en embedding af, ikke en sætning men en sekvens af træk. Fx sten-saks-saks-sten-papir / papir-sten-saks-papir-papir / sten-sten-sten-sten-sten. Når du spiller mod computeren vil embeddings af disse sekvenser løbende blive gemt i vektordatabasen.

Når den så skal forudse dit næste træk, vil den lave en "semantisk" søgning på din nuværende træk-sekvens op mod sekvenser, du tidligere har spillet, og så finde nærmeste naboer til det du har gang i og gætte på dit næste træk.

I et sten-saks-papir spil kan man få lidt bedre resultater med en statisk n-gram model (der bare tæller mønstre), men hvis kompleksiteten af det, man arbejder med stiger, ændrer billedet sig.

Eksperimentet kører i browseren med et lille WASM compiled Rust-library fra ruvector, der løbende laver justeringer i embeddings undervejs i spillet og på den måde lærer. Så i stedet for i forvejen at have bygget en model, der repræsenterer kendte patterns, så gøres det live.

Hvad kan jeg så bruge det til?

Jeg har lagt sten-saks-papir eksperimentet på github pages, så det kan prøves ved siden af en n-gram predictor - links til det, libraries, kildekode og en arktikel i kommentar.

Delt indhold: Fra semantisk søgning til semantisk læring?

Oprindeligt delt på LinkedIn