训练 CBOW 和 SKIP GRAM 词嵌入时传递给神经网络的输入的结构和维度是什么

数据挖掘 nlp 词嵌入
2022-03-06 21:25:42

在从头开始训练词嵌入时,我对在自然语言处理(NLP)中传递给神经网络的输入感到困惑。CBOW我读了这篇论文,有一些疑问。

在一般的神经网络(NN)架构中,更清楚的是,每一行都作为具有d特征的神经网络的输入。例如下图中:

在此处输入图像描述

X1, X2, X3是一个输入,或数据帧的一行。所以在这里,一个数据点是,dimension 3数据框是这样的:

X1  X2  X3
1   2   3
4   5   6
7   8   9

我的理解正确吗?

现在NLP来看CBOW架构:让我们举个例子来训练CBOW词嵌入:

Sentence1“我喜欢自然处理域。”

从上面的句子创建训练数据,窗口大小=1

Input                      output

(I,natural)                like
(like,processing)          natural
(natural,domain)           processing
(processing)               domain

上面为窗口大小=1的CBOW架构创建训练数据是否正确?

我的问题如下:

对于上图,我将如何将此训练数据传递给神经网络?

如果我将每个单词表示one-hot encoded为维度等于大小的向量vocabulary V作为神经网络的输入,那么我应该如何在 dimesion 的同时传递 2 个单词2V as input

这是为第一个训练样本传递输入的方式吗:我只是连接了两个输入词:

在此处输入图像描述

然后我训练网络使用交叉熵损失来学习词嵌入?

Is this the right way to pass input?

Secondly, the middle layer will give us the word embeddings for 2 input words or the target words??

1个回答

只需将 Skip-Gram(带负采样)视为一个简单的二元逻辑分类器。

数据是附近单词对的集合(w,c)从大型语料库中提取。对于每一个k 负样本是通过绘制上下文词形成的c噪声分布

该模型有两层参数,它们之间没有非线性函数(相当于层参数的矩阵乘法)和输出上的sigmoid函数(不是 softmax)。输入和输出层每个单词有一个节点,中间层有嵌入的维度d(例如 500)。

对于每个单词对(w,c), 输入一个 one-hot 向量表示w并在输出节点预测 1 表示c和 0 在每个负输出节点c.

每个输入字w对应于d第一层的参数和每个上下文词c拥有d第二层参数。这些是嵌入。因为每个词都被认为是w或者c在不同的时间,每个字典单词都有两个d维嵌入(每层一个),通常只使用一个。