強化学習

エージェントを相手にボードゲームをします。エージェントは、強化学習を使用してトレーニングされ、TensorFlow Lite でデプロイされています。

はじめに

TensorFlow Lite を初めて使用する場合、Android を使用する場合は、以下のサンプルアプリをご覧ください。

Android の例

Android 以外のプラットフォームを使用する場合、または、すでに TensorFlow Lite API に精通している場合は、トレーニング済みモデルをダウンロードできます。

モデルのダウンロード

使い方

ゲームエージェントが「Plane Strike」という小さいボードゲームをするためのモデルが構築されています。このゲームの簡単な概要とルールについては、README を参照してください。

アプリの UI の基盤には、人間のプレイヤーと対戦するエージェントが構築されています。エージェントは 3 層 MLP であり、ボードの状態を入力値として受け取り、64 のボードのマスのそれぞれに対して予測されたスコアを出力します。モデルは、方策勾配 (REINFORCE) を使用してトレーニングされています。トレーニングコードについては、こちらを参照してください。エージェントをトレーニングした後は、モデルを TFLite に変換し、Android アプリでデプロイします。

Android アプリでの実際のゲーム中、エージェントの番になると、エージェントは人間の対戦相手のボード状態 (下部のボード) を確認します。このボード状態には、以前の成功と失敗 (当たりと外れ) に関する情報が含まれています。そして、トレーニング済みのモデルを使用して、次に狙う場所を予測し、人間の対戦相手よりも早くゲームを終わらせることができるようにします。

パフォーマンスベンチマーク

パフォーマンスベンチマークの数値は、ここで説明するツールで生成されます。

モデル名 モデルサイズ デバイス CPU
方策勾配 84 Kb Pixel 3 (Android 10) 0.01ms*
Pixel 4 (Android 10) 0.01ms*
  • 1 つのスレッドを使用。

入力

モデルでは、(1, 8, 8) の 3-D float32 テンソルをボード状態として入力できます。

出力

モデルは、64 の考えられる候補それぞれに対して、形状 (1,64) の 2-D float32 テンソルを予測スコアとして返します。

モデルのトレーニング

トレーニングコードBOARD_SIZE パラメータを変更すると、大きい/小さいボードの独自のモデルをトレーニングできます。