Word2vec 的表现优于 BERT,可能吗?

数据挖掘 喀拉斯 张量流 nlp word2vec 伯特
2022-02-13 22:29:36

我正在尝试使用 BERT 和 CNN 的组合来解决多标签分类(数据集是推文文本)。作为基准,我会将它与其他词嵌入进行比较,其中之一是 Word2vec。经过多次尝试,Word2vec-CNN 的性能似乎一直优于 BERT-CNN,这是我上次尝试的结果:

Word2vec-CNN
precision (macro): 0.89  
recall (macro): 0.87  
f1-score (macro): 0.88
accuracy (test set): 0.81
hamming loss: 0.062

BERT-CNN
precision (macro): 0.86  
recall (macro): 0.88  
f1-score (macro): 0.87
accuracy (test set): 0.74
hamming loss: 0.073

问题是:

  1. Word2vec(或任何静态词嵌入)是否有可能优于 BERT(或任何上下文词嵌入)?如果是这样,理由是什么?如果有任何关于这方面的研究论文,那将非常有帮助。
  2. 如果不是,可能是什么原因?

FWIW:模型是使用 TensorFlow-Keras 训练的(我有点怀疑这是由 TF-Keras 计算其指标的方式引起的,但我仍然没有弄清楚原因以及解决方案(如果有的话)),并且两个嵌入都是预训练的( BERT 模型是在更大的语料库上训练的,大约 200:1)。

3个回答

是的,如果您的开发/测试数据与训练数据来自同一个域,这可能是可能的,在这种情况下,word2vec 将遇到更少的 OOV 令牌,从而导致损失。

这也可能意味着 BERT 的好处——在通用域中处理 OOV 字符的子词标记化——失去了。如果您的词汇量很小,那么您的 word2vec 模型需要捕获较少标记之间的关系,并且可以比子词模型更好地建模这些关系,子词模型会丢失数据中固定标记之间的关系,而是尝试泛化超过 30K 子词标记之间的关系(在基于 bert 的未封装模型),这可能会导致噪声。

很高兴你发现哪里出错了!但是,这样的事情真的有可能发生。没有“最佳算法”之类的东西,因此方法的性能部分取决于您的数据集的外观。或者有时你的特征工程方法只是让数据欺骗你,比如说,你错误地泄露了一些数据,或者忽略了数据集的不平衡性。

感谢所有给出答案和评论的人。确实是我的数据造成的。

  1. 在此之前,我对两个模型都有相同的预处理管道,这将是您“通常的”NLP 预处理步骤(非字母数字删除、小写、词干提取和停用词删除)。我有一种预感,词干和停用词删除都会导致文本丢失一些上下文,因此 BERT 的好处不会普遍存在。试验另一个进行词干提取和停用词删除的预处理管道实际上证明有利于 BERT 模型,如下面的指标所示。进一步阅读:这篇文章这篇论文

  2. 我的数据DID来自与预训练 Word2vec(即推文)的训练数据相同的域。另一方面,预训练的 BERT 是结合推文和其他类型的文本进行训练的。除了 (1) 之外,我认为 Word2vec 对文本进行建模会容易得多。进一步阅读:本文

指标

Word2vec-CNN
precision (macro): 0.87
recall (macro): 0.87  
f1-score (macro): 0.87
accuracy (test set): 0.83
hamming loss: 0.063

BERT-CNN
precision (macro): 0.91  
recall (macro): 0.90  
f1-score (macro): 0.90
accuracy (test set): 0.82
hamming loss: 0.051