0
0

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.

深層学習-後編2 強化学習

Last updated at Posted at 2021-07-09

ラピッドチャレンジで学習したことを忘れないように残そうかと。
はい。

強化学習

環境の中で行動を選択できるエージェントを作ることを目標とする。
行動による利益(報酬)をもとに、行動を決定する原理を改善する。

不完全な知識を元に行動しながらデータを収集し、最適な行動を見つける。
試しながら、失敗しながら学習してく。
仕事をしていくイメージ。

わかりやすかったページ

探索と利用のトレードオフ
最初はランダムに動いて(探索)、ある程度わかってきたら経験を利用する。
このトレードオフがあって、学習を進められる。

方策関数と価値関数を学習するのが強化学習。
アルゴリズムには下記がある。

  • Q学習
  • Sara
  • モンテカルロ法

強化学習と通常の教師あり、教師なし学習との違い

そもそも、目標が違う。

  • 教師なし、あり学習
    データに含まれるパターンを見つけ出すことと、データから予測すること。
  • 強化学習
    優れた方策を見つける。

強化学習の歴史

Q学習と関数近似法があり、深層学習と組み合わせて使う様になってきている。

  • Q学習
    行動価値観数を、行動するたびに更新することで学習を進める方法

  • 関数近似法
    価値観数や方策関数を関数近似する手法

ポリシー

エージェントはポリシー $\pi$ にしがって行動します。
この場合、方策とはある状態sの時に行動aを取る確率として定義されます。

\pi(s,a)

価値観数

価値を表す関数。目標設定と考えれば良い。
2種類ある。

  • 状態価値観数
    • 状態の価値に注目する。
  • 行動価値関数
    • Q学習で使われる。
    • 状態と行動を組み合わせると生成される価値に注目する。
V^{\pi}(s) : 状態価値関数 (状態sにいることの価値)\\
Q^{\pi}(s, a) :行動価値関数(状態 + 行動関数。状態sにいて行動aを取る価値)

方策関数

エージェントがある状態でどの様な行動を取るか決める関数。
価値観数を最大にするように計算する。「今回はどうしよう?」を決める。

\pi(s) = a

方策関数は価値観数を最大にする方法を学習させる。

方策勾配法

方策関数をNNにしてあげればいいのでは?ということ。

  • 方策反復法
\theta^{(t+1)} = \theta^{(t)} + \epsilon \nabla J(\theta)

方策関数は

\pi(s, a) |\theta)

s:状態
a:行動
$\theta$ : 重み

J() : NNでいうところの誤差関数

NNだと最小化したいが、深層学習は最大化したい。

  • 平均報酬
  • 割引報酬和

行動価値関数: Q(s, a) の定義を行い、方策勾配定理が成り立つ。
方策関数を最大化したい。
この式を計算する。

\nabla_{\theta} J(\theta) = \mathbb {E}_{\pi_\theta}[(\nabla_{\theta}log\pi_\theta(a|s)Q^\pi(s,a))]

元の式は下記。

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

$\pi_{\theta}(a|s)Q^{\pi}(s, a)$ は、ある行動を取るときの報酬を表す。
それを足し合わせるというのが、上式。

状態価値観数 (ベルマン方程式)

現時点 t におけるQ値は一つ先の時点 t+1 のQ値によって書くことができるという考え方。

Q(s_t, a_t) = E_{s_{t+1}}(r_{t+1} + \gamma E_{a_{t+1}}(Q(s_{t+1}, a_{t+1})))

深層学習の定石

2次元が入ってきたらConvolutionする。
出力が2次元ならSoftmax
出力がもっと小さな次元なら、flatten して結合して集約する。

Alpha Go (Lee)

PolicyNet (方策関数) と Value Net (価値観数)
いずれも畳み込みネットワーク。

PolicyNet : 碁石を打つ位置を計算する
ValueNet : 勝つか負けるか算出する。

Alpha Go の学習ステップ

学習の方法を工夫して、学習させている。
強化学習で学習させるのは大変なので、教師あり学習である程度学習させてから、強化学習をする。

  1. 教師あり学習による RollOutPolicy と PolicyNet の学習
  2. 強化学習による PolicyNet の学習
  3. 強化学習による ValueNet の学習

RollOutPolicy

NNだと学習のためにリソースが必要になる。
NNではなく、線形の方策関数を使いましょう。
PolicyNetに比べて1000倍早い。

Alpha Go (Lee)のモンテカルロ木探索

価値観数を学習させるときに適用された。
下記4ステップで行使される。

  • 選択
  • 評価
  • バックアップ
  • 成長

Alpha Go Zero

Alpha Goとの違いは下記。

  • 教師あり学習はしない。強化学習だけ。
  • 特徴入力(人がこれ、役に立つんじゃない?データを選ぶ)からヒューリステックな要素を排除
  • PolicyNetとValueNetを1つのネットワークに統合
  • Rsidual Netを導入
  • モンテカルロ木探索から RollOut シミュレーションをなくした

Residual Network

ネットワークにショートカット構造(Identity mappingと言われるバイパス接続)を追加して、勾配の爆発、消失を抑える。
100層を超えるネットワークで安定した学習ができる様になった。
単にSkipが入っているだけ。

下記を1単位(1ブロック)にして、積み重ねる。
Residual Blockという。

Convolution → BatchNorm → ReLU → Convolution → BatchNorm → Add → ReLU

ショートカット構造の場合、"Add"から始める。

浅いCNNで十分学習できてしまい、深い中間層が不要な際、不要な層の重みが 0 になる。

アンサンブル効果が得られる。

Residual Networkの派生形

  • Residual Block に工夫をしたもの
    • Bottleneck
    • PreActivation
  • NetWork 構造に工夫したもの
    • WideResNet
    • PyramidNet

Alpha Go Zero のモンテカルロ木探索

下記4ステップで行使される。

  • 選択
  • 評価および成長
  • バックアップ

Alpha Go Zero の学習法

  1. 自己対局による教師データの作成
  2. 学習
  3. ネットワークの更新
0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?