こんにちは、AI研究所の三谷です。
今回は、強化学習の中でも代表的なアルゴリズムであるDQNについて解説します。
DQNと検索すると、インターネットスラングが最初にヒットします。
しかし、今回紹介するDQNは、Deep Q-Networkの略で、AI(人工知能)の最先端研究分野である強化学習のアルゴリズムです。
いきなり「DQNとは」と行きたいところですが、人工知能「DQN」を理解するためには、まずQ学習について理解している必要がありますので、そこからご説明していきます。
Q学習とは?
Q学習(Qラーニング)とは、ある状態のときにとったある行動の価値を、Qテーブルと呼ばれるテーブルで管理し、行動する毎にQ値を更新していく手法です。
学習時にはQテーブルを更新していくことで、学習済みモデルはQテーブルとなります。
また、強化学習を理解する上で、必ず覚えておくべき用語があります。
エージェント | 環境に対して行動を起こす学習者。強化学習では、このエージェントが環境に対して様々な試行を繰り返すことで行動を最適化していきます。 |
---|---|
環境 | エージェントの行動に対して状態の更新と報酬の付与を行います。 強化学習では、与えられた「環境」における価値を最大化するように「エージェント」を学習させます。 |
状態(s_t) | 環境が保持する環境の様子で、エージェントが起こす行動によって変化します。 |
行動(a) | エージェントがある状態のときに取ることができる行動のことです。 |
報酬(r) | エージェントの行動に対する環境からの報酬です。 |
例えば、Aをスタート、Dをゴールとする迷路があったとします。
迷路と言ってもとってもシンプルなものですが…
この迷路の環境で、動いていくのがエージェントです。
スタートマスにいる状態からスタートし、右か上に移動することを行動と呼びます。
ここでの報酬は、ゴールに到達した際の100となります。
ゴールに到達する際の即時報酬は、このような表で表すことができます。
例えば、Bという状態からDに行くという行動をとったら、報酬が100得られます。
先程の表とは別に、Qテーブルと呼ばれる表を用意するのがQ学習です。
経験(探索)して得た知識を記録するQテーブルを用意し、状態と行動におけるQ値を更新していくことで、最適な行動ができるようにしていくのです。
Qテーブルの更新
Qテーブルの更新は以下のように行われます。
- 初期値として、Qテーブルの値をすべて0と設定します。
Qを求める計算式を設定:Q(状態、アクション)=R(状態、アクション)+γ×Max(Q(次の状態、すべてのアクション))
- γ(ガンマ)パラメータと報酬を決めます。
γ:割引率と呼ばれるもので範囲は0~1(0に近いほど目先の報酬を重視)
- ランダムに指定された状態(部屋)から始まり、最大の報酬(D部屋)に到着した時点で終了します。
これをエピソードと言う単位で表します。 - エピソードの処理
- ランダムに4つの部屋のどこかを、探索開始位置と設定します。
- 現在の部屋(状態)から移動できるアクション(行動)の中から1つを選択します。
- Qの値を上記のQ値更新の式で計算して、Qテーブルを更新します。
- 移動先がD部屋(ゴール)ならエピソード終了です。そうでない場合は、移動先の部屋を現在の部屋にします。
- エピソードが終了するまで、②から繰り返します。
- エピソード(学習)を何度も繰り返して、エピソード終了ごとにQテーブルに値を記録します。
Bを初期の状態として、Dに移動する行動をしたとすると、Qを求める計算式に当てはめると以下のような式になります。
=100+0.8×Max(0,0,0)
=100
このQ値を、Qテーブルに記入します。
続いて、Aを初期の状態として、Bに移動する行動をしたとします。
そうすると、先程のQテーブルも考慮して計算すると、以下のようになります。
=0+0.8×Max(0,100,0)
=80
Qテーブルはこのように更新されます。
このような行動を繰り返していくことで、Qテーブルがどんどん更新されていきます。
Qテーブルが学習によって埋まると、ある状態の時に取るべき行動は、Q値が最も大きい行動であることがわかります。
このようにして、最適な行動を学習するのがQ学習です。
ここまで、人工知能「DQN」の前提となるQテーブルについて解説しました。
次は、人工知能「DQN」の概念について解説していきます。
DQNとは?
DQNとは、「Deep Q-Network」の略です。
Q学習ではQ値を学習し、Qテーブルを完成させることに重きが置かれていましたが、DQNではQ学習にニューラルネットワークの考え方を含めています。
最適行動価値関数をニューラルネットを使った近似関数で求め、ある状態”_”のときに行動ごとのQ値を推定できれば、一番いいQ値の行動=取るべき最善の行動がわかるという仕組みです。
ある状態”sₜ”を入力し、行動”a”が出力層のノードとなるようなニューラルネットワークを使用して”Q(sₜ,aₜ)”の値を計算します。
一般的にディープラーニングと呼ばれるものです。
ディープラーニングは、隠れ層が複数の層あるニューラルネットワークによって重みを更新していく学習手法ですので、ディープニューラルネットワークを使用した強化学習のことを深層強化学習と呼んだりもしています。
Q学習では、Qテーブルを更新していく仕組みのため、連続的な「状態」、例えばロボットアームの動きのようななめらかなものを表現しようとすると、Qテーブルが膨大な量となるため、現実的に計算ができなくなるデメリットがあります。
それに対し、DQNはQ値そのものを推定するのにニューラルネットワークを使うことで、Q値の近似関数を得てしまおうという考え方ですので、連続的な行動にも対応できるようになっています。
次は、実際にどうやってDQNで強化学習するのかを解説していきます。
ディープラーニングについて体系的に理解し、強化学習のプログラムも組める「強化学習プログラミング講習」も是非チェックしてみてください。
DQNの学習手順
DQNは以下のような学習手順で学習します。
- Q-networkに状態を入力し、Q(sₜ,aₜ;)を求めます。
- ε-greedy法に従い、行動をして報酬を求め、sₜ,aₜ,Rₜ,sₜ₊₁,Q(sₜ,aₜ)を保存します。
- 誤差関数を求め、Q-networkの重みを更新します。
- 設定した試行ステップごとにTarget-Networkの重みを更新します。
- 溜めている過去sₜ,aₜ,Rₜ,sₜ₊₁,Q(sₜ,aₜ)のから任意の個数を取得します。
- そのデータを利用して、設定したミニバッチ数でTarget-networkの重みの学習を行ないます。(Experience Replay)
- 求められたTarget-networkの重みをQ-networkと同期します。
- 更新された重みが適用されたQ-networkで、1から3を繰り返します。
まず、Q-networkに状態を入力し、重みの学習をスタートします。
出力された値で実際に行動をしてみます。
行動の基準には、ε-greedy法と呼ばれる手法が使われますが、こちらは後ほどご紹介します。
続いて、誤差関数(TD誤差)を用いて誤差を求めます。
R(s,a)+γmaxₐ′Q₀ᵢ₋₁(s′,a′)−Q₀(s,a)が、教師あり学習で言うところの教師ラベル時刻ₜで、状態s₁であった場合に行動a₁を採用したとすると、出力層の値はQ(s₁,a₁)となります。
出力層の値Q(s₁,a₁)が目標値Rₜ₊₁+γmaxQ(sₜ₊₁,a)と近くなればいいことになります。
誤差関数を求め、更新する新しい重みを最適化アルゴリズムにしたがって計算し、新しい重みを適用して学習を進めます。
ここまでは通常のニューラルネットワークと同じ仕組みですが、DQNはもう1つのニューラルネットワークを使うことが特徴となっています。
そのもう1つのニューラルネットワークを、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の用語2選
DQNの学習手順で紹介した用語をまとめておきましょう。
DQNは様々なアルゴリズムが複雑に絡まり合うため、少し分かりづらいところがあるかもしれませんが、ひとつひとつ確認してみてください。
DQNの用語①ε-greedy法
行動選択の一定数をランダムに選択することで、他にいい行動がないかを探索させる手法です。
強化学習では、最適な行動を見つけ出すために、Q値の高い行動を選択することが求められますが、そうするとデメリットがあります。
それは、試行の最初の頃にQ値が高い行動を見つけると、とにかくその行動を取り続けるということです。
一見いいことのようにも見えますが、Q値が高いと言ってもそれまでの行動の中でたまたま高いだけですので、もしかしたら試行していない行動の中に、もっといい行動が存在しているかもしれません。
ε-greedy法は、ある適当な定数を用意(ε=0.3)し、行動選択の際に0~1の間の乱数を生成し、その値がε以下であればランダムに行動を選択するという手法です。
つまり、基本的にはQ値が高い行動を取るけれども、たまには別の行動も試行してみよう、という考え方なのです。
DQNの用語②Experience Replay
従来のQ学習のように、1ステップごとにそのステップの内容(experience)を学習するのではなく、メモリ(replay buffer)に各ステップの内容を保存しておき、メモリから内容をランダムに取り出して(replay)ニューラルネットワークに学習させる方法です。
各ステップごとにそのステップの内容を学習すると、時間的に相関が高い内容(つまり時刻tの学習内容と時刻t+1の学習内容はとても似ている)をニューラルネットワークが学習するので、学習が安定しづらい(過学習が起きやすい)という問題が発生します。
Experience Replayはこの問題を解決する工夫です。
Deep Q-Networkが学べる講座
AI分野で働くことを目指している人に人気になっているのが、Deep Q-Networkや強化学習に関する知識や技術を学べる講座です。色々な講座がある中で、特におすすめのものをいくつか紹介します。
AIエンジニア講習
実践的に学べる「AIエンジニア講習」は、Deep Q-Networkを学びたい人におすすめの講座です。受講者数1万人突破、満足度98.8%以上の実績がある人気の講座で、3日間でディープラーニングなどAIエンジニアに必要な知識を学ぶことができます。会場受講、ライブウェビナー、eラーニング、様々な受講形式に対応しているのが魅力です。会場に行くだけではなく、場所を選ばずにDeep Q-Networkを学ぶことができるので、仕事をしながら知識を学びたいという人にも向いています。
強化学習プログラミング講習
実践的に学べる「強化学習プログラミング講習」は、AI研究所が提供しているAI技術者を目指す人向けの講座です。受講形式はeラーニングとなっているため、時間や場所を選ばず自分の好きなペースで学習できます。強化学習の基本的な知識や仕組み、実装に必要なライブラリや設定項目、機械学習用ライブラリの扱い方など、基礎から応用まで学べるカリキュラムが組まれています。
インターネット環境とパソコンさえあれば学習できるので、誰でもすぐ始めることができます。1日で応用レベルまで完全制覇できることを目指すカリキュラムになっていますが、講座で使われる会場受講と同等内容の動画は、申し込み後1年間いつでも視聴できるので、じっくり学びたい人も安心です。
Deep Q-Networkとは?まとめ
いかがだったでしょうか?
今回は、Deep Q-Networkを使って強化学習する方法を解説いたしました。
DQNを始めとする深層強化学習アルゴリズムは、ディープニューラルネットワークを使用したディープラーニング(深層学習)が元になっているため、ディープラーニングを理解していないと難しくなってしまいます。
ディープラーニングについて体系的に理解し、強化学習のプログラムも組める「強化学習プログラミングセミナー」も活用しながら、DQNを始めとする深層強化学習アルゴリズムについて、是非学んでみてください。
最後まで読んで頂き、ありがとうございました。
