1

「Achtung Die Kurve」とも呼ばれる単純なバージョンのCurve Feverを作成しました。私はマシンにゲームを最適にプレイする方法を理解してほしい。 GoogleのTensorflowで作成されたいくつかのAtariゲームの例から、既存のDQNをコピーして少し修正しました。再生学習の報酬機能DQNによる曲線フィーバーゲーム

私は適切な報酬機能を理解するのに時間を費やしています。現在、私はこの報酬の設定を使用します。それはすべてのクラッシュ

ため

  • -500をクラッシュしないフレームごとに

    • 0.1これは正しいアプローチですか?値を微調整する必要はありますか?それとも全く別のアプローチが必要ですか?

  • +0

    あなたはDQNを動作させることができましたか? – ericwenn

    +0

    はい、私は以下のような得点を実装しました。 –

    +0

    死にかけて-1、殺害で+1。生き残るために小さな定数を使用しましたか? – ericwenn

    答えて

    1

    報酬が-500の場合、ネットワークが破壊される可能性があります。報酬は1と-1の間の値にスケールする必要があります。 (また、入力画像を-1と1または0と1の間でスケーリングする)。

    敵がクラッシュすると、ネットワークには-1の報酬を与え、+1の報酬を与えます。敵がなければ、クラッシュのための-1の報酬で十分であるはずです。一定の正の生きがい報酬を一定に保つことは、(ネットワークが避けられない2つのクラッシュの間で決定する必要がある場合など)いくつかの状況で有益ですが、Qファンクションの学習をより複雑にします。あなたは一定の報酬の有無にかかわらず試してみることができ、何が最も効果的かを見ることができます。

    避けられないクラッシュの例には、マイナスのリビング報酬を使用しない理由も示されています。そのような場合、ネットワークは、最も速い衝突の経路を選択し、可能な限り衝突を遅らせることは、その状況におけるより良い戦略である。

    0

    報酬関数が、エージェントが追求する目標を正確にエンコードするのが最適です。 カーブフィーバーでは、目標は生き残った最後のプレイヤーになることです。ゲームに滞在する報酬を与えた報酬機能を使用した場合、ゲームを無期限に引き出すのが最善の方針です。エージェントはできるだけ早く勝つことをお勧めします。したがって、タイムステップごとに小さな負の報酬を与え、ラウンドを勝ち取るための肯定的な報酬を与えるべきです。これはです。お急ぎで報酬機能を獲得してください。

    +0

    これは本当です。しかし、私が達成したい最初のことは、エージェントを世界で一人だけにさせ、それを自分の尻尾にぶつけさせないことです。私は生きていることに肯定的な報酬を与え、クラッシュには大きな罰を与えるが、これが正しいアプローチであるとは思わない。 –

    関連する問題