本ページは 多層パーセプトロン(Multi-Layer Perceptron)を多角的に解説します。 上のチップは、 検索・関連語の手がかりです。
MLP(多層パーセプトロン、 Multi-Layer Perceptron)は、 深層学習の最も基本的な構造。 Rumelhart, Hinton らによる誤差逆伝播法(1986)で実用化され、 2010 年代の深層学習革命の礎になりました。 CNN や Transformer などの最新モデルも、 内部には MLP を多用しています。
MLP の構造:
各層の各ニューロンは 前の層の全ニューロンと結合(fully connected)。 中間層の存在により、 直線では分離できないパターンも学習可能。
普遍近似定理(Cybenko 1989, Hornik 1991):1 つの隠れ層を持つ MLP で、 任意の連続関数を任意の精度で近似できる。 ただし「必要なニューロン数は無限大かも」という条件付き。 実用上は深く(多層に)するほうが効率的(深層学習の理論的根拠)。
L 層 MLP の順伝播:
誤差逆伝播の核:
例:MNIST 手書き数字認識の典型 MLP 構成
| 層 | ニューロン数 | 活性化 | パラメータ数 |
|---|---|---|---|
| 入力 | 784 (28×28) | − | 0 |
| 隠れ層 1 | 256 | ReLU | 784×256+256 = 200,960 |
| 隠れ層 2 | 128 | ReLU | 256×128+128 = 32,896 |
| 出力 | 10 | Softmax | 128×10+10 = 1,290 |
| 合計 | パラメータ数 ≈ 235,000 | ||
このシンプル構成で MNIST テスト精度 98% 以上。
最小コードで動かしてみる例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import torch import torch.nn as nn class MLP(nn.Module): def __init__(self): super().__init__() self.net = nn.Sequential( nn.Linear(784, 256), nn.ReLU(), nn.Linear(256, 128), nn.ReLU(), nn.Linear(128, 10), ) def forward(self, x): return self.net(x) model = MLP() |