Вложение слов в тензорный поток (без предварительной подготовки)
Я новичок в tenorflow и пытаюсь взглянуть на различные примеры tenorflow, чтобы лучше понять его.
Теперь я видел, как эта строка использовалась во многих примерах тензорного потока без упоминания какого-либо конкретного алгоритма встраивания, используемого для получения встраивания слов.
embeddings = tf.Variable(tf.random_uniform((vocab_size, embed_dim), -1, 1))
embed = tf.nn.embedding_lookup(embeddings, input_data)
Вот некоторые примеры:
- https://github.com/Decalogue/dlnd_tv_script_generation/blob/master/dlnd_tv_script_generation.py
- https://github.com/ajmaradiaga/cervantes-text-generation/blob/master/cervants_nn.py
Я понимаю, что первая строка будет инициализировать встраивание слов по случайному распределению, но будут ли дополнительно обучаться векторы встраивания в модели, чтобы дать более точное представление слов (и изменить начальные случайные значения на более точные числа), и если да Какой метод используется в действительности, если нет упоминания о каких-либо очевидных методах встраивания, таких как использование word2vec и glove внутри кода (или подача предварительно заданных векторов этих методов вместо случайных чисел в начале)?
1 ответ
Да, эти вложения обучаются так же, как weights
а также biases
иначе представлять слова с некоторыми случайными значениями не имело бы никакого смысла. Эти вложения обновляются во время обучения, как если бы вы обновляли weight
матрица, то есть с помощью методов оптимизации, таких как Gradient Descent или Adam optimizer и т. д.
Когда мы используем предварительно обученные вложения, такие как word2vec
они уже обучены на очень больших наборах данных и уже достаточно точно представляют слова, следовательно, они не нуждаются в дальнейшем обучении. Если вы спрашиваете, как их обучают, есть два основных алгоритма обучения, которые можно использовать для изучения встраивания из текста; это непрерывный пакет слов (CBOW) и пропуск грамм. Объяснить их полностью здесь невозможно, но я бы предложил воспользоваться помощью Google. Эта статья может помочь вам начать.