simplestarの技術ブログ

目的を書いて、思想と試行、結果と考察、そして具体的な手段を記録します。

人工知能:エディタの作成 その1

筆者はUnityに詳しいので、人工知能エディタをUnityで実装してみたいと思います。

 ある単語は何に属するのか

これを設定し易いエディタというものを考えていきましょう。

たとえば、ソクラテスという単語があったとして
ソクラテスが属しているカテゴリを考えてみます。
哲学者、人、哺乳類、動物、生物、物
とかそんな感じのカテゴリが思いつきます。

これらを、記入しようとした時に、入力する場所があると良いですね。

入力するときに補助が出るとよいですが、いずれ機能追加します。

そして、知識はメモリからハードディスクに保存したいので
ファイルフォーマットを決めなければなりません。

ここからひらめいたことをただ書いていきます。

学習時、カテゴリには一意のIDが振られますが
整理時、そのIDは変わることがあります。

よく使うカテゴリには若い番号が振られ、日々の会話で使われなくなったカテゴリには
大きな番号が振られます。

そして、ある機能追加時に
ネットワーク越しに、多くのマスターによって知識が増え、クライアントからサーバへ知識がアップロードされる仕組みが入ります。
集合知として、同じ単語やカテゴリについて学習した場合はこれを統合しなければいけません。
例えば、インターネットという単語について多くのマスターが様々な属性を与えている場合、また
最初はインターネットのカテゴリを持たない状態から、一斉に多くのマスターがインターネットについて教えた場合
様々なIDのインターネットカテゴリが存在することになります。
これがサーバにアップロードされるのです。

どのように集合知を整理すれば良いのでしょうか?

まだまだ、要求は尽きません。

知識はあっという間に膨大な量となりますので、すべてをメモリに載せることなどできなくなります。
IDごとか、ある程度まとまったIDごとにファイルに書いておき
IDからファイルへアクセスできるようにします。

集合知の整理ですが、そこは学習によって統合していくことを考えます。
似ている単語やカテゴリというものを、類似度という何かしらの距離を測ることで見つけ出し
それが同一なのか、それともどちらかがカテゴリに含まれるのかをマスターに聞くようにします。

統合された集合知を人格とし、統合されていない知識を教師として
教師をみつけては、人格形成を行うという整理が行われます。

カテゴライズは存在に対して行われますが、存在同士の働きかけの部分を説明する述語の分類はどうしましょう?
属性にそれら述語が入る形でしょうか?

例えばトゲというカテゴリには属性として、尖っている、刺さる
といった述語属性があるとしましょう。
トゲが尖っている
トゲが刺さる
といった感じで表現しておかしくなければ良いという形で学習、整理されていきます。

続いて、刺された方はどうなるのかということを、どのように学習させたら良いのかを考えます。

カテゴリに皮膚というものがあったとします。
AI側がこれについて質問を投げます。
トゲが皮膚に刺さるとどうなるの?

これを聞いたマスターは
痛い、とか、血が出る
とかを返します。
新たに血というカテゴリが学習され
血の属性に皮膚から出るとか

ここでは形容詞の痛いも登場し
これは次のコンビネーションを形成します。
トゲ→刺さる と 刺さった相手→痛い

マスターの説明が不十分だと、主語を聞きます。

トゲが刺さると痛いのはわかった。
そのとき、何が痛いの?

トゲが刺さった相手が痛い

すると、刺さるという述語に相手があることを知り
その相手が痛いことになると知識に入ります。

トゲという単語から、ある述語「刺さる」を見た時に
刺さった相手は痛くなる
相手が皮膚だと血が出る
相手には穴が空く
といったコンビネーションを発見できるようにしておきます。

バラにはトゲがあるという、構成による連携も知識から辿れるようにしておきます。
バラを人に渡す。
という表現を聞いて

バラからトゲ
人から皮膚
渡すから触れる
といった連想を試していき
トゲが皮膚に触れる
トゲと触れるから刺さる
トゲが皮膚に刺さると皮膚から血が出る
血が出ると痛い
カテゴリを大きく戻して
バラを人に渡すと、トゲが刺さってその人は痛くないの?
といった、回答を返せないものだろうか?

名詞だけではなく、動詞、形容詞
名詞による物体の構成
文による一連の現象
こうしたものを連絡できるようなフォーマットになっていなければならないことがわかってきた。

なるほど、演繹的思考にはカテゴリによる包含関係さえあれば良さそうな気がしていたが
それでうれしいのは人間の思考があるからで

その思考の部分を見ていくと
カテゴリ同士の構成や関係、事象と結果といったものがあって
これらのイメージをつなげているのか

エディタをいきなり作るのは早いことに気づきました。
最初はデータフォーマットを練りながら
バラを人に渡す
という文から上記の反応が返せるような、知識の連携ができるようなロジックを書いてみます。

ある程度知識が形成されたら、簡易に知識を与えられるエディタ作成に入っていこうと思います。