2017年8月16日水曜日

賢者学習


従来型の深層学習を見ていると、何だか赤ちゃんが言語を学ぶときのようなもどかしさを感じる。水泳を習うのにいきなり川に投げ込まれるようなもので、いまいちスマートでない。ベタなデータを読むのではなく、教科書を読むとか先生に教わるとかいった、スマートな学習法はないものか。

従来の学習が「経験から学ぶ」型だとすると、「本から学ぶ」型の機械学習があってもおかしくない。つまり、ごく少量のデータだけで多くを学ぶことができるのが、この学習の特徴である。ここでは前者を「愚者学習」、後者を「賢者学習」と呼ぶことにする。

やや乱暴に例えるなら、愚者学習は現在流行りの深層学習、賢者学習は第五世代コンピュータのようなものだ。何だか逆転しているように見える。だが賢者学習はこれからの研究テーマであり、単なるPrologマシンではない。具体的なアーキテクチャを考えてみよう。
教科書として与えられるのは、例えば大学の講義で使われるような、人間が使う教科書と同じものだ。もちろんPDF化くらいは必要だが、自然言語で書かれている。これをデータとして取り込む。

これは、自然言語解釈エンジンによって論理型言語に変換される。これは、言うなればPrologのソースコードだ。だがPrologと決定的に違うのは、その「正しさの程度」は絶対ではない、ということだ。また、この部分は、その論理型言語の記述量さえ少なければ、自然言語から生成するのではなく、直接人がプログラミングすることもできる。

その信頼度には初期値が付けられる。これは、出典の信頼性と書いてある内容の両方から推測されるべきものであるが、初期においては前者だけでよいだろう。例えば有効な法律、顧客の仕様書、専門書などは信頼性が高く、雑誌やSNSの情報は低い、といった具合である。

次に、そのソースコードから、学習用データセットを自動生成する。これは、業務用のダミー住所データのようなもので、ソースコード(ルール)に合った条件でランダムに生成する。これを信頼度に合わせて必要数だけ生成し、愚者学習に読み込ませる。つまり、賢者学習の必要モジュールは、愚者学習のフロントエンドとして機能する。

「信頼度に合わせた必要数」とは、愚者学習で累積で覚えた実地データによって変化する。従って賢者学習は、愚者学習の学習数をモニターし、必要に応じて追加で学習をさせる。これにより、怪しいデータで信頼性の高いルールが汚染されるのを防ぐ。

こうすると、信頼性の高いルールについて強く覚え、低いルールについては弱く覚え、単なるデータに対しては更に弱く覚える、という調節ができる。また、信頼性の高いルール(とされているもの)の間に矛盾があっても、それなりの答を返すことができる。教科書どおりだけではなく実地データも配慮した答を出せる。これは人間の特徴と同じだ。

これを更に信頼性の高いものにするために、ソースコードをそのまま実行する論理マシンを並行して立て、論理マシンの結果と賢者学習の結果を突き合わせて比較し、矛盾があった場合は信頼度を下げる、というような仕掛けも導入が可能である。

賢者学習には、たぶん他のアーキテクチャも考えられるだろう。自分で言っておいてなんだが、上のアーキテクチャでは計算コストが高くつきそうだ。だが研究の取っ掛かりとしては十分に魅力的に見える。

0 件のコメント:

コメントを投稿

注目の投稿:

超音波モーターの原理によるVR用トレッドミル

  VRにおけるリアリティ問題の一つに、その場で動くのではなく移動する場合、つまり歩いたり走ったりすることが挙げられる。実際にはその場にいるので、歩いたかのように足場を調節してやる必要がある。 これを実現する方法として、すり鉢状の滑りやすい足場を作っておく方法と、トレッドミルを使...

人気の投稿: