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

HOME  >  強化学習とは?強化学習の仕組みを徹底解説

公開日:2019.05.15 [最終更新日]2019.06.16

強化学習とは?強化学習の仕組みを徹底解説

カテゴリー: AI(人工知能)の作り方

こんにちは三谷です。
今回は、ボードゲームや自動運転、ロボットの制御などで活用が始まっている最新のAI(人工知能)の一つである、強化学習について解説します。
AI(人工知能)が自ら学び、動作を習得していく事ができる最新の技術を感じてみてください。

強化学習とは?

強化学習とは、機械学習と言われるAI(人工知能)の手法の一つです。通常、AI(人工知能)に何かを教えようとする場合、人が「データ」とそれに対応する「答え」をセットで用意しておき、学習させることが多いですが、強化学習は違います。強化学習では、点数が最も大きくなることを目的として、どのように行動すれば点数が最も大きくなるかを自ら探し出す学習を行います。
いろいろな行動を試してみて、一番いい行動を探し出す(探索)するという学習をするので、ある意味人間の動作に近いイメージでしょうか。

強化学習でできることまとめ

強化学習と一言で言っても、何ができるのかイメージしづらいかもしれません。ここでは、強化学習でできることをまとめてみました。

◆ゲーム(atari)


昔やった方も多いかもしれない、懐かしいゲームです。Atariという会社が出していたゲームを、2015年にDeepMind社が強化学習を使用するAI(人工知能)に学習させ、49本のゲームのうち半数以上で人間に匹敵するか、それを上回るスコアを記録しました。強化学習を勉強する上でもよく使用される題材です。

◆自動運転


イメージ参照元
自動運転の分野でも強化学習は使われています。日本の企業であるPrefferd Networks社が研究をしている内容では、車両の幅に対して道路が狭く、車が密集した交差点というような難易度の高い問題に対して強化学習を利用して自動運転を実施しています。
この技術を使うと、周囲を全て同時に集中して見ることができるため、前方向と同じように後方向にも躊躇なく移動します。下の動画では、学習時には存在しない、人が操作する車からの回避という困難な問題も扱っています。(赤い車は、人間がその場で操作をしています。)

◆Googleのロボットアーム


イメージ参照元
Google社は、ロボットアームの動作を最適化する研究を行っています。どのような動作をすれば最適なロボットアームの動きになるかを学習していくのですが、Googleは複数の学習を同時並行で進める分散型の自己学習が可能にしています。Google社は数々のロボット・AI(人工知能)の研究を行っており、この研究では14台のロボットを使った分散型自己学習を行い、人間よりも速い速度で動作をマスターしています。

強化学習をするためのプラットフォームまとめ

強化学習をするためのプラットフォームはいくつかありますが、Pythonができればフレームワークを使うだけで簡単に実装できます。

◆ChainerRL


実装されているアルゴリズムが多いです。初心者でもわかりやすいと言われているChainerと組み合わせて使用できるため、初学者にはオススメです。

◆RLlib


実装されているアルゴリズムも多く、学習状況も見やすいです。どのように実装されているのかを確認するのは少し難しい部分もあります。

◆Keras―RL


実装されているアルゴリズムは少なめです。どのように実装されているかは見やすく、メジャーなKerasと組み合わせて使えます。

強化学習をするための価格まとめ

無料のプログラミング言語Pythonと、上述したプラットフォームを使用することで、なんと無料で始められます。Pythonのフレームワークはオープンソースのものがほとんどです。プログラミング言語を動作させるPycharmやAnacondaなどの統合開発環境によっては、金額がかかる場合もありますが、基本は無料でスタートできると考えていいでしょう。

強化学習を導入するメリットまとめ

強化学習は行動を学習するため、人間が行えることを代替する分野での活用に期待が持たれています。しかし、現状ではビジネスシーンで完璧に活用されているところは実はほとんどありません。現状では、膨大な試行をすることで学習を行いますが、非常に多くの時間や調整が必要になるためです。ここでは、どのようなことに強化学習が活用できるかをまとめてみました。

◆ロボット制御

ロボット制御と書きましたが、ロボットを始めとする動作の制御で活用できます。例えば、様々なセンサーを搭載したような産業機械もそうですし、家電などのモーター制御で動作するものも、自ら最適な行動を探し出すという意味では強化学習が活用される部分になっています。

◆Fintech(フィンテック)

Fintechと呼ばれる、金融サービスとITを結びつけた部分での活用も期待されています。どのように行動すれば最善の行動か、ということを学習することができますので、今後金融業界のAI活用として期待がされています。

強化学習の仕組みを解説

通常の機械学習では、問題と解答は常に静的に定められており、「これが入れば、これが解答」と決まっているのですが、強化学習では、「これが入っても、状況に応じて対応を変える」ことを学習させることになります。つまり、強化学習はシステムの出力に応じて周りの環境が変化していくような場合も想定するので、他の機械学習とは少し違う特徴を持っています。

強化学習を理解する上で、必ず覚えておくべき用語があります。
エージェント:環境に対して行動を起こす学習者。強化学習では、このエージェントが環境に対して様々な試行を繰り返すことで行動を最適化していきます。
環境:エージェントの行動に対して状態の更新と報酬の付与を行います。
強化学習では、与えられた「環境」における価値を最大化するように「エージェント」を学習させます。

状態(s_t):環境が保持する環境の様子で、エージェントが起こす行動によって変化します。
行動(a):エージェントが、ある状態(s)のときに取ることができる行動のことです。
報酬(r):エージェントの行動に対する環境からの報酬です。

これら5つの言葉は非常に重要です。
ある環境の中のある状態の時、エージェントはある行動をします。それにより、報酬が付与(または付与されない)ということが起こります。エージェントがとった行動により、状態が変化します。変化した状態から、更に新しい行動をエージェントが取ることで、また報酬が付与されます。
これらの行動をどんどん繰り返し、未来の価値を最大化する最適解を見つけ出すというのが強化学習の基本的な考え方です。


https://kzmmtmt.pgw.jp/?page_id=455

例えば迷路を思い浮かべると、あるマスにいる「状態」から、上下左右のどちらに移動(「行動」)するといいのか、ということを探し出します。
この時、報酬はゴールすることで得られるとすると、上下左右どこかに移動したという行動は、いい行動だったのか、悪い行動だったのかを評価する必要があります。
逆を言うと、「ある状態 s においてある行動 a を取った時の価値」がわかれば、その価値の一番高い行動を選択すれば報酬が得られるということになるはずです。

この価値のことを Q値 あるいは状態行動価値と呼び、 Q(s_t,a)と書きます。
Q値は「報酬」ではなく「価値」であることが重要でして、Q値とは短期的な報酬ではなく、長期的な意味での価値(未来の価値)を値として持っている関数です。
Q(s_t , a_t ) ← Q(s_t ,a_t )+α(r_(t+1)+γ maxQ(s_(t+1) ,a )-Q(s_t ,a_t ))
強化学習の基礎は、Q値を元にして、ある状態での最適な行動を見つけ出す試行を繰り返すということにあります。Q値を学習していくので、このアルゴリズム(計算手法)はQ学習(Qラーニング)と呼ばれ、強化学習のベースとなっています。

強化学習のアルゴリズムまとめ

強化学習を行う上でのアルゴリズムがいくつかあります。それらは基本的に、上述したQ学習(Qラーニング)を元にしています。ここではどのような種類があるかを確認してみましょう。

◆Q学習(Qラーニング)

ある状態のときにとったある行動の価値を、Qテーブルと呼ばれるテーブルで管理し、行動する毎にQ値を更新していく手法です。学習時にはQテーブルを更新していくことで、学習済みモデルはQテーブルとなります。
単純な仕組みで動作しますが、連続的な「状態」、例えばロボットアームの動きのようななめらかなものを表現しようとすると、Qテーブルが膨大な量となるため、現実的に計算ができなくなるデメリットがあります。

◆DQN(Deep Q Network)

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

◆DDQN(Double DQN)

DQNでは、前の状態を過大評価してしまうという問題があったため、最適行動を選択する Q 関数とその時のQ値を評価するQ関数の2つを混ぜて学習をさせることで、誤差計算を安定させたモデルです。

◆A3C(Asynchronous Advantage Actor-Critic)

DQNでは、基本的に1つのエージェントが行動して得た経験を学習データとして使って学習します。1つのエージェントの経験しか利用しないため、学習の進みが遅く、なかなか学習が進まない(時間がかかる)事がありました。
そこで、A3Cでは、エージェントを複数作っておき、それぞれの経験を元に学習させることでオンライン学習ができるようにしています。エージェントを複数作ることで学習もより早く進むようになっています。

◆Rainbow

DDQNやA3Cを始めとする、DQNをベースにしたアルゴリズムを全部乗せしたアルゴリズムと言われています。

イメージ参照元

無料で強化学習を試せる環境を構築する方法

最先端で難しそうに感じる強化学習ですが、実際に強化学習を無料で簡単に試すことができるようになっています。いくつかのステップは必要ですが、是非強化学習を体感してみてください。
強化学習を試すための準備として、以下の作業が必要です。
・Pythonのインストール
・Pycharmのインストール
・ChainerとChainerRLのインストール
・OpenAI Gymのインストール

強化学習をより詳しく学ぶ方法


強化学習プログラミングセミナー
強化学習を体系的に学ぶことができるセミナーです。
仕組みから実践的なプログラミングまで行なうことができ、初歩的なCartPole問題から、実践的なブロック崩しゲームの学習実装までを学ぶことができます


機械学習スタートアップシリーズ Pythonで学ぶ強化学習 入門から実践まで (KS情報科学専門書)

強化学習の全体感を学ぶために初めて読むのに適した本です。


Pythonによる深層強化学習入門 ChainerとOpenAI Gymではじめる強化学習
今回紹介した、ChainerRLとOpenAI Gymを使用して実際に作りながら学ぶことができる書籍です。

まとめ

いかがだったでしょうか。AI(人工知能)は、画像認識によって目を手に入れ、強化学習によって行動を手に入れると言われているくらい、ディープラーニングの活用範囲の中でも最先端で注目をされている技術です。
本格的なビジネス活用はもう少し先かもしれませんが、今からどのような考え方でAI(人工知能)が人間のような行動を手に入れていくのかを理解しておくことは非常に重要かもしれませんね。
是非強化学習を理解してワクワクする未来を想像してみてください!

タグ:


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

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

AI入門ブログの中の人

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

Facebookページ