用語集 · 強化学習

報酬関数

別名:Reward function、reward、reward design、報酬、報酬設計

エージェントの振る舞いを1ステップごとに採点するルール。エージェントはできるだけ多くの報酬を得ようと学ぶので、報酬がタスクを定義します。

報酬とは、各ステップの後に環境が返す1つの数値です。こちらが何を望んでいるかを伝える唯一の信号です。エージェントにはこちらの意図は見えず、スコアしか見えません。

動きに対する報酬の多くは項の重み付き和で、各項は重視したい性質を1つずつ表します。

r=∑iwi rir = \sum_i w_i \, r_i

追従の項によく使われる形は二乗誤差の指数関数で、完全に一致すれば1になり、なめらかに0へ近づいていきます。

ri=exp⁡ ⁣(−k ∥x−xref∥2)r_i = \exp\!\left(-k \,\lVert x - x^{\text{ref}} \rVert^2\right)

スケール kk が、どれだけ寛容かを決めます。このプロジェクトの survive 環境のガードの項はまさにこの形で、グローブの位置に k=50k = 50 を使っています。

疎な報酬と密な報酬

疎な報酬はめったに出ません。たとえば身体が倒れたときだけ −1 を与えるものです。正直ですが、ほとんどのステップで信号が出ないので学習しにくくなります。密な報酬は毎ステップ何かを与えます。たとえば、各関節が参照にどれだけ近いかのスコアです。学習しやすい反面、抜け道も突かれやすくなります。報酬シェーピングは、最良の方策(ポリシー)が何かを変えずに、密な手がかりを加えます。

落とし穴

  • 相対的な大きさ。 意図していないことをしてもタスクをこなすのと同じだけ報酬が得られるなら、エージェントはそちらを選ぶかもしれません。これが報酬ハッキングです。
  • 終了。 転倒でエピソードが終わるなら、エージェントは将来の報酬をすべて失います。すると、ステップごとの正の報酬があることで、生き残ること自体に価値が生まれます。

このプロジェクトでは

構えの報酬は、85%が追従(関節角度、頭・手・足の位置、骨盤、まっすぐな胸、体重配分、足)、15%が滑らかさです。転倒するとエピソードは −1 で終わります。survive モードの報酬は、立っていることに対して1ステップあたり0.4、それに加えてガードに対して最大0.1です。

ジャブの報酬は時間で分かれています。インパクトまでは、スタイルと速さを採点します。腰と足の位置、参照に対する腕、参照以上の速さの拳、そしてジャブ1回につき最大30のインパクトの支払いです。これは正確さ、拳の速さ、腰がどれだけ遅れているかでスケーリングされます。インパクトの後は、0.5秒間、構えの報酬が「立ったままガードを保つ」方向へ60%緩められ、胸の傾きだけが参照から4°以内に保たれます。

関連用語

この用語が出てくる記事

← すべての用語