Word2Vec
Formål
Formålet med dette forløb er dels at gennemføre beregningerne i Word2vec for et meget lille korpus af data, men også at forstå, hvad det vil sige at optimere vektorerne, så tabsfunktionen minimeres.
Et meget lille tekstkorpus
Vi vi anvende følgende meget simple tekstkorpus med 12 sætninger. Vi betragter kun de to ord, og anvender et 1-ords vindue, som endda kun indeholder det andet ord på samme linje. Så i den første linje er hunden i 1-ords vinduet til sover, og ingen andre ord er i sovers 1-ords vindue.
- Hunden sover.
- Katten sover.
- Katten spinder.
- Hunden gør.
- Hunden sover.
- Hunden gør.
- Katten sover.
- Hunden gør.
- Katten sover.
- Katten spinder.
- Katten sover.
- Katten spinder.
Overordnet er ideen så, at vi skal bestemme værdier til fokus- og kontekstvektorer, så tabfunktionen minimeres.
Fokus- og kontekstvektorer.
Vi skal således bruge både fokusvektorer og kontekstvektorer.
Nu vælger vi indledningsvis værdier til alle disse vektorer - vi venter med optimering. For at gøre det simplere, vil vi I dette forløb begrænse os til enhedsvektorer, så længden altid er 5, hvor længden i Word2vec ellers generelt er variabel.
Fokusvektorerne: \[ \vec{v}_{hunden} = \begin{pmatrix} -4 \\ 3 \end{pmatrix}\\ \vec{v}_{katten} = \begin{pmatrix} 0 \\ 5 \end{pmatrix} \\ \vec{v}_{spinder} = \begin{pmatrix} 3 \\ 4 \end{pmatrix} \\ \vec{v}_{sover} = \begin{pmatrix} 4 \\ 3 \end{pmatrix} \\ \vec{v}_{gør} = \begin{pmatrix} 5 \\ 0 \end{pmatrix} \\ \] Kontekstvektorerne: \[ \vec{k}_{hunden} = \begin{pmatrix} 4 \\ -3 \end{pmatrix}\\ \vec{k}_{katten} = \begin{pmatrix} 3 \\ -4 \end{pmatrix} \\ \vec{k}_{spinder} = \begin{pmatrix} -5 \\ 0 \end{pmatrix} \\ \vec{k}_{sover} = \begin{pmatrix} -4 \\ -3 \end{pmatrix} \\ \vec{k}_{gør} = \begin{pmatrix} -3 \\ -4 \end{pmatrix} \\ \] Til disse værdier af vektorerne, skal vi nu have beregnet værdien af tabsfunktionen \(L\). For at kunne overskue beregningerne, opdeles de i mindre dele i de følgende opgaver.
Som det næste skal sandsynlighederne udregnes. F.eks. udregnes
Anden opdatering af vægtene
Overvej, om du kan strømline dine beregninger, for eksempel i Excel eller i dit CAS værktøj, så det bliver hurtigere at opdatere vægtene en gang mere på samme måde.
Bemærk, at værdien af tabsfunktionen er blevet lidt mindre. Formålet er jo netop at minimere den gennem gradientnedstigning, så som regel bør værdien bliver mindre, hver gang vægtene opdateres.
App til simple neurale netværk
Med perceptron app’en kan du lave de samme beregninger bare automatisk.
Cross-entropy som tabsfunktion
Du kan læse om cross-entropy i noten om tabsfunktioner.