08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)

25
08 人人人人 人人人人人人人人人 4: 人人人人人人人人人人人人 () 2008 May2 人人人人人 人人 A

Upload: tad

Post on 27-Jan-2016

46 views

Category:

Documents


7 download

DESCRIPTION

08 人工知能4:知識を用いる探索法 (ヒューリスティック探索). 2008 May2 田中美栄子(知識 A ). ヒューリスティック という概念を知る. これまでは知識を用いない探索 ( blind search )であった、、. 対象とする事柄に対し多少とも知識を持っている場合、ヒューリスティック・サーチが可能   ( Heuristic search :発見法的な探索) こういうときはこうするのがよい、という選択ができる、但し 100% 信頼は出来ない (うまく行くことが多い、または過去にうまく行ったことがある). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)

08 人工知能4:知識を用いる探索法

(ヒューリスティック探索)

2008 May2

田中美栄子(知識 A )

Page 2: 08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)

ヒューリスティック

      という概念を知る

Page 3: 08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)

これまでは知識を用いない探索( blind search )であった、、

• 対象とする事柄に対し多少とも知識を持っている場合、ヒューリスティック・サーチが可能

  ( Heuristic search :発見法的な探索)

• こういうときはこうするのがよい、という選択ができる、但し 100% 信頼は出来ない

• (うまく行くことが多い、または過去にうまく行ったことがある)

Page 4: 08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)

Heuristic :発見に役立つモノ(定義曖昧)

• 1957 Newell, Shaw, Simon の定義

「ある与えられた問題を解くかも知れないが、その可能性が保証されていないプロセス」

(つまり保証付きでない方策、といっている)

• 1961 : 問題解決の動作効率を改良するヒント

Page 5: 08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)

Heuristic :発見に役立つ知恵(定義曖昧)

1963   Feigenbaum と Feldman による定義:

 「 rule   of thum  のことである」

   親指で1インチを測る程度の大雑把で、巨大な探索空間を大幅に制限する為の戦略、仕掛け、単純化、等の方法

解を保証しないが、多くの場合に良い解を提供する

後になってそれが,最適解だった,と判ることもある

Page 6: 08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)

ロボットの迷路抜け• ( 1,1 )から( 4,4 )へ

(4,4)

(1,1)

(1,1)

(2,3)

(2,3)

(2,4)

(1,4)

(1,4) (2,4) (3,4)

(3,3)

(2,2)

(3,1)

(3,2)(3,4)

(4,4) (3,3)

(2,2)

2

4

(3,2)

(3,1)

Page 7: 08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)

知識を用いない探索( blind search )

• 解がどのあたりにあるかの見当がつかない場合、総当たり的に探す (Brute-force search)

• 深さ優先探索( Depth-first-search)

• 幅優先探索( Breadth-first-search)

• 最適探索( Optimal-search) 複数解のうち,最適解

Page 8: 08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)

Depth-1ST 深さ優先探索( graph )depth-first-search algorithm{1.初期節点を open リストに入れる2.   if(open==empty)break; (探索失敗)3.   n=first(open);4.   i f (goal(n))print(n);break; (探索終了)5.   remove(n,open);   add(n,closed);6.  次に調べる節点を open に入れる (n を展開

し、全ての子節点 ni を open の先頭に入れる ) 。

   ni から n へポインタを付けておく。7.  2へもどる}

Page 9: 08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)

Depth-1st : S→A→B→D→E→G

• OpenList

1) S

2) A

3) BC

4) DEC

5) EC

6) GFC

S(1,1)

A(2,3)

B(2,4)

D(1,4) E(3,4)

G(4,4) F(3,3)

C(2,2)

2

4

H(3,2)

I(3,1)

Page 10: 08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)

Breadth-1ST 幅優先探索( graph)breadth-first-search algorithm {1.初期節点を open リストに入れる2.   if (open == empty) break; (探索失敗)3.   n = first (open);4.   i f (goal(n)) print(n); break; (探索終了)5.   Remove (n, open);   add (n, closed);6.  次に調べる節点を open に入れる (n を展開し

全ての子節点 ni を open の最後に入れる ) 。    ni から n へポインタを付けておく。7.  2へもどる}

Page 11: 08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)

Breadth-1st : S→A→B→C→D→E→H →I→ G• OpenList 1) S 2) A 3) BC 4) CDE 5) DEHI 6) EHI 7) HIGF 8) IGF 9) GF

S(1,1)

A(2,3)

B(2,4)

D(1,4) E(3,4)

G(4,4) F(3,3)

C(2,2)

2

4

H(3,2)

I(3,1)

Page 12: 08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)

Optimal-search 最適探索optimal-search algorithm {1.初期節点を open リストに入れる2.   if (open == empty) break; (探索失敗)3.   n = first(open);4.   i f (goal(n)) print(n); break; (探索終了)5.   remove(n,open);   add(n,closed);6.  次に調べる節点を open に入れる (n を展開し、

全ての子節点 ni を open に入れ、コストの昇順に並べる )

   ni から n へポインタを付けておく7.  2へもどる }

Page 13: 08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)

最適探索 optimal search

• 状態空間がグラフで表され• 状態遷移の枝に出発点からのコスト 

g(n)  が計算済み• この時、ステップ6で open の中身をコス

トの昇順に並べ、一番最初にコスト最小の節が来るようにする

• 解が複数ある場合など、最小コストの解を探せる

Page 14: 08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)

Optima l: S→B→E→A→F→G2

• OpenList

1) S (0) 2) B ( 1)A(4)

3) E(3)A(4)F(4)

4) A(4)F(4)G1(6)H (7) 5) F(4)C (5) G1(6)H(7)

6) G 2(5) C (5) G1(6)D(6)I(6)H(7)

S

A B

D

E

G1

F

C2

4

HI G

1 2 2

4

3

13

Page 15: 08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)

これまでは知識を用いない探索( blind search )であった、、

• 対象とする事柄に対し多少とも知識を持っている場合、ヒューリスティック・サーチが可能

  ( Heuristic search :発見法的な探索)

• こういうときはこうするのがよい、という選択ができる、但し 100% 信頼は出来ない(うまく行くことが多い、または過去にうまく行ったことがある)

Page 16: 08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)

探索の基本アルゴリズム• Search algorithm{• 1.初期節点を open リストに入れる• 2.   if(open==empty)break; (探索失敗)• 3.   n=first(open);• 4.   i f (goal(n))print(n);break; (探索終了)• 5.   remove(n,open);• 6.  次に調べる節点を open に入れる ( 順

序)• 7.  2へもどる}

Page 17: 08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)

Heuristic search (1)最良優先探索: best-first-search

各節点からゴールまでのコスト(距離) h(n) が予想出来るとき

   全コストは f (n) = g(n)+h(n)

h(n) の正確な値がわからないとき、予測値 h’(n) で代用

• ステップ6で予想値 h’(n) の昇順に並べる

(次の例参照:出口までのx距離とy距離の和とする:                       → 駄目か

も知れない)

Page 18: 08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)

問題点

ヒューリスティック関数 h’  の推定が間違っていれば失敗

Page 19: 08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)

Heuristic :ヒントを多用して解を発見

例:迷路問題

ヒューリスティック関数  h’ :h’(n)= 状態 n から終点 G までの距離の推定値,と仮

     h’(n) =| n x ー  G x| + | ny  ー  Gy|

迷路の形次第で成功することも失敗することもあるゼッタイに正しいかどうか解らないが使えそうなヒ

ント

Page 20: 08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)

h  = 点 n から目標地 G までの推測コスト

• S ( 1,1 )から G ( 4,4 )へ

(4,4)

(1,1)

S(1,1)

(2,3)

A(2,3)

B(2,4)

D(1,4)

(1,4) (2,4) (3,4)

(3,3)

(2,2)

(3,1)

(3,2)E(3,4)

G(4,4) F(3,3 )

C(2,2)

2

4

H(3,2) I(3,1)

Page 21: 08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)

h =|n の x 座標 -G の x 座標 |+| n の y 座標 -Gの y 座標 |

• S ( 1,1 )から G ( 4,4 )へ

(4,4)

(1,1)

S(1,1)6

(2,3)

A(2,3)3

B(2,4)2

D(1,4)3

(1,4) (2,4) (3,4)

(3,3)

(2,2)

(3,1)

(3,2)E(3,4)1

G(4,4)0 F(3,3 )

C(2,2)4

2

4

H(3,2)

I(3,1)

Page 22: 08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)

A*- アルゴリズムA*-search algorithm{

1.初期節点を open リストに入れる2.   if(open==empty)break; (探索失敗)3.   n=first(open);

4.   i f (goal(n))print(n);break; (探索終了)5.   remove(n,open);   add(n,closed);

6.  次に調べる節点を open に入れる (n を展開し、全ての子節点 ni を open に入れ、推定コスト f(ni)の昇順に並べる )

   ni から n へポインタを付けておく

7.  2へもどる}

Page 23: 08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)

A*- アルゴリズムと A- アルゴリズム

推定コスト   f(ni)=g’(ni)+h’(ni)

A* の条件  推定値 h’(ni)   <=  本当の値 h(ni)

(この条件が成立しなければ A-search  となる. A-Search  ならば 解は保証されない )

g’(ni) は g(ni) の推定値だが、出発点から ni までの、解っているコストの内で最小のもの。

Page 24: 08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)

A*-algorithm : S→A→B→E→G

• OpenList

1) S (6) 2) A (6) 3) B (6) C (8) 4) E (6) D (8) C (8) 5) G(0)D(8)C(8)

S(1,1) 6

A(2,3)3

B(2,4)2

D(1,4)3

E(3,4)1

G(4,4)0

F(3,3)

C(2,2) 4

2

4

H(3,2)

I(3,1)

1 1

Page 25: 08 人工知能4:知識を用いる探索法 (ヒューリスティック探索)

h  = 点 n から目標地 G までの推測コスト

• S ( 1,1 )から G ( 4,4 )へ

(4,4)

(1,1)

S(1,1)

A(2,3)

B(2,4)

D(1,4)

(2,4) (3,4)

(3,3)

(2,2)

(3,1)

(3,2)E(3,4)

G(4,4) F(3,3 )

C(2,2)

2

4

H(3,2) I(3,1)

(2,3)(1,3)