En Token blir till
Vad är språk egentligen? Om man tar bort poesin och känslan är språk bara en serie mönster vi använder för att kommunicera. Det är ett strukturerat ljud som på något sätt förvandlas till ett abstrakt koncept i våra huvuden.
Under lång tid var datorer helt värdelösa på detta. De kunde räkna tecken, matcha exakta strängar och följa hårdkodade grammatikregler byggda av forskare, men de förstod ingenting. Om du byggde en AI för några år sedan för att klassificera filmrecensioner var den förmodligen otroligt begränsad. Om du inte uttryckligen berättade för datorn att ordet "fantastisk" var positivt hade den ingen aning.
För att lösa detta var vi tvungna att sluta lära datorer ordlistan. Vi var tvungna att omvandla ord till matematik.
"Visa mig dina vänner"-algoritmen
2013 testade ett team på Google något nästan löjligt enkelt. De byggde en modell som hette Word2Vec och gav den ett enda jobb: gissa det saknade ordet baserat på dess grannar.
Det var allt. Inga grammatikregler. Inga ordböcker. Ingen förståelse för vad ord faktiskt betyder. Bara: "här är de fem orden till vänster och fem till höger — vad står i mitten?"
De matade den med miljarder ord från internet och lät den gissa. Miljontals gånger. Och sen hände något remarkabelt.
Modellen visste inte hur en makrill eller en torsk såg ut. Den hade aldrig sett havet. Men den märkte att dessa ord ständigt dök upp i exakt samma sällskap — båda simmar, båda gillar saltvatten, båda hänger på västkusten.
Genom att bara förutsäga grannar tvingades modellen lista ut vad ord betyder. Och den lagrade den betydelsen som ett tal — en vektor — och placerade ord som delar sammanhang bredvid varandra i ett gigantiskt matematiskt rum.
Word2Vec hade faktiskt två sätt att göra detta:
CBOW (Continuous Bag of Words) tittar på grannarna och gissar det saknade ordet — precis som övningen ovan. Skip-gram vänder på det: börja med ett ord och gissa vad som finns runtomkring.
Båda tillvägagångssätten lär sig samma sak: ord som delar kontext delar betydelse.
Men liknande ord är inte identiska. Vissa kontexter accepterar bara vissa ord — en lax simmar uppströms för att leka, men det skulle du aldrig säga om en torsk. Dessa skillnader är det som ger varje ord sin unika position i vektorrummet.
Så här ser nätverket faktiskt ut inuti:
Men hur lär den sig egentligen att förutsäga rätt ord? Den börjar med slumpmässiga vikter — helt utan kunskap. Sedan ser den tusentals meningar, gör gissningar, kontrollerar om den hade rätt och justerar vikterna lite varje gång. Se träningsprocessen utspela sig:
Välkommen till vektorrummet
Word2Vec var inte designat för att skapa ett rum av betydelse. Det försökte bara gissa kontextord. Men rummet uppstod ändå — och det visade sig vara spektakulärt.
Resultatet är ett högdimensionellt vektorrum, vanligtvis med cirka 300 dimensioner. Vi kan inte föreställa oss 300 dimensioner, men om vi pressar ihop dem till 3D kan vi kika på vad modellen byggde.
Och det den byggde är vackert. Ord som betyder liknande saker klustrar ihop sig. "Jurist" och "advokat" ligger praktiskt taget ovanpå varandra. "Jurist" och "företag" ligger något nära, men märkbart längre ifrån. Geometrin är betydelsen.
När jag såg det här första gången blev jag helt paff. Jag började träna mina egna modeller — matade in olika textkorpusar, tittade på hur rummen formades. Det var som att ha en universell ordkalkylator. Man kunde söka efter synonymer, hitta ord som dyker upp i samma kontexter, upptäcka relationer som ingen hade programmerat. Jag satt i veckor och bara testade, kastade in ord och kollade vad som kom tillbaka.
Men här blir det verkligen häpnadsväckande. När ord bara är koordinater i rymden kan man göra matematik med dem.
Ordalgebrans magi
Här är delen som fick forskare att tappa hakan. Eftersom relationer mellan begrepp lagras som fysiska avstånd och riktningar i detta rum, så är de riktningarna konsekventa. Ta "Kung," subtrahera "Man" — ta bort "manligheten" — och lägg till "Kvinna." Du landar på "Drottning." Det är en vektor som i princip betyder "byt kön."
Det betyder att man kan ta den riktningen — den pilen — och applicera den någon annanstans. Man kan göra matematik med betydelse:
Ta "Kung," subtrahera "Man," lägg till "Kvinna" — och du landar nästan exakt på "Drottning." Modellen fick aldrig veta något om kön. Den räknade ut mönstret genom att läsa miljontals meningar.
Och det slutar inte där:
Konceptet "är huvudstad i" existerar som en riktning i vektorrummet. Byt ut landet, applicera samma pil, och du får den nya huvudstaden.
Till och med grammatiska mönster som superlativ har konsekventa riktningar. "Snabbast" minus "Snabb" ger superlativ-riktningen. Applicera den på "Bra" och du får "Bäst" — inte "braast." Modellen lärde sig konceptet, inte suffixet.
Ingen programmerade dessa relationer. Modellen upptäckte dem på egen hand, bara genom att läsa hur ord brukar dyka upp nära varandra. Rummets geometri är betydelsen.
I animationen nedan, lägg märke till hur pilen från "Tiger" till "Tigrar" — "plural"-riktningen — behåller ungefär samma längd och riktning när den flyttas till ett annat djur. Det är inte exakt, men det är nära. Den ungefärliga konsekvensen är hela tricket.
Bristen: Varför Word2Vec inte räckte
Men det fanns ett massivt problem. Varje ord får exakt en vektor — en enda, statisk koordinat, uppslagen från en fast tabell efter tokenisering. Samma vektor varje gång, i varje mening, i varje sammanhang. Ordet "spela" i "spela fotboll" och "spela piano" — identisk punkt i rummet. Och det blir värre:
Den här filmen var skit. vs. Den här filmen var skitbra.
Samma grundord. Motsatta betydelser. Word2Vec kan inte skilja dem åt — "skit" får en vektor, fast någonstans mellan förolämpning och beröm.
För att faktiskt förstå språk behövde AI:n sluta titta på ord i isolation. Den behövde se hela texten på en gång. Den behövde "Attention."
Och det var då allt förändrades. Läs Del 2: Hur man lär en sten att förstå →