用語集 · 強化学習

CAPS正則化

別名:CAPS、CAPS regularisation、Conditioning for Action Policy Smoothness、行動平滑化

方策の行動を滑らかにするために損失に加える項。ステップ間で行動が大きく変わらず、似た状態には似た行動を返すようにします。

CAPS(Conditioning for Action Policy Smoothness、Mysore et al. 2021)は、滑らかな制御のための正則化手法です。強化学習の方策はしばしばガタつきます。ネットワークの出力は近い入力どうしでも急に変わることがあり、実機のモーターやシミュレーション上の体では、それが目に見えるピクつきになります(ジッターを参照)。

CAPSは学習の損失に2つのペナルティを加えます。方策の平均行動を μθ(s)\mu_\theta(s) と書くと、次のようになります。

時間的な滑らかさ:連続する行動は近くあるべきです。

LT=∥μθ(st)−μθ(st+1)∥L_T = \big\lVert \mu_\theta(s_t) - \mu_\theta(s_{t+1}) \big\rVert

空間的な滑らかさ:ほとんど同じ状態には、ほとんど同じ行動を返すべきです。近くの状態 sˉ\bar{s} は、少しノイズを加えて作ります。

LS=∥μθ(s)−μθ(sˉ)∥,sˉ∼N(s,σ2)L_S = \big\lVert \mu_\theta(s) - \mu_\theta(\bar{s}) \big\rVert, \qquad \bar{s} \sim \mathcal{N}(s, \sigma^2)

全体の損失は次のとおりです。

L=LPPO+λTLT+λSLSL = L_{\text{PPO}} + \lambda_T L_T + \lambda_S L_S

重み λT,λS\lambda_T, \lambda_S を大きくするほど、制御は滑らかになりますが、反応は鈍くなります。

行動をフィルタするだけではだめなのか?

出力にローパスフィルタをかけても滑らかにはなりますが、遅れが生じ、方策はその遅れを織り込んで学習しなければなりません。CAPSはネットワーク自体を滑らかにするので、強いフィルタが要りません。実際には、この2つを組み合わせるとうまくいきます。

このプロジェクトでは

どちらの項にも二乗距離を使い、λT=λS=0.5\lambda_T = \lambda_S = 0.5 としています。sˉ\bar{s} は、正規化した観測に σ=0.05\sigma = 0.05 のノイズを加えて作ります。CAPSは、静止時のジッターを関節1つあたり毎秒1.7回の向きの反転から0.01回まで下げた5つの変更のひとつです。残りの4つは、バランスのゲート、適応型の行動フィルタ、実際の関節の動きに対する滑らかさの報酬、そしてフォームの床でした。

ブロックの取り組みでは、CAPSは方策が自分で押す4つのブロックボタンまで滑らかにしてしまいました。ボタンを押すことは、まさに出力の急なジャンプなので、ボタンをCAPSの対象から外すまで、ファイターは一度も意図的にボタンを押しませんでした(ブロックを参照)。

関連用語

この用語が出てくる記事

← すべての用語