Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Ridge-i インターンシッププログラム 人工知能・機械学習(AI/ML)基礎講座 第3話 第1次AIブーム 推論と探索 (1) Chief Research Officer 牛久 祥孝
Slide 2
Slide 2 text
1.1.2. 推論と探索
Slide 3
Slide 3 text
推論=(ほぼ)探索 • 推論と探索は基本的に同じ • 本小節では、探索として以下の項目について解説する – 深さ優先探索 – 幅優先探索 – 最適探索 – 最良優先探索 – A*探索 – 動的計画法 – ミニマックス法 – アルファ・ベータ法 – モンテカルロ木探索
Slide 4
Slide 4 text
迷路 • からまでロボットが到達 するような問題を考える
Slide 5
Slide 5 text
迷路 • からまでロボットが到達 するような問題を考える • 迷路の次の位置にマークを おく – 分岐 – 行き止まり
Slide 6
Slide 6 text
迷路 • からまでロボットが到達 するような問題を考える • 迷路の次の位置にマークを おく – 分岐 – 行き止まり • 行き来可能なマーク同士を 線で結ぶ
Slide 7
Slide 7 text
迷路の探索=グラフの探索 エッジ ノード
Slide 8
Slide 8 text
深さ優先探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの先頭に追加 オープンリスト クローズドリスト
Slide 9
Slide 9 text
深さ優先探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの先頭に追加 オープンリスト クローズドリスト
Slide 10
Slide 10 text
深さ優先探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの先頭に追加 オープンリスト クローズドリスト
Slide 11
Slide 11 text
深さ優先探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの先頭に追加 オープンリスト クローズドリスト
Slide 12
Slide 12 text
深さ優先探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの先頭に追加 オープンリスト クローズドリスト
Slide 13
Slide 13 text
深さ優先探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの先頭に追加 オープンリスト クローズドリスト
Slide 14
Slide 14 text
深さ優先探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの先頭に追加 オープンリスト クローズドリスト
Slide 15
Slide 15 text
深さ優先探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの先頭に追加 オープンリスト クローズドリスト
Slide 16
Slide 16 text
深さ優先探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの先頭に追加 オープンリスト クローズドリスト
Slide 17
Slide 17 text
深さ優先探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの先頭に追加 オープンリスト クローズドリスト
Slide 18
Slide 18 text
深さ優先探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの先頭に追加 オープンリスト クローズドリスト:辿った順番
Slide 19
Slide 19 text
幅優先探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの末尾に追加 オープンリスト クローズドリスト
Slide 20
Slide 20 text
幅優先探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの末尾に追加 オープンリスト クローズドリスト
Slide 21
Slide 21 text
幅優先探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの末尾に追加 オープンリスト クローズドリスト
Slide 22
Slide 22 text
幅優先探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの末尾に追加 オープンリスト クローズドリスト
Slide 23
Slide 23 text
幅優先探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの末尾に追加 オープンリスト クローズドリスト
Slide 24
Slide 24 text
幅優先探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの末尾に追加 オープンリスト クローズドリスト
Slide 25
Slide 25 text
幅優先探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの末尾に追加 オープンリスト クローズドリスト
Slide 26
Slide 26 text
幅優先探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの末尾に追加 オープンリスト クローズドリスト
Slide 27
Slide 27 text
幅優先探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの末尾に追加 オープンリスト クローズドリスト
Slide 28
Slide 28 text
幅優先探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの末尾に追加 オープンリスト クローズドリスト
Slide 29
Slide 29 text
幅優先探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの末尾に追加 オープンリスト クローズドリスト
Slide 30
Slide 30 text
幅優先探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの末尾に追加 オープンリスト クローズドリスト
Slide 31
Slide 31 text
幅優先探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの末尾に追加 オープンリスト クローズドリスト
Slide 32
Slide 32 text
幅優先探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの末尾に追加 オープンリスト クローズドリスト:辿った順番
Slide 33
Slide 33 text
深さ優先探索と幅優先探索 • 深さ優先探索 オープンリストに記憶されるノード数が比較的少なくて済むので、 大きなグラフの探索に適している 仮にスタートの近くにゴールがあっても、深さを優先して無駄な探索を 続ける可能性がある • 幅優先探索 初期ノードに近いところから探索するので、スタートから近いゴールを 発見するのに有効 グラフが横に大きいとオープンリストに多くのメモリが必要 • 共通すること – 未知の迷路でも動くが、無駄な行き来が多い
Slide 34
Slide 34 text
無駄な行き来を減らすには • 最短何歩でゴールまでつけるか • • ()スタートから現在地までの最適経路での歩数(コスト)の総和 • ℎ() 現在地からゴールまでの最適経路での歩数(コスト)の総和 • � , � ℎ () それらの推定値 1歩 4歩 2歩 2歩 4歩 6歩 2歩 3歩 1歩 2歩
Slide 35
Slide 35 text
最適探索 初期化:オープンリストにを入れる(コスト0) クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストに追加し、から 今のノードまでのコストの総和 � ()が小さ い順に並べる
Slide 36
Slide 36 text
現在地からゴールまでの最適経路の歩数ℎ()? まだ探索中なのに最適な 経路なんてわからない! 別の情報があれば 推定はできるかも? 例:座標が分かれば 最小歩数は出る ℎ(2 )=2+3=5
Slide 37
Slide 37 text
最良優先探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの追加し、今の ノードからまでのコストの総和� ℎ()が小 さい順に並べる
Slide 38
Slide 38 text
A*探索 初期化:オープンリストにを入れる クローズドリストを空にする オープンリストに何かある限り以下を繰り返す 1. オープンリストから先頭のノードを取り出 し、クローズドリストの先頭に追加 2. 今のノードがであればゴール 3. 今のノードから辿れてリストにないノード をすべてオープンリストの追加し、今の ノードからまでのコストの総和 + � ℎ()が小さい順に並べる