はじめに
ニューラルネットは「非線形関数近似器」だと教わる。それはそれで正しい。しかし活性化が ReLU のように区分線形(piecewise-linear)であるとき、はるかに具体的で驚くべき事実が成り立つ。
ReLU で構成されたネットワークは、大域的にも区分アフィン(piecewise-affine)関数である。入力空間は**多面体(polytope)**の断片へと細かく分割され、各断片の内部ではディープネットのあらゆる非線形性が消え、ちょうど一つのアフィン写像 $\mathbf{x} \mapsto W_{\text{eff}}\mathbf{x} + \mathbf{b}_{\text{eff}}$ に崩れる。
本稿ではこの事実を、ニューロン一つから出発して層を重ねるように積み上げる。途中のインタラクティブデモで自分の目で確かめられる。
1. ニューロン一つ = 境界線一本
まず ReLU ニューロン一つから見よう。
$$a(\mathbf{x}) = \mathrm{ReLU}(\mathbf{w}^\top \mathbf{x} + b) = \max(0,\ \mathbf{w}^\top \mathbf{x} + b)$$これは二つの断片からなる関数だ。
- $\mathbf{w}^\top \mathbf{x} + b < 0$ → 出力 $0$(オフ、傾き $0$)
- $\mathbf{w}^\top \mathbf{x} + b \ge 0$ → 入力をそのまま通す(オン、傾き $1$)
この二つを分ける境界は、超平面 $\mathbf{w}^\top \mathbf{x} + b = 0$ 一本だ。ニューロン一つ = 入力空間に引かれた一本の切れ目と考えればよい。
複数を線形結合するとどうなるか。1次元入力に対して $f(x) = \sum_i v_i\,\mathrm{ReLU}(w_i x + b_i)$ を描いてみよう。ReLU 一つごとに**折れ点(knot)**が一つ生じ、その間の区間はすべて直線だ。
グラフ下の帯は、これらのニューロンがすべて属する一つの隠れ層を展開して見せたものだ。各行が一つのニューロンで、そのニューロンがオンになる区間($w_i x + b_i > 0$)を色で塗ってある。$x$ が knot を一つ越えるたびに帯が一つトグルし(色は knot の縦ガイドに揃えてある)、そうして区切られた直線の区間一つ一つが一つの活性化パターンだ。つまり区間は異なる層ではなく、同じ一つの層の中でオンになるニューロンの組み合わせが違うのである。
ReLU の数を増やすと折れ点が増え、曲線のように見えるが、拡大すればやはり直線の断片をつないだものにすぎない。ReLU $n$ 個は断片を $n+1$ 個つくる。これが1次元での姿だ。これを任意次元・任意深さに一般化しよう。
2. 活性化パターンと対角マスク
鍵となるトリックは、ReLU を乗算マスクとして書き直すことだ。一層の順伝播は
$$\mathbf{h}^{(l)} = \mathrm{ReLU}\!\left(W^{(l)} \mathbf{h}^{(l-1)} + \mathbf{b}^{(l)}\right)$$である。入力 $\mathbf{x}$ を一つ固定すると、この層の各ニューロンはオン(1)/オフ(0)が定まる。このオン/オフを対角行列 $D^{(l)}(\mathbf{x})$ に詰め込む。オンのニューロンは対角 $1$、オフは $0$。
$$\mathbf{h}^{(l)} = D^{(l)}(\mathbf{x})\,\big(W^{(l)} \mathbf{h}^{(l-1)} + \mathbf{b}^{(l)}\big)$$これは近似ではなく厳密な等式だ。オンのニューロンは $z \mapsto z$(恒等)、オフは $z \mapsto 0$ だからである。唯一の要点は、マスク $D^{(l)}$ が $\mathbf{x}$ に依存することだ。
ネットワーク全体のオン/オフベクトル(全層・全ニューロン)を**活性化パターン(activation pattern)**と呼ぶ。隠れニューロンが計 $N$ 個なら、パターンは $\{0,1\}^N$ の一点である。
3. パターンを固定すると → アフィンに崩れる
さて、$\mathbf{x}$ を少し動かしてもすべてのニューロンのオン/オフが変わらない領域を考えよう。その領域内ではすべての $D^{(l)}$ が定数行列になる。すると $L$ 層の順伝播は
$$\mathbf{y} = D^{(L)}W^{(L)} \cdots D^{(2)}W^{(2)}\,D^{(1)}W^{(1)}\,\mathbf{x} + (\text{バイアス項})$$となり、$D$ も $W$ もすべて定数なので、この合成は一つのアフィン写像へと潰れる。
$$\boxed{\ \mathbf{y} = W_{\text{eff}}\,\mathbf{x} + \mathbf{b}_{\text{eff}}, \qquad W_{\text{eff}} = D^{(L)}W^{(L)} \cdots D^{(1)}W^{(1)}\ }$$ここで $D^{(l)}W^{(l)}$ は「オフのニューロンに対応する行を $0$ で消した重み行列」である。つまりその断片の中では、ネットワークはちょうど一つの線形変換+平行移動だ。ディープネットのあらゆる非線形性が、特定の領域内では完全に消える。
言葉だけでは信じがたいので、任意の入力点について、その点が属する断片の有効アフィン写像 $(W_{\text{eff}}, \mathbf{b}_{\text{eff}})$ を直接取り出してみよう。
import numpy as np
def relu_net(x, Ws, bs):
"""ReLU MLP の順伝播(最終層は線形)"""
a = x
for i, (W, b) in enumerate(zip(Ws, bs)):
z = W @ a + b
a = np.maximum(0, z) if i < len(Ws) - 1 else z
return a
def effective_affine(x, Ws, bs):
"""x が属する断片の有効アフィン写像 (W_eff, b_eff) を抽出"""
W_eff = np.eye(len(x))
b_eff = np.zeros(len(x))
a = x
for i, (W, b) in enumerate(zip(Ws, bs)):
z = W @ a + b
if i < len(Ws) - 1:
mask = (z > 0).astype(float) # この層の活性化パターン D^(l)
D = np.diag(mask)
a = mask * z
else:
D = np.eye(len(z)) # 最終線形層
a = z
W_eff = D @ W @ W_eff # W_eff <- D W W_eff
b_eff = D @ (W @ b_eff + b) # バイアスの累積
return W_eff, b_eff
# ランダムなネットワークを一つ
rng = np.random.default_rng(0)
dims = [4, 16, 16, 3]
Ws = [rng.normal(size=(dims[i+1], dims[i])) for i in range(len(dims)-1)]
bs = [rng.normal(size=dims[i+1]) for i in range(len(dims)-1)]
x = rng.normal(size=4)
W_eff, b_eff = effective_affine(x, Ws, bs)
# 検証1: その点で厳密に一致
print(np.allclose(relu_net(x, Ws, bs), W_eff @ x + b_eff)) # True
# 検証2: 同じ断片内の近い点でも一致
x2 = x + 1e-4 * rng.normal(size=4)
print(np.allclose(relu_net(x2, Ws, bs), W_eff @ x2 + b_eff)) # True(同じパターンなら)
W_eff @ x + b_eff は実際の順伝播と厳密に一致する。そして同じ断片内の別の点にも、同じ $(W_{\text{eff}}, \mathbf{b}_{\text{eff}})$ がそのまま通用する。断片の境界を越える(パターンが反転する)と、別のアフィン写像へ乗り換える。
4. 断片の正体 = 多面体、全体 = 連続区分アフィン
各ニューロンのオン/オフ条件は一つの不等式(そのニューロンの pre-activation $\ge 0$)だ。活性化パターンを一つ固定するとは、こうした線形不等式 $N$ 本を同時に満たすことであり、**線形不等式の共通部分 = 凸多面体(convex polytope)**である。
注意: 第1層ニューロンの境界はまっすぐな超平面だが、第2層以降のニューロンの pre-activation は前層の ReLU を通って計算されるため、その境界は折れ曲がった区分線形の面になる。それでも各断片の内部ではすべて線形なので、最終的な分割断片は依然として(凸)多面体だ。
したがって全体像はこうなる。
- 入力空間 $\mathbb{R}^d$ が多面体の断片でタイル張りされる。
- 各断片の上で関数は、それぞれ異なるアフィン写像 $W_{\text{eff}}\mathbf{x} + \mathbf{b}_{\text{eff}}$。
- 断片の境界を越えても ReLU が連続なので関数値は飛ばない → 連続(continuous)。
これらを合わせて CPWL(Continuous Piecewise-Linear、連続区分線形)関数と呼ぶ。そして一つの定理:ReLU MLP が表現できる関数 = ちょうど CPWL 関数全体。広くも狭くもなく、まさにそのクラスだ。
下のデモは2次元入力空間を実際にタイル張りして見せる。ランダム初期化された小さな ReLU ネットワークについて、**活性化パターンが同じピクセルを同じ色で塗った。**色の境界一本一本が、あるニューロンのオン/オフ境界だ。
- カーソルを乗せてみよう。 カーソルの置かれた断片(同じ活性化パターン)が明るく強調される。その明るい領域全体で、ネットワークはただ一つのアフィン写像だ。
- **幅(ニューロン数)**を増やすと切れ目が増え、断片が細かく分かれる。
- 隠れ層の数を増やしてみよう。断片の境界がまっすぐな直線から折れ線に変わり、断片の数が爆発的に増える。
5. この視点が与えてくれるもの
この一つの視点から、ディープラーニングの多くの性質が自然に流れ出す。
勾配 = 区分定数
断片内ではヤコビアンが $W_{\text{eff}}$ で一定だ。誤差逆伝播がやっているのは「その入力が属する断片の有効線形写像をそのまま返すこと」にすぎない。ReLU の微分が $0/1$ であることが、まさにマスク $D^{(l)}$ として現れる。断片の境界では微分が不連続に飛ぶ(だから ReLU ネットの損失曲面は区分的に滑らかになる)。
深さの力 = 断片数の爆発
幅ではなく深さを増やすと、線形領域の数が深さに対して指数的に増えうる(Montúfar et al., 2014)。上のデモで隠れ層を 1 → 2 → 3 に上げたときに断片数が跳ね上がるのが、その縮図だ。「なぜ深い方が強いのか」を表現力の観点から説明する古典的論拠である。
折り畳み(folding)としての層
各層は入力空間を折り畳む操作として読める。ReLU が負の領域を $0$ に押し潰して折り、次の層はすでに折られた空間の上にさらに切れ目を引く。深くなるほど折り畳みが重なり、複雑な断片構造が生まれる。だから第2層以降で境界が「折れ線」に見えるのだ。
スプライン・トロピカルの視点
Balestriero & Baraniuk の max-affine spline の枠組みでは、ReLU ネットワークは多次元スプラインそのものだ。また $\max$ と加算がそれぞれトロピカル半環の「加算」と「乗算」に対応するため、ReLU ネットワークは**トロピカル幾何(tropical geometry)**でも厳密に記述される(ネットワーク = 二つのトロピカル多項式の差、Zhang et al., 2018)。断片の数や形を、多項式のニュートン多面体で数える道が開ける。
おわりに
「ニューラルネットは非線形関数近似器だ」という一文は、ReLU に限れば 「ニューラルネットは、入力空間を多面体に分割し、各断片にアフィン写像を載せる巨大なルックアップテーブルだ」 へと精密化される。非線形性はどの断片に属するかを選ぶこと(つまり活性化パターンを決めること)にのみ宿り、いったん断片が定まれば、あとは純粋な線形代数だ。
この視点は単なる知的遊戯ではない。線形領域の数で表現力を定量化し、各領域の有効アフィン写像でモデルを局所的に解釈・検証し(例:検証可能なロバスト性、厳密なヤコビアン解析)、スプライン理論やトロピカル幾何のような成熟した数学をそのままディープラーニングへ持ち込む橋になる。次に ReLU ネットワークを見るときは、滑らかな曲面ではなく、無数の平らな多面体の面をつなぎ合わせた折り紙を思い浮かべてほしい。
参考文献
- Montúfar, Pascanu, Cho, Bengio (2014). On the Number of Linear Regions of Deep Neural Networks. NeurIPS.
- Raghu, Poole, Kleinberg, Ganguli, Sohl-Dickstein (2017). On the Expressive Power of Deep Neural Networks. ICML.
- Balestriero, Baraniuk (2018). A Spline Theory of Deep Networks. ICML.
- Zhang, Naitzat, Lim (2018). Tropical Geometry of Deep Neural Networks. ICML.
- Hanin, Rolnick (2019). Complexity of Linear Regions in Deep Networks. ICML.