排列不变神经网络

Permutation-invariant neural network

我有一个来自多对象跟踪试验的数据集,参与者在显示器上跟踪 8 个点,其中 4 个是目标(在试验开始时简要标记),4 个是干扰项。在试验结束时,该人标记 4 个目标。我的数据集只包括参与者回答正确的试验。我每秒有 10 帧,每帧包括点的位置和眼睛注视的位置,所以总共有 18 个数字。试用持续 8 秒。 这些点有 40 种可能的轨迹。

我正在尝试训练一个神经网络来仅根据注视位置和点来标记 4 个目标。问题是,在数据集中,答案总是向量中的前 4 个点。如果我使用这些输出进行训练,网络只会学会总是说 [1,1,1,1,0,0,0,0]。 有没有一种方法可以改变输入或输出(或两者)——例如通过计算不同的特征——这样网络接收点的顺序无关紧要?事实上,一个点的坐标是输入向量中的第一个(第二个,第三个......)在这个任务中没有任何意义。

到目前为止我尝试了什么:

我对输入特征有一个想法,我可以将显示划分为一个离散的网格,并在有一个点的地方放 1,在注视的位置放一些其他数字,在其他地方放 0。但是,我不知道输出会是什么样子,有什么想法吗?

我知道我无法从一帧中找到关于整个试验的答案,所以我希望结合所有 80 帧试验的网络输出并从中找到答案。

我什至不确定 NN 是否有希望学习这一点。是否有任何排列不变的机器学习模型?找了半天也没找到

看看 PointNet 架构。他们正在解决一个类似的问题,但在 3D 中。

基本方法如下。将所有点馈送到嵌入层,该层将 xy 坐标映射到更高维度的 space。这些是点的局部特征。然后,将所有局部特征输入到最后一层是最大池的 "global feature extractor" 模块。该模块的输出代表整个输入,最后的最大池保证置换不变性(或 "symmetry")。然后,将所有局部特征与全局特征连接起来,就可以得到每个点的完整特征集。最后,通过密集层将每个点的特征映射到点的 class 就完成了。

如果您看一下 PointNet source code,您会发现实现此架构非常容易。