Не могу понять значение keras.слои.Встраивание()

#python #tensorflow #keras

#python #тензорный поток #keras

Вопрос:

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

Кто-нибудь, пожалуйста, может прояснить?

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

Ответ №1:

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

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

Ответ №2:

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

Идея, лежащая в основе встраивания, заключается в сжатии разреженного вектора в низкоразмерный плотный вектор. Давайте рассмотрим словарь из 100 тысяч слов. Каждое слово может быть представлено в виде вектора размером 100000 со всеми 0 и одним 1 в зависимости от позиции слова / индекса. Представление слова непосредственно по его индексу неэффективно (рассмотрите порядок или математические операции над idexes). Но большие разреженные векторы не очень подходят для работы в контексте 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]
  

Комментарии:

1. Не могли бы вы использовать пример, показанный в вопросе, чтобы сделать его практически всеобъемлющим?

2. @voo_doo Я добавил пример для вас. На самом деле в этом нет ничего особенного. Векторы встраивания выбираются из случайного распределения и позже обновляются путем обратного распространения.