強化学習で報酬関数を作成する方法


18

強化学習の勉強中に、、、さらには現在の状態のみに依存する報酬関数でさえ、さまざまな形の報酬関数に出会いました。そうは言っても、報酬機能を「作成」または「定義」するのは簡単ではないことに気付きました。R(s,a)R(s,a,s)

私の質問は次のとおりです。

  1. 報酬関数を作成する方法にルールはありますか?
  2. 報酬関数には他の形式がありますか?たとえば、おそらく状態に依存する多項式形式?

回答:


25

報酬関数は、エージェントがどのように動作する必要があるかを説明します。言い換えれば、彼らはあなたがエージェントに何を成し遂げさせたいか規定する「規範的な」コンテンツを持っています。例えば、いくつかのやりがいの状態食べ物の味を表すことができます。あるいは、は食べ物を味わう行為を表しているかもしれません。したがって、報酬機能がエージェントの動機が何であるかを決定する範囲で、はい、あなたはそれを補う必要があります!s(s,a)

絶対的な制限はありませんが、報酬機能が「より良い行動」であれば、エージェントはより良く学習します。実際には、これは収束の速度を意味し、ローカルミニマムにとらわれません。しかし、さらなる仕様は、使用している強化学習の種類に強く依存します。たとえば、状態/アクション空間は連続ですか、それとも離散ですか?世界またはアクション選択は確率論的ですか?報酬は継続的に獲得されますか、それとも最後にのみ獲得されますか?

問題を表示する1つの方法は、報酬関数が問題の難易度を決定することです。例えば、伝統的に、私たちは報酬を受ける単一の状態を指定するかもしれません: この場合、解決されるべき問題は、 、たとえば、、状態に対する報酬の勾配があります。難しい問題の場合、たとえばや詳細を指定すると、追加の手がかりを提供することで一部のアルゴリズムを支援できますが、より多くの探索が必要になる可能性があります。問題を明確に特定するために、負の条件としてコスト(エネルギーコストなど)を含める必要があります。

R(s1)=1
R(s2..n)=0
R(si)=1/i2R(s,a)R(s,a,s)R

連続状態空間の場合、エージェントに簡単に学習させたい場合、報酬関数は連続的微分可能でなければなりません。したがって、多項式は多くのアルゴリズムでうまく機能します。さらに、ローカライズされた最小値を削除してください。ラストリギン関数のように、報酬関数を作成しない方法のがいくつかあります。とはいえ、いくつかのRLアルゴリズム(たとえば、ボルツマンマシン)はこれらに対してやや堅牢です。

現実の問題を解決するためにRLを使用している場合、報酬関数を見つけることは問題の最も難しい部分ですが、状態空間の指定方法と密接に結びついていることに気付くでしょう。たとえば、時間依存の問題では、ゴールまでの距離が報酬機能を低下させることがよくあります(たとえば、マウンテンカーの問題)。このような状況は、高次元の状態空間(非表示状態またはメモリトレース)を使用するか、階層RLによって解決できます。

抽象レベルでは、教師なし学習は「正誤」パフォーマンスの規定を不要にするはずでした。しかし、RLは単に責任を教師/評論家から報酬機能に単純にシフトしていることがわかります。問題を解決するための循環的な方法はありません。つまり、最高の報酬関数推測することです。1つの方法は、逆RLまたは「見習い学習」と呼ばれ、観察された行動を再現する報酬関数を生成します。観測セットを再現するための最適な報酬関数を見つけることは、MLE、ベイジアン、または情報理論的手法によって実装することもできます-「逆強化学習」をグーグルで検索する場合。


こんにちは、なぜ山車の問題は時間依存の問題ですか?
GoingMyWay

マウンテンカーの問題は、ネットワークが適切なコマンドのシーケンス、またはシーケンスを決定するポリシーを提供することを必要とするという点で、「時間依存」であると思われます。「位置」だけを状態として扱う場合、問題を解決するのは困難です。速度(または運動エネルギーなど)も考慮する必要があります。時間依存の問題で賢明にあなたの状態空間を選択することに関して、私がほのめかしたのは本当にそれだけです。
サンジェイマノ

@SanjayManoharマウンテンカーの問題は「時間依存」だとは思いませんが、時間依存によって、有限の時間範囲の導入について話しているのでなければ。位置と速度で十分です。
user76284

この答えは報酬と価値の機能を混同すると思います。たとえば、報酬関数を「見つける」ことについて話します。これは、強化学習で行うことができますが、制御に使用されるRLでは行いません。また、報酬機能が継続的かつ差別化可能であることの必要性についても述べていますが、それ必須ではないだけでなく、通常はそうでありません。慎重に構成された微分可能なヒューリスティックを見つけるよりも、成功のために単純な+1を見つけるか、文献で取られた時間ステップごとに-1を固定する可能性がはるかに高くなります。
ニール・スレーター

@NeilSlaterに感謝します。あなたは正しいでしょう。報酬関数を見つけるのではなく、「構築する」と言うべきでしょう。「値関数」に関して、私は通常、状態値またはアクション値のマッピング、つまりエージェントが将来の報酬の見積もりを推定するために使用する関数のためにこの用語を予約しています。したがって、「価値」は「報酬」に関連していますが、報酬は問題の一部であり、問​​題を解決するアルゴリズムではありません。おそらくAIの重点は、バイナリ、遠位、まばらな報酬を規定することにより、学習アルゴリズムを誇示することにありますが、報酬機能を制御できれば、それが「いい」なら人生は楽になります。
サンジェイマノハール

4

報酬関数の設計は確かに難しい問題です。一般に、まばらな報酬関数は定義が簡単です(たとえば、ゲームに勝った場合は+1、それ以外の場合は0)。ただし、報酬が少ない場合、エージェントは報酬を得る前に多くのアクションを実行する必要があるため、学習が遅くなります。この問題は、クレジット割り当て問題としても知られています

報酬のためのテーブル表現を持つ代わりに、連続関数(多項式など)も使用できます。これは通常、状態空間とアクション空間が離散的ではなく連続的である場合です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.