← 機械学習テキスト 一覧

🎓 レベル:基礎 | 重要度:A(必須)

📎 前提:ロジスティック回帰(1ニューロンの原型) | 学習エンジン:勾配降下法

要点(BLUF)

1. パーセプトロン:1個のニューロン

パーセプトロンは、入力 x=(x1,,xd)x = (x_1,\dots,x_d)^\top に重み ww を掛けて足し、バイアス bb を加え、活性化関数 ϕ\phi に通すだけのモデルです。

y^=ϕ(wx+b)=ϕ ⁣(j=1dwjxj+b)\hat y = \phi(w^\top x + b) = \phi\!\left(\sum_{j=1}^{d} w_j x_j + b\right)

ここで wx+bw^\top x + b重み付き和(あるいはプレ活性, pre-activation) と呼びます。ϕ\phi が出力の形を決めます。

flowchart LR
    X1["x1"] --> S(("Σ"))
    X2["x2"] --> S
    X3["x3"] --> S
    B["バイアス b"] --> S
    S --> Z["重み付き和 z = wᵀx + b"]
    Z --> A["活性化 φ(z)"]
    A --> Y["出力 ŷ"]

ロジスティック回帰との対応

活性化 ϕ\phi にシグモイド σ(z)=11+ez\sigma(z) = \dfrac{1}{1+e^{-z}} を選ぶと、

y^=σ(wx+b)\hat y = \sigma(w^\top x + b)

これはロジスティック回帰そのものです。つまり1ニューロンのニューラルネットは、見慣れた線形分類器の言い換えにすぎません。

2. 単層の限界:XOR問題

単層パーセプトロン(入力 → 出力の1段だけ)が表せる決定境界は、wx+b=0w^\top x + b = 0 という1本の超平面です。したがって線形分離可能な問題しか解けません

線形分離可能とは「2クラスを1本の直線(高次元なら超平面)でスパッと分けられる」状態のことです。AND・OR はこれを満たすので単層で解けます。ところが XOR(排他的論理和) は満たしません。

x1x_1x2x_2XOR
000
011
101
110

クラス1の点 (0,1),(1,0)(0,1),(1,0) とクラス0の点 (0,0),(1,1)(0,0),(1,1) は、1本の直線では決して分離できません(どう引いても片側に両クラスが混ざる)。これを XOR問題 と呼びます。

graph TD
    subgraph XOR["XOR: 1本の直線では分離不可能(線形分離不可能)"]
        P00["(0,0) → 0"]
        P11["(1,1) → 0"]
        P01["(0,1) → 1"]
        P10["(1,0) → 1"]
    end
    note["どこに直線を引いても<br/>クラス0とクラス1が同じ側に混ざる"]

Minsky & Papert は著書『Perceptrons』(1969)でこの限界を数学的に証明しました。「単層パーセプトロンには本質的な壁がある」という結論が、ニューラルネット研究の停滞(第一次AI冬の時代)を招きます。

3. 多層パーセプトロン(MLP):隠れ層で壁を越える

XOR を解く鍵は、入力と出力の間に 隠れ層(hidden layer) を挟むことです。隠れ層が入力を別の空間に非線形変換し、その空間で線形分離可能にしてしまう。これが MLP の核心です。

LL 層の MLP は、層ごとに「線形変換 → 活性化」を繰り返します。第 ll 層の出力(隠れ表現)を h(l)h^{(l)} とすると、

h(l)=ϕ ⁣(W(l)h(l1)+b(l)),h(0)=xh^{(l)} = \phi\!\left(W^{(l)} h^{(l-1)} + b^{(l)}\right), \qquad h^{(0)} = x

ここで W(l)W^{(l)} は第 ll 層の重み行列、b(l)b^{(l)} はバイアスベクトル、ϕ\phi は要素ごとに作用する活性化関数です。最終層 h(L)h^{(L)} が予測 y^\hat y になります。

graph LR
    subgraph Input["入力層"]
        I1["x1"]
        I2["x2"]
    end
    subgraph Hidden["隠れ層 h⁽¹⁾ = φ(W⁽¹⁾x + b⁽¹⁾)"]
        H1["h1"]
        H2["h2"]
    end
    subgraph Output["出力層 ŷ = φ(W⁽²⁾h + b⁽²⁾)"]
        O1["ŷ"]
    end
    I1 --> H1
    I1 --> H2
    I2 --> H1
    I2 --> H2
    H1 --> O1
    H2 --> O1

なぜ隠れ層で非線形が表せるのか

ポイントは活性化関数 ϕ\phi が非線形であることです。隠れ層が新しい特徴 h1,h2h_1, h_2 を作り、出力層はその新しい特徴空間で線形分離します。XOR なら、たとえば隠れユニットに「OR」と「NAND」を学習させ、出力層でそれらの「AND」を取れば XOR が組めます(XOR=ORNAND\text{XOR} = \text{OR} \wedge \text{NAND})。

4. 万能近似定理(Universal Approximation Theorem)

MLP の表現力を保証するのが 万能近似定理 です。直感的には「隠れ層が1枚あって、ユニットを十分たくさん並べれば、どんな連続関数でも好きなだけ正確に真似できる」という主張です。

Cybenko(1989) の定理(おおよその形):

KRnK \subset \mathbb{R}^n をコンパクト集合、f:KRf: K \to \mathbb{R} を任意の連続関数、ϕ\phi をシグモイド型(非多項式)の活性化関数とする。任意の ε>0\varepsilon > 0 に対し、適切な有限個のユニット数 NN と重み wi,biw_i, b_i、係数 αi\alpha_i を選べば、1隠れ層ネットワーク g(x)=i=1Nαiϕ(wix+bi)g(x) = \sum_{i=1}^{N} \alpha_i\, \phi(w_i^\top x + b_i)supxKf(x)g(x)<ε\displaystyle \sup_{x \in K} |f(x) - g(x)| < \varepsilon を満たす。

歴史的には Cybenko(シグモイド、Hahn–Banach の定理を使った証明)、Hornik–Stinchcombe–White(1989)Funahashi(1989) がほぼ同時に独立に示しました。さらに Hornik(1991) は「鍵は活性化関数の具体的な選び方ではなく、多層フィードフォワードという構造そのものにある」ことを示しています(非多項式なら何でもよい)。

「広さ」だけでなく「深さ」も効く(深さの効率)

1隠れ層で十分という定理は存在の保証であって、効率(必要ユニット数)の保証ではありません。実は同じ関数を表すのに、

Telgarsky(2015〜16) は、深さ O(L)O(L)・幅一定の ReLU ネットなら表せる「のこぎり波(sawtooth)」関数を、浅い(深さ2の)ネットで近似しようとすると幅が LL について指数的に必要になる、という深さ分離(depth separation) を構成的に示しました。

graph TD
    UAT["万能近似定理: 1隠れ層 + 十分なユニット → 任意の連続関数を近似可能"]
    UAT --> E["存在の保証であって…"]
    E --> N1["どれだけのユニット数が要るかは言わない"]
    E --> N2["勾配降下で重みを見つけられるかは言わない"]
    E --> N3["未知データへの汎化は言わない"]
    UAT --> D["深さの効率: 深く積むと同じ関数を少ないユニットで表せる(Telgarsky)"]

5. ⚠️ よくある誤解・落とし穴

まとめ

パーセプトロンはロジスティック回帰を「ニューロン」として捉え直したもので、単層では線形分離可能な問題(XOR が反例)しか解けません。隠れ層を挟んだ MLP は非線形変換を重ねて表現力と特徴の自動学習を獲得し、万能近似定理がその表現力を理論的に裏付けます。ただし定理は「存在」の保証であって、「勾配降下で学習できる」「汎化する」は別問題。次は、その重みを実際に決める仕組み=誤差逆伝播法へ進みます。


対応するシミュレーション

simulations/perceptron_xor.py:単層パーセプトロンの学習則を手実装し、(1) 線形分離できる2クラス(正解率1.0で成功)、(2) XOR(最良の直線でも上限 3/4=0.753/4=0.75 で失敗)、(3) 隠れ層ありのMLP(XORを正解率1.0で解決)を比較します。1本の直線では XOR を分けられないが、層を重ねると非線形の境界を引けて解ける、という「層を重ねる意味」の最小実例です(学習は 誤差逆伝播法)。

パーセプトロンはXOR不可・MLPは可

関連ノート