小テストの予定 ゲーム木探索 例題 必勝法 このゲームの性質

小テストの予定
第三回
計算機科学入門
(アプリケーション)
• 来週 (5/2) は小テスト
内容:
1. 制約充足問題を解く.問題の表現方法は
与えられており,解法はバックトラック.
2. ある問題を制約充足問題として定式化し,
解を求める.解法は任意.
3. 簡単なゲームに関して,必勝法を求める.
九州大学大学院システム情報科学研究院
情報学部門
横尾 真
E-mail: [email protected]
http://agent.inf.kyushu-u.ac.jp/~yokoo/
82
83
ゲーム木探索
例題
• コンピュータが知能を持つ/知的な振る舞
いをするとはどういうことか?
• 一つの候補として,チェス等の (知的な)
ゲームで人間を負かすことができれば,コ
ンピュータは十分知的になったと考えること
ができる
• 二人で交代に,1から順に25までの数
を言う.
• 言う数の個数は,1個,2個,3個のいず
れか好きなのを選んでよい
• 最後に25を言った方が負け
– ゲーム木の探索: 人工知能の基礎的な分野
84
必勝法
85
このゲームの性質
• 24を言って,相手に順番を回せば絶対勝ち
• 一方,20を言って,相手に順番を回せば,相
手が何個を選んでも,次に24を言える --- 絶
対勝ち
• 同様に,16を言って,相手に回せば次に20
を言える --- 絶対勝ち
• 同様に,12, 8, 4を言って回せば勝ち
• 先手が何を言おうと,後手は4を言って回せ
る
• 結局,後手が必勝
• 二人で交代に順番が回ってくる
• 自分の前の相手の行動/手は完全に観測
できる
• 偶然の入る余地がない
• 多くのゲームは同様な性質を持つ
– チェス,将棋,オセロ,囲碁,五目並べ,etc.
• 上記の性質を満たさないもの
– バックギャモン: さいころ
– ポーカー : 相手の手は見えない
– ブリッジ:プレイヤの協調
86
87
1
必勝法 (続き)
必勝法
• 二人,完全情報,決定的なゲームは,
原理的には必勝法が存在する
• 簡単なゲームなら必勝法が分かる
– ○×(三目並べ) 引き分け
– 五目並べ
先手必勝
– 6x6 オセロ
後手必勝
– 先手必勝/後手必勝/引き分け
• 先手/後手を決めた時点で勝負はつ
いている (ゲームをするまでもない)!
• 複雑なゲームでは分かっていない
– 分かってしまえばゲームは終り?
88
89
例:5を言ったら負け
ゲームの木
• 状態/ノード: ゲームの可能な状態
1
• 状態の遷移/リンク: 正しい手により遷移可
能な状態間を結ぶ (一方向).
• 先手をMAXプレイヤ,後手をMINプレイヤ,先
手の順番(手番)に対応する状態をMAXノード,
後手の手番の状態をMINノードと呼ぶ.
• 勝ち負けが決まったノードを端点と呼ぶ
2
3
4
5
lost
5
3
4
4
5
5
4
win
3
4
3
2
– チェス/将棋なら可能な駒の配置
5
5
win
win
4
5
lost
5
lost
4
5
lost
5
5
win
win
5
lost
win
5
lost
lost
90
ノードのラベル付け(考え方)
91
ノードのラベル付け
• 以下のように再帰的に定義
• お互いに自分が勝つようにベストを尽
くす
• win/lostのラベルは先手(MAXプレイ
ヤ)の立場
• MAXプレイヤは,絶対勝てる手があれ
ばそれを選び,後手(MINプレイヤ)は,
MAXプレイヤを絶対負かすことができ
る手があれば,それを選ぶ
– 端点に関して,そのままwin/lost
– MAXノードに関しては,子ノードに少なくとも
一つwinがあればwin, すべてlostならlost
– MINノードに関して,子ノードに少なくとも一
つlostがあればlost, すべてwinならwin
– winを100, lostを-100とすると,上記の処理
はMAXノードでは子ノードの最大値,MIN
ノードでは最小値を取ることに対応
92
93
2
ノードのラベル付け
1
2
4
3
4
5
lost
5
3
2
4
5
5
5
win
win
4
5
lost
5
lost
4
5
5
lost
5
5
win
win
lost
• コインが1個と6個の列
• 交互に,1個もしくは隣り合う2個を取る
• 最後に1個もしくは隣り合う2個を取った方
が勝ち
• 先手必勝/必負? 木を書いて確かめよう
5
4
win
3
4
3
例題: ニム(コイン取り)
win
5
lost
lost
94
状態/ノード
95
ゲーム木の展開
必勝法を見つけるためには
• 必ずしも木を完全に展開する必要はない
• 各列の個数の (小さい順に並べた) リ
ストで表現: 初期状態は (1, 6)
• 初期状態から遷移可能な状態:
(6), (1, 5), (1, 4), (1, 1, 4), (1, 2,
3)…
• すべての木を展開するのは大変なので,
とりあえず (1, 4) から木を展開してみ
よう
– あるMAXノードに関して,子ノードに少なくとも
一つのWINがあれば,そのMAXノードはWIN
» 他の子ノードは展開しなくても良い
– あるMINノードに関して,子ノードに少なくとも
一つLOSTがあれば,そのMINノードはLOST
» 他の子ノードは展開しなくて良い
96
ゲーム木のサイズ
97
ゲーム木が大きすぎる場合
• チェッカー 10の30乗
世界チャンピオン
• オセロ
10の60乗
世界チャンピオン
• チェス
10の120乗 世界チャンピオン
• 将棋
10の220乗
アマ5段
2013年A級プロ棋士に勝利!
• 囲碁
10の360乗 モンテカルロ碁が強い?
アマ5級
チェッカーでも必勝法は まだ見つかっていない
2007年に引き分けであることが証明された
98
• 普通のゲームでは,端点まで木を展開
するのは不可能
• 途中まで展開されたゲーム木で,どの
手が良いかを選ぶ必要がある (一手,
二手,三手先まで読む等)
99
3
ゲーム木の評価 (MIN-MAX法)
静的評価関数の例
• 途中の状態に関して,その良さを評価する関数
を作る (静的評価関数)
• 評価関数は数値を返す (大きいほうが良い)
• tic-tac-too
(三目並べ)
で,まだ自
分が取れる
可能性のあ
る列の
数 ー 相手
が取れる可
能性のある
列の数
– チェス/将棋: 所有するコマの数/価値,配置等
– オセロ:コマの数,位置 (4スミ,端)
• (ゲームが終了している訳ではない)端点の評価
値を,静的評価関数の値とする
• 他のノードの評価値を,必勝法を決める方法と
同様にして決める (MAXノードは最大値,MIN
ノードは最小値)
• ルートのMAXノードで,最大値を与える経路を選
ぶ
1
MAX
-1
MIN
MIN
-2
MIN
6-5=1
5-5=0
6-5=1
5-5=0
5-4=1
4-5=-1
5-6=-1
6-6=0
5-6=-1
6-6=0
100
先読みの効果
1
6-4=2
4-6=-2
101
(とりあえずの)まとめ
• 基本的には,深く読めば読むほど強い
– 終盤の方が静的評価関数の値が信用で
きる
• 二人,完全情報,決定的ゲームはゲー
ムの木で記述される
• 原理的には先手必勝/後手必勝/引
き分け
• 先読みの深さが一定の場合の問題点:
水平線効果
– ゲーム木を完全に展開すれば分かる
– 将来の損失が明らかな場合に,本質的で
ない先延ばしの手を選んでしまう可能性
がある
• 完全に展開できない場合は,静的評価
関数を用いて,一定の先読みでMINMAX法を用いる
» ほぼ負けが決定の状態で,無意味な王手を
繰り返す
» 頭を砂に埋めるダチョウみたいなもの
102
ゲームプログラムの歴史(1)
103
ゲームプログラムの歴史(2)
• 1960年代 哲学者のヒューバート・ドレ
イファスがチェスのプログラムは「永久
に世界チャンピオン」に勝てないと予想
• 1960年代 Arthur Samuelのチェッカー
プログラム
• ゲームをプレイするプログラムの作成は,人
工知能のfruit fly (ショウジョウバエ) と呼ば
れていた.
• 1950年 Shannon, Turingがコンピュータ
チェスの可能性を示す論文
• 1950年代 初めてチェスを指すプログラムが
作成される
• 1950年代 Herbert Simonが10年で世界
チャンピオンに勝つと予想
– 静的評価関数の学習(強化学習の一種)
– 強い!
104
105
4
Deep Blue
ゲームプログラムの歴史(3)
• IBMが1989年から開発を開始
• 1990年世界チャンピオンのカスパロフと
対戦 2戦2敗
• 1996年再度カスパロフと対戦
6戦 1勝3敗2分け
• 1997年 ニューヨーク
6戦
2勝1敗3引き分け
1秒間に2億個の状態を評価
3分で14手先読み
• 1980年代
– チェス専用コンピュータ
– スーパーコンピュータ
• Deep Thought CMU
1秒間に70万局面
人間のベスト100に到達
スーパーコンピュータ
+チェス専用の論理回路512台
106
将棋
107
将棋(続き)
• 難しさの要因
– 持ち駒制度
»平均分岐数の大きさ
– 勝負の長さ
– 静的評価関数のむずかしさ
»小駒が多い
• 平均分岐数の多さから,MIN-MAX法
(実際にはもう少し工夫したα-β探索)を
使うことは困難で,従来は,あらかじめ
有望な手を絞り込む手法が中心
– 最近の強いソフト(ボナンザ)は,絞込みを
あまり行わないことが特徴
– 評価関数の自動学習を頑張っているらしい
108
宝石の分配
問題設定:
• A, B, C, D, Eの5人の海賊が,100個の宝石を分配しよ
うとしている
• Aから順に,分配方法 (誰がいくつ取るか) を提案する.
• 提案された分配方法に対して,提案者も含めて多数決
を取る (同数の場合は否決とみなす)
• 可決の場合は提案方法を採用,否決の場合は,提案
者を皆で殺して,次の順番の海賊が提案を行う
仮定:
• 自分は死にたくない (全く宝石がもらえなくても死ぬより
はまし)
• よりたくさんの宝石がもらえる方が (他者の生死に関わ
らす) うれしい
• もらえる宝石の数が同じなら,大勢殺した方がうれしい
Aは何を提案したら生き延びて,より多くの宝石を手に入
れられるか?
109
宝石の分配 (続き)
• A, B, Cが殺され,Dが提案する場合を考える.
• EはDのどんな提案も反対し,Dの提案は否決
される
• Eが100個手に入れ,効用は
(A:-∞, B:-∞, C:-∞, D:-∞, E:100+4ε)
110
111
5
宝石の分配 (続き)
宝石の分配 (続き)
• A, Bが殺され,Cが提案を行う場合を考える.
• EはCのどんな提案も反対する
• DはCのどんな提案でも受け入れる (自分の
番になれば死ぬのは確実)
• Cの提案,”俺が全部取る”は,C, Dの賛成で
可決, 効用は
• Aが殺され,Bが提案を行う場合を考える.
• CはBのどんな提案も反対する
• D, Eは一個もらえれば満足 (Cの番になれば
何ももらえない)
• Bの提案,”俺が98, D, Eは一個ずつ”は,B,
D, Eの賛成で可決, 効用は
(A:-∞, B:-∞, C:100+2ε, D:0+2ε, E:0+2ε)
(A:-∞, B:98+ε, C:0+ε, D:1+ε, E:1+ε)
112
宝石の分配 (続き)
113
宝石の分配 (続き)
• Aが提案を行う場合を考える
• Bに順番が回った場合は
(A:-∞, B:98+ε, C:0+ε, D:1+ε, E:1+ε)
• 自分以外の二人以上の賛成が得られればよい
• 例えば,”俺が97, Cは1, D (or E) は2”
なら,可決された場合の利益は,
(A:97, B:0, C:1, D:2, E:0), よってA, C, Dの賛成多数
で可決!
114
• A以外が共謀すればもう少し利益を増やせる
か?
• Cの提案にD, Eが共謀して反対することはない
--- 絶対EはDを裏切る
• よってCに回った場合の結果は安定
• 同様に,Bの提案に,C, D, E中の少なくとも二
人が共謀して反対することはない
• よってBに回った場合の結果は安定
• 同様に,Aの提案にB, C, D, E中の少なくとも三
人が共謀して反対することはない
• (人質を取るとかの) 強制力がないと,安定し
た共謀は成立しない
115
6