0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

強化学習

Posted at

1. 強化学習

1.1. 強化学習のイメージ

深層学習、機械学習は、教師のありなしがあっても、何かの特徴を捉えるのが仕事だった。
強化学習は、ちょっと趣が違い、何かの仕事の結果の利益を最大化するのがメインとなる。

ある環境で、長期的に、報酬を最大化出来る行動を選択出来るエージェントを作るのが強化学習。
現実に言いかえると、
ある職場で、長期的に、給料、成果を最大化する行動の選択決定方法を理解学習する。

強化学習イメージ.PNG

なお、強化学習の考え方は、昔からあったが、計算量が膨大だったため、最近まで下火だった。
また、Q学習、関数近似法が出てきたので盛り上がっている。

1.2. 強化学習でのトレードオフ

強化学習は、報酬を最大化する為に、今の状態に対しての最適な行動を決める必要がある。

  • 行動を決める指針として、過去の情報にだけ頼っていると、最適解が他にあっても見つけられない。適当でも冒険する事が必要である。
  • 逆に、冒険ばかりしていると、過去の経験を生かせない。

強化学習では、上記の2つのバランスを取ってやることが必要である。

2. 強化学習の数学モデル

2.1. 強化学習の学習対象関数

強化学習では、以下の2つを学習する。

  • 方策関数( $\prod (s ,a)$ )
  • 価値関数( $Q (s, a)$ )

2.1.1. 方策関数

方策関数:\prod (s) = a

action

方策関数は、エージェントがとる行動を決めるための関数である。
価値関数の結果を最大化するような行動をとるように決める。

2.1.2. 価値関数

価値関数は、エージェントが目標とする価値を決める関数である。ゲームの終わりまで、今の方策を続けたときに、最終の報酬の予測値を求める。
そして、この価値関数は、以下の2つある。

  • 状態価値関数V:状態sによって価値が決まる。状態が良ければ価値が上がる。
  • 行動価値関数Q:状態sと、そのときエージェントがとった行動aによって価値が決まる。
状態価値関数:V^{\prod} (s)
 \\
行動価値関数:Q^{\prod} (s, a)

status, action

2.2. 学習方法

強化学習では、方策関数と、価値関数を学習する。価値関数は、将来的にどうあるべきかを指し示し、方策関数は、そこへ到達するために今何をすべきかを決定する関数である。

関数近似法
方策関数や価値関数を、関数近似する。昔の強化学習では、INに対してOUTが示されたマトリックスを利用して学習していたが、これを関数で対応するようになった。
深層学習の手法と合わせて利用する。

Q学習
価値関数を、行動するたびに更新する。機械学習みたいなかんじ。
深層学習の手法と合わせて利用する。

方策勾配法

方策関数をNNにして学習する。

方策関数:\prod (s,a | \theta) 

方策関数 $\pi $ は、上のように重み$\theta$があるので、NNに出来る


\theta^{t+1} = \theta^{t} + \epsilon \nabla J ( \theta ) \\

\\
※ \theta は、重み w のこと \\
※ Jは誤差関数(強化学習の場合は期待収益) \\
※  \epsilon は学習率\\

上記の式で、誤差関数を含む項が+になっている。普通のNNの学習の場合、誤差を最小にするために学習するので、ここは-である。
しかし、強化学習の場合は、利益を最大化する必要があるので、+になっている。

なお、右辺の項の期待収益部分を式展開すると以下になる。


 \nabla_{\theta} J ( \theta ) = \nabla_{\theta} \sum_{a \in A} \prod_{\theta} (a | s) Q^{\pi} (s,a)

$\prod_{\theta} (a | s) Q^{\pi} (s,a)$ の部分は、ある行動をとった時の報酬をさす。
そして、$\sum$で、すべての行動パターンに対して合計している。

3. AlphaGo

強化学習の有名モデル。

  • AlphaGo Lee
  • AlphaGo Zero

3.1. AlphaGo Lee

AlphaGo Leeでは、方策も価値関数もNNにしている。

3.1.1. PolicyNet(方策関数)

方策関数を畳み込みNNのPolicyNetとしている。
入力は、碁盤の目19×19を48チャンネル持っている。このチャンネル数は、黒石、白石、履歴、呼吸点などの情報ごとに入力データがある。
そして、2次元データなので、内部で畳み込みを実施する。
出力では、ソフトマックス関数で、どこのマスに打てばよいかを出力している。

AlphaGo_PolicyNet.PNG

3.1.2. ValueNet(価値関数)

価値関数をこれも畳み込みNNのValueNetとしている。
入力に、今の手番が黒か白かチャンネルが増えて49チャンネル。
最後の方に、2次元データを1次元にするために全結合する。
出力では、このままで勝てるかどうかの勝率が-1~+1で出力される。

AlphaGo_ValueNet.PNG

3.1.3. AlphaGo学習

AlphaGoの学習は次のステップ

  1. 教師あり学習で、RolloutPolicyと、PolicyNet学習
  2. 強化学習でPolicyNet学習
  3. 強化学習でValueNet学習

最初のステップは、いきなり強化学習ではうまくいかないので、一回教師ありで学習をするという工夫である。

3.1.4. RolloutPolicy学習

PolicyNet学習は、畳み込みのため、かなり時間がかかる。そこで、RolloutPolicy学習が出てきた。
これは、NNではなく、線形関数であり、PolicyNet学習の1000倍の速度で学習が出来る。
具体的には、過去の現実の囲碁の棋譜データを模倣するように学習する。

3.1.5. モンテカルロ木探索

価値関数(ValueNet)を学習するさいには、モンテカルロ木探索が使われる。

3.2. AlphaGo Zero

AlphaGo Zeroは、Leeとは違って、強化学習のみで学習を行うのを特徴としている。

また、Leeでは、入力に48チャンネルがあった。この内容は人間が決めていた。こういう特徴データを人間が決めているのをヒューリスティックという。
Zeroでは、これを止め、石の配置だけを入力にした。

そして、入力に対して、2つの出力(Policy, Value)に途中で分岐するのが特徴的である。

AlphaGoZero.PNG

3.2.1. Residual Block

Residual Blockは、畳み込み層が数十層超える。しかしその中で、一部ショートカットするネットワークがある。これは、いろんなネットワーク構造を内部に持っていることになり、アンサンブル効果を発生する。
これにより、勾配消失問題、勾配爆発問題を回避することが出来る。

0
3
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
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?