doc2vec 中使用的文档向量是一次性的吗?
Are the document vectors used in doc2vec one-hot?
我从概念上理解 word2vec 和 doc2vec 是如何工作的,但是我正在努力解决向量中的数字如何通过算法处理的具体细节。
如果三个上下文词的向量是:[1000]、[0100]、[0010]
并且目标词的向量是 [0001],算法是否对每个 input/target 输出对执行一次反向传递,如下所示:
[1000]-->[0001]
[0100]-->[0001]
[0010]-->[0001]
或者是将输入(上下文)向量加在一起,如下所示:
[1110]-->[0001]
或者是否使用了其他进程?
此外,doc2vec 中使用的文档向量是采用词向量的单热形式,还是用连续标度上的单个数字标记的文档,如 1、2、3 等?
我知道文档标签在训练过程中作为输入节点包含在内,但它们在测试阶段如何使用?在测试期间输入上下文词向量以尝试预测目标词(反之亦然)时,是否也需要输入某些文档 ID?
不,由 Word2Vec 或 Doc2Vec 的 'Paragraph Vectors' 形式创建的向量是 'dense embeddings' – 分散的连续实值坐标遍及较小的维度,而不是 0/1 坐标非常多的维度。
可以将部分训练视为具有 'one-hot' 编码的单词或特定文档 ID 的存在或缺失 – 然后使用这些原始 'one-hot' 层激活一个 'projection' 层,该层 maps/averages 一次性进入密集 space。但是我熟悉的实现,例如原始的 Google word2vec.c 或 Python gensim,永远不会实现巨大的词汇量大小的单热向量。
相反,他们使用 words/document-tags 作为 select 正确密集向量的查找键以供后续操作使用。这些查找到的密集向量从随机的低量级坐标开始,然后通过训练不断调整,直到它们达到人们使用 Word2Vec/PV-Doc2Vec 的有用 distance/direction 排列。
因此在 skip-gram 中,单词 'apple' 将拉出一个向量,最初是随机的,并且该上下文向量被前向传播以查看它预测特定 in-window 的效果如何目标词。然后,对所有值(包括 'apple' 向量的各个维度)进行微调,以使预测稍微好一些。
在 PV-Doc2Vec PV-DBOW 中,文档 ID 'doc#123'(或者可能只是 int 槽 123)将为该文档提取一个候选向量,最初是随机的,evaluated/nudged它对该文档中单词的预测效果如何。
Word2Vec CBOW 和 Doc2Vec PV-DM 涉及在前向传播之前将多个候选向量一起进行一些额外的平均,然后在所有组合起来构成上下文的向量之间进行微调的分数分布,但它仍然是相同的一般方法——涉及使用密集的连续向量(通常为 100-1000 维)而不是单热向量(维数与整个词汇表或整个文档集大小一样大)。
我从概念上理解 word2vec 和 doc2vec 是如何工作的,但是我正在努力解决向量中的数字如何通过算法处理的具体细节。
如果三个上下文词的向量是:[1000]、[0100]、[0010]
并且目标词的向量是 [0001],算法是否对每个 input/target 输出对执行一次反向传递,如下所示:
[1000]-->[0001]
[0100]-->[0001]
[0010]-->[0001]
或者是将输入(上下文)向量加在一起,如下所示:
[1110]-->[0001]
或者是否使用了其他进程?
此外,doc2vec 中使用的文档向量是采用词向量的单热形式,还是用连续标度上的单个数字标记的文档,如 1、2、3 等?
我知道文档标签在训练过程中作为输入节点包含在内,但它们在测试阶段如何使用?在测试期间输入上下文词向量以尝试预测目标词(反之亦然)时,是否也需要输入某些文档 ID?
不,由 Word2Vec 或 Doc2Vec 的 'Paragraph Vectors' 形式创建的向量是 'dense embeddings' – 分散的连续实值坐标遍及较小的维度,而不是 0/1 坐标非常多的维度。
可以将部分训练视为具有 'one-hot' 编码的单词或特定文档 ID 的存在或缺失 – 然后使用这些原始 'one-hot' 层激活一个 'projection' 层,该层 maps/averages 一次性进入密集 space。但是我熟悉的实现,例如原始的 Google word2vec.c 或 Python gensim,永远不会实现巨大的词汇量大小的单热向量。
相反,他们使用 words/document-tags 作为 select 正确密集向量的查找键以供后续操作使用。这些查找到的密集向量从随机的低量级坐标开始,然后通过训练不断调整,直到它们达到人们使用 Word2Vec/PV-Doc2Vec 的有用 distance/direction 排列。
因此在 skip-gram 中,单词 'apple' 将拉出一个向量,最初是随机的,并且该上下文向量被前向传播以查看它预测特定 in-window 的效果如何目标词。然后,对所有值(包括 'apple' 向量的各个维度)进行微调,以使预测稍微好一些。
在 PV-Doc2Vec PV-DBOW 中,文档 ID 'doc#123'(或者可能只是 int 槽 123)将为该文档提取一个候选向量,最初是随机的,evaluated/nudged它对该文档中单词的预测效果如何。
Word2Vec CBOW 和 Doc2Vec PV-DM 涉及在前向传播之前将多个候选向量一起进行一些额外的平均,然后在所有组合起来构成上下文的向量之间进行微调的分数分布,但它仍然是相同的一般方法——涉及使用密集的连续向量(通常为 100-1000 维)而不是单热向量(维数与整个词汇表或整个文档集大小一样大)。