2016年6月7日火曜日

人工知能(?)とデータベースの接点とか

「人工知能」という単語に過度な期待がかけられている昨今でありますが、その実態は「人工直感」と言った方が正確だと思われます。少なくとも我々がすぐに利用できるものはそうです。過度な期待をせず、この道具を適切に使いこなしていきたいところです。

適用対象を考えるとき、「人工知能で」というよりは「直感で」と言った方がより適切に判断できると思います。

たとえば、
  • 「直感で」碁を打つ
  • 天才棋士ですね
  • 「直感で」絵を描く
  • 芸術家
  • 「直感で」危険を察知
  • なるほど便利
しかし、、、
  • 「直感で」会話
  • 超々々天然丸出し?相手すると頭がおかしくなりそうですね。
  • 「直感で」医療行為
  • 利用したいですか?
  • 「直感で」自動車を運転
  • こんなの走ってたら危ないから外出したくないレベルですね。
つまり、前者の対象には直接使えそうですが後者の対象では直接は利用できず、その「直感」で入力が充実した分、人間がすべて正確にプログラムしたり膨大な入出力を考えたり、ちまちま人間の論理に合わせなければならないわけです。

というわけで、
  • 「直感で」言われたことを予め決まった分類する
  • 「直感で」医療画像から異常を検知
  • 「直感で」センサーから人・車を検知
という風に目的の補助・参考に使える程度なのです、まぁ有用でしょうが。手元に何の蓄積されたデータ・経験もない場合、寧ろ可能性が増えた分、必要なプログラミング(というか実験)の量は増えています、かなり。完成品を末永く使うつもりでないのなら、手を出すのは損でしょうね。まだ人間から仕事を奪うほどではないですね。

人間の論理的思考への先天的なマッピングはまだまだ先でしょう。暫くは人間が細かにプログラムしなければいけないわけです。または、そうしたプログラム・データがクラウドとかで十分膨大に蓄積されたら、それをもって実現できた様に見えるかもしれません。計算能力よりも、プログラム・データ不足というのが実情でしょう。大手も含め、IT企業各社が前のめり気味に人工知能っぽいサービス・「人工直感」機能を提供しているのは、より沢山利用してもらってデータをためて人工知能っぽいものの完成度競争で優位に立つためかもしれません。

さて、そんな「人工直感」のためのデータベースとはどんなものか、そもそもデータベースなんてまだ必要なのか、という疑問もあると思います。

私は、多分「超多次元空間索引」が必要になると思います。1000次元くらいは欲しいです。分散格納してクラウド全ノードで全探索でも良いですが、それでは将来同時に色々対応できないでしょう。というかそのような検索技術が無ければ、大手クラウド会社の支配する領域となるでしょう。

ニューラルネットワーク等の関連技術では、「直感」の結果は多次元ベクトルで現れます。それがその空間内で近いものは、近い特徴を持ち、遠いものほど関連はありません。また、それを更に判断する全結合層などの学習済みの荷重などから、空間内の多次元平面(空間全体より低次元という意味で)に絞って近傍探索できても役立ちそうです。

とは言っても、経験上2次元の索引でも値の更新がある場合色々面倒なんですよね。でも、逐次、索引内データ(空間内座標)の補正ができなければ知識(まだ認識?)の修正ができません。多次元では正確性を少し犠牲にしただけで結果がぐちゃぐちゃになりそうで怖いですね。

個人的にはまだ直近では必要を感じていませんが、扱うデータ量・分類する精度が細かくなってきたら必要になって数年後に作る羽目になったりするのでしょうか?全く面倒くさいですね…。誰かつくってくれないでしょうか?もうあったら嬉しいですね。

というわけで、「人工直感」状態を脱しない限り、知能っぽさを与える部品はデータベース(というか膨大なデータ)です。 意外と接点は近いです。

では、またの機会に。


(追記)

多次元空間近傍検索は色々試してみましたが、検索のみが目的なら、nmslib の hnsw メソッドが一番良さ気です。もちろんチューニングは必要ですが、性能と精度のバランスが良く、索引は addDataPoint() しなおさなくても、loadIndex() するだけで使えます。pythonバインドもちょっと手を加えれば、結果セットにid以外にスコアも返るようにできますので。