2.問題の表現
問題の表現人工知能により問題解決を行うには、まずその問題を機械(人工知能)に正しく伝えなくてはなりません。一般的には、記号(symbol)を用いて記述(description)することで問題を人工知能が解ける形に表現(respresentation)します。
この表現がまずいと人工知能が問題を解くことは困難となり、逆に問題をうまく表現できれば容易に解くことができるわけです。人間が何かの問題を解くような場合と基本的に同じです。問題を解くには何を求めればいいのか、どんな情報が与えられているのか、といったことが正確に把握でき、そのモデルを正しく作ることができれば問題をうまく解くことができます。
例えば、算数のテストで文章題が出たとき、始めにどんな情報が与えられているのかと何を求めなければいけないかを整理しなくてはいけませんね?人工知能を作ろうと思ったら同じことをする必要があるわけです。
それでは、問題の表現とはどういうことでしょう?
例えば方程式も問題の表現法の一つです。方程式は数量的な情報を表すにはとても良い表現法です。方程式で表現された問題は数学的な知識だけで解くことができます。また、数学的知識というのは無矛盾であり、人工知能に向いた知識といえます。
しかし、方程式だけで数量的でないような問題、論理的な知識を用いるような問題(意思決定問題など)を表現しようというのは難しいです。例えば、献立に関するエキスパートシステムを作るとします。すると、用意した献立のカロリー計算をするにはすべてを数式で表すことはできますが、どんな献立がいいのかを教えてくれるシステムを作ろうと思ったら単純に数式だけで表現するのは難しそうです。
図2.1 方程式による問題の表現
献立の場合は、その人の体調や気分など不確定な要素が多いので難しそうですが、このような状況分析と判断を行いたいときで、その対称が論理的な説明で言い表せるような場合、述語論理という手法がよく知られています。ここで述語論理について詳しい説明はしませんが、無矛盾で論理的整合性のある問題を扱うとき、述語論理は非常に優れています。
二つの知識 | |
HUMAN(x) | : xは人間である |
HUMAN(x)MORTAL(x) | : xが人間ならば、xは死ぬ |
があるとき | |
HUMAN(Taro) | : Taroは人間である |
という仮定をすれば | |
HUMAN(Taro)MORTAL(Taro) | |
となり、 | |
MORTAL(Taro) | : Taroは死ぬ |
が導き出せる | |
図2.2 述語論理の例 | |
---|---|
手順の表現
問題解決を行うために次に重要となることに、問題解決のための手順(プロセス)の表現があります。計算によりデータ処理を行った場合、工場で作業を行ってプロセスを進めた場合、状態は次々変化していきます。プロセスを表現する代表的なものにグラフがあります。ここで言うグラフはx軸やy軸があるようなグラフではなく、下の図のようなもので、節点(node)と枝(branchまたはedge)から構成されています。
図2.3 グラフ
節点は一つの状態を表し、枝はその節点から直接変化可能な状態(節点)とを結びます。つまり、現在の状態からは、枝で結ばれた状態へ変化できるということになります。
例えば、積み木の問題を考えるとすると、節点が積み木の置き方を表し、枝は一手で作れる置き方とをつないでいます。
図2.4 積み木のグラフ(一部)
状態の変化が一方向のみ(不可逆)であるような場合には、枝を矢印とした有向グラフにより表すことができます。また、ある節点へ複数の経路を持たない(閉路を持たない)ような有向グラフを木(tree)と言います。木では、一番初めの節点を根(root)、一番末端(行き止まり)の節点を葉と言います。
図2.5 有向グラフと木
問題をこの木構造で表現できると、問題解決のための手順(プロセス)の探索が容易になります。なぜなら、すべての探索経路の可能性が列挙されていて、またその経路の長さ(深さ)もひと目でわかるからです。
一般に問題を木構造で表し、探索しやすく表現したものを探索木と呼びます。有向グラフで表現したときに閉路が作られているような問題では、一つの節点を経路ごとに別々に書いて、それぞれの経路をはっきりさせます。探索木の例を下図に示します。
図2.6 探索木の生成例
人工知能の問題解決では、まず問題をうまく表現することが重要となってきます。問題を正しくモデル化し、探索木を生成できるようになれば、さまざまな探索法をそこに適用することができるようになります。