2

Q-Learningを理解しようとしていますが、


私の現在のアルゴリズムは次のように動作します。

1.利用可能な各アクションの即時報酬と効用に関する情報に状態をマッピングするルックアップ テーブルが維持されます。

2.各状態で、ルックアップ テーブルに含まれているかどうかを確認し、含まれていない場合は初期化します (デフォルトのユーティリティ 0 を使用)。

3.次の確率で実行するアクションを選択します。

    (*ϵ* = 0>ϵ>1 - probability of taking a random action)
    1-ϵ = Choosing the state-action pair with the highest utility.
    ϵ = Choosing a random move.
    ϵ decreases over time.

4.以下に基づいて、現在の状態のユーティリティを更新します。

    Q(st, at) += a[rt+1, + d.max(Q(st+1, a)) - Q(st,at)]

私は現在、自分のエージェントを単純なヒューリスティック プレイヤーと対戦させています。このプレイヤーは常に最高の即時報酬を与える動きをとります。

結果- 結果は非常に悪く、数百回のゲームの後でも、Q-Learning エージェントは勝つよりも多くを失っています。さらに、特に数百ゲームに達した後は、勝率の変化はほとんどありません。

何か不足していますか?私はいくつかのエージェントを実装しました:

(暗記学習、TD(0)、TD(ラムダ)、Q-Learning)

しかし、それらはすべて、同様の残念な結果をもたらしているようです。

ここに画像の説明を入力

4

1 に答える 1

1

チェッカーには約 10²⁰ の異なる状態があり、更新ごとにゲーム全体をプレイする必要があるため、この方法で意味のあるアクション値を取得するには、非常に長い時間がかかります。一般に、強化学習を使用してこの種の問題を解決するには、ニューラル ネットワークのような簡略化された状態表現が必要です。

また、いくつかの注意事項があります。

  • 1 つのゲームでの動きは高い相関関係にあるため、理想的には、1 つのゲームで 1 つの値を更新する必要があります。
  • 小さな Q 更新による大きなポリシー変更を避けるために、アクション値を小さなランダム値に初期化する必要があります。
于 2016-04-24T12:45:01.057 に答える