Aktivitet 6 kan udelades eller bruges som ekstra udfordring.
For at en computer skal kunne forstå sprog, har vi brug for at få kvantificeret alle ord i vores ordforråd. Hvis ikke vi på en eller anden måde kan få lavet ord om til tal, bliver det svært at regne på dem! Algoritmen Word2Vec er et bud på, hvordan det kan gøres. Idéen er at repræsentere hvert ord med en vektor på en sådan måde, at alle ord, hvis betydning ligner hinanden, repræsenteres med vektorer, der peger i nogenlunde samme retning og har nogenlunde samme længde.
I algoritmen Word2Vec bliver hvert ord repræsenteret som en vektor. Det gøres på en sådan måde at ord, hvis betydning minder om hinanden, svarer til vektorer med nogenlunde samme retning og længde.
Brug app’en herunder til at argumentere for, hvorfor de fire vektorer har den længde og retning, som de har.
Udfyld med udgangspunkt i ovenstående tekstkorpus og et 3-ords vindue nedenstående tabel (se eventuelt tabel 1 i noten om Word2vec). Bemærk, at kontekstcellen skal være blank, hvis den tilsvarende plads i vinduet er tom.
Vi vil gerne have, at vores fokus- og kontekstvektorer skal opfylde, at hvis \(w\) ofte har \(c\) som kontekst, så er skalarproduktet \(\vec{v}_{w}\cdot \vec{k}_{c}\) stort, mens en meget negativ værdi af \(\vec{v}_{w}\cdot \vec{k}_{c}\) indikerer, at \(w\) sjældent har \(c\) som kontekst.
Opgave 4: Fokus- og kontekstvektorer
Lad os sige, at vi har lavet 2-dimensionale fokus- og kontekstvektorer, som beskrevet i afsnittet "Fokus- og kontekstvektorer". De Det gav vektorerne \[
\begin{aligned}
&\vec{v}_{\text{bil}} = \begin{pmatrix} -2\\ 1\end{pmatrix}, \quad
\vec{v}_{\text{cykel}} = \begin{pmatrix} -1\\ 2\end{pmatrix} \\
&\vec{k}_{\text{hjul}} = \begin{pmatrix} -1.5\\1.5\end{pmatrix}, \quad
\vec{k}_{\text{motor}} = \begin{pmatrix} -2\\ 0 \end{pmatrix}, \quad
\vec{k}_{\text{jordbær}} = \begin{pmatrix} 3\\-1 \end{pmatrix}
\end{aligned}
\]
Udregn skalarprodukterne \(\vec{v}_{\text{cykel}}\cdot \vec{k}_{\text{hjul}}\) og \(\vec{v}_{\text{cykel}}\cdot \vec{k}_{\text{jordbær}}\). Passer det med, hvilket ord, der oftest er kontekst til "cykel"?
Udregn skalarprodukterne \(\vec{v}_{\text{cykel}}\cdot \vec{k}_{\text{motor}}\) og \(\vec{v}_{\text{bil}}\cdot \vec{k}_{\text{motor}}\). Passer det med, hvilket fokusord, der oftest har "motor" som kontekst?
Udregn skalarprodukterne \(\vec{v}_{\text{cykel}}\cdot \vec{k}_{\text{hjul}}\) og \(\vec{v}_{\text{bil}}\cdot \vec{k}_{\text{hjul}}\). Sammenlign med resultatet for kontekstordet "motor" i opgaven før og kommentér på resultatet.
Tegn alle vektorerne ind i et koordinatsystem. Passer det med, hvordan vi gerne vil have vektorerne til at ligge?
Opgave 5: Fokus- og kontekstvektorer
Antag, at vi har lavet 3-dimensionale fokus- og kontekstvektorer som beskrevet i afsnittet "Fokus- og kontekstvektorer". Så skulle ord, der ofte har samme kontekst, gerne have fokusvektorer af nogenlunde samme længde og retning, mens fokusvektorerne for ord, der betyder noget helt forskelligt, kan have meget forskellig længde og retning. Antag, at fokusvektorerne for "kat", "hund", "mis" og "kælk" er \[
\begin{aligned}
\vec{v}_{\text{kat}}=\begin{pmatrix}0\\2\\1 \end{pmatrix},\quad
\vec{v}_{\text{hund}}=\begin{pmatrix}0\\1.2\\1.8\end{pmatrix}, \\
\\
\vec{v}_{\text{mis}}=\begin{pmatrix}-0.5\\2\\0.8\end{pmatrix},\quad
\vec{v}_{\text{kælk}}=\begin{pmatrix} 0\\-1\\-2 \end{pmatrix}
\end{aligned}
\]
Find længden af de fire vektorer.
Find vinklen mellem \(\vec{v}_{\text{kat}}\) og de tre øvrige vektorer.
Stemmer resultatet overens med, hvilke ord der er tættest på "kat" i betydning?
Tegn vektorerne ind i GeoGebra. Skriv for eksempel kat=(0,2,1) i inputfeltet i GeoGebra og vælg derefter "Vis" \(\rightarrow\) "3D Grafik".
Opgave 6: Fokus- og kontekstvektorer
Antag, at vi har lavet 4-dimensionale fokus- og kontekstvektorer således, at jo større skalarproduktet \(\vec{v}_{w}\cdot \vec{k}_{c}\) er, desto mere sandsynligt er det, at ordet \(w\) har \(c\) som kontekst. vektoren for "hund" og kontekstvektorerne for "pels" og "fjer" er \[
\begin{aligned}
\vec{v}_{\text{hund}}=\begin{pmatrix} 0.5\\2\\1\\-1\end{pmatrix} ,\quad
\vec{k}_{\text{pels}}=\begin{pmatrix} 0\\3\\2\\-2\end{pmatrix},\quad
\vec{k}_{\text{fjer}}=\begin{pmatrix} 1\\-2\\1.5\\0.5\end{pmatrix}
\end{aligned}
\]
Udregn skalarprodukterne \(\vec{v}_{\text{hund}}\cdot \vec{k}_{\text{pels}}\) og \(\vec{v}_{\text{hund}}\cdot \vec{k}_{\text{fjer}}\).
Passer det med, hvilket af ordene "pels" og "fjer" der er mest sandsynligt som kontekst til "hund"?
så er \(\text{Softmax}\big(\vec{y}\big)=\vec{z}\), hvor \(\vec{z}\) er en ny vektor med \(V\) koordinater. Den \(i\)’te koordinat i \(\vec{z}\) er givet ved
Antag, at vores ordforråd består af de tre ord "sommer", "sol" og "sne". Vi har lavet en model for sandsynligheder for kontekstord som i (2), hvor fokusvektoren for "sommer" og kontekstvektorerne for "sommer", "sol" og "sne" er givet ved \[
\begin{aligned}
\vec{v}_{\text{sommer}}=\begin{pmatrix} 1\\1\end{pmatrix},\quad
\vec{k}_{\text{sommer}}=\begin{pmatrix} 1\\-1 \end{pmatrix} ,\\
\\
\vec{k}_{\text{sol}}=\begin{pmatrix} 0\\2\end{pmatrix},\quad
\vec{k}_{\text{sne}} =\begin{pmatrix} -1\\-2\end{pmatrix}
\end{aligned}
\]
Indtegn repræsentanter for de fire vektorer i et koordinatsystem.
Hvad er sandsynligheden for, at hvert af de tre ord er kontekst til "sommer"?
Passer svaret fra b. med, hvilket af de tre ord, som du umiddelbart vil tænke, oftest optræder som kontekst til sommer?
Tabsfunktionen er en funktion af flere variable, nemlig alle vægtene. Vi skal finde de vægte, der minimerer tabsfunktionen. I ved, at for at finde minimum for en funktion af én variabel, skal man se på, hvornår den afledte funktion er nul. For funktioner af flere variable gælder tilsvarende, at minimum skal findes i et punkt hvor alle de partielle afledede er nul. Hvis du ikke har hørt om partielle afledede før, kan du læse mere i boksen herunder.
Partielle afledede
Funktionen
\[
f(x,y) = x^2+3xy+\mathrm{e}^y
\]
afhænger ikke kun af én, men af to variable nemlig \(x\) og \(y\). Man kan derfor differentiere \(f\) både med hensyn til \(x\) (hvor man betragter \(y\) som en konstant) og med hensyn til \(y\) (hvor man betragter \(x\) som en konstant). Disse afledede kaldes for partielle afledede og betegnes med
Når man for eksempel skal finde \(\frac{\partial f}{\partial x}\), så differentierer man \(f(x,y)\), hvor man tænker på \(x\) som den variable og \(y\) som en konstant. Tilsvarende med \(\frac{\partial f}{\partial y}\). I dette eksempel giver det:
Da Softmax-funktionen indgår i tabsfunktionen, får man brug for at finde partielle afledte af denne funktion. Husk på, at Softmax-funktionen er defineret sådan her:
Bemærk, at ovenstående opgaver giver, at man ikke behøver at kende værdien af \(\vec{y}\) i det punkt, hvor man differentierer, men kun funktionsværdien \(\vec{z}\). Det viser sig at have meget store beregningsmæssige fordele, når man skal finde minimum for tabsfunktionen, så det er faktisk en overordentlig vigtig egenskab!