人工知能の基礎知識

不完全な知識

不完全な知識に基づく問題解決




フレーム問題
制約条件記述問題
非単調推論
極小限定


常識の定式化
並列極小限定
©2008 Ikuo Tahara
1
論理に基づく問題解決

問題解決の枠組み
質問(論理式)
知識
答
(論理式集合)
推論規則

問題解決が可能であるための条件


知識は完全である.
知識は無矛盾である.
©2008 Ikuo Tahara
2
積木の問題
A
A
B
B
初期状態
ontable( A, S0 )  ontable( B, S 0 )
目標状態
s.on( A, B, s)
PICKUP( x)
xs.[ontable( x, s )
 holding ( x, after ( pickup ( x ), s ))]
STACK ( x, y)
xys.[holding ( x, s )
 on( x, y, after ( stack ( x, y ), s ))]
©2008 Ikuo Tahara
3
積木の問題

導出反駁
on( A, B, s)
holding ( x2 , s2 )  on( x2 , y2 , after ( stack ( x2 , y2 ), s2 ))
{x2 / A, y2 / B, s / after (stack ( A, B), s2 )}
holding ( A, s2 )
ontable( x1 , s1 )  holding ( x1 , after ( pickup( x1 ), s1 ))
{x1 / A, s2 / after ( pickup( A), s1 )}
ontable( A, s1 )

解
ontable( A, S0 )
{s1 / S0 }
s  after ( stack ( A, B ), after ( pickup ( A), S 0 ))
©2008 Ikuo Tahara
4
積木の問題再考

目標状態の記述変更
A
B
s.on( A, B, s)
物理的状態は同じであるがよ
り詳細な記述にした.
s.[on( A, B, s)  ontable( B, s)]
©2008 Ikuo Tahara
5
積木の問題再考

導出反駁
on( A, B, s)  ontable( B, s)
holding ( x2 , s2 )  on( x2 , y2 , after ( stack ( x2 , y2 ), s2 ))
{x2 / A, y2 / B, s / after (stack ( A, B), s2 )}
holding ( A, s2 )  ontable( B, after (stack ( A, B), s2 ))
ontable( x1 , s1 )  holding ( x1 , after ( pickup( x1 ), s1 ))
{x1 / A, s2 / after ( pickup( A), s1 )}
ontable( A, s1 )  ontable( B, after ( stack ( A, B), after ( pickup( A), s1 )))
ontable( A, S0 )
{s1 / S0 }
ontable( B, after (stack ( A, B), after ( pickup( A), S0 )))
©2008 Ikuo Tahara
6
積木の問題再考

導出反駁
on( A, B, s)  ontable( B, s)
holding ( x2 , s2 )  on( x2 , y2 , after ( stack ( x2 , y2 ), s2 ))
{x2 / A, y2 / B, s / after (stack ( A, B), s2 )}
「AをpickupしてBにstackした後,Bは
holding ( A, s2 )  ontable( B, after (stack ( A, B), s2 ))
テーブル上にあるか?」
ontable( x1 , s1 )  holding ( x1 , after ( pickup( x1 ), s1 ))
{x1 / A, s2 / after ( pickup( A), s1 )}
ontable( A, s1 )  ontable( B, after ( stack ( A, B), after ( pickup( A), s1 )))
ontable( A, S0 )
{s1 / S0 }
ontable( B, after (stack ( A, B), after ( pickup( A), S0 )))
©2008 Ikuo Tahara
7
積木の問題再考

この問題解決に必要な知識は?
オペレータの作用
に関する言明
PICKUP( x)
xs.[ontable( x, s )
 holding ( x, after ( pickup ( x ), s ))]
STACK ( x, y)
xys .[holding ( x, s )
 on( x, y, after ( stack ( x, y ), s ))]
フレーム言明
xys.[(ontable( x, s )  diff ( x, y ))
 ontable( x, after ( pickup ( y ), s ))]
オペレータの非作用
に関する言明
xys .[(ontable( x, s )  diff ( x, y ))
 ontable( x, after ( stack ( y, x), s ))]
©2008 Ikuo Tahara
8
ontable( B, after (stack ( A, B), after ( pickup( A), S0 )))
ontable( x3 , s3 )  diff ( x3 , y3 )  ontable( x3 , after(stack ( y3 , x3 ), s3 ))
{x3 / B, y3 / A, s3 / after ( pickup( A), S0 )}
ontable( B, after ( pickup( A), S0 ))  diff ( B, A)
diff ( B, A)
ontable(B, after ( pickup( A), S0 ))
ontable( x4 , s4 )  diff ( x4 , y4 )  ontable( x4 , after( pickup( y4 ), s4 ))
{x4 / B, y4 / A, s4 / S0}
ontable( B, S0 )  diff ( B, A)
diff ( B, A)
ontable( B, S0 )
ontable( B, S0 )
9
フレーム言明

フレーム言明の数 ≒オペレータの数×述語の数
記述量の軽減

述語holdsの導入
holds( f , s) : f という事実が s という状況で成り立つ

初期状態の記述
holds(ontable( A), S0 )  holds(ontable( B), S0 )

目標状態の記述
s.[holds(on( A, B), s)  holds(ontable( B), s)]
©2008 Ikuo Tahara
10
フレーム言明
オペレータの記述
PICKUP( x)
xs .[holds (ontable( x ), s )
 holds (holding ( x), after ( pickup ( x ), s ))]
STACK ( x, y)
xys .[holds (holding ( x), s )
 holds (on( x, y ), after ( stack ( x, y ), s ))]
PICKUPに関する言明
フレーム言明
f xs.[(holds ( f , s )  diff ( f , ontable( x)))
 holds ( f , after ( pickup ( x), s ))]
STACKに関する言明
f xys.[(holds ( f , s )  diff ( f , holding ( x)))
 holds ( f , after ( stack ( x, y ), s ))]
©2008 Ikuo Tahara
11
フレーム公理

様相記号の導入
M  :  は他の主張と矛盾しない
推論規則:   が定理でない限り M  は定理である
フレーム公理
f gs.[(holds( f , s)  M holds( f , after ( g , s)))
 holds( f , after ( g , s))]
オペレータの記述にその適用後成立しなくな
る事柄を追加する必要がある.
©2008 Ikuo Tahara
12
フレーム公理を含むプログラム



初期状態
holds(ontable(a),s0).
holds(ontable(b),s0).
オペレータ
holds(holding(X),after(pickup(X),S)) :holds(ontable(X),S),
asserta(ends(holds(ontable(X),after(pickup(X),S)))).
holds(on(X,Y),after(stack(X,Y),S) :holds(holding(X),S),
asserta(ends(holds(holding(X),after(stack(X,Y),S)))).
フレーム公理
holds(F,after(G,S)) :- holds(F,S), \+ends(holds(F,after(G,S))).
©2008 Ikuo Tahara
13
フレーム問題

行為(処理)に関係する事柄と関係しない事柄を判断す
る問題
積木Aを移動
A
C


B
C
A
記述に関するフレーム問題
処理に関するフレーム問題
B
B
A
A
擬似的解決:常識
(世界の限定)
人間にも一般には解決不能
©2008 Ikuo Tahara
14
制約条件記述問題(例外記述)

「鳥は飛ぶ」という知識の記述
x.[bird ( x)  fly( x)]
ペンギンは飛ばない
x.[bird ( x)  penguin( x)  fly( x)]
ダチョウは飛ばない
x.[bird ( x)  penguin( x)  ostrich( x)  fly( x)]
©2008 Ikuo Tahara
15
制約条件記述問題

様相記号の導入
M  :  は他の主張と矛盾しない
推論規則:   が定理でない限り M  は定理である
例外を考慮した記述
x.[(bird ( x)  M fly( x))  fly( x)]
各例外の記述
x.[ penguin( x)  fly( x)]
©2008 Ikuo Tahara
16
制約条件記述問題

非単調性
x.[(bird ( x)  M fly ( x))  fly ( x)]
x.[ penguin( x)  fly ( x)]
x.[ostrich( x)  fly ( x)]
bird ( Hanako)
fly( Hanako)
fly( Hanako)
penguin( Hanako)
©2008 Ikuo Tahara
17
非単調推論

推論の非単調性


⇒
Th()  Th()
非単調推論の問題点
知識全体を考えても
得られる結論か?
知識全体
結論
©2008 Ikuo Tahara
18
極小限定


常識の形式化
述語の外延を限定
{x | p( x)  T}
述語極小限定


( p ) :述語 p を含む一階述語論理式
 :任意の述語
( p ) における p の極小限定式
(( )  x.[ ( x)  p( x)])  x.[ p( x)   ( x)]
©2008 Ikuo Tahara
19
述語極小限定の例
x[dog ( x)  animal ( x)]
(( )  x.[ ( x)  p( x)])
 x.[ p( x)   ( x)]
述語 animal の極小限定
(x[dog ( x)   ( x)]  x.[ ( x)  animal ( x)])
 x.[animal ( x)   ( x)]
  dog とすれば
x[dog ( x)  animal ( x)]  x[animal ( x)  dog ( x)]
x[animal ( x)  dog ( x)]
x[animal ( x)  dog ( x)]
©2008 Ikuo Tahara
20
極小限定

並列極小限定

( p; z ) :述語 p と z を含む一階述語論理式



p :限定しようとする性質を表す述語
z :p の極小化に際し解釈を変化させてよい述語
p  q x.[ p( x)  q( x)]  (x.[q( x)  p( x)])
z 可変で ( p; z ) における p の極小限定
Circ[; p; z ]
 ( p; z )   .[( ; )  (  p)]
©2008 Ikuo Tahara
21
並列極小限定の例
x.[(bird ( x)  ab( x))  fly( x)]
bird ( Hanako)
ab(x): xは異常である
(ab; fly)  x.[(bird ( x)  ab( x))  fly ( x)]
bird ( Hanako)
Circ[(ab; fly); ab; fly]  (ab; fly)  x.[ab( x)]
fly( Hanako)
©2008 Ikuo Tahara
22
並列極小限定の例
x.[(bird ( x)  ab( x))  fly( x)]
bird ( Hanako)
fly( Hanako)
(ab; fly)  x.[(bird ( x)  ab( x))  fly ( x)]
bird ( Hanako)  fly ( Hanako)
Circ[(ab; fly); ab; fly]  (ab; fly)
x.[equal ( x, Hanako)  ab( x)]
©2008 Ikuo Tahara
23
極小限定のモデル

極小モデル
Circ[; p; z ] のモデルは (z の外延を可変にした
とき) p に関する  の極小モデルである.
x.[dog ( x)  animal ( x)]
animal
animal
dog
dog
Circ[x.[dog ( x)  animal ( x)]; animal ]
 x[dog ( x)  animal ( x)]
©2008 Ikuo Tahara
極小モデル
述語animalの
外延を比較
24
極小限定のモデル
x.[(bird ( x)  ab( x))  fly( x)]
bird ( Hanako)
述語abの外延を比較
flyの外延を可変にしてabの外延を比較 極小モデル
ab
fly
bird
ab
fly
bird
©2008 Ikuo Tahara
ab
fly
bird
25
極小限定のモデル
x.[(bird ( x)  ab( x))  fly( x)]
bird ( Hanako)
Circ[(ab; fly); ab; fly]  (ab; fly)
x[ab( x)]
極小モデル
ab
fly
bird
fly( Hanako)
©2008 Ikuo Tahara
26