こんにちは、ほけきよです!
人工知能ブームも、とどまるところを知りませんね。 異常検知とか、画像識別などいろんな現実のタスクにも使われ始めていて、 ビジネス面での応用も色々と考えられています。まさに今が旬!と言った感じでしょうか。
そんな中で、お金の匂いがあまりせず、興味駆動で研究を行っているクールな例もあります。 その最たるものが、「人工知能で既存のゲームをクリアする」というものです。 まさに自分の趣味を研究にしているようなもの。実にCooooolです。
今日は、どこまで人間のゲーム界に侵食して来ているのか、記事や最新の論文を踏まえながらいくつか紹介します。 あなたは人工知能に勝てますか??
ブロック崩し
ゲーム関連での技術では、強化学習(Reinforcement Learning)というのがよく使われます。「自分が行動して、その結果の良し悪しで戦略を変えていく」という学習の仕方です。
この分野、囲碁の世界チャンプをぶっ倒した"AlphaGo"の登場により、爆発的に研究が進み始めています。 新しい強化学習のアルゴリズムが現れた時に、評価用のゲームとしてよく使われるのがこのAtari Gamesのブロック崩し。 タスクとしてわかりやすく、性能の評価もしやすいからでしょう。
この動画のアルゴリズムは、Deep Q Network(DQN)と呼ばれる技術を用いています。 詳細は省きますが、動画を見ると
- はじめはほぼランダムな動きをする
- 少しすると、ボールを落とさないようになる
- もっとすると、戦略を学び始める
というのがみて取れます。 ちなみに、現在ではブロック崩しは人の平均の10倍以上の成績を取れるようにまでなっています 他のゲームでも、人を超えているのがかなりありますね。アーケードゲームはもう人工知能の方が優秀なのでしょうか。
図 : Deep Reinforcement Learning with Double Q-learning
スマブラ
誰もが一度は通る世界的有名ゲーム、「大乱闘スマッシュブラザーズ」にも、人工知能のメスが入っています。
下記映像は、世界ランクに乗るほどのプレイヤーとDQNで学習したAIとの勝負。1Pが人間、2PがAIです。
つえええ。絶対勝てねぇ。。。
原論文はこちら
Beating the World’s Best at Super Smash Bros. with Deep Reinforcement Learning
こちらの記事が技術面のめちゃくちゃ詳しい解説をしてくださっている。
DQNとA3Cで実験を行い、振る舞いの変化なども観測しているようだ。 手法の新しさというよりかは、既存のものをうまく実適用に当てはめたという感じでしょうか。
64ならまだしも、GameCube版のスマブラDXでこの性能出されたら、もうだめだ感ありますね。
マリカー
これも誰もが一度は通る道でしょう。マリオカート。
Kevin Hughesという方が、全自動で運転するプログラムを作成しました。名付けて“TensorKart”
その試行錯誤の様子は自身のブログで書かれています(in English)
TensorKart: self-driving MarioKart with TensorFlow
どういう風に特徴ベクトルを設計したか、最適化を行ったかなど、細かく書かれていて「ホーー」という感じでした。 MNIST, Autopilot(自動運転用機械学習モジュール)と比較しながら書いているので、それらに比べてどういう差分があるのかもわかりやすいです。
学習した結果がこちら
少しコースアウトしたり、壁にぶつかったりしていますが、 概ねきちんとコース取りできている模様。多分私よりは上手。 彼のブログ内のはじめの動きに比べれば、ここまで学習させられるのか…という感じですね。 個人でここまでできるのはすごいなと素直に思います。
これに関する日本語の詳しい記事はこちら
ダンレボ
リズムゲーの原点にして頂点、“Dance Dance Revolution”. これもハマった人は多いでしょう。
今回の論文は"Dance Dance Convolution"
まず名前がズルい。うますぎる。このキャッチーなネーミングにつられて思わず論文をダウンロードした人は多いだろう。 やっていることは、DDRを実際にプレイするというわけではなく、任意の曲からDDRの譜面を自動生成するというもの。
技術的には、C-LSTMというモデルを使った模様。
詳細は論文参照だが、ざっっっくり説明すると
といった感じである。 また、実際にWebサービスとして展開していて、ここから実際に譜面を作ることが可能。
難易度を5段階(Beginner Easy Medium Hard Challenge)となっているが、 LSTMの精度が高密度の方がいいらしく、難易度が高くなる方が高精度で譜面生成してくれる。 皆さんも、好きな曲でChallengeの難易度での譜面生成、してみてはいかがでしょう。
FPS
根強い人気を誇るFPS(First Person Shooter)*1Call Of Dutyとか、バイオハザードとかは、今でも熱烈なファンが多くいますね。そんなFPSを強化学習で強くしようとした論文がこちら
Playing FPS Games with Deep Reinforcement Learning
対象ゲームは"Doom“と呼ばれる、FPSの草分け的なゲーム。 今ではAIでどこまで強くなれるかの、コンペティションの対象になっているようです(VizDoom )
普通に殺せている…強い(確信)
技術的なところを少しだけ話すと、この手のゲームで難しいのは1人称視点なので、観測範囲が限られる(partial observation)ところ。つまり、自分の行動の結果としてみられる範囲が自分の視点だけであり、そこから全体を推測しないといけないところが難しい。
この論文では、その問題に対してDRQN(Deep Recurrent Q-Networks)という手法で取り組んでいます。部分観測から、今の状態(hidden state)を推測して、次の行動へと移るといったイメージです。
もう一つ工夫としては、navigationとactionという2フェーズに分けたところ。
- navigation : 移動の仕方
- action : 敵の殺し方
これらをまとめて行動とする場合と、別々のネットワークで学習させる場合で、かなり結果が違っています。
これだけ行うタスクが明確に違うと、分けた方が学習が効率的に進むということですかね?
まとめ
いかがでしたか?
ゲーム下手な私は多分、どのゲームも勝てないと思います。 自分がゲームの練習して勝つより、学習モデル作って勝てるゲームプレーヤーを作るほうがまだ可能性があるのでは?とか思っちゃいます。そんな時代なのですね。
これからどんどんこういう事例が出てくると思います。 ニコ動の「才能の無駄遣い」タグがぴったり当てはまるこの分野、 なかなかに好きなので、今後も注目です!ではではっ!
*1:一人称視点で行うゲーム