多層パーセプトロン たそうぱーせぷとろん
多層パーセプトロン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 に取って代わられるが、全結合層として残存