さて、このニューラルネットワークを説明するのに、今回は、和田秀樹さんの「「バカの人」相手に感情的にならない本」(2016年、文芸社)の内容を使わせて頂き、説明したいと思います。
この本は、「バカの人」を分類してそれぞれに対する対処方法(他人との対応だけでなく、自分の「バカの人」化の傾向と対策も含めて)をまとめたものです。
今回は、「バカの人」を分類する手段として、ニューラルネットワークを使った(架空の)「「バカの人」判定システム」を想定してみたいと思います。
いろいろツッコミはあると思いますが、上記の3つの入力データ(X0、X1、X2)を作ることができれば、自分自身が、どの種類の「バカの人」に当てはまりそうかを判別できる ―― と、ここでは仮定してください。
さて、このような「「バカの人」判定システム」をロジック化して実装する(プログラミングする)のは、絶望的に難しい(というか、無理)です。理由としては、条件分岐が多すぎて、簡単に組合せ爆発を起すことになる、などが上げられます。
もし「バカの人」を募集して(集まるかどうかは、さておき)、その人のデータを取ることができて、それをニューラルネットワークに丸暗記させることができれば、この「「バカの人」判定システム」は実現できます。
「どの「バカの人」に分類すべきか」(Y0,Y1,Y2,Y3.Y4)を含めて、データ化(数値化)は人間ががんばってやらなければなりませんが、それでもプログラムするよりはずっとマシです。
そして、この入力データ(X0,X1,X2)と、出力データ(Y0,Y1,Y2,Y3.Y4)を数値化して、この入力データと同じ値を入力すれば、かならず、この出力データと同じ値がでてくるように、ニューラルネットワークを、ビシバシと痛めつけ……もとい、鍛えます。
これが、逆伝搬学習 ―― バックプロパゲーションです。
入力データに対して、ニューラルネットワークが期待通りの出力値を出力しない場合、バックプロパゲーションは、それを「強制的に矯正する」ものです。具体的には、ニューロンとニューロンをつなぐシナプス(結合値)の値を、少しずつ変化させていきます。
100人の「バカの人」のデータがあれば、100人分を丸暗記させます。ニューラルネットワークには、何回も繰り返し暗記作業を強制します。この暗記作業の回数は、例えば、1000〜1000万回まで、さまざまです。
ニューラルネットワークがこの100人分を全部完璧に覚えれば、誤差がなくなりますので、そこで学習は完了することになります。
しかし、実際のところ1000回でも、それ以上でも、学習が完了するのであれば、幸せなことですが、大抵の場合、そううまくはいきません(後述します)。
さて、ここで、100人分のデータの学習が完璧に完了したとします。ここに、学習データで使わなかった、江端の入力データ(例えば、(X0,X1,X2)=(0.5,0.7,0.8))を入力します。
100人分の知見を覚えたニューラルネットワークは、その100人と全く同一でない値を入れたとしても、出力値を出してきます。そして、その値は、おおむね100人のバカの人のデータの間を補完した値(補完解)が出てくることが「期待されます」 ―― が、実際は、そううまくもいかないことが多いのです(後述)。
しかし、このニューラルネットワークの「強制的に矯正する」の考え方は、現実でも普通に使われています。例えば、リハビリです。
交通事故なので、ゲカをすると、ケガをした場所(例えば、脚や腕)が、従来の脳細胞(ニューロン)とつながっているところが異なってくるため、物理的にケガが直っても、脚や腕は動かせないままです。
そこで、このニューロンのシナプス接続を「強制的に矯正する」のが、リハビリです。つまり、リハビリとは、バックプロパゲーションそのものなのです。
Copyright © ITmedia, Inc. All Rights Reserved.