■人工知能

人工知能の作り方【強化学習とは】

■人工知能

 こんちには黒部です。
今回は人工知能の作り方として、その生成アルゴリズムである機械学習の手法の一つ、強化学習について現役エンジニアが説明します。経済やビジネスなどのあらゆる分野で期待されているので是非イメージだけでもつかんでいきましょう。

本記事の目標とレベル

目標 :強化学習の概要を理解する
レベル:★★☆☆☆

人工知能の作り方【強化学習とは】

強化学習とは

 教師あり学習教師なし学習と同じ機械学習の手法のひとつです。
 与えられた条件から試行錯誤を繰り返し、人工知能が自ら最適な答えや手順を学習していく方法です。
 強化学習の事例と学習手順について触れていきますので、今回はイメージだけでもつかんで頂けたらと思います。強化学習の主要なアルゴリズムとしてバンディットアルゴリズムとQ学習がありますが、こちらは別記事で詳しく説明します。

強化学習の事例

囲碁でAIがプロ棋士に勝利

 2016年に、AIが囲碁のプロ棋士に勝利しました。過去にチェスでAIが勝利したことはありましたが、囲碁においては難しいと言われていました。それは1手目から最終局面までの手順はチェスで10の120乗通りあるのに対し、囲碁は10の360乗通りもあり、各局面における選択肢の数の次元が違うからです。このAIには強化学習(バンディットアルゴリズム)によって作成された人工知能が搭載されていました。

信号機パターンの最適化

 交通渋滞による経済損失は実は相当なもので、国土交通省の調査では年間の渋滞損失額は11兆円でした。そのため、都市の全ての信号機が赤や青になるパターンをどのように制御するかは都市開発の一つの命題となっていました。この問題に対し強化学習とディープラーニングを掛け合わせた深層強化学習のDQNという手法を使って、最も渋滞が起きない信号機の制御パターンを求めるといった研究がなされており、一定の研究成果が表れたため実用化が期待されています。

強化学習の流れ

まずアルゴリズムのイメージはこんな感じ。

 『良い行動には報酬を与え、それ以外には与えない』です。めっちゃ単純ですね、犬にしつけをする感じに似ています。これをふまえてオセロの場合を例に、強化学習を使ってどうやって人工知能にオセロの勝ち方を学習させるかをご説明します。

 オセロにおいて基本的な「良い行動」は、最終的に自分の色が多いことですね。さらにそこまでの過程で、一般的に『角を取る』『序盤は相手の石は少なく取る』といったことが「良い行動」ですね。実際にはケースバイケースで他にも戦略は沢山ありますが今回はここまでとしてみます。

ここでAIにオセロをさせて、「良い行動」に報酬ポイントを与えていきます。

・最終的に自分のコマが相手より多ければ10ポイント
・最終的な自分のコマの数×1ポイント
・途中過程で角を取れば2ポイント
・10手目までは相手の石を取る数が2個以下なら0.1ポイント
としましょう。良い行動の定義と報酬が決定されました。

 そして実際にAIにプログラム上でオセロを実行させます。このとき、AIは初めは何も学習していないので最初から最後までランダムでマスに自分のコマを打ちます。その局面でもし上記の良い行動を行えば報酬ポイントがその分与えられます。これを繰り返し実行させていくと、対局終了時点で報酬の合計が最大になるオセロの打ち方を学習するといった仕組みです。

 ここまででおおよそのイメージはついたでしょうか?
強化学習を適用する際の難しさはこの「良い行動」の定義、報酬を何ポイント与えるか、繰り返し回数、次に説明するハイパーパラメータの設定があり、この辺は割と人工知能とその適用分野のセンスを必要とします。

ハイパーパラメータ(読み飛ばしOK)

 強化学習のアルゴリズムについて少しだけ専門的なところを深堀りします。できるだけエッセンスを話しますが、ややこしいので読み飛ばしてもOKです。
 先程までの報酬ポイント(専門用語では報酬関数といいます)だけだと、AIは将来は考慮せずに直後の報酬のみを重視することとなります。そこで、各局面においてハイパーパラメータと言われるいくつかの関数を設定して、次にどこにコマを打てば最終局面で報酬の合計が最大になるのかを、地点ごとに計算するようになります。
例えばハイパーパラメータの一つに価値関数というのものがあります。
この局面を参考に考えてみましょう。

 価値関数1.0だと、AIが黒だとすると右上の角を取れれば「価値のある良い行動」というように学習していきます。しかしこの場合、右上の角を取ると、白に右下の角を取られてしまします。
 そこで仮に価値関数0.9とすると、各局面に対して次の一手が将来的に報酬ポイントにどの程度影響を与えるかといったことを考慮して「次の行動の価値」と「今の状態の価値」をそれぞれ学習するようになります。右上にコマを打つと直後に報酬ポイントはもらえますが、そのあと右下を取られて最終局面でのポイントが結果として少なかった場合、この局面において右上に打ったときには報酬ポイントは90%になるといった処理が行われます。

ここは少し難しいので、AI技術者でない限りは忘れてもOKです。

強化学習の課題と今後の予測

 信号機の例のように、インフラ最適化など経済に大きな影響を与える可能性を秘めている強化学習は、人工知能の中でも期待値が大きいです。現在はオセロのようにゲームのCPUに実装されることが多いですが、現役エンジニアの肌感覚として、今後のIOTの普及と共に加速度的に需要が高まると私は予測しています。

 実際に強化学習をプログラミングで行って人工知能を作成するのもいいですが、強化学習に限らずこういった技術があるということを知っておかなければ、将来IT分野に限らず、家電、自動車、医療、ゲームといった様々な産業分野でコミュニケーションの機会損失を受けることになっていきそうです。

強化学習を実際にやってみたい方へのおすすめ

 僕はAWS(Amazon Web Service) が提供する『Deep Racer』というサービスを実際にやってみたのでお勧めです。自立走行する1/18レーシングカーの走行エンジンに強化学習で作成した人工知能を載せて、コースをどれだけ早く自動運転でゴールできるかを最終目標として強化学習のイロハを勉強していくことが出来ます。

 AWSが提供するクラウド上で報酬関数やハイパーパラメータを手動で定義し、仮想サーキットでの学習&評価を繰り返して最終的に独自のモデルに作り上げる仕組みとなっています。最終的にレーシングカーに実装して大会に出場しなくても、気軽にオンライン上で世界中の人とレースができ、楽しく強化学習のエッセンスを学べます。初心者でもプログラミングを使わずに直感的な操作ができるようになっています。中級者以上はPythonで細かなハイパーパラメータをつかった関数の実装までをも行うことができます。

 以上が強化学習についてでした。長くなっちゃいましたね。もう少し簡潔明瞭に解説していけるように頑張ります。最後まで読んで頂きましてありがとうございました。