入力としてn個のデータポイントを受け取るニューラルネットワーク:x 1、… 、x nを考えます。次の場合、fは順列不変であると言います。
任意の順列。
誰かが順列不変ニューラルネットワークの出発点(記事、例、または他の論文)を推奨できますか?
入力としてn個のデータポイントを受け取るニューラルネットワーク:x 1、… 、x nを考えます。次の場合、fは順列不変であると言います。
任意の順列。
誰かが順列不変ニューラルネットワークの出発点(記事、例、または他の論文)を推奨できますか?
回答:
私の知る限り、ネットワークの構造上の理由により、これを試した人はいません。各入力には、より多くの入力に接続される重みのセットがあります。入力が切り替わると、出力も変わります。
ただし、この動作に近づくネットワークを構築できます。トレーニングセットでバッチ学習を使用し、トレーニングサンプルごとに、ネットワークに可能なすべての順列を与えて、順列不変であることを学習します。これは厳密には不変ではなく、近い場合があります。
これを行う別の方法は、すべての入力に対して重みを複製することです。たとえば、3つの入力(i0、i1、i2)があり、次の非表示レイヤーに2つのノード(hl0、hl1)とアクティベーション関数Fがあるとします。完全に接続されたレイヤーを想定すると、2つの重みw0とw1があります。隠れ層のノードhl0およびhl1は、それぞれによって与えられます
hl0 = F(i0w0 + i1w0 + i2w0)
hl1 = F(i0w1 + i1w1 + i2w1)
したがって、値が入力からの順列不変である非表示レイヤーを提供します。これからは、必要に応じてネットワークの残りの部分を学習および構築できます。これは、畳み込み層から派生したアプローチです。
オフトピック、これはクールなプロジェクトのようです。研究プロジェクトに協力したい場合は、私に連絡してください(私のプロフィールを確認してください)
あなたが探しているものがいくつかあります:
ここでKerasを使用してPermutational Layerを実装しました。 https //github.com/off99555/superkeras/blob/master/permutational_layer.py
PermutationalModule
関数を呼び出して使用できます。
このペーパーに従って実装:https : //arxiv.org/pdf/1612.04530.pdf
アイデアは、すべての対比較することであるN ^ 2から対Nの、入力共有重みでモデルを使用し、その後、プール機能を使用N上回Nを入力します。プーリングを再び使用できる出力ですが、論文では、別のプーリングについては言及していません。