用語集 · 強化学習

行動クリッピング

別名:Action clipping、クリッピング、clipping、飽和、saturation、行動の上下限、action bound

許された範囲から外れた行動を切り詰めることです。安全のために必要ですが、方策の出力のずれを隠してしまうことがあります。

ガウス方策はどんな実数でも出力できますが、モーターには限界があります。そこで環境は、各行動を使う前にその範囲へクリップ(切り詰め)します。

aused=clip⁡(a,−1,1)=max⁡(−1, min⁡(1,a))a^{\text{used}} = \operatorname{clip}(a, -1, 1) = \max\big(-1,\, \min(1, a)\big)

隠れた問題

クリッピングは範囲の外では平らです。方策(ポリシー)の平均 μ\mu が5までずれても、実際に使われる行動は1のままです。μ\mu を5から4に動かしても環境から見える変化は何もないので、それを引き戻す報酬の信号がありません。平均はどんどんずれていき、引き戻すものは何もなく、関節は限界に張り付いたままになります。その関節の学習は止まってしまいます。

対策

  • 平均のうち範囲外の部分に対する、損失への上下限ペナルティ:
Lbound=∑imax⁡(0, ∣μi∣−1)2L_{\text{bound}} = \sum_i \max\big(0,\, |\mu_i| - 1\big)^2
  • スカッシング: 出力を tanh⁡\tanh に通し、[−1,1][-1, 1] から決して出られないようにします。対数確率の計算が変わり、SAC など他のアルゴリズムでよく使われます。

このプロジェクトでは

ラン survive2 では、±1 でクリップされるのに対して、行動の平均の大きさが平均17までずれました。すべての関節が限界に張り付き、方策は崩壊しました(学習の発散を参照)。∣μ∣>1|\mu| > 1 に対する損失でこれが直り、それ以来ずっと学習に組み込まれています。

関連用語

この用語が出てくる記事

← すべての用語