深層学習について - 単純パーセプトロン1
今回は単純パーセプトロンの仕組みについて。学習手法までは到達しません。どうやって予測できるかまで。
お約束ですがちょくちょく自信がないです。ツッコミお待ちしております。
今回考える例
最初は簡単な例から。
「りんご」と「なし」を見分けることを考えます*1 。簡単のために、「形」と「色」だけしか見ないことにします。
今回考えるパーセプトロンについて
今回は下図のようなパーセプトロンを考えます。
一番左の特徴ベクトルは4次元の0か1かの要素でできたベクトルです。 例えば丸くて赤色の物体の場合は
{1, 0, 1, 0}
です。丸くて黄緑色の物体の場合、{1, 0, 0, 1}
になります。一番右の出力ベクトルは2次元の0か1かの要素でできたベクトルです。 「りんご」だと思った場合は
{1, 0}
に、「なし」だと思った場合は{0, 1}
になってほしいです。間の隠れ層と書いてるのは(概念的に)計算途中の結果を置いておく2次元*2のベクトルみたいなものです。今回はそのまま「出力ベクトル」になります。(×1って書いてるのがそこです。*3)計算グラフ的には
+
の意味だと思ってください。
さて、一番重要なところです。図中の点線枠で囲っている部分が学習で獲得したい部分であり、この部分の構造が「人工ニューラルネットワーク」と呼ばれるものです。
この点線部は最初は何もありません。*4ここをどうつなぐかで学習器がどう振る舞うかが変わってきます。
点線部のつなぎ方 - 学習してほしい理想形
形状に関する情報のつなぎ方
まず、特徴ベクトルの[0]
と[1]
(形状に関わるもの)がどう処理されるべきかを考えます。
今回、「りんご」と「なし」を区別するのに、丸いか丸くないかは全く意味がありません。なので、[0]
と[1]
はどちらも×0
して伝搬させます。これで特徴ベクトルの最初2つの要素に何が入っていても以降の計算には影響しなくなります。
色に関する情報のつなぎ方
次に、特徴ベクトルの[2]
と[3]
(色に関わるもの)について考えます。
まず上の方から。色が赤かったら今回は「りんご」確定です。なので、[2]
は「りんご」の方に対してのみx1
で伝搬させます。
下の方についても同様に、色が黄緑色だったら「なし」確定なので、[3]
は「なし」の方に対してのみx1
で伝搬させます。
理想的なつながり方
以上のつなぎ方で理想的に作られたパーセプトロンは下図のようになります。
このパーセプトロンは理想的に「りんご」と「なし」を見分けることができます。*5
例えば、形が丸くて赤色の物体{1, 0, 1, 0}
が入力された時、出力は{1, 0}
となりちゃんとりんごだと思ってくれます。
次書くこと
ここまでで力尽きました。
今回はパーセプトロンのつなぎ方を「こうあるべき」で理想的に決めてしまいました。
一方、本当の学習器では大量のデータを見て学習器が勝手に頑張ってつないでくれます。
次回はこの「勝手に頑張って」の部分がどう勝手に頑張られるのかを書こうと思います。
どうでもいいこと
自分なんも理解してねえな、と書いてて毎度思います。少し辛いです。
薄く広くでつまみ食いしてきたツケですかね…