我应该在二进制文本分类中应用 1D 还是 2D CNN?

数据挖掘 深度学习 美国有线电视新闻网 卷积
2022-02-12 15:40:50

我正在尝试训练文本分类模型。对于所有句子示例,我将它们限制为最多 32 个单词,如果不存在 32 个单词,我将创建零填充数组。为了将每个单词转换为向量,我使用了预训练的 word2vec 模型。

在最终设置中,我的数据的形状是:

x_train: 15000 个样本,每个样本有 32 个向量,每个向量大小为 100 (15000, 32, 100)

y_train: 15000 个二进制目标(15000, 1)

所以我的问题是,我应该在我的 x_train 或 2D CNN 上应用 1D CNN 吗?我认为我可以通过两种方式做到这一点,但是对于这类问题有没有主要的正确方法?我读了一些关于文本分类的 1D CNN 的东西,但也有一些 2D CNN 的例子。有什么缺点和优点?

1个回答

标准方法是应用一维卷积。

虽然从技术上讲,没有什么可以阻止您在文本表示上实现 2D 卷积,但它们会比普通的 1D 卷积“表达力差”:

  • 在正常的一维卷积中,内核将具有 100 的深度和您选择的宽度(例如 3、5)。内核在“时间”维度上滑动,并在整个通道维度上进行计算:

在此处输入图像描述

  • 为了计算文本的二维卷积,二维将是时间和通道。您可以将内核高度设为 100,因此采用整个通道维度,但这类似于一维卷积,这样做没有意义。因此,为了进行 2D 卷积,您将拥有一个不能一次覆盖整个通道维度的内核:

在此处输入图像描述

因此,虽然可以对文本进行 2D 卷积,但覆盖整个通道维度并因此可以表达任何 2D 卷积计算的 1D 卷积核的表现力会降低。

所以答案是你应该使用一维卷积。这是有意义的,也是人们所做的。

(图片取自这里这里