小テストの予定 第三回 計算機科学入門 (アプリケーション) • 来週 (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
© Copyright 2024 Paperzz