本ページは パーセプトロン(Perceptron)を多角的に解説します。 上のチップは、 検索・関連語の手がかりです。
パーセプトロン(Perceptron)は、 ニューラルネットワークの 歴史的起点。 Frank Rosenblatt(1958)が脳の神経細胞をモデル化した計算ユニットで、 現代の深層学習はすべてこの拡張です。 1969 年 Minsky & Papert による限界指摘で一度衰退するも、 多層化と逆伝播の発明で復活。 AI 史を学ぶ上で必修。
パーセプトロンは 「複数の入力を受けて、 重み付け和を取り、 活性化関数で 0/1 を出力する」。
| 要素 | 意味 | 生物学的対応 |
|---|---|---|
| $x_i$ | 入力信号 | 樹状突起 |
| $w_i$ | 重み | シナプス強度 |
| $\sum w_i x_i + b$ | 重み付け和 | 細胞体での電位 |
| 活性化関数 | 出力決定 | 発火閾値 |
| $y$ | 出力 | 軸索 |
1 層では AND, OR は学習できるが、 XOR はできない(線形分離不可能)。 これが Minsky の有名な批判で、 1970〜80 年代の AI 衰退の引き金になりました。
例:AND ゲートをパーセプトロンで学習
| $x_1$ | $x_2$ | AND | パーセプトロン出力 ($w_1=w_2=1, b=-1.5$) |
|---|---|---|---|
| 0 | 0 | 0 | step(0 + 0 − 1.5) = 0 ✓ |
| 0 | 1 | 0 | step(0 + 1 − 1.5) = 0 ✓ |
| 1 | 0 | 0 | step(1 + 0 − 1.5) = 0 ✓ |
| 1 | 1 | 1 | step(1 + 1 − 1.5) = 1 ✓ |
XOR は同じ枠組みでは 絶対に解けない。 重みをどう設定しても、 4 点を 2 クラスに直線で分けられないため。
最小コードで動かしてみる例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import numpy as np class Perceptron: def __init__(self, n_inputs, lr=0.1): self.w = np.zeros(n_inputs) self.b = 0.0 self.lr = lr def predict(self, x): return 1 if (np.dot(self.w, x) + self.b) > 0 else 0 def fit(self, X, y, epochs=100): for _ in range(epochs): for xi, yi in zip(X, y): err = yi - self.predict(xi) self.w += self.lr * err * xi self.b += self.lr * err |