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

倒立振子とは?
ホウキのバランス遊びは、物理学で 倒立振子(とうりつしんし) と呼ばれます。
「棒の上側が重く、下が支点になっている」ような構造です。
今回のアプリでは、台車の上に棒を立てたモデルを使い、コンピュータでシミュレーションします。 シミュレーションの方法に関する詳しい説明は、こちらを参照してください。
- ホウキ → 棒
- 指 → 台車
カーソルキーの左右で台車に力を加えて操作できます。
| 操作 | 説明 |
|---|---|
| プレイ(play) | 開始 |
| 一時停止(pause) | 一時停止 |
| スロー(slow) | 動きを遅くする |
| 表示 | 説明 |
|---|---|
| 時間(time) | 棒が倒れるまでの時間 |
| 記録(record) | これまでの最長バランス記録 |
コンピュータによる制御
上手にできましたか?皆さんがゲームをしたとき、棒が倒れないように台車を動かしましたね。そのとき
- 観測(角度や傾きを感じ取る)
- 判断(右か左か動きを決める)
- 行動(実際に動かす)
を繰り返していたと思います。
コンピュータも同じで、「状態を測って行動を決める」を続けます。
強化学習とは?
強化学習は、正解を最初から教えずに学ばせる方法です。
- 棒が倒れなければ「ごほうび」
- 棒が倒れたら「ペナルティ」
を与え、何度も試すことで上手な操作を身につけます。
今回のアプリでは Q学習 という方法を使い、棒を倒さない操作をコンピュータが学習します。
| 操作 | 説明 |
|---|---|
| 再生(play) | 開始 |
| 一時停止(pause) | 一時停止 |
| 早送り(fast) | シミュレーションを速くして学習を進めます。 |
| 初期化(reset) | いままでの学習をリセットします。 |
| 表示 | 説明 |
|---|---|
| エピソード数(episode) | 棒が倒れるまでの学習エピソードを何回繰り返したか |
| 時間(time) | 棒が倒れるまでの時間 |
| 記録(record) | これまでの最長バランス時間 |
まとめ
シンプルな「ほめる・しかる」だけでも、コンピュータはバランスを取る方法を学べます。
強化学習はロボット、自動運転、ゲームAIなどで使われています。
さらに、深層学習(Deep Learning)と組み合わせると、画像や音声からも学習可能になります。
興味があれば、「強化学習 深層学習 ゲーム」のキーワードで検索してみてください。