32
1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search) 最良優先探索 均一コスト探索 欲張り探索 * 探索 ヒューリスティック関数について 最良優先探索の 具体的な例 人工知能 探索(3先を読んで知的な行動を選択するエージェント 今回は,知識を用いる探索として,最良優先探索という一般的な考え方のアルゴリズ ムを学び,その具体例として,均一コスト探索欲張り探索* 探索の3つを学ぶ. これらのアルゴリズムにおいては,特定の問題分野に関する「知識」を表現するヒュー リスティック関数というものが重要な役割を果たす.

ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

1

知識を用いる探索─ ヒューリスティック探索─

(Heuristic Search)

最良優先探索

均一コスト探索

欲張り探索

A* 探索

ヒューリスティック関数について

最良優先探索の具体的な例

人工知能 探索(3)先を読んで知的な行動を選択するエージェント

今回は,知識を用いる探索として,最良優先探索という一般的な考え方のアルゴリズムを学び,その具体例として,均一コスト探索,欲張り探索,A* 探索の3つを学ぶ.

これらのアルゴリズムにおいては,特定の問題分野に関する「知識」を表現するヒューリスティック関数というものが重要な役割を果たす.

Page 2: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

2

復習:一般的探索アルゴリズム

T Z

A R

A

S

F O

必ず先頭から取り除き展開する

戦略に基づいて適切な位置に挿入

B

待ち行列

F

展開する=子を産む

未展開ノードは待ち行列に並べる

子から親へのポインタ

これは前回までの復習.

Page 3: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

3

経路コストの導入

A

Z

O

T

L

M

D

S

R

C

PB

G

UH

E

V

IN

F

初期状態

ゴール

経路コスト

1517571

140

118

111

70

75

99

80

146

120

97

101138 90

85 98 86

142

92

87

211最適解

前回は,暗黙に各オペレータのコストは1としていて,あまり気にかけなかったが,今回ではこの図のようにいろいろなコストがある場合を考えよう.初期状態からゴールまでの経路コストが最小の解が最適解である.

Page 4: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

4

T7

Z10

A5

R16

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

O15

B8

待ち行列

コスト関数(cost function)の小さい順になるよう挿入

コスト>0

ベストに見えるものを優先的に展開 コスト関数の決め方によって

いろいろなバリエーションがある

1.均一コスト探索

2. 欲張り探索

3. A* 探索

今回の基本的な考え方は,最良優先探索(best-first search)というものである.

事前に,状態から数値に対応させる何らかの関数をコスト関数として用意しておく.コストは正の数とする.0や負のコストは考えない.また,ノード数が無限個あるときに,n番目のノードのコストが1/n などと,限りなく0に近い正のコストは考えないことにする.した

がって,簡単のため,すべてのコストは正の整数であると考えておけば間違いない.

このアルゴリズムでは,未展開の各ノードのコストを計算し,その小さい順に待ち行列に並べる.

これまでのアルゴリズムと同様に,その先頭ノードを優先的に選んで展開する(子を産む).つまり,コストが小さいという意味で現時点でベストに見えるノードを優先的に展開する.

コスト関数の決め方によって,少なくとも,図に示した3つのバリエーションがある.次のスライドから,それらを順に見ていく.

Page 5: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

5

1.均一コスト探索(unform cost search)初期状態からそのノードn までの経路コスト g(n)

をコスト関数とする最良優先探索

ゴールに向かってのシャープな探索になっていない

g(n) = 5+3 = 8

a0

初期状態

35b5

n8

現在状態

全オペレータのコスト=1なら,幅優先探索と同じ動作となる

1つめのアルゴリズム「均一コスト探索」(uniform cost search)は,初期状態からそのノードn までの経路コスト g(n) をコスト関数とする最良優先探索である.特別な場合

として,全オペレータのコスト=1なら,経路コスト=ノードの深さとなるので,それを浅い順に展開する幅優先探索と同じ動作となる.

このアルゴリズムは,ゴールがどのあたりにあるのかということをまったく気にせず,とにかく,これまで進んできた経路のコストが最も小さいものを展開するので,「広く浅く」という感じの探索になりがちで,ゴール目指してシャープに突き進んでいくような動作は望めない.

Page 6: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

6

均一コスト探索の実行

0

1 4

2

9 9

6 73

12 5

1

経路コスト g(n) の低い順に展開

待ち行列

INOUT

2

9

4

7

3

2 7

2

1

8経路コスト g(n) の昇順になるように挿入

経路コスト1+2=3

オペレータのコスト

このスライドは均一コスト探索の実行のようすをアニメーションで表現している.ノードを表す円の中の数値はg(n)の値である.未展開のノードのうち,その数値が最も小さいものが選ばれ,展開される.

その途中で,待ち行列のようすも確認しておこう.

Page 7: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

7

均一コスト探索の最適性ただし,オペレータのコストは非負とする

S

A

B

C

Gstart goal

15 5

15

10

5

0

1 1551

5

15A B C

S

11 10G G

10 5

展開のために選択したときにゴールと判定する

展開のために選択してゴールと判定

均一コスト探索は最適性がある.つまり,最初に見つける解は,必ず最適解である.

そのデモとして簡単な例を見てみよう.

この例では,最適解は S→B→G で,そのコストは10である.

アルゴリズムでは,途中でコスト11の解 S→A→G が生成されるが,このノードはまだ展開されないので,アルゴリズムはまだこれがゴールだとは認識しない.

そのうち, S→B→G が生成され,これがさらに展開される段になって,これがゴール

であることに気付き,それを解とする.したがって,最初に見つけた解が最適解になっている.

一般に,このアルゴリズムに最適性があるのは自明であろう.ゴールの判定は,ノードの展開の直前に行われることがポイントである.経路コストが最小のものから展開するので,最適解のゴールノードより早くに経路コストがもっと大きな他のゴールノードが展開されることはない.

Page 8: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

8

均一コスト探索の性質

最適性(optimality) あり

最適解を最初に見つける

完全性(completeness) あり

解があれば必ず見つける

時間計算量(time complexity)指数的 bd (b:分枝率,d:解の深さ)

空間計算量(space complexity)指数的 bd

幅優先探索と同じ

均一コスト探索の理論的性質をまとめるとこのスライドのようになる.

Page 9: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

9

2.欲張り探索(greedy search)

a0

初期状態

35b5

n8

現在状態

g

h(n)ヒューリスティック関数ノードからゴールまでの最短経路コストの見積り

これの小さい順に展開

そのノードnからゴールまでの予想コスト h(n)をコスト関数とする最良優先探索

ゴール

2つめのアルゴリズム「欲張り探索」(greedy search)は,そのノードnからゴールまでの予想コスト h(n)をコスト関数とする最良優先探索である. h(n) は,ノードn からゴールまでの最短経路コストの見積りであり,ヒューリスティック関数と呼ばれている.これは,あくまでもこの問題分野独自に関する知識や経験からの「予想」とか「見積もり」であって,その情報が正確である保証はないことに注意しよう.しかし,まったくのでたらめではないことは期待したい.

このアルゴリズムは, h(n) の値の小さい順に未展開ノードを展開する.したがって,待ち行列はh(n) の値の小さい順に並べておく.

さきほどの均一コスト探索とは対照的に,このアルゴリズムはこれまでのコストがどうだったかという過去は一切問わない.とにかく,今後の予想コストh(n) のみに着目し,そ

れが現時点で最小の未展開ノードが最も有望である(ベストに見える)として展開する.

古い教科書などでは,この欲張り探索のことを最良優先探索と呼んでいることもあるので注意しよう.

Page 10: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

10

ヒューリスティック(heuristic)とは?

語源: アルキメデスが風呂で浮力の法則を発見したときに叫んだ”Heurika !” (ユーリカ!

発見した!)

経験から発見した知識のこと

最悪ケースの性能は必ずしも上げないが,平均的にはたいていの場合はうまくいく手法

ここで出てきた「ヒューリスティック」という言葉は人工知能(AI)技術にとって,非常

に重要な用語である.

これは,アルキメデスが風呂で浮力の法則を発見したときに叫んだ”Heurika !” (ユーリカ!発見した!)という言葉が語源で,AIでは,経験から発見した知識のことを指してい

る.

しかし,有り得る可能性のすべてを経験したわけではないので,これは数学的に完全に正しい知識であるという保証はない.しかし,アルゴリズムの性能については,最悪ケースの性能は必ずしも上げないが,平均的にはたいていの場合はうまくいく手法であることが多い.

AIにはこのようなアルゴリズムが多いのである.理論家が(最悪のケースで)指数関数的な計算量になるので実用的でないとする難しい問題でも,AI研究者はあきらめず,ヒューリスティクスを利用して,たいていの場合には高速に解を見つける技術の開発を目指すのである.

Page 11: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

11

ヒューリスティック関数の例:直線距離

A

Z

T

S

B

初期状態

ゴール

253

374

329

h(n) = nからゴールまでの直線距離

都市のナビゲーションの例では, h(n) を nからゴールまでの直線距離と定義すれば

よい.正しい値はもちろん「道のり」なのだが,2点の緯度と経度から三平方の定理で直線距離を算出すれば,ゴールまでの道のりの良い見積もりとなるだろう.

Page 12: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

12

欲張り探索は最適解を見つける保証がない

A

Z

T

S

R

PB

F

329

253374

366 178

193

0

80

97

101

211

99

hの値(直線距離)

最短経路はこちら!(最適性がない)

欲張ってこっちにこだわった

(欲張り探索)

しかし多くの場合うまくいく

欲張り探索は最適解を見つける保証がない.この例(アニメーション)がその証拠である.最初に最適解でない方の

解を見つけてしまう.

Page 13: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

13

欲張り探索は解を見つける保証(完全性)がない

A

Z

T

S

B

150

253374

366

0

T1

T2

150

150

不適切なヒューリスティクス

欲張り探索には完全性もない.この図のように,不適切なヒューリスティック関数を与えると,その間違った情報にミスリードされて,際限なく変な方向を探してしまう.

Page 14: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

14

欲張り探索の性質

最適性(optimality) なし

最適解を見つける保証がない

完全性(completeness) なし

解を見つけないことがある

時間計算量(time complexity)bm (m: 探索木の最大の深さ)

空間計算量(space complexity)bm

深さ優先探索と同じ

欲張り探索の性質をまとめるとこのようになる.

Page 15: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

15

3.A* 探索(A* search)

初期状態

35n8

現在状態

h(n)ここからの予想コスト

経路全体の予想コスト f(n)=g(n)+h(n)(ただし,h(n)は許容的なヒューリスティック関数)

をコスト関数とする最良優先探索

ゴール

エイスター

ここまでのコスト

g(n)

f(n) = g(n) + h(n)n 経由の最短経路の見積もりコスト

これの小さい順に展開

3つめのアルゴリズム「A*探索」(A* search)は,今回の授業の山場で,かつ,探索アルゴリズムの最も重要なものの1つである.このアルゴリズムは, n 経由の最短経路の見積もりコストを f(n)=g(n)+h(n) で定義し,それをコスト関数とする最良優先探索である.ただし,h(n)は許容的なヒューリスティック関数(次のスライドで定義する)であるものとす

る.

g(n) は「ここまでのコスト」という過去の実績を表し,h(n)は「ここからの予想コスト」という将来の見積もりを表している.その和は,初期状態から n を経由してゴールまでの最短経路のコストの見積もりになっている.この値の小さい順に未展開ノードを展開するのがこのアルゴリズムである.

Page 16: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

16

許容的ヒューリスティック(admissible heuristic)

A

PR

S

B

初期状態

ゴール

253

実際の最小コスト h*(n)=278

予想最小コスト h(n)直線距離

予想最小コスト h(n) ≦ 実際の最小コスト h*(n)を満たすヒューリスティック関数のこと

楽観的(optimistic)ヒューリスティック

とも言う

ヒューリスティクスが許容的と限らないときは,Aアルゴリズムと呼ぶ.

A*アルゴリズムでは,ヒューリスティック関数 h(n) が許容的(admissible)であることが要求される.

(ヒューリスティクスが許容的と限らないときは,このアルゴリズムはAアルゴリズムと呼

ばれる.)

h(n) が許容的とは,すべてのノード n について,

予想最小コスト h(n) ≦ 実際の最小コスト h*(n)が成り立つことである.つまり,実際よりも小さめにコストを予想するので,楽観的なヒューリスティックとも言う.

ナビの例では,h(n) をゴールまでの直線距離とすれば,それは許容的なヒューリスティック関数である.

Page 17: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

17

A* 探索の性質

最適性(optimality) あり!

最初に見つけた解は最適解

完全性(completeness) あり!

解があれば必ず見つける

時間計算量(time complexity)

空間計算量(space complexity)ヒューリスティックの

精度に依存

A* 探索の性質はこのようになる.

最適性と完全性があることは,このあとのスライドで直観的に(やや強引に)納得してもらう.

計算量はヒューリスティックの精度に依存することも,後のスライドでうすうすわかる.

Page 18: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

18

経路コスト

h 関数の値

(直線距離)

329

253

374

366178

193

0

80

97

101

211

99

75

118140

AS

F

RP

B

T

98

ZO

380

151

160

146C 138

71

A*が最初に見つける解は最適解

450B

366449

447

393

413415

418

417

329

253

374

366178

193

0

80

97

101

211

99

75

118140

AS

F

RP

B

T

98

Z 526O

380

151

526160

146C 138

615 C最適解

これは,A*が最初に見つける解が最適解であることのデモである.

最適解でない方の経路が先に生成されるが,最終的に,先にゴールと判断されるのは最適解の経路の方であることに注意しよう.

Page 19: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

19

Page 20: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

20

450

366449

447

393

413

415418

417

526

526615

A*探索の振る舞い(1) 単調性

探索木に沿ったすべての経路でf のコストは非減少

しかし,すべての問題が単調性が成り立つわけではない.

先ほどの例題では,探索木に沿ったすべての経路で f のコストは非減少になっている.

これを単調性という.すべての問題で単調性が成り立つわけではないが,そうなることが多い.単調性の正式な定義と,その意味合いはつぎのスライドで.

Page 21: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

21

A*探索の振る舞い(2) 単調性の定義

( ) ( ') ( , ')h n h n c n n≤ +

n'

n

ゴール

h(n)

h(n')

c(n,n')

単調性三角不等式に

似ている

先へ進んで,情報が得られてくるほど,楽観性が弱くなる

( ') ( ) ( , ')h n h n c n n≥ −

任意の n, n' についてここで示した不等式が成立するとき,ヒューリスティック関数 h(n) は単調であるという.

この不等式を2つめのように変形すればわかるように,これは,先へ進んで,情報が得られてくるほど,楽観性が弱くなるということを表している.つまり,最初は将来についてかなり楽観的だったのが,先へ進んできてみていろいろな情報が見えてくると,現実のきびしさがわかってきて,その楽観性が後退してくるというわけで,我々の人生に通ずるものがある.とほほほほ.

Page 22: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

22

450

366

449

447

393

413415

418

417

526

526615

A*探索の振る舞い(3) 等高線A*アルゴリズムは f 値の山を

ゴールに向かって,見落としなく(シャープに)単調に登っていくf = 366

の等高線

393 413 415 417 418

準最適解

最適解の等高線

最適性あり!

完全性あり!

実際には,単調性がなくても,最適性と完全性がある.

単調性があるときには,A*の振る舞いは f(n) の等高線を低い方から高い方へ地道に

引いていく手順として理解できる.そうすると,完全性と最適性が成り立つことが納得できる.

Page 23: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

23

最良優先探索の比較

○×○完全

○×○最適

△△×空間

△△×時間

A*欲張り均一コスト

幅優先的 深さ優先的 ヒューリスティクス次第

つねに h(n)=0 とすれば,A*は均一コスト探索と一致する.

今回学んだ3つのアルゴリズムに対して,4つの評価尺度を検討した結果を表にまとめておく.

Page 24: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

24

ヒューリスティック関数について

ヒューリスティックの優位性

8パズルのヒューリスティック

ヒューリスティック関数の作り方

ヒューリスティック関数について,この3つの点から補足しておく.

Page 25: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

25

ヒューリスティックの優位性

すべてのノード n において h1(n) ≦ h2(n) ≦ h*(n)

実際の値

h2 は h1 より優位

h2 で展開されたノード

h1 で展開されたノード

⊆すべてのノード n において

h1(n) ≦ h2(n) ≦ h*(n)=実際の値

であるとき, h2 は h1 より優位であるという.より精度の良い見積もりということである.

このとき, ヒューリスティック関数として優位な h2 を用いたA*アルゴリズムによって展開されるノードは,必ず,優位でない h1 を用いたA*アルゴリズムによっても展開される.

つまり,優位なヒューリスティック関数を用いた方が,はっきり効率が良いことが理論的に言えるのである.

Page 26: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

26

8パズルのヒューリスティック関数

5 46 1 87 3 2

1 28

34

7 6 5

ゴール初期状態

候補1 h1=ゴールの位置にないタイルの数.上の例では7.

候補2 h2=各タイルのゴール状態までのマンハッタン距離

の和.上の例では18.

2+3+3+2+4+2+0+2 =18

■どちらも許容的(楽観的) ■h2はh1より優位.

8パズルのヒューリスティック関数として,このスライドで示す2つが良く知られている.明らかに,双方とも許容的(楽観的)で,さらに,h2 は h1 より優位である.

Page 27: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

27

8パズルの実験結果

1641391352412191809422676727620363305618211130116113539347394114732273644041239934712710253963848182068061213112466102

A*(h2)A*(h1)反復深化

展開した平均ノード数解の長さ

8パズルの実験結果である.初期状態によって最適解の長さが違うので別々にデータを整理してある.

前回学んだ反復深化探索(知識を用いない探索で,前回学んだ範囲ではベストだったもの)よりも,知識 h1 を用いたA*探索が効率が良い.さらに,h1よりも優位なヒューリステッィク h2 を用いるとさらに効率

が改善されることがわかる.

Page 28: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

28

ヒューリスティック関数の作り方(1)

弱条件問題緩和問題

(relaxed problem)

=オペレータに対する制限を減らして

解きやすくした問題

弱条件問題の正確な解のコストが元の問題の良いヒューリスティクスになっていることが多い

8パズルの場合:となりにタイルが置いてあってもそこに動かせる

ヒューリスティック関数は,経験あるいは「発見」によって見つけるものなのだが,それを見つけるおよそのガイドラインはある.

それは,弱条件問題あるいは緩和問題と呼ばれるものを利用することである.弱条件問題とは,オペレータに対する制限を減らして解きやすくした問題のことである.この問題の正確な解のコストが元の問題の良いヒューリスティクスになっていることが多い.弱条件問題はもとの問題より解を得やすいのだから,「楽観的」な解が得られるからである.

Page 29: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

29

ヒューリスティック関数の作り方(2)

AがBのとなり Bが空& → AからBへタイル

を動かせる

弱条件問題の自動生成

AがBのとなり → AからBへタイル

を動かせる

Bが空 → AからBへタイル

を動かせる

relax

h1

h2

これは,8パズルのヒューリスティック関数を,弱条件問題を利用して自動生成する考え方を示している.

いずれも,重要な制限のうちの1つをはずして弱条件問題を生成し,その解をヒューリスティック関数の値としている.

Page 30: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

30

ヒューリスティック関数の作り方(3)

h1,h2,…,hm という許容的ヒューリスティクスがあり,

どれも他の優位にないとき,どれを選ぶか?

h(n) = max (h1(n), h2(n), …, hm(n) )

■ hは一つひとつの関数より優位

互いに他よりも優位でないヒューリスティック関数が複数あれば,それらの最大値を求める関数をヒューリスティック関数とすれば,これは一つひとつのどのヒューリスティック関数よりも優位である.

Page 31: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

31

ヒューリスティック関数の作り方(4)

統計情報の利用

h2(n)=14 → 90%の確率で実際の距離=18

h(n)=18

許容性の保証はなくなるが平均的に効率が向上する

統計情報を利用して,経験を補強して,より精度の高いヒューリスティック関数を作れば,平均的に効率が向上する.しかし,許容的でなくなるので,完全性と最適性は保証されない.

Page 32: ヒューリスティック探索 (Heuristic Search)kussharo.complex.eng.hokudai.ac.jp/~kurihara/hit/HIT...1 知識を用いる探索 ヒューリスティック探索 (Heuristic Search)

32

ヒューリスティック関数の作り方(5)

状態の「特徴」の利用

h(n)=α×駒の得点の差+β×駒の働きの差+γ×玉の囲いの差

将棋の例

αβγ:学習アルゴリズムで値を調整する

この将棋の例のように,その問題特有の状態の特徴からヒューリスティック関数をモデル化することも多い.

未知パラメータを含むモデルを作っておき,AIならではの「学習」という機能で,パラ

メータの値を動的に改善していく方法もある.