yoheikikuta / paper-reading

Notes about papers I read (in Japanese)
156 stars 4 forks source link

[1703.06114] Deep Sets [paper-reading] #6

Open yoheikikuta opened 6 years ago

yoheikikuta commented 6 years ago

論文リンク

https://arxiv.org/abs/1703.06114

公開日(yyyy/mm/dd)

2017/03/10

概要

集合を入力として扱えるモデルを構築しようという話。 集合を扱うには要素数が異なっても、また要素の順番が異なっても同じように出力を出せる必要があり、それを実現するような scoring function として $ ρ( \sum φ(x) ) $ という形を取ることが必要十分であることを示している。 実験が面白くて、MNISTの和を出力したり、銀河の赤方偏移を求めたり、画像の anomaly detection をしたり、これまでのモデルでは難しかったようなものを多く取り扱っている。

yoheikikuta commented 6 years ago

この論文は面白いが、 permutation invariant と permutation equivariant の違いが明確でなかったりして少し混乱する部分がある。ちなみに NIPS 会場での発表やポスターではこれらは区別されて説明されていたのでもっと分かりやすかった。

yoheikikuta commented 6 years ago

permutation invariant と equivariant の違いは以下。 これは論文に載っていないので、NIPS でのトークのビデオ からスクショを撮っている。

permutation invariant は $ f: R^n \rightarrow R^m $ となる関数が返す結果が要素の順序に依存しないことを示している。permutation equivariant は $ f: R^n \rightarrow R^n $ となる関数が返す結果が、要素の順番に対応して順番が入れ替わることを示している。ただし equivariant の方は完全に NN を対象にした構成になっている。

yoheikikuta commented 6 years ago

なぜこれら2つの構造が出てくるのか、というのは解きたい問題のタイプを考えると見えてくる。実際に論文で実施している実験で考えてみる。

invariant の方は例えば MNIST の数字をいくつか与えてその和を算出するという問題で使える。これは入力の要素数に依らずにスカラーを返すモデルを作りたいため、この構造が必要となる。

equivariant の方は画像を複数与えてその中から外れ値を検出するという問題で使える。例えば 10 個の要素があったらそれぞれに [0,1] を assign して外れ値具合を求めるという具合である。これは当然要素の順番に対応して出力の順番が変更される必要がある(ただし出力値は変更されない)。

yoheikikuta commented 6 years ago

permutation invariant の場合を考えてみる。 まず $ ρ(\sum φ(x)) $ の形の意味は、ナイーブには順番依存性をなくすためには要素に対して和を取ってしまえばいい、ということである。適当な変換と φ は ρ も適用されているが、基本はこれ。

モデルが実際にどう構築されるか、ということを見てみる。構成は以下のようになる。

この φ と ρ は上述のものに対応している。z は meta な情報からの条件付けで、特徴量に加えることでモデルの構造を壊すこと無く情報を付与できることを示している。

yoheikikuta commented 6 years ago

permutation equivariant の場合、例えば convolution の後に上述の permutation equivariant layer を加えてモデルを作る、というようなことをする。

この論文は実験ではこの permutation equivariant layer を使ってるものが多いんだが、これを用いたモデリングの部分の説明がちょっと不足しているんだよな。初見ではこの辺はよく分からずに読み進めてしまうことになりそう。この辺は NIPS でのトークの方が詳しい説明がなされている。

yoheikikuta commented 6 years ago

実験で試しているもの

yoheikikuta commented 6 years ago

具体的な実験をいくつかピックアップして調べてみる。まずは MNIST の数字の和を計算するモデル。

まずテキストとして数字を与える場合の実験(グラフの左)。 MNIST から数字をランダムに 10 個取って、その集合のラベルとしては数字の和を与える。そのような集合を 100,000 個作って学習をさせる(具体的には φ と ρ の重みを学習)。テスト時には別の 100,000 に対して 5 個を入力としてその和を調べ、これを 5 個刻みで 100 個までやる。 具体的なモデルは明言されてないが、シンプルな permutation invariant なモデルであることと思われる。

次に画像として数字を与える場合の実験(グラフの右)。 画像の場合は学習時の集合の要素数とテスト時の集合の要素数を合わせて毎回学習とテストを 50 個入力までやっている。原理的にはこれもテキストの場合と同じようにできるはずでは?という気もするんだが、論文の記述を見るとそう書いてあるんだよなぁ。

比較は LSTM もしくは GRU と比べている。これらは陽に順序以前性を考慮したモデルになっているので、特に入力の系列が長い場合において顕著に差が出ていることが見て取れる。

yoheikikuta commented 6 years ago

ついで画像の集合から外れ値のように他の要素と性質が異なるものを発見するというモデル。

モデルとしては、9層の2D conv w/ max pooling (最後の層は 16×256 dim)→ 3 equivariant layers (16×256, 16×128, 16×1)→ softmax 、という感じ。softmax を sigmoid に変えれば複数個の外れ値を対象にすることができる。

結果は以下の通りで、テストに対して 75% の精度を達成している。ちなみに permutation equivariant を取り除いて普通の CNN 的な構造で押し通すと 6.3% (ランダム予測と同程度) まで落ちるとのこと。

yoheikikuta commented 6 years ago

この論文面白いんだけど、かゆいところに手が届かないというか、具体的にどうやってモデリングされてるかがちょっと想像しづらいところが難点。これまでなかったタイプのモデルだから仕方がない部分もあるが、文章じゃなくてもう少し式とか図示とかでモデルを示してくれれば理解が助かりそうなのにとは思う。

実装のしっかりしたものが GitHub に上げられてないので、頑張って解読して実装してみるというのも一興かもしれない。