W rzeczywistości wektory wyjściowe nie są obliczane na podstawie danych wejściowych przy użyciu jakiejkolwiek operacji matematycznej. Zamiast tego każda liczba całkowita wejściowa służy jako indeks umożliwiający dostęp do tabeli zawierającej wszystkie możliwe wektory. Z tego powodu musisz określić rozmiar słownictwa jako pierwszy argument (aby można było zainicjować tabelę).
Najczęstszym zastosowaniem tej warstwy jest przetwarzanie tekstu. Zobaczmy prosty przykład. Nasz zestaw szkoleniowy składa się tylko z dwóch fraz:
Mam nadzieję, że zobaczymy się wkrótce
Miło cię znowu widzieć
Możemy więc zakodować te frazy, przypisując każdemu słowu unikalną liczbę całkowitą (na przykład według kolejności pojawienia się w naszym zestawie danych szkoleniowych). Następnie nasze frazy można przepisać jako:
[0, 1, 2, 3, 4]
[5, 1, 2, 3, 6]
Teraz wyobraźmy sobie, że chcemy wyszkolić sieć, której pierwsza warstwa jest warstwą osadzającą. W takim przypadku powinniśmy zainicjować go w następujący sposób:
Embedding(7, 2, input_length=5)
Pierwszy argument (7) to liczba różnych słów w zestawie treningowym. Drugi argument (2) wskazuje rozmiar wektorów osadzania. Input_length argumet oczywiście określa wielkość każdej sekwencji wejściowej.
Po przeszkoleniu sieci możemy uzyskać wagi warstwy osadzania, która w tym przypadku będzie miała rozmiar (7, 2) i można ją uznać za tabelę używaną do mapowania liczb całkowitych na wektory osadzania:
+------------+------------+
| index | Embedding |
+------------+------------+
| 0 | [1.2, 3.1] |
| 1 | [0.1, 4.2] |
| 2 | [1.0, 3.1] |
| 3 | [0.3, 2.1] |
| 4 | [2.2, 1.4] |
| 5 | [0.7, 1.7] |
| 6 | [4.1, 2.0] |
+------------+------------+
Tak więc, zgodnie z tymi osadzeniami, nasza druga fraza treningowa będzie reprezentowana jako:
[[0.7, 1.7], [0.1, 4.2], [1.0, 3.1], [0.3, 2.1], [4.1, 2.0]]
Na początku może się to wydawać sprzeczne z intuicją, ale bazowe silniki automatycznego różnicowania (np. Tensorflow lub Theano) potrafią zoptymalizować te wektory powiązane z każdą liczbą całkowitą wejściową, tak jak każdy inny parametr modelu. Interesujące jest również stosowanie osadzeń poznanych przez inne metody / osoby w różnych domenach (patrz https://blog.keras.io/using-pre-trained-word-embeddings-in-a-keras-model.html ) jako zrobione w [1].
[1] López-Sánchez, D., Herrero, JR, Arrieta, AG i Corchado, JM Hybridizing metric learning i oparte na analizie przypadków uzasadnienie adaptowalnego wykrywania kliknięć. Inteligencja stosowana, 1-16.