CBoW- en Skip-Gram-Modellen
Veeg om het menu te tonen
Zowel de CBoW- als de Skip-gram-architecturen leren woordembeddings aan via een neuraal netwerk met de volgende lagen:
- Een invoerlaag;
- Een enkele verborgen laag;
- Een uitvoerlaag.
De gewichtenmatrix tussen de invoer- en verborgen laag, aangeduid als W1 of E, fungeert als de embeddingsmatrix. Elke rij van deze matrix vertegenwoordigt een embeddingvector voor een corresponderend woord, waarbij de i-de rij overeenkomt met het i-de woord in de vocabulaire.
Deze matrix bevat V (vocabulairegrootte) embeddings, elk van grootte N, een dimensie die we specificeren. Door de getransponeerde matrix (N×V matrix) te vermenigvuldigen met een one-hot gecodeerde vector (V×1 vector), wordt de embedding voor een specifiek woord opgehaald, wat resulteert in een N×1 vector.
De tweede gewichtenmatrix, tussen de verborgen en uitvoerlaag, heeft de afmeting N×V. Door de getransponeerde matrix (V×N matrix) te vermenigvuldigen met de N×1 vector van de verborgen laag, ontstaat een V×1 vector.
CBoW
Bekijk nu een voorbeeld van het gebruik van een CBoW-model:
Eerst wordt de getransponeerde embeddingsmatrix vermenigvuldigd met de one-hotvectoren van de contextwoorden om hun embeddings te verkrijgen. Deze embeddings worden vervolgens opgeteld of gemiddeld, afhankelijk van de implementatie, om één enkele vector te vormen. Deze vector wordt vermenigvuldigd met de W2-matrix, wat resulteert in een V×1-vector.
Ten slotte gaat deze vector door de softmax-activatiefunctie, waardoor deze wordt omgezet in een waarschijnlijkheidsverdeling, waarbij elk element de kans weergeeft dat een vocabulairewoord het doelwoord is.
Daarna wordt het verlies berekend en worden beide gewichtsmatrices bijgewerkt om dit verlies te minimaliseren. Idealiter willen we dat de kans op het doelwoord dicht bij 1 ligt, terwijl de kansen voor alle andere woorden naar nul gaan. Dit proces wordt herhaald voor elke combinatie van een doelwoord en zijn contextwoorden.
Zodra alle combinaties zijn verwerkt, is een epoch voltooid. Gewoonlijk wordt het neuraal netwerk over meerdere epochs getraind om een nauwkeurige training te waarborgen. Ten slotte kunnen de rijen van de resulterende embeddingsmatrix worden gebruikt als onze woordembeddings. Elke rij komt overeen met de vectorrepresentatie van een specifiek woord in de vocabulaire en legt effectief de semantische eigenschappen ervan vast binnen het getrainde model.
Skip-gram
Laten we nu een skip-grammodel bekijken:
Zoals je kunt zien, is het proces grotendeels vergelijkbaar met CBoW. Het begint met het ophalen van de embedding van het doelwoord, die vervolgens wordt gebruikt in de verborgen laag. Daarna wordt er een V×1 vector geproduceerd in de outputlaag. Deze vector, verkregen door de embedding van het doelwoord te vermenigvuldigen met de gewichtenmatrix van de outputlaag, wordt vervolgens door de softmax activatiefunctie omgezet in een vector van waarschijnlijkheden.
Hoewel deze resulterende vector van waarschijnlijkheden hetzelfde is voor alle contextwoorden die aan één doelwoord zijn gekoppeld tijdens één trainingsstap, wordt het verlies voor elk contextwoord individueel berekend.
Het verlies voor elk contextwoord wordt opgeteld, en de gewichtenmatrices worden bij elke iteratie dienovereenkomstig bijgewerkt om het totale verlies te minimaliseren. Zodra het opgegeven aantal epochs is voltooid, kan de embeddingsmatrix worden gebruikt om de woordembeddings te verkrijgen.
In de praktijk, vooral bij grote woordenschatten, kan de softmax-functie te veel rekenkracht vereisen. Daarom worden benaderingen zoals negatieve sampling vaak gebruikt om de berekening efficiënter te maken.
1. Vul de lege plekken in
2. Wat stelt de eerste gewichtenmatrix W1 in het neuraal netwerk voor?
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.