Semantiske språkmodeller

Fullført

Note

Se fanen Tekst og bilder for mer informasjon!

Som state of the art for NLP har avansert, har evnen til å trene modeller som innkapsler det semantiske forholdet mellom tokener ført til fremveksten av kraftige dype læringsspråkmodeller. Kjernen i disse modellene er kodingen av språktokener som vektorer (flerverdimatriser med tall) kjent som innebygginger.

Denne vektorbaserte tilnærmingen til modellering av tekst ble vanlig med teknikker som Word2Vec og GloVe, hvor teksttokens representeres som tette vektorer med flere dimensjoner. Under modelltrening tildeles dimensjonsverdiene for å reflektere de semantiske egenskapene til hver token basert på bruken i treningsteksten. De matematiske relasjonene mellom vektorene kan da utnyttes for å utføre vanlige tekstanalyseoppgaver mer effektivt enn eldre rent statistiske teknikker. Et nyere fremskritt i denne tilnærmingen er å bruke en teknikk kalt oppmerksomhet for å betrakte hver token i kontekst, og beregne innflytelsen til tokenene rundt den. De resulterende kontekstualiserte embeddingene, slik som de som finnes i GPT-familien av modeller, danner grunnlaget for moderne generativ AI.

Å representere tekst som vektorer

Vektorer representerer punkter i flerdimensjonalt rom, definert av koordinater langs flere akser. Hver vektor beskriver en retning og avstand fra origo. Semantisk like tokens bør resultere i vektorer med lignende orientering – med andre ord peker de i lignende retninger.

For eksempel, vurder følgende tredimensjonale innleiringer for noen vanlige ord:

Ord Vektor
dog [0.8, 0.6, 0.1]
puppy [0.9, 0.7, 0.4]
cat [0.7, 0.5, 0.2]
kitten [0.8, 0.6, 0.5]
young [0.1, 0.1, 0.3]
ball [0.3, 0.9, 0.1]
tree [0.2, 0.1, 0.9]

Vi kan visualisere disse vektorene i tredimensjonalt rom som vist her:

Diagram over en 3D-visualisering av ordvektorer.

Vektorene for "dog" og "cat" er like (begge husdyr), det samme er "puppy" og "kitten" (begge unge dyr). Ordene "tree", "young", og ball" har tydelig forskjellige vektororienteringer, noe som reflekterer deres ulike semantiske betydninger.

Den semantiske karakteristikken kodet i vektorene gjør det mulig å bruke vektorbaserte operasjoner som sammenligner ord og muliggjør analytiske sammenligninger.

Siden orienteringen til vektorer bestemmes av deres dimensjonsverdier, har ord med lignende semantiske betydninger en tendens til å ha lignende orienteringer. Dette betyr at du kan bruke beregninger som cosinuslikhet mellom vektorer for å gjøre meningsfulle sammenligninger.

For eksempel, for å bestemme «oddetallet» mellom "dog", "cat", og "tree", kan du beregne cosinuslikheten mellom par av vektorer. Cosinuslikheten beregnes som:

cosine_similarity(A, B) = (A · B) / (||A|| * ||B||)

Hvor A · B er prikkproduktet og ||A|| er størrelsen til vektor A.

Beregning av likheter mellom de tre ordene:

  • dog [0,8, 0,6, 0,1] og cat [0,7, 0,5, 0,2]:

    • Punktprodukt: (0,8 × 0,7) + (0,6 × 0,5) + (0,1 × 0,2) = 0,56 + 0,30 + 0,02 = 0,88
    • Størrelse på dog: √(0,8² + 0,6² + 0,1²) = √(0,64 + 0,36 + 0,01) = √1,01 ≈ 1,005
    • Magnitude av cat: √(0,7² + 0,5² + 0,2²) = √(0,49 + 0,25 + 0,04) = √0,78 ≈ 0,883
    • Kosinuslikhet: 0,88 / (1,005 × 0,883) ≈ 0,992 (høy likhet)
  • dog [0,8, 0,6, 0,1] og tree [0,2, 0,1, 0,9]:

    • Prikkprodukt: (0,8 × 0,2) + (0,6 × 0,1) + (0,1 × 0,9) = 0,16 + 0,06 + 0,09 = 0,31
    • Størrelse av tree: √(0,2² + 0,1² + 0,9²) = √(0,04 + 0,01 + 0,81) = √0,86 ≈ 0,927
    • Cosinuslikhet: 0,31 / (1,005 × 0,927) ≈ 0,333 (lav likhet)
  • cat [0,7, 0,5, 0,2] og tree [0,2, 0,1, 0,9]:

    • Punktprodukt: (0,7 × 0,2) + (0,5 × 0,1) + (0,2 × 0,9) = 0,14 + 0,05 + 0,18 = 0,37
    • Cosinuslikhet: 0,37 / (0,883 × 0,927) ≈ 0,452 (lav likhet)

Diagram over cosinus-likhetsvisualisering som viser vektorer for hund, katt og tre.

Resultatene viser at "dog" og "cat" er svært like (0,992), mens "tree" har lavere likhet med både "dog" (0,333) og "cat" (0,452). Derfor er han tree tydeligvis den som skiller seg ut.

Vektortranslasjon gjennom addisjon og subtraksjon

Du kan legge til eller trekke fra vektorer for å produsere nye vektorbaserte resultater; som deretter kan brukes til å finne tokens med matchende vektorer. Denne teknikken muliggjør intuitiv aritmetikkbasert logikk for å bestemme passende termer basert på språklige relasjoner.

For eksempel, ved å bruke vektorene fra tidligere:

  • dog + young = [0,8, 0,6, 0,1] + [0,1, 0,1, 0,3] = [0,9, 0,7, 0,4] = puppy
  • cat + young = [0,7, 0,5, 0,2] + [0,1, 0,1, 0,3] = [0,8, 0,6, 0,5] = kitten

Diagram over vektoraddisjon som viser hund + unge = valp og katt + unge = kattunge.

Disse operasjonene fungerer fordi vektoren for "young" koder den semantiske transformasjonen fra et voksent dyr til dets unge motpart.

Note

I praksis gir vektoraritmetikk sjelden eksakte treff; I stedet ville du søke etter ordet hvis vektor er nærmest (mest likt) resultatet.

Aritmetikken fungerer også motsatt:

  • puppy - young = [0.9, 0.7, 0.4] - [0.1, 0.1, 0.3] = [0.8, 0.6, 0.1] = dog
  • kitten - young = [0,8, 0,6, 0,5] - [0,1, 0,1, 0,3] = [0,7, 0,5, 0,2] = cat

Analogisk resonnement

Vektoraritmetikk kan også svare på analogispørsmål som «puppy er til som dogkitten er til ?»

For å løse dette, beregn: kitten - puppy + dog

  • [0.8, 0.6, 0.5] - [0.9, 0.7, 0.4] + [0.8, 0.6, 0.1]
  • = [-0,1, -0,1, 0,1] + [0,8, 0,6, 0,1]
  • = [0,7, 0,5, 0,2]
  • = cat

Diagram over vektoraritmetikk som viser kattunge – valp + hund = katt.

Disse eksemplene viser hvordan vektoroperasjoner kan fange språklige relasjoner og muliggjøre resonnement om semantiske mønstre.

Bruk av semantiske modeller for tekstanalyse

Vektorbaserte semantiske modeller gir kraftige muligheter for mange vanlige tekstanalyseoppgaver.

Tekstoppsummering

Semantiske innleiringer muliggjør ekstraktiv oppsummering ved å identifisere setninger med vektorer som er mest representative for hele dokumentet. Ved å kode hver setning som en vektor (ofte ved å gjennomsnittliggjøre eller samle embeddingene til dens bestanddeler), kan du beregne hvilke setninger som er mest sentrale for dokumentets betydning. Disse sentrale setningene kan trekkes ut for å danne et sammendrag som fanger opp hovedtemaene.

Nøkkelorduttrekking

Vektorlikhet kan identifisere de viktigste termene i et dokument ved å sammenligne hvert ords innbygging med dokumentets overordnede semantiske representasjon. Ord hvis vektorer ligner mest på dokumentets vektor, eller som er mest sentrale når man vurderer alle ordvektorer i dokumentet, er sannsynligvis nøkkelbegreper som representerer hovedtemaene.

Navngitt enhetsgjenkjenning

Semantiske modeller kan finjusteres til å gjenkjenne navngitte enheter (personer, organisasjoner, lokasjoner osv.) ved å lære vektorrepresentasjoner som grupperer lignende entitetstyper sammen. Under inferensen undersøker modellen hver tokens embedding og kontekst for å avgjøre om den representerer en navngitt enhet, og i så fall hvilken type.

Tekstklassifisering

For oppgaver som sentimentanalyse eller temakategorisering kan dokumenter representeres som aggregerte vektorer (for eksempel gjennomsnittet av alle ordinnlegginger i dokumentet). Disse dokumentvektorene kan deretter brukes som funksjoner for maskinlæringsklassifikatorer, eller sammenlignes direkte med klasseprototypevektorer for å tildele kategorier. Fordi semantisk like dokumenter har lignende vektororienteringer, grupperer denne tilnærmingen effektivt relatert innhold og skiller mellom ulike kategorier.