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

HOME  >  強化学習とは?強化学習の概要から実例を徹底解説

公開日:2019.11.21 [最終更新日]2019.11.25

強化学習とは?強化学習の概要から実例を徹底解説

カテゴリー: 強化学習

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

強化学習とは?

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

 

強化学習の実例一覧

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

ゲーム


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

自動運転


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

自動運転については下記記事で詳しく解説しています。

自動運転の仕組みとは?概要説明から事例まで徹底解説!

Googleのロボットアーム


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

強化学習の仕組み

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

強化学習で使用する単語

強化学習を理解する上で、必ず覚えておくべき用語があります。
強化学習でどんな単語を使用するのか覚えておきたい方は参考にしてください。

  • エージェント

環境に対して行動を起こす学習者。強化学習では、このエージェントが環境に対して様々な試行を繰り返すことで行動を最適化していきます。

  • 環境

エージェントの行動に対して状態の更新と報酬の付与を行います。
強化学習では、与えられた「環境」における価値を最大化するように「エージェント」を学習させます。

  • 状態(s_t)

環境が保持する環境の様子で、エージェントが起こす行動によって変化します。

  • 行動(a)

エージェントが、ある状態(s)のときに取ることができる行動のことです。

  • 報酬(r)

エージェントの行動に対する環境からの報酬です。

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

  •  Q値または状態行動価値

例えば迷路を思い浮かべると、あるマスにいる「状態」から、上下左右のどちらに移動(「行動」)するといいのか、ということを探し出します。
この時、報酬はゴールすることで得られるとすると、上下左右どこかに移動したという行動は、いい行動だったのか、悪い行動だったのかを評価する必要があります。
逆を言うと、「ある状態 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ラーニング)と呼ばれ、強化学習のベースとなっています。

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

強化学習をするためのプラットフォームはいくつかありますが、言語としてはPythonができればフレームワークを使うだけで簡単に実装できます。
今回は強化学習で有名なプラットフォームを3つご紹介します。

ChainerRL


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

RLlib


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

Keras―RL

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

強化学習で利用するアルゴリズム5選

強化学習を行う上でのアルゴリズムがいくつかあります。それらは基本的に、上述した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をベースにしたアルゴリズムを全部乗せしたアルゴリズムと言われています。

イメージ参照元

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

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

ロボットの制御ができる

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

Fintech(フィンテック)で活用できる

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

強化学習をするためにかかる費用

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

実際に無料で強化学習を試そう

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

  • Pythonのインストール
  • Pycharmのインストール
  • ChainerとChainerRLのインストール
  • OpenAI Gymのインストール

これらをインストールしておけば、強化学習をすぐ始めることが可能になります。

強化学習をより簡単に学ぶには?


強化学習プログラミングセミナー
強化学習について詳しく説明してきましたが、初心者の方にはなかなか理解しづらい内容ですよね。
そんな時は強化学習を体系的に学ぶことができるセミナーを受講するのがおすすめです。
強化学習の仕組みから実践的なプログラミングまで行なうことができ、
初歩的なCartPole問題から、実践的なブロック崩しゲームの学習実装までを学ぶことができます。

強化学習とは?まとめ

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

タグ:


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

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

AI入門ブログの中の人

AI研究所 研究スタッフ

【マサミ】

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


【三谷】

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

AI研究所Twitter

AIの最新情報、セミナー情報を受け取る

*メールアドレス

Facebookページ