Google Colaboratory上でAlphaZeroを使って三目並べを学習させる。

Google Colaboratory上でAlphaZeroを使って三目並べを学習させてみました。

AlphaZeroについては、以前書いた記事で少し紹介しています。

www.pytry3g.com

 

今回はGoogle Colaboratory上で三目並べをAlphaZeroを使って学習させます。

Google Colaboratoryについては以前書いた記事で紹介しましたが、画像などが消えてしまったので、改めて導入方法についても書いてみます。

関連リンク

GitHub - AppliedDataSciencePartners/DeepReinforcementLearning: A replica of the AlphaZero methodology for deep reinforcement learning in Python

Pythonで書かれたAlphaZeroを動かして三目並べを学習させてみる - どん底から這い上がるまでの記録

Google Colaboratory

f:id:pytry3g:20180728163733p:plain

Google Colaboratoryの導入方法について書いていきます。

導入

Google ColaboratoryはGoogle Drive上で使うことができます。

Google Driveを開いて左上にある新規をクリックします。

 

f:id:pytry3g:20180728163530p:plain

そのあとは、その他ー>アプリを追加で以下の画面が開きます。

f:id:pytry3g:20180728191000p:plain

アプリを検索のところにColabratoryと入力して検索すると、以下の画面が出るので接続(connect)をクリックします。

f:id:pytry3g:20180728191842p:plain

これで、自分のGoogle Drive上でGoogle Colaboratoryが使えるようになります。

Google Colaboratoryを開くには、Google Drive左上にある新規ー>その他Google Colaboratoryが選択できるようになっているはずです。

AlphaZero

Google Colaboratoryを使う用意ができたので、三目並べをkerasで実装されたAlphaZeroを使って学習させてみます。AlphaZeroの導入方法については以下の記事で紹介しています。

www.pytry3g.com

導入

AlphaZeroの導入については以下の手順です。

  1. このRepositoryを自分のパソコンにcloneもしくはDownloadする。
  2. cloneもしくはDownloadしたディレクトリにあるgame.pyの内容を変更。

1と2ができたらディレクトリごとGoogle Driveにアップロードするだけです。

 

 

Google Colaboratory上で学習させる。

ディレクトリのアップロード

用意したAlphaZeroのディレクトリをGoogle Driveにアップロードします。

私はGoogle Colaboratoryを使うときは、マイドライブにあるcolabフォルダにプロジェクト別にフォルダを用意しています。

今回は以下の画像のようにcolabの下に、AlphaZeroというフォルダを作って、必要なプログラムをそこにアップロードします。

f:id:pytry3g:20180728163530p:plain

面倒なんで全部アップロードしました。

f:id:pytry3g:20180728200944p:plain

データのアップロードが完了してもこのままではGoogle Colaboratoryからプログラムをインポートしたり、ファイルの操作はできません。

これを可能にするには、Google Colaboratoryで必要な設定を行う必要があります。

それについては、この後に書いています。

Google ColaboratoryでNotebookを開く。

Google ColaboratoryはJupyter Notebook上で作業します。さっきアップロードしたrun.ipynbGoogle Colaboratory上で開いて作業することはできますが、今回はNotebookを新しく作ってAlphaZeroを動かしてみます。

私の場合、マイドライブにあるcolabフォルダの中のAlpaaZeroというフォルダで作業します。そのため、作業フォルダにいる状態でGoogle Colaboratoryを新規作成します。

新規作成すると、このような画面が開きます。名前をNotebook.ipynbに変えときます。

f:id:pytry3g:20180728202853p:plain

Colaboratoryの設定

AlphaZeroのプログラムを動かす前に、いくつか設定をする必要があります。

ランタイムの変更

まず、ランタイムを変更します。Google Colaboratoryで新規に作ったNotebookはデフォルトでpython 2が使われています。今回はpython 3を使いたいのでNotebookの上にあるランタイムー>ランタイムのタイプの変更からランタイムのタイプをPython 2からPython3、ハードウェアアクセラレータをNoneからGPUに変更します。

f:id:pytry3g:20180728204332p:plain

ランタイムのタイプの変更を開くと以下の画面が出る。

f:id:pytry3g:20180728204147p:plain

ファイルの設定

次に、アップロードしたファイルを利用できるようにします。

以下のコマンドをセルにコピペして実行します。

!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse
from google.colab import auth
auth.authenticate_user()
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}

f:id:pytry3g:20180728203618p:plain

セルの▷か、shift-enterで実行できます。

実行してから、しばらくたつと下の方にURLと入力フォームが出てきます。出てきたURLにアクセスすると、Google Cloud SDKGoogle アカウントへのアクセスをリクエストしています。と表示されるので許可します。すると、このコードをコピーし、アプリケーションに切り替えて貼り付けてください。と書かれたページに移動します。

そのコードをさっきNotebookに表示された入力フォームにコピペします。この作業を2回します。

次に、以下のコマンドをセルにコピペして実行します。

!mkdir -p drive
!google-drive-ocamlfuse drive

これで、アップロードしたファイルにアクセスできるようなりました。

ここで、やっていることはdriveというフォルダを作って、それを自分のGoogle Driveのマイドライブと紐付けています。

ディレクトリの移動

今回私はNotebookをGoogle Driveマイドライブにあるcolabフォルダの中のAlphaZeroというフォルダで作成し作業しています。しかし、下の画像を見て分かるようにカレントディレクトリはAlphaZeroではありません。そのため、作業フォルダに移動する必要があります。(※ディレクトリの移動するときは!は先頭につけないみたいです。

f:id:pytry3g:20180728210533p:plain

ライブラリのインストール

AlphaZeroを動かすために、pydotgraphvizが必要になるので以下のコマンドをセルにコピペ&実行してインストールします。

!pip install -q pydot
!apt-get -qq install -y graphviz 

AlphaZeroを動かす

Colaboratoryの設定が完了したので、AlphaZeroを使って学習させてみます。

アップロードしたファイルの中にrun.ipynbというNotebookがあります。このNotebookの上2つのセルを自分が作業しているNotebookにコピペして実行すると、学習を開始します。

f:id:pytry3g:20180728212921p:plain

 

学習が進んでいくと、学習モデルができます。できたモデルは作業フォルダにあるrun/modelsにあります。 学習したモデルはtkinterで実装した三目並べで対戦することができます。