Up 報酬のカテゴリー 作成: 2026-05-13
更新: 2026-05-13


    報酬は大きく3つのカテゴリに分かれる:
      1. タスク達成報酬
      2. 安定性・安全性の報酬
      3. 効率性・自然さの報酬


    1. タスク達成報酬(Task Reward)
    ロボットが「やるべきこと」を達成したら与える報酬。

    例:前に進む
        r_forward = v_forward
        (前方向の速度が速いほど報酬が大きい)
      目標地点に近づく
        r_goal = − distance_to_goal


    2. 安定性・安全性の報酬(Stability / Safety Reward)
    ロボットが「転ばない」「暴れない」ようにするための報酬。

    例:姿勢が安定している
        r_upright = − | tilt_angle |
      転倒したら大きな罰
        r_fall = −10


    3. 効率性・自然さの報酬(Efficiency / Smoothness Reward)
    ロボットが「自然で効率的な歩き方」を学ぶための報酬。

    例:エネルギー消費を抑える
        r_energy = −∑ |τ_i⋅θ˙i |
      急激な動きを避ける
        r_smooth = −∑ |Δτ_i |


    総合報酬
    実際の報酬は,これらを重み付きで足し合わせる:
      R = w₁ r_forward
        + w₂ r_upright
        + w₃ r_energy
        + w₄ r_smooth
        + w₅ r_fall
    この 重み(w₁, w₂, …)の調整が非常に難しい のが,報酬設計の本質。



報酬関数は「前進・安定・効率」の 3 本柱で構成される

四足歩行ロボットの報酬は,次の 3 つの目的を同時に満たすように設計する:

前に進む(Progress)
転ばない・安定する(Stability)
無駄な力を使わない(Efficiency)

この 3 つのバランスが,
「自然で壊れにくい歩行」を生む。

報酬関数の全体像(カテゴリ別)

報酬は大きく 6 つのカテゴリに分かれる:

① 前進報酬(Forward Reward)
② 姿勢安定報酬(Stability Reward)
③ エネルギー効率(Energy Penalty)
④ 接地・歩容の安定性(Gait Reward)
⑤ 衝突・転倒ペナルティ(Safety Penalty)
⑥ 動作の滑らかさ(Smoothness Reward)

これらを組み合わせて総合報酬にする。


① 前進報酬(Forward Reward)

最も基本的な報酬。

r_forward = w_f⋅v_x

v_x:前方向の速度
w_f:重み(例:1.0)

目的:前に進むほど報酬が増える


② 姿勢安定報酬(Stability Reward)

ロボットが倒れないようにするための報酬。

● 姿勢角(roll, pitch)の安定化
r_posture = − w_p⋅( | roll | + | pitch | )

● 重心の高さの維持
r_height = − w_h⋅| h − h_ref |

目的:姿勢が崩れるほどマイナス


③ エネルギー効率(Energy Penalty)

無駄な力を使うとマイナス。

r_energy = − w_e⋅∑_i |τ_i⋅q˙_i |

τ_i:関節トルク
q˙_i:関節角速度

目的:自然で省エネな歩行を促す


④ 接地・歩容の安定性(Gait Reward)

歩行のリズム(gait cycle)を安定させるための報酬。

● 足の滑り(slip)を減らす
r_slip = − w_s⋅∑_i || v_foot,i^horizontal ||

● 足の接地パターンを整える

4 脚のうち 2 脚が交互に接地する
不自然なジャンプを避ける

目的:自然な歩容を形成する


⑤ 衝突・転倒ペナルティ(Safety Penalty)

● 転倒したら大きなマイナス
r_fall = −1000

● 脚が本体に衝突したらマイナス
r_collision = − w_c

目的:危険な動作を避ける


⑥ 動作の滑らかさ(Smoothness Reward)

急激な動作を避けるための報酬。

● 行動の変化量を抑える
r_smooth = − w_s⋅|| a_t − a_t−1 ||^2

目的:滑らかで安定した歩行を促す


最終的な総合報酬

すべてを足し合わせて総合報酬にする。

r = r_forward + r_posture + r_height + r_energy + r_slip + r_smooth + r_fall

重み(w)は実験で調整する。




強化学習では,環境が

状態 s_t
行動 a_t
次状態 s_t+1

を見て,報酬 rt を返す。

r_t = R(s_t, a_t, s_t+1)

この R が 報酬関数。


Policy は
a_t = π_θ(s_t)

Policy が変わると “行動が変わる”
→ その結果,報酬が変わる

しかし Policy が報酬を変えるのではなく,
Policy が行動を変え,その行動が報酬を変える。