回答:
報酬関数は、エージェントがどのように動作する必要があるかを説明します。言い換えれば、彼らはあなたがエージェントに何を成し遂げさせたいかを規定する「規範的な」コンテンツを持っています。例えば、いくつかのやりがいの状態食べ物の味を表すことができます。あるいは、は食べ物を味わう行為を表しているかもしれません。したがって、報酬機能がエージェントの動機が何であるかを決定する範囲で、はい、あなたはそれを補う必要があります!
絶対的な制限はありませんが、報酬機能が「より良い行動」であれば、エージェントはより良く学習します。実際には、これは収束の速度を意味し、ローカルミニマムにとらわれません。しかし、さらなる仕様は、使用している強化学習の種類に強く依存します。たとえば、状態/アクション空間は連続ですか、それとも離散ですか?世界またはアクション選択は確率論的ですか?報酬は継続的に獲得されますか、それとも最後にのみ獲得されますか?
問題を表示する1つの方法は、報酬関数が問題の難易度を決定することです。例えば、伝統的に、私たちは報酬を受ける単一の状態を指定するかもしれません:
この場合、解決されるべき問題は、 、たとえば、、状態に対する報酬の勾配があります。難しい問題の場合、たとえばや詳細を指定すると、追加の手がかりを提供することで一部のアルゴリズムを支援できますが、より多くの探索が必要になる可能性があります。問題を明確に特定するために、負の条件としてコスト(エネルギーコストなど)を含める必要があります。
連続状態空間の場合、エージェントに簡単に学習させたい場合、報酬関数は連続的で微分可能でなければなりません。したがって、多項式は多くのアルゴリズムでうまく機能します。さらに、ローカライズされた最小値を削除してください。ラストリギン関数のように、報酬関数を作成しない方法の例がいくつかあります。とはいえ、いくつかのRLアルゴリズム(たとえば、ボルツマンマシン)はこれらに対してやや堅牢です。
現実の問題を解決するためにRLを使用している場合、報酬関数を見つけることは問題の最も難しい部分ですが、状態空間の指定方法と密接に結びついていることに気付くでしょう。たとえば、時間依存の問題では、ゴールまでの距離が報酬機能を低下させることがよくあります(たとえば、マウンテンカーの問題)。このような状況は、高次元の状態空間(非表示状態またはメモリトレース)を使用するか、階層RLによって解決できます。
抽象レベルでは、教師なし学習は「正誤」パフォーマンスの規定を不要にするはずでした。しかし、RLは単に責任を教師/評論家から報酬機能に単純にシフトしていることがわかります。問題を解決するための循環的な方法はありません。つまり、最高の報酬関数を推測することです。1つの方法は、逆RLまたは「見習い学習」と呼ばれ、観察された行動を再現する報酬関数を生成します。観測セットを再現するための最適な報酬関数を見つけることは、MLE、ベイジアン、または情報理論的手法によって実装することもできます-「逆強化学習」をグーグルで検索する場合。
報酬関数の設計は確かに難しい問題です。一般に、まばらな報酬関数は定義が簡単です(たとえば、ゲームに勝った場合は+1、それ以外の場合は0)。ただし、報酬が少ない場合、エージェントは報酬を得る前に多くのアクションを実行する必要があるため、学習が遅くなります。この問題は、クレジット割り当て問題としても知られています。
報酬のためのテーブル表現を持つ代わりに、連続関数(多項式など)も使用できます。これは通常、状態空間とアクション空間が離散的ではなく連続的である場合です。