给定一个将n个数据点作为输入的神经网络:x 1,… ,x n。我们说˚F就是排列不变,如果
有人可以为置换不变神经网络推荐一个起点(文章,示例或其他论文)吗?
给定一个将n个数据点作为输入的神经网络:x 1,… ,x n。我们说˚F就是排列不变,如果
有人可以为置换不变神经网络推荐一个起点(文章,示例或其他论文)吗?
Answers:
据我所知,由于网络的结构方式,没有人尝试过。每个输入都有一组权重,这些权重连接到更多输入。如果输入切换,输出也将。
但是,您可以建立一个可以解决此问题的网络。在您的训练集中,使用批处理学习,并对每个训练样本,对网络进行所有可能的排列,以使其学习为排列不变。这永远不会是完全不变的,只是可能很接近。
另一种方法是复制所有输入的权重。例如,假设您有3个输入(i0,i1,i2),下一个隐藏层有2个节点(hl0,hl1)和激活函数F。假设一个完全连接的层,您有2个权重w0和w1。隐藏层的节点hl0和hl1分别由下式给出
hl0 = F(i0w0 + i1w0 + i2w0)
hl1 = F(i0w1 + i1w1 + i2w1)
因此,为您提供了一个隐藏层,其值与输入的排列不变。从现在开始,您可以按照自己的意愿学习和构建网络的其余部分。这是从卷积层派生的方法。
离题,这似乎是一个很酷的项目。如果您想在某些研究项目上进行合作,请与我联系(检查我的个人资料)
以下是您可能正在寻找的一些:
我在这里使用Keras实现了置换层:https : //github.com/off99555/superkeras/blob/master/permutational_layer.py
您可以致电 PermutationalModule
函数以使用它。
根据本文实施: https //arxiv.org/pdf/1612.04530.pdf
这个想法是比较来自N个输入的所有对N ^ 2对,使用具有共享权重的模型,然后对N个输入使用N次池化函数。您可以再次使用合并的输出,但是在本文中,他们没有提到另一个合并。