Не могу понять значение keras.layers.Embedding () - PullRequest
1 голос
/ 01 апреля 2019

В этой документации говорится, что он "превращает натуральные числа (индексы) в плотные векторы фиксированного размера. Например, [[4], [20]] -> [[0.25, 0.1], [0.6, -0.2]] "

Может ли кто-нибудь сделать это яснее?

Как функция конвертирует целые числа в плотные векторы?

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Вы можете узнать больше в публикации Томас Миколов , где он вводит векторное встраивание под названием Word2Vec.

Идея, лежащая в основе вложения, заключается в сжатии разреженного вектора в низкоразмерный плотный вектор. Давайте рассмотрим словарь из 100 тысяч слов. Каждое слово может быть представлено как вектор размером 100000 со всеми 0 и одним 1 в зависимости от положения / индекса слова. Представление слова непосредственно по его индексу не эффективно (рассмотрите порядок или математические операции над идексами). Но большие разреженные векторы не очень подходят для работы в контексте NN. Вложения пытаются инкапсулировать слова в непрерывное пространство меньшего размера, скажем, k = 100, где похожие слова будут иметь меньшее расстояние между собой. Миколов привык определять сходство тем, как часто слова появляются рядом друг с другом. Миколов обучил / настроил матрицу вложения E таким образом, что E (i) * E (j) примерно представляло бы вероятность появления слов i и j рядом. Более поздние публикации показали, что вы можете достичь аналогичных результатов путем случайной инициализации уровня встраивания в многоуровневую сеть, и после обучения встраивания представляли бы своего рода сходство .

Грубо говоря: NN случайным образом проецирует каждый индекс в некоторую точку в низкоразмерном пространстве. Во время тренировок с обратным распространением эти проекции организованы в виде нечеткой структуры, полезной для поставленной задачи.

Index   Sparse N=6  ->  Embedding K=3
----------------------------------------
0      [1 0 0 0 0 0]  [0.425 0.233 0.556]
1      [0 1 0 0 0 0]  [0.046 0.975 0.058]
2      [0 0 1 0 0 0]  [0.306 0.424 0.651]
3      [0 0 0 1 0 0]  [0.293 0.12  0.546]
4      [0 0 0 0 1 0]  [0.236 0.657 0.046]
5      [0 0 0 0 0 1]  [0.907 0.321 0.882]
0 голосов
/ 01 апреля 2019

Вы можете принять это как список.Каждый элемент в этом списке является вектором фиксированного размера.Когда вы вызываете этот слой, он принимает входные данные в качестве индексов и возвращает соответствующие векторы.

Векторы в этом списке оптимизируются во время обучения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...