強化学習を使用して、エンジン自体と対戦してエンジンを改善したいと思います。私はそのトピックについて読んでいますが、私はまだかなり混乱しています。
注意してください:強化学習は大きく複雑なテーマです。ゲームをプレイするボットから遠ざかるかもしれませんが、RLの基礎を勉強したいと思うかもしれません。まずは、Sutton&Barto Reinforcement Learning:An Introductionから始めましょう。
勝ち負けの出力(1または0)の一部であるゲームの他の報酬は何ですか?
あなたのゲームに応じて、それは通常それです。実際、チェスのような勝利/引き分け/負けのゲームの場合、最後に勝利(+1)または負け(-1)を除いて、各アクションからの報酬は0です。ゼロサムゲームでは、これはミニマックス、アルファベット順の剪定などにうまく適合します。
強化学習は、報酬が遅れている環境に対処することを目的としています。暫定的な非目標に対して「ヘルパー」報酬を追加することは通常、逆効果です。
各ターンの評価関数からの出力など、他の報酬を使用する場合、どのように実装できますか?
通常はそうしません。自己再生型RLを適用すると、ゲームの終了までに+ 1/0 / -1の合計報酬の予想を予測するリターン(ユーティリティと呼ばれることもある)関数を学習できます。ミニマックス検索の現在のヒューリスティックの代わりにこれを使用します。または、現在のヒューリスティック関数を同じ範囲で出力するように調整し、RLを使用してその重みを最適化して、真の最適な再生の戻り関数(正確に計算するには複雑すぎる可能性があります)に最も近い近似を作成します。
反復ごとにより良い報酬を与えるように評価関数を変更するにはどうすればよいですか?
それが、さまざまなRLアプローチがすべて試みようとしていることです。さまざまなソルバーがあります。それを説明する短い方法はありません。Q-Learningなどの簡単な方法から始めることができます。Qラーニングは、状態sでアクションaを実行し、その後最適なポリシーを実行したときに期待されるリターンであるQ(s、a)(アクション値と呼ばれる)の推定値を学習します。それは、最初に任意の推測を行い、学習環境で行われる各ステップで真の値に近づけます。単純な表形式のQ学習者は、すべての状態とアクションの大きなテーブルを真の値までの最良の推定値で格納し、経験に応じて新しい推定値ごとに平均化することで、この改良を行います。
ヒューリスティックスのRLメソッドと先読みミニマックス検索を組み合わせることも可能です。これは、元のAlphaGoが行ったこと、およびトレーニング中にAlphaGoゼロが行うことです。ミニマックス検索はRLによって生成されたヒューリスティックを再確認するために機能するため、これは強力なアプローチです。十分に単純なゲームの場合でも、RLは完全なヒューリスティックを学習でき、ローカル検索のみが必要になります(次の動きはどうあるべきか)。
ゲームが非常にシンプルでない限り(可能なすべての状態がメモリに収まる)、RLアルゴリズム内にある種の関数近似器が必要になります。ニューラルネットワークは標準的な選択肢です。持って何かをその一部にすることは避けられない-すべての機能のちょうど加重和-別の良い選択は、プロキシ機能の束を定義する(あなたが手でヒューリスティックを構築するために使用する可能性のある)と線形近似を使用するのですが。これは十分に機能し、RLを使用してトレーニングされたチェッカー(ドラフト)プレーヤーなどで使用されています。
実際、独自のヒューリスティック関数がそれほど珍しくなければ、おそらくそれを線形近似器のように扱い、RLを使用して最適な重みを学習することができます。