論文一覧に戻る 📚 用語集トップ 🗺 概念マップ
📚 用語解説
📚 用語解説
多層パーセプトロン
Multi-Layer Perceptron
深層学習
別称: MLP

🔖 キーワード索引

多層パーセプトロンMulti-Layer Perceptron深層学習MLP

本ページは 多層パーセプトロン(Multi-Layer Perceptron)を多角的に解説します。 上のチップは、 検索・関連語の手がかりです。

💡 30秒で分かる結論

📍 文脈 — どこで使う概念か

MLP(多層パーセプトロン、 Multi-Layer Perceptron)は、 深層学習の最も基本的な構造。 Rumelhart, Hinton らによる誤差逆伝播法(1986)で実用化され、 2010 年代の深層学習革命の礎になりました。 CNN や Transformer などの最新モデルも、 内部には MLP を多用しています。

🎨 直感で掴む — 具体例で理解する

MLP の構造:

  1. 入力層:特徴量を受け取る
  2. 隠れ層(1 層以上):非線形変換
  3. 出力層:予測値を出す

各層の各ニューロンは 前の層の全ニューロンと結合(fully connected)。 中間層の存在により、 直線では分離できないパターンも学習可能。

普遍近似定理(Cybenko 1989, Hornik 1991):1 つの隠れ層を持つ MLP で、 任意の連続関数を任意の精度で近似できる。 ただし「必要なニューロン数は無限大かも」という条件付き。 実用上は深く(多層に)するほうが効率的(深層学習の理論的根拠)。

📐 定義・数式

L 層 MLP の順伝播:

【順伝播】
$$\mathbf{a}^{(l)} = \phi^{(l)}\!\left( W^{(l)} \mathbf{a}^{(l-1)} + \mathbf{b}^{(l)} \right)$$
$\mathbf{a}^{(0)} = \mathbf{x}$(入力)、 $\mathbf{a}^{(L)}$ = 出力

誤差逆伝播の核:

【勾配の連鎖律】
$$\delta^{(l)} = (W^{(l+1)})^\top \delta^{(l+1)} \odot \phi'(\mathbf{z}^{(l)})$$
$\delta$ = 各層の誤差信号、 $\odot$ = アダマール積

🔬 記号・要素の読み解き

$W^{(l)}$
第 $l$ 層の重み行列(前層 × 当層)
$\mathbf{b}^{(l)}$
第 $l$ 層のバイアスベクトル
$\phi^{(l)}$
第 $l$ 層の活性化関数(ReLU が多い)
$\mathbf{a}^{(l)}$
第 $l$ 層の出力(活性)
$\delta^{(l)}$
誤差信号。 逆伝播で計算
普遍近似定理
1 隠れ層で任意の連続関数を近似可能(ただし広く必要)

🧮 数値例・実値計算

例:MNIST 手書き数字認識の典型 MLP 構成

ニューロン数活性化パラメータ数
入力784 (28×28)0
隠れ層 1256ReLU784×256+256 = 200,960
隠れ層 2128ReLU256×128+128 = 32,896
出力10Softmax128×10+10 = 1,290
合計パラメータ数 ≈ 235,000

このシンプル構成で MNIST テスト精度 98% 以上。

🐍 Python 実装例

最小コードで動かしてみる例:

 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()

⚠️ よくある落とし穴

❌ 過学習
パラメータが多いと訓練データを暗記。 Dropout, Weight Decay, Early Stopping で対処。
❌ 勾配消失 / 爆発
深すぎる MLP では勾配が消失または爆発。 ReLU, Batch Norm, 残差接続で対処。
❌ 初期化
全部 0 で初期化すると学習が進まない。 Xavier / He 初期化を使う。
❌ 学習率設定
大きすぎると発散、 小さすぎると遅い。 Adam が標準。
❌ 「深くすれば良い」幻想
深さを増やすと表現力は上がるが、 過学習と学習困難も増える。 タスクに応じて。