機械学習周りのプログラミング中心。 イベント情報
ポケモンバトルAI本電子書籍通販中

2023-04-01から1ヶ月間の記事一覧

【CodinGameオセロ】DNNの方策だけで打つAIの実装

前回、DNNを教師あり学習しました。今回は学習したモデルをAIの探索に組み込みます。まずは、局面の先読みをせずに方策(policy)の出力をそのまま打つAIを実装します。 今回の時点のコードです(前回記事と同じ) https://github.com/select766/codingame-oth…

【CodinGameオセロ】アルファベータ法による指し手を用いたDNNの教師あり学習

今回から機械学習に入ります。まずは、アルファベータ法で実装したAIを用いて棋譜を生成し、それを用いてDNN (Deep Neural Network)を教師あり学習することを試みます。 ソースコードのバージョンは以下の通りです。 https://github.com/select766/codingame…

【CodinGameオセロ】ソースコードの分割と自動連結

前回までで、評価関数を開発しない範囲でランダムより強いAIを実装してきました。機械学習に入る前に一点だけ改良を加えておきます。それはソースコードの分割です。ソースコードが1000行に達しており、1ファイルに記述し続けるのは見通しが悪い状態になって…

【CodinGameオセロ】ビットボードの実装と合法手生成のテスト

前回、アルファベータ法+石の数による評価によってランダムよりは強いAIを実装しました。ただし、合法手生成速度が遅く、CodinGameの制限時間内では深さ5までしか読めませんでした。アルファベータ法のAIそのものは最終的に使わないため速度はあまり重要で…

【CodinGameオセロ】アルファベータ法による探索

前回は、局面を合法手で1手進めたときに、最も多くの石をひっくりかえせるような手を選ぶというGreedyなAIを実装しました。しかしランダムプレイヤーに対して勝率63%程度となり、あまり強いとは言えません。機械学習を導入したいのですが、最初は強化学習で…

【CodinGameオセロ】GreedyなAIと自己対局

前回は、盤面の情報を格納し、合法手を列挙してくれる盤面クラスを作りました。まずは、機械学習なしに簡単に作れるAIを作っていきます。これを作る理由は、機械学習で作ったAIを評価する際の対戦相手とするためです。機械学習を用いたAIは、学習データを用…

【CodinGameオセロ】環境構築と盤面クラスの実装

これからCodinGameで動くオセロAIを作っていきます。まずは、環境構築と盤面クラスの実装です。盤面クラスは、オセロの盤面をプログラム内で表現し、合法手(その時点で石を打てる場所)を列挙したり、選んだ手で局面を次に進めたりする機能を持つもので、ゲ…

【CodinGameオセロ】1文字に1.994バイトを埋め込むbase63483/base63481を開発した

CodinGameにおけるオセロAIの対戦は、提出するものが実行バイナリではなく、プログラムのソースコードです。提出可能なソースコードは1ファイルのみで、サイズ制限は10万文字です。なお、重要なのは、サイズ制限が10万バイトではなく、10万「文字」であると…

日本中どのJR路線でも日帰りで乗りつぶせるのか

鉄道乗りつぶしという趣味があります。自宅から遠い路線へ行く場合は泊りがけになることが普通でしょうが、「日曜日しか休みがない人がいたら、乗車不可能なJR路線はあるのか?」という疑問が生じたので調べてみました。 条件 東京駅発、東京駅着で初電~終…

【CodinGameオセロ】AlphaZero式オセロAIを自作する

2023年3月から、CodinGameというサービス上で動作するオセロAIを開発しています。目的は、AlphaZeroのアルゴリズムをスクラッチから実装する体験をすることです。AlphaZeroは、ゲーム固有の戦略に関する知識をプログラムに実装することなく、強化学習によっ…