ダンガンロンパ自由研究

ゲームをプレイするAIを作りたい!ep.1 AIってなに?

スポンサーリンク
ダンガンロンパ
この記事には広告を含みます

2015年、囲碁をプレイするAI「AlphaGo」がヨーロッパ王者を破ったことが記憶に新しい。
このニュースは人工知能の有用性を広く知らしめるものとなり、AIブームが巻き起こった。

ゲームは「盤面を観察し取得できる情報から考察することで行動を決定する」という人間の高度な知的作業の詰まった遊びです。
AIがゲームを上手くプレイできるようになれば、情報を分析・判断する必要のあるその他高度知的作業もAIが代替できるようになるかもしれません。

現状では、あらゆるゲームをプレイすることの出来る「汎用AI」は登場していません。各ゲームに特化した学習を行ったAIによる研究が進められています。
例えば、AlphaGoは囲碁の世界でトッププレイヤーを打ち破るほどの強さを誇りますが、子供でもクリアできるマリオの1-1ステージをクリアすることはできません

はじめに

最終目標:ダンガンロンパをクリアするAIを作る!!!

一番好きなゲームであるダンガンロンパをクリアさせたい!という思いから考え始めたものの、ダンガンロンパをAIにクリアさせるためには、捜査パートで効率よくコトダマを集め、学級裁判中も議論を理解し、適切なコトダマで証言をロンパしていく必要があります。
また、色々なミニゲームもあるのでそれらにも対処できるようになる必要があります。

中間目標:簡単なゲームをクリアできるようなAIを作る!

そのため、まずは他のゲームをAIにプレイさせられるように経験を積んで行くところから始めたいです。
初代マリオや放置ゲーム、簡単な論理パズルから話を始めていきたいと思います。

ゲームの種類

「ゲーム」と一口に言っても、世の中には様々な種類のゲームがあります。
ここまでで例に挙げた囲碁・マリオの他にもテトリスのようなパズルゲームや、LoLのようなMOBAゲーム、ダンガンロンパをはじめとする推理ゲームなど様々な種類のゲームを一挙に考えるのは難しいので、まずはジャンル分けを行います。

  • 完全情報ゲーム(対戦者がお互いにすべての情報を持っている)
  • 不完全情報ゲーム(相手の手札など、お互いに一部の情報を知れない)
  • リアルタイム
  • ターン制

完全情報リアルタイムゲーム

左上には格闘ゲームパズルゲームなどの完全情報でリアルタイムなゲームが入ります。
テトリスやぷよぷよなどのパズルゲームは、見た目はシンプルなものの、先の先まで考えてプレイするのは難しく、現在研究が進められています。

完全情報ターン制ゲーム

右上には囲碁将棋をはじめとする、完全情報でターン制のゲームが入ります。
すべての情報にアクセス出来るため有限の探索(ただし囲碁では10^170通り)で多くの状況を探索することが出来ます。
ただし、全てを調べるのは不可能なので、上手いこと工夫して効率的に勝率を上げられる手を探索しています。
AI研究では最も進んでいる分野と言えるでしょう。

不完全情報リアルタイムゲーム

左下にはアクションゲームMOBAなどの不完全情報でリアルタイムのゲームが入ります。
対戦ゲームの多くがこの部分に入り、多くの相互作用の中高速で自身の行動を決める必要があります。一般的にこれらのゲームは瞬間瞬間でとれる選択肢は少ない(初代マリオでは左右移動とジャンプのみ)場合もあり、計算速度にさえ対処できれば好成績を収めるAIも登場しています。

不完全情報ターン制ゲーム

右下には推理ゲームカードゲームターン制RPGなどの不完全情報でターン制のゲームが入ります。
ゆっくりと考えながらプレイするタイプのゲームが多いです。考えるべき・取れる選択肢が膨大に存在することが特徴です。
カードゲームを例にすると、相手の手札として考えられるものは何があるか、今の手札でどう対処できるか、ドローした手札で対処できる可能性はあるか、などなど様々な状況を考慮する必要があるという特徴を持っています。
完全情報に比べて考えなくてはいけない要素が多いものの、シンプルなカードゲームのポーカーではAIがプロに勝った例もあり、研究が進んでいます。

ゲームは完全情報・不完全情報とターン制・リアルタイムという二軸で分類することが出来る!

AIにゲームをプレイさせるー基本編

人工知能(Artificial Inteligence:AI)は「行動によって、どれだけ目標に近づけるかを評価する」ことで行動を決定します。
多数の行動の結果を考察し、最も目標に近づくであろう行動を選択します。

これをAIの中だけで試行錯誤して学習する方法を「強化学習」と言います。

遺伝的アルゴリズム

具体的な方法の一つとして、「遺伝的アルゴリズム」を利用することが多いです。
いきなり難しい名前が出てきましたが、内容はそこまで難しくありません。

親から子へ何世代も遺伝子が受け継がれるように、ゲームプレイに遺伝を利用するというアイデアから作られました。
第一世代のプレイヤーはランダムに動き、目標に応じた妥当な報酬と罰を受けます。
ランダムに動いているため、多くの報酬を受けたプレイヤーと多くの罰を受けたプレイヤーが混在します。
多くの報酬を受けたプレイヤーの行動を後の世代に受け継がせることで、世代を経るごとに目標に対して最適な行動をとるようになるというアルゴリズムです。

このアルゴリズムの利点は、勝手に学習が進んでいくという点です。
操作方法とルールを教えておくと、妥当な報酬を設計するだけで最適な行動を取り始めます。

  • マリオ:移動方法とゴールの存在・右に進むほど報酬増
  • テトリス:操作方法とスコアが増える条件・スコアが増えるほど報酬増
  • 囲碁:碁石の置き方と石を取る方法・その盤面における勝率が高い程報酬増

AIは最も確からしい行動を取り、その行動は遺伝的アルゴリズムから決定する!

参考動画

初心者が徐々に上達する様子を見ているようで、学習の過程を見ているだけでもなかなか面白いです。

参考文献⇩

Games for Artificial Intelligence Research: A Review and Perspectives
Very simple statistical evidence that AlphaGo has exceeded human limits in playing GO game
Deep learning technology is making great progress in solving the challenging problems of artificial intelligence, hence ...

AIにゲームをプレイさせるー限界編

さて、ここまで見てきた二軸の分類に関してそれぞれ限界がありました。
取れる選択肢の限界と計算速度の限界です。

取れる選択肢の限界

AIはある瞬間の盤面を読み取り、プレイヤーが取り得る全ての選択肢に対して重みづけを行い、最も報酬を受け取れる選択肢を選択します。
初代マリオを例に考えると、左右移動とジャンプのみ可能です。クリボーが目の前にいる場合、そのまま右に進むとクリボーにぶつかって倒されてしまうため(罰を受ける)、ジャンプ+右移動をする。といったように選択肢が少ない場合では最もらしい選択肢を取れる可能性が高いです。

一方で崩壊スターレイルを例に考えると、取り得る選択肢が爆増します。
戦闘に関しては通常・スキル・必殺をどう使用するかを考える程度でよいため、比較的単純な選択肢しかないです。
しかし、手持ちキャラをどう編成して強敵に挑むか・どんな順番で育成していくのが効率的かなど多くの要因が絡んだ場合では選択肢が多く広がります。
膨大な選択肢の中から「それらしい」選択肢を選べるように、事前知識を追加する明らかに駄目そうな編成は無視するといった工夫を行い、学習を効率的に行っています。

計算速度の限界

リアルタイムなゲームの場合、フレーム単位で操作する必要があります。
多くのゲームでは60FPSが主流なので、1/60秒に一回画面が切り替わり、その都度意思決定をします。
つまり、超反応でゲームをプレイさせようと思ったら、思考時間を1/60秒以下に収める必要があります。

ちなみに、人間が見てから反応する際の限界は約0.1秒(6フレーム)と言われています。一般的にはその倍0.2秒(12フレーム)程度の反応速度を持っています。
コンピューターの計算速度はとても速いですが、人間並みの反応速度を発揮しようとすると、様々な工夫を行う必要があります。

終わりに

次回の記事では、実際に遺伝的アルゴリズムを実装し、簡単なゲームをプレイさせるところまで進めたいと思います。
Twitterでも進捗を投稿していくのでぜひフォローお願いします!

ポコたくをフォロー

コメント

タイトルとURLをコピーしました