前回の記事の続きで、Relational Networkのできる限りの説明になります。
#Relational Networkについて
まずは元論文のリンクを(https://arxiv.org/pdf/1706.01427)
実験結果から見てしまいましょう。
これはCLEVRというオブジェクトの関係から回答を導くデータセットの正解率になります。よくあるニューラルネットワーク(CNN+LSTM、まあ今はあんまり使われてないみたいですが)の正解率は低く、人間(Human)を下回っています。一方、Relational Networkを用いた(CNN+LSTM+RN)は人間を上回る結果が出ています。
この結果から分かりますが、シンプルなニューラルネットワーク(NN)というものは関係というものを認識する能力が低いのです。そこで提案されたのがこのRelational Networkです。後述しますが、関係性を出力に反映するためにシンプルなニューラルネットワークとは違った特殊な構造を持っています。で、この技術をARCで使おうと考えているわけです。
#Relational Network詳細
Relational Networkは式で表すと次のような構造になっています。
RN(O)=f_\phi (\sum_{i,j}g_\theta(o_i,o_j))
ここで$O=\{ o_1,o_2,\dots o_n \},o_i\in \mathbb{R}^m$で$o_i$はオブジェクトを表します。そして、$f_\phi$と$g_\theta$はパラメータつきの関数(Relational NetworkではMLPで実装)を表します。
図で表すと以下のようになります。
CNNとLSTMでオブジェクトを認識し、それをRNに入力することで回答を出すという構造です。
このRNの式、正直、私もいまいちよく分かっていないのですが、$g_\theta$で各オブジェクト毎の関係性を出力し、それらを加算して、$f_\phi$で統合し出力を得るみたいです。ただ、よくあるNN(すべてのオブジェクトを一列に並べてしまって、MLPに入力する)と違うのは二つのオブジェクトを表すベクトルと質問ベクトルだけを並べてMLPに入力しているという点です。これはよくあるNNより制限された構造と考えられ、この制限によりネットワークがオブジェクト間の関係性を学習しやすくなるのだと思っています。
#Sort Of CLEVRデータセット
論文で実際に使用されたデータセットはほかにもあるようですが、Sort OF CLEVRの実験の追試をしてみました。Sort Of CLEVRの例は以下の図になります。
このデータセットは画像と質問文(図では文章が書いてありますが、実際には質問文はエンコードされています。)で構成されています。画像にはいくつかのオブジェクトがあり、質問文はそのオブジェクトに関する質問で成り立っています。質問には2つ種類があり、オブジェクト間の関係を考慮する必要のない質問(Non-relational question)とオブジェクト間の関係を考慮する必要のある質問(Relational question)があります。そして、図右上にもありますが、ここでもCNN+RNはCNN+MLPを上回った正解率を特にRelational questionで出しています。
私も追試はしたのですが、正直ほとんどこのリポジトリ(https://github.com/kimhc6028/relational-networks)を参考にしただけなので、コードは特に載せません。追試の結果だけ示します。まず、訓練データの正解率です。
次にテストデータの正解率です。
訓練とテストの差を見る限り、20epochを超えたあたりで、過学習気味ですが、test_acc_relが90%近いのは良いのではないでしょうか。そして一番悪いtest_acc_ternary。これは3つのオブジェクトに関する質問なのですが、完璧に過学習状態であり、test_acc_relと比べても正解率が低いです。一応、60%は出ていますが、三つの関係というのはRNでも難しいようです。3つ以上の関係性は三体問題のような例もあるように、そもそもが難しいものだとは思います。ただ、Sort of Clevrの3つの関係性の問題はそこまで難しいものではない(私が解けば100%に近い数字が出ると思います。)ので、改善の余地があるでしょう。
#まとめと今後
論文の結果からもわかるように、RNはシンプルなNNと比べて、関係性を処理する能力が高いということが分かります。ただし、3つの関係性には苦戦しているようで、3つ以上の関係性が必要な問題はARCにもあるでしょう。そこで、次はReccurent Relatinal Network(RRN)に挑戦してみようと思います。正直、この記事かなり適当なのですが、ただのRNではARCが解けないと思っていたので、このRRNに早く取り組みたかったからです。RRNを使うと数独も解ける用で、フォーマット的にも数独とARCは近いものがあると思います。まあ、どうなるかやってみましょう。