1. 強化学習
1.1. 強化学習のイメージ
深層学習、機械学習は、教師のありなしがあっても、何かの特徴を捉えるのが仕事だった。
強化学習は、ちょっと趣が違い、何かの仕事の結果の利益を最大化するのがメインとなる。
ある環境で、長期的に、報酬を最大化出来る行動を選択出来るエージェントを作るのが強化学習。
現実に言いかえると、
ある職場で、長期的に、給料、成果を最大化する行動の選択決定方法を理解学習する。
なお、強化学習の考え方は、昔からあったが、計算量が膨大だったため、最近まで下火だった。
また、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次元データなので、内部で畳み込みを実施する。
出力では、ソフトマックス関数で、どこのマスに打てばよいかを出力している。
3.1.2. ValueNet(価値関数)
価値関数をこれも畳み込みNNのValueNetとしている。
入力に、今の手番が黒か白かチャンネルが増えて49チャンネル。
最後の方に、2次元データを1次元にするために全結合する。
出力では、このままで勝てるかどうかの勝率が-1~+1で出力される。
3.1.3. AlphaGo学習
AlphaGoの学習は次のステップ
- 教師あり学習で、RolloutPolicyと、PolicyNet学習
- 強化学習でPolicyNet学習
- 強化学習で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)に途中で分岐するのが特徴的である。
3.2.1. Residual Block
Residual Blockは、畳み込み層が数十層超える。しかしその中で、一部ショートカットするネットワークがある。これは、いろんなネットワーク構造を内部に持っていることになり、アンサンブル効果を発生する。
これにより、勾配消失問題、勾配爆発問題を回避することが出来る。