置换不变神经网络

时间:2016-04-07 11:41:11

标签: machine-learning neural-network feature-selection

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

An example of what a frame in a trial looks like, the red points are targets, the blue cross is the gaze.

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

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

  • 在训练期间,随机置换每个输入(并输出 (并且反复地)并且迭代所有70种可能的排列 输出向量[1,1,1,1,0,0,0,0]以便排列 在培训中同样代表。没有工作(成功率是 1/70,等于机会)
  • 从左到右(通过x坐标)对点进行排序 - 结果得到改善,但网络基本上记住了轨迹并且即使在我移除眼睛注视位置时也能很好地工作。当然,我希望网络能够正确回复,即使是没有经过培训的新轨迹

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

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

我甚至不确定NN是否有任何希望能够学会这一点。是否存在排列不变的机器学习模型?我搜索了很长时间,什么也没找到。

1 个答案:

答案 0 :(得分:0)

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

基本方法如下。将所有点都馈送到嵌入层,该嵌入层将 x y 坐标映射到更高维空间。这些是点的本地特征。然后,将所有本地要素提供给“全局特征提取器”模块,其最后一层是最大池。该模块的输出表示整个输入,最后的最大池保证了置换不变性(或“对称性”)。然后,将所有局部特征与全局特征连接起来,您就可以获得每个点的完整特征集。最后,通过密集层将每个点的特征映射到点的类,然后就完成了。

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