機械学習の中でも、教師あり学習に分類されるニューラルネットワーク(Deep Learning)、そして強化学習、
さらに強化学習内に分類されるQ学習について触れていきます。
機械学習
教師あり学習
・クラス分類
・ニューラルネットワーク(deep Learning)
・回帰分類
教師なし学習
・クラスタリング
・k-means
強化学習
・Q学習
強化学習とは
強化学習とは、ある環境下に置かれたエージェントが環境に対して行動をし、得られる報酬が最大化されるような方策(Policy)を求める機械学習アルゴリズムのひとつです。
エージェントが環境に対して行動を起こし、環境が状態の更新と行動の評価を行い、状態と報酬をエージェントに知らせるというサイクルを回して学習が進みます。得られる報酬の合計が最大化されるように、行動価値関数と方策を学習によって最適化していきます。
強化学習は、以下の手順を繰り返し行います。
- 1. エージェントが環境に対して行動を起こす。
- 2. 環境がエージェントに更新された状態と報酬を与える。
- 3. エージェントは報酬をもとに行動の方策を修正し、1に戻る。
図1: 強化学習のイメージ図
強化学習で出てくる用語
用語 | 意味 |
---|---|
エージェント(Agent) | 環境に対して行動を起こす学習者のような立場です。強化学習ではこのエージェントが環境に対して様々な試行を繰り返し、状態ごとに行動を最適化していきます。 |
環境(Enviroment) | エージェントの行動に対して状態の更新と報酬の付与を行う、観測者のような立場です。 |
行動(Action) | エージェントがある状態sにおいて取ることができる行動のことです。 |
状態(State) | 環境が保持する環境の様子です。エージェントが起こす行動に応じて更新されます。 |
報酬(Reward) | エージェントの行動に対する環境からの報酬です。この報酬はエージェントが環境に対して望ましい結果を作用させた時に与えられます。 |
方策(Policy) | エージェントが行動する際の指標となるルールです。後記するQ学習では、行動価値関数において最も価値の高い行動が選択されます。 |
行動価値関数 (Value Function) |
ある状態での行動の評価値を定める関数です。状態数が少ない時にはテーブル(表)で表記できます。主な手法に、Q学習におけるQ関数などがあります。 |
Q学習
強化学習の手法の一つにQ学習(Q-Learning)があります。Q学習での行動価値関数(Q関数)の更新式は
[math] Q(s_t,\, a_t) ← Q(s_t,\,a_t)\,+\,α\,[r_{t+1}\,+\,γ\,\displaystyle\max_{\substack{a_{t+1}\,ε\,A(s_{t+1})}}\,Q(s_{t+1},\,a_{t+1})\,-\,Q(s_t,\,a_t)] [/math]
となります。
[math] Q [/math] : 状態 [math] s [/math] での行動 [math] a [/math] の評価を格納するテーブル(関数)
[math] s_t [/math] : 時刻 [math] t [/math] での状態
[math]a_t[/math] : 状態 [math] s_t [/math] でとることのできる行動
[math]α[/math] : 学習率 [math](0 < α < 1)[/math]
[math]γ[/math] : 割引率 [math](0 < γ < 1)[/math]
学習率 [math] α [/math] は、Q関数の値の修正量を調整するパラメータです。
割引率 [math] γ [/math] は、Q関数を更新する際に、次状態の評価の期待値をどれだけ考慮するかを定めるパラメータです。
Q学習では、[math] r_{t+1}\,+\,γ\,\displaystyle\max_{\substack{a_{t+1}\,ε\,A(s_{t+1})}}\,Q(s_{t+1},\,a_{t+1})\,-\,Q(s_t,\,a_t) [/math] が0になるように、
つまりQ関数の値 [math] Q(s,a) [/math] が、報酬 [math] (r_{t+1}) [/math] と、次状態 [math] S_{t+1} [/math] で可能な行動の中で
最大の価値 [math] (γ\,\displaystyle\max_{\substack{a_{t+1}\,ε\,A(s’)}}\,Q(s_{t+1},\,a_{t+1})) [/math] の和になるように行動価値数を更新していきます。
報酬の期待値と現在の行動価値の誤差を0に近づけるようにQ関数を更新します。
[math] (γ\,\displaystyle\max_{\substack{a_{t+1}\,ε\,A(s’)}}\,Q(s_{t+1},\,a_{t+1})) [/math] の値は、現在の [math] Q(s_t,\,a_t) [/math] の値と、 [math] a_t [/math] 実行後の状態 [math] S_{t+1} [/math] で実行可能な行動の中で得られる最大の評価値に依存して修正されます。つまり、エージェントが環境に対して、なんらかの望ましい結果を作用させたときの報酬が、その結果を起こす前の行動へと順番に伝搬されていくイメージです。
行動1 | 行動2 | 行動3 | 行動4 | |
---|---|---|---|---|
状態1 | 7 | 0 | 0 | 0 |
状態2 | 8 | 0 | 0 | 0 |
状態3 | 0 | 0.3 | 9 | 0 |
状態4 | 0 | 0 | 0 | 0.6 |
表1: Q関数テーブル表記
Q関数は、ある状態 [math] s [/math] の時に取ることのできる行動 [math] a [/math] を取ったときの評価値を返す、表1のテーブルのように表すことができます。しかし、このようなテーブル状で行動価値関数を管理するとなると、保持できる状態と行動の数に限界が生じてきます。
Q学習における方策は、この行動価値関数(Q関数)の状態 [math] s [/math] において最大の価値が期待される行動 [math] a [/math] です。
これを式の形で表すと [math] \displaystyle\arg\,\displaystyle\max\,Q(s,a) [/math] となります。しかし、期待される価値が最大の行動のみをとり続けて学習を進めると、一度報酬の期待値に差が出ると、未だ経験したことがない状態に遷移することがなくなってしまいます。学習時の行動選択の手法として、ε-greedy法が存在します。
ε-greedy法は、確率 [math] ε [/math] で全ての行動から1つ選び(探索)、確率 [math] 1-ε [/math] で行動価値が最大の行動を選ぶ(利用)行動選択の手法です。
深層強化学習とは
深層強化学習とは強化学習と深層学習の手法を組み合わせた物で、代表的な手法に、Deep-Q-Network(DQN)があります。DQNは、Q学習における行動価値関数(Q関数)を、畳み込みニューラルネットワークに置き換えて近似したものです。
ただ単純にQ関数を畳み込みニューラルネットワークを置き換えても、学習がうまくいくわけではないので、学習を収束させるための工夫がなされています。
深層強化学習の出現背景
Q学習では、状態数 [math] s [/math] × 行動数 [math] a [/math] のテーブルを更新することによってQ関数を更新していましたが、状態数が大きくなってくると、テーブルによってQ関数を表すことが現実的ではなくなってきます。これを解決するために、Q関数を畳み込みニューラルネットワークで表現するアプローチをとり、学習が収束するための工夫をしたものがDeep Q Networkです。
図2: Deep-Q-Networkの構造図
(引用元:Human-level control through deep reinforcement learning(2015/02))
DQN
Deep-Q-Networkの略称で、前述の強化学習における行動価値関数の部分を、畳み込みニューラルネットワーク(CNN)で近似した手法。学習を収束させるための工夫がなされています(Experience Replay と Target Network)。
CNN(概要)
DQNでは行動価値関数を畳み込みニューラルネットワーク(Convolutional Neural Network, CNN)で近似しています。CNNは入力値に画像などの行列をとり、畳み込み層のフィルターとプーリング層で入力の特徴量を処理していき、出力に画像のクラス分類予測などの確率を出力します。
DQNでは、リサイズされた84×84グレースケールの4時刻分のゲーム画面を入力にとり、ゲーム環境での行動を出力します。
Experience Replay
DQNの学習を収束させるための工夫として、Experience Replayがあります。Experience Replayは、エージェントが経験した過去の体験をreplay memolyに一定期間保存して置き、過去の経験をランダムにサンプリングして学習を行う手法です。データ間に強い相関があると学習が収束しなくなってしまうことを防ぐために、学習に使用するデータの偏りを無くすのが目的です。
Target Network
深層強化学習では、Q関数の更新が1時刻前([math] t-1 [/math])のニューラルネットワークのパラメータ(重み・バイアス)に依存しています。パラメータは学習ごとに更新されるので、目標とする評価関数が安定しなくなり、学習が収束しにくくなってしまいます。
DQNの使用例
Atari2600
2013年に発表された論文https://arxiv.org/abs/1312.5602で用いられたVideo Gameの自動操作の題材としてとりあげられたゲームです。入力に84×84にリサイズしたグレースケール画像をとり、行動価値関数の評価値を出力します。
ブロック崩しなどの一部のゲームで人間よりも高いスコアを記録しました。以降、DQNの性能評価の指標として用いられる事が多いです。
(引用元:Playing Atari with Deep Reinforcement Learning(2013/12))
AlphaGO(囲碁)
AlphaGoは深層強化学習の技術を用いた囲碁のAIです。2015年10月にヨーロッパ王者のプロ2段の棋士に19路盤でのハンデ無し戦で勝利し、2016年3月にはLee Sedol(9段)に4-1で勝利しました。
囲碁の盤面を19 × 19の画像として扱うことによって、方策・価値ネットワークへの入力としています。AlphaGOはモンテカルロ木探索と複数のネットワークが使用されており、その一部にDQNの技術が使用されています
まとめ
今年のサマーインターンアカデミーで機械学習について解説、また、TensrFlowを用いてAvintonエンジニアが開発した画像分類アプリケーションDog Face Classificationの解説も行いました。サマーインターン参加者の感想集もぜひご覧ください。
関連記事
【機械学習入門】教師あり学習と教師なし学習
【機械学習入門】クラスタリング
未経験エンジニアのためのプログラミング学習コンテンツ Avintonアカデミー
機械学習を用いた画像分類体験
機械学習入門者向け ChainerRLでブロック崩しの学習
機械学習入門者向け ランダムフォレストによるTitanic生存者予測
Avintonが提供する6つの機械学習サービス事例
あなたも、Avintonでこのような最先端技術を習得し活用してみませんか?
社員の成長を導きながら、AIやビッグデータなどの最先端技術をプロジェクトに活用していくことが私たちのビジョンです。Avintonの充実した技術研修でスキルアップを図り、あなたのキャリア目標を一緒に達成しませんか?