【DeepLeaning】 パーセプトロン 限界

Deep Learning とは何なのか・・・まったく知らない状態から挑戦してみたいと思います!

パーセプトロンはXORを表現できない

いままで学んできたパーセプトロンは正確には「単層パーセプトロン」というようです。

単層パーセプトロンではXORゲートを表現することはできません。

XORゲートは2つの入力が異なる場合にのみ出力が1になる論理演算(排他的論理和)です。

これは単層のパーセプトロンでは表現できない非線形問題であり、
単層のパーセプトロンは線形分離可能な問題にしか対応できません。

線形?非線形?

線形とは2つの変数が比例して変化することを指します。
すなわちある入力に対して出力が比例的に変化する関数であることを言います。
例えば、y = 2x + 3 は線形関数であり、x が 1 増えるごとに y も 2 増えます。

一方、非線形とは、2つの変数が比例して変化しないことを指します。
例えば、y = x^2 は非線形関数であり、x が 1 増えるごとに y が 2 増えるわけではありません。
非線形システムは、入力に対して出力が非線形に変化するシステムを指します。

「y = x^2」の場合、xが1増えるごとにyは2x+1増えます。つまり、x=1からx=2に変化すると、yは1から4に変化します。
「非線形」なのはyがxに比例して変化しないことです。
例えば、xが2倍になってもyが2倍にならず4倍になります。
このような非線形性があるため、y = x^2は非線形関数と言われます。

深層学習においては、非線形関数である活性化関数を使用することでより複雑な関数を表現することができます。
非線形性はニューラルネットワークが複雑なデータ分布をモデル化するために必要不可欠な概念でありこれによって高度なパターン認識や予測能力を実現することができます。

多層パーセプトロン

多層パーセプトロン(Multi Layer Perceptron)を使用することでXORゲートを表現することができます。

MLPは、複数の層(隠れ層)を持つニューラルネットワークでありこれらの層に非線形の活性化関数を導入することにより非線形問題に対応することができます。
XORゲートを表現するためには、2つの入力を受け取る1つの隠れ層を持つMLPを使用する必要があります。

複数の層(隠れ層)とは、ニューラルネットワークにおいて、入力層と出力層の間に複数の中間層を持つ構造を指します。
入力層はニューラルネットワークに入力されるデータを受け取り、出力層はニューラルネットワークが学習した結果を出力するための層です。
そして、隠れ層とは入力層と出力層の間にある、中間的な層のことを言います。

各層は複数のニューロンから構成されています。
入力層のニューロンは入力データの各特徴量に対応し、出力層のニューロンはモデルの出力に対応します。
隠れ層のニューロンは入力層からの情報を受け取り出力層に情報を伝えるために中間的な処理を行います。
隠れ層を多層に重ねたニューラルネットワークは、より複雑な特徴やパターンを学習することができます。

隠れ層が複数あることによってニューラルネットワークはより多くの情報を扱えるようになります。
多層の隠れ層を持つニューラルネットワークは、非常に高度なパターン認識や予測能力を持つことができます。
ただし、隠れ層が増えるほど、学習が困難になる傾向があるため、適切な層の数を設定することが重要です。

なぜ「中間層」ではなく「隠れ層」と呼ぶのか?

「隠れ層」という用語はニューラルネットワークが登場した初期の頃から使われていた用語で中間層を表す言葉として使われてきました。

「隠れ層」という用語が使われる理由は中間層が入力層や出力層と比べてモデルの内部に位置するため外部から見ることができないという性質があるためです。
このような「隠れた」層がモデルの性能向上に大きく関わることが多く特に深層学習においては、隠れ層の数や構造が非常に重要な役割を果たします。

「隠れ層」という用語は、ニューラルネットワークの構造を表す上で(現代のDeep Learning分野で)一般的に用いられている用語であり中間層とほぼ同義語として使われています。
ただし、厳密には「中間層」という用語も用いられることがあり特に深層学習の分野ではより正確に「中間層」という言葉が使われることもあります。

中間層でいいですよね。「隠れ層」なんてめったに使う言葉じゃないですしイメージしにくい!