ルールベースと知識ベースとエキスパートシステムと関係データ
あたらしい人工知能の教科書 プロダクト/サービス開発に必要な基礎知識より。人工知能技術の中での知識データ技術概要について述べる
人間は生きていくなかで常に選択をし続けている。そのとき、頭のなかでは2つの物事を比較することで何かしらの決定をしている。コンピュータによる問題解決も、同様に比較し続けることで行っている。このときの比較がすなわち条件分岐であり、条件分岐を行うことで入力に対する答えを導き出している。人間が知能として認識していることと、同様のことを機械が行っている、という点ではこれも人工知能であるということが言える。ごく初期の人工知能はこのような条件分岐を行うプログラムによって構成されていて、これは現在にも引き継がれている(図1)。
条件分岐をするときに必要となるのはそのための条件設定、すなわちルールとなる。ルールを使って条件分岐を行うシステムをルールベースのシステムと呼び、条件分岐はIFTHENの形で記述することが多い。プログラムやアルゴリズムの構成をフローチャートで表現することを考えると、ルールベースのシステムはフローチャートと相性がよいことがわかる(図2)。
ルールベースのシステムを構築するとき、フローチャートに条件分岐の内容を書き込むことになる。そのルールは人間があらかじめ決めておく必要がある。当然のことながら、人間が正解を知っていない、いわゆる未知の問題に対してはルールベースでは対応ができないことになる。条件設定を決める際には、その順序や優先順位に気を使うことが必要になってくる。
例:冷房の風量を気温によって決める処理例えば、冷房の風量を気温によって決める簡単な処理を考えてみる。33度以上だったらとても強く、30度以上だったら強く、28度以上だったら弱く、といった具合に「風の強さ」を決めるとする。気温が34度のとき、最初に28度以上かどうかを判定して風の強さを決めてしまうと、とても暑いのに弱い風しか出てこないことになる。そのようにならないためには、暑いほうの条件から先に判定をしていく必要がある。
例:名寄せの処理別の例としては、名寄せの処理がある。名寄せは、あるIDと別のIDが同じものかどうかを判定して、同じであれば同一のものと出力する処理になる。最近の話題であれば、病院などで受け取る診療報酬明細書(レセプト)に関連して医薬品の安全対策等のための医療関係データベースにおける保険加入者の突き合わせや、年金記録管理において基礎年金番号への統合が困難となった5000万件の厚生年金番号と国民年金番号を年金受給者個人と対応付ける作業などがある(図3)。名前の表記揺れや記録時の誤字など、いくつかのケースに対応しながらルールを決めていく必要が出てくる。すでに名寄せが完了した分については、それ以降名寄せの対象にしない、といったルールも必要となる。
このようにルールを設計していく段階でその問題と解法について明確化することを問題の定式化と呼んでいる。人工知能に関して、人間の仕事がなくなるかどうかが話題となっていますが、この問題の定式化が人工知能によって可能となれば、ずいぶんと人間が楽にできるものとなる。
ルールを元にフローチャートを描くと、その情報をもとに二分木を構築することができる。この木構造を決定木(Decision Tree)と呼び、統計学的なデータの処理と分析を行う際にはよく利用される。ルールが未知で、そのルールを探したい場合は統計学的なデータ処理を行うことで見つけることができる場合もある。そうしたときに決定木を考えることが重要になる。
ルールベースのプログラムを構築するとき、ルールとなる条件分岐は固定の情報を利用したものであればハードコーディング(後から改変できない決め打ちのプログラム)してしまうことでも問題でない。条件設定が変わってしまった場合についても、プログラムを書き換えることで、コストがかからなければ問題はない。昔のように、外部記憶装置が超高級品だった場合などは、プログラムを書き換えるほうが安く上がるときもあったが、条件設定が変わりやすい場合、例えば好みに応じて変更をしたいというとき、プログラムを何度も書き換えることはとてもコストがかかる(下図)
そこで、データを利用して処理と出力を行うプログラム本体と条件設定となるデータを分離することで対応する方法が考えられた。分離したデータのセットのことを知識ベース(knowledge base)と呼ぶ。プログラムは条件分岐が必要になったときにルールを抽出するIDを使ってその設定値を読み出し、判定を行う。
知識ベースはファイルシステム上にテキストファイルとして保存されている場合もあれば、SQLiteなどのデータベースマネジメントシステム(DBMS)に格納されている場合もある。知識ベースに書き込まれた内容は、テキストエディタや専用の設定画面やクエリー言語を使って更新することができるようになっているシステムもある(下図)。
知識ベースに格納されたデータは、プログラムが設定として読み出すこと以外にも、膨大な情報を格納しておくことで人間が探索することのできるようになっているシステムも存在する。
例えば、UniProtKBというデータベースシステムは生命科学分野で使用される知識ベースの1つとなる。欧州の機関が協力し合ってタンパク質の情報を収集し、アノテーション(あるデータに対して関連する情報を付与すること)処理やキュレーション(データを収集し、アノテーションの情報などをもちに精査、統合し整理してまとめる)を通じてUniProt(TheUniversalProteinResource、URLhttp://www.uniprot.org/)というカタログデータベースと解析ツールなどを開発している。
UniProtKBはカタログを作っているシステムで、世界中で収集され主要なデータベースに登録された遺伝子の塩基配列やアミノ酸配列などから、タンパク質を構成するアミノ酸配列やタンパク質の特性に焦点を絞り、機械的に収集した情報やそのなかから手作業によりキュレーションを行った情報が格納され公開されている。生物種やパスウェイ(他のタンパク質などの化合物との相互作用を表したデータ)などの情報も含まれているため、手元で新規に得られたタンパク質などが例えば「人やマウスではどのようなタンパク質と類似しているか」、「どういった役割を持っていることが想定できるか」などを絞り込むために利用できる。
前述のルールベースのシステムは1960年代に発展する中で大きなシステムにも用いられるようになる。特に専門家が分類や判別といった何らかの作業を行うことを支援したり、代替できたりするようなものはエキスパートシステムと呼ばれるようになる。現在あるプロダクションシステムなど分析等を行った結果を提示するシステムのほとんどはエキスパートシステムを継承している。
例として最初期に構築されたエキスパートシステムとして、Dendralがある。Dendralはスタンフォード大で1965年から開発されたプロジェクトで、質量分析で得られたピークの場所の数値(分子量)から測定した物質の化学構造を推測するシステムとなる。言語はLISPが用いられている。
具体的には、水の分子(H2O)は分子量がH=1.01、0=16.00なので18となり、質量分析を行うと、18付近にピークが出てくる(ガスクロマトグラフを用いた質量分析装置は整数値程度の分解能であるのであまり精緻でなくとも問題ない)
システムは分子量が18になる化学物質を原子の組み合わせから計算し、答えを出す。分子量が増えてくると、原子の組み合わせが多様化してくるため答えを計算するのに時間がかかるので、これらの仕組みの中に評価不要な組み合わせを計算しないようにする工夫が必要となる。
Dendralのシステムは、こうしたヒューリスティクス(経験則)な解析を行う部分(Heuristic Dendral)と、組み合わせられる分子構造とその質量スペクトルのセットを知識ベースとして登録しておき、ヒューリスティクスな解析にフィードバックさせるための部分(Meta-Dendral)がある。Meta-Dendralは、学習システムということができる。
Dendralから派生し、発展したシステムで1970年代に構築されたMYCINもエキスパートシステムにあたる。これは患者や伝染性の血液疾患を診断して、投与する抗生物質を投与量などとともに提示するシステムとなる。「MYCIN」という名前は抗生物質の接尾辞である-mycin(マイシン)からとられている。
500程度のルールから判定を行い、YES/NO以外の解答形式もある質問に対しての答えから疾患の原因として可能性の高い(信頼度)順にいくつかの細菌を理由とともに示すだけでなく、体重などの情報から治療コースの提案も行うこともできる。
MYCINの性能は診断正解率が65%と細菌感染を専門としない医者より高かったものの、専門医の診断正解率80%には至らなかった(スタンフォード大学医学部による調査)
MYCINのプロジェクト自体、性能は悪くなく、開発プロジェクトとしては成功だったが、実際に現場で利用され猫とはなかった。2000年代以降においては、このような信頼度を利用した医療向けのエキスパートシステムが「使えない」と評されるようになり、同様のシステムを開発しても導入が困難であることも多くあった。というのも倫理や法律の問題として、コンピューターによる診断を使って間違った結果を採用した場合、責任問題がクリアにならないこと、また医者が抵抗をもっていることなどがあった。ちなみにこのようなシステムを組む場合には、診断正解率が85〜90%以上、偽陽性や偽陰性ができるだけ少ない(陽性的中率が高い)ことを要求されることが多い。
エキスパートシステムは推論エンジンを利用して判定結果を返す。推論エンジンとはルールを使って推論をするプログラムのことを指す。人間が取り扱うルールは言葉で表現されることで理解できるが、コンピューターが解釈をして処理をするためには、表現をそれに適したものに変える必要がある。そのような表現に関する学問領域は記号論理学とよばれる。
最も基本的なものとして使用されている表現は命題論理とよばれており、真偽値で表現するものを示している。命題論理は命題変数と文演算子(結合子)から構成されている。
命題自体に意味を求めず「かつ」「または」「ならば」などで関係づけることによって、命題の関連性を表現、把握することを目的としている。したがって、命題の意味は分析できないものの、それ以外の命題論理を拡張した論理、例えば述語論理などを利用することで意味づけをすることができる。
命題論理を拡張することで下図のような論理が定量され、推論エンジンとして確立している。
これらの推論エンジンを利用することで、「問い」に対する応答の手段を増やすことができるようになった。
命題論理や術後論理などでは、記号を用いて文章を表現している。命題論理では論理式は論理原子式である命題変数と文演算子によって構成されているが、述語論理ではさらに記号を増やすことで表現の幅をひろげている。記号には以下のようなものがある。
例えば、2つの命題P,Qがあり、それらの真理値(true,falseや0,1で表される)が決まった時、PとQの値によって¬P、P∧Q、P∨Q、P⇒Q、P⇔Qは下図のようになる。
P⇒Qは、(¬P)∨Qと、P⇔Qは(P⇒Q)∧(Q⇒P)と等しいと言える。この表のことを審理表と呼ぶ。
また常に真となる論理式について恒真式(トートロジー)、逆に常に偽となる論理式については恒偽式や矛盾式と呼び、論理式官には下図のような恒真式、つまり同値関係が存在する。
これらの論理式がいくつも組み合わさったような形で示されている推論規則は、節形式(clause form)への変換が可能になっている。節形式にすることによって、複雑な論理式であってもまとめ上げて扱いやすくすることができる。節形式に変換することは命題論理式では連言標準形、述語論理式ではスコーレム標準形への変形と呼ばれている。連言標準形の場合、節(clause)は論理式が選言で結合された論理式となる。例えば下図のようなものがある。
スコーレム標準形への変形の際、スコーレム関数による存在記号の除去という操作が行われる。このとき∀x1∃x2¬P(x1,x2)はx1からx2を対応つけることが可能ということを意味するため、f(x1)とすることができ、また∃x3∀x4R(x3,x4)については、x3は何かしら存在するものであるので定数aに置き換えることができ、そして最後の各節の変数の独立化では、分配律の適用の手順におけるC1とC2に含まれるx4とx1はそれぞれ独立であることの方が便利な為、x2とx3に置き換えることで独立化を行った。
これらの推論エンジンや推論規則の変形を行うことで、知識ベースへの問合せを効率的に行うことができるようになるなどの効果がある。
このように人工知能とは、「推論エンジンによって実現していることをどれだけ人間の手助けなしに実行可能であるか」という側面があると言える。問題の定式化を行う際に、これらの推論運人で行なっていることの一部を人間があらかじめ行なっておくことで、プログラムで処理する問題をできるだけ限定する。1970年台においては「これらの推論エンジンを駆使してもあらゆる問題に対応する人工知能を作り出すことに限界がある」と言われてきた。これらの限界については記号創発問題などと呼ばれている。
エキスパートシステムの例として示した質量スペクトルを使った物質の科学構造を推測するプログラムのようなものの別の利用例として、現在広く使われているシステムではレコメンドエンジンがある。
レコメンドエンジンは電子商取引サイトなどで「この商品を見た後に買っているのは?」といったような、サイト訪問者に類似した商品の推薦をするシステムとなる。これは、「訪問者が見ている情報をキーワードとして似ているものを表示せよ」という問合せを行うエキスパートシステムとも言える。
レコメンドエンジンは大きく2種類のタイプに分けることができる。一つはないように基づいて推薦を行うもの、もう一つは訪問者の閲覧履歴や勾配履歴などのサイト訪問者固有の情報を利用して推薦を行うものとなる。
ないように基づいたレコメンドエンジンでは、訪問者に関する情報は使用しないで単純に手元にある情報(電子商取引サイトであれば商品に関する情報、ニュースサイトであれば記事に関する情報)から関連性のある内容を計算によって求めることができる。
知識ベースとして手元にある情報から例えば、タイトルやジャンルなどの情報を構成する要素のほかにも計算によって導き出される別のデータ表現がある。情報を構成する要素や計算によって導き出されるデータ表現のことは、一般に特徴量と呼ばれている。また計算によって導く処理のことを特徴量の抽出と呼ぶ。
例えば、Aさんが熊本地震に関するニュース記事を見ているとする。このときAさんに次に読む記事として、どのようなものを提案するかということが「レコメンドエンジンが解決するべき課題」となる。(下図)
記事にはそれぞれに設定されたキーワードがあるとする。これらのキーワードから特徴量を作り出すことができる。
複数の記事や文章などのデータに頻繁に共通して存在している複数の構成要素、例えばキーワードや単語などがある状態を共有していると言い、その状態について表現しているものを共起パターンや共起表現と呼ぶ。(下図)
このような共起表現のデータが得られたことにより、記事の関連性を計算することができるようになる。(下図)
たとえば記事aと記事bの関連性をそれぞれそキーワードのうち共通しているものの割合(2つのキーワードの数のうち、共通して存在するキーワードの数の割合を計算する)によって決定するように決めた場合、記事同士の関連性は総当たりで計算することができる。
この処理によって、記事aに近い内容の記事を近い順に並べることが可能となる。この場合では、記事aに近いものは順に記事d>記事b=記事cという並びになる。
この例では「記事にキーワードが設定されている」という前提だったが、テキスト処理を計算によって行うことで特徴量の抽出を行うことも可能となる。また、単純に近い内容の記事を集めただけでは、ほとんど同じ内容の記事ばかりになってしまうため、過度に類似した記事ばかりにならないような方法が別途必要になる。
閲覧履歴や購入履歴などのサイト訪問者固有のデータを利用してより訪問者に適した推薦をするために協調フィルタリングというアルゴリズムが利用される。代表的なものでは、アマゾンが採用しているものがある。
先述のないように基づいた水栓では、記事官のキーワードの共起性を導き出して関連性を定義することで内容が近いものを抽出していた。それに対して、訪問者固有の履歴の情報と訪問者以外の情報についての共起性を利用して相関分析をすることで個別化された推薦を行う。つまり「自分と似た行動や評価をしている人がいれば、その人の行動や評価を自分もするだろう」という仮説に基づいての推薦となる。
ターゲットである、サイト訪問者Xさんとそれ以外のA〜Eさんが10ある商品についてその商品ページを閲覧後に購入したかどうかを0、1で示したデータがあるとする。(下図)
データがないところはハイフンで示している。ここでの問題は「Xさんの購買記録から、次にXさんにお薦めする商品として最もふさわしいのはどれか」という、「商品についてのおすすめ度を計算しなさい」というところにある。
まずXさんについて記録のある商品2,3,8,9,10の5つについて、他の5人で共通している購買記録のある商品を対象にその0,1の値の相関係数を計算する。ここでは一般に用いられているピアソンの積律相関係数を求める。例えばXさんとAさんの相関係数は下図のようにして計算される。
結果は下図のようになる。他の4人についてもどうように相関係数を求めることができる。すると、正の相関(同じ購買履歴がある)を持つもので0.5以上の人が3人(Cさん、Dさん、Eさん)いることがわかる(下図)
本来ならば対象の選び方は別に検討する必要があるが、次はみの3人を対象にしてXさんへお薦めする商品を選ぶ処理に入る。
Xさんがまだ発見していない商品は1,4,5,6,7の5つがある。Cさん、Eさんで記録があるものについて商品ごとに平均値を計算し、これをおすすめ度とする。合計値をおすすめ度にしなかったのは、欠損しているところの影響を考慮したためによる。そうすることで、Xさんと購買行動が似ていそうな3人のデータから、Xさんが見ていない商品で最も購入に至りそうな商品を計算によって見つけ出すことができる。今回の場合は、商品5のおすすめ度1.00が一番高い値となるので次にXさんにお勧めするのは商品5となる。
下図の例では0,1によって記録がつけられていたが、よく知られているレコメンドエンジンでは5段階評価で表現したものを用いている。
コメント
[…] ルールベースと知識ベース、エキスパートシステムと関係データ […]
[…] ルールベースと知識ベース、エキスパートシステムと関係データ […]