Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Tensorflowユーザから見た Alpha(Go)Zero, Ponanza (TFUG #7)

3,939 views

Published on

Alpha(Go)ZeroやPonanzaについて

Published in: Technology

Tensorflowユーザから見た Alpha(Go)Zero, Ponanza (TFUG #7)

  1. 1. Tensorflowユーザから見た Alpha(Go)Zero, Ponanza Katsuki Ohto 2018/1/29 @TFUG #7
  2. 2. 本日の目標 •事前知識なしで最強になった Alpha (Go) Zero のメカニズムを伝える •ゲームAIの流れと今後の未来についてイメージ を膨らむようにする
  3. 3. 自己紹介 • 大渡 勝己(おおとかつき) • 経歴 ~ 2014.3 大学生 (認知神経科学) ~ 2015.3 無職 ~ 2015.8 事務職員 ~ 2017.9 大学院生 (ゲームAI) 2017.10 ~ HEROZ株式会社 エンジニア Machine Learning 15 minutes!発表時 http://ainow.ai/2017/08/07/119456/
  4. 4. 自己紹介 • 「強い」ゲームAIについて研究 • 大富豪、カーリング (2年前のTensorflow勉強会で少し話しました) などのAIを作成 • 大富豪で「空場」(流れた後の自分から出せる場) でパスをした方がいい局面を解析する論文を出しました
  5. 5. 自己紹介 • 12種類のゲームのAI大会に参加 • 2017.6~2017.11 将棋 Ponanzaのディープラーニング部分を担当 • 現在は囲碁ウォーズ「棋神」を開発
  6. 6. 本日の内容 • ゲームAIという分野の過去、今 (AlphaZeroなど)、未来について • 自分が参加したPonanzaでTensorflowを使ってトライしたこと • Ponanza … 2017春にプロ棋士のトップ(佐藤名人)を倒したプログラム • AlphaZero ... 知識なしで囲碁、将棋、チェスで世界一になった Alpha Zeroの衝撃と技術的失業 (山本一成さんより)
  7. 7. ゲームAIのこれまで(プログラマ視点) • 過去の強いプログラムの成り立ち • 「人手でのルールの記述」「機械学習モデル」がどちらも重要だった • ルールの記述 … 将棋なら将棋盤、囲碁なら囲碁盤をどう実装するか • 機械学習モデル … ある局面の勝ちやすさや最善手の予測など、ルール から自明でないので機械学習等で構築する評価モデル
  8. 8. ゲームAIのこれまで(プログラマ視点) • 「ルールの記述」が簡単ではないという例 • 将棋における右の局面(相手の手番) と金を動かして一手詰み(勝ち) • 全ての手を調べれば一手詰みの手が あるかわかるが、それでは遅いので 一手詰み計算専用のアルゴリズムが 書かれている • 金で王手のパターン、離れた飛車で王手の パターン…などの羅列、プログラマが頑張る
  9. 9. 現在のゲームAIの流れ • ① DQN (2013) とその後継モデル ルールを記述することなくニューラルネットで一人ゲームをプレイ Human-level control through deep reinforcement learning (Mnih et al., 2015)
  10. 10. 現在のゲームAIの流れ • ②AlphaGoZero, AlphaZero ニューラルネットの最善手の予測と勝率の予測をベースに、 モンテカルロ木探索を使って予備知識や上級者の棋譜なしで0から学習 Mastering Chess and Shogi by Self-Play with a General Reinforcement Learning Algorithm (Silver et al., 2017a, arxiv)
  11. 11. 現在のゲームAIの流れ • ③Libratus, DeepStack 不完全情報ゲームのポーカーにおいても人間を圧倒 両者全く違うアルゴリズムを使う (DeepStackはニューラルネットを利用) DeepStackの アルゴリズム DeepStack: Expert-Level Artificial Intelligence in No-Limit Poker (Moravčík et al., 2017)
  12. 12. 現在のゲームAIの流れ • 人間がコーディングする部分が減っている • ニューラルネットの表現能力が勝敗を分けることが増えている
  13. 13. ボードゲームのニューラルネットへの入力 • 囲碁の盤面 ... 黒か白の2色 石がある場所に1、それ以外が0 = +
  14. 14. ボードゲームのニューラルネットへの入力 • 将棋の盤面 ... 色数が多い 持ち駒などのスカラ値は1つの色全体に1を立てるなど = + +…
  15. 15. AlphaZeroの作り(ニューラルネット) • 盤面の履歴 (8手分)を入力し、 最善手の予測 (policy) 勝率の予測 (value) を同時に行うニューラルネット • 複数の値を同時に出力するマルチタスク学習 Mastering the game of Go without human knowledge (Silver et al., 2017b)
  16. 16. AlphaZeroの作り(モンテカルロ木探索) • サイコロを振って最後まで https://en.wikipedia.org/wiki /Monte_Carlo_tree_search (クラシックな)モンテカルロ木探索
  17. 17. AlphaZeroの作り(モンテカルロ木探索) • ゲームのように閉じた環境においては、 先の状態を考えることでより質の高い行動決定ができる Silver et al. (2017b) AlphaGo Zeroのモンテカルロ木探索
  18. 18. AlphaZeroの強化学習アルゴリズム • 前提① AlphaZero = 「ニューラルネット」「探索(先読み)アルゴリズム」 • 前提② ニューラルネット単体でもプレーしたり勝ち負けを予測したりできるが、 先読みを行うともっと強くなる • 前提③ 質の高いニューラルネットがあれば、 より質の高い先読みが行えて強くなる
  19. 19. AlphaZeroの強化学習アルゴリズム • 学習手順 探索ありで 試合棋譜を作成 棋譜の手/結果から 教師あり学習で ニューラルネットを学習 繰り返し Silver et al. (2017b)
  20. 20. AlphaZeroの強化学習アルゴリズム • 強さの向上の概念図 • まずランダムの状態での 勝ち負けを学び、それを使って 探索すれば少し強くなる • 探索の結果の手は ニューラルネットそのままより 強いので、それを教師とする • 強くなれば勝ち負けの評価も 妥当になり勝率予測も精度向上 棋譜から学習
  21. 21. 将棋PonanzaにおけるTensorflowの利用 • Ponanzaは大会出場する上位プログラムの中では 最も早くニューラルネットを実用化 (2017.5 世界コンピュータ将棋選手権での Ponanza Chainer) 「手の予測」を行い、外部サーバで動かして通信 • その後ニューラルネット部分の担当が自分になり、 使用ライブラリがTensorflowに変更 • 勝率予測も一緒に学習 (AlphaZero と同じ) • Ponanza側のコードも書き換えて、 C++から直接Tensorflowを呼び出す Ponanza Chainer のNN Ponanza (Tensoflow) のNN
  22. 22. 将棋PonanzaにおけるTensorflowの利用 • AlphaZeroとの比較 (将棋ドメイン: 利用部分) AlphaZero Ponanza with Tensorflow ネットワーク入力 9 x 9 x 362 (7手前までの履歴) 9 x 9 x 86 (現局面のみ) ネットワーク構成 ResNet20ブロック(40層)? 256フィルタ CNN に工夫を加えたもの (PFNの方発案のアーキテクチャ) 12層 256フィルタ 学習方法 ゼロから探索ありの強化学習 過去のPonanzaの着手・評価・勝敗 1500万試合から教師あり学習 (着手の一致率 56% 弱) 製作使用リソース TPUv1 5000枚(対戦) v2 15枚(学習) elmo 超えまで 2h 弱 これまでさくらインターネットさんから お借りしたCPU等 最大数十台 (対戦) GPU1枚 (学習) 1ヶ月
  23. 23. 将棋PonanzaにおけるTensorflowの利用 • AlphaZeroとの比較 (将棋ドメイン) AlphaZero Ponanza with Tensorflow 利用法 ニューラルネットだけで モンテカルロ木探索 既存の評価関数によるアンサンブル ミニマックス系探索 対戦利用リソース TPU v2 4枚 GPU GTX-1080 1枚 (第5回将棋電王トーナメント本番) 探索速度 40,000 局面 / 秒 (=ニューラルネットの計算回数) 6,000,000 局面 / 秒 (ニューラルネットの計算は 5,000 局面 / 秒)
  24. 24. 大人の知能と子どもの知能の融合 • 既存の探索部 (秒間 600万局面) … 理詰めで解決する 「大人の知能」 • ニューラルネット ... 計算局面数が少ないが、鋭い感性を持つ 「子供の知能」 • 大会に向けて、2つの「知能」をどう協調させるかを考えて製作した • (子どもだけに絞った方がいいのかもしれなかったが…)
  25. 25. 大人は慎重。子どもは素直 〜大人の知能と子どもの知能の融合〜 • 既存の探索は相対的な良し悪し しか見ていなかったり、 慎重な評価を返したりする • 一方ニューラルネットは 絶対評価かつ大胆に評価する (その分ブレやポカも多い) ニューラルネットの 予測勝率: 72 % (既存の探索+評価関数: 深さ1で59%, 深さ32で61%)
  26. 26. 大人はあれもこれも気になる。 子どもは大事なものが見える 〜大人の知能と子どもの知能の融合〜 • 既存の探索では、人間から見て「盤上この一手」の状態でも 丁寧に多くの手を調べていた • ニューラルネットは手の予測もはっきり物を言う ので、ニューラルネットの出した確率が低い手は そもそも探索しないようにできる ニューラルネットの 予測最前手: 2四同歩 over 99.99 %
  27. 27. Ponanza with Tensorflow の手法 (概略) • Policyの確率で探索順序決定 確率の和によって探索打ち切り判定 • 探索深さが増えると打ち切り閾値を大きくする • Valueの予測勝率と 探索の予測勝率を混ぜる (ただし元が相対評価なら相対評価として返す) • 探索深さが深ければそちらの重みを大きくする 95% 2% 3% 95 + 3 = 98% > 閾値 打ち切り! 探索 80 % NN 60% →70% 探索 < 80 % NN 70% → < 75 %
  28. 28. Tensorflowにおける学習 • Ponanzaのコードは現在非公開ですが、NN部分で元になったコードが 自分のリポジトリにあります。 https://github.com/YuriCat/apery/tree/nn/python • ビッグデータからの学習…NNの入力画像を保存すると物凄い容量になる ①棋譜など最小の情報を持った状態で保存 ②C++側に入力画像行列作成コードを書く ③pybind11でpythonから学習時に呼び出して入力画像・教師値を得る のが良かった
  29. 29. 現在のゲームAI開発事情 • 計算資源をどう確保するかの問題 • 有志の計算資源を募ることが行われている 平岡拓也氏の Apery (将棋) https://github.com/HiraokaTakuya/apery-machine-learning Gian-Carlo Pascutto 氏の LeelaZero (囲碁) https://github.com/gcp/leela-zero
  30. 30. 未来の(ゲームAI)アーティストに向けて ・勝ち負け以外の評価による学習 (好奇心だけで行動するマリオ) など、 人間のように「未知の事柄を知るためにどう行動するか」という側面から研究が進 んでいる Curiosity-driven Exploration by Self-supervised Prediction (Pathak et al., 2017)
  31. 31. 未来の(ゲームAI)アーティストに向けて ・「ゲームのAIを書く」ことがゲームAI開発のメインではなくなっていく ・できる限り人間はコードを書かない姿勢 (「詰みを絶対に逃したくない」など書かざるを得ない場合もあるが、 細かい最適化に留まらずに常に広い視野を持って欲しい) ・複数のドメインを扱う強化学習(マルチタスク) ・自然言語処理、画像や動画の自由な入力(マルチモーダル)
  32. 32. 未来の(ゲームAI)アーティストに向けて シンギュラリティを起こしましょう! Alpha Zeroの衝撃と技術的失業 より

×