• AI

深層強化学習の学習経過を見てみた

こんにちは。AI技術課の齋藤です。
「深層強化学習」をテーマに日々研究に取り組んでいます。

深層強化学習は大量な学習データを準備する必要がない反面、大量の試行が必要になります。
どれだけの試行でどれだけの精度がでるのか、という感覚を掴むため、学習経過を見てみました。
今回私が題材にするのは、「ライントレーサー」です。

ライントレーサーとは

ライントレーサーとは、ライン(線)をトレース(追跡)するものです。

ライントレーサー自体は強化学習でなくても実現することが可能です。
線が重なっているかどうかを判断するセンサーを左右に持った機械を準備することができたとしましょう。
あとは、以下の2つのルールを実装するだけで実現することができます。

1.両方のセンサーが反応しなければ直進する
2.センサーが反応したら、反応があったセンサーの方向に曲がる

イメージとしては以下の図のようになります。

lineTrace

この単純なルールを深層強化学習で見つけるのにどれだけかかるのかを試してみました。

深層強化学習でライントレーサーを実現

強化学習はデータの準備は必要ありませんが、試行錯誤できる環境や報酬の設計が必要となります。

環境

線で楕円が描かれた空間が、試行錯誤を繰り返す環境となります。

field

エージェント

エージェントというのは試行錯誤をする主体になります。
今回は以下のような円です。
青い線は進行方向を示しています。
agent

今回は9つの仮想センサーを搭載しており、自分が黒い線の上にいるかどうかを判断できるようにしてあります。
下図の黒帯上の部分に等間隔に9個のセンサーがあるイメージになります。
また、取れる行動は、下図の黄色矢印の7方向のいずれかへ進むことだけです。
agent2

この条件のもと、先ほどの環境を自由に試行錯誤することができます。

報酬

以下のように報酬を設計しました。

  • エージェントが線の上にいるとき、つまりセンサーが1つでも反応しているときに点数を与える
    エージェントの中心が黒線に近いほど点数は高く、最高で1点
  • エージェントが線の上にいないとき、つまり1つもセンサーが反応しないときには‐1点
  • エージェントが楕円から大きく離れたときは-10点

エージェントはこの報酬がたくさんもらえるように学習していくはずです。

結果

上記のシミュレーターで勝手に試行錯誤してもらいました。
試行錯誤別の結果を見てみましょう。
今回は単純な機能を実現したかったので、開始位置は線上に限定しています。
(ランダムにすると、線を探すという行動も学習しなくてはならないので)
また、1回の試行は30秒間としています。

0回試行

まずは学習していない状態でどう動くのかを確認してみましょう。

なにも学習していないので、直進しています。
これでは報酬を得ることができません。

3回試行

3回目の試行が終わった時点の状態です。

その場でくるくると回っています。
ぱっと見ただけでは、賢くないように見えます。
ただ、1分半だけでこの行動がとれるのは、実はとても賢いです。

センサーの位置を考えると、線に沿った方を向いていればある程度の点数が入ります。
そのためくるくる回ってさえいれば、ランダムに動き回るよりも多く点数が入るのです。

10回試行

続いて10回試行したものが以下になります。

線に沿って動いています!
単純な機能であれば、この程度の試行回数でも実現できるようです!

ただ、まだ修正すべき箇所はあります。
何故か方向を変えてしまうのです。
方向転換時、一瞬ですが報酬がもらえないタイミングがあるので、これが無くなるとより良いです。

50回試行

50回試行しました。

完全に線に沿って動くものができました。
私はこれを見たとき、「これでライントレーサーは完成だ!」と思いました。

200回試行

完成だと思ったのですが、学習を200回まで続けさせてみました。

これは!! 圧倒的にスムーズ!!
人間は50回試行段階でも完成だと思ったのですが、まだまだ上があったようです。

無駄な動きが少ないほど、何かを運ばせても落としたりするリスクが少なくなると思います。
より良いものが出来上がりました。

おまけ

楕円の線で学習をさせましたが、もちろん他の図形でもライントレースすることができます。

あくまでも線の上を動くように学習しているので、線の形式が変わっても問題ありません。
学習中には存在しなかった、直角に曲がるということにも対応できていました。

まとめ

深層強化学習を利用してライントレーサーを実現することができました。
深層強化学習のイメージは掴めたでしょうか?
試行錯誤できる環境を用意することで、最適な行動を見つけることができます。

深層強化学習には大量の試行が必要と言われていますが、単純なものであれば時間をかけずに精度の高いものが作れるとわかりました。複雑なことをさせるのではなく、単純な1つの機能に利用していくことが大切になるのかもしれません。
ただし、これはあくまでもシミュレーター上での結果で、現実世界では周りの環境によって精度が落ちることが想定されます。
ですので、実物で動かす際には、実物での微修正等が必要になります。
また、今回は人間が想定するよりも良い行動を示してくれました。これが深層強化学習のメリットの1つです。
取るべき行動を明確に教えていないため、人間が想定するよりも良い行動を見つける可能性があるのです。

深層強化学習は、使いどころは難しいですが、上手く使えば人間よりも良い結果を出してくれます。
今後も引き続き、深層強化学習で解決できるビジネス課題を模索していきたいと考えています。

関連記事

  1. 説明可能AIの実現方法:LIME、SHAP

  2. 今、もっともアツい決定木「XGBoost」

  3. お手軽な機械学習プラットフォーム、H2O

  4. 「エッジAI」への期待と課題

  5. RGB画像からの深度推定手法の精度比較

  6. [初心者向け]深層学習の勉強法

  7. Google Colaboratory で無料のGPUを利用する

  8. 業務ハッカーへの道 (#2 画像認識による自動検証)

PAGE TOP