これまで多層パーセプトロンなど、神経細胞をモデル化したものの説明をしてきた。
脳のしくみをシミュレートするならこれでよいかも知れない。でも、
ディープラーニングでやりたいことは、あくまで目的に即した出力を得ることだ。
たくさんあるデータを分類するなら、「何に分類されたか」という情報が欲しい。
画像を加工するなら、加工後の画像データが欲しい。
顧客のサイト訪問履歴を分析してサイトのデザイン(設計)を改善したいなら、顧客の行動の傾向を表すデータが欲しい。
ここで問題になるのが、
目的に即した出力って何?
ってことだ。これは計算の流れを組み立てる上でとても大事な問いだ。簡単にいうと、ディープラーニングにおける目的に即した出力とは次のようになる。
- 過不足のない情報量。(出力層のニューロンの数)
- 0.0~1.0の数値で表現できる。
例えば、果物の画像を分類する例を考えてみよう。
直感的にこう考える人もいると思う。
「みかんの画像だったら『みかん』という判定結果の文字列を出力して、りんごの画像だったら『りんご』を出力する」
この方法でもできないことはないけど、あまりおすすめはしない。
というのも、「みかん」も「りんご」も、ディープラーニングの出力としては無駄が多いものになっているのだ。
例えば、ディープラーニングではなくあなた自身で果物の写真を見て分類する場合を考えてみよう。
あなたは凡そ次のような行動をとるだろう。
- 写真を見る。
- 写真に写っているものがみかんの場合、「この果物はみかんだ!」と判断して、「みかん」と目印の付けられた場所に写真を置く。
- 次の写真を見る。以下繰り返し。
ここで注目すべきは、「みかん」「りんご」「バナナ」という目印はあらかじめ決められた場所に設置されている点だ。
だから、果物と番号の対応のルールさえ決めておけば別に「みかん」「りんご」「バナナ」でなくとも「1番目」「2番目」「3番目」でよいのだ。
みかんの写真なら1番、りんごなら2番、バナナなら3番という具合に。
これをディープラーニングの出力に当てはめて考えてみる。入力層、中間層は今は目をつむって「何か計算しているんだ」くらいに考えて出力層に注目しよう。
出力層にニューロンは3つある。
- 出力層の1番目のニューロンの出力が1、それ以外が0の場合、「みかん」と分類されたと解釈する。
- 出力層の2番目のニューロンの出力が1、それ以外が0の場合、「りんご」と分類されたと解釈する。
- 出力層の3番目のニューロンの出力が1、それ以外が0の場合、「バナナ」と分類されたと解釈する。
このようにディープラーニングが出力するようにつくりこめば、上手いこと無駄なく分類問題が解決できる。
以上のように、ディープラーニングの出力層は、使う目的に応じてニューロンの出力がどうなったらどんな結果としてヒトが解釈すればよいかを上手いこと設計してやる必要がある。
具体的な設計方法については後日。