0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

kaggle tutorial Reinforcement Learning part 1

Posted at

part 1では

の確認をしていきます。強化学習は現在非常にホットな分野ですがこの部分のtutorialはあまり翻訳や解説がされていないようです。

コネクトフォー(四目並べ)のゲームAIを構築するためのオンラインコースの紹介文です。コースの概要、各レッスンの内容、そして学習することでどのようなAIエージェントが作れるようになるのかを説明しています。

流れ

1 開発環境の準備、ゲームルールの実装、簡単な思考ルーチンを持つAIの作成

2 ミニマックス法のような探索アルゴリズムを理解し、実装する

3 強化学習の基本的な概念(報酬、状態、行動など)を理解し、Q学習などのアルゴリズムを実装する

解説

kaggle_environmentライブラリで基本的なゲームを楽しむことはできます。視覚的にわかりやすいことが重要ですが、game AIは単に合法なランダムな手を打つことが最初の目標です。このあと、AIの性能を上げていきます

def agent_random(obs, config):
    valid_moves = [col for col in range(config.columns) if obs.board[col] == 0]
    return random.choice(valid_moves)

空いている列の中から、完全にランダムに次の手を決定します。特に戦略はないです。

def agent_middle(obs, config):
    return config.columns//2

中央の列が戦略的に有利な位置であることが多いため、常にそこを狙う戦略。

def agent_leftmost(obs, config):
    valid_moves = [col for col in range(config.columns) if obs.board[col] == 0]
    return valid_moves[0]

左から埋めていくという戦略。とりあえずランダムよりマシな合法の手を出すだけです。

  • obs
    AIエージェントは、この obs オブジェクトを通じて、ゲームの状況を認識し、次の手を決定します。 obs に含まれる情報は、エージェントが「今、盤面がどうなっているのか?」「自分はどちらのプレイヤーなのか?」を理解するために使用されます

  • obs.board
    コネクトフォーの盤面は通常、縦横にマスが並んだ2次元のグリッドですが、obs.board ではこれを1次元のリストとして表現しています。リストの要素は、盤面の上から下へ、そして左から右へと順番に並んでいます。実態はPythonリストです。

このあと、100ゲーム、1000ゲームと、より多くのゲームをプレイすることで、運による影響が小さくなり、エージェントの実力差がより明確に現れてきます。例えば、100ゲーム行った結果、エージェントAが70勝、エージェントBが30勝した場合、エージェントAの方がより高い勝率を示し、より強いエージェントである可能性が高いと判断できます。(将棋の例が分かりやすそうです)

ここでも、AIの性能の指標として、勝率を算出していきます。

get_win_percentages(agent1=hoge, agent2=fuga)

今回、3つのAI(?)を用意したので、性能を確認すると、agent_leftmostがかちます。なお、私がやってもagent_leftmostより少し強い程度ですので、次回以降私が4目ならべをする際にはagent_leftmostと同じ戦略を取ることにしました。考えずに手が出せそうですね。

ここまで、AIとは呼べないレベルのものを作りましたが、次回以降の部分で性能が急激に上昇していきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?