Transcript 不完全な知識
不完全な知識
不完全な知識に基づく問題解決
フレーム問題
制約条件記述問題
非単調推論
極小限定
常識の定式化
並列極小限定
©2008 Ikuo Tahara
1
論理に基づく問題解決
問題解決の枠組み
質問(論理式)
知識
答
(論理式集合)
推論規則
問題解決が可能であるための条件
知識は完全である.
知識は無矛盾である.
©2008 Ikuo Tahara
2
積木の問題
A
A
B
B
初期状態
ontable( A, S0 ) ontable(B, S0 )
目標状態
s.on( A, B, s)
PICKUP( x)
xs.[ontable( x, s)
holding ( x, after ( pickup( x), s))]
STACK ( x, y)
xys.[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), S0 ))
©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)
xs.[ontable( x, s)
holding ( x, after ( pickup( x), s))]
STACK ( x, y)
xys .[holding ( x, s)
on( x, y, after (stack ( x, y), s))]
フレーム言明
xys.[(ontable( x, s) diff ( x, y))
ontable( x, after ( pickup( y), s))]
オペレータの非作用
に関する言明
xys .[(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)
xs .[holds(ontable( x), s)
holds(holding ( x), after ( pickup( x), s))]
STACK ( x, y)
xys .[holds(holding ( x), s)
holds(on( x, y), after (stack ( x, y), s))]
PICKUPに関する言明
フレーム言明
f xs.[(holds( f , s) diff ( f , ontable( x)))
holds( f , after ( pickup( x), s))]
STACKに関する言明
f xys.[(holds( f , s) diff ( f , holding ( x)))
holds( f , after (stack ( x, y), s))]
©2008 Ikuo Tahara
11
フレーム公理
様相記号の導入
M : は他の主張と矛盾しない
推論規則: が定理でない限り M は定理である
フレーム公理
f gs.[(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