【スマブラ】ゲームを題材とした強化学習【FIFA】

Pocket

強化学習のゲーム事例集

はじめに

こんにちは。はんぺんです。

最近は強化学習に非常に興味をもってます。

AlphaGoでひとたび有名になった強化学習ですが、AlphaGo以外にもいろんなところで強化学習は用いられています。

今回はその中でもゲームを対象に強化学習を使った事例を紹介していきたいと思います。

強化学習とは?

そもそも強化学習とはどういったものなのでしょうか。

強化学習(きょうかがくしゅう、英: Reinforcement learning)とは、ある環境内におけるエージェントが、現在の状態を観測し、取るべき行動を決定する問題を扱う機械学習の一種。エージェントは行動を選択することで環境から報酬を得る。強化学習は一連の行動を通じて報酬が最も多く得られるような方策(policy)を学習する。

参考:Wikipedia、強化学習

以上のようにWikipediaでは説明されています。

これを図にすると以下のようになります。

ある環境が存在し、エージェントがそれの状態を観測し、その観測結果から行動を選択し、その行動結果をもとに報酬を得ます。

ここで、エージェントが存在する標高が高くと報酬が得られると設定すると、エージェントは最初はランダムに行動しますが、環境から状態を観測した結果から行動を起こし、その結果標高が高くなった場合、エージェントは標高が高くなるような行動を選択して行くように学習がすすみます。

これがゲームだと報酬がスコアだったり勝ち負けだったり、敵に与えたダメージだったりと多岐にわたり、正しい報酬設計をすることは強化学習で強いエージェントを創る上では欠かせません。

以下で、ゲームに強化学習が用いられている事例を紹介していきます。

事例集

Atari 2600

Atari 2600とは、米国アタリ社が開発した家庭用ゲーム機です。

人工知能を研究する非営利企業 OpenAIが作った、AIの知能を測定・学習するためのソフトウェアプラットフォームUniverseがあります。

UniverseのライブラリーにはAtari 2600のゲームタイトルが収録されており、これを用いてAIエージェントを学習させることが可能です。

このAtari 2600に中でも特にブロック崩しが有名です。

学習が進んでない段階ではすぐにボールを落としてしましますが、学習が進むと角をせめてボールをブロックの上部に潜り込ませて連続的にブロックを崩したりと、人間顔負けの戦略をとるようになります。

アルゴリズムにはDeep Q-learning(DQN)という手法を使っています。

大乱闘スマッシュブラザーズDX

MITの学生がスマブラDXの強化学習を題材に論文を書いています。

Beating the World’s Best at Super Smash Bros. with Deep Reinforcement Learning

上記のブロック崩しは環境の状態に画像を使っていますが、このスマブラの強化学習ではメモリからゲームの情報(プレーヤーの位置、ベクトル、行動状態、その他)を読み取り、それを状態としています。

人間(1P)と学習させたモデル(2P)の対戦動画です。

1Pを操作している方はスマブラ界でも屈指の上級者らしいのですが、強化学習で作ったモデルの強さがうかがえます・

実際に私もモデルを読み込ませて対戦をしたことがあります。一応スマブラ歴長いので自信あったのですが、目も当てられないほどの惨敗でした(;´д`)

技が全く当たらず、回避したら回避直後に膝を当てられるの繰り返しで倒されました。

人間の反射速度に200ms程度であるのに対して、このエージェントは2フレーム(33ms)で反応しており、人間の入力速度では到底及ばないのも納得できます。

こちらは方策勾配法とDQNを使っています。

FIFA 18(フリーキック)

サッカーゲームのフリーキックの精度を強化学習で向上させたという事例になります。

Using Deep Q-Learning in FIFA 18 to perfect the art of free-kicks

最初に説明した状態と行動と報酬の例をこのフリーキックに当てはめると、状態はプレーヤー、障害物、ボール、ゴールなどが映っているゲーム画面であり、その状態からボールをどのように蹴るかを推論し、実際にボールを蹴るという行動にうつします。その結果から得られるゴールのスコアを報酬として、これが高くなるように学習をしていきます。

1000回学習させた結果、最初と比べてスコアが1.5倍以上高くなっております。

こちらもDQNを使用しています。

マリオカート

強化学習ではなくRNNを用いたものですが、マリオカートは64とスーファミと両方で事例がありました。

TensorKart(64)

MarioFlow(スーファミ)

スーファミの方の開設となりますが、これはゴールを目的とせず、与えられた状況に対してどのように捜査するかを推論するという形をとっています。

作者が実際に操作した結果として得られた画像やコマンドを入力にして、機械にその状況においてどのような操作をすべきかを学習させたものとなっています。

学習の結果、フラワーカップ(50cc)で優勝するほどのレベルに到達したようです。

さいごに

いかがでしたでしょうか。ゲームを題材とした強化学習にも色々あり、DQNを使っていることが多く見受けられます。

自分も強化学習を使って何かのゲームで最強キャラを作ってみたいです。

最後まで読んでいただきありがとうございました。

それでは失礼いたします。

参考

強化学習を強化学習(1)

マリオカート64の全自動走行をGoogleの機械学習ライブラリ「TensorFlow」でやってみたムービー

Udemyの【 TensorFlow, Python3, OpenAI Gymで学ぶ】強化学習入門 を受けてみた感想

Kerasを用いたディープラーニング(LSTM)で新しいツンデレセリフを生成してみた

スポンサーリンク














1 個のコメント

  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください