リレーショナルネットワークのPytorch実装 - リレーショナル推論のための単純なニューラルネットワークモジュール
sort-of-clevrタスクで実装およびテストされました。
sort-of-clevrはCLEVRの単純化されたバージョンです。これは、各画像ごとに10000の画像と20の質問(10の関係の質問と10の非関連質問)で構成されています。 6色(赤、緑、青、オレンジ、グレー、黄色)は、ランダムに選択した形状(正方形または円)に割り当てられ、画像に配置されます。
非関係の質問は、3つのサブタイプで構成されています。
これらの質問は、エージェントが特定のオブジェクトに焦点を合わせる必要があるため、「非関係」です。
リレーショナルの質問は、3つのサブタイプで構成されています。
これらの質問は、エージェントがオブジェクト間の関係を考慮する必要があるため、「リレーショナル」です。
質問は、6色の特定の色の1ホットベクトルに対して11:6のサイズのベクトルにエンコードされ、リレーショナル/非リレーショナルの質問の1ホットベクトルの場合は2にエンコードされます。 3サブタイプの1ホットベクトルの場合。

つまり、サンプル画像が表示されていると、次のような非関係の質問を生成できます。
とリレーショナルの質問:
environment.ymlファイルからConda Environmentを作成します
$ conda env create -f environment.yml
環境をアクティブにします
$ conda activate RN3
Condaを使用しない場合は、Python 3を正常にインストールし、 pip installを使用して残りの依存関係をインストールします。依存関係のリストは、 environment.ymlファイルにあります。
$ ./run.sh
または
$ python sort_of_clevr_generator.py
sort-of-clevrデータセットを生成します
$ python main.py
バイナリRNモデルをトレーニングします。または、使用してください
$ python main.py --relation-type=ternary
三元RNモデルをトレーニングします。
元の論文では、CLEVRタスクとは異なるモデルを使用していました。ただし、モデル使用されたCLEVRは計算にはるかに短い時間(ネットワークははるかに小さくなります)がはるかに短いため、このモデルはCLEVRタスクに使用されます。
| リレーショナルネットワーク(20番目のエポック) | CNN + MLP(RNなし、100番目のエポック) | |
|---|---|---|
| 非関係の質問 | 99% | 66% |
| 関係の質問 | 89% | 66% |
CNN + MLPは、トレーニングデータに過剰適合しました。
リレーショナルネットワークは、リレーショナルの質問と非関連の質問ではるかに優れた結果を示しています。
@gngdbはモデルの速度を10回高速化します。