Day 4 - 強化学習、AlphaGo のまとめ


この記事は個人的なお勉強用のメモです。

講義

強化学習

強化学習とは

強化学習の位置づけ
機械学習の一つ

  • 教師あり学習
  • 教師なし学習
  • 強化学習

データの特徴を見つけるのが、教師(あり|なし)学習
報酬を最大化する行動を見つけるのが、強化学習

強化学習の応用例

マーケティングでの例

項目 説明
環境 会社の販売促進部
エージェント プロフィールと購入履歴に基づいて
キャンペーンメールを送る顧客を決めるソフトウェア
行動 顧客ごとに、送信、非送信の二つの行動を選択
報酬 2種類の報酬
負の報酬:キャンペーンのコスト
正の報酬:キャンペーンで生み出されると推測される売上

目的は報酬を最大にすること(コストをなるべく小さくしつつ、売上を最大にする)

探索と利用のトレードオフ

最初はランダムでキャンペーンメールを送る。
キャンペーンメール後の反応で売上を大きくする方法がわかってくる。
少しずつより良い行動に変えていく。

探索不足 ⇔ 利用不足 のトレードオフ

探索不足だと、他のもっとベストな行動を見つけられない。
利用不足だと、過去の経験が活かせない。

強化学習のイメージ

職場で仕事をするイメージに近い。

  • 環境(職場のようなもの)
  • エージェント(主人公)

エージェント(主人公)は環境(職場)は行動(仕事)を頑張る。
頑張った結果、環境から報酬(ボーナス)がもらえる。
何をすると報酬が多くなるか、方策(仕事のやり方)を考える。
環境は状態が変わることがある。

強化学習とは、よい報酬が得られるよう、方策を訓練すること。
方策関数と行動価値関数を学習する。

方策関数:$\Pi(s,a)$
行動価値関数:$Q(s,a)$

強化学習の差分

強化学習と教師あり、教師なし学習は目標が違う。

分類 目標
教師あり、教師なし学習 データに含まれるパターン(特徴量)を見つける
そのデータから予測する
強化学習 優れた方策を見つける

強化学習の歴史

以前はコンピュータの性能不足のため、実現できなかった。
強化学習は計算量が多く必要。深層学習より計算量が多い場合も。

Q学習と関数近似法によって強化学習が進んだ。
Q学習では、行動価値関数を使う。
関数近似法は、関数の中を学習させる方法。価値関数や方策関数を関数近似。

行動価値関数

2種類の価値関数

  • 状態価値関数(状態の価値に注目)
  • 行動価値関数(状態と行動を組み合わせた価値に注目)

方策関数

ある状態でどのような行動をとるのかの確率を与える関数。

価値関数と密接に関係する。
価値関数が最大になるような行動をとるよう、方策関数はエージェントの行動を決める。

囲碁の例

  • どこに碁石を置くか決めるのが方策関数
  • やり続けたら最終的に勝てそうか情報提供

方策勾配法

方策勾配法の数式

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

$\theta$:重みに相当
$\epsilon$:学習率
$\nabla$:微分という意味
$J(\theta)$:誤差関数に相当

【注意】
勾配降下法では符号がマイナス(誤差を小さく)だが
方策勾配法では符号がプラス(報酬を大きく)であることに注意。

方策勾配定理の数式

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

変形前の式はこちら。

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

$A$:取りえるすべての行動
$a$:ある行動

AlphaGo

  • AlphaGo Lee
  • AlphaGo Zero

AlphaGo Lee

方策関数 PolicyNet(どこに打つか)

  • CNN
  • 入力は 19x19、48 チャンネル
  • Convolution + ReLU
  • 出力 SoftMax で 19x19 マスの 2次元の着手予想確率

価値関数 ValueNet(そこに打つとどうなるか)

  • CNN
  • 入力は 19x19、49 チャンネル
  • Convolution + ReLU ⇒ 全結合で1次元に変換
  • 出力 tanh で勝率を -1~1 で表す

学習のステップ

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

最初に教師あり学習を使うのがポイント。

RollOutPolicy の教師あり学習

高速に着手確率を出すために使用。
線形の方策関数(NNではない)。

PolicyNet の教師あり学習

過去の棋譜データで教師あり学習を実施。

モンテカルロ木探索

囲碁ソフトで最も有効とされている探索法。
手を打って、そのあとランダムに打ち、勝率を出力する。
それを複数回繰り返し、勝敗を集計して、着手の優劣を決定する。

その後、優れた手を着手して、モンテカルロ木探索を繰り返すことで
探索木を成長させる。

AlphaGo Zero

AlphaGo Lee と AlphaGo Zero の違い。

  • 強化学習のみ(教師あり学習なし)
  • 石の配置のみ(ヒューリスティックな要素を排除)
  • PolicyNet と ValueNet を統合
  • Residual Net を導入
  • モンテカルロ木探索から RollOut シミュレーションを無くした

PolicyValueNet

  • 入力 19x19、17 チャンネル
  • Convolution + Batch Normalize + ReLU
  • Residual Network(勾配消失や勾配爆発を防ぐためのショートカットあり)
  • 途中で Policy 向けと Value 向けに枝分かれして、2種類の出力

Residual Networkの派生形

丸ごと覚えるのは大変なので、特徴のみ記載。

Residual Blockの工夫

  • Bottleneck
    1x1 Convolution、次元削減、次元復元の計3層構造
  • PreActivation
    Block の並び替え

Network 構造の工夫

  • WideResNet
    Convolution の Filter 数が k 倍
  • PyramidNet
    各層で Filter 数を増加

関連記事

シラバスを見たところ、価値反復法、具体的には DQN が
シラバスの強化学習に含まれているので、DQN についてお勉強。

DQN

Deep Q-Network
Googleの子会社ディープマインドが開発した人工知能。
深層強化学習アルゴリズムを利用。
一部の電子ゲームにおいて人間以上のスコアを獲得できている。

DQNの特徴は以下の3つ。

  • 体験再生(experience replay)
  • 目標 Q ネットワークの固定
  • 報酬のクリッピング

体験再生(experience replay)

各タイムステップにおけるエージェントの経験をデータ集合に蓄積する。
学習時に、蓄積されたサンプルの中から経験をランダムに取り出し、
損失の計算に用いる。
利点は次の 3 つ。

  1. データの効率が良い。
    理由:パラメータの更新時に、同じ経験を何回も使えるため。
  2. 更新の分散を軽減できる。
    理由:系列方向の相関を断ち切れるため。
  3. 直前に取得したデータが次の行動の決定に及ぼす影響を軽減できる。
    これにより、パラメータの振動やパラメータの発散を避けることができる。
    理由:過去の様々な状態で行動分布が平均化されるため。

目標 Q ネットワークの固定

「価値関数が小さく更新されただけでも、選ばれる行動が大きく変わってしまう」問題を解決。
パラメータを固定し、一定周期でこれを更新することで学習を安定させる。

損失関数の数式

L(\theta) = E_{s,a,r,s'~D} \Bigl[ (r + \gamma \max_{a'} Q (s',a';\theta^{-})- Q(s,a;\theta)\Bigr]

ポイント
・$\max Q()$ の符号はプラス
・$Q()$ の符号はマイナス
・$\max Q()$ 内の $\theta$ は固定($\theta^{-}$)
・$Q()$ 内の $\theta$ は可変

報酬のクリッピング

報酬の値を {-1, 0, 1} の 3 値に制限すること。
「報酬のスケールが与えられたタスクによって大きく異なる」という問題を解消。
ゲームごとに学習率を調整する必要がなくなった。