Lemma

第5章ニューラルネットワーク

目安 10〜13 時間定理など 11演習 6 問
ここまでの道

この章の目標

  • 多層パーセプトロンを行列の式で書き、非線形な活性化関数が必要な理由を説明できる
  • 連鎖律から誤差逆伝播法を導き、誤差 δ(l)\delta^{(l)} の漸化式と勾配の式を証明できる
  • 自動微分の前向きモードと後ろ向きモードの違いを説明し、スカラー値関数の勾配が関数の評価の定数倍の手間で求まることを証明できる
  • 勾配消失・爆発を活性化関数の微分と重みの大きさで説明し、Xavier・He の初期化の分散の条件を導ける
  • 万能近似定理を仮定まで正確に述べ、1 次元では ReLU による折れ線近似で構成的に証明できる
  • 畳み込み層と注意機構の式を読み、パラメータの共有や並べ替えに対する性質を説明できる

前提:第2章(ロジスティック回帰・ソフトマックスと交差エントロピー)、01-calculus 第7章(連鎖律)。5.7 節では 01-calculus 第3章 のハイネ–カントールの定理を使う。学習に使う勾配法と確率的勾配降下法は 23-optimization 第5章・23-optimization 第7章 で扱う。

製品の画像から傷を見つける、文章の続きを予測する――入力が画素や単語の列のような生の高次元データのとき、第2章の線形モデルに入れる特徴量を人が設計するのは難しい。ニューラルネットワーク (neural network) は特徴量を作る部分までパラメータで表し、予測と一緒にデータから学習する。式の上での線形モデルとの違いは、1 次式と非線形な関数を交互に何度も合成することだけである。

本章では、多層パーセプトロン(5.1 節)、勾配を求める誤差逆伝播法と自動微分(5.2・5.3 節)、勾配消失・爆発とその対策(5.4〜5.6 節)、万能近似定理(5.7 節)を扱い、畳み込み層と注意機構の式の読み方を紹介する(5.8・5.9 節)。学習は凸でない最適化問題で、勾配法がなぜうまくいくのか、なぜ汎化するのかの理論は発展の途中にある。本章では確かに言えることを証明し、経験則は経験則として述べる。汎化の理論は第6章で扱う。

5.1 多層パーセプトロン

定義 5.1(多層パーセプトロン, multilayer perceptron)正の整数 LL, d0,d1,…,dLd_0, d_1, \dots, d_L と関数 ϕ ⁣:R→R\phi\colon \mathbb{R} \to \mathbb{R} を定める。パラメータ θ=(W(1),b(1),…,W(L),b(L))\theta = (W^{(1)}, b^{(1)}, \dots, W^{(L)}, b^{(L)})(W(l)∈Rdl×dl−1W^{(l)} \in \mathbb{R}^{d_l \times d_{l-1}}, b(l)∈Rdlb^{(l)} \in \mathbb{R}^{d_l})に対し、入力 x∈Rd0x \in \mathbb{R}^{d_0} から

h(0)=x,z(l)=W(l)h(l−1)+b(l),h(l)=ϕ(z(l))(l=1,…,L−1),z(L)=W(L)h(L−1)+b(L)h^{(0)} = x, \qquad z^{(l)} = W^{(l)}h^{(l-1)} + b^{(l)}, \qquad h^{(l)} = \phi(z^{(l)}) \quad (l = 1, \dots, L - 1), \qquad z^{(L)} = W^{(L)}h^{(L-1)} + b^{(L)}

によって fθ(x)=z(L)∈RdLf_\theta(x) = z^{(L)} \in \mathbb{R}^{d_L} を計算する関数 fθf_\theta を、LL 層の多層パーセプトロン (MLP) という。ϕ(z)\phi(z) はベクトル zz の各成分に ϕ\phi を施したものである。ϕ\phi を活性化関数 (activation function)、z(l)z^{(l)} を前活性 (pre-activation)、h(1),…,h(L−1)h^{(1)}, \dots, h^{(L-1)} を隠れ層 (hidden layer)、dld_l を層の幅、LL を深さ、W(l)W^{(l)} を重み (weight)、b(l)b^{(l)} をバイアス (bias) という。

出力 z(L)z^{(L)} は損失に渡す(回帰なら二乗損失、KK クラスの分類なら dL=Kd_L = K として第2章の交差エントロピー損失 −log⁡softmax⁡(z)y-\log\operatorname{softmax}(z)_y)。L=1L = 1 なら第2章の線形モデルそのもので、多層パーセプトロンは「学習した特徴量 h(L−1)h^{(L-1)} の上の線形モデル」とみることができる。パラメータの個数は ∑l=1Ldl(dl−1+1)\sum_{l=1}^{L}d_l(d_{l-1} + 1) である(層の数え方は文献によって異なる)。

例 5.2(活性化関数)ロジスティック関数 σ(t)=1/(1+e−t)\sigma(t) = 1/(1 + e^{-t})(シグモイド関数ともいう。σ′=σ(1−σ)\sigma' = \sigma(1 - \sigma))、tanh⁡t=2σ(2t)−1\tanh t = 2\sigma(2t) - 1(tanh⁡′=1−tanh⁡2\tanh' = 1 - \tanh^2)、ReLU ReLU⁡(t)=max⁡(t,0)\operatorname{ReLU}(t) = \max(t, 0)(微分は t>0t > 0 で 11、t<0t < 0 で 00 で、t=0t = 0 では微分できない)。ReLU は計算が軽く、正の側で微分が 00 に近づかない(飽和しない)ので、現在の深いネットワークの多くは ReLU やその変種を使う。

活性化関数が 1 次式 ϕ(t)=αt+β\phi(t) = \alpha t + \beta なら、h(l−1)=Ax+ch^{(l-1)} = Ax + c のとき h(l)=αW(l)Ax+α(W(l)c+b(l))+β1h^{(l)} = \alpha W^{(l)}Ax + \alpha(W^{(l)}c + b^{(l)}) + \beta\mathbf{1}(1\mathbf{1} は成分がすべて 11 のベクトル)なので、帰納法で fθf_\theta は xx の 1 次式になり、層を重ねる意味がない。表現力を生むのは非線形な ϕ\phi である。

例 5.3(排他的論理和)x∈{0,1}2x \in \lbrace 0, 1 \rbrace^2 で、x1≠x2x_1 \neq x_2 のときだけ y=1y = 1 とする(XOR)。1 次式 g(x)=w1x1+w2x2+bg(x) = w_1x_1 + w_2x_2 + b で「g(x)>0g(x) > 0 なら 11」と分類できたとすると g(1,0)+g(0,1)>0≥g(0,0)+g(1,1)g(1, 0) + g(0, 1) > 0 \geq g(0, 0) + g(1, 1) だが、両辺はともに w1+w2+2bw_1 + w_2 + 2b で矛盾する。一方、隠れユニット 2 個のネットワーク f(x)=ReLU⁡(x1+x2)−2ReLU⁡(x1+x2−1)f(x) = \operatorname{ReLU}(x_1 + x_2) - 2\operatorname{ReLU}(x_1 + x_2 - 1) は (0,0),(1,0),(0,1),(1,1)(0, 0), (1, 0), (0, 1), (1, 1) で 0,1,1,00, 1, 1, 0 をとり、XOR を正確に表す。隠れ層が入力を線形分離できる特徴量に変換しているのである。

学習では、経験リスク(第1章 定義 1.2)に多くの場合重み減衰 (weight decay) λ2∑l∥W(l)∥F2\frac{\lambda}{2}\sum_l\lVert W^{(l)} \rVert_F^2(∥⋅∥F\lVert \cdot \rVert_F は成分の 2 乗和の平方根)を加えたものを、ランダムに選んだ少数のデータ(ミニバッチ)での勾配の平均 gg による更新 θ←θ−ηg\theta \leftarrow \theta - \eta g(確率的勾配降下法。23-optimization 第7章)などで小さくする。必要なのは 1 つのデータでの損失の勾配で、それを求めるのが次節の誤差逆伝播法である。

例 5.4(凸でないこと)f(x)=awxf(x) = awx(活性化関数は恒等写像)に、データ 1 点 (x,y)=(1,1)(x, y) = (1, 1) と損失 (f(x)−y)2(f(x) - y)^2 を使うと、J(a,w)=(aw−1)2J(a, w) = (aw - 1)^2 は (1,1)(1, 1) と (−1,−1)(-1, -1) で最小値 00 をとるが中点 (0,0)(0, 0) では 11 で、凸でない。隠れユニットを重みごと入れ替えても fθf_\theta は変わらないので、最小点は対称な組で現れる。経験リスクは一般に凸でなく、勾配法が大域的な最小点に達する保証はないが、多くの応用で訓練誤差を十分小さくできることが経験的に知られている。

5.2 誤差逆伝播法

1 つのデータ (x,y)(x, y) での損失 J(θ)=ℓ(y,fθ(x))J(\theta) = \ell(y, f_\theta(x)) の勾配を求める。数値微分では全成分にパラメータの数に比例する回数の前向きの計算が要るが、連鎖律を後ろの層から使えば前向きの計算の数倍で済む。∂J/∂W\partial J/\partial W は WW と同じ形で (j,k)(j, k) 成分が ∂J/∂Wjk\partial J/\partial W_{jk} の行列、勾配は縦ベクトル、u⊙vu \odot v は成分ごとの積、ϕ′(z)\phi'(z) は zz の各成分に ϕ′\phi' を施したベクトルとする。

定理 5.5(誤差逆伝播法, backpropagation)入力 xx と正解 yy を固定する。損失 ℓ(y,⋅) ⁣:RdL→R\ell(y, \cdot)\colon \mathbb{R}^{d_L} \to \mathbb{R} は z(L)z^{(L)} で微分可能、ϕ\phi は前活性の各成分 zj(l)z^{(l)}_j(1≤l≤L−11 \leq l \leq L - 1)で微分可能とする。ベクトル δ(L),…,δ(1)\delta^{(L)}, \dots, \delta^{(1)} を

δ(L)=∇zℓ(y,z(L)),δ(l)=ϕ′(z(l))⊙(W(l+1)⊤δ(l+1))(l=L−1,…,1)\delta^{(L)} = \nabla_z\ell(y, z^{(L)}), \qquad \delta^{(l)} = \phi'(z^{(l)}) \odot \left(W^{(l+1)\top}\delta^{(l+1)}\right) \quad (l = L - 1, \dots, 1)

で定めると、JJ は θ\theta で微分可能で、l=1,…,Ll = 1, \dots, L について

∂J∂W(l)=δ(l)h(l−1)⊤,∂J∂b(l)=δ(l)\frac{\partial J}{\partial W^{(l)}} = \delta^{(l)}h^{(l-1)\top}, \qquad \frac{\partial J}{\partial b^{(l)}} = \delta^{(l)}

すなわち ∂J/∂Wjk(l)=δj(l)hk(l−1)\partial J/\partial W^{(l)}_{jk} = \delta^{(l)}_jh^{(l-1)}_k である。δ(l)\delta^{(l)} は、第 ll 層の前活性を変数とみて残りの層を計算した損失の、z(l)z^{(l)} での勾配に等しい。δ(l)\delta^{(l)} を第 ll 層の誤差 (error) という。

証明. パラメータを固定し、GL(z)=ℓ(y,z)G_L(z) = \ell(y, z)、Gl(z)=Gl+1(W(l+1)ϕ(z)+b(l+1))G_l(z) = G_{l+1}(W^{(l+1)}\phi(z) + b^{(l+1)})(l<Ll < L)で Gl ⁣:Rdl→RG_l\colon \mathbb{R}^{d_l} \to \mathbb{R} を定める。Gl(z)G_l(z) は第 ll 層の前活性を zz に置き換えて残りの層を計算した損失で、どの ll でも J=Gl(z(l))J = G_l(z^{(l)}) である。

(1) ∇Gl(z(l))=δ(l)\nabla G_l(z^{(l)}) = \delta^{(l)} を ll について下向きの帰納法で示す。l=Ll = L では定義そのものである。成分ごとに ϕ\phi を施す写像 Φ\Phi は、ϕ(zj+uj)=ϕ(zj)+ϕ′(zj)uj+rj\phi(z_j + u_j) = \phi(z_j) + \phi'(z_j)u_j + r_j、rj=o(∣uj∣)r_j = o(\lvert u_j \rvert) と ∣uj∣≤∥u∥\lvert u_j \rvert \leq \lVert u \rVert より、z(l)z^{(l)} で微分可能でヤコビ行列は diag⁡(ϕ′(z(l)))\operatorname{diag}(\phi'(z^{(l)})) である。アフィン写像 h↦W(l+1)h+b(l+1)h \mapsto W^{(l+1)}h + b^{(l+1)} のヤコビ行列は W(l+1)W^{(l+1)} で、この 2 つの合成は z(l)z^{(l)} を z(l+1)z^{(l+1)} に写す。連鎖律(01-calculus 第7章 定理 7.14)と帰納法の仮定より、GlG_l は z(l)z^{(l)} で微分可能で DGl(z(l))=DGl+1(z(l+1))W(l+1)diag⁡(ϕ′(z(l)))DG_l(z^{(l)}) = DG_{l+1}(z^{(l+1)})W^{(l+1)}\operatorname{diag}(\phi'(z^{(l)}))。転置して ∇Gl(z(l))=diag⁡(ϕ′(z(l)))W(l+1)⊤δ(l+1)=δ(l)\nabla G_l(z^{(l)}) = \operatorname{diag}(\phi'(z^{(l)}))W^{(l+1)\top}\delta^{(l+1)} = \delta^{(l)}。

(2) (θ,h)↦W(l)h+b(l)(\theta, h) \mapsto W^{(l)}h + b^{(l)} の成分は多項式で C1C^1 級なので微分可能であり(01-calculus 第7章 の定理 7.13)、これと Φ\Phi の合成を繰り返した θ↦z(L)\theta \mapsto z^{(L)} は連鎖律により微分可能で、JJ も微分可能である。

(3) W(l),b(l)W^{(l)}, b^{(l)} 以外を固定すると、h(l−1)h^{(l-1)} は第 l−1l - 1 層までのパラメータで決まるので定数であり、GlG_l は第 l+1l + 1 層以降のパラメータで決まる。J=Gl(W(l)h(l−1)+b(l))J = G_l(W^{(l)}h^{(l-1)} + b^{(l)}) で、∂zi(l)/∂Wjk(l)=1{i=j}hk(l−1)\partial z^{(l)}_i/\partial W^{(l)}_{jk} = \mathbf{1}\lbrace i = j \rbrace h^{(l-1)}_k、∂zi(l)/∂bj(l)=1{i=j}\partial z^{(l)}_i/\partial b^{(l)}_j = \mathbf{1}\lbrace i = j \rbrace だから、連鎖律と (1) より ∂J/∂Wjk(l)=∑iδi(l)1{i=j}hk(l−1)=δj(l)hk(l−1)\partial J/\partial W^{(l)}_{jk} = \sum_i\delta^{(l)}_i\mathbf{1}\lbrace i = j \rbrace h^{(l-1)}_k = \delta^{(l)}_jh^{(l-1)}_k、∂J/∂bj(l)=δj(l)\partial J/\partial b^{(l)}_j = \delta^{(l)}_j である。□\square

定理 5.5 により、(i) 前向きに z(l),h(l)z^{(l)}, h^{(l)} を計算して保存し、(ii) 後ろ向きに δ(L),…,δ(1)\delta^{(L)}, \dots, \delta^{(1)} を求め、(iii) 外積 δ(l)h(l−1)⊤\delta^{(l)}h^{(l-1)\top} を作れば勾配が得られる。誤差が出力側から入力側へ逆向きに伝わるので誤差逆伝播法という(ラメルハート・ヒントン・ウィリアムズの 1986 年の論文で広く知られた)。乗算は前向きが ∑ldldl−1\sum_ld_ld_{l-1} 回、後ろ向きがその約 2 倍なので、勾配の全成分が前向き計算の約 3 倍の手間で求まる。δ(L)\delta^{(L)} は、二乗損失 12∥z−y∥2\frac{1}{2}\lVert z - y \rVert^2 なら z(L)−yz^{(L)} - y、交差エントロピー損失なら softmax⁡(z(L))−ey\operatorname{softmax}(z^{(L)}) - e_y である(第2章の命題 2.20)。ミニバッチでは勾配を平均する。

例 5.6(手計算)d0=d1=2d_0 = d_1 = 2、d2=1d_2 = 1、ϕ=ReLU⁡\phi = \operatorname{ReLU}、J=12(z(2)−y)2J = \frac{1}{2}(z^{(2)} - y)^2 とし、

W(1)=(1−10.51),b(1)=(0.5−1),W(2)=(2−1),b(2)=0.5,x=(12),y=1W^{(1)} = \begin{pmatrix} 1 & -1 \\ 0.5 & 1 \end{pmatrix}, \quad b^{(1)} = \begin{pmatrix} 0.5 \\ -1 \end{pmatrix}, \quad W^{(2)} = \begin{pmatrix} 2 & -1 \end{pmatrix}, \quad b^{(2)} = 0.5, \quad x = \begin{pmatrix} 1 \\ 2 \end{pmatrix}, \quad y = 1

とする。前向き計算は z(1)=(−0.5,1.5)⊤z^{(1)} = (-0.5, 1.5)^{\top}、h(1)=(0,1.5)⊤h^{(1)} = (0, 1.5)^{\top}、z(2)=−1z^{(2)} = -1、J=2J = 2。後ろ向き計算は δ(2)=z(2)−y=−2\delta^{(2)} = z^{(2)} - y = -2、W(2)⊤δ(2)=(−4,2)⊤W^{(2)\top}\delta^{(2)} = (-4, 2)^{\top}、ϕ′(z(1))=(0,1)⊤\phi'(z^{(1)}) = (0, 1)^{\top} より δ(1)=(0,2)⊤\delta^{(1)} = (0, 2)^{\top} で、

∂J∂W(2)=(0−3),∂J∂b(2)=−2,∂J∂W(1)=δ(1)x⊤=(0024),∂J∂b(1)=(02)\frac{\partial J}{\partial W^{(2)}} = \begin{pmatrix} 0 & -3 \end{pmatrix}, \quad \frac{\partial J}{\partial b^{(2)}} = -2, \quad \frac{\partial J}{\partial W^{(1)}} = \delta^{(1)}x^{\top} = \begin{pmatrix} 0 & 0 \\ 2 & 4 \end{pmatrix}, \quad \frac{\partial J}{\partial b^{(1)}} = \begin{pmatrix} 0 \\ 2 \end{pmatrix}

前活性に 00 がないので定理 5.5 の仮定は満たされ、中心差分による数値微分とも一致する(計算機で確かめた)。第 1 隠れユニットは前活性が負なので、入る重みの勾配は 00 である(すべての訓練データでこうなると更新されない。いわゆる「死んだ」ReLU)。

実装した逆伝播は数値微分と比べて確かめる(勾配確認)。JJ が C3C^3 級なら、テイラーの定理より中心差分 (J(θ+hek)−J(θ−hek))/(2h)(J(\theta + he_k) - J(\theta - he_k))/(2h) と ∂J/∂θk\partial J/\partial\theta_k の差は O(h2)O(h^2) で、これに丸め誤差(倍精度でおよそ 10−16∣J∣/h10^{-16}\lvert J \rvert/h)が加わる。次のコードは、tanh⁡\tanh の隠れ層 2 つとソフトマックスの出力をもつネットワーク(パラメータ 51 個)で両者を比べる。

import numpy as np

rng = np.random.default_rng(0)
sizes = [3, 4, 4, 3]                            # d_0, d_1, d_2, d_3(3 クラス)
Ws = [rng.normal(0, 1, (m, k)) for k, m in zip(sizes[:-1], sizes[1:])]
bs = [rng.normal(0, 1, m) for m in sizes[1:]]
x, y = rng.normal(0, 1, 3), 2                   # 入力と正解のクラス

def loss_and_grads(Ws, bs):
    hs, z = [x], None                           # hs[l] = h^(l)
    for l, (W, b) in enumerate(zip(Ws, bs)):
        z = W @ hs[-1] + b
        if l < len(Ws) - 1:
            hs.append(np.tanh(z))
    p = np.exp(z - z.max()); p /= p.sum()       # softmax(z^(L))
    J = -np.log(p[y])                           # 交差エントロピー損失
    delta = p.copy(); delta[y] -= 1             # δ^(L) = p - e_y
    gWs, gbs = [], []
    for l in reversed(range(len(Ws))):          # 後ろの層から
        gWs.insert(0, np.outer(delta, hs[l])); gbs.insert(0, delta)
        if l > 0:                               # tanh' = 1 - tanh^2
            delta = (1 - hs[l] ** 2) * (Ws[l].T @ delta)
    return J, gWs, gbs

J, gWs, gbs = loss_and_grads(Ws, bs)
err, h = 0.0, 1e-6
for P, G in zip(Ws + bs, gWs + gbs):            # 中心差分と比べる
    for idx in np.ndindex(P.shape):
        old = P[idx]
        P[idx] = old + h; Jp = loss_and_grads(Ws, bs)[0]
        P[idx] = old - h; Jm = loss_and_grads(Ws, bs)[0]
        P[idx] = old
        err = max(err, abs((Jp - Jm) / (2 * h) - G[idx]))
print(f"J = {J:.4f}, 勾配の成分の最大の差 = {err:.1e}")
J = 1.0232, 勾配の成分の最大の差 = 2.1e-10

勾配の成分は絶対値が最大で約 0.640.64 で、差は打ち切り誤差と丸め誤差で説明できる大きさである。

ヒント

実務では 深層学習のライブラリは次節の自動微分で勾配を計算するが、自作の層や損失を加えたときは小さな例で数値微分と比べる(倍精度で、ドロップアウトのような乱数を使う処理は止めて)。勾配の誤りは「学習がなんとなく遅い」という形でしか現れないことがあり、気づきにくい。

5.3 計算グラフと自動微分

計算の手順を基本演算に分解し、各演算の局所的な微分を連鎖律でつなぐ方法を自動微分 (automatic differentiation) という。数値微分と違って丸め誤差を除けば正確で、記号的な微分のように式が膨れ上がることもない。誤差逆伝播法はその特別な場合である。

定義 5.7(計算グラフ, computational graph)関数 f ⁣:Rn→Rf\colon \mathbb{R}^n \to \mathbb{R} の計算グラフとは、変数の列 v1,…,vNv_1, \dots, v_N で、v1,…,vnv_1, \dots, v_n は入力 x1,…,xnx_1, \dots, x_n であり、i=n+1,…,Ni = n + 1, \dots, N については vi=gi((vj)j∈pa⁡(i))v_i = g_i((v_j)_{j \in \operatorname{pa}(i)})(pa⁡(i)⊂{1,…,i−1}\operatorname{pa}(i) \subset \lbrace 1, \dots, i - 1 \rbrace)と前の変数から基本演算 gig_i で計算され、f(x)=vNf(x) = v_N となるものをいう。基本演算は 2 変数の四則演算と、1 変数の exp⁡,log⁡,sin⁡,cos⁡,σ,tanh⁡\exp, \log, \sin, \cos, \sigma, \tanh などとする。j∈pa⁡(i)j \in \operatorname{pa}(i) のとき jj から ii へ辺を引くと有向非巡回グラフができる。gig_i の vjv_j についての偏微分を実際の値で評価したものを ∂jgi\partial_jg_i と書く(局所的な偏微分)。

命題 5.8(前向きモード, forward mode)方向 u∈Rnu \in \mathbb{R}^n について v˙k=uk\dot{v}_k = u_k(k≤nk \leq n)とし、i=n+1,…,Ni = n + 1, \dots, N の順に v˙i=∑j∈pa⁡(i)∂jgiv˙j\dot{v}_i = \sum_{j \in \operatorname{pa}(i)}\partial_jg_i\dot{v}_j と定める。各 gig_i がその点で微分可能ならば v˙N=∇f(x)⊤u\dot{v}_N = \nabla f(x)^{\top}u である。

証明. 各 viv_i を xx の関数とみて、viv_i が微分可能で v˙i=Dvi(x)u\dot{v}_i = Dv_i(x)u であることを ii についての帰納法で示す。i≤ni \leq n では vi=xiv_i = x_i なので正しい。i>ni > n では連鎖律より Dvi(x)u=∑j∈pa⁡(i)∂jgiDvj(x)u=∑j∂jgiv˙j=v˙iDv_i(x)u = \sum_{j \in \operatorname{pa}(i)}\partial_jg_iDv_j(x)u = \sum_j\partial_jg_i\dot{v}_j = \dot{v}_i。□\square

命題 5.9(後ろ向きモード, reverse mode)vˉN=1\bar{v}_N = 1、それ以外の vˉj=0\bar{v}_j = 0 から始め、i=N,N−1,…,n+1i = N, N - 1, \dots, n + 1 の順に、各 j∈pa⁡(i)j \in \operatorname{pa}(i) について vˉj←vˉj+vˉi∂jgi\bar{v}_j \leftarrow \bar{v}_j + \bar{v}_i\partial_jg_i と更新する。各 gig_i がその点で微分可能ならば、終わったときの vˉk\bar{v}_k は ∂f/∂xk(x)\partial f/\partial x_k(x) に等しい(k=1,…,nk = 1, \dots, n)。

証明. k=n,…,Nk = n, \dots, N について、v1,…,vkv_1, \dots, v_k に任意の値を与えて vk+1,…,vNv_{k+1}, \dots, v_N を手順どおり計算し vNv_N を返す関数を Fk ⁣:Rk→RF_k\colon \mathbb{R}^k \to \mathbb{R} とする。FN(v1,…,vN)=vNF_N(v_1, \dots, v_N) = v_N、Fn=fF_n = f、Fk−1(v1,…,vk−1)=Fk(v1,…,vk−1,gk((vj)j∈pa⁡(k)))F_{k-1}(v_1, \dots, v_{k-1}) = F_k(v_1, \dots, v_{k-1}, g_k((v_j)_{j \in \operatorname{pa}(k)})) である。下向きの帰納法と連鎖律により、各 FkF_k は実際の値で微分可能で、j≤k−1j \leq k - 1 について(j∉pa⁡(k)j \notin \operatorname{pa}(k) なら ∂jgk=0\partial_jg_k = 0 とする)

∂Fk−1∂vj=∂Fk∂vj+∂Fk∂vk ∂jgk\frac{\partial F_{k-1}}{\partial v_j} = \frac{\partial F_k}{\partial v_j} + \frac{\partial F_k}{\partial v_k}\,\partial_jg_k

が成り立つ。「i=ki = k の更新の直前に、すべての j≤kj \leq k で vˉj=∂Fk/∂vj\bar{v}_j = \partial F_k/\partial v_j」を kk について下向きの帰納法で示す。k=Nk = N では vˉj=1{j=N}=∂FN/∂vj\bar{v}_j = \mathbf{1}\lbrace j = N \rbrace = \partial F_N/\partial v_j。kk で成り立てば、i=ki = k の更新で各 j∈pa⁡(k)j \in \operatorname{pa}(k) に vˉk∂jgk\bar{v}_k\partial_jg_k が加わるので、上の式より j≤k−1j \leq k - 1 で vˉj=∂Fk−1/∂vj\bar{v}_j = \partial F_{k-1}/\partial v_j となる。i=n+1i = n + 1 の更新を終えると vˉj=∂Fn/∂vj=∂f/∂xj\bar{v}_j = \partial F_n/\partial v_j = \partial f/\partial x_j である。□\square

例 5.10 f(x1,x2)=x1x2+exp⁡(x1−x2)f(x_1, x_2) = x_1x_2 + \exp(x_1 - x_2) を v3=v1v2v_3 = v_1v_2、v4=v1−v2v_4 = v_1 - v_2、v5=exp⁡(v4)v_5 = \exp(v_4)、v6=v3+v5v_6 = v_3 + v_5 と計算する。(x1,x2)=(1,1)(x_1, x_2) = (1, 1) では v3=1v_3 = 1、v4=0v_4 = 0、v5=1v_5 = 1、v6=2v_6 = 2。後ろ向きモードは、i=6i = 6 で vˉ3=vˉ5=1\bar{v}_3 = \bar{v}_5 = 1、i=5i = 5 で vˉ4=vˉ5ev4=1\bar{v}_4 = \bar{v}_5e^{v_4} = 1、i=4i = 4 で vˉ1=1\bar{v}_1 = 1、vˉ2=−1\bar{v}_2 = -1、i=3i = 3 で vˉ1=1+vˉ3v2=2\bar{v}_1 = 1 + \bar{v}_3v_2 = 2、vˉ2=−1+vˉ3v1=0\bar{v}_2 = -1 + \bar{v}_3v_1 = 0 となり、直接微分した ∇f=(x2+ex1−x2,x1−ex1−x2)=(2,0)\nabla f = (x_2 + e^{x_1 - x_2}, x_1 - e^{x_1 - x_2}) = (2, 0) と一致する。前向きモードで勾配を求めるには u=(1,0),(0,1)u = (1, 0), (0, 1) の 2 回の計算が要る。

定理 5.11(勾配の計算量)定義 5.7 の計算グラフで、各基本演算の引数は 2 個以下、局所的な偏微分 ∂jgi\partial_jg_i は演算の引数と結果 viv_i から高々 cc 回の基本演算(定数との四則演算も 1 回と数える)で計算できるとし、f(x)f(x) を計算する基本演算の回数を Nf=N−nN_f = N - n とする。

  1. 前向きモードは f(x)f(x) と 1 つの方向微分を高々 (2c+4)Nf(2c + 4)N_f 回の基本演算で求める。勾配の全成分には nn 方向が要り、高々 (2c+4)nNf(2c + 4)nN_f 回である。
  2. 後ろ向きモードは f(x)f(x) と ∇f(x)\nabla f(x) の全成分を高々 (2c+5)Nf(2c + 5)N_f 回の基本演算で求める。この上界は入力の次元 nn によらない。

証明. 各 ii(n<i≤Nn < i \leq N)ごとに数える。前向きモードでは、viv_i に 1 回、局所的な偏微分(高々 2 個)に高々 2c2c 回、v˙i\dot{v}_i に高々 3 回(乗算 2 回と加算 1 回)である。後ろ向きモードでは、まず v1,…,vNv_1, \dots, v_N を前向きに計算して保存し(NfN_f 回)、後ろ向きの各 ii で局所的な偏微分に高々 2c2c 回、各 j∈pa⁡(i)j \in \operatorname{pa}(i) の更新に 2 回ずつ高々 4 回を使う。合計は高々 Nf+(2c+4)NfN_f + (2c + 4)N_f 回である。□\square

四則演算と exp⁡,log⁡,sin⁡,cos⁡,σ,tanh⁡\exp, \log, \sin, \cos, \sigma, \tanh なら c=2c = 2 でよい(例:∂(u/w)/∂w=−vi/w\partial(u/w)/\partial w = -v_i/w、σ′(u)=vi(1−vi)\sigma'(u) = v_i(1 - v_i))ので、勾配の手間は関数の評価の高々 9 倍で、入力の次元によらない(勾配は安い, cheap gradient principle)。前向きモードと数値微分の手間は nn に比例する。パラメータが非常に多いモデルを勾配法で学習できるのはこのためである。代わりに後ろ向きモードは途中の値をすべて保存するので、記憶領域が NfN_f に比例する。多層パーセプトロンを基本演算に分解すれば z(l)z^{(l)} の成分の vˉ\bar{v} が δ(l)\delta^{(l)} で、誤差逆伝播法は後ろ向きモードを層ごとの行列演算にまとめたものである。

例 5.12(積の勾配)f(x)=x1x2⋯xnf(x) = x_1x_2\cdots x_n を p1=x1p_1 = x_1、pk=pk−1xkp_k = p_{k-1}x_k と計算すると(Nf=n−1N_f = n - 1)、後ろ向きモードは pˉn=1\bar{p}_n = 1 から k=n,…,2k = n, \dots, 2 の順に xˉk=pˉkpk−1\bar{x}_k = \bar{p}_kp_{k-1}、pˉk−1=pˉkxk\bar{p}_{k-1} = \bar{p}_kx_k を計算し(最後に xˉ1=pˉ1\bar{x}_1 = \bar{p}_1)、∂f/∂xk=(x1⋯xk−1)(xk+1⋯xn)\partial f/\partial x_k = (x_1\cdots x_{k-1})(x_{k+1}\cdots x_n) を乗算 2(n−1)2(n - 1) 回ですべて求める。前向きモードでは手間が n2n^2 に比例する。

5.4 勾配消失と勾配爆発

定理 5.5 の漸化式をほどくと、D(k)=diag⁡(ϕ′(z(k)))D^{(k)} = \operatorname{diag}(\phi'(z^{(k)})) として

δ(l)=D(l)W(l+1)⊤D(l+1)W(l+2)⊤⋯D(L−1)W(L)⊤δ(L)\delta^{(l)} = D^{(l)}W^{(l+1)\top}D^{(l+1)}W^{(l+2)\top}\cdots D^{(L-1)}W^{(L)\top}\delta^{(L)}

である。入力に近い層の勾配は L−lL - l 個の行列の積で決まり、各因子がベクトルを縮めるなら層の数について指数的に小さく(勾配消失)、伸ばすなら指数的に大きく(勾配爆発)なりうる。

命題 5.13(勾配の大きさの上界)∥A∥\lVert A \rVert を作用素ノルム(最大特異値。02-linear-algebra 第8章 命題 8.21)とすると

∥δ(l)∥≤(∏k=lL−1max⁡j∣ϕ′(zj(k))∣ ∥W(k+1)∥)∥δ(L)∥,∥∂J∂W(l)∥F=∥δ(l)∥ ∥h(l−1)∥\lVert \delta^{(l)} \rVert \leq \left(\prod_{k=l}^{L-1}\max_j\lvert \phi'(z^{(k)}_j) \rvert\,\lVert W^{(k+1)} \rVert\right)\lVert \delta^{(L)} \rVert, \qquad \left\lVert \frac{\partial J}{\partial W^{(l)}} \right\rVert_F = \lVert \delta^{(l)} \rVert\,\lVert h^{(l-1)} \rVert

特に 0<σ′(t)≤1/40 < \sigma'(t) \leq 1/4(等号は t=0t = 0 のときに限る)なので、ϕ=σ\phi = \sigma ですべての kk で ∥W(k)∥≤c\lVert W^{(k)} \rVert \leq c ならば ∥δ(l)∥≤(c/4)L−l∥δ(L)∥\lVert \delta^{(l)} \rVert \leq (c/4)^{L-l}\lVert \delta^{(L)} \rVert である。

証明. 対角行列の作用素ノルムは対角成分の絶対値の最大値で、A⊤A^{\top} と AA の特異値は同じなので ∥A⊤∥=∥A∥\lVert A^{\top} \rVert = \lVert A \rVert。∥Au∥≤∥A∥∥u∥\lVert Au \rVert \leq \lVert A \rVert\lVert u \rVert を繰り返せば第 1 式を得る。第 2 式は ∥uv⊤∥F2=∑j,kuj2vk2=∥u∥2∥v∥2\lVert uv^{\top} \rVert_F^2 = \sum_{j,k}u_j^2v_k^2 = \lVert u \rVert^2\lVert v \rVert^2 による。p=σ(t)∈(0,1)p = \sigma(t) \in (0, 1) とすると σ′(t)=p(1−p)=14−(p−12)2\sigma'(t) = p(1 - p) = \frac{1}{4} - (p - \frac{1}{2})^2 で、等号は p=1/2p = 1/2、すなわち t=0t = 0 のときに限る。□\square

シグモイドを 10 層重ねて ∥W(k)∥≤1\lVert W^{(k)} \rVert \leq 1 なら、第 1 層の誤差は出力の誤差の 4−10≈9.5×10−74^{-10} \approx 9.5 \times 10^{-7} 倍以下である。前活性の絶対値が大きいと微分はさらに小さい(σ′(5)≈0.0066\sigma'(5) \approx 0.0066。ユニットの飽和)。ただし命題 5.13 は上界であり、重みが大きければ因子は 11 を超えうる。

例 5.14(勾配爆発)活性化関数を恒等写像、W(k)=aIW^{(k)} = aI とすると δ(l)=aL−lδ(L)\delta^{(l)} = a^{L-l}\delta^{(L)} で、L−l=50L - l = 50 なら a=1.1a = 1.1 で約 117117 倍、a=0.9a = 0.9 で約 0.00520.0052 倍になる。同じ重み行列を時刻ごとに使う再帰型ニューラルネットワーク (RNN) では行列の累乗が現れるので、長い系列で消失・爆発が起こりやすい。

対策には、(1) 正の側で微分が 11 の ReLU、(2) 分散を保つ初期化(5.5 節)、(3) 正規化(5.6 節)、(4) 残差接続 (residual connection) h(l)=h(l−1)+Fl(h(l−1))h^{(l)} = h^{(l-1)} + F_l(h^{(l-1)})、(5) 勾配のノルムが閾値を超えたら縮める勾配クリッピング、などがある。(4) では ∂J/∂h(l−1)=(I+DFl(h(l−1)))⊤∂J/∂h(l)\partial J/\partial h^{(l-1)} = (I + DF_l(h^{(l-1)}))^{\top}\partial J/\partial h^{(l)} で、恒等写像を通る経路があるので勾配が消えにくい(残差接続を使ったネットワーク(He ら 2016)で、100 層を超えるネットワークの学習が実用になった)。

5.5 初期化

すべての重みを同じ値で初期化してはいけない。

命題 5.15(対称性は保たれる)ある隠れ層の 2 つのユニット j,j′j, j' について、入る重みとバイアスが等しく(W(l)W^{(l)} の第 j,j′j, j' 行、bj(l),bj′(l)b^{(l)}_j, b^{(l)}_{j'})、出る重みも等しい(W(l+1)W^{(l+1)} の第 j,j′j, j' 列)とする。このとき、どのデータについても損失の勾配のこれらに対応する部分は等しい。したがって勾配降下法で(確率的でも)何回更新しても等しいままで、2 つのユニットは同じ特徴量しか表さない。

証明. zj(l)=zj′(l)z^{(l)}_j = z^{(l)}_{j'}、hj(l)=hj′(l)h^{(l)}_j = h^{(l)}_{j'} で、δj(l)=ϕ′(zj(l))∑iWij(l+1)δi(l+1)\delta^{(l)}_j = \phi'(z^{(l)}_j)\sum_iW^{(l+1)}_{ij}\delta^{(l+1)}_i も出る重みが等しいので δj′(l)\delta^{(l)}_{j'} に等しい。よって定理 5.5 より、W(l)W^{(l)} の第 j,j′j, j' 行の勾配 δj(l)h(l−1)⊤\delta^{(l)}_jh^{(l-1)\top}、bj(l),bj′(l)b^{(l)}_j, b^{(l)}_{j'} の勾配、W(l+1)W^{(l+1)} の第 j,j′j, j' 列の勾配 hj(l)δ(l+1)h^{(l)}_j\delta^{(l+1)} はそれぞれ等しく、更新後も仮定が成り立つ。□\square

そこで重みは乱数で初期化する(バイアスは 00 でよい)。問題はその分散である。

命題 5.16(初期化での分散の伝播)入力 xx を固定し、バイアスを 00 とする。重みの成分はすべて独立で、第 ll 層の成分 Wjk(l)W^{(l)}_{jk} は同じ分布に従い、その分布は 00 について対称(Wjk(l)W^{(l)}_{jk} と −Wjk(l)-W^{(l)}_{jk} が同じ分布)で分散 vlv_l をもつとする(現れる期待値は有限とする)。このとき E[zj(l)]=0E[z^{(l)}_j] = 0 で、ql=E[(zj(l))2]q_l = E[(z^{(l)}_j)^2] は jj によらず、

  1. q1=v1∥x∥2q_1 = v_1\lVert x \rVert^2、l≥2l \geq 2 では ql=dl−1vlE[ϕ(z1(l−1))2]q_l = d_{l-1}v_lE[\phi(z^{(l-1)}_1)^2]。
  2. ϕ=ReLU⁡\phi = \operatorname{ReLU} ならば ql=12dl−1vlql−1q_l = \frac{1}{2}d_{l-1}v_lq_{l-1}(l≥2l \geq 2)。したがって vl=2/dl−1v_l = 2/d_{l-1} ならばすべての ll で ql=q1q_l = q_1 である。

証明. h(l−1)h^{(l-1)} は xx と W(1),…,W(l−1)W^{(1)}, \dots, W^{(l-1)} の関数なので W(l)W^{(l)} と独立である(22-statistics 第1章 命題 1.4)。対称性より E[Wjk(l)]=0E[W^{(l)}_{jk}] = 0 なので E[zj(l)]=∑kE[Wjk(l)]E[hk(l−1)]=0E[z^{(l)}_j] = \sum_kE[W^{(l)}_{jk}]E[h^{(l-1)}_k] = 0、

E[(zj(l))2]=∑k,k′E[Wjk(l)Wjk′(l)] E[hk(l−1)hk′(l−1)]=vl∑kE[(hk(l−1))2]E[(z^{(l)}_j)^2] = \sum_{k, k'}E[W^{(l)}_{jk}W^{(l)}_{jk'}]\,E[h^{(l-1)}_kh^{(l-1)}_{k'}] = v_l\sum_kE[(h^{(l-1)}_k)^2]

である。l=1l = 1 では h(0)=xh^{(0)} = x なので q1=v1∥x∥2q_1 = v_1\lVert x \rVert^2。l≥2l \geq 2 では、W(l−1)W^{(l-1)} の各行は同じ分布に従い h(l−2)h^{(l-2)} と独立なので、zk(l−1)z^{(l-1)}_k はどの kk でも同じ分布に従い、和は dl−1E[ϕ(z1(l−1))2]d_{l-1}E[\phi(z^{(l-1)}_1)^2] になる。(2) (W(l−1),h(l−2))(W^{(l-1)}, h^{(l-2)}) と (−W(l−1),h(l−2))(-W^{(l-1)}, h^{(l-2)}) は同じ分布に従うので、z=z1(l−1)z = z^{(l-1)}_1 と −z-z も同じ分布に従う。よって E[z21{z>0}]=E[z21{z<0}]E[z^2\mathbf{1}\lbrace z > 0 \rbrace] = E[z^2\mathbf{1}\lbrace z < 0 \rbrace] で、和は ql−1q_{l-1} だから E[ReLU⁡(z)2]=ql−1/2E[\operatorname{ReLU}(z)^2] = q_{l-1}/2。□\square

vl=2/dl−1v_l = 2/d_{l-1} を He の初期化という(He ら 2015)。tanh⁡\tanh のように 00 の近くで ϕ(t)≈t\phi(t) \approx t となる活性化関数では、(1) で E[ϕ(z)2]≈ql−1E[\phi(z)^2] \approx q_{l-1} と近似して vl=1/dl−1v_l = 1/d_{l-1} が条件になる。後ろ向きの δ\delta についても、W(l)W^{(l)} と δ(l)\delta^{(l)} を独立とみなす近似(正確には独立でない)で同じ計算をすると、条件は vl=1/dlv_l = 1/d_l(ReLU なら 2/dl2/d_l)になり、両者の折衷 vl=2/(dl−1+dl)v_l = 2/(d_{l-1} + d_l) が Xavier の初期化(グロロ–ベンジオ 2010)である。幅 256、50 層の ReLU ネットワーク(重みは正規分布)で試すと、第 50 層と第 1 層の前活性の 2 乗平均の比は、ある 1 回の試行で v=1/dv = 1/d なら約 7×10−167 \times 10^{-16}、v=4/dv = 4/d なら約 2.5×10132.5 \times 10^{13}、v=2/dv = 2/d なら約 0.410.41 だった。命題 5.16 の (2) による期待値の比は v=c/dv = c/d のとき (c/2)49(c/2)^{49} で、それぞれ 2−49≈1.8×10−152^{-49} \approx 1.8 \times 10^{-15}、249≈5.6×10142^{49} \approx 5.6 \times 10^{14}、11 である。命題 5.16 は期待値の主張で、有限の幅では 1 回の試行の値がこれから 1 桁以上ずれることもある(v=2/dv = 2/d で 2000 回試すと、比の中央値は約 0.620.62 で、9 割の試行は約 0.120.12 から 3.03.0 の間にあった)。どの条件も初期化の時点だけを見たもので、学習の進み方は保証しない。

5.6 正規化(紹介)

学習が進むと各層の値の大きさは変わっていく。そこで層の途中で値を正規化する。

定義 5.17(バッチ正規化・層正規化)ミニバッチの BB 個のデータの第 jj 成分の前活性を z1j,…,zBjz_{1j}, \dots, z_{Bj} とし、μj=1B∑bzbj\mu_j = \frac{1}{B}\sum_bz_{bj}、sj2=1B∑b(zbj−μj)2s_j^2 = \frac{1}{B}\sum_b(z_{bj} - \mu_j)^2 とする。小さな定数 ϵ>0\epsilon > 0 と学習するパラメータ γj,βj\gamma_j, \beta_j で z^bj=γj(zbj−μj)/sj2+ϵ+βj\hat{z}_{bj} = \gamma_j(z_{bj} - \mu_j)/\sqrt{s_j^2 + \epsilon} + \beta_j と変換することをバッチ正規化 (batch normalization) という。データ bb ごとに、その成分 zb1,…,zbdz_{b1}, \dots, z_{bd} の平均と分散で同じ形の変換をすることを層正規化 (layer normalization) という。

バッチ正規化(イオフェ–セゲディ 2015)は、学習時にはミニバッチの統計量を(逆伝播もそれを通して)使い、推論時には学習中に蓄えた移動平均を使う。層正規化(バ–キロス–ヒントン 2016)はバッチによらず、トランスフォーマー(5.9 節)で標準的に使われる。ϵ=0\epsilon = 0 なら、直前の層の重みとバイアスを c>0c > 0 倍しても zbj,μj,sjz_{bj}, \mu_j, s_j が cc 倍になるだけで z^bj\hat{z}_{bj} は変わらないので、重みの大きさの影響を受けにくい。正規化で学習が速く安定になることは経験的に広く確かめられているが、なぜ効くのかについて確定した理論はない。

ヒント

実務では バッチ正規化を含むモデルは、学習時と推論時で計算が違う。推論用のモードへの切り替えを忘れると、同じ入力でも一緒に入力した他のデータによって予測が変わる。ミニバッチが小さいと統計量のゆらぎで学習が不安定になるので、層正規化などバッチによらない正規化を検討する。入力の標準化(第2章 2.6 節)と同じく、推論で使う統計量は訓練データだけから作る。

5.7 万能近似定理

多層パーセプトロンでどんな関数が表せるだろうか。隠れ層が 1 つでも、幅を十分に大きくすれば、コンパクト集合上の連続関数をいくらでもよく近似できる。

定理 5.18(万能近似定理, universal approximation theorem)ϕ ⁣:R→R\phi\colon \mathbb{R} \to \mathbb{R} を連続関数とする。次の 2 条件は同値である。

  1. 任意の d≥1d \geq 1、コンパクト集合 K⊂RdK \subset \mathbb{R}^d、連続関数 f ⁣:K→Rf\colon K \to \mathbb{R}、ε>0\varepsilon > 0 に対し、ある NN と ai,bi∈Ra_i, b_i \in \mathbb{R}, wi∈Rdw_i \in \mathbb{R}^d(i=1,…,Ni = 1, \dots, N)があって sup⁡x∈K∣f(x)−∑i=1Naiϕ(wi⊤x+bi)∣<ε\sup_{x \in K}\lvert f(x) - \sum_{i=1}^{N}a_i\phi(w_i^{\top}x + b_i) \rvert < \varepsilon。
  2. ϕ\phi は多項式でない。

∑iaiϕ(wi⊤x+bi)\sum_ia_i\phi(w_i^{\top}x + b_i) は隠れユニット NN 個の 2 層の多層パーセプトロンである。(2)⇒(1) は、シグモイド型(t→−∞t \to -\infty で 00、t→∞t \to \infty で 11 に収束)の ϕ\phi についてシベンコ(1989)とホルニク–スティンチコム–ホワイト(1989)がそれぞれの条件のもとで示し、レシュノ–リン–ピンカス–ショッケン(1993)が「多項式でない」という条件まで広げた(不連続な ϕ\phi も一部扱っている)。証明は関数解析を使うので省略する(シベンコの証明はハーン–バナッハの定理とリースの表現定理による)。ReLU・σ\sigma・tanh⁡\tanh はどれも連続で多項式でない。逆向きは易しい。

証明((1)⇒(2)). ϕ\phi が mm 次以下の多項式なら、d=1d = 1 でネットワーク g(x)=∑iaiϕ(wix+bi)g(x) = \sum_ia_i\phi(w_ix + b_i) は mm 次以下の多項式である。K=[0,1]K = [0, 1]、f(x)=xm+1f(x) = x^{m+1}、h=1/(m+1)h = 1/(m + 1)、Δu(x)=u(x+h)−u(x)\Delta u(x) = u(x + h) - u(x) とおく。Δ\Delta は 1 次以上の多項式の次数を 1 下げて最高次の係数を(次数)×h\times h 倍にし、定数を 00 にするので、Δm+1g=0\Delta^{m+1}g = 0、Δm+1f=(m+1)! hm+1\Delta^{m+1}f = (m + 1)!\ h^{m+1}(定数)である。Δm+1u(0)=∑i=0m+1(−1)m+1−i(m+1i)u(ih)\Delta^{m+1}u(0) = \sum_{i=0}^{m+1}(-1)^{m+1-i}\binom{m+1}{i}u(ih)、ih∈[0,1]ih \in [0, 1]、∑i(m+1i)=2m+1\sum_i\binom{m+1}{i} = 2^{m+1} より

(m+1)! hm+1=∣Δm+1(f−g)(0)∣≤2m+1sup⁡x∈[0,1]∣f(x)−g(x)∣(m + 1)!\,h^{m+1} = \lvert \Delta^{m+1}(f - g)(0) \rvert \leq 2^{m+1}\sup_{x \in [0, 1]}\lvert f(x) - g(x) \rvert

なので、ε≤(m+1)! hm+1/2m+1\varepsilon \leq (m + 1)!\ h^{m+1}/2^{m+1} では (1) が成り立たない。□\square

注意

万能近似定理は、近似するネットワークが存在すると言うだけである。必要な幅 NN がどれだけか、勾配法でそのパラメータが見つかるか、有限のデータからそれを選べるか(汎化するか)については何も言わない。近似はコンパクト集合の上での話で、データの範囲の外での予測(外挿)の良さも保証しない。「ニューラルネットワークは何でも学習できる」という言い方は、この定理の主張を超えている。

1 次元で ReLU を使う場合には、近似するネットワークを具体的に作れる。

定理 5.19(ReLU による 1 次元の構成的近似)f ⁣:[a,b]→Rf\colon [a, b] \to \mathbb{R} を連続、ε>0\varepsilon > 0 とする。δ>0\delta > 0 を「∣x−x′∣≤δ\lvert x - x' \rvert \leq \delta ならば ∣f(x)−f(x′)∣<ε\lvert f(x) - f(x') \rvert < \varepsilon」となるようにとり、分点 a=t0<t1<⋯<tN=ba = t_0 < t_1 < \cdots < t_N = b を tk−tk−1≤δt_k - t_{k-1} \leq \delta となるようにとる。sk=(f(tk)−f(tk−1))/(tk−tk−1)s_k = (f(t_k) - f(t_{k-1}))/(t_k - t_{k-1}) とし、

g(x)=f(a)+s1ReLU⁡(x−t0)+∑k=1N−1(sk+1−sk)ReLU⁡(x−tk)g(x) = f(a) + s_1\operatorname{ReLU}(x - t_0) + \sum_{k=1}^{N-1}(s_{k+1} - s_k)\operatorname{ReLU}(x - t_k)

と定めると、gg は ff の折れ線補間(g(tk)=f(tk)g(t_k) = f(t_k) で、各 [tk−1,tk][t_{k-1}, t_k] 上で 1 次式)であり、sup⁡x∈[a,b]∣f(x)−g(x)∣<ε\sup_{x \in [a, b]}\lvert f(x) - g(x) \rvert < \varepsilon。gg は隠れユニット NN 個の 2 層の ReLU ネットワークである。

証明. δ\delta の存在はハイネ–カントールの定理(01-calculus 第3章 定理 3.25)による。x∈[tj−1,tj]x \in [t_{j-1}, t_j] なら、k≤j−1k \leq j - 1 で ReLU⁡(x−tk)=x−tk\operatorname{ReLU}(x - t_k) = x - t_k、k≥jk \geq j で ReLU⁡(x−tk)=0\operatorname{ReLU}(x - t_k) = 0 なので、g(x)=f(a)+s1(x−t0)+∑k=1j−1(sk+1−sk)(x−tk)g(x) = f(a) + s_1(x - t_0) + \sum_{k=1}^{j-1}(s_{k+1} - s_k)(x - t_k) は [tj−1,tj][t_{j-1}, t_j] 上で傾き s1+∑k=1j−1(sk+1−sk)=sjs_1 + \sum_{k=1}^{j-1}(s_{k+1} - s_k) = s_j の 1 次式である。g(t0)=f(a)g(t_0) = f(a) と g(tj)=g(tj−1)+sj(tj−tj−1)g(t_j) = g(t_{j-1}) + s_j(t_j - t_{j-1}) から、帰納法で g(tj)=f(tj)g(t_j) = f(t_j)。よって λ=(tj−x)/(tj−tj−1)∈[0,1]\lambda = (t_j - x)/(t_j - t_{j-1}) \in [0, 1] とおくと g(x)=λf(tj−1)+(1−λ)f(tj)g(x) = \lambda f(t_{j-1}) + (1 - \lambda)f(t_j) であり、∣x−tj−1∣,∣x−tj∣≤δ\lvert x - t_{j-1} \rvert, \lvert x - t_j \rvert \leq \delta より

∣f(x)−g(x)∣≤λ∣f(x)−f(tj−1)∣+(1−λ)∣f(x)−f(tj)∣<ε\lvert f(x) - g(x) \rvert \leq \lambda\lvert f(x) - f(t_{j-1}) \rvert + (1 - \lambda)\lvert f(x) - f(t_j) \rvert < \varepsilon

gg は重み 11、バイアス −tk-t_k の隠れユニット(k=0,…,N−1k = 0, \dots, N - 1)を、出力の重み s1,s2−s1,…,sN−sN−1s_1, s_2 - s_1, \dots, s_N - s_{N-1} と出力のバイアス f(a)f(a) で足したものである。□\square

折れ目 1 つが隠れユニット 1 つに対応する。ff がリプシッツ連続(∣f(x)−f(x′)∣≤M∣x−x′∣\lvert f(x) - f(x') \rvert \leq M\lvert x - x' \rvert)なら、等間隔の分点で N≥M(b−a)/(2ε)N \geq M(b - a)/(2\varepsilon) とすれば誤差は ε\varepsilon 以下になる(問題 5.5)。同じ格子の考え方を dd 次元で使うと格子点はおよそ ε−d\varepsilon^{-d} 個で、次元とともに急増する。一方、層を重ねると少ないユニットで表せる関数もある(問題 5.6)。

5.8 畳み込みニューラルネットワーク(紹介)

256×256256 \times 256 画素のカラー画像では d0=196608d_0 = 196608 で、全結合の層は 1 層だけで巨大になる。また、画像の中の猫を見分ける特徴は、猫がどこに写っていても同じはずである。この 2 点を組み込んだのが畳み込み層である。

定義 5.20(畳み込み層) 1 次元の入力 x∈Rnx \in \mathbb{R}^n とカーネル w∈Rkw \in \mathbb{R}^k について (w⋆x)i=∑j=1kwjxi+j−1(w \star x)_i = \sum_{j=1}^{k}w_jx_{i+j-1}(i=1,…,n−k+1i = 1, \dots, n - k + 1)とする。CC チャンネルの 2 次元の入力 X∈RC×n1×n2X \in \mathbb{R}^{C \times n_1 \times n_2} には、カーネル K∈RC′×C×k×kK \in \mathbb{R}^{C' \times C \times k \times k} とバイアス b∈RC′b \in \mathbb{R}^{C'} で

Zc′,i,j=∑c=1C∑p=1k∑q=1kKc′,c,p,q Xc,i+p−1,j+q−1+bc′Z_{c', i, j} = \sum_{c=1}^{C}\sum_{p=1}^{k}\sum_{q=1}^{k}K_{c', c, p, q}\,X_{c, i+p-1, j+q-1} + b_{c'}

を出力する。これに活性化関数を施したものを畳み込み層 (convolutional layer) という。

数学の畳み込みは ww を反転して掛けるが、学習するカーネルを読み替えるだけなので、深層学習ではこの形を畳み込みと呼ぶ。x↦w⋆xx \mapsto w \star x は、各行に同じ w1,…,wkw_1, \dots, w_k が 1 つずつずれて並ぶ帯行列の線形写像で(パラメータの共有)、出力の各成分は近くの kk 個の入力だけで決まる(局所性)。3×33 \times 3 のカーネルで 64 チャンネルを 64 チャンネルに写す層のパラメータは 64⋅64⋅9+64=3692864 \cdot 64 \cdot 9 + 64 = 36928 個で、画像の大きさによらない(32×3232 \times 32 の画像で同じ大きさの出力を全結合で作ると、重みだけで (32⋅32⋅64)2≈4.3×109(32 \cdot 32 \cdot 64)^2 \approx 4.3 \times 10^9 個)。

命題 5.21(平行移動の同変性)添字を Z/nZ\mathbb{Z}/n\mathbb{Z} で考え、(w⊛x)i=∑j=1kwjxi+j−1(w \circledast x)_i = \sum_{j=1}^{k}w_jx_{i+j-1}(巡回畳み込み)、(τx)i=xi−1(\tau x)_i = x_{i-1} とすると、w⊛(τx)=τ(w⊛x)w \circledast (\tau x) = \tau(w \circledast x) である。成分ごとの活性化関数も ϕ(τx)=τϕ(x)\phi(\tau x) = \tau\phi(x) を満たすので、巡回畳み込みと活性化関数を何層重ねても平行移動と可換である。

証明. (w⊛τx)i=∑jwjxi+j−2=(w⊛x)i−1=(τ(w⊛x))i(w \circledast \tau x)_i = \sum_jw_jx_{i+j-2} = (w \circledast x)_{i-1} = (\tau(w \circledast x))_i。□\square

最後に位置について平均や最大値をとれば(プーリング)、位置によらない特徴量が得られる。

5.9 注意機構とトランスフォーマー(紹介)

文章の続きを予測するには、離れた位置の単語どうしの関係を使う必要がある。注意機構 (attention) では、各位置が系列のすべての位置を直接参照し、どこをどれだけ参照するかを入力に応じて決める。

定義 5.22(自己注意, self-attention)TT 個のトークンのベクトルを行に並べた X∈RT×dX \in \mathbb{R}^{T \times d} と、パラメータ WQ,WK∈Rd×dkW_Q, W_K \in \mathbb{R}^{d \times d_k}, WV∈Rd×dvW_V \in \mathbb{R}^{d \times d_v} に対し、Q=XWQQ = XW_Q、K=XWKK = XW_K、V=XWVV = XW_V として

Attn⁡(X)=softmax⁡(QK⊤dk)V∈RT×dv\operatorname{Attn}(X) = \operatorname{softmax}\left(\frac{QK^{\top}}{\sqrt{d_k}}\right)V \in \mathbb{R}^{T \times d_v}

と定める(softmax は行ごと)。Q,K,VQ, K, V の第 tt 行 qt⊤,kt⊤,vt⊤q_t^{\top}, k_t^{\top}, v_t^{\top} をクエリ、キー、バリューという。

出力の第 tt 行は ∑sαtsvs\sum_s\alpha_{ts}v_s、αts=exp⁡(qt⊤ks/dk)/∑s′exp⁡(qt⊤ks′/dk)\alpha_{ts} = \exp(q_t^{\top}k_s/\sqrt{d_k})/\sum_{s'}\exp(q_t^{\top}k_{s'}/\sqrt{d_k}) で、全位置のバリューの重みつき平均であり、重みは「tt のクエリと ss のキーの内積(似ている度合い)」で決まる。全結合層や畳み込み層の重みは学習後は固定だが、αts\alpha_{ts} は入力ごとに変わる。

命題 5.23(自己注意の性質)

  1. (並べ替えの同変性)TT 次の置換行列 PP について Attn⁡(PX)=PAttn⁡(X)\operatorname{Attn}(PX) = P\operatorname{Attn}(X)。
  2. (dk\sqrt{d_k} で割る理由)q,k∈Rdkq, k \in \mathbb{R}^{d_k} の 2dk2d_k 個の成分が独立で平均 00、分散 11 ならば、E[q⊤k]=0E[q^{\top}k] = 0、Var⁡(q⊤k)=dk\operatorname{Var}(q^{\top}k) = d_k。

証明. (1) Q,K,VQ, K, V は PQ,PK,PVPQ, PK, PV になり、(PQ)(PK)⊤=PQK⊤P⊤(PQ)(PK)^{\top} = PQK^{\top}P^{\top}。行と列を同じ置換で並べ替えてから行ごとに softmax をとるのは、softmax の後で並べ替えるのと同じなので、M=QK⊤/dkM = QK^{\top}/\sqrt{d_k} として softmax⁡(PMP⊤)=Psoftmax⁡(M)P⊤\operatorname{softmax}(PMP^{\top}) = P\operatorname{softmax}(M)P^{\top}。P⊤P=IP^{\top}P = I より Attn⁡(PX)=Psoftmax⁡(M)V=PAttn⁡(X)\operatorname{Attn}(PX) = P\operatorname{softmax}(M)V = P\operatorname{Attn}(X)。(2) E[qiki]=0E[q_ik_i] = 0 で、i≠ji \neq j なら E[qikiqjkj]=0E[q_ik_iq_jk_j] = 0 なので Var⁡(∑iqiki)=∑iE[qi2]E[ki2]=dk\operatorname{Var}(\sum_iq_ik_i) = \sum_iE[q_i^2]E[k_i^2] = d_k。□\square

(2) から、dk\sqrt{d_k} で割らないと内積が dk\sqrt{d_k} の程度の大きさになって softmax が飽和し、勾配が小さくなる。(1) から自己注意はトークンの順序を見ないので、位置を表すベクトルを加えるなどして位置の情報を与える。トランスフォーマー (transformer。ヴァスワニら 2017) は、注意を HH 個並べて出力を連結し、行列を掛ける層(マルチヘッド注意)と、各トークンに同じ 2 層の多層パーセプトロンを施す層を、残差接続と層正規化でつないだブロックを積み重ねる。文章の生成では、未来の位置を参照しないよう s>ts > t の qt⊤ksq_t^{\top}k_s を −∞-\infty に置き換えてから softmax をとる(因果マスク)。QK⊤QK^{\top} は T×TT \times T 行列なので、そのまま計算すると計算量と記憶領域は系列の長さの 2 乗に比例する。

注意

注意の重み αts\alpha_{ts} は途中の量であり、そのまま「モデルが予測の根拠にした場所」とは限らない。また学習時に因果マスクを入れ忘れると、モデルは予測すべき未来のトークンを見て当てるので、訓練の損失は非常に小さいのに生成では役に立たない(第1章 1.8 節のデータ漏洩と同じ構造である)。

まとめ

  • 多層パーセプトロンは 1 次式と活性化関数の合成で、活性化関数が 1 次式なら線形モデルに戻る。経験リスクは一般に凸でない。
  • 誤差逆伝播法:誤差は δ(l)=ϕ′(z(l))⊙(W(l+1)⊤δ(l+1))\delta^{(l)} = \phi'(z^{(l)}) \odot (W^{(l+1)\top}\delta^{(l+1)}) で後ろから求まり、∂J/∂W(l)=δ(l)h(l−1)⊤\partial J/\partial W^{(l)} = \delta^{(l)}h^{(l-1)\top}、∂J/∂b(l)=δ(l)\partial J/\partial b^{(l)} = \delta^{(l)}。実装は数値微分と比べて確かめる。
  • 自動微分の後ろ向きモードは、スカラー値関数の勾配の全成分を関数の評価の定数倍の手間で求める(入力の次元によらない)。前向きモードと数値微分の手間は入力の次元に比例する。
  • 勾配は行列の積で伝わるので、層の数について指数的に消失・爆発しうる。シグモイドの微分は 1/41/4 以下である。対策は ReLU、初期化、正規化、残差接続、勾配クリッピングなど。
  • 同じ値の初期化では対称性が崩れない。前活性の分散を保つ条件は、ReLU で vl=2/dl−1v_l = 2/d_{l-1}(He)、tanh⁡\tanh で近似的に 1/dl−11/d_{l-1}(折衷が Xavier の 2/(dl−1+dl)2/(d_{l-1} + d_l))である。
  • 万能近似定理:連続な活性化関数について、隠れ層 1 つのネットワークがコンパクト集合上の任意の連続関数を一様に近似できることと、活性化関数が多項式でないことは同値である。存在を述べるだけで、必要な幅や学習・汎化については何も言わない。
  • 畳み込み層はパラメータの共有と局所性をもち、平行移動と可換である。自己注意は入力から決まる重みでバリューを平均し、トークンの並べ替えと可換なので、位置の情報を別に与える。

演習問題

問題 5.1 ★★ 2 値分類で出力を p=σ(z)p = \sigma(z)(z=z(L)∈Rz = z^{(L)} \in \mathbb{R})とする。損失が (a) 二乗損失 12(p−y)2\frac{1}{2}(p - y)^2、(b) 交差エントロピー −ylog⁡p−(1−y)log⁡(1−p)-y\log p - (1 - y)\log(1 - p) のそれぞれについて δ(L)=∂J/∂z\delta^{(L)} = \partial J/\partial z を求め、y=1y = 1、z=−10z = -10(自信をもって間違えている)のときの値を比べよ。分類で (b) を使う理由を述べよ。

解答

dp/dz=p(1−p)dp/dz = p(1 - p) より、(a) δ(L)=(p−y)p(1−p)\delta^{(L)} = (p - y)p(1 - p)、(b) δ(L)=−ypp(1−p)+1−y1−pp(1−p)=p−y\delta^{(L)} = -\frac{y}{p}p(1 - p) + \frac{1 - y}{1 - p}p(1 - p) = p - y。z=−10z = -10 では p≈4.54×10−5p \approx 4.54 \times 10^{-5} で、(a) は約 −4.54×10−5-4.54 \times 10^{-5}、(b) は約 −1-1。(a) では出力の飽和で p(1−p)p(1 - p) が小さく、大きく間違えているのに勾配がほぼ 00 で学習が進まない。(b) では σ′\sigma' の因子が打ち消され、誤り p−yp - y がそのまま勾配になる。

問題 5.2 ★★ f(x)=log⁡∑i=1nexif(x) = \log\sum_{i=1}^{n}e^{x_i} を ui=exiu_i = e^{x_i}、s=u1+⋯+uns = u_1 + \cdots + u_n、f=log⁡sf = \log s と計算する。後ろ向きモードで ∇f\nabla f を求めてソフトマックス関数になることを確かめ、前向きモード(nn 方向)と後ろ向きモードの基本演算の回数が nn についてどの程度かを答えよ。

解答

fˉ=1\bar{f} = 1 から sˉ=1/s\bar{s} = 1/s、和の各引数への局所的な偏微分は 11 なので uˉi=1/s\bar{u}_i = 1/s、exp⁡\exp の局所的な偏微分は uiu_i なので xˉi=ui/s=exi/∑jexj=softmax⁡(x)i\bar{x}_i = u_i/s = e^{x_i}/\sum_je^{x_j} = \operatorname{softmax}(x)_i。関数の評価は約 2n2n 回で、後ろ向きモードは除算 1 回と乗算 nn 回を加えて約 3n3n 回(nn に比例)。前向きモードは 1 方向ごとに nn に比例する手間で、nn 方向では n2n^2 に比例する。

問題 5.3 ★★ 隠れ層 1 つ(L=2L = 2)の多層パーセプトロンを、重みとバイアスをすべて 00 にして勾配降下法で学習する。活性化関数が (a) ReLU(ϕ′(0)=0\phi'(0) = 0 と約束する)、(b) σ\sigma のとき、それぞれ何が起こるか。

解答

はじめ z(1)=0z^{(1)} = 0、h(1)=ϕ(0)1h^{(1)} = \phi(0)\mathbf{1} で、W(2)=0W^{(2)} = 0 より δ(1)=0\delta^{(1)} = 0 なので、W(1),b(1)W^{(1)}, b^{(1)} の勾配は 00。(a) h(1)=0h^{(1)} = 0 なので W(2)W^{(2)} の勾配 δ(2)h(1)⊤\delta^{(2)}h^{(1)\top} も 00 で、b(2)b^{(2)} だけが更新される。更新後も他は 00 のままなので同じことが繰り返され、ネットワークはいつまでも定数を出力する。(b) h(1)=121h^{(1)} = \frac{1}{2}\mathbf{1} で、W(2)W^{(2)} の勾配はすべての列が等しいので W(2)W^{(2)} は動くが、命題 5.15 の仮定がすべてのユニットの組で成り立ち続け、隠れユニットはいつまでも互いに等しい。どちらも、幅をいくら大きくしても実質的に隠れユニット 1 個以下のネットワークにしかならない。

問題 5.4 ★★ ReLU のネットワークで勾配確認(h=10−5h = 10^{-5} の中心差分)をしたところ、ほとんどの成分は 10−910^{-9} 程度の差で一致したが、1 つの成分だけ逆伝播の値が 00、数値微分の値が 0.310.31 だった。考えられる原因と確かめ方を述べよ。

解答

そのパラメータにつながるユニットの前活性 zz が(そのデータで)00 の近くにあり、逆伝播では ϕ′(z)=0\phi'(z) = 0 とされたが、パラメータを ±h\pm h 動かすと zz が 00 をまたぎ、片方でだけ ReLU が働いたと考えられる。中心差分は折れ目の両側の傾きの平均に近い値を返すので、片側の傾きを返す逆伝播と食い違う。各前活性の絶対値が hh に比べて小さくないかを調べる、hh を変えて差分の値が大きく変わるかを見る、入力を少しずらして食い違いが消えるかを見る、などで確かめる。すべての前活性が 00 から十分離れているのに食い違うなら、実装の誤りを疑う。

問題 5.5 ★★ 定理 5.19 で ff が ∣f(x)−f(x′)∣≤M∣x−x′∣\lvert f(x) - f(x') \rvert \leq M\lvert x - x' \rvert を満たし、分点が等間隔(間隔 h=(b−a)/Nh = (b - a)/N)ならば、sup⁡x∈[a,b]∣f(x)−g(x)∣≤Mh/2\sup_{x \in [a, b]}\lvert f(x) - g(x) \rvert \leq Mh/2 であることを示せ。

解答

x∈[tk−1,tk]x \in [t_{k-1}, t_k]、u=x−tk−1u = x - t_{k-1}、λ=1−u/h\lambda = 1 - u/h とすると、定理 5.19 の証明より

∣f(x)−g(x)∣≤h−uhMu+uhM(h−u)=2Mhu(h−u)≤2Mh⋅h24=Mh2\lvert f(x) - g(x) \rvert \leq \frac{h - u}{h}Mu + \frac{u}{h}M(h - u) = \frac{2M}{h}u(h - u) \leq \frac{2M}{h} \cdot \frac{h^2}{4} = \frac{Mh}{2}

したがって N≥M(b−a)/(2ε)N \geq M(b - a)/(2\varepsilon) なら誤差は ε\varepsilon 以下である。たとえば f=sin⁡f = \sin を [0,π][0, \pi] で N=10N = 10 等分すると上界は π/20≈0.157\pi/20 \approx 0.157 で、実際の誤差は約 0.01220.0122 である。

問題 5.6 ★★★(深さの効果)T(x)=2ReLU⁡(x)−4ReLU⁡(x−1/2)T(x) = 2\operatorname{ReLU}(x) - 4\operatorname{ReLU}(x - 1/2) とする。(1) [0,1][0, 1] 上で TT は「x≤1/2x \leq 1/2 で 2x2x、x≥1/2x \geq 1/2 で 2−2x2 - 2x」であり、kk 回の合成 T∘kT^{\circ k} は [0,1][0, 1] を 2k2^k 等分した各区間で 1 次式で、隣り合う区間で傾きが異なることを示せ。(2) T∘kT^{\circ k} は幅 2、隠れ層 kk 個の ReLU ネットワークで表せることを示せ。(3) 隠れ層 1 つ・隠れユニット NN 個の ReLU ネットワーク g(x)=c0+∑i=1NciReLU⁡(wix+bi)g(x) = c_0 + \sum_{i=1}^{N}c_i\operatorname{ReLU}(w_ix + b_i) は R\mathbb{R} を高々 N+1N + 1 個の区間に分けて各区間で 1 次式であることを示し、[0,1][0, 1] 上で T∘kT^{\circ k} に等しい gg には N≥2k−1N \geq 2^k - 1 が必要であることを結論せよ。

解答

(1) 前半は x≤1/2x \leq 1/2 で ReLU⁡(x−1/2)=0\operatorname{ReLU}(x - 1/2) = 0 であることから従う。TT は [0,1/2][0, 1/2] と [1/2,1][1/2, 1] をそれぞれ [0,1][0, 1] に 1 次式で全単射に写す。「T∘kT^{\circ k} は長さ 2−k2^{-k} の 2k2^k 個の区間で傾き ±2k\pm 2^k の 1 次式で、傾きの符号は交互」を帰納法で示す。T∘(k+1)(x)T^{\circ(k+1)}(x) は [0,1/2][0, 1/2] で T∘k(2x)T^{\circ k}(2x)、[1/2,1][1/2, 1] で T∘k(2−2x)T^{\circ k}(2 - 2x) である。前者は T∘kT^{\circ k} のグラフを横に半分に縮めたもので、長さ 2−k−12^{-k-1} の 2k2^k 個の区間で傾き ±2k+1\pm 2^{k+1}(符号は交互)、後者はそれを x=1/2x = 1/2 について折り返したものである。x=1/2x = 1/2 の両側の区間は互いの鏡像なので傾きの符号が逆で、全体でも交互になる。

(2) 第 1 隠れ層を h1=ReLU⁡(x)h_1 = \operatorname{ReLU}(x)、h2=ReLU⁡(x−1/2)h_2 = \operatorname{ReLU}(x - 1/2) とすると T(x)=2h1−4h2T(x) = 2h_1 - 4h_2 は hh の 1 次式なので、次の層の前活性を (2h1−4h2,2h1−4h2−1/2)(2h_1 - 4h_2, 2h_1 - 4h_2 - 1/2) とすれば ReLU⁡(T(x))\operatorname{ReLU}(T(x))、ReLU⁡(T(x)−1/2)\operatorname{ReLU}(T(x) - 1/2) が得られる。これを kk 回繰り返し、出力を 2h1−4h22h_1 - 4h_2 とすればよい。

(3) wi≠0w_i \neq 0 のユニットは x=−bi/wix = -b_i/w_i の 1 点でだけ折れ、wi=0w_i = 0 のユニットは定数である。高々 NN 個の折れ目で R\mathbb{R} を高々 N+1N + 1 個の区間に分けると、各区間で gg は 1 次式の和なので 1 次式である。[0,1][0, 1] 上で g=T∘kg = T^{\circ k} なら、(1) の区間の境目 2k−12^k - 1 個ではすべて傾きが変わるので、それらはすべて gg の折れ目であり、N≥2k−1N \geq 2^k - 1。深さ kk なら隠れユニット 2k2k 個で表せる関数が、隠れ層 1 つでは 2k−12^k - 1 個以上を要する。

この章を読み終えたら

「読了」にすると、学習記録と地図に反映されます。

この章の誤りを報告GitHub で見る