チェスのようなゲームへの強化学習の適用に関するいくつかの疑問


9

私はチェスのようなボードゲームを発明しました。自律的に遊べるようにエンジンを組みました。エンジンは基本的に決定木です。それはによって構成されています:

  1. 各ノードで可能なすべての合法的な動きを見つける検索機能
  2. ボードの位置に数値を割り当てる評価関数(正の値は最初のプレーヤーが優勢を獲得していることを意味し、負の値は2番目のプレーヤーが代わりに勝利していることを意味します)
  3. アルファベット順枝刈りネガマックスアルゴリズム

このエンジンの主な問題は、評価関数の最適化が非常に難しいことです。どの要素を考慮し、どの重みを設定するかわかりません。エンジンを改善するために私が見る唯一の方法は、係数と重みのさまざまな組み合わせを毎回試すゲームを繰り返すことです。しかし、それは計算上非常に困難な作業です(ディープラーニングを使用せずにバックプロパゲートできますか?)。

強化学習を使用して、エンジン自体と対戦してエンジンを改善したいと思います。私はそのトピックについて読んでいますが、私はまだかなり混乱しています。

勝ち負けの出力(1または0)の一部であるゲームの他の報酬は何ですか?各ターンの評価関数からの出力など、他の報酬を使用する場合、どのように実装できますか?反復ごとにより良い報酬を与えるように評価関数を変更するにはどうすればよいですか?

回答:


6

強化学習を使用して、エンジン自体と対戦してエンジンを改善したいと思います。私はそのトピックについて読んでいますが、私はまだかなり混乱しています。

注意してください:強化学習は大きく複雑なテーマです。ゲームをプレイするボットから遠ざかるかもしれませんが、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を使用して最適な重みを学習することができます。


「強化学習は、報酬が遅れている環境に対処することを目的としています。暫定的な非目標に「ヘルパー」報酬を追加すると、通常は逆効果になります。」中間目標「Hindsight Experience Replay」を導入することで、報酬が少ない問題を解決しようとする論文があることに注意したい。
nbro

1
@nbro:疎な報酬を解決する試みはたくさんあります。これはRLの大きな自由回答式の質問です。問題の課題を増やす1つの方法は、報酬を疎にすることです。適格トレースは別の試みです。階層RLは別の有望な領域です。。。私はそれがよりOPの問題のための実現可能性と被写体までのイントロ程度であるとして、私は、ここにかかわらず、その答えにこれらの技術を追加したいとは思わない
ニール・スレーター
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.