用于单词/字符 n 元语法的 CNN 架构



我有一个序列标记的任务,我想建立一个CNN,它将接受固定数量的嵌入(基于字符或单词)的输入,并通过卷积/池化提取类似n-gram的特征。

我以前没有使用过卷积(用于文本或其他),所以我不确定哪种架构在此设置中更有意义:

  • Conv1D/MaxPool1D - 在 Conv 阶段提取 n-gram 是有意义的,但这种池化会产生什么?它只是嵌入最大值的 1 维吗?
  • Conv2D/MaxPool2D - 虽然我在现有方法中更频繁地看到它,但沿着令牌嵌入的维度卷积的事实对我来说没有意义。

你能分享一下你的直觉吗?

我只在RNN(递归神经网络)中做了序列标记,在CNN中做了图像分类,但我想我至少可以描述第一个和第二个设置在做什么:

  1. Conv1D/MaxPool1D:卷积将采用嵌入并围绕一个过滤器卷积它们,在这种情况下,滤波器是n X n X 1。这将创建一个 n/2 X n/2 X 1 矩阵,该矩阵现在比输入更复杂。

    让我在这里描述一下我的意思。如果你有一个 6 X 6 像素的灰度图像(灰度使它只有 1 层,而 RGB 将有 3 层),并且你用

    [[1, 0, -1], [1, 0, -1], [1, 0, -1]]
    然后输出将是 3 X 3 X 1 图像,像素现在不代表灰度值,而是它是否认为该位置有一条垂直线,因为中间列为 0,两侧各有 1s。

    然后,最大池将采用 3 X 3 X 1 并取一个 f 大小的正方形,并以 s 步幅将该正方形发送到新图像上。所以在这个例子中,假设f = 2和s = 2。然后我们有一个 2 X 2 的正方形穿过该图像。然后结果将是 2 X 2 X 1

    [
    [左上角 2 个方格的最大值,右上角正方形的最大值和 0], [左下方块的最大值,右下角方块的最大值和零]]

    然后这是一个 2 X 2 矩阵,其中单元格的值显示原始图像中在这些位置出现垂直条的可能性高或低。

    现在把它放到嵌入式序列中,这可能意味着如果你有一个n个单词,其值为m个变量,那么你将有一个n X m X 1矩阵。然后,您将用 f X f 矩阵进行卷积,以创建更复杂的矩阵,然后该矩阵将使用 f X f 正方形(或窗口)和 s 的步幅运行到最大池序列中。然后,这可能是受某个变量影响最大的单词,具体取决于您设置过滤器的方式。

  2. Conv2D/MaxPool2D:这与上述完全相同,但现在你有一个 n X m X 2 矩阵。其他每一步都是相同的,只是现在您的过滤器将是一个 f X f X 2 矩阵,您的输出将是(如果我们继续我们的示例)一个 2 X 2 X 2 矩阵而不是 2 X 2 X 1 矩阵。这可能会产生一些不同的影响。您可以复制 n X m X 1 矩阵并在第二维中复制它,然后让过滤器的 2 维不同,这反过来又可以通过显示变量在 1 类中而不是 2 类变量中提供更实用的见解。

我希望这在某种程度上有所帮助。

相关内容

  • 没有找到相关文章

最新更新