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

    メディアチームメディアチーム
    2020.03.02

    IT技術

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

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

    ざっくりと言えば、

    「複数の入力値に重み付けをした後、合算して、1つの出力を得る」

    という、非常にシンプルなものです。

    これは「単純パーセプトロン」と呼ばれます。

    このパーセプトロンは、重みを調整することで、機械学習の基本命題である「回帰」「分類」を行うことがでます。

    しかし、単純パーセプトロンでは、性能に「とある限界」があります。

    今回は、その性能限界と、それを突破する方法についてご紹介します。

    パーセプトロンとは

    パーセプトロンとは、加算器の一種で、複数の入力を元に、それを「合算」し「出力」するものです。

    これだけでは、大した機能を持ちません。

    しかし、この入力と出力に、「ある工夫」をすることで、生物のニューロンを模した、画期的な演算器になります。

    入力に工夫をする

    まず入力ですが、各入力値にそれぞれ「重み」付けを行います

    例えば、3つの入力 aabbcc がある場合で、出力を yy とした場合、単純に

    y=a+b+cy=a+b+c

    とせず、それぞれに重みをかけて

    y=waa+wbb+wccy=w_a a+w_b b+w_c c

    とするわけです。

    こうすることで、aabbcc の3つの入力のうち、それぞれが、出力に与える影響度合いを調整する事ができます。

    例えば、wa=1.0wb=0.5wc=0.1w_a=1.0、w_b=0.5、w_c=0.1 の場合、出力 yy は、入力 aa の影響を最も受け、入力 cc の影響を最も受けません。

    出力に工夫をする

    次に出力ですが、合算値としきい値を比較することで、「0」または「1」を出力するようにします

    しきい値を、仮に「10」とすると、先の例の場合、

    waa+wbb+wcc>10w_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ゲートを実現する為の重みと、しきい値の組み合わせは沢山あります。

    一例として、[waw_a, wbw_b, cc(しきい値)] = [1, 1, 1] を考えてみましょう。

    このとき、パーセプトロンの式は y=1a+1b=a+b<=1(0),>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=1a+1b=a+b<=0.9(0),>0.9(1)y = 1*a+1*b = a+b <=0.9 (0), >0.9 (1) です。

    式表にあてはめてみる

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

    aba+by
    0000
    0111
    1011
    1121

    しきい値を調整するだけで、ANDゲートが「ORゲート」に変わりました

    パーセプトロンの限界

    単純ながら、かなり賢い演算器である「パーセプトロン」。

    実は、解ける問題には限界があります

    先程のパーセプトロンの式を、もう一度見てみましょう。

    y=waa+wbb<=c(0),>c(1)y = w_a a + w_b b <= c (0), >c (1)

    問題は、y=waa+wbby = w_aa + w_bb の部分にあります。

    この式は一次関数であり、yyaabb について線形です。

    言い換えれば、直線で引いた線によって「座標 (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問題が解決できることを確認してみてはいかがでしょうか?

    こちらの記事もオススメ!

    featureImg2020.07.28機械学習 特集知識編人工知能・機械学習でよく使われるワード徹底まとめ!機械学習の元祖「パーセプトロン」とは?【人工知能】ニューラルネ...

    featureImg2020.07.17ライトコード的「やってみた!」シリーズ「やってみた!」を集めました!(株)ライトコードが今まで作ってきた「やってみた!」記事を集めてみました!※作成日が新し...

    ライトコードでは、エンジニアを積極採用中!

    ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。

    採用情報へ

    メディアチーム
    メディアチーム
    Show more...

    おすすめ記事

    エンジニア大募集中!

    ライトコードでは、エンジニアを積極採用中です。

    特に、WEBエンジニアとモバイルエンジニアは是非ご応募お待ちしております!

    また、フリーランスエンジニア様も大募集中です。

    background