どん底から這い上がるまでの記録

どん底から這い上がりたいけど這い上がれない人がいろいろ書くブログ(主にプログラミング)

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で実装した三目並べで対戦することができます。