Nlp 用于单词/字符n-grams的CNN体系结构

Nlp 用于单词/字符n-grams的CNN体系结构,nlp,deep-learning,conv-neural-network,convolution,tagging,Nlp,Deep Learning,Conv Neural Network,Convolution,Tagging,我有一个序列标记的任务,我想建立一个CNN,它将接受固定数量的嵌入(基于字符或单词)的输入,并通过卷积/池提取n-gram样的特征 我以前没有使用过卷积(用于文本或其他),因此我不确定在此设置中哪个体系结构更有意义: Conv1D/MaxPool1D-在Conv阶段提取n-gram是有意义的,但是这种池产生了什么?它是嵌入最大值的一维吗 Conv2D/MaxPool2D-尽管我在现有的方法中更频繁地看到它,但沿着令牌嵌入的维度进行卷积的事实对我来说没有意义 你能分享一下你的直觉吗?我只在RN

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

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

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

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

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

  • Conv1D/MaxPool1D:卷积将进行嵌入,并将它们卷积到一个过滤器周围,在本例中,该过滤器是一个nx1。这将创建一个n/2xn/2x1矩阵,它现在比输入更复杂

    让我描述一下我在这里的意思。如果您有一个6 X 6像素的灰度图像(灰度使其仅为1层,而RGB将有3层),并使用过滤器(内核)进行卷积,即[[1,0,-1], [1, 0, -1], [1, 0, -1]] 然后,输出将是一个3x3x1图像,像素现在不表示灰度值,而是表示由于中间列为0,两侧各为1s,它是否认为该位置有一条垂直线

    然后Max Pool将取3 X 3 X 1,取一个f大小的正方形,并以跨步的方式将该正方形发送到新图像上。在这个例子中,假设f=2,s=2。然后我们有一个2 X 2的正方形穿过这张图片。结果将是一个2 X 2 X 1的

    [[max of upper left 2 squares, max of upper right square and 0], [max of lower left squares, max of lower right square and zero]] [[左上2个方块的最大值,右上方块的最大值和0], [左下方格的最大值、右下方格的最大值和零]] 然后,这是一个2 X 2矩阵,其中单元格的值显示原始图像中在这些位置具有垂直条的可能性很高或很低

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

  • Conv2D/MaxPool2D:这与上述内容完全相同,但现在有了一个nxmx2矩阵。其他步骤都是一样的,只是现在你的过滤器是一个f X f X 2矩阵,你的输出是一个2 X 2 X 2矩阵,而不是一个2 X 2 X 1矩阵。这可能会产生一些不同的影响。您可以复制n X m X 1矩阵,并在第二个维度中复制它,然后使过滤器的两个维度不同,这反过来可以通过显示不仅在1中最大,而且在2类变量中最大的变量,在最后提供更实际的洞察力

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

    [[max of upper left 2 squares, max of upper right square and 0], [max of lower left squares, max of lower right square and zero]]