将棋AIで学ぶディープラーニング on Mac and Google Colab

AI

書籍「将棋AIで学ぶディープラーニング 山岡 忠夫 著」をMacとGoogle ColabのGPUで動かす方法を説明する。

書籍内で説明されているプログラムのソースコードは著者のGitHubに公開されている。
https://github.com/TadaoYamaoka/python-dlshogi.git

環境

iMac

iMac 2020 27inch デフォルトモデル
3.1GHz 6コア第10世代Intel Core i5プロセッサ
Turbo Boost使用時最大4.5GHz
8GB 2,666MHz DDR4メモリ
256GB SSDストレージ
Radeon Pro 5300(4GB GDDR6メ‍モ‍リ搭載)
OS : Catalina
Python : 3.8.2と2.7プリインストール。今回は3.8.2を使用。

Google Colab

Python 3.6.9

将棋GUI

将棋所 バージョン1.2.2 (6)

結果概略

iMac側でファイルを準備してGoogle Driveと同期。

Google Colab側で学習実行。

iMac上で対局。自分(アマ初段) 対 AI(第8章段階。方策ネットワーク 有り。価値ネットワーク 無し。モンテカルロ木探索 無し。)普通に強かった。

目次

Google Colab

Google Colabを使う
 Google Colabを使える状態にする
  ローカル側
   ドライブをマウントする
   GPUを有効にする
   chainerをインストール
   python-shogiとpydlshogiをインストール
 Google Colabを使う
  ローカル側
  Colab側
  学習実行
 GPUはCPUの25倍高速

ディープラーニングフレームワーク

第1章~第6章
 第1章〜第5章
 第6章 ディープラーニングフレームワーク
  chainerとnumpyのWarning

方策ネットワーク

第7章
 方策ネットワーク層構成
  全体図
   入力
   L1
   L2~L12
   L13
   L13_bias

第7章1~4
 policy.py
  フィルター数194個の意味
  1×1フィルターの意味
 common.py
  bb_rotate180()
 features.py
  make_input_features()
  make_input_features_from_board()
  make_output_label()
  make_features()

第7章5~7
 read_kifu.py
  read_kifu()

第7章8
 GPUとCPUの自動使い分け
 pickleのプロトコル
 train_policy.py

第7章9
 学習実行

第8章1~4
 USIエンジンの実装
  policy_player.py
   y = self.model(x)
   logits = y.data[0]
   probabilities = F.softmax(y).data[0]
   GPU/CPUとPCの自動切り替え
   戦略設定
   全コード
 テスト
  コマンドラインからテスト
  Google Colabからテスト
 USIプロトコルの座標系

第8章
 戦略
  グリーディー戦略
  ソフトマックス戦略

第8章5~9
 GUIソフトに登録
  エンジン登録が終わらない問題
 対局

第9章
 学習テクニック
  SGD
  Momentum SGD
  SGD , Batch Normalization

価値ネットワーク

第10章
 価値ネットワーク層構成
  全体図
   入力(方策ネットワークと同じ)
   L1(方策ネットワークと同じ)
   L2~L12(方策ネットワークと同じ)
   L13_v
   L14_v
   L15_v

第10章6〜9
 1手探索のAI(search1_player.py)
  合法手フィルタリングの場所
  features.append(make_input_features_from_board(self.board))
  y.data
  for i, move in enumerate(legal_moves):
 対局

第11章
 学習テクニック
  普通の学習
  転移学習
  マルチタスク学習
  Residual Network
   policy_value_resnet.py

モンテカルロ木探索

第12章 全体感
 モンテカルロ木探索の全体像
 モンテカルロ木探索の骨子uct_search()

第12章 詳細
 ハッシュ
 expand_node()
 eval_node()
 select_max_ucb_child()

第12章
 将棋AIの評価値の計算方法

第12章 対局
 mcts_player.py
  モデルロードの引数を追加
  CPU/GPU自動切り替え
 コマンドラインからテスト
  GPUはCPUの2倍高速
  探索打ち切りの効果
  探索回数
 対局

単語

単語
 shogi.BB_SQUARES
 shogi.COLORS
 shogi.CSA.Parser.parse_file(filepath)
 shogi.PIECE_TYPES_WITH_NONE
 shogi.MAX_PIECES_IN_HAND
 shogi.SQUARES
 Moveクラス
  from_square
  to_square
 Boardクラス
  piece_bb
  occupied
  pieces_in_hand
  move_number

コメント

タイトルとURLをコピーしました