0

私は機械学習を始めようとしており、自分で試してみることにしました。小さな三目並べゲームを書きました。これまでのところ、コンピューターはランダムな動きを使用して自分自身と対戦しています。

ここで、ボードの現在の状態に関する知識に基づいて探索または悪用するエージェントを作成することで、強化学習を適用したいと考えています。

私が理解していない部分は次のとおりです。エージェントは現在の状態に合わせて自分自身をトレーニングするために何を使用していますか? RNG ボット (o) プレイヤーがこれを行うとしましょう:

[..][..][..]

[..][x][o]

[..][..][..]

ここで、エージェントは最善の動きを決定する必要があります。よく訓練された人は、1 位、3 位、7 位、または 9 位を選ぶでしょう。DB で彼を勝利に導いた同様の状態を検索しますか? もしそうなら、最終状態(勝ち/負け/引き分け状態)になるまで、すべての動きをDBに保存する必要があると思いますが、それは1回のプレイでかなりの量のデータになるのでしょうか?

これを間違って考えている場合は、これを正しく行う方法を知りたいです。

4

1 に答える 1

2

学ぶ

1) 現在のボードの状態 s を観察します。

2) 次の動きの利用可能なすべての V(s') の分布に基づいて、次の動きを行います。厳密には、選択は多くの場合、V(s') のボルツマン分布に基づいていますが、最大値の移動 (貪欲) に単純化するか、使用している確率イプシロンでランダムな移動にすることができます。

3) s' を連続して記録する。

4) ゲームが終了すると、シーケンス内の訪問済みステートの値が更新され、最初からやり直されます。それ以外の場合は、1) に進みます。

ゲームプレイ

1) 現在のボードの状態 s を観察します。

2) 次の動きの利用可能なすべての V(s') の分布に基づいて、次の動きを行います。

3) ゲームが終了し、最初からやり直すまで。それ以外の場合は、1) に進みます。

あなたの質問に関しては、はい、ゲーム プレイ フェーズのルックアップ テーブルは学習フェーズで構築されます。すべての V(s) から状態が選択されるたびに、可能な最大数は 3^9=19683 です。これは、トレーニングで 10000 ゲームを実行する Python によって記述されたサンプル コードです。

于 2014-02-17T00:13:34.470 に答える