ニューラルネットワークの基本であるパーセプトロンの性能限界とは?
IT技術
パーセプトロンの性能限界とは?
パーセプトロンは、ニューラルネットワークを理解する上での、基礎的なアルゴリズムです。
ざっくりと言えば、
「複数の入力値に重み付けをした後、合算して、1つの出力を得る」
という、非常にシンプルなものです。
これは「単純パーセプトロン」と呼ばれます。
このパーセプトロンは、重みを調整することで、機械学習の基本命題である「回帰」と「分類」を行うことがでます。
しかし、単純パーセプトロンでは、性能に「とある限界」があります。
今回は、その性能限界と、それを突破する方法についてご紹介します。
パーセプトロンとは
パーセプトロンとは、加算器の一種で、複数の入力を元に、それを「合算」し「出力」するものです。
これだけでは、大した機能を持ちません。
しかし、この入力と出力に、「ある工夫」をすることで、生物のニューロンを模した、画期的な演算器になります。
入力に工夫をする
まず入力ですが、各入力値にそれぞれ「重み」付けを行います。
例えば、3つの入力 、 、 がある場合で、出力を とした場合、単純に
とせず、それぞれに重みをかけて
とするわけです。
こうすることで、 、 、 の3つの入力のうち、それぞれが、出力に与える影響度合いを調整する事ができます。
例えば、 の場合、出力 は、入力 の影響を最も受け、入力 の影響を最も受けません。
出力に工夫をする
次に出力ですが、合算値としきい値を比較することで、「0」または「1」を出力するようにします。
しきい値を、仮に「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ゲートを実現する為の重みと、しきい値の組み合わせは沢山あります。
一例として、[, , (しきい値)] = [1, 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]を考えてみましょう。
この場合のパーセプトロンの式は、 です。
式表にあてはめてみる
それでは、上の表に当てはめてみましょう。
a | b | a+b | y |
0 | 0 | 0 | 0 |
0 | 1 | 1 | 1 |
1 | 0 | 1 | 1 |
1 | 1 | 2 | 1 |
しきい値を調整するだけで、ANDゲートが「ORゲート」に変わりました。
パーセプトロンの限界
単純ながら、かなり賢い演算器である「パーセプトロン」。
実は、解ける問題には限界があります。
先程のパーセプトロンの式を、もう一度見てみましょう。
問題は、 の部分にあります。
この式は一次関数であり、 は 、 について線形です。
言い換えれば、直線で引いた線によって「座標 (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問題が解決できることを確認してみてはいかがでしょうか?
こちらの記事もオススメ!
2020.07.28機械学習 特集知識編人工知能・機械学習でよく使われるワード徹底まとめ!機械学習の元祖「パーセプトロン」とは?【人工知能】ニューラルネ...
2020.07.17ライトコード的「やってみた!」シリーズ「やってみた!」を集めました!(株)ライトコードが今まで作ってきた「やってみた!」記事を集めてみました!※作成日が新し...
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ
「好きを仕事にするエンジニア集団」の(株)ライトコードです! ライトコードは、福岡、東京、大阪、名古屋の4拠点で事業展開するIT企業です。 現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。 いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。 システム開発依頼・お見積もり大歓迎! また、現在「WEBエンジニア」「モバイルエンジニア」「営業」「WEBデザイナー」を積極採用中です! インターンや新卒採用も行っております。 以下よりご応募をお待ちしております! https://rightcode.co.jp/recruit