神经网络如何处理变化的输入大小?


42

据我所知,神经网络在输入层中具有固定数量的神经元

如果在类似NLP的上下文中使用神经网络,则大小不同的句子或文本块将被馈送到网络。如何将变化的输入大小与网络输入层的固定大小相协调?换句话说,如何使这种网络具有足够的灵活性以处理可能从一个单词到多页文本的输入?

如果我对输入神经元数量固定的假设是错误的,并且将新的输入神经元添加到网络中或从网络中删除以匹配输入大小,那么我将看不到如何训练它们。

我以NLP为例,但是许多问题本质上是不可预测的输入大小。我对处理此问题的一般方法感兴趣。

对于图像,很明显,您可以将上/下采样到固定大小,但是对于文本,这似乎是不可能的方法,因为添加/删除文本会更改原始输入的含义。


您能否通过缩减采样到固定大小来澄清您的意思?下采样如何完成?
查理·帕克

Answers:


36

我想到了三种可能性。

最简单的方法是零填充。基本上,您需要一个相当大的输入大小,并且如果您的具体输入太小,则只需添加零即可。当然,这是非常有限的,并且如果您输入的内容范围从几个单词到全文,则肯定没有用。

如果您将不同大小的文本作为输入,则循环神经网络(RNN)是非常自然的NN。您将单词作为单词向量(或嵌入)一个接一个地输入,而RNN的内部状态应该编码整个单词串的含义。这是较早的论文之一。

另一种可能性是使用递归神经网络。这基本上是一种预处理形式,其中将文本递归地减少为较少的单词向量,直到只剩下一个-您的输入应该被编码为整个文本。如果您的输入内容包含句子(大小可能相差很大),那么从语言学角度讲这很有意义,因为句子是递归构造的。例如,“男人”的单词向量应与“男人误把妻子戴帽子的男人”的单词向量相似,因为名词短语的作用类似于名词等。通常,您可以使用语言信息来指导您对句子的递归。如果您想超越Wikipedia的文章,这可能是一个不错的开始


1
您所谓的“递归NN”和RNN有什么区别?R是递归的...此外,一些引用和指针将很有用。
埃里克·普拉顿

3
R是周期性的。递归意味着一次又一次线性地将输入添加到相同的NN。递归表示沿树结构输入数据。
BlindKungFuMaster

@BlindKungFuMaster 0用于MLP的带有掩码的填充是好的,并且不会严重影响精度吗?
DINA TAKLIT

12

其他人已经提到:

  • 零填充
  • RNN
  • 递归神经网络

因此,我将添加另一种可能性:根据输入的大小,使用卷积不同的次数。这是一本很好的书,支持了这种方法:

考虑一个图像集合,其中每个图像具有不同的宽度和高度。尚不清楚如何使用固定大小的权重矩阵对此类输入进行建模。卷积很容易应用。根据输入的大小,仅简单地对内核应用不同的次数,而卷积运算的输出将相应地缩放。

摘自第360页。您可以进一步阅读以了解其他方法。


1
在我看来,只有在1)所有输入图像的长宽比(AR)相同,2)将所有图像重新缩放到给定的AR或3)零填充图像以强制a给定AR。
马特·文纳姆

@Salvador Dali可以将掩码的“ 0”填充作为MLP的一个好的解决方案吗?
DINA TAKLIT

我在书中的答案中找不到您引用的文字。也许它最初存在,之后又被删除了?页面354当前具有类似的开头段落,但从不使用可变数量的层(而是可变的输出大小)。
jochen

7

在NLP中,输入具有固有的顺序,因此RNN是自然的选择。

对于在输入之间没有特定顺序的可变大小输入,可以设计以下网络:

  1. 对每个输入组使用相同子网的重复(即具有相同权重)。这个重复的子网学习(一组)输入的表示形式。
  2. 对输入的表示使用与输入具有相同对称性的运算。对于顺序不变的数据,平均输入网络的表示是一种可能的选择。
  3. 根据输入表示的组合,使用输出网络使输出的损失函数最小化。

结构如下:

网络结构

类似的网络已用于学习对象之间的关系(arxiv:1702.05068)。

如何学习可变大小的组值的样本方差给出了一个简单的例子这里(免责声明:我所链接的文章的作者)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.