コンピュータによる知識の獲得(JAVAScriptによるデモ)(2018.11.15) 2003.10.18

双子のチビズは保育園っ子です。彼らの持ち物には一人にはバナナ、もう一人にはキャンディーの印がついています。彼らは多少へたくそな絵でもバナナとキャンディーを認識して自分の持ち物、場所だと理解します。

まずは練習のため画面に描く図形はbanabaとCandyとします。(上のテキストフィールドにbanana、下にCandyを入力)まず、あなたがbananaと思う図形をマウスで描いて下さい。bananaした図形ができたらその下のLearn(学習)ボタンを押して下さい。これでこの図形はbananaだよってコンピュータに教えたことになります。次にあなたがCandyと思う図形を書いてもう一方のLearnボタンを押して下さい。それでこの図形はCandyだよ、Bananaじゃないよってコンピュータに教えたことになります。画面が汚れてきたらClearボタンを押して学習を繰り返して下さい。描く方向を変えたり、ストロークを変えたり、大きい図形、小さい図形を教えてみてください。

どうですか?

だんだん正しい答えを返せるようになってきたら大成功です。ブラウザーの更新ボタンを押して全体をクリアーしましょう。次はテキストフィールドにマルとサンカクを入れてマルとサンカクを描いて教育してみて下さい。ダイナミックとチマチマとかルンルンとショボショボとか何でもいいです。これが学習による知識獲得の例です。今までのプログラミングの技法では曲率がどうのこうのとか鋭角がどうのとかで認識させようとしてきたのですが、その場合には認識させる物ごとにプログラムが必要になります。ニューラルネットワークはこの例でお判りのようにプログラムは同一で学習によって機能が変わっていきます。

JAVAScriptが許可されているなら、(ボタンの形状は異なりますが)下図の様になるはずです。

このような画面が出てくる。まず、Stratボタンを押す。

自分がバナナと思う絵をマウスで書く。書き方は一筆書きで。そしてBananaの下のLearnボタンを押す。コンピュータはマウスの動きを解析して、この動きの時にはバナナであると覚える。

Clearボタンを押して次にはキャンディの絵を描く。そしてCandyの下のLearnボタンを押す。それを正しく認識できるまで繰り返す。大きく書いたり、ひねったり、向きを変えたり。そのうちにどんな書き方をしても正しく認識するようになる。

うまくいったら、リロードして、マルと三角とか他のパターンをやってみよう。

この例題は、近代科学社、Cでつくる脳の情報システム、中野馨著にあるCのプログラムをJAVAで書き直して(さらにJavaScriptに書き直して)ついでにちょっとモディファイしたものです。詳しい説明は原著を紐解いて下さい。非常にいい本です。ここでのポイントはクネクネとジグザグを認識するプログラムがまったく同じプログラムでマルとサンカクを認識できることです。今までの手続き型のプログラムでは考えられない事です。人間の脳でも同じようにどの脳細胞がクネクネとジグザグを認識しているわけではないのと似ています。

どういうメカニズムでこうなっているのかを知りたい場合には原著をお読みください。

Learn
Learn
Clear
0
0
Message
Start