我有一个来自多物体追踪试验的数据集,其中参与者在显示器上跟随8个点,其中4个是目标(在试验开始时短暂标记),4个是干扰物。在试验结束时,该人标记了4个目标。我的数据集仅包括参与者的回复正确的试验。我每秒有10帧,每帧包括点的位置和眼睛注视的位置,所以总共18个数字。试验持续8秒。 这些点有40种可能的轨迹。
我试图训练一个神经网络,仅根据注视位置和点数来标记4个目标。问题是,在数据集中,答案始终是向量中的前4个点。如果我使用这些输出进行训练,网就会学会总是说[1,1,1,1,0,0,0,0]。 有没有办法可以改变输入或输出(或两者) - 例如通过计算不同的特征 - 这样它对网络收到点的顺序并不重要?点的坐标是输入向量中的第一个(第二个,第三个......)这一事实在这个任务中没有任何意义。
到目前为止我尝试了什么:
我对输入功能有一个想法,我可以将显示器划分为一个离散的网格,并将1放在有一个点的地方,一些其他数字,其中凝视的位置为0,其他地方为0。但我不知道,输出会是什么样的,有什么想法吗?
我知道我无法从一个框架中找到关于整个试验的答案,因此我希望将试验的所有80帧的网络输出结合起来并从中找到答案。
我甚至不确定NN是否有任何希望能够学会这一点。是否存在排列不变的机器学习模型?我搜索了很长时间,什么也没找到。
答案 0 :(得分:0)
看看PointNet架构。他们正在解决类似的问题,但是在3D中。
基本方法如下。将所有点都馈送到嵌入层,该嵌入层将 x 和 y 坐标映射到更高维空间。这些是点的本地特征。然后,将所有本地要素提供给“全局特征提取器”模块,其最后一层是最大池。该模块的输出表示整个输入,最后的最大池保证了置换不变性(或“对称性”)。然后,将所有局部特征与全局特征连接起来,您就可以获得每个点的完整特征集。最后,通过密集层将每个点的特征映射到点的类,然后就完成了。
如果您查看PointNet source code,您会发现实现此架构非常容易。