CBoW- och Skip-gram-modeller
Grundläggande förståelse för neurala nätverk rekommenderas för detta kapitel. Om du är obekant med ämnet, utforska gärna denna kurs:
Både CBoW- och Skip-gram-arkitekturer lär sig ordinbäddningar genom en neural nätverksstruktur som består av följande lager:
- ett inmatningslager;
- ett dolt lager;
- ett utmatningslager.
Viktmatrisen mellan inmatnings- och dolt lager, betecknad som W1 eller E, fungerar som inbäddningsmatrisen. Varje rad i denna matris representerar en inbäddningsvektor för ett motsvarande ord, där den i:te raden matchar det i:te ordet i vokabulären.
Denna matris innehåller V (vokabulärstorlek) inbäddningar, var och en av storlek N, en dimension vi specificerar. Multiplikation av transponatet av denna matris (N×V matris) med en one-hot-kodad vektor (V×1 vektor) hämtar inbäddningen för ett specifikt ord och producerar en N×1 vektor.
Den andra viktmatrisen, mellan det dolda lagret och utgångslagret, har storleken N×V. Om man multiplicerar transponatet av denna matris (en V×N-matris) med det dolda lagrets N×1-vektor erhålls en V×1-vektor.
CBoW
Här följer ett exempel på användning av en CBoW-modell:
Först multipliceras transponatet av inbäddningsmatrisen med one-hot-vektorerna för kontextorden för att generera deras inbäddningar. Dessa inbäddningar summeras eller medelvärdesberäknas beroende på implementationen för att bilda en enda vektor. Denna vektor multipliceras med W2-matrisen, vilket resulterar i en V×1-vektor.
Slutligen passerar denna vektor genom softmax-aktiveringsfunktionen, vilket omvandlar den till en sannolikhetsfördelning där varje element representerar sannolikheten att ett vokabulärord är målordet.
Därefter beräknas förlusten och båda viktmatriserna uppdateras för att minimera denna förlust. Idealiskt vill vi att sannolikheten för målordet ska vara nära 1, medan sannolikheterna för alla andra ord närmar sig noll. Denna process upprepas för varje kombination av ett målord och dess kontextord.
När alla kombinationer har bearbetats är en epok slutförd. Vanligtvis tränas det neurala nätverket under flera epoker för att säkerställa noggrann inlärning. Slutligen kan raderna i den resulterande embedding-matrisen användas som våra word embeddings. Varje rad motsvarar vektorrepresentationen av ett specifikt ord i vokabulären och fångar effektivt dess semantiska egenskaper inom den tränade modellen.
Skip-gram
Låt oss nu titta på en skip-gram-modell:
Som du kan se är processen i stort sett liknande CBoW. Den börjar med att hämta embedding för målordet, vilket sedan används i det dolda lagret. Detta följs av att producera en V×1-vektor i utgångslagret. Denna vektor, som erhålls genom att multiplicera målordets embedding med utgångslagrets viktmatris, omvandlas sedan av softmax-aktiveringsfunktionen till en sannolikhetsvektor.
Även om denna resulterande sannolikhetsvektor är densamma för alla kontextord som är associerade med ett enskilt målord under ett enskilt träningssteg, beräknas förlusten för varje kontextord individuellt.
Förlusten för varje kontextord summeras, och viktmatriserna uppdateras därefter vid varje iteration för att minimera den totala förlusten. När det angivna antalet epoker är slutfört kan inbäddningsmatrisen användas för att erhålla ordbäddarna.
I praktiken, särskilt med stora vokabulärer, kan softmax-funktionen vara alltför beräkningsintensiv. Därför används ofta approximationer såsom negativ sampling för att göra beräkningen mer effektiv.
1. Fyll i luckorna
2. Vad representerar den första viktmatrisen W1 i det neurala nätverket?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Can you explain the main difference between CBoW and Skip-gram?
How does the softmax function work in these models?
What is the purpose of the embeddings matrix in these architectures?
Awesome!
Completion rate improved to 3.45
CBoW- och Skip-gram-modeller
Svep för att visa menyn
Grundläggande förståelse för neurala nätverk rekommenderas för detta kapitel. Om du är obekant med ämnet, utforska gärna denna kurs:
Både CBoW- och Skip-gram-arkitekturer lär sig ordinbäddningar genom en neural nätverksstruktur som består av följande lager:
- ett inmatningslager;
- ett dolt lager;
- ett utmatningslager.
Viktmatrisen mellan inmatnings- och dolt lager, betecknad som W1 eller E, fungerar som inbäddningsmatrisen. Varje rad i denna matris representerar en inbäddningsvektor för ett motsvarande ord, där den i:te raden matchar det i:te ordet i vokabulären.
Denna matris innehåller V (vokabulärstorlek) inbäddningar, var och en av storlek N, en dimension vi specificerar. Multiplikation av transponatet av denna matris (N×V matris) med en one-hot-kodad vektor (V×1 vektor) hämtar inbäddningen för ett specifikt ord och producerar en N×1 vektor.
Den andra viktmatrisen, mellan det dolda lagret och utgångslagret, har storleken N×V. Om man multiplicerar transponatet av denna matris (en V×N-matris) med det dolda lagrets N×1-vektor erhålls en V×1-vektor.
CBoW
Här följer ett exempel på användning av en CBoW-modell:
Först multipliceras transponatet av inbäddningsmatrisen med one-hot-vektorerna för kontextorden för att generera deras inbäddningar. Dessa inbäddningar summeras eller medelvärdesberäknas beroende på implementationen för att bilda en enda vektor. Denna vektor multipliceras med W2-matrisen, vilket resulterar i en V×1-vektor.
Slutligen passerar denna vektor genom softmax-aktiveringsfunktionen, vilket omvandlar den till en sannolikhetsfördelning där varje element representerar sannolikheten att ett vokabulärord är målordet.
Därefter beräknas förlusten och båda viktmatriserna uppdateras för att minimera denna förlust. Idealiskt vill vi att sannolikheten för målordet ska vara nära 1, medan sannolikheterna för alla andra ord närmar sig noll. Denna process upprepas för varje kombination av ett målord och dess kontextord.
När alla kombinationer har bearbetats är en epok slutförd. Vanligtvis tränas det neurala nätverket under flera epoker för att säkerställa noggrann inlärning. Slutligen kan raderna i den resulterande embedding-matrisen användas som våra word embeddings. Varje rad motsvarar vektorrepresentationen av ett specifikt ord i vokabulären och fångar effektivt dess semantiska egenskaper inom den tränade modellen.
Skip-gram
Låt oss nu titta på en skip-gram-modell:
Som du kan se är processen i stort sett liknande CBoW. Den börjar med att hämta embedding för målordet, vilket sedan används i det dolda lagret. Detta följs av att producera en V×1-vektor i utgångslagret. Denna vektor, som erhålls genom att multiplicera målordets embedding med utgångslagrets viktmatris, omvandlas sedan av softmax-aktiveringsfunktionen till en sannolikhetsvektor.
Även om denna resulterande sannolikhetsvektor är densamma för alla kontextord som är associerade med ett enskilt målord under ett enskilt träningssteg, beräknas förlusten för varje kontextord individuellt.
Förlusten för varje kontextord summeras, och viktmatriserna uppdateras därefter vid varje iteration för att minimera den totala förlusten. När det angivna antalet epoker är slutfört kan inbäddningsmatrisen användas för att erhålla ordbäddarna.
I praktiken, särskilt med stora vokabulärer, kan softmax-funktionen vara alltför beräkningsintensiv. Därför används ofta approximationer såsom negativ sampling för att göra beräkningen mer effektiv.
1. Fyll i luckorna
2. Vad representerar den första viktmatrisen W1 i det neurala nätverket?
Tack för dina kommentarer!