1. はじめに:パーセプトロンとは? 🤔
ニューラルネットワークと深層学習の世界へようこそ!このステップでは、その最も基本的な構成要素であるパーセプトロンについて学びます。
単純パーセプトロンは、1957年にフランク・ローゼンブラットによって考案された、非常にシンプルなアルゴリズムです。人間の脳の神経細胞(ニューロン)の働きを模倣した初期のモデルであり、後のニューラルネットワーク研究の基礎となりました。
このアルゴリズムは、入力された情報をもとに、ある特定の結果(例えば、「はい」か「いいえ」、「クラスA」か「クラスB」かなど)を予測する、二値分類問題を解くことができます。ただし、単純パーセプトロンが解けるのは、データが直線(または平面、超平面)で綺麗に分けられる線形分離可能な問題に限られます。
2. 単純パーセプトロンの構造 🏛️
単純パーセプトロンの構造は非常にシンプルです。大きく分けて以下の要素から構成されます。
- 入力 (Input): モデルに与えられる情報です。複数の入力値(特徴量)x₁, x₂, …, xn があります。
- 重み (Weight): 各入力値の重要度を示す値です。w₁, w₂, …, wn があり、それぞれの入力 xᵢ に対応します。
- バイアス (Bias): 出力を調整するための値です。しばしば b と表記されます。これは、ニューロンがどれだけ活性化しやすいか(発火しやすいか)を調整する役割を持ちます。
- 総入力 (Net Input): 入力と重みの積の合計にバイアスを加えたものです。通常 z と表記されます。
数式: z = (x₁ * w₁) + (x₂ * w₂) + … + (xn * wn) + b - 活性化関数 (Activation Function): 総入力 z を受け取り、最終的な出力 y を決定する関数です。単純パーセプトロンでは、主にステップ関数が用いられます。
- 出力 (Output): 活性化関数によって決定された最終的な結果です。通常 y と表記され、多くの場合 0 か 1、または -1 か 1 の値を取ります。
これらの要素が組み合わさって、入力データから出力を計算します。次のセクションで、具体的な計算プロセスを見ていきましょう。
3. 単純パーセプトロンの計算プロセス ⚙️
単純パーセプトロンがどのようにして入力から出力を計算するのか、そのプロセスを順に見ていきましょう。
-
総入力の計算:
まず、各入力値 xᵢ とそれに対応する重み wᵢ を掛け合わせ、その合計を計算します。そして、その合計値にバイアス b を加えます。これが総入力 z となります。
ここで、Σ は合計を表す記号です。z = Σ(xᵢ * wᵢ) + b (i = 1 から n まで)
-
活性化関数による出力決定:
次に、計算された総入力 z を活性化関数に入力し、最終的な出力 y を決定します。単純パーセプトロンでよく使われるステップ関数は、以下のように定義されます。総入力 (z) 出力 (y) 説明 z >= θ (閾値) 1 (または +1) 総入力が特定の閾値 θ 以上の場合、ニューロンは「発火」し、1を出力します。 z < θ (閾値) 0 (または -1) 総入力が閾値未満の場合、ニューロンは「発火せず」、0または-1を出力します。 閾値 θ を使う代わりに、バイアス b を用いて以下のように書くこともできます。(こちらの方が一般的です)
この場合、バイアス b が実質的に閾値の役割を果たします (z = Σ(xᵢ * wᵢ) + b)。もし z >= 0 ならば y = 1 もし z < 0 ならば y = 0 (または -1)
このように、単純パーセプトロンは、入力と重みの重み付き合計にバイアスを加え、その結果が閾値(または0)を超えるかどうかで出力を決定する、非常に直感的なモデルです。
4. パーセプトロンの学習規則 🧠💡
パーセプトロンがすごいのは、データから自動的に適切な重み (w) とバイアス (b) を見つけ出す学習能力を持つ点です。この学習プロセスは「パーセプトロンの学習規則」と呼ばれます。
学習の目標は、モデルの予測出力 y が、実際の正解ラベル t (target) と一致するように、重みとバイアスを調整することです。学習は以下の手順で行われます。
- 初期化: 重み w とバイアス b を小さなランダムな値、またはゼロで初期化します。
- 予測: 学習データの中から一つを選び、現在の重みとバイアスを使って出力を予測します (y)。
- 比較: 予測出力 y と正解ラベル t を比較します。
- 更新 (もし予測が間違っていた場合):
- 予測 y と正解ラベル t が異なる場合、重みとバイアスを更新します。
- 更新の方向と量は、誤差 (t – y) と入力 xᵢ、そして学習率 η (イータ) によって決まります。学習率は、パラメータを一度にどれだけ更新するかを制御する小さな正の値(例: 0.1, 0.01)です。
-
更新式は以下のようになります (i は各入力/重みのインデックス):
– もし予測が正解 (t = y) なら、(t – y) = 0 なので、更新は行われません。 – もし t=1, y=0 なら、(t – y) = 1 なので、重みとバイアスは増加する方向に更新されます (入力 xᵢ が正の場合)。これにより、次回同じ入力が来たときに総入力 z が大きくなり、y=1 となりやすくなります。 – もし t=0, y=1 なら、(t – y) = -1 なので、重みとバイアスは減少する方向に更新されます (入力 xᵢ が正の場合)。これにより、次回同じ入力が来たときに総入力 z が小さくなり、y=0 となりやすくなります。wᵢ(new) = wᵢ(old) + η * (t - y) * xᵢ b(new) = b(old) + η * (t - y)
- 繰り返し: すべての学習データに対して、ステップ2から4を繰り返します。これを1エポック (epoch) と呼びます。
- 終了条件: 全ての学習データに対して誤分類がなくなるか、決められたエポック数に達するまで、エポックを繰り返します。
5. 単純パーセプトロンの限界 🚧
単純パーセプトロンは非常に画期的なアルゴリズムでしたが、重大な限界も持っています。それは、線形分離不可能な問題は解けないという点です。
線形分離可能とは、データを1本の直線(2次元の場合)や平面(3次元の場合)、超平面(それ以上の場合)で完全に2つのクラスに分類できることを意味します。
代表的な線形分離不可能な問題としてXOR (排他的論理和) があります。
入力 x₁ | 入力 x₂ | 出力 t (XOR) |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
このXORの入出力関係をグラフにプロットすると、(0,0)と(1,1)がクラス0、(0,1)と(1,0)がクラス1となります。これらの点を1本の直線で分離することは不可能です。
単純パーセプトロンは、その構造上、線形の決定境界しか作れないため、XORのような問題を学習し、正しく分類することができません。この限界が明らかになったことで、一時的にニューラルネットワーク研究は停滞期(冬の時代)を迎えることになります。
しかし、この限界こそが、後に多層パーセプトロン (MLP) や、さらには深層学習 (Deep Learning) へと発展していく原動力となりました。次のステップでは、この限界を克服する多層パーセプトロンについて学んでいきます。
6. まとめ ✨
今回は、ニューラルネットワークの最も基本的なモデルである単純パーセプトロンについて学びました。
- 入力に重みを掛けて合計し、バイアスを加え、活性化関数(ステップ関数)で出力を決定するシンプルな構造を持つ。
- 誤分類した場合に重みとバイアスを更新する「パーセプトロンの学習規則」によって学習する。
- 線形分離可能な問題しか解けないという限界がある (XOR問題など)。
単純パーセプトロンは、その限界にもかかわらず、ニューラルネットワークと深層学習の基礎を理解する上で非常に重要です。この単純なモデルから、どのようにして複雑な問題に対応できる、より強力なモデルが生まれてきたのかを見ていくことで、深層学習への理解が深まります。
次の記事「多層パーセプトロン(MLP)と誤差逆伝播」では、単純パーセプトロンの限界を克服し、より複雑な問題を解くことができるモデルについて学んでいきましょう! 💪