AI研究所 - AI(人工知能)に脅かされないために、AI(人工知能)を作る側の人間になる -

HOME  >  DQN(Deep Q-Network)とは?DQNを使って強化学習する方法を徹底解説

公開日:2019.09.03 

DQN(Deep Q-Network)とは?DQNを使って強化学習する方法を徹底解説

カテゴリー: AI(人工知能)の豆知識

こんにちは三谷です。

今回は、強化学習の中でも代表的なアルゴリズムであるDQNについて解説します。DQNと検索すると、インターネットスラングが最初にヒットしますが、今回紹介するDQNはAI(人工知能)の最先端研究分野である強化学習のアルゴリズムで、Deep Q-Networkの略です。

いきなりDQNとは、と行きたいところですが、DQNを理解するためには、Q学習について理解している必要がありますので、そこからご説明していきます。

Q学習(Qラーニング)とは?

Q学習とは、ある状態のときにとったある行動の価値を、Qテーブルと呼ばれるテーブルで管理し、行動する毎にQ値を更新していく手法です。学習時にはQテーブルを更新していくことで、学習済みモデルはQテーブルとなります。

また、強化学習を理解する上で、必ず覚えておくべき用語があります。

エージェント:環境に対して行動を起こす学習者。強化学習では、このエージェントが環境に対して様々な試行を繰り返すことで行動を最適化していきます。
環境:エージェントの行動に対して状態の更新と報酬の付与を行います。
強化学習では、与えられた「環境」における価値を最大化するように「エージェント」を学習させます。
状態(s_t):環境が保持する環境の様子で、エージェントが起こす行動によって変化します。
行動(a):エージェントが、ある状態()のときに取ることができる行動のことです。
報酬(r):エージェントの行動に対する環境からの報酬です。

例えば、Aをスタート、Dをゴールとする迷路があったとします。迷路と言ってもとってもシンプルなものですが・・・

この迷路が環境で、動いていくのがエージェントです。スタートのマスにいる状態からスタートし、右か上に移動することを行動と呼びます。ここでの報酬はゴールに到達した際の100ですね。

ゴールに到達する際の即時報酬は、このような表で表すことができます。例えば、Bという状態からDに行くという行動をとったら、報酬が100点得られますね。

先程の表とは別に、Qテーブルと呼ばれる表を用意するのがQ学習です。経験(探索)して得た知識を記録するQテーブルを用意し、状態と行動におけるQ値を更新していくことで、最適な行動ができるようにしていくのです。

1 Qテーブルの更新は以下のように行われます。

2 初期値として、Qテーブルの値をすべて0と設定する
Qを求める計算式を設定する 
Q(状態、アクション)=R(状態、アクション)+ γ ×Max(Q(次の状態、すべてのアクション)) 

3 γ(ガンマ)パラメータと報酬を決める 
 γ:割引率と呼ばれるもので範囲は0~1です。(0に近いほど目先の報酬を重視する)

4 ランダムに指定された状態(部屋)から始まり、最大の報酬(D部屋)に到着した時点で終了する。 これをエピソードと言う単位で表す。

5 エピソードの処理
 1. ランダムに4つの部屋のどこかを探索開始位置と設定する
 2. 現在の部屋(状態)から移動できるアクション(行動)の中から1つを選択する。
 3. Qの値を上記のQ値更新の式で計算して、Qテーブルを更新する。 
 4. 移動先がD部屋(ゴール)ならエピソード終了。
   そうでない場合は移動先の部屋を現在の部屋にする。 
 5. エピソードが終了するまで、2番から繰り返す

6 エピソード(学習)を何度も繰り返して、エピソード終了ごとにQテーブルに値を記録する。 

Bを初期の状態として、Dに移動する行動をしたとすると、Qを求める計算式に当てはめると以下のような式になります。

Q(B, D) = R(B, D) + 0.8 × Max(Q(D, C), Q(D, B), Q(D, D))
= 100 + 0.8 × Max(0, 0, 0)
= 100

このQ値をQテーブルに記入します。

続いて、Aを初期の状態として、Bに移動する行動をしたとします。そうすると、先程のQテーブルも考慮して計算すると、以下のようになります。

Q(A, B) = R(A, B) + 0.8 × Max(Q(B, A), Q(B, D), Q(B, B))
= 0 + 0.8 × Max(0, 100, 0)
= 80

Qテーブルはこのように更新されます。

このような行動を繰り返していくことで、Qテーブルがどんどん更新されていきます。

Qテーブルが学習によって埋まると、ある状態の時に取るべき行動は、Q値が最も大きい行動であることがわかります。

このようにして、最適な行動を学習するのがQ学習(Qラーニング)です。

DQN(Deep Q-Network)とは?

DQNとは、Deep Q-Networkの略です。Q学習ではQ値を学習し、Qテーブルを完成させることに重きが置かれていましたが、DQNではQ学習にニューラルネットワークの考え方を含めています。
最適行動価値関数を、ニューラルネットを使った近似関数で求め、ある状態_ のときに、行動 ごとのQ値を推定できれば、一番いいQ値の行動=取るべき最善の行動がわかるという仕組みです。

ある状態 sₜを入力し、行動 a が出力層のノードとなるようなニューラルネットワークを使用して Q(sₜ, aₜ) の値を計算します。

一般的にディープラーニングと呼ばれるところですね。

ディープラーニングは、隠れ層が複数の層あるニューラルネットワークによって重みを更新していく学習手法ですので、ディープニューラルネットワークを使用した強化学習のことを深層強化学習と呼んだりもしています。

Q学習では、Qテーブルを更新していく仕組みのため、連続的な「状態」、例えばロボットアームの動きのようななめらかなものを表現しようとすると、Qテーブルが膨大な量となるため、現実的に計算ができなくなるデメリットがあります。

それに対し、DQNはQ値そのものを推定するのにニューラルネットワークを使うことで、Q値の近似関数を得てしまおうという考え方ですので、連続的な行動にも対応できるようになっています。

DQN (Deep Q-Network)の学習手順

DQN (Deep Q-Network)は以下のような学習手順で学習します。

1 Q-networkに状態を入力し、Q(sₜ, aₜ;)を求めます。

2 ε-greedy法に従い、行動をして報酬を求め、 sₜ,aₜ,Rₜ,sₜ₊₁,Q(sₜ , aₜ)を保存します。

3 誤差関数を求め、Q-networkの重みを更新します。

4 設定した試行ステップごとにTarget-Networkの重みを更新します。
1 溜めている過去sₜ,aₜ,Rₜ,sₜ₊₁,Q(sₜ, aₜ)のから任意の個数を取得します。

2 そのデータを利用して、設定したミニバッチ数でTarget-networkの重みの学習を行ないます。(Experience Replay)

3 求められたTarget-networkの重みをQ-networkと同期します。

5 更新された重みが適用されたQ-networkで、1から4を繰り返します。

まず、Q-networkに状態を入力し、重みの学習をスタートします。

出力された値で実際に行動をしてみます。行動の基準には、ε-greedy法と呼ばれる手法が使われますが、こちらは後ほどご紹介します。

続いて、誤差関数(TD誤差)を用いて誤差を求めます。

L₀=E[½(R(s,a)+γmaxₐ′Q₀ᵢ₋₁(s′,a′)−Q₀(s,a))²]

R(s,a)+γmaxₐ′Q₀ᵢ₋₁(s′,a′)−Q₀(s,a)が教師あり学習で言うところの教師ラベル時刻ₜで状態s₁であった場合に行動a₁を採用したとすると、出力層の値はQ(s₁,a₁)となります。
出力層の値Q(s₁,a₁)が目標値Rₜ₊₁+γmaxQ(sₜ₊₁,a)と近くなればいいことになります。
誤差関数を求め、更新する新しい重みを最適化アルゴリズムにしたがって計算し、新しい重みを適用して学習を進めます。

ここまでは通常のニューラルネットワークと同じ仕組みですが、DQNはもう一つのニューラルネットワークを使うことが特徴となっています。
そのもう一つのニューラルネットワークをTarget-Networkと呼んでいます。
溜めている過去sₜ,aₜ,Rₜ,sₜ₊₁,Q(sₜ , aₜ)のから任意の個数を取得し、そのデータを利用して、設定したミニバッチ数でTarget-networkの重みの学習を行ないます。この手法をExperience Replayと呼びますが、詳細は後述します。

求められたTarget-networkの重みをQ-networkと同期し、Q-networkの学習を続けます。

このようにして、Q-networkでの学習を一定行い、それを元にTarget-networkの学習、その結果をさらにQ-networkに適用して学習・・・ということを続けて行なうのがDQNの特徴です。

学習済みモデルはこのニューラルネットワークの重みが適用されたものになるため、ある状態を入力することでQ値が出力され、最もQ値が高い行動ノードが選択される、という仕組みになっています。

DQN (Deep Q-Network)の用語まとめ

DQN (Deep Q-Network)の学習手順で紹介した用語をまとめておきましょう。DQNは様々なアルゴリズムが複雑に絡まり合うため、少し分かりづらいところがあるかもしれませんが、一つ一つ確認してみてください。

◆ε-greedy法

行動選択の一定数をランダムに選択することで、他にいい行動がないかを探索させる手法です。

強化学習では、最適な行動を見つけ出すために、Q値の高い行動を選択することが求められますが、そうするとデメリットがあります。それは、試行の最初の頃にQ値が高い行動を見つけると、とにかくその行動を取り続けるということです。

一見いいことのようにも見えますが、Q値が高いと言ってもそれまでの行動の中でたまたま高いだけですので、もしかしたら試行していない行動の中にもっといい行動が存在しているかもしれません。

ε-greedyは、ある適当な定数を用意(ε = 0.3)し、行動選択の際に0~1の間の乱数を生成し、その値がε以下であればランダムに行動を選択するという手法です。つまり、基本的にはQ値が高い行動を取るけれども、たまには別の行動も試行してみよう、という考え方なのです。

◆Experience Replay

従来のQ学習のように1ステップごとにそのステップの内容(experience)を学習するのではなく、メモリ(replay buffer)に各ステップの内容を保存しておき、メモリから内容をランダムに取り出して(replay)、ニューラルネットワークに学習させる方法です。

各ステップごとにそのステップの内容を学習すると、時間的に相関が高い内容(つまり時刻tの学習内容と時刻t+1の学習内容はとても似ている)をニューラルネットワークが学習するので、学習が安定しづらい(過学習が起きやすい)という問題が発生します。Experience Replayはこの問題を解決する工夫です。

まとめ

いかがだったでしょうか?少し難しい内容になってしまったかもしれません。DQN (Deep Q-Network)を始めとする深層強化学習アルゴリズムは、ディープニューラルネットワークを使用したディープラーニング(深層学習)が元になっているため、ディープラーニングを理解していないと難しくなってしまいます。

ディープラーニングについて体系的に理解し、強化学習のプログラムも組めるセミナー(https://ai-kenkyujo.com/seminar/)も是非ご活用ください。

タグ:


参考になったら「いいね!」と「シェア」をお願いします!!

このエントリーをはてなブックマークに追加
AI(人工知能)セミナー開催中
AI(人工知能)入門セミナー AI(人工知能)入門セミナー IoT入門セミナー

AI入門ブログの中の人

AI研究所 研究スタッフ

【マサミ】

アメリカ・サンフランシスコにある情報メディアの専門学校を卒業。大手金融会社での事務経験を経て、2016年9月よりAI研究所に入所。見習い研究員として、AI技術を日々勉強中。


【三谷】

AIセミナー責任者、講師。AIについての幅広い知識を持ち、人に分かりやすく伝える技術を持つ。特にAIを事業や仕事に取り入れる方法について日々講義しています。

AI研究所Twitter

Facebookページ