#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 Я добавил пример для вас. На самом деле в этом нет ничего особенного. Векторы встраивания выбираются из случайного распределения и позже обновляются путем обратного распространения.