パーセプトロンとニューラルネットワーク

「パーセプトロン」と「ニューラルネットワーク」について、簡単に説明します。

パーセプトロン

パーセプトロンとは、ローゼンブラットというアメリカの研究者によって1957年に考案されたアルゴリズムです。

出典:ゼロから作るDeep Learning(オライリー・ジャパン)

単層のパーセプトロンは以下の図のようになります。

入力信号xnに重みwnをかけて、その総和を求めます。

求めた総和が閾値θ以下の場合yは0を出力し、閾値を超える場合yは1を出力します。

$$\begin{eqnarray}
y=\left\{ \begin{array}{ll}
0 & (w_{1}x_{1}+w_{2}x_{2} \leq θ) \\
1 & (w_{1}x_{1}+w_{2}x_{2} > θ) \\
\end{array} \right.
\end{eqnarray}$$

以下のように多層パーセプトロンを用いれば、より複雑な処理を行うことが出来ます。

なにが出来る?

パーセプトロンを用いると、ANDやORゲートなどの論理回路を表現することが出来ます。

2層のパーセプトロンを用いれば、XORゲートも表現できます。
(単層のパーセプトロンではXORゲートは表現できません)

ニューラルネットワーク

パーセプトロンとの違い

ニューロンのつながり方に関して言えば、前章で見たパーセプトロンと何ら変わりありません。

出典:ゼロから作るDeep Learning(オライリー・ジャパン)

ネットワークの見た目の構造に変わりはありませんが、以下のような違いがあります。

  • パーセプトロンでは、出力(ノードの活性化関数)に以下のようなステップ関数を使用していました。
  • ニューラルネットワークでは、例えばシグモイド関数のような滑らかな活性化関数を用います。

ニューラルネットワークでは、一般的に活性化関数に非線形関数を使用します。
非線形関数とは、例えば上記のステップ関数やシグモイド関数のような単純な1本の直線ではない関数のことです。

なぜ非線形関数を用いるのか?

層を増やすことの利点を生かすためです。

線形関数を用いた場合、層を重ねることの恩恵を得ることができません。

線形関数である h(x) = cx を活性化関数として、y(x) = h(h(h(x))) を行う計算を3層のネットワークに対応させて考えることにします。
この計算は、y(x) = c × c × c × x の掛け算を行いますが、同じことは y(x) = ax (ただし、a=c^3)の1回の掛け算で、つまり、隠れ層のないネットワークで表現できるのです。

出典:ゼロから作るDeep Learning(オライリー・ジャパン)

まとめ(分類)

一般的には以下のように分類されます。

  • パーセプトロン
    • 単層かつ活性化関数がステップ関数
  • ニューラルネットワーク
    • 多層かつ活性化関数がシグモイド関数などの滑らかな関数

また、「多層パーセプトロン」というと以下のようなものを指すようです。

  • 3つ以上のノードの層からなるパーセプトロン
  • ニューラルネットワークの一分類

参考

ゼロから作るDeep Learning

Pythonで学ぶディープラーニングの理論と実装(オライリー・ジャパン)

wikipedia:多層パーセプトロン

https://ja.wikipedia.org/wiki/%E5%A4%9A%E5%B1%A4%E3%83%91%E3%83%BC%E3%82%BB%E3%83%97%E3%83%88%E3%83%AD%E3%83%B3

パーセプトロンとニューラルネットワーク” に対して5件のコメントがあります。

  1. 通りすがり より:

    通りすがりに失礼します。コメントは削除していただいてかまいません。

    > 入力信号xnに重みxnをかけて、その総和を求めます。
    もしかして、重みはwnでしょうか。。

    1. 確認飛行物体 より:

      ご指摘ありがとうございます。
      重みwnに修正いたしました。

  2. えびかずき より:

    少し気になる部分があったのでコメント失礼します。

    ステップ関数も非線型関数ではないでしょうか?
    シグモイドを使う理由は勾配法で最適化をするためでは?

    1. 確認飛行物体 より:

      ご指摘ありがとうございます。
      ステップ関数が非線形関数ではないような記述になっていたため、修正いたしました。
      シグモイド関数については、使用理由の説明は割愛し「滑らかな活性化関数」という表現にしております。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です