はじめに

学校の掃除時間に、ホウキを逆さまにして指に乗せ、バランスを取って遊んだことはありませんか?
今回はこの遊びを コンピュータ にやらせてみましょう。果たしてどのくらい長くバランスを取れるでしょうか?

ほうき遊び

倒立振子とは?

ホウキのバランス遊びは、物理学で 倒立振子(とうりつしんし) と呼ばれます。
「棒の上側が重く、下が支点になっている」ような構造です。

今回のアプリでは、台車の上に棒を立てたモデルを使い、コンピュータでシミュレーションします。 シミュレーションの方法に関する詳しい説明は、こちらを参照してください。

  • ホウキ → 棒
  • 指 → 台車

カーソルキーの左右で台車に力を加えて操作できます。

操作 説明
プレイ(play) 開始
一時停止(pause) 一時停止
スロー(slow) 動きを遅くする
表示 説明
時間(time) 棒が倒れるまでの時間
記録(record) これまでの最長バランス記録

コンピュータによる制御

上手にできましたか?皆さんがゲームをしたとき、棒が倒れないように台車を動かしましたね。そのとき

  1. 観測(角度や傾きを感じ取る)
  2. 判断(右か左か動きを決める)
  3. 行動(実際に動かす)

を繰り返していたと思います。
コンピュータも同じで、「状態を測って行動を決める」を続けます。

強化学習とは?

強化学習は、正解を最初から教えずに学ばせる方法です。

  • 棒が倒れなければ「ごほうび」
  • 棒が倒れたら「ペナルティ」

を与え、何度も試すことで上手な操作を身につけます。

今回のアプリでは Q学習 という方法を使い、棒を倒さない操作をコンピュータが学習します。

操作 説明
再生(play) 開始
一時停止(pause) 一時停止
早送り(fast) シミュレーションを速くして学習を進めます。
初期化(reset) いままでの学習をリセットします。
表示 説明
エピソード数(episode) 棒が倒れるまでの学習エピソードを何回繰り返したか
時間(time) 棒が倒れるまでの時間
記録(record) これまでの最長バランス時間

まとめ

シンプルな「ほめる・しかる」だけでも、コンピュータはバランスを取る方法を学べます。
強化学習はロボット、自動運転、ゲームAIなどで使われています。

さらに、深層学習(Deep Learning)と組み合わせると、画像や音声からも学習可能になります。
興味があれば、「強化学習 深層学習 ゲーム」のキーワードで検索してみてください。