ニューラルネットワークでのトロピカル幾何
- この論文では、ニューラルネットワークでのactivation function をReLUに絞っても、まあ大丈夫、との判断の下、ReLUに絞った上で、ニューラルネットワークの入力から出力への変換がトロピカル幾何・トロピカル・有理関数で表現されることを説明している
- ごく大雑把に言うと、ニューラルネットワークが作るモデルは非凸な多面体になるが、それは、凸多面体の差として関数表現されるが、この「関数の差」がトロピカル関数で言うと、関数の比になるので、トロピカル有理関数になる、と、そういう話
- ReLUという活性化関数は、ニューラルネットワークで用いる活性化関数の1つだが、これに限定して話を進めても、ニューラルネットワークがどうしてうまく機能するのか、ということの本質的な議論にはある意味では大きな違いが生じないとみなす立場も取れる、ということで、ReLUに限局して話を進めている
- ちなみに、ReLUという関数は、ある値より小さいときはゼロ、ある値から大きくなると、一次増加関数になるような関数だが、それは、に相当し、これはトロピカル幾何ではに相当するから、トロピカル関数と相性がよい:参照→
- ニューラルネットワークにより、d次元ベクトルが、p次元ベクトルに変換される
- それを, と書くことにする。Aは行列であり、bは長さpのベクトルである
- ここで、行列Aを、正の成分の部分と負の成分の部分とに分けて、とする。このとき、もも非負行列になっている
- このとき出力はになるという
- こういう分解は、いかにも、トロピカル関数的。なぜなら、max()関数を使っているし、行列はすべて非負成分だし、max() の項との項の引き算は、トロピカル有理関数に相当するから
- とは言え、 と言われても、え、ほんと、という感じがするので、手計算して正しいことを確認してみる
p <- 8 d <- 10 A <- matrix(rnorm(p*d),ncol=d) x <- rnorm(d) b <- rnorm(p) t <- rnorm(1) y <- A %*% x + b y. <- apply(cbind(y,rep(t,p)),1,max) Aplus <- A Aplus[which(Aplus < 0)] <- 0 Aminus <- A Aminus[which(Aminus > 0)] <- 0 Aminus <- - Aminus #Aplus #Aminus range(A - (Aplus - Aminus)) y.. <- apply(cbind(Aplus %*% x + b, Aminus %*% x + t),1,max) - Aminus %*% x #y. #y.. range(y. - y..)