无序输入

数据挖掘 机器学习 神经网络 喀拉斯 嵌入
2021-10-01 20:46:47

我只是想知道在输入顺序无关紧要的情况下,训练神经网络(或任何其他机器学习算法)的最佳方法是什么。

例如:f(x1,x2,x3,x4) = f(x2,x1,x3,x4) = f(x2,x4,x1,x3)

我目前的方法是随机化每个训练样本的顺序(我的网络有 44 个输入)。它有点工作,但它会导致验证损失的结果在每个时期跳跃很多。

也许与嵌入有关?

还有其他问题与此有关,但输入数量可变,通常与 RNN 有关。我说的是固定数量的输入的简单情况,其中顺序无关紧要。

谢谢!

1个回答

ncasas 的建议很好,但不是很干净。这种排序在一维时很有意义,但是当您引入更多特征时,排序将变得越来越随意。这是我多次遇到的问题。本文(https://arxiv.org/pdf/1612.04530.pdf)试图解决置换等变问题,这与您的问题并不完全相同,您需要置换不变性。在等方差的情况下,如果您对输入进行打乱,该层的输出仍然会被打乱,但由于权重共享,这些值将是相同的。您可以通过在此置换层的输出上使用池化操作(最大池化或平均池化)来相当容易地扩展这个想法。这意味着您可以从图层中获得一个数字输出。重复这个n 个不同的权重矩阵,您可以获得n 个输出,然后可以将其馈入正常的前馈网络。警告:这是我根据您的问题和他们的论文想到的,我从未尝试过,但我不明白为什么它不起作用。对于运动队,您将使用两个输入列表,每个团队一个。根据您想要预测的内容,您甚至可以将这些排列层放入一个连体网络中,从而引入更多的权重共享!