この章では強化学習と記事全体の紹介をします。

※この記事の07までの内容をもとにした本が出版されました(2021/11/20)。

紹介ブログはこちら

強化学習はアルゴリズムを作るアルゴリズム

上のアニメーションは、ロボットが全てのゴール(水色の4つの領域)に訪れるというタスクをしているところです。マップはランダムで生成されています。

ロボットは2マスまでの周囲しか見えない設定なのですが、「壁はよける」、「ゴールに近づいたらそちらに曲がる」、「何もなければまっすぐ進む」、のようなアルゴリズムで動いているように見えます。マップはランダムに変わりますが、追加学習をすることなく対応しています。

このアルゴリズムは人が考えて作ったものではなく、強化学習というアルゴリズムによって自動的に得られたものです。

強化学習と言えば、テレビゲームや囲碁や将棋を学習させたり、ロボットの動きを作ったりすることに利用されていますが、この例のようにアルゴリズムを作るアルゴリズムとしてとらえることもできるでしょう。

普通のノートPCでも動かせる問題設定

強化学習を使うには強力な計算スペックを持つマシンや多くの計算時間が必要だと思う人も多いと思います。実際、囲碁などの学習にはとてつもないほどの計算資源が使われているそうです。

しかし、上のアニメーションのような問題なら、普通のノートPCでも可能で、筆者の古いノートPCでも4分弱しかかかりませんでした (qnet, many_swamp, 33000 qstep, 3分40秒)。

※筆者のノートPCのCPUは、Intel Core i7-6600UでGPUなし。i7でも第6世代なので結構遅く、i5-7500Uの方が上のようです。 参考:CPU性能比較表 | 最新から定番のCPUまで簡単に比較

強化学習は、問題の本質的な難しさをそのままにしながら、問題のサイズを小さくすることで、十分家庭用のPCで試したり実験したり、更には研究することもできます。

強化学習の入門書

強化学習は他の機械学習(教師あり学習、教師なし学習)に比べて、問題設定が少し複雑なため、教科書の最初の段階で挫折してしまう方も少なくないと聞きます。

そこで、執筆したのが「ScratchでAIを学ぼう」です。強化学習の問題設定と基本のアルゴリズムであるQ学習を、体感的にも数学的にもきちんと理解できるようにゲームを題材にして解説しました。


 

ゲームは、下のリンクにアクセスするだけで簡単に始めることができます。どのゲームも、あなたが先にプレイし、次に強化学習がプレイするという作りになっています。
砂漠でダイヤ集めゲーム
月面でダイヤ集めゲーム
お化けの飛行訓練ゲーム

この記事の内容

この記事では、「Scratch でAIを学ぼう」の内容から更に1歩進んで、python を使ってより難しい強化学習の問題にチャレンジしていきます。

Pythonを使うと、複雑な機能を整理して実装することができます。そして、ディープラーニングで使われているTensorflow など、様々なライブラリーが利用可能です。

以降の記事の内容は以下のとおりです。

02. まず、Pythonで強化学習を動かすためのPCの環境作成、準備したプログラム memoryRL のダウンロードと実行方法を説明します。

03. memoryRLの使い方を説明します。memoryRLでは、4つの強化学習アルゴリズムを7つのタスクで試すことができます。アルゴリズムは、Q学習ニューラルネットを使ったQ学習、そして、実験段階でもある記憶ユニットを使ったQ学習(2種類)です。

ここまでですぐに強化学習を体験できますが、更に理論的な部分や実装の詳細を深く知りたいという方は、ぜひ以下の章をご覧ください。

04. 強化学習のアドバンスな問題設定POMDPについて解説します。
通常の問題設定をあらかじめ知っていると分かりやすいです。以下がおすすめの本です。

05. 「池巡り」タスクのプログラムと改良を説明します。
Python の基本を理解していると分かりやすいです。クラス、継承を使います。以下がおすすめの本です。
 

06. 一つ目のアルゴリズム、基本のQ学習アルゴリズムとその実装を説明します。
通常のQ学習を例題などであらかじめ理解しておくと分かりやすいです。以下がおすすめの本です。

07. ニューラルネットを応用したQ学習アルゴリズムとその実装を説明します。
教師あり学習とTensorflow の使い方を理解しておくとわかりやすいです。以下がおすすめの本です。

08. 短期記憶の有用性について議論します。短期記憶ユニットとしての RNN, LSTU, GRU について説明します。
短記憶ユニットとして使うLSTMやGRUについて詳しく知りたい方は以下の本が参考になります。
 

09. LSTM/GRUを組み込んだ強化学習アルゴリズムとその実装を説明します。

10. テスト用のタスク sim_corridor.py を使って、これまで紹介してきたアルゴリズムのパフォーマンスをチェックします。

※本記事に基づき操作した結果、直接的、間接的被害が生じた場合でも、著者はいかなる責任も負いません。ご自身の判断でご利用ください。

[top] [01] 次は[02] [03] [04] [05] [06] [07] [08] [09] [10]