Jak trenuje się warstwę osadzania w warstwie Osadzanie Keras

14

Jak trenuje się warstwę osadzania w warstwie osadzania Keras? (powiedzmy, używając backendu tensorflow, co oznacza, że ​​jest podobny do word2vec, glove lub fasttext)

Załóżmy, że nie stosujemy wstępnego przeszkolenia.

william007
źródło
colah.github.io/posts/2014-07-NLP-RNNs-Representations -> ten post na blogu wyjaśnia jasno, w jaki sposób trenowana jest warstwa osadzania w warstwie osadzania Keras . Mam nadzieję że to pomoże.
Akshay U Prabhu

Odpowiedzi:

24

Osadzanie warstw w Keras jest szkolone tak jak każda inna warstwa w architekturze sieci: są one dostrojone, aby zminimalizować funkcję utraty przy użyciu wybranej metody optymalizacji. Główną różnicą w stosunku do innych warstw jest to, że ich wynik nie jest matematyczną funkcją danych wejściowych. Zamiast tego dane wejściowe do warstwy są używane do indeksowania tabeli z wektorami do osadzania [1]. Podstawowy silnik automatycznego różnicowania nie ma jednak problemu z optymalizacją tych wektorów w celu zminimalizowania funkcji utraty ...

Nie można więc powiedzieć, że warstwa Osadzania w Keras robi to samo co word2vec [2]. Pamiętaj, że word2vec odnosi się do bardzo specyficznej konfiguracji sieci, która próbuje nauczyć się osadzania, które przechwytuje semantykę słów. Z warstwą osadzania Keras, próbujesz po prostu zminimalizować funkcję utraty, więc jeśli na przykład pracujesz z problemem klasyfikacji nastrojów, wyuczone osadzanie prawdopodobnie nie uchwyci pełnej semantyki słów, ale tylko ich polaryzację emocjonalną ...

Na przykład poniższy obraz pobrany z [3] pokazuje osadzanie trzech zdań w warstwie osadzania Keras wytrenowanej od zera w ramach nadzorowanej sieci przeznaczonej do wykrywania nagłówków kliknięć (po lewej) i wstępnie wyszkolonych osadzeń word2vec (po prawej). Jak widać, osadzanie word2vec odzwierciedla semantyczne podobieństwo między frazami b) ic). I odwrotnie, osadzenia generowane przez warstwę Osadzania Keras'a mogą być przydatne do klasyfikacji, ale nie wychwytują semantycznego podobieństwa b) ic).

wprowadź opis zdjęcia tutaj

To wyjaśnia, dlaczego przy ograniczonej liczbie próbek treningowych dobrym pomysłem może być zainicjowanie warstwy Osadzania za pomocą wag word2vec , więc przynajmniej twój model rozpoznaje, że „Alpy” i „Himalaje” są podobne, nawet jeśli nie Oba występują w zdaniach zestawu danych treningowych.

[1] Jak działa warstwa „Osadzanie” Keras?

[2] https://www.tensorflow.org/tutorials/word2vec

[3] https://link.springer.com/article/10.1007/s10489-017-1109-7

UWAGA: W rzeczywistości obraz pokazuje aktywacje warstwy po warstwie Osadzanie, ale na potrzeby tego przykładu nie ma znaczenia ... Zobacz więcej szczegółów w [3]

Daniel López
źródło
2
Właśnie takiego wyjaśnienia szukałem! Myślę, że to zdanie powinno być pogrubione: „Pamiętaj, że word2vec odnosi się do bardzo specyficznej konfiguracji sieci, która próbuje nauczyć się osadzania, które przechwytuje semantykę słów”.
Kevin
0

Warstwa osadzająca jest tylko rzutem z dyskretnego i rzadkiego 1-gorącego wektora na ciągłą i gęstą utajoną przestrzeń. Jest to macierz (n, m), gdzie n jest rozmiarem twojego słownictwa, a n jest pożądanymi wymiarami utajonej przestrzeni. Tylko w praktyce nie ma potrzeby faktycznego mnożenia macierzy, a zamiast tego można zaoszczędzić na obliczeniach za pomocą indeksu. W praktyce jest to warstwa, która mapuje dodatnie liczby całkowite (wskaźniki odpowiadające słowom) na gęste wektory o stałym rozmiarze (wektory osadzania).

Możesz nauczyć go tworzenia osadzania Word2Vec za pomocą Skip-Gram lub CBOW. Możesz też przeszkolić go w zakresie konkretnego problemu, aby uzyskać osadzenie dostosowane do określonego zadania. Możesz także załadować wstępnie przeszkolone osadzanie (takie jak Word2Vec, GloVe itp.), A następnie kontynuować szkolenie na temat konkretnego problemu (forma uczenia się transferu).

David Refaeli
źródło