前回の『AIは人の眼になる』に続き、AIです。今回は『手』です。
実際に動く手の部分はAIというよりロボットですが、状況に合わせてどの様に動かしたら良いかを強化学習によって、AIに学ばせて判断させることができます。組み立て工場、介護の補助、効率的な空調の管理(大量のセンサーとの組み合わせ)などで活躍が期待されます。
今回はAIにブロック崩しゲームを遊ばせてみました。
データは使わず、褒めて伸ばす強化学習
AIを訓練するには大量のデータが必要なことが多いですが、データ無くても学習できる方法があります。強化学習です。
強化学習では、AIに正解データは与えず(というより何が正解か誰も分かっていない)、その代わり良い行動をしたときに報酬を与えて褒めてあげます。まるでペットに一芸を仕込んでいるみたいですね。
特に、コンピュータの中で再現可能な問題の場合、何万回と試行錯誤させることで、高い判断能力を持ったAIを作ることができます。
2016年に話題になった囲碁を指すディープマインド社(2014年にGoogleが買収)のアルファ碁も強化学習の一種です。当時最強のイ・セドル棋士を圧倒したアルファ碁ですが、その後進化し続け、アルファゼロとなりました。アルファゼロは人の指し手を全く参考にせず、8時間の学習で初代のアルファ碁を勝つ上、将棋やチェスも指すそうです。
強化学習をしてみる
OpenAIという非営利研究機関がOpenAIGymという強化学習の実験シミュレーターを提供しています。台車の上に棒をのせてバランスしたり、山の上にうまく車を登らせたり、動きを丁度良く調節するような課題が用意されています。
CartPole-v1
MountainCar-v0
その中でも、Atari2600(昔のファミコンみたいなの)で動くゲームが面白いです。AIにゲームを学習させるってことですね。これらのゲームは強化学習の実験フィールドとしてよく使われます。ディープマインド社も強化学習のアルゴリズムの研究(Rainbow)の中でAtariのゲームを使って実験しています。
今回はブロック崩しゲームを学習させてみましょう。強化学習はkeras-rlというライブラリを使っています。その中にサンプルコードがあり、Google Colaboratoryで動くように何箇所か修正しています。コードはこちら。Google Colaboratoryを使うとブラウザ経由で、Googleのサーバ上で機械学習を実行できます。GPUも使わせてくれるので、実験する環境としてはすごくいいです。
学習開始直後(ぜんぜんダメ)
1時間くらい経過(一応ボールを追いかけるようになってる)
3時間くらい経過(上達したけど上手な人よりはまだ)
もっと学習時間をかけたり、学習する方法を改善すれば、人間よりはるかに上手になっていってしまいます。コンピュータの中で再現可能な問題の場合、もう人間はAIに勝てないし、頑張らなくても良い(AIにやってもらう)ということになってしまいますね。ドキドキする進化なのか、悔しい敗北なのか複雑な気持ちが残ります。