LoginSignup
2
1

More than 3 years have passed since last update.

割引率のメモ

Last updated at Posted at 2019-12-10

雑なメモです.

割引率(discount factor)

強化学習では,累積割引報酬

\sum_{t=0}^{T} \gamma^{t} R_t

を最大化する.ここで,$R_t$は各時刻$t$に貰える報酬,$\gamma$が割引率(discount factor)である.割引率とは,「将来に貰える報酬をどれだけ割り引いて考えるか」を表すパラメータで,範囲は$0 \leq \gamma < 1$.通常0.9あたりに設定する.割引率が大きいときは遠い未来の報酬まで考える方策を,小さいときには直近の報酬しか考えない方策を学習する.

割引率のグラフ

$y=\gamma^{t}$のグラフを示す.横軸が$t$,縦軸が$y$.
gamma.png

よく使われる$\gamma=0.95$は,およそ$t=100$付近でほぼ$0$になっている.たとえば,OpenAI Gym環境のCartPole-v0は最長ステップ数が200であるが,200ステップ先の報酬に掛かる割引率は$\gamma^{200}=0.95^{200} \fallingdotseq 0.000035$であり,非常に小さい.

割引率が特定のしきい値を下回るステップ数

y= \gamma^{t} \\
\ln y = t \ln \gamma \\
t = \frac{\ln y}{\ln \gamma}

と変形すると,割引率$\gamma^t$が特定の値$y$になるようなステップ数$t$を求めることができる.
割引率$\gamma^{t}$が特定の値より小さくなるステップ数を示す.

割引率$\gamma$ $<0.5$ $<0.1$ $<0.01$ $<1.0 \times 10^{-100}$
0.999 693 2302 4603 230143
0.99 69 230 459 22911
0.95 14 45 90 4490
0.9 7 22 44 2186
0.8 4 11 21 1032
0.5 2 4 7 333
0.1 1 2 3 101

割引率の逆算

こういうやり方がよいかは微妙だが,逆に,あるステップ数$t$で特定の値$y$になるような割引率$\gamma$を求めたい時.

y= \gamma^{t} \\
\ln y = t \ln \gamma \\
\frac{\ln y}{t} = \ln \gamma \\
 \gamma = \exp (\frac{\ln y}{t})

たとえば,先述したCartPole-v0で,最長ステップ数$t=200$のとき$y=0.01$になる$\gamma$は,$\exp(\frac{\ln 0.01}{200}) \fallingdotseq 0.977$である.

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1