word2vec:上下文向量在分类中的用处

数据挖掘 词嵌入 word2vec nlp 上下文向量
2021-09-17 22:28:24

我一直在研究一个基于 NN 的分类系统,它接受文档向量作为输入。我真的不能谈论我专门训练神经网络的内容,所以我希望得到一个更一般的答案。

到目前为止,我一直在使用的词向量(特别是 R 的 text2vec 包中的 gloVe 函数)一直是目标向量到目前为止,我还不知道 word2vec 训练产生了上下文向量,坦率地说,我不确定它们到底代表什么。(这不是主要问题的一部分,但如果有人可以向我指出有关上下文向量的用途和作用的资源那将不胜感激)

我的问题是,这些上下文词向量在任何类型的分类方案中都有多大用处?我是否错过了输入神经网络的有用信息?

从质量上讲,这四种方案的效果如何?

  1. 仅目标词向量。
  2. 仅上下文词向量。
  3. 平均目标和上下文向量。
  4. 连接向量(即 100 个向量 word2vec 模型的长度为 200)
4个回答

word2vec 的做法是仅使用目标(隐藏)嵌入。但是有一些关于将目标向量与上下文向量相结合的工作(例如本文)。通过组合嵌入来获得更好的结果并不总是这样。

GloVe 论文中,作者通过对这些向量求和来实现性能的小幅提升。

本质上是目标向量w和上下文向量C学习相同的东西(他们共同分解单词共现统计矩阵并且是同一枚硬币的两个方面)。您可以等效地使用其中任何一个。

但是,通过取它们的平均值可以获得更好的结果……这是因为嵌入经过训练,因此wC近似一个有用的统计量。如果C的被丢弃,只有w那时使用ww取回编码的统计信息,但出现错误。使用wC显然更可取,因为它以最小的错误返回统计信息,但需要保留两组嵌入(内存的两倍)。在一些简化假设下,使用它们的平均值一个=w+C2可以看出一半的错误,所以不如保留两者(例如连接),但比只使用任何一个都好w或者C.

本文给出了更多细节

因此,根据我对这个问题的理解,您想了解 word2vec 的工作原理,以便您可以评估从该模型生成的上下文向量在多大程度上有助于按含义区分单词。

Word2vec 在分布假设的前提下工作,该假设基本上表明出现在 soimikar 上下文中的单词将具有相似的含义(例如,狗吃了食物/猫吃了食物:狗和猫都出现在相同的上下文中,因此它们在语义上彼此靠近)

因此 word2vec 通过一个有效地是前馈神经网络的 CBOW 模型来表述这一点,它将目标词的周围上下文作为一系列热编码向量,旨在预测目标词(当然有一个假设,其中上下文被视为一个词袋,因此假设一个词的含义与其上下文的词序无关)。

在训练之后,模型的权重被用于嵌入单词嵌入,它表示语义空间中的单词含义。(供进一步参考

我对您的问题有点困惑,因为 word2vec 基本上为每个单词输出一个单词向量/嵌入,这完全独立于文档中该单词的上下文。

Word2vec 是 Google 提出的一种非常简单且不错的嵌入技术,它使用神经网络通过使用 Skip-gram 或连续词袋方法 (CBOW) 来进行词嵌入。如果您想了解更多详细信息,您应该阅读他们的论文。

为了克服 word2vec 的这个问题——它的嵌入不学习上下文——有两种方法。一个是名为 ELMO(它使用 LSTM)的模型,另一个是 BERT(使用 Transformer)。这些是现在最先进的技术,因为它们可以学习上下文和长期依赖关系。我没有使用 R 的经验,所以我不知道这些是否可以在 R 中实现,或者是否有适用于它们的包,但它们适用于大多数深度学习包,如 PyTorch 或 TensorFlow。

一个简短的总结: