ここから本文です

人工知能にテトリスを学習させる動画に感心の声 あっという間に初心者から上級者に進歩

7/12(水) 18:33配信

ねとらぼ

 人工知能にテトリスを学習させた動画がニコニコ動画にアップされています。動画は人工知能がどうやって学習していくのかを、丁寧に解説しています。

【画像】学習中のAIの様子

 人工知能はまず、「現在の盤面」に「現在落ちてきているブロック」がどう置けるか、全てのパターンを洗い出し、算出された盤面をそれぞれ評価していきます。そして、そのなかで一番評価の高い手を採用していくという仕組み。

 人工知能はこの「盤面の評価」が正しくできることが重要となるため、正しく評価するために「学習」をさせます。この動画では「ニューラルネットワーク」と「遺伝的アルゴリズム」を使用しました。

 「ニューラルネットワーク」は、脳の神経回路網をモデルにした計算方法。脳の神経細胞は網目状につながっていて、他の神経細胞から一定量の信号を受け取ると、自らも信号を出力します。また、細胞同士の結合には強弱があり、経路によって強い信号として伝わったり、弱い信号として伝わったりします。脳は、この強弱を変化させ学習や記憶をしているそうです。

 この仕組みをコンピュータに実装したのが「ニューラルネットワーク」です。脳の神経細胞の代わりに信号の送受信を担当するのが「ノード」。このノードを複数結合させたネットワークを考えます。このノードの入力層にテトリスを数値化した情報、例えば「ブロックの最大の高さ」「穴の数」などを「外部情報」として受け渡します。外部情報を受けた入力層は、中間層に信号を伝達します。このとき、入力層のノードと中間層のノードの結合には強弱があり、伝達信号の大きさも変化します。

 中間層のノードは、信号が一定の値を越えた場合に出力層に伝達します。出力層のノードは受け取った信号の合計値を出力します。これが盤面の評価値となります。

 ノードの結合の強弱で盤面の評価値が変化することになります。そこで、評価値が正しくなるようにノードの結合の強弱を調整していき、この調整にも人工知能を使います。これを「学習」と呼びます。

 「学習」で使うのが、みんな大好き「遺伝的アルゴリズム」。結合の強弱を「遺伝子データ」として扱って、テトリスを上手にプレイできる遺伝子を探していくのです。

 遺伝子データをランダムで100個生成します。それぞれの遺伝子データ(=結合の強弱)を使ったニューラルネットワークで、テトリスをプレイ。

 自然界では適応度の高い遺伝子が子孫を残しやすいですが、それと同じように、テトリスのスコアが高い遺伝子が選ばれやすいように工夫しつつ、ランダムで2つの遺伝子を選びます。この2つの遺伝子を交叉させて新しい遺伝子を作り、100個になるまで繰り返します。この100個が第2世代となり、同じように第3世代、第4世代と世代交代を繰り返すことで、より高いスコアを出す遺伝子が生成されます。

 さて、学習した結果はどうなったでしょうか。第1世代のプレイを見ると、なんとなくできてはいるものの、無計画に「穴」を作ってしまうプレイスタイル。すぐにゲームオーバーとなってしまいました。

 次に第5世代です。第1世代と比べて確実に進化している様子がうかがえます。しっかり1列を消していき、そつが無いプレイスタイル。第1世代がゲームオーバーになるタイミングでも、まだ1列目が消せる状態でした。

 第10世代、第100世代と進化すると、どんどん賢くなり、ブロックが溜まりにくくなってきます。ただし、プレイ時間を長くする方が高得点となるためか、ブロックを高く積まないようにしてしまうため、4段消しは全くしません。

 やっぱり「4段消し」を狙わないプレイスタイルは面白くないと、評価基準を変更しました。「ゲームオーバーのスコア」ではなく「40ラインを消すまでのスコア」で評価し、もう一度学習させます。その結果、4段消しを狙いに行く人間味あふれるプレイスタイルに。しかも、すっごい上手です。これは、見ていて気持ちがいいぞ!

 動画を掲載したのはガジュ丸さん。人工知能に関する動画を複数アップしています。この動画は情報処理学会で発表された宇部高専の論文「ニューラルネットワークと遺伝的アルゴリズムを用いたテトリスコントローラの開発」を参考に作ったそうです。

最終更新:7/12(水) 18:37
ねとらぼ