【3目並べで学ぶ強化学習】Q-LearningとDQNを徹底解説:Web解析にも使える! 強化学習超入門(2)(1/2 ページ)
3目並べで強化学習を行うと、どうなるのだろうか。強化学習のアルゴリズムの一つである「Q-Learning」を説明しつつ、Q-LearningにDeep Learningを組み合わせた「Deep Q-Network」を使って、強化学習を実装する方法を紹介する。
【おわびと訂正:2020年5月13日19時 本稿のサンプルのソースコードは「ChainerRLで三目並べを深層強化学習(Double DQN)してみた - Qiita」を引用して一部改変させていただいたものでした。該当箇所で、その旨の記載を追加しております。引用元の著者様、ならびに関係者の皆さまにおわび申し上げます。】
昨今、多くのサービスで活用され注目を集めている「機械学習」。その中から、2016年3月に囲碁のトップ棋士に勝利したDeepMindの「Alpha Go」でも使用されている「強化学習」について解説していく本連載。
前回「囲碁プロ棋士に勝ったAI『Alpha Go』で使われた、『強化学習』って何?」では、「強化学習とは一体何なのか?」「強化学習のメリット」「他の機械学習との違い」「効率的に進めるためのフレームワークと実現できる世界観」「リクルートでの実践例の概要」を紹介しました。
今回は、強化学習の中にあるアルゴリズムの一つである「Q-Learning」について説明し、Q-LearningにDeep Learningを組み合わせた「Deep Q-Network」(以下、DQN)にも触れていきます。また「強化学習×Deep Learning」を効率的に実装できるライブラリの一つである「ChainerRL」を用いて、3目並べを題材にDQNを実装していきます。
Q-Learning(Q値)とは
前回は、強化学習を用いると「最終的なゴールを目指して、途中過程を最適にしたい」というタスクが解けると紹介しました。この点を、もう少し細かく説明するために、まず3つの要素を定義します。
- 状態S:現在どういう状況になっているかを表すもの。ゲームの場合、「敵が目の前にいる」という情報も状態になります
- 行動A:実際に起こす行動を表すもの。ゲームの場合、「ジャンプする」といったことが行動に当たります
- 報酬R:とある状態においてある行動を起こした結果、どのくらいの利益が得られるかの値。ゲームの場合、クリアしたときです
今回、後述するDQNの実装を説明するときに使うゲーム「3目並べ」をこの3要素に当てはめると下記になります。
- 状態S:3目並べの場合は盤面の情報(現在、○がどこに置かれていて、×がどこに置かれているかを示したもの)になります
- 行動A:3目並べの場合は、打つ一手になります
- 報酬R:3目並べの場合、勝利の状態(3目連続で○または×が置かれた)になったときにプラスの報酬が与えられます
すなわち、「最終的なゴール(3目並べの場合、勝敗)を目指して、途中過程を最適にする」とは、「報酬が与えられる状態まで進み、与えられた報酬を基に今まで行ってきた『状態と行動のセット』を評価する」ことと言い換えられます。
ここで状態と行動のセットを評価するに当たって、重要な要素がもう一つあります。
- 状態行動価値Q:Q値と呼ばれる。ある状態Sにおいて、ある行動Aを行ったときの価値のこと
Q値は「価値」。つまり、短期的にもらえる報酬ではなく、将来的にもらえる報酬を鑑みた値のことです。ゲーム「テトリス」で例えると分かりやすいかもしれません。
テトリスの場合、即時的に点数を稼ぐにはブロックを細かく消していく方が良い。しかし、長期的な点数を考えると、ときにはブロックを消さずにためて、一気に消す方が良い場合もあります。このときの「消さずにためる行動」をきちんと価値ある行動として評価できる指標がQ値です。
このQ値を学習し、導くためのアルゴリズムの一つがQ-Learningです。Q-LearningではQ値を、「その状態での即時的に得られる報酬の価値」と「見積もられた次の状態の価値」の和と定義しています。そして次の状態の価値を見積もるのに、現在推定されている価値の最大値を用いるのがQ値の特徴です。更新されたQ値はまた次の推定値として活用することで、徐々に信頼性の高い価値の推定値として学習していきます。このように推定された一番高いQ値から導かれる行動が、ある状態おいて、価値が高く、将来を考慮された最適なものになります。
Deep Q-Network(DQN)とは
強化学習の中でもQ値を使う手法は、いかにQ値を正確に推定できるかが鍵になります。逆に言えば、Q値を正確に推定できれば、「将来的に価値が一番高い行動を取ること」ができます。よって、「最適な行動を導くこと」は、「正確にQ値を推定すること」と言い換えられます。
そこで、Q値を推定するためにDeep Learningを使って近似する手法がDQNです。Q-Learningの場合、状態のパターンが少なければQ値を正確に推定できますが、タスクによってはとても複雑な状態を定義する必要があります。このような場合、Deep Learningを組み合わせたQ値の推定の方が有効です。DQNでは学習精度を高めるために、さまざまな工夫を凝らしているのも特徴の一つです。
深層強化学習用のPython向けフレームワーク「ChainerRL」とは
DQNのアルゴリズムは、もちろん一からフルスクラッチで実装できます。しかし、現在では便利なフレームワークを活用して、効率的に実装することがほとんどです。
DQNを効率的に実装するためのフレームワークは何個か存在します。今回はその中から「ChainerRL」を紹介します。ChainerRLはPreferred Networksが深層強化学習のライブラリとして公開しており、Deep Learningのフレームワーク「Chainer」の強化学習バージョンとして有名です。ChainerだけでもDQNは実装できますが、ChainerRLを使うことでさらに効率的に実装できます。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 囲碁プロ棋士に勝ったAI「Alpha Go」で使われた、「強化学習」って何?
昨今、多くのサービスに使われ、注目を浴びる「機械学習」。しかし、機械学習にはさまざまな学習方法が存在する。今回は、学習方法を比較しつつ、「強化学習」の概要を紹介する。 - ニューラルネットワーク、Deep Learning、Convolutional Neural Netの基礎知識と活用例、主なDeep Learningフレームワーク6選
最近注目を浴びることが多くなった「Deep Learning」と、それを用いた画像に関する施策周りの実装・事例について、リクルートグループにおける実際の開発経験を基に解説していく連載。初回は、ニューラルネットワーク、Deep Learning、Convolutional Neural Netの基礎知識と活用例、主なDeep Learningフレームワーク6選を紹介する。 - BFF(Backends For Frontends)超入門――Netflix、Twitter、リクルートテクノロジーズが採用する理由
マイクロサービス/API時代のフロントエンド開発に求められる技術の1つBackends For Frontends(BFF)について解説する連載。初回は「超入門」としてBFFの概要や事例を中心に紹介する。