[ 機械学習 ] 単層パーセプトロンの実装

[ 機械学習 ] 単層パーセプトロンの実装

本記事では、パーセプトロンとは何かということについて簡単にまとめた後、単層のパーセプトロンを実装します。

 

パーセプトロンとは

定義

パーセプトロンとは、1957年にアメリカのパーセプトロン氏によって考案されたアルゴリズムです。

パーセプトロンは、複数の信号を入力として受け取り、一つの信号を出力するという単純なアルゴリズムになっています。しかし単純ながらもパーセプトロンはディープラーニングの基礎ともなっている重要な技術であり、機械学習を学習する上ではもっともはじめに学ぶべき知識となっています。

イメージ

パーセプトロンのイメージは、次のような図で以って表されることが多いです。

各要素について簡単に説明します。

  1. X1 / X2
    この図におけるXは、入力を表します。現実世界的に換言するならば、例えばX1とX2はそれぞれ、「お父さんに怒られる(入力1) or 怒らられない(入力0)」と「お母さんに怒られる(入力1) or 怒られない(入力0)」なんていう風なことに相当するでしょうか。
  2. W1 / W2
    この図におけるWは、重み、すなわち入力の重要さを示します。入力値に乗算される値です。「お母さんに怒られる」ことはいつものことなのでそれほどショックはないとすれば、X2の入力の重要性は低くなり(W2を小さくする)、対して「お父さんに怒られる」ことはあまり無いのでショックが大きいとすれば、X1の入力の重要性は高くなる(W1を大きくする)ことになります。
  3. Y
    この図におけるYは、出力を示します。X1*W1 と X2*W2 を加算し、それが設定した域値を超えていれば 1 を、超えていなければ 0 を出力します。「お母さんには怒られたけれどもお父さんには怒られなかった」時、その重要度の総和が域値を超えていなければ「泣きださない(出力0)」、「お母さんにもお父さんに怒られた」時、その重要度の総和が域値を超えていれば「泣き出す(出力1)」という風なイメージです。

単層パーセプトロン

上の図のように、入力と出力の間に他のニューロン(図中の丸で示されるような要素)が無い構造であるパーセプトロンを、特に単層パーセプトロンといいます。対して、いくつものニューロンを重ねた構造を持つものを多層パーセプトロンといいますが、ここでは説明を割愛します。多層であっても、基本的には単層構造が積み重なっただけのものですので根本的な違いはありません。

では、先ほどの例に習ってパーセプトロンを実装してみます。

出力から分かるように、「お母さんに怒られても泣かないが、お父さんに怒られると泣き出す子供」のイメージを、このパーセプトロンで実装できました。

 

バイアスという考え方

さて先ほど一つのパーセプトロンを実装しました。あれだけでもパーセプトロンとしての機能は満たしていますが、今後ディープラーニングなどを学んだいく上で重要な概念、バイアスについても確認し、実装していきます。

バイアスとは「偏り」という意味の言葉で、パーセプトロンにおいては入力と出力の関係に一定の影響を与える要素を示します。

下にイメージ図を記載します。先ほどの図と比べて、b という要素が追加されていることがわかります。

 

先ほどは X1 / X2 にそれぞれ W1 / W2 を乗算したものの総和を求めましたが、バイアスを導入した場合には、それにバイアスを加算する、という過程を追加します。

親と子の例に戻れば、バイアスとは「子供の怒られることへの耐性」です。どちらに親に怒られるかということに関わらず、「怒られ慣れていない子供」にとって「怒られる」ことの重要性は高い(バイアスが高い)でしょうし、逆に「怒られ慣れている子供」にとって「怒られる」ことの重要性は低い(バイアスが低い)でしょう。

バイアスという考え方を導入した上で、もう一度パーセプトロンを実装してみます。

最初の子供は、「母親に怒られても泣きださない」という実装でしたが、後者は「いずれかの親に怒られたら泣き出す」という実装になりました。両者の違いはバイアスの有無です。このように出力値に固定値で操作を加えたい時、バイアスを使用することになります。

 

 

ANDゲートとORゲートの実装

最後に、一般的な単層パーセプトロンの例として用いられるANDゲートとORゲートを実装します。

ANDゲートとは、入力がいずれも1である場合に True を返すパーセプトロンであり、 ORゲートは入力のいずれかが1である場合に True を返すパーセプトロンです。

`

 

以上。

MachineLearningカテゴリの最新記事