1. HOME
  2. ブログ
  3. IT技術
  4. ニューラルネットワークの基本であるパーセプトロンの性能限界とは?

ニューラルネットワークの基本であるパーセプトロンの性能限界とは?

パーセプトロンの性能限界とは?

パーセプトロンは、ニューラルネットワークを理解する上での、基礎的なアルゴリズムです。

ざっくりと言えば、

「複数の入力値に重み付けをした後、合算して、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ゲートは、下記の表のような入出力を持ちます。

aby
000
010
100
111

この時のパーセプトロンはどんなものか?

このような入出力をするためのパーセプトロンは、どのようなものでしょう。

入力は「2つ」なので、重みも「2つ」です。

また、「しきい値」を決める必要があります。

重みとしきい値の組み合わせは複数の正解がある

実は、このようなANDゲートを実現する為の重みと、しきい値の組み合わせは沢山あります。

一例として、[\(w_a\), \(w_b\), \(c\)(しきい値)] = [1, 1, 1] を考えてみましょう。

このとき、パーセプトロンの式は \(y = 1*a+1*b = a+b <=1 (0), >1 (1)\) となります。

式を表を当てはめる

これに、先程の表を当てはめてみましょう。

aba+by
0000
0110
1010
1121

このように、きちんとANDゲートとして働いています。

パーセプトロンを使ったORゲート

同様に、パーセプトロンを使った「ORゲート」を考えてみましょう。

ORゲートは、下の表のような入出力を持ちます。

aby
000
011
101
111

これも、ANDゲートと同じく、重みと、しきい値は複数の正解があります

その中で、[1, 1 0.9]を考えてみましょう。

この場合のパーセプトロンの式は、\(y = 1*a+1*b = a+b <=0.9 (0), >0.9 (1)\) です。

式表にあてはめてみる

それでは、上の表に当てはめてみましょう。

aba+by
0000
0111
1011
1121

しきい値を調整するだけで、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ゲートは、下の表のような入出力を持ちます。

001
010
100
111

(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問題が解決できることを確認してみてはいかがでしょうか?

ライトコードよりお知らせ

にゃんこ師匠にゃんこ師匠
システム開発のご相談やご依頼はこちら
ミツオカミツオカ
ライトコードの採用募集はこちら
にゃんこ師匠にゃんこ師匠
社長と一杯飲みながらお話してみたい方はこちら
ミツオカミツオカ
フリーランスエンジニア様の募集はこちら
にゃんこ師匠にゃんこ師匠
その他、お問い合わせはこちら
ミツオカミツオカ
   
お気軽にお問い合わせください!せっかくなので、別の記事もぜひ読んでいって下さいね!

一緒に働いてくれる仲間を募集しております!

ライトコードでは、仲間を募集しております!

当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。

また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!

なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。

ライトコードでは一緒に働いていただける方を募集しております!

採用情報はこちら

書いた人はこんな人

ライトコードメディア編集部
ライトコードメディア編集部
「好きなことを仕事にするエンジニア集団」の(株)ライトコードのメディア編集部が書いている記事です。

関連記事