(私のような)猿でもわかる強化学習(Q学習)
はじめに
一度、DQNを通してお勉強したのですが、いまいち納得できていなかったので、ちゃんと勉強し直します。
とは言っても、変数とか数式とか出てくると意識が飛んでしまうので、なるべく簡単な言葉に翻訳します。
登場人物(ひとではない)
ゴール
ある状態でどういった行動をとれば、価値(Q値)が最大になるのかを求める。
瞬間瞬間で、常にベストな行動をとるイメージです。
基本的な考え方
今の状態である行動をとったときの価値(Q値)は、それによってもらえる報酬と、その後の価値(Q値)を足したものになります。
価値(Q値)=報酬+その後の価値(Q値)
ただし、その後の価値(Q値)は確定ではないので、正確にはちょっと割り引いた値(割引率)にします。
(この説明では、話を簡単にするために省略)
価値(Q値)の求め方
価値(Q値)の求め方はいろいろあります。
- Q学習
- SARSA
- モンテカルロ法
- etc.
ここでは「Q学習」での求め方を説明します。
Q学習
残念ながら将来の価値(Q値)はわかりませんので、実際に「ある状態のときにある行動をとったらいくらの報酬になった」かを学習して、どんどん価値(Q値)を更新することで実現します。
今の価値(Q値)を、更新前の今の価値(Q値)と、今回の行動によって得られる報酬と、次の全ての行動の価値(Q値)の最大値を足したものとするのがQ学習になります。
次に行う行動はわからないので、とりあえず最大値を使用するという、ざっくりとした計算でも大丈夫そうです。
なお、「次の全ての行動の価値(Q値)」も更新前の値を使用します。
今の価値(Q値)=更新前の今の価値(Q値)
+(今回の報酬+次の全ての行動の価値(Q値)の最大値)
また、本当はそこに学習率をかけることで、どのくらい急激に価値(Q値)を変化させるかを指定します。
(この説明では、話を簡単にするために省略)
この計算を、実際に学習するときに行い、価値(Q値)を更新していきます。
最終的に、状態×行動のマトリックスに価値(Q値)を設定した表が出来上がります。
※今の状態と行動から報酬が求められるので、それと表の価値(Q値)を使って、表を更新していきます
※OpenAIの「CartPole v0」で、状態を6種類に量子化した場合
図解
実行
出来上がった表に従い、今の状態から、価値(Q値)が最大となる行動を選んでいけば、最適な行動がとれるということになります。
問題点
一見なんの問題もなさそうな仕組みですが、状態のパターンが多い(離散的ではなく連続的な場合とか)と、表が作れないという問題があります。
(学習できなかったパターンがあると、正しく価値(Q値)が求められない)
そこで、機械学習(Deep Learning)を使って価値(Q値)を近似してしまおうというということになります。
なので、次はDQN(Deep Q-Network)をこのくらい簡単に説明できればなと思っています。
Author And Source
この問題について((私のような)猿でもわかる強化学習(Q学習)), 我々は、より多くの情報をここで見つけました https://qiita.com/mine820/items/e51c91660cef00a50006著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .