我很困惑我们如何在 PV-DBOW 中生成新的段落向量?
如果我想使用嵌入对某些文本进行分类,我将如何为新段落生成向量?
在原始论文中,作者写道:
在预测时,需要执行推理步骤来计算新段落的段落向量。这也是通过梯度下降获得的。
我不清楚他们将如何使用梯度下降计算新段落的段落向量。
我很困惑我们如何在 PV-DBOW 中生成新的段落向量?
如果我想使用嵌入对某些文本进行分类,我将如何为新段落生成向量?
在原始论文中,作者写道:
在预测时,需要执行推理步骤来计算新段落的段落向量。这也是通过梯度下降获得的。
我不清楚他们将如何使用梯度下降计算新段落的段落向量。
原始论文对推理步骤的实现做了很多挥手,并不清楚。所以你的困惑是有道理的。我将在下面进行高级解释。我假设只有 PV-DBOW 模型。
训练阶段
推理阶段
概括
这是 Richard Berendsen 的一个非常好的实现教程。我从解释中忽略了额外的复杂性,如负采样、上下文窗口。
hssay的答案写得很好,但我想我会添加自己的解释以进一步简化它,并展示它如何适用于 PV-DM
Doc2Vec 与 Word2Vec 不同,它以独特的方式构建,使得每次对同一文档的预测(或他们称之为推理)都略有不同。这种稍微不稳定的预测的原因是,预测操作实际上每次都试图调整网络内部神经元的一些权重,以便能够“正确”地预测结果。您可能首先会觉得它很奇怪,但这就是为什么该算法能够预测文档的嵌入而不仅仅是单词。
解释
分布式内存模型架构
在训练开始之前,我们为训练数据集中的每个文档分配一个文档 ID。所以每个数据点都有 2 个组件:1)文档 ID 2)一个文档(单词列表。)
首先,我们使用传统的 Word2Vec 算法将语料库中的每个单词转换为一个向量。
其次,我们通过向网络提供两件事来训练模型:1)文档 ID 和 2)来自该文档的上下文。训练阶段的目标是调整权重,以便对于任何文档 ID 和上下文(固定长度并从文档上的滑动窗口采样),模型可以以高概率预测下一个单词。为此,我们形成 2 层,一层将文档 ID 转换为向量(层 A),另一层隐藏层(层 B)在输出处使用 softmax,将 的平均值(或连接)作为输入:
1- A层的输出(文档ID的向量)
2- Word2Vec 将单词嵌入到上下文中
Softmax 层输出文档的向量表示。模型训练直到所有权重都以某种方式设置以实现最高预测概率(或尽可能接近)。
现在是预测阶段。预测的数据点只是我们要预测它的向量的 Document(我们没有像以前那样有 Document ID)。我们需要 Document ID 作为 Layer A 的输入,否则我们将无法使用网络,那么我们该怎么办?我们尝试预测文档 ID,这就是为什么它不是确定性的 :)
为了能够预测文档 ID:
1- 我们冻结从训练中学到的隐藏层权重(层 B)
2- 我们给网络一个来自我们想要预测其向量的文档的上下文。
3- 我们使用我们的 Word2Vec 模型来获取上下文中每个单词的嵌入
4-我们提出一个随机向量
5- 我们在上面的第 3 步和第 4 步中取向量的平均值(或连接),并将其用作隐藏层(权重冻结)的输入
4- 我们检查我们选择的随机向量是否最大化了上下文中预测的下一个单词的 softmax 概率。
5- 我们通过在文档 ID 向量上随机梯度下降来重复这个过程,直到我们发现文档 ID 向量表示最大化所选单词的概率
6- 我们使用预测的文档 ID 和文档词向量来预测文档向量表示(这将与预测的文档 ID 一样好)
这就是为什么我们不能总是为 Document 向量获得完全相同的值。
这就是分布式内存模型架构的工作原理,分布式词袋也依赖于预测 Document ID 来预测 Documents 向量,但算法不同(如果您有兴趣,请在下面解释)
分布式词袋架构:
在训练阶段,我们通过向网络提供两件事来训练模型:1)文档 ID 和 2)从该文档中随机选择的单词。训练阶段的目标是调整权重,以便对于任何文档 ID,模型可以高概率地预测从该文档中随机选择的单词。为此,我们形成 2 层,一层将文档 ID 转换为向量(A 层),隐藏层(B 层)在输出处使用 softmax,将 A 层的输出(文档 ID 的向量)作为输入. Softmax 层输出文档的向量表示。
模型训练直到所有权重都以某种方式设置(或尽可能接近)。
对于预测:
1- 我们冻结从训练中学到的隐藏层权重(层 B)
2- 我们从该文档中随机选择我们想要预测其向量的单词给网络。
3- 我们提出一个随机向量作为隐藏层(B 层)的输入
4- 我们检查我们选择的随机向量是否最大化了所选单词的 softmax 概率。
5- 我们通过在文档 ID 向量上随机梯度下降来重复此过程,直到我们发现文档 ID 向量表示最大化所选单词的概率
6- 我们使用预测的文档 ID 作为隐藏层的输入来预测文档向量表示(这将与预测的文档 ID 一样好)