Document

人工知能
第3回 探索法
(教科書21ページ~30ページ)
http://www.tbgu.ac.jp/ait/atushi/
前回の復習
人工知能と探索
前回の復習
前回の復習
探索手法の必要性
人工知能の対象となる問題には解法が不明な問題も含まれる
迷路
パズル
⇒ 人間なら試行錯誤して解法を探す
ゲーム
探索手法とは
試行錯誤的なプログラムを実現するための手法
page 3
前回の復習
迷路
どの経路なら出口に出れる?
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
経路1 : 10 steps
A→F→K→P→U →
V→W→X→Y→T
経路2 : 12 steps
A→F→K→P→Q
→L→M→R→S→N
→O→T
page 4
前回の復習
3目並べ
A
D
F
B
○
G
C
○
×
どこに「×」を入れると
引き分ける?
負け
○
○
×
○
×
○
○
○
○
×
×
×
○
×
E
H
引き分け
page 5
前回の復習
状態空間と探索木
前回の復習
前回の復習
状態遷移図(1)
状態遷移図とは
状態を点
行動を枝
朝
とした有向グラフ
時間経過
昼
時間経過
夜
時間経過
page 7
前回の復習
状態遷移図(2)
迷路問題での状態と行動
状態
S := (sA, sB, sC, sD, … , sY)
A
B
C
D
E
初期状態 : sA
F
G
H
I
J
終了状態 : sT
K
L
M
N
O
P
Q
R
S
T
aU := 上に移動
U
V
W
X
Y
aD := 下に移動
行動
A := (aU, aD, aL, aR)
aL := 左に移動
aR := 右に移動
page 8
前回の復習
状態遷移図(3)
sA
aR
sB
aD
sF
sG
aD
sK
aD
sP
aD
sU
sL
aR
aR
aR
sC
aR
aU
aR
sH
sV
sR
aR
aR
sW
sD
aR
aR
aR
A
F
K
P
U
sE
aD
sI
sN
sM
aU aD
sQ
aR
sJ
aR
B
G
L
Q
V
C
H
M
R
W
D
I
N
S
X
E
J
O
T
Y
sO
aU aD
sS
sX
sT
aR
aU
sY
page 9
前回の復習
探索木(1)
探索木の構築
初期状態をルートノードとする
遷移する可能性のある状態を子ノードとする
状態遷移図との比較
同じ状態が複数ノードで表現される可能性がある
⇒ 大規模なグラフになりやすい
ループが存在しない
⇒ 簡単なアルゴリズムで計算可能
page 10
前回の復習
探索木(2)
sB
sC
sF
sK
A
F
K
P
U
sD
sE
sJ
sG
sH
sI
sM
sR
sS
sN
sW
sX
sY
sT
sA
sQ
B
G
L
Q
V
C
H
M
R
W
D
I
N
S
X
E
J
O
T
Y
sL
sP
sO
sT
sU
sV
page 11
知識を用いた探索法
知識を用いた探索法の概要(1)
網羅探索法との比較
深さ優先・幅優先探索 ⇒ 指標無しで探索する
探索の効率が悪い
知識を用いた探索方 ⇒ 指標を用いて探索する
探索の効率を向上させる
page 13
知識を用いた探索法の概要(2)
知識を用いた探索法の手順
次の手順を終了状態まで繰り返す
1. 状態の評価を行う
2. 最も高い評価の状態を探索する
状態の評価を行う = 評価のための知識が必要
page 14
知識を用いた探索法の概要(3)
状態の評価例
迷路の場合 ⇒ ゴールまでの直線距離を評価値とする
A
5
B
C
D
E
F
G
H
I
J
K
L
M
N
O
Q
R
S
T
P
U
4
V
W
X
Y
2
1
page 15
最良優先探索法(1)
最良優先探索法の手続き
手順1 : 未探索状態の中で最も評価がよい状態を選択
手順2 : 選択された状態にルールを全て適用し、
ルール適用後の新しい状態を生成する
手順3 : 新たに生成された状態を調査
手順3a : 終了状態が含まれていれば終了
手順3b : 終了状態が無い場合、新たに生成された状態を
未探索状態に加えて手順1に戻る
page 16
最良優先探索法(2)
最良優先探索法の探索手順
0 5.0
sA
1 4.2
2 3.6
6 4.5
7 4.1
sB
sF
sC
3 3.2
sD
9 3.0 10 3.2
8 4.0
sP
sE
A
F
K
P
U
5 2.0
sJ
sK
3.6
sQ
4 3.0
sL
4.1
sG
sH
B
G
L
Q
V
C
H
M
R
W
D
I
N
S
X
E
J
O
T
Y
sI
11 2.2 12 2.0 13 1.0 14 1.4 15 1.0 16
sM
sR
sS
sN
sW
sX
sY
sT
sO
sT
sU
sV
page 17
A*アルゴリズム(1)
A*アルゴリズムの概要
探索手順は最良優先探索法と同じ
評価値として『過去のコスト+未来のコスト』を使う
『過去+未来のコスト』が最小となる状態から探索する
⇒ コストが最小となる解を探索できる
page 18
A*アルゴリズム(2)
A*アルゴリズムの探索手順
0 5.0
0 sA
1 4.2
1 sB
3 3.6
2 sC
2 4.5
1 sF
4 4.1
2 sK
5 3.2
3 sD
3.6
8 4.0
3 sP
9 3.0 11 3.2
4 sQ
5 sL
10 4.1
4 sU
6 sG
6 3.0
4 sE
sH
A
F
K
P
U
7 2.0
5 sJ
B
G
L
Q
V
C
H
M
R
W
D
I
N
S
X
E
J
O
T
Y
sI
12 2.2 16 2.0 17 1.0
6 sM
7 sR
8 sS
1.4
9 sN
sO
sT
13 3.2 14 2.2 15 1.4 18 1.0 19
5 sV
6 sW
7 sX
8 sY
9 sT
page 19
山登り法(1)
山登り法の手続き
評価値のよい状態のみを探索する
⇒ 探索対象外となった状態は二度と探索しない
少ない計算量・メモリ量で探索することが可能
局所解に陥る可能性がある
評価値に変化がないと使えない
page 20
山登り法(2)
山登り法の探索手順
1 4.2
0 5.0
sA
sB
4.5
sF
sQ
2 3.6
sC
A
F
K
P
U
3 3.2
4 3.0
sG
sH
sI
sM
sR
sS
sN
sW
sX
sY
sT
sD
sE
5 2.0
sJ
sK
B
G
L
Q
V
C
H
M
R
W
D
I
N
S
X
E
J
O
T
Y
sL
sP
sO
sT
sU
sV
page 21
ゲームプレイング
ゲーム探索の概要(1)
通常の探索との違い
自分の操作以外の不確定要素が存在する
相手の操作により状態が変化する
サイコロ等により確率的に状態が変化する
不確定要素を考慮した探索をする必要がある
page 23
ゲーム探索の概要(2)
相手の存在するゲーム(三目並べ)
○
○
×
○
○
×
○
×
○
× ×
○
○ ○
×
○
○
○
○ ×
○
○
×
○
× ×
○
○ ×
×
・
・
・
○
○ × ×
○
○ ○
× ×
○
○ ○
× ×
・
・
・
page 24
ゲーム探索の概要(3)
確率的に状態が変化するゲーム(人生ゲーム)
スタート
中学卒業
大学入学 高校卒業
学生生活
大学卒業
職工
となる
事務員
となる
作家
となる
経営者
結婚する
となる
給料10万 給料12万 給料14万 給料16万 給料50万
給料日
作家
銀行員
科学者
公務員
弁護士
医者
となる
となる
となる
となる
となる
となる
給料16万 給料20万 給料24万 給料26万 給料30万 給料40万
page 25
ミニマックス法(1)
ミニマックス法の概要
相手の存在するゲームの手段を探索する
相手の行動も含めた探索木を構築し、
以下の考えに従って探索する
相手の行動時には最も悪い評価となる状態を選択する
自分の行動時には最も良い評価となる状態を選択する
相手が最良の手段を講じた場合を想定して探索する
page 26
ミニマックス法(2)
ミニマックス法の探索手順
3
<自分>
MAXを選ぶ
a0
s0
a1
a2
3
s00
2
s01
2
s02
3
12
8
s000 s001 s002
2
4
6
s010 s011 s012
14
5
2
s020 s021 s022
<相手>
MINを選択
page 27
ミニマックス法(1)
ミニマックス法の探索例
<相手>
<自分>
<相手>
○
○
○
○
×
○
max
0
×
×0
<自分>
<相手>
○
○
min ○
max ○ × min ○ ○ ×
× ○ ×0
× ○ -1
×
× ○ ×0
○
○
○
○
× × -1
○ ○
×
×1
× ○
× ○ -1
×
○
○ ×
×
-1
○
○ ○
×
×1
× ○
○
× ○ ×0
・
・
・
・
○
○
× ○
○
×
×
-1
○
○
○ ×
× ○ ×0
page 28
アルファベータ法(1)
アルファベータ法の概要
ミニマックス法による効率のよい探索を行うための枝刈り
⇒ 探索の必要のない枝は切り捨てる
6
<自分>
MAXを選ぶ
a0
s0
a1
a2
6
s00
2
s01
5
s02
6
12
8
s000 s001 s002
2
4
6
s010 s011 s012
14
5
2
s020 s021 s022
<相手>
MINを選択
page 29
アルファベータ法(2)
アルファベータ法を用いた探索例
<相手>
<自分>
<相手>
○
○
○
×
○
× ○ ×
○
○
○
○ ○
×
×
× ○
× ○ -1
×
○
○ ○
×
×
× ○
○
× ○ ×0
○
×
○
×
○
× ×
○
○ ×
×
・
・
<自分>
<相手>
○
○
max ○ × min ○ ○ ×
× ○ -1
×
× ○ ×0
・
・
○
○
× ○
○
×
×
-1
○
○
○ ×
× ○ ×0
page 30
期待ミニマックス法(1)
期待ミニマックス法の概要
ミニマックス法に確率の概念を加えた手法
⇒ サイコロ等の確率的選択に対応
page 31
期待ミニマックス法(1)
期待ミニマックス法の探索手続き
5.2
s0
<自分>
a0
MAX
4.2
s00
<Dice>
期待値
<相手>
a1
0.6
3
s000
a2
5.2
s01
0.4
6
s001
0.2
2
s010
2
s02
0.8
6
s011
1.0
2
s020
MIN
3
12
8
6
s0000 s0001 s0010 s0011
2
4
6
14
s0100 s0101 s0110 s0111
5
2
s0200 s0201
page 32
ゲームプログラミングの現在
ゲームプログラミング(1)
オセロ
探索空間は比較的狭いため、コンピュータが得意とする
1997年、世界チャンピオンがコンピュータに敗北
コンピュータは人間よりもはるかに強い
チェス
探索空間が広大だが、終盤は収束するという特徴がある
1997年、世界チャンピオンがコンピュータに敗北
コンピュータはプロ上位者レベル
page 34
ゲームプログラミング(2)
将棋
探索空間は非常に広く、終盤になっても収束しない
ただし、終盤のみ局地的な全探索を行うことが可能
コンピュータはプロ初段程度の実力
囲碁
探索空間は広大であり、数手先を読むのも難しい
評価関数の開発が難しいため、効率的な探索が不可能
コンピュータはアマチュア程度の実力
page 35
小テスト
課題
今日の問題(ホット6)
最初に何振りすればラーメンを食べずにすませられるか?
2人のプレイヤーの前にラーメンと胡椒がある
交互にラーメンに胡椒を振りかけ、6回目の胡椒を振りか
けたプレイヤーがそのラーメンを食べなければならない。
1人は連続して3回までしか胡椒を振りかけられない
胡椒は自分が最初に振りかける(自分→相手→自分・・)
page 37