Prolog
今後、小屋畑ソフトウェアサービスではProlog言語と関連技術に力を入れてゆきます。
Prologは、日本では昔第五世代コンピュータプロジェクトで採用されていた古い人工知能用言語です。
第五世代コンピュータプロジェクトは成功したとはいえず、現在国内でもPrologは下火です。
しかし、その後制約論理プログラミング(CLPFD)や帰納論理プログラミング(Alephなど)を初めとした注目すべき新しい技術が論理プログラミング(Prolog)より生まれ、スケジューリング問題や機械学習などにおいて興味深い結果を出し始めています。
Prologと関連技術に関する研究は弊社ブログに都度投稿しておりますが、いつか折を見て整理した状態でまとめようと思っております。
帰納論理プログラミング
帰納論理プログラミングとは、例えばプログラムにとって現在意味不明な「AはBの孫である」という言葉(述語)があるとして、この関係を満たす事実(及び満たさない事実)をたくさん与えプログラムに学習させることにより、「AとBがどのような関係のときに"AがBの孫である"といえるか」をプログラムが自分で理解するという技術です。
例えば以下の事実を与えるとします
○背景事実(前提知識のようなもの)
・aはbの子である
・cはaの子である
・eはfの子である
・iはjの子である
・uはjの子である
・pはuの子である
○正事例(学習させたい事実を満たす例を与える)
・cはbの孫である
・pはjの孫である
○負事例(事実を満たさない例を与える)
・aはfの孫である
・jはbの孫である
・pはpの孫である
これらの事実を与えて帰納論理ライブラリを用いて学習させると「AがBの孫である」というのは「Aは誰かわからないがXの子であり、しかもこのXはBの子である」という、「背景知識を用いた関係性」をプログラムが自ら生み出し、理解します。