この章で分かること
パーセプトロン(1958年)は「入力に重みを掛けて足し、しきい値を超えたら 1、超えなければ 0」を出すだけの、最も単純なニューロンのモデルです。
この章では、点を 2 色に分ける問題を使って、重みを少しずつ直して直線を動かす学習の様子を見ます。
ことばの意味(タップで開閉)
- 重み(weight, w):各入力をどれだけ重視するかを表す数。学習で変わる。
- バイアス(bias, b):しきい値を動かすための「下駄」。これも学習で変わる。
- 決定境界:出力が 0 と 1 で切り替わる線。2 入力なら w1·x1 + w2·x2 + b = 0 の直線。
- エポック:訓練データを 1 周すること。
// パーセプトロンの計算(1 個のニューロン)
z = w1*x1 + w2*x2 + b
y = (z > 0) ? 1 : 0
// 学習則:間違えたときだけ重みを直す
w ← w + 学習率 × (正解 − 出力) × 入力
体験①:学習の様子を見る
点をクリックすると、そこに新しい点を追加できます(Shift を押しながらで赤)。背景色は現在の出力(青=1、赤=0)、黒線が決定境界。
エポックごとの正答率
| w1 | w2 | b | エポック | 正答率 |
|---|---|---|---|---|
| - | - | - | 0 | - |
試してみよう:XOR を選んで自動学習すると、何エポック回しても正答率が 100% になりません。
理由は、XOR の青と赤を1 本の直線では分けられないから。これが 1969 年にパーセプトロン研究が止まった理由であり、次章の MLP が生まれた動機です。
体験②:手で重みを動かす
スライダーを動かすと体験①の直線が直接動きます。学習とは「このスライダーをデータに合わせて自動で調整すること」です。
コードで動かす
パーセプトロンの学習ループを Python 風に書きました。問題(AND / XOR など)、学習率、ステップ数を書き換えて実行すると、上の図も一緒に更新されます。