【问题标题】:What does convolution do on embedding axis in NLP?卷积对 NLP 中的嵌入轴有什么作用?
【发布时间】:2018-12-21 08:53:49
【问题描述】:

我试图了解卷积神经网络在 NLP 中的作用。

例如,我输入的句子矩阵的维度为 (100,200)。这里100是我句子的长度,200是词嵌入的维度。

然后我使用卷积层来提取特征。在 Keras 中,类似Conv1D(filters=128, kernel_size=3, padding='same', activation='tanh', strides=1)

但是为什么输出维度是(100,128)?第一个数字我可以理解,因为我使用的padding相同,stride 1,所以维度应该是一样的。 但是为什么第二维是 128,不应该是 200*128 吗? 内核实际上是什么样子的?我假设它只是沿着句子扫描,但是为什么嵌入维度会丢失,内核只是总结了它?

我添加了一张图片来更好地说明它。如果是一维核,对词序列进行卷积,为什么卷积后词嵌入维度变为1(如图)?这对我来说没有意义。

【问题讨论】:

  • 请把图的出处给一下好吗?

标签: python keras nlp conv-neural-network word-embedding


【解决方案1】:

所有标准层都是这样工作的。输出暗淡与过滤器相同。

如果不是这样的话,真的很难控制。

您是否看过神经网络的基础知识来教授全连接层的工作原理?

层中的每个神经元获取所有输入,将它们乘以权重并求和

neuron1Out = in1*W11 + in2*W12 + in3*W13 + bias1   
neuron2Out = in1*W21 + in2*W22 + in3*W23 + bias2

这是Dense(2) 在获得input_dim=3 时输出的内容。

权重矩阵的形状为(3,2),一维用于输入,另一维用于输出,数学运算是与输入的矩阵乘法。

卷积的作用几乎完全相同。不同之处在于它会一遍又一遍地重复操作,从而为每个像素带来结果。

内核的形状是(kernelXpixels, kernelYpixels, input_channels, output_channels),在你的例子中是(3,3,200,128)

在将 200 个输入通道中的每个通道与 200 个权重切片中的每个通道相乘后,将结果相加到单个输出中。这样做了 128 次,带来 128 个输出神经元/通道。

【讨论】:

  • 好的,那么200片的重量一样吗?
  • 不,每个输入通道有一组 3x3 权重。在将每个组乘以每个输入通道后,“它们被求和”(这消除了 200)。用不同的权重完成 180 次,创建 180 个输出。
  • 好的,那么权重是如何确定的,它们是固定值还是从训练中学到的?
  • 从培训中学到的
猜你喜欢
  • 2016-09-03
  • 1970-01-01
  • 1970-01-01
  • 2013-09-29
  • 2016-11-11
  • 1970-01-01
  • 2020-03-26
  • 2019-08-09
  • 1970-01-01
相关资源
最近更新 更多