ニューラルネットワーク基礎

多層パーセプトロン たそうぱーせぷとろん

多層パーセプトロンMLP全結合層フィードフォワードニューラルネットワーク
多層パーセプトロンについて教えて

簡単に言うとこんな感じ!

パーセプトロンを複数の層に積み重ねて、非線形な問題も解けるようにしたモデルだよ。「全結合ネットワーク」とも呼ばれ、ニューラルネットワークの最も基本的な構成。隠れ層と活性化関数を組み合わせることで、XOR問題のような複雑なパターンも学習できるんだ!


多層パーセプトロンとは

多層パーセプトロン(MLP:Multi-Layer Perceptron)は、入力層・1つ以上の隠れ層・出力層から構成されるニューラルネットワークです。全層が完全に接続(全結合)されているため、フィードフォワードネットワーク全結合ネットワークとも呼ばれます。


単純パーセプトロンとの違い

単純パーセプトロン(1層):
  入力 → [線形変換] → 出力
  → 線形分離可能な問題しか解けない

多層パーセプトロン(複数層):
  入力 → [線形変換+活性化] → [線形変換+活性化] → 出力
  → 非線形な複雑なパターンを表現できる

非線形性の重要性

活性化関数がなければ多層にする意味がない

活性化関数なしで2層にした場合:
  y = W₂(W₁x + b₁) + b₂
    = (W₂W₁)x + (W₂b₁ + b₂)
    = W'x + b'  ← 1層と同じ!

活性化関数(ReLU等)があることで
初めて「非線形な関数」を表現できる

実装例(PyTorch)

import torch.nn as nn

class MLP(nn.Module):
    def __init__(self):
        super().__init__()
        self.net = nn.Sequential(
            nn.Linear(784, 256),   # 入力→隠れ層1
            nn.ReLU(),             # 活性化関数
            nn.Linear(256, 128),   # 隠れ層1→隠れ層2
            nn.ReLU(),
            nn.Linear(128, 10)     # 隠れ層2→出力(10クラス)
        )

    def forward(self, x):
        return self.net(x)

歴史と背景

  • 1969年:Minsky & PapertがXOR問題の限界を証明→AIの冬
  • 1986年:Rumelhart らが誤差逆伝播法でMLPの学習を実用化→復興
  • 1989年:Cybenko が「万能近似定理」を証明(十分な幅のMLPは任意の関数を近似できる)
  • 2012年以降:深いMLPが CNNや Transformer に取って代わられるが、全結合層として残存

関連用語