Musisz zrozumieć działanie warstwy „Osadzanie” w bibliotece Keras. Wykonuję następujący kod w Pythonie
import numpy as np
from keras.models import Sequential
from keras.layers import Embedding
model = Sequential()
model.add(Embedding(5, 2, input_length=5))
input_array = np.random.randint(5, size=(1, 5))
model.compile('rmsprop', 'mse')
output_array = model.predict(input_array)
co daje następujący wynik
input_array = [[4 1 3 3 3]]
output_array =
[[[ 0.03126476 0.00527241]
[-0.02369716 -0.02856163]
[ 0.0055749 0.01492429]
[ 0.0055749 0.01492429]
[ 0.0055749 0.01492429]]]
Rozumiem, że każda wartość w tablicy_wejściowej jest odwzorowana na wektor 2-elementowy w tablicy_wyjściowej, więc wektor 1 X 4 daje wektory 1 X 4 X 2. Ale w jaki sposób obliczane są odwzorowane wartości?
text-mining
word-embeddings
keras
prashanth
źródło
źródło
Odpowiedzi:
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:
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:
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:
Tak więc, zgodnie z tymi osadzeniami, nasza druga fraza treningowa będzie reprezentowana jako:
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.
źródło
Miałem również to samo pytanie i po przeczytaniu kilku postów i materiałów, chyba zdałem sobie sprawę, jaką rolę odgrywa warstwa osadzania.
Myślę, że ten post jest również pomocny w zrozumieniu, jednak naprawdę uważam, że odpowiedź Daniela jest wygodna do strawienia. Ale wpadłem na ten pomysł przede wszystkim dzięki zrozumieniu osadzonych słów .
Uważam, że niedopuszczalne jest stwierdzenie, że osadzanie warstw redukuje jeden sygnał wejściowy kodowania do mniejszej liczby danych wejściowych. W końcu ten jeden gorący wektor jest danymi jednowymiarowymi i faktycznie w naszym przypadku jest on zamieniany na 2 wymiary. Lepiej to powiedzieć
Czy to w 2 wymiarach, czy nawet wyżej.
Znajduję również bardzo interesujące podobieństwo między osadzaniem słów a analizą głównych składników. Chociaż nazwa może wydawać się skomplikowana, koncepcja jest prosta. PCA polega na zdefiniowaniu zestawu danych na podstawie pewnych ogólnych zasad (tak zwanych składników zasad). To tak, jakby mieć dane i chcesz je opisać, ale używając tylko 2 składników. Który w tym sensie jest bardzo podobny do osadzania słów. Obaj wykonują tę samą pracę w innym kontekście. Możesz dowiedzieć się więcej tutaj . Mam nadzieję, że zrozumienie PCA pomaga zrozumieć osadzanie warstw przez analogię.
Podsumowując, odpowiedź na pierwotne pytanie tego postu brzmiała: „ jak to oblicza wartość? ” Brzmiałaby:
źródło