強化学習(Q 学習)
格子の世界でエージェントが試行錯誤しながらゴールへの道を学ぶ様子を、Q 値の色と方策の矢印で見せます。Q 学習・SARSA・期待 SARSA を並べて学習させ、崖歩きでの違いや、価値反復で求めた正解との差を確かめられます。
崖(罠)のすぐ上を通るのが最短ですが、探索でうっかり落ちると −100 です。Q 学習は崖ぎわの最短の道を、SARSA は探索での転落を見込んで少し離れた安全な道を覚えます(Sutton & Barto の例)。
エージェント A
次の状態で一番よい行動の価値を目標にします(方策オフ)。探索で実際に選ぶ行動とは関係なく、最適な行動の価値を学びます。
エージェント B
次の状態で実際に選んだ行動の価値を目標にします(方策オン)。探索でときどき間違えることも込みで価値を学ぶので、危険な場所を避けがちです。
パラメーターを変えると学習は最初からになります。ε を「減らす」にすると、0.5 から始めてエピソードごとに 0.97 倍します(今は 0.100)。滑る床では、選んだ向きと直角の向きに確率の半分ずつ滑ります。
A: Q 学習0 エピソード
まだ動いていません。
B: SARSA0 エピソード
まだ動いていません。
正解(価値反復)
環境のしくみ(どこに動くか・報酬)をすべて知っているとして、ベルマン方程式を 15 回繰り返して求めた最適な価値です。 最短の経路は 13 歩(報酬 -13)。
- 価値が高い(よい)
- 価値が低い(悪い)
- 罠(−100)
- ゴール
- 壁
- Q 値は、マスを 4 つの三角形に分けて、その向きへ動く行動の価値を塗ります。黒い丸がエージェント、太い線が価値の一番高い行動だけをたどった経路です。
エピソードごとの報酬
直近 20 エピソードの平均です。点線は最適な方策の報酬(滑らない床のとき)。探索(ε)を続けている間は、最適な値より下にとどまります。
学習を始めると、エピソードごとの報酬の合計をここに描きます。
| エージェント | エピソード | 歩いた数 | 直近 20 回の平均の報酬 | 罠に落ちた割合(直近 100 回) | 貪欲な経路 | 最適な方策との一致 |
|---|---|---|---|---|---|---|
| A: Q 学習 | 0 | 0 | — | — | ゴールに着かない | 3% |
| B: SARSA | 0 | 0 | — | — | ゴールに着かない | 3% |
使い方
- 地図と、並べて比べる 2 つのアルゴリズム(Q 学習・SARSA・期待 SARSA)を選び、「学習する」を押します。「1 歩ずつ」にすると、エージェントが動きながら Q 値を書き換える様子を 1 歩ずつ見られます。
- 学習率 α・割引率 γ・探索率 ε・床が滑る確率を変えると、学習は最初からになります。
- マスの色は学習した価値(青いほどよく、橙ほど悪い)、矢印は今の方策(価値の一番高い行動)です。右端は、環境のしくみを知っているとして価値反復で求めた正解です。
- 「マスを選ぶ」でマスを押すと、そのマスの 4 つの行動の価値を正解と並べて表示します。「壁」「罠」「ゴール」「スタート」を選んでマスを押すと、地図を作り変えられます。
強化学習と Q 学習
強化学習では、エージェントが環境の中で行動し、受け取った報酬から、どう行動すればよいかを試行錯誤で学びます。ここでは 1 歩ごとに −1、罠に落ちると −100 の報酬なので、報酬の合計を大きくすることは、罠を避けてなるべく短い道でゴールすることになります。
Q 学習は、状態 s で行動 a を取ったときにこの先得られる報酬の合計の見込み Q(s, a) を表で持ち、1 歩ごとに Q(s, a) ← Q(s, a) + α [r + γ max Q(s′, a′) − Q(s, a)] と更新します。環境のしくみを知らなくても、実際に動いた経験だけから最適な価値に近づいていきます。ゴールの近くから価値が決まり、それが 1 歩ずつ前のマスへ伝わっていく様子が色の広がりで見えます。
探索と方策オン・オフ
今わかっている一番よい行動ばかり取ると、もっとよい道を見つけられません。ε-greedy では、確率 ε でランダムな行動を取って探索します。Q 学習は更新の目標に「次の状態で一番よい行動」を使う方策オフの方法で、探索で取った行動とは関係なく最適な価値を学びます。SARSA は「次に実際に取る行動」を使う方策オンの方法で、探索でときどき失敗することも価値に含めます。
崖歩きではこの違いがはっきり表れます。Q 学習は崖ぎわの最短の道を覚えますが、学習中は探索でときどき崖に落ちます。SARSA は崖から 1 マス離れた遠回りの道を覚え、学習中に受け取る報酬はかえって多くなります。ε を「減らす」にすると探索が減っていき、SARSA も最短の道に近づきます。