🐶

深層学習時のデータ構造変化をトポロジーの側面から考える

に公開

本投稿の目的

DNN(Deep Neural Network)を用いた深層学習は、入力画像等から特徴を抽出して、分類問題や回帰問題を高精度に解く手段として広く知られているはずである。しかし、どのように層を経てデータ構造がどのように変化していくのかは明示的にはわからず、ブラックボックスである。
ところで、筆者が最近気になっている「トポロジー(位相幾何学)」は高次元の空間の図形や空間を研究する学問であるが、トポロジーが深層学習におけるデータ構造がどのように変化するかを明らかにする手段であるというのである。本投稿では、上記に関する代表的な論文を読んでレビューすることでその手段と、応用可能性について考えることを目的とする。
なお、取り上げる論文は"Topology of Deep Neural Networks"[1]である。
[1]Naitzat, Gregory, Andrey Zhitnikov, and Lek-Heng Lim. "Topology of deep neural networks." Journal of Machine Learning Research 21.184 (2020): 1-40.
https://www.jmlr.org/papers/volume21/20-345/20-345.pdf

前提知識 - ベッチ数

ある図形や空間に対して、「ベッチ数\bm{b}={b_0,b_1,b_2,...}」という位相不変量が存在する。筆者の理解の範囲では、第kベッチ数とは「ある図形や空間Xに含まれるk次元の基本サイクル(多様体)の個数」を表す。これでは抽象的なので、具体的な図形を持ち出した説明を試みる。
なお、この説明はトポロジーへの誘い[2]を参考にしている。[2]https://www.amazon.co.jp/dp/4535789444

k=0の場合

0次元のベッチ数は、連結している成分の個数を表す。簡単に言えば、「くっついていない図形がいくつかるか」である。例えば下記の図形は、上の図形はb_0=1, 下の図形はb_0=2となる。(いわゆる、図形はいくつあるか)

k=1の場合

1次元のベッチ数は、その図形に含まれる閉回路の数を表す。例えば、以下のようなトーラスT^2は、トーラスを縦に一周するサイクルC_1と、横に一周数にもサイクルC_2の二つのサイクルを持っていると考えて、b_1=2である。トーラスをどこで切るか、によってC_1C_2の書き方は変わるのでは?と思うが、そうは考えない。図のC_1から少しずらした場所に書いたC_1'も、C_1と同じだと考える。

論文概要 - ニューラルネットを通したデータ構造の変化に着目

この論文では、ニューラルネットワークが入力データの構造にどんな変化を与えるか?をトポロジーの観点から解明することを目的としている。それに対して、これまでの先行文献では、以下のような目的(着眼点)で研究が進められてきた。
・ニューラルネットワークの漸近的な振る舞いについて考える (例:ニューロンの数は増えるとどうなるか?無限大まで増加させるとネットワークの構造がどうなるか?)
・入力したオブジェクトがニューラルネットワークの層を通った時に、どのように変化するか?(例:犬の写真がニューラルネットワークの各層を通るとどんな風に変化するか?)
しかし、今回取り上げる論文では、オブジェクトだけでなく、オブジェクトのクラス全体に対してニューラルネットワークがどのように働きかけるのかを解明することにモチベーションがある。なぜなら、各層を通って構造が変化しているのはオブジェクトだけとは限らないからである。例えば、犬の写真があって、各層を経てどんどん情報が圧縮(または生成)されていくとき、犬だけでなく、その写真の背景にもなんらかの変化が起こっているはずである。
前述の通り、本論文では、それを多様体として捉えて、データの構造を仮定したトポロジーがどのように変化していくかに着目する。そしてそれを、さらに前述のベッチ数を用いて解明する。

さらに下図は、「赤と緑を分類する」実際のシミュレーション結果を少し抽象化し、赤と緑の二つの図形を用いて、トポロジーの変化を表したものである。ベッチ数で見れば、以下の通りである。

\begin{align*} \bm{\beta} (red) :(1,2,0)→(1,2,0)→(2,1,0)→(2,0,0)→(1,0,0)→(1,0,0)\\ \bm{\beta} (green) :(2,2,0)→(2,2,0)→(2,1,0)→(2,0,0)→(2,0,0)→(1,0,0)\\ \end{align*}

本論文で具体的に解決したい問題

この論文[1]では、具体的に以下の二つの問題に対する提案を図っている。
(a) a nonsmooth activation function like ReLU outperforms a smooth one like hyperbolic tangent (なぜ滑らかでないReLU関数を用いた方が、滑らかなtanhを用いた場合よりも良い性能を上げるのか)
(b) successful neural network architectures rely on having many layers, even though a shallow network can approximate any function arbitrarily well (なぜ浅いネットワークでも関数を恣意的に決められるはずなので、深いネットワークが利用されているのか)

この論文で提唱されている、上記(a)(b)に対する答えは以下の通りである。
(a)関数が微分可能か?ではなく、位相同型に写像していないか?の違いである。Sigmoidや、tanhのような関数は、データ構造をそのまま写像するような関数であるのに対して、ReLUのような非対称の関数は、データ構造に大きな変化を与えるような写像をする働きを持つ。それによって、積極的にトポロジーを変化させるような操作へとつながっている。
実際に、ReLUによってデータ構造がどのように変化するかを観察したプロットが以下である。正直このプロットを見ても筆者はReLUだからこその効果を感じることができていないが、データ構造内部では以下の二つの効果が起きている。図の通りであれば、確かにある部分のデータを一方向に寄せるような効果が現れていることは確認できる。
・ReLUの負領域:x<0 :ReLU(x)=0 : データを1点に圧縮する効果
・ReLUの非負領域:x<0 :ReLU(x)=Ax+b : データを平行・回転移動する効果

Tanhよりも、ReLU系の活性化関数を用いる方が、0次のベッチ数(\beta_0 \neq図形が何個あるか、学習の収束性)が早く収束することも、定量的に評価されており、確かに確認することができる。

(b)(a)の末尾の結果図からもわかるように、ニューラルネットワークによる学習では、「浅い層ではトポロジーの位相が同型になるように写像し、深い層では位相変化の起こるような写像を行う」ため、浅い層だけからなるニューラルネットワークの構造では学習性能が悪く、学習層を厚くすることで精度良くタスクを行う学習が可能になるという考察がなされている。

最後に(所感)

今回はニューラルネットワークの学習時に、各層でデータ構造がどのように変化しているかを、トポロジーの観点から定量的に評価した論文を読んで、ブラックボックス性に応えるアプローチを学んだ。普段目にするactivation関数など、それとなく利用している関数にも見方を変えれば利用する理由が存在する、というのが新鮮で面白かった。
・本論文では、いくつかのactivation関数に対して、トポロジー変化を論じていたが、反対に、トポロジーが最も効率よく変形されるように関数を設計する試みなどはあるのだろうか?と思った。調べられていないので、現時点では、所感まで。

Discussion