yoheikikuta / paper-reading

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

[2017] Opening the Black Box of Deep Neural Networks via Information #27

Open yoheikikuta opened 5 years ago

yoheikikuta commented 5 years ago

論文リンク

https://arxiv.org/abs/1703.00810

公開日(yyyy/mm/dd)

2017/03/02

概要

Information Bottleneck (IB) principle を DNN に適用するというアイデアを提唱した https://github.com/yoheikikuta/paper-reading/issues/26 の直接的な続きの論文。 この issue 26 の論文の内容をもう少し押し進めて、さらに実験もしてそこから得られた結果に色々と洞察を加えたものになっている。 主な結果としては以下:

なかなか面白いし含蓄のありそうなこともたくさん述べられているが、突っ込みどころも多い論文。 この後にはこの論文に対する反論の形で https://openreview.net/forum?id=ry_WPG-A- が出されている。 そういう論文が出るくらい反響もあったということではあるが、なんにせよ色々と注意しつつ論文を読んでいく必要はある。

yoheikikuta commented 4 years ago

まず最初に注意しておきたいのは、この論文は IB principle を DNN に使っていくという話の流れで出てきた論文だが、学習に IB に基づく手法(具体的には Blauht-Arimoto を IB の場合に拡張した iterative な学習 algorithm)を使っているわけではない。

IB は相互情報量をベースにしているが、そういうのを求めるのは難しいしこの論文の scope 外だと言っている。 相互情報量を求めるとかはそういう論文が出てるのを目にしたこともあるし、それはそれで現状どんな感じなのかというのはちょっと気になるところである。

この論文では、学習は普通の SGD を使う。 学習データや学習した結果の重みを使った中間層の出力を bin に区切って、それで確率分布を(恐らく)単純な counting で計算して、それらを IB の話と対応させることで IB 的な考察をしている。その過程で SGD の学習に関しても IB と関連させて考察していたりする。

yoheikikuta commented 4 years ago

IB 的なセットアップを最初に説明している。 これはほぼ https://github.com/yoheikikuta/paper-reading/issues/26 で述べられていることと同じだが、DNN 的に描くと以下のようになることを思い出しておく。 中間層は複数あるが、それらをまとめて T と書いたりする。前の論文と notation が変わっていて \tilde{X} から T になっていることに注意しとく。

また、前の論文では rate-distortion theory に合わせて $ D (=I(X;Y|T)) $ と $ R (=I(X;T)) $ で information plane を描いていたが、この論文では $ I_Y = I(T;Y) $ と $ I_X = I(X;T) $ で information plane を描くようにしている。まあこれは情報量としては変わらないのでそう描く、くらいの話。

yoheikikuta commented 4 years ago

興味があるのはパラメタの取り方に依存しないような情報の流れである。 そこで可逆な関数で変換しても不変な相互情報量を扱っている。

これは証明も難しくない。例えば https://arxiv.org/abs/cond-mat/0305641 の appendix に載っている。 細かい証明とかではなくて、雰囲気を感じ取るために簡単な scaling の場合で考えてみたのが以下。

もう一つ重要な性質が $ X \rightarrow Y \rightarrow Z $ というマルコフ過程において、情報が落ちるということである。 これは Cover and Tomas とかに載っている Data Processing Inequality と呼ぶとのこと。真面目に議論を追っていないが、$ Y \rightarrow Z $ で Z の X に関する情報が失われるのはごく自然だと思うので素直に受け入れておく。

その後 IB の話と最適化対象とする汎関数、self-consistent equations の話があるが、これは前の論文の話と同じなのでスキップする。

yoheikikuta commented 4 years ago

ここの For smooth 以降はちょっと難しいことを言っている。

まず、$ P(X,Y) $ が smooth だと Y が X によって deterministic には決まらないと言っている。 これを考えるために三次元空間で x 軸と y 軸がそれぞれ X, Y で z 軸が確率値の状況を考える。 smooth と言ってるのはこの空間で $ P(X, Y) $ が滑らかな多様体を形成しているということになる。 例えば X のある値でバッサリ切断してみると、z 軸と y 軸で滑らかな曲線になっているはずである。 これはすなわちある X の値に対して Y が特定の値でなく確率的に分布しているということになるので、deterministic ではないということである。

そしてこういう場合は information plane が strict concave になる(これが IB principle による帰結)。 IB principle によって information plane に描かれる trajectory は各 β の値対応している、すなわち β の値によって unique に information plane 上の点が決まるようになっている。

deterministic の場合、先ほどのような X のある値での断面を考えればぽつんと一点だけ Y の値が存在する状況になっている。 この場合 $ I(X;Y) $ は最大化されることになるが、この論文では DNN の出力値を sigmoid かまして確率値として見ることで deteministic ではなく確率的なものとして扱っている。

これは微妙な点を孕んでいる。 Y ではなくて中間層出力も確率変数として扱うので、それを考えてみる。 連続値でかつ deterministic であれば $ I(h;X) = H(h) - H(h|X)$ の条件付きエントロピーにおける $ p(h|X) $ がデルタ関数になる。つまり log(0) を拾ってしまい無限大になってしまうので、問題設定としてそもそもおかしい、という主張がある(実際にのちの論文でそういうことを指摘されている)。 こういうのは気をつけなければならないが、ともかく考えるのは離散化した値でこのようなことは発生しないものとして読み進めていく。

yoheikikuta commented 4 years ago

実験のセットアップに入る。 まずは model は以下のようになっている。

入力が 12 次元だが、それは以下のようなデータを対象にしているからである。 2D sphere に均等に 12 個の点を置く。下図みたいな感じかな?(青は裏側の点) それぞれが {0, 1} の値をとり、一組が一つの trajectory を意味する。 これが O(3) の変換で不変ならば答えのラベルが 1 でそうでなければ 0 というデータになっている?ここよく分からん。不変とか言っても単位元は除かないといけないだろうし。こういうのは実験コードとかを見た方が早いので再現実験のコードでも探してチェックしてみるか。とりあえずそんな感じのデータだと思っておく。

$ P(X, Y) $ のデータとしては $ p(y = 1 | x) = sigmoid(f(x) - θ) $ とかで作っている。 ここも f(x) とかは問題がどうかを理解しないと何だかは分からないが、ともかくシグモイド関数のゲインとか θ とかを調整して $ I(X;Y) = 0.99, p(y=1) = 0.5 $くらいになるように作っているとのこと。 先ほどの deterministic の話に戻るが、確率として算出してその threshold を調整したりすることで、確率的な取り扱いができていることが分かる。 ちなみに完全に deterministic であれば以下のように $ I(X;Y) = 1 $ になる。

また、中間層出力は arctan の [-1, 1] を 30 個の bin に区切って計算するということをしている。 活性化関数は tanh という話だったのでは?よく分からんがこういうのも実装を見た方が早いので、細かいことは気にせずこの bin に区切るということだけを押さえておく。

以上を用いて、あとは結果を単純にカウントすれば確率分布は計算される。 初期化を変えて 50 回実験を走らせて、その結果を調べるということをしている。

実験で調べたいのは以下のこと。


データの作り方を見直してみた。

まず、上で描いてたのは 12 点にならないので明らかに間違いだった。

恐らく正二十面体の頂点12個が対応する12個のデータになっているのかな。 それで y = 1 のデータで12個のうち1になっている要素が最低のものは5要素が1であとは0というものだった。これは O(3) invariant な閉じる軌道を作るのに最小の個数が5個ということに対応しているのかなと思ったけど、別に閉じる必要もなさそうだしやっぱりここはちゃんとは理解できてないなぁ。


人に教えてもらった結果、以下のような感じとのこと。

データを眺めたら色んなパターンで y = 1 で本当に特定の object を指しているのか疑問だが、別にすごく重要なデータセットというわけでなく惰性で使っているっぽいので、真面目に元論文を読みにいくところまではせずこのへんで打ち切っておく。

yoheikikuta commented 4 years ago

各 layer の information plane 上の位置を学習の epoch 毎にチェックしたもの。 緑が浅い層(入力に近い)でオレンジが深い層(出力に近い)で、左から initial, 400, 9000 epoch で、各点は 50 回の実験それぞれを意味している。 ちょっと注意することとして、$ I(T;Y) $ を計算するときは、学習に使ってない Y のデータを使っている。すなわち縦軸は汎化性能を意味していると解釈できる。

これは面白い結果。 epoch 数が比較的少ない場合は全体的に上に持ち上がる(汎化性能が上がる)方向に動いている。これはラベルに fitting していると思える。 epoch 数が増えていくと、今度は左の方に動いている。これは $ I(X;T) $ が小さくなっているので、T は X に関する情報を失って "compress" している。

SGD の学習にはこのような二つの phase がある、という主張である。 前者を Empirical Risk Minimization phase で後者は representation-compression phase と呼んでいる。

特に後者はどういうことを意味しているのかすぐには分からないが、それについて色んな実験とか考察をしていく。

yoheikikuta commented 4 years ago

次にデータ量を変えてみて実験。 これはさっきの phase の話はそこまで関係なく、汎化性能とデータ量の関係を information plane 上で調べようというもの。 左から全データのうち 5%, 45%, 85% を学習データとして使用。 各ラインは各 layer に対応しているが、浅い層の結果は右上で潰れてしまって区別がつきづらくなっている。

注目すべきは一番左。 epoch を増やすと $ I(T;Y) $ が反転して小さくなってしまう。これはまさに過学習の兆候だ、というわけだ。

まあ information plane だとこのように見えますね、という話ですかね。

yoheikikuta commented 4 years ago

次に先ほどの二つの phase の違いを見るための実験。 横軸を epoch 数にして、縦軸を layer 毎に規格化した重みの gradient の平均と分散としている。

これは灰色の線の前と後ろで二つの phase が存在するように見える。 epoch 数が少ない左側を drift phase と呼んでいて、この phase では平均は大きいが分散は小さい。正しい答えを再現するように極値に向かって一直線に向かっている感じ。 epoch 数が多い右側を diffusion phase と呼んでいて、この phase では平均は小さいが分散は大きい。この phase では重みに noise を加えていて、それによって $ I(X;T) $ を小さくしている、と解釈できるらしい。これは stochastic relaxation として知られているとのこと(全然知りませんが)。

ちなみにこの灰色の線の epoch のところは実際に information plane での phase の切り替わりとも一致している。

収束の付近で重みが 0 になったり(特定のノード間の結合がなくなったり)ノルムが小さくなったりという現象は見当たらなかったと言っている。 dropout とか weight decay の効果だが、こういう正則化だけでは汎化性能を説明しきれない、という先行研究を持ち出して、diffusion で重みにノイズを加えるのが効いてるんだぞ、ということを言いたいのだろう。ここはちと強引だね。

それと同じ層の異なるノードに入ってくる重みの相関は大体同じ値に落ち着くことから、異なるネットワークでも同じようなパフォーマンスを持つものが大量にあるのだから そして attempts to interpret single weights or even single neurons in such networks can be meaningless. と言っている。 これはまあまあ同意できる。

この辺は結構雑な議論なので、面白いけど本当ですかねという感じもする。 なんかグラフも右端で分散が大きく変わり始めてるけどそこで切っちゃってるのも気になったりする。

まあでも主張は大体分かった。こういうダイナミクスは面白いね!

yoheikikuta commented 4 years ago

次に layer 数の違いがどんなことに効くのかを調べるための実験。 information plane のグラフで、左上が中間層 1 層で右下が中間層 6 層。

特徴的なのは各グラフで epoch 数が大きくなる左上のエリアで、layer 数が多いほど黄色の領域が少ない。 黄色は epoch 数が大きいところを意味するので、layer 数が大きいと epoch 数が大きいところではほとんど変化がない、言い換えれば epoch 数が比較的少ないところで学習が収束しているということを意味している。

これを以って論文では . Adding hidden layers dramatically reduces the number of training epochs for good generalization. と主張している。 じゃあ layer を増やしまくればいいのかときっと(途中で学習がうまくいかなくなったりして)そんなことはないだろうが、なかなか面白い結果だ。

合わせて深い層の layer の方が比較的紫が濃いところで compression が進んでいるようにも見える。

これを以って論文では The compression is faster for the deeper (narrower and closer to the output) layers. と主張している。

その他にも Even wide hidden layers eventually compress in the diffusion phase. Adding extra width does not help. とかいうこの実験だけから言えなそうなことも主張していたりする。

まあでもメインの主張は、layer の数が増えるほど少ない epoch 数で compression が進んで学習が収束する、ということだろう。 これは diffusion との関連から何か言えるだろうと期待されるわけだが、ふんわりした議論であまりちゃんと追えない。一応どんなことが書いてあるか見ておく(だいぶ想像が入っている)。

diffusion constant D があって drift がない Fokker Planck 方程式(つまり単純な拡散方程式)を考えて、確率密度の時間発展を議論する。 その解は gaussian で $ p(x,t| y, s) ∝ \exp ( -(x - y)^2 / (2 D (t-s)) ) $ となるので、ここから gaussian kernel が $ \sqrt{Dt} $ で grow していくと言っている? 規格化定数も考慮した上でエントロピーを計算すると $ H ~ \log (\sqrt{Dt}) = 1/2 \log (Dt) $ となり(他の細々した項は無視)となり、これでエントロピー生成が log (Dt) と言っている? そもそもエントロピーの時間変化を見てるっぽいしこれはなんかおかしい気もするけど、眺めた感じこういうことなのかなぁというのが現状の理解。

この考えを SGD 学習の diffusion phase にナイーブに適用すると、$ ΔI_X $ の compression が各 time step で $ exp(ΔI_X / D) $ のように進み、各中間層のは compress された前の層のものからさらに compress するので $ ΔI_X = Σ_k ΔI_X^k $(各中間層毎の compression の和)と書かれ、これが exp の肩に乗るので指数的に拡散が進むということになっている。(各 layer が独立なら $ \sum exp (ΔI_X^k) $ となるが、前の層のを引き継ぐので Σ も exp の肩に乗って、中間層を増やすことが指数的に効いている)

この辺はそれっぽい感じの説明で面白いけど、それっぽいだけ、という感じもする。 今後の研究トピックとして真面目に調べていくというのは興味深い方向性だと思う。

yoheikikuta commented 4 years ago

次に IB の話との関連を調べるための実験。 最初の方に述べたように、この論文では普通に SGD で学習していて、IB principle て提案されている iterative な手法での学習は使っていない。 ただ、SGD による学習でも IB から導出される bound とほぼ同じような結果が出る、という主張である。 なので、DNN の学習は IB principle と同じような結果をもたらし、それがゆえに IB 的に考える利点がある、ということだろう(やや強引だが)。

これまで information plane 上にプロットをしてきたが、IB principle では収束(ちなみにこれは保証されている)まで学習をすることで達成可能な限界を提示している。それが IB bound である。IB bound は infomation plane で trajectory を形成し、その線より左上の領域は実現不可能で右下が実現可能となる。この trajectory の各点は一つの β の値に対応する。

これはどうやって以下のグラフを作っているかやや複雑なのでそのステップを書いておく。

ということで、深い層では error bar も大きいが、SGD で学習して収束した結果として IB bound と同じような値を得ることができた。 SGD の学習の結果にいきなり IB の更新式使ったりしてこれもなかなか微妙な取り扱いだが、こうして IB との関連がついたということである。

とまあそれっぽく解釈を書いたが、この青線の IB bound はどうやって描いているのか?は分かっていない。 これを描くには結局 T のことを知らないといけないと思うのだが。 そして $ I(X;Y) = 0.99 $ みたいなデータを作っていたのに $ I(T;Y) $ が 0.99 以上の領域もある。DPI chain の話からそれはできないという話だったのでは? ということでいくつか不明な点がある。分かったら追記しよう。


IB bound に関しては T の次元さえ決めれば、離散なので組み合わせを尽くせることから通常の IB の iterative な方法で計算できる、というコメントをもらった。それなら計算できる気はするが、T の次元を一つに定めれば一点に収束する気がする。それらを滑らかにつないだのかな。

yoheikikuta commented 4 years ago

いくつか説明していないところもあるが、だいたい内容としてはこんなもんである。 discussion として

などが挙げられている。ふむ。

総括して、突っ込みどころは多いけど、コンセプトとか観測されている現象は面白いと思う。 反論的な論文とかも出てるし、今後は色々理解できてないところをアップデートしつつ、その後の発展を追っていきたいね。