320 likes | 844 Views
人工知能 探索( 3 ) 先を読んで知的な行動を選択するエージェント. 知識を用いる探索 ─ ヒューリスティック探索 ─ (Heuristic Search). 最良優先探索 均一コスト探索 欲張り探索 A * 探索 ヒューリスティック関数について. 最良優先探索の具体的な例. 復習:一般的探索アルゴリズム. 展開する = 子 を産む. A. 未展開 ノードは 待ち行列 に並べる. 待ち行列. 子から親へのポインタ. S. T. Z. 必ず先頭から取り除き 展開する. F. F. A. O. R.
E N D
人工知能 探索(3) 先を読んで知的な行動を選択するエージェント 知識を用いる探索─ ヒューリスティック探索─(Heuristic Search) • 最良優先探索 • 均一コスト探索 • 欲張り探索 • A* 探索 • ヒューリスティック関数について 最良優先探索の具体的な例
復習:一般的探索アルゴリズム 展開する=子を産む A 未展開ノードは待ち行列に並べる 待ち行列 子から親へのポインタ S T Z 必ず先頭から取り除き展開する F F A O R 戦略に基づいて適切な位置に挿入 子 B
経路コストの導入 初期状態 O 経路コスト 71 N 87 75 Z 151 I 140 A 92 99 S F V 118 80 最適解 211 T 142 R ゴール 111 97 L P H 70 85 98 146 U 86 101 B M E 75 138 120 90 D C G
最良優先探索(best-first search) 待ち行列 A 5 T7 Z10 O15 R16 コスト関数(cost function)の小さい順になるよう挿入 コスト>0 B8 • コスト関数の決め方によっていろいろなバリエーションがある • 1.均一コスト探索 • 2. 欲張り探索 • 3. A* 探索 ベストに見えるものを優先的に展開
初期状態 現在状態 a0 b5 n8 5 3 1.均一コスト探索(unform cost search) 初期状態からそのノードn までの経路コスト g(n)をコスト関数とする最良優先探索 ゴールに向かってのシャープな探索になっていない g(n) = 5+3 = 8 全オペレータのコスト=1なら,幅優先探索と同じ動作となる
均一コスト探索の実行 オペレータのコスト 経路コスト g(n)の低い順に展開 0 4 1 経路コスト1+2=3 1 4 待ち行列 2 1 2 3 3 2 6 7 9 2 7 7 12 5 9 9 IN OUT 経路コスト g(n) の昇順になるように挿入 8
均一コスト探索の最適性 ただし,オペレータのコストは非負とする S 0 A 1 10 15 1 start goal 5 A B C 5 5 1 5 15 S B G 10 5 15 5 G G 11 10 C 展開のために選択してゴールと判定 展開のために選択したときにゴールと判定する
均一コスト探索の性質 • 最適性(optimality) あり最適解を最初に見つける • 完全性(completeness) あり解があれば必ず見つける • 時間計算量(time complexity)指数的 bd(b:分枝率,d:解の深さ) • 空間計算量(space complexity)指数的 bd 幅優先探索と同じ
2.欲張り探索(greedy search) そのノードnからゴールまでの予想コスト h(n)をコスト関数とする最良優先探索 初期状態 現在状態 a0 b5 n8 5 3 h(n) ヒューリスティック関数ノードからゴールまでの最短経路コストの見積りこれの小さい順に展開 ゴール g
ヒューリスティック(heuristic)とは? • 語源: アルキメデスが風呂で浮力の法則を発見したときに叫んだ”Heurika !”(ユーリカ!発見した!) • 経験から発見した知識のこと • 最悪ケースの性能は必ずしも上げないが,平均的にはたいていの場合はうまくいく手法
ヒューリスティック関数の例:直線距離 初期状態 Z 374 h(n) = nからゴールまでの直線距離 A S 253 ゴール 329 T B
欲張り探索は最適解を見つける保証がない hの値(直線距離) 欲張ってこっちにこだわった (欲張り探索) 374 Z 253 A 178 99 366 S F しかし多くの場合うまくいく 80 329 T 211 193 R 97 P 101 最短経路はこちら!(最適性がない) B 0
欲張り探索は解を見つける保証(完全性)がない欲張り探索は解を見つける保証(完全性)がない 374 Z 253 A 366 S 150 T 不適切なヒューリスティクス 150 T1 B 0 150 T2
欲張り探索の性質 • 最適性(optimality) なし 最適解を見つける保証がない • 完全性(completeness) なし 解を見つけないことがある • 時間計算量(time complexity)bm (m: 探索木の最大の深さ) • 空間計算量(space complexity)bm 深さ優先探索と同じ
エイスター 3.A* 探索(A* search) 経路全体の予想コスト f(n)=g(n)+h(n)(ただし,h(n)は許容的なヒューリスティック関数)をコスト関数とする最良優先探索 初期状態 n8 現在状態 5 3 g(n) h(n) ゴール ここまでのコスト ここからの予想コスト f(n)=g(n)+h(n)n経由の最短経路の見積もりコスト これの小さい順に展開
許容的ヒューリスティック(admissible heuristic) 予想最小コスト h(n) ≦ 実際の最小コスト h*(n)を満たすヒューリスティック関数のこと 楽観的(optimistic)ヒューリスティックとも言う 初期状態 A 予想最小コスト h(n)直線距離 S 253 ゴール R P 実際の最小コスト h*(n)=278 B • ヒューリスティクスが許容的と限らないときは,Aアルゴリズムと呼ぶ.
A* 探索の性質 • 最適性(optimality) あり! 最初に見つけた解は最適解 • 完全性(completeness) あり! 解があれば必ず見つける • 時間計算量(time complexity) • 空間計算量(space complexity) ヒューリスティックの精度に依存
経路コスト O h 関数の値(直線距離) 71 380 Z 75 374 151 A S 366 253 F 140 178 118 99 80 T 193 329 R 211 97 P 98 B 146 101 0 138 C 160 A*が最初に見つける解は最適解 O 526 380 Z 75 449 374 151 A 366 S 366 253 F 140 393 178 118 417 99 80 T 447 193 329 R 211 413 97 P B 98 415 450 B 146 101 418 0 138 C 526 C 615 最適解 160
A*探索の振る舞い(1) 単調性 526 探索木に沿ったすべての経路で f のコストは非減少 449 366 393 417 447 413 415 450 418 526 615 • しかし,すべての問題が単調性が成り立つわけではない.
A*探索の振る舞い(2) 単調性の定義 三角不等式に似ている 単調性 • 先へ進んで,情報が得られてくるほど,楽観性が弱くなる n h(n) c(n,n') ゴール n' h(n')
A*探索の振る舞い(3) 等高線 A*アルゴリズムは f 値の山をゴールに向かって,見落としなく(シャープに)単調に登っていく 449 526 f = 366の等高線 366 393 413 415 417 418 393 417 最適解の等高線 447 413 準最適解 415 • 最適性あり! • 完全性あり! 450 526 418 615 • 実際には,単調性がなくても,最適性と完全性がある.
最良優先探索の比較 幅優先的 深さ優先的 ヒューリスティクス次第 • つねに h(n)=0とすれば,A*は均一コスト探索と一致する.
ヒューリスティック関数について • ヒューリスティックの優位性 • 8パズルのヒューリスティック • ヒューリスティック関数の作り方
ヒューリスティックの優位性 実際の値 すべてのノード nにおいてh1(n)≦ h2(n)≦ h*(n) h2はh1より優位 h1で展開されたノード ⊆ h2で展開されたノード
8パズルのヒューリスティック関数 初期状態 ゴール 3 1 2 5 4 8 4 6 1 8 7 6 5 3 7 2 • 候補1 h1=ゴールの位置にないタイルの数.上の例では7. • 候補2 h2=各タイルのゴール状態までのマンハッタン距離 の和.上の例では18. 2 +3 +3 +2 +4 +2 +0 +2 =18 ■どちらも許容的(楽観的) ■h2はh1より優位.
ヒューリスティック関数の作り方(1) 弱条件問題緩和問題(relaxed problem) = オペレータに対する制限を減らして 解きやすくした問題 8パズルの場合:となりにタイルが置いてあってもそこに動かせる • 弱条件問題の正確な解のコストが元の問題の良いヒューリスティクスになっていることが多い
ヒューリスティック関数の作り方(2) 弱条件問題の自動生成 AからBへタイルを動かせる → AがBのとなり & Bが空 relax h2 AからBへタイルを動かせる → AがBのとなり h1 AからBへタイルを動かせる → Bが空
ヒューリスティック関数の作り方(3) h1,h2,…,hmという許容的ヒューリスティクスがあり,どれも他の優位にないとき,どれを選ぶか? h(n) = max (h1(n), h2(n), …, hm(n) ) ■ hは一つひとつの関数より優位
ヒューリスティック関数の作り方(4) 統計情報の利用 h2(n)=14 → 90%の確率で実際の距離=18 許容性の保証はなくなるが平均的に効率が向上する h(n)=18
ヒューリスティック関数の作り方(5) 状態の「特徴」の利用 将棋の例 h(n)=α×駒の得点の差 +β×駒の働きの差 +γ×玉の囲いの差 αβ γ:学習アルゴリズムで値を調整する