Вложение слов в тензорный поток (без предварительной подготовки)

Я новичок в tenorflow и пытаюсь взглянуть на различные примеры tenorflow, чтобы лучше понять его.

Теперь я видел, как эта строка использовалась во многих примерах тензорного потока без упоминания какого-либо конкретного алгоритма встраивания, используемого для получения встраивания слов.

embeddings = tf.Variable(tf.random_uniform((vocab_size, embed_dim), -1, 1))
embed = tf.nn.embedding_lookup(embeddings, input_data)

Вот некоторые примеры:

Я понимаю, что первая строка будет инициализировать встраивание слов по случайному распределению, но будут ли дополнительно обучаться векторы встраивания в модели, чтобы дать более точное представление слов (и изменить начальные случайные значения на более точные числа), и если да Какой метод используется в действительности, если нет упоминания о каких-либо очевидных методах встраивания, таких как использование word2vec и glove внутри кода (или подача предварительно заданных векторов этих методов вместо случайных чисел в начале)?

1 ответ

Решение

Да, эти вложения обучаются так же, как weights а также biases иначе представлять слова с некоторыми случайными значениями не имело бы никакого смысла. Эти вложения обновляются во время обучения, как если бы вы обновляли weight матрица, то есть с помощью методов оптимизации, таких как Gradient Descent или Adam optimizer и т. д.

Когда мы используем предварительно обученные вложения, такие как word2vecони уже обучены на очень больших наборах данных и уже достаточно точно представляют слова, следовательно, они не нуждаются в дальнейшем обучении. Если вы спрашиваете, как их обучают, есть два основных алгоритма обучения, которые можно использовать для изучения встраивания из текста; это непрерывный пакет слов (CBOW) и пропуск грамм. Объяснить их полностью здесь невозможно, но я бы предложил воспользоваться помощью Google. Эта статья может помочь вам начать.

Другие вопросы по тегам