给定一个神经网络作为输入数据点:. 我们说是排列不变的,如果
对于任何排列.
我们如何建立这样的神经网络?输出可以是任何东西(例如数字或向量),只要它不依赖于输入的顺序即可。有没有关于这些类型的神经网络的研究工作?
给定一个神经网络作为输入数据点:. 我们说是排列不变的,如果
对于任何排列.
我们如何建立这样的神经网络?输出可以是任何东西(例如数字或向量),只要它不依赖于输入的顺序即可。有没有关于这些类型的神经网络的研究工作?
以下是您可能正在寻找的一些内容:
传统上,由于网络的结构方式,每个输入都有一组权重,这些权重连接到更多输入。如果输入切换,输出也会切换。
但是,您可以构建一个接近此行为的网络。在您的训练集中,使用批量学习,并且对于每个训练样本,为网络提供所有可能的排列,以便它学会排列不变。这永远不会完全不变,它可能很接近。
另一种方法是为所有输入复制权重。例如,假设您有 3 个输入(),下一个/第一个隐藏层有 2 个节点 () 和激活函数. 假设一个全连接层,你有 2 个权重和. 隐藏层的节点和分别由
从而为您提供一个隐藏层,其值与输入的排列不变。从现在开始,您可以根据自己的需要学习和构建网络的其余部分。这是一种源自卷积层的方法。
最后,您可以使用降维来实现此目的。我已经在Exploring Communication Protocols and Centralized Critics in Multi-Agent Deep Learning 中发表了这篇关于集成计算机辅助工程的文章。这种方法使用卷积架构来有效地实现置换不变性。
我在这里使用 Keras 实现了置换层:https ://github.com/off99555/superkeras/blob/master/permutational_layer.py
您可以调用该PermutationalModule
函数来使用它。
在本文之后实施:Permutation-equivariant neural networks applied to dynamics prediction。
这个想法是比较所有对对来自输入,使用具有共享权重的模型,然后使用池化功能次输入。
您可以再次使用池的输出,但在论文中,他们没有提到另一个池。
因此,在深度激光雷达处理社区中进行了大量研究的实际应用。在那个世界中,您必须对完全无序的点云进行大量计算。该领域的一项开创性工作是 Point Net ( https://arxiv.org/pdf/1612.00593.pdf ),它通过跨通道执行所有对称操作来解决这个问题。1D 卷积、最大池等。这种风格的任何不投影到 2D 表示的网络都必须遵守此规则。