
ニューラルネットワークの基本であるパーセプトロンの性能限界とは?
2021.12.20
パーセプトロンの性能限界とは?
パーセプトロンは、ニューラルネットワークを理解する上での、基礎的なアルゴリズムです。
ざっくりと言えば、
「複数の入力値に重み付けをした後、合算して、1つの出力を得る」
という、非常にシンプルなものです。
これは「単純パーセプトロン」と呼ばれます。
このパーセプトロンは、重みを調整することで、機械学習の基本命題である「回帰」と「分類」を行うことがでます。
しかし、単純パーセプトロンでは、性能に「とある限界」があります。
今回は、その性能限界と、それを突破する方法についてご紹介します。
パーセプトロンとは
パーセプトロンとは、加算器の一種で、複数の入力を元に、それを「合算」し「出力」するものです。
これだけでは、大した機能を持ちません。
しかし、この入力と出力に、「ある工夫」をすることで、生物のニューロンを模した、画期的な演算器になります。
入力に工夫をする
まず入力ですが、各入力値にそれぞれ「重み」付けを行います。
例えば、3つの入力 \(a\) 、 \(b\) 、 \(c\) がある場合で、出力を \(y\) とした場合、単純に
\(y=a+b+c\)
とせず、それぞれに重みをかけて
$$y=w_a a+w_b b+w_c c$$
とするわけです。
こうすることで、\(a\) 、 \(b\) 、 \(c\) の3つの入力のうち、それぞれが、出力に与える影響度合いを調整する事ができます。
例えば、\(w_a=1.0、w_b=0.5、w_c=0.1\) の場合、出力 \(y\) は、入力 \(a\) の影響を最も受け、入力 \(c\) の影響を最も受けません。
出力に工夫をする
次に出力ですが、合算値としきい値を比較することで、「0」または「1」を出力するようにします。
しきい値を、仮に「10」とすると、先の例の場合、
\(w_a a+w_b b+w_c c>10\) の時は「1」を出力し、それ以外の場合は「0」を出力する。
ということです。
パーセプトロンのまとめ
以上のことをまとめます!
パーセプトロンは…
複数の入力を持ち、それぞれに、情報の重要度を示す「重み」付けを行った後に合算し、それが「しきい値を超えれば1」、「そうでなければ0」を出力する演算器です。
なお、「1」の状態を、生物のニューロンになぞらえて、「発火する」と呼びます。
パーセプトロンを使ったANDゲート
それでは、パーセプトロンの有用性を理解するために、パーセプトロンを使った「ANDゲート」を考えてみましょう。
ANDゲートは、下記の表のような入出力を持ちます。
a | b | y |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
この時のパーセプトロンはどんなものか?
このような入出力をするためのパーセプトロンは、どのようなものでしょう。
入力は「2つ」なので、重みも「2つ」です。
また、「しきい値」を決める必要があります。
重みとしきい値の組み合わせは複数の正解がある
実は、このようなANDゲートを実現する為の重みと、しきい値の組み合わせは沢山あります。
一例として、[\(w_a\), \(w_b\), \(c\)(しきい値)] = [1, 1, 1] を考えてみましょう。
このとき、パーセプトロンの式は \(y = 1*a+1*b = a+b <=1 (0), >1 (1)\) となります。
式を表を当てはめる
これに、先程の表を当てはめてみましょう。
a | b | a+b | y |
0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 2 | 1 |
このように、きちんとANDゲートとして働いています。
パーセプトロンを使ったORゲート
同様に、パーセプトロンを使った「ORゲート」を考えてみましょう。
ORゲートは、下の表のような入出力を持ちます。
a | b | y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
これも、ANDゲートと同じく、重みと、しきい値は複数の正解があります。
その中で、[1, 1 0.9]を考えてみましょう。
この場合のパーセプトロンの式は、\(y = 1*a+1*b = a+b <=0.9 (0), >0.9 (1)\) です。
式表にあてはめてみる
それでは、上の表に当てはめてみましょう。
a | b | a+b | y |
0 | 0 | 0 | 0 |
0 | 1 | 1 | 1 |
1 | 0 | 1 | 1 |
1 | 1 | 2 | 1 |
しきい値を調整するだけで、ANDゲートが「ORゲート」に変わりました。
パーセプトロンの限界
単純ながら、かなり賢い演算器である「パーセプトロン」。
実は、解ける問題には限界があります。
先程のパーセプトロンの式を、もう一度見てみましょう。
$$y = w_a a + w_b b <= c (0), >c (1)$$
問題は、\(y = w_aa + w_bb\) の部分にあります。
この式は一次関数であり、\(y\) は \(a\) 、 \(b\) について線形です。
言い換えれば、直線で引いた線によって「座標 (a, b) 」を「有効 (1) 」か、「無効 (0) 」か識別しているわけです。
もしも、「座標 (a, b) 」を分ける線が、直線では無理な場合、残念ながらパーセプトロンでは分類できません。
「線形問題しか解決できない」
これがパーセプトロンの限界です。
XORゲートを作る過程で限界を知る
この限界は、パーセプトロンで「XORゲート」を作ろうとするとわかります。
XORゲートは、下の表のような入出力を持ちます。
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
(0, 0)と、(1, 1)の時は1に分類し、(0, 1)と(1, 0)の場合は0に分類しなければならないわけですが、これを分類できる直線は存在しません。
つまり、パーセプトロンでは解決できないことになります。
パーセプトロンの限界を超える「多層パーセプトロン」
それでは、XORゲートをパーセプトロンで作ることは無理なのでしょうか?
実は、作ることができます。
そのためには、複数のパーセプトロンを組み合わせればよいのです。
一般的な論理演算としての定義
一般的な論理演算として、次の定義が知られています。
XOR = AND(NAND, OR)
つまり、XORゲートは、「NANDゲート」と「ORゲート」の出力結果を、「ANDゲート」に入力する事で実現できるのです。
「NANDゲート」、「ORゲート」、「ANDゲート」は線形ですので、パーセプトロンで作ることができます。
このように、複数のパーセプトロンを組み合わせることを「多層パーセプトロン」と呼び、これがニューラルネットワークの基本となります。
単体のパーセプトロンでは、線形問題しか対応できません。
ですが、それを組み合わせる(多層化する)ことで、非線形問題にも対応できるようになるのです。
さいごに
ひとつのパーセプトロンである「単純パーセプトロン」では、線形問題しか対応することができません。
これが、パーセプトロンの限界と言うことができます。
しかし、パーセプトロンを組み合わせることで、非線形問題にも対応できるようになります。
これが、ニューラルネットワークの基礎となります。
また本記事では、「NANDゲートのパラメータ」についてはご紹介しませんでした。
興味のある方は、NANDのパラメータを考えてみて、ANDゲートとORゲートと組み合わせると、XOR問題が解決できることを確認してみてはいかがでしょうか?
こちらの記事もオススメ!
書いた人はこんな人

- 「好きを仕事にするエンジニア集団」の(株)ライトコードです!
ライトコードは、福岡、東京、大阪の3拠点で事業展開するIT企業です。
現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。
いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。
システム開発依頼・お見積もり大歓迎!
また、現在「WEBエンジニア」「モバイルエンジニア」「営業」「WEBデザイナー」「WEBディレクター」を積極採用中です!
インターンや新卒採用も行っております。
以下よりご応募をお待ちしております!
https://rightcode.co.jp/recruit
ライトコードの日常12月 1, 2023ライトコードクエスト〜東京オフィス歴史編〜
ITエンタメ10月 13, 2023Netflixの成功はレコメンドエンジン?
ライトコードの日常8月 30, 2023退職者の最終出社日に密着してみた!
ITエンタメ8月 3, 2023世界初の量産型ポータブルコンピュータを開発したのに倒産!?アダム・オズボーン