(57)【要約】【課題】  ゲームキャラクタの行動を決定するため、ニューロエボリューションを用いたニューラルネットワークの構造及びパラメータの調整を行う。【解決手段】  一実施形態に係るニューロエボリューションを用いてニューラルネットワーク（ＮＮ）の構造及びパラメータの調整方法は、ゲームパラメータを入力値として抽出するステップと、該入力値に基づき、複数のニューラルネットワーク（ＮＮ）からそれぞれ複数の出力値を抽出するステップと、該出力値に基づき、１又は複数のゲームキャラクタの行動を決定するステップと、前記ゲームパラメータを該行動後のゲームパラメータに更新するステップと、これらのステップを繰り返し、各ニューラルネットワークに対応する各行動の出力値の組み合わせに対する評価値を算出するステップと、前記各行動の出力値の組み合わせに対する評価値が高くなる方向で、遺伝的アルゴリズムを適用し前記複数のニューラルネットワーク（ＮＮ）の構造及びパラメータを更新するステップと、を複数世代繰り返し実行させる。【選択図】  図３
2018029860.tif 000002
【特許請求の範囲】
【請求項１】
ニューロエボリューションを用いてゲーム内の１又は複数のゲームキャラクタの行動を出力する複数のニューラルネットワーク（ＮＮ）の構造及びパラメータを調整する方法であって、
１又は複数のコンピュータ上で実行されることに応じて、当該１又は複数のコンピュータに、
ゲームパラメータを入力値として抽出するステップと、
該入力値に基づき、複数のニューラルネットワーク（ＮＮ）からそれぞれ複数の出力値を抽出するステップと、
該出力値に基づき、１又は複数のゲームキャラクタの行動を決定するステップと、
前記ゲームパラメータを該行動後のゲームパラメータに更新するステップと、
これらのステップを繰り返し、各ニューラルネットワークに対応する各行動の出力値の組み合わせに対する評価値を算出するステップと、
前記各行動の出力値の組み合わせに対する評価値が高くなる方向で、遺伝的アルゴリズムを適用し前記複数のニューラルネットワーク（ＮＮ）の構造及びパラメータを更新するステップと、
を複数世代繰り返し実行させることを特徴とするニューロエボリューションを用いてニューラルネットワーク（ＮＮ）の構造及びパラメータを調整する方法。
【請求項２】
複数のニューラルネットワーク（ＮＮ）を所定の閾値を用いて複数のグループに分割し、同じグループ内においてのみニューラルネットワーク（ＮＮ）の構造及びパラメータを更新するのに前記遺伝的アルゴリズムを適用することを特徴とする請求項１に記載の方法。
【請求項３】
前記複数のニューラルネットワーク（ＮＮ）間の構造及びパラメータの類似度に基づき、該類似度に関する所定の閾値を境界として複数のニューラルネットワーク（ＮＮ）を複数のグループに分割することを特徴とする請求項２に記載の方法。
【請求項４】
前記複数のグループ間において、同じ世代における各グループのニューラルネットワーク（ＮＮ）の評価値の平均値を比較し、該平均値が、前記複数のグループ全体の該評価値の平均値よりも高い評価値の平均値を有するグループの割合を増やし、該平均値が、前記複数のグループ全体の該評価値の平均値よりも低い評価値の平均値を有するグループの割合を減らし、次世代における前記複数のグループの各グループのニューラルネットワーク（ＮＮ）の数が占める比率を変化させることを特徴とする請求項２又は３に記載の方法。
【請求項５】
前記複数のグループ間において、同じ世代における各グループのニューラルネットワーク（ＮＮ）の評価値の平均値を比較し、該平均値が、前記複数のグループ全体の該評価値の平均値よりも高い評価値の平均値を有するグループの割合を約１０％増やし、該平均値が、前記複数のグループ全体の該評価値の平均値よりも低い評価値の平均値を有するグループの割合を約１０％減らし、次世代における前記複数のグループの各グループのニューラルネットワーク（ＮＮ）の数が占める比率を変化させることを特徴とする請求項４に記載の方法。
【請求項６】
前記複数のグループの各グループにおける複数のニューラルネットワーク（ＮＮ）の評価値の中で最大の評価値が、所定の世代の間高くなるよう更新されない場合、そのグループのニューラルネットワーク（ＮＮ）の数を１０％よりも大きい割合で減少させることを特徴とする請求項４又は５に記載の方法。
【請求項７】
前記複数のグループの各グループにおける複数のニューラルネットワーク（ＮＮ）の評価値の中で最大の評価値が、所定の世代の間高くなるよう更新されない場合、そのグループのニューラルネットワーク（ＮＮ）の数を半減させることを特徴とする請求項４又は５に記載の方法。
【請求項８】
前記複数のニューラルネットワーク（ＮＮ）として、約１００個のニューラルネットワーク（ＮＮ）を用いることを特徴とする請求項１から７までの１項に記載の方法。
【請求項９】
前記更新するステップを約１００世代繰り返すことを特徴とする請求項１から８までのいずれか１項記載の方法。
【請求項１０】
前記評価値を、ゲームキャラクタの行動回数、ゲームキャラクタの残りＨＰ、ゲームキャラクタが受けた総ダメージ、ゲームキャラクタが死亡した回数、の内の少なくともいずれか又はこれらの組み合わせに基づき決定することを特徴とする請求項１から９までのいずれか１項記載の方法。
【請求項１１】
前記評価値は、前記各ステップを前記ゲームの１つのバトルが終了するまで繰り返した場合に抽出される各出力値の組み合わせに対する評価値であることを特徴とする請求項１から１０までのいずれか１項記載の方法。
【請求項１２】
ニューロエボリューションを用いてゲーム内の１又は複数のゲームキャラクタの行動を出力する複数のニューラルネットワーク（ＮＮ）の構造及びパラメータを調整するシステムであって、
１又は複数のコンピュータ上で実行されることに応じて、当該１又は複数のコンピュータに、
ゲームパラメータを入力値として抽出するステップと、
該入力値に基づき、複数のニューラルネットワーク（ＮＮ）からそれぞれ複数の出力値を抽出するステップと、
該出力値に基づき、１又は複数のゲームキャラクタの行動を決定するステップと、
前記ゲームパラメータを該行動後のゲームパラメータに更新するステップと、
これらのステップを繰り返し、各ニューラルネットワークに対応する各行動の出力値の組み合わせに対する評価値を算出するステップと、
前記各行動の出力値の組み合わせに対する評価値が高くなる方向で、遺伝的アルゴリズムを適用し前記複数のニューラルネットワーク（ＮＮ）の構造及びパラメータを更新するステップと、
を複数世代繰り返し実行させることを特徴とするニューロエボリューションを用いてニューラルネットワーク（ＮＮ）の構造及びパラメータを調整するシステム。
【請求項１３】
ニューロエボリューションを用いてゲーム内の１又は複数のゲームキャラクタの行動を出力する複数のニューラルネットワーク（ＮＮ）の構造及びパラメータを調整するプログラムであって、
１又は複数のコンピュータ上で実行されることに応じて、当該１又は複数のコンピュータに、
ゲームパラメータを入力値として抽出するステップと、
該入力値に基づき、複数のニューラルネットワーク（ＮＮ）からそれぞれ複数の出力値を抽出するステップと、
該出力値に基づき、１又は複数のゲームキャラクタの行動を決定するステップと、
前記ゲームパラメータを該行動後のゲームパラメータに更新するステップと、
これらのステップを繰り返し、各ニューラルネットワークに対応する各行動の出力値の組み合わせに対する評価値を算出するステップと、
前記各行動の出力値の組み合わせに対する評価値が高くなる方向で、遺伝的アルゴリズムを適用し前記複数のニューラルネットワーク（ＮＮ）の構造及びパラメータを更新するステップと、
を複数世代繰り返し実行させることを特徴とするニューロエボリューションを用いてニューラルネットワーク（ＮＮ）の構造及びパラメータを調整するプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューロエボリューションを用いたニューラルネットワークの構造及びパラメータ調整のためのプログラム、システム、及び方法に関し、詳しくは、ニューロエボリューションを用いてゲーム内の１又は複数のゲームキャラクタの行動を出力する複数のニューラルネットワーク（ＮＮ）の構造及びパラメータを調整するのためのプログラム、システム、及び方法に関する。
【背景技術】
【０００２】
ニューラルネットワークは、脳のニューロン及びシナプスを模して考えられたモデルである。ニューロエボリューションは、進化論的手法とニューラルネットワークを組み合わせたものであり、最適なニューラルネットワークを遺伝的手法で探索する方法を提供するものである。
【０００３】
このようなニューロエボリューションにおいて、遺伝的アルゴリズムを用いて、機械学習を行うことで、ニューラルネットワークの構造や重み付けを進化させる方法が知られている（例えば、非特許文献１）。非特許文献１では、遺伝的アルゴリズムを用いてニューラルネットワークの構造や重み付けに関する最適解を学習させるＮｅｕｒｏＥｖｏｌｕｔｉｏｎ  ｏｆ  Ａｕｇｍｅｎｔｉｎｇ  Ｔｏｐｏｌｏｇｉｅｓ（ＮＥＡＴ）という方法が提案されている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】“Ｅｖｏｌｖｉｎｇ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ  Ｔｈｒｏｕｇｈ  Ａｕｇｍｅｎｔｉｎｇ  Ｔｏｐｏｌｏｇｉｅｓ”、Ｋｅｎｎｅｔｈ  Ｏ．  Ｓｔａｎｌｅｙ、Ｒｉｓｔｏ  Ｍｉｉｋｋｕｌａｉｎｅｎ
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、当該ＮＥＡＴ技術をゲームのプレイＡＩの学習に活用しようとすると、ゲーム特有の改善が必要となる。より具体的には、ゲームの進行によりゲーム環境やユーザキャラクタのパラメータが変動するような場合、ゲームの試行の度に評価が大きく変動し得るため、当該ＮＥＡＴ技術をそのまま活用しても学習が思うように進まず、ニューラルネットワークの構造や重み付けに関する最適解の探索が困難となっていた。
【０００６】
本発明の実施形態は、ゲームキャラクタの行動を決定するため、ニューロエボリューションを用いたニューラルネットワークの構造及びパラメータの調整を行うことを目的の一つとする。本発明の実施形態の他の目的は、本明細書全体を参照することにより明らかとなる。
【課題を解決するための手段】
【０００７】
本発明の一実施形態に係る方法は、１又は複数のコンピュータ上で実行されることに応じて、当該１又は複数のコンピュータに、ゲームパラメータを入力値として抽出するステップと、該入力値に基づき、複数のニューラルネットワーク（ＮＮ）からそれぞれ複数の出力値を抽出するステップと、該出力値に基づき、１又は複数のゲームキャラクタの行動を決定するステップと、前記ゲームパラメータを該行動後のゲームパラメータに更新するステップと、これらのステップを繰り返し、各ニューラルネットワークに対応する各行動の出力値の組み合わせに対する評価値を算出するステップと、前記各行動の出力値の組み合わせに対する評価値が高くなる方向で、遺伝的アルゴリズムを適用し前記複数のニューラルネットワーク（ＮＮ）の構造及びパラメータを更新するステップと、を複数世代繰り返し実行させることで、ニューロエボリューションを用いたニューラルネットワーク（ＮＮ）の構造及びパラメータの調整を行うように構成される。
【０００８】
本発明の一実施形態に係るシステムは、１又は複数のコンピュータ上で実行されることに応じて、当該１又は複数のコンピュータに、ゲームパラメータを入力値として抽出するステップと、該入力値に基づき、複数のニューラルネットワーク（ＮＮ）からそれぞれ複数の出力値を抽出するステップと、該出力値に基づき、１又は複数のゲームキャラクタの行動を決定するステップと、前記ゲームパラメータを該行動後のゲームパラメータに更新するステップと、これらのステップを繰り返し、各ニューラルネットワークに対応する各行動の出力値の組み合わせに対する評価値を算出するステップと、前記各行動の出力値の組み合わせに対する評価値が高くなる方向で、遺伝的アルゴリズムを適用し前記複数のニューラルネットワーク（ＮＮ）の構造及びパラメータを更新するステップと、を複数世代繰り返し実行させることで、ニューロエボリューションを用いたニューラルネットワーク（ＮＮ）の構造及びパラメータの調整を行うよう構成される。
【０００９】
本発明の一実施形態に係るプログラムは、１又は複数のコンピュータ上で実行されることに応じて、当該１又は複数のコンピュータに、ゲームパラメータを入力値として抽出するステップと、該入力値に基づき、複数のニューラルネットワーク（ＮＮ）からそれぞれ複数の出力値を抽出するステップと、該出力値に基づき、１又は複数のゲームキャラクタの行動を決定するステップと、前記ゲームパラメータを該行動後のゲームパラメータに更新するステップと、これらのステップを繰り返し、各ニューラルネットワークに対応する各行動の出力値の組み合わせに対する評価値を算出するステップと、前記各行動の出力値の組み合わせに対する評価値が高くなる方向で、遺伝的アルゴリズムを適用し前記複数のニューラルネットワーク（ＮＮ）の構造及びパラメータを更新するステップと、を複数世代繰り返し実行させることで、ニューロエボリューションを用いてニューラルネットワーク（ＮＮ）の構造及びパラメータの調整を行うように構成される。
【発明の効果】
【００１０】
本発明の様々な実施形態によって、１つのバトルの間に１又は複数のゲームキャラクタの行動によりバトル状態が刻々と変化するゲームにおいても、ゲーム内の１又は複数のゲームキャラクタの行動を出力する複数のニューラルネットワーク（ＮＮ）の構造及びパラメータをニューロエボリューションを用いて更新することにより、より適切かつ自然なゲームキャラクタの行動の決定に資することが可能となる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態に係るシステム１の構成を概略的に示す構成図。
【図２】一実施形態におけるシステム１が有する機能を概略的に示すブロック図。
【図３】一実施形態におけるニューラルネットワーク（ＮＮ）の構造及びパラメータを調整するフローの一例を示す図。
【図４】ＮＥＡＴの手法による場合の世代数と評価値との関係の一例をプロットしたものを示す図。
【図５】一実施形態におけるニューラルネットワーク（ＮＮ）の更新の際の世代数と評価値との関係の一例をプロットしたものを示す図。
【図６】一実施形態におけるニューラルネットワーク（ＮＮ）の更新の際の世代数と評価値との関係の一例をプロットしたものを示す図。
【発明を実施するための形態】
【００１２】
図１は、本発明の一実施形態に係るシステム１の構成を概略的に示す構成図である。一実施形態におけるシステム１は、図示するように、サーバ１０と、このサーバ１０とインターネット等の通信網２０を介して接続された複数の端末装置３０と、を備え、端末装置３０のユーザに対して電子商取引サービスを提供する。また、一実施形態におけるシステム１は、キャラクタを用いたゲームや電子書籍、動画コンテンツ、及び音楽コンテンツ等のゲーム以外の様々なデジタルコンテンツの提供サービス、並びに、テキストチャット（ミニメール）、サークル、アバター、日記、伝言板、及び挨拶等の様々なユーザ間のコミュニケーション機能を実現するコミュニケーションプラットフォーム（ＳＮＳプラットフォーム）サービス等の様々なインターネットサービスを、端末装置３０のユーザに対して提供し得る。
【００１３】
一実施形態におけるサーバ１０は、一般的なコンピュータとして構成されており、図示のとおり、ＣＰＵ（コンピュータプロセッサ）１１と、メインメモリ１２と、ユーザＩ／Ｆ１３と、通信Ｉ／Ｆ１４と、ストレージ（記憶装置）１５と、を含み、これらの各構成要素がバス１７を介して互いに電気的に接続されている。ＣＰＵ１１は、ストレージ１５からオペレーティングシステムやその他様々なプログラムをメインメモリ１２にロードし、このロードしたプログラムに含まれる命令を実行する。メインメモリ１２は、ＣＰＵ１１が実行するプログラムを格納するために用いられ、例えば、ＤＲＡＭ等によって構成される。なお、一実施形態におけるサーバ１０は、それぞれ上述したようなハードウェア構成を有する複数のコンピュータを用いて構成され得る。なお、上述したＣＰＵ（コンピュータプロセッサ）１１は一例であり、これに代えて、ＧＰＵ（グラフィックス・プロセッシング・ユニット）を用いるものであってもよいことは言うまでもない。ＣＰＵ及び／又はＧＰＵをどのように選択するかは、所望のコストないし効率などを勘案した上で適宜決定することが可能である。以下、ＣＰＵ１１を例として説明する。
【００１４】
ユーザＩ／Ｆ１３は、例えば、オペレータの入力を受け付けるキーボードやマウス等の情報入力装置と、ＣＰＵ１１の演算結果を出力する液晶ディスプレイ等の情報出力装置とを含む。通信Ｉ／Ｆ１４は、ハードウェア、ファームウェア、又はＴＣＰ／ＩＰドライバやＰＰＰドライバ等の通信用ソフトウェア又はこれらの組み合わせとして実装され、通信網２０を介して端末装置３０と通信可能に構成される。
【００１５】
ストレージ１５は、例えば磁気ディスクドライブで構成され、各種サービスを提供するための制御用プログラム等の様々なプログラムが記憶される。また、ストレージ１５には、各種サービスを提供するための各種データも記憶され得る。ストレージ１５に記憶され得る各種データは、サーバ１０と通信可能に接続されるサーバ１０とは物理的に別体のデータベースサーバ等に格納されてもよい。
【００１６】
一実施形態において、サーバ１０は、階層構造の複数のウェブページから成るウェブサイトを管理するウェブサーバとしても機能し、こうしたウェブサイトを介して各種サービスを端末装置３０のユーザに対して提供し得る。ストレージ１５には、このウェブページに対応するＨＴＭＬデータも記憶され得る。ＨＴＭＬデータは、様々な画像データが関連付けられ、又、ＪａｖａＳｃｒｉｐｔ（登録商標）等のスクリプト言語等で記述された様々なプログラムが埋め込まれ得る。
【００１７】
また、一実施形態において、サーバ１０は、端末装置３０においてウェブブラウザ以外の実行環境上で実行されるアプリケーション（プログラム）を介して各種サービスを提供し得る。ストレージ１５には、こうしたアプリケーションも記憶され得る。このアプリケーションは、例えば、Ｏｂｊｅｃｔｉｖｅ−ＣやＪａｖａ（登録商標）等のプログラミング言語を用いて作成される。ストレージ１５に記憶されたアプリケーションは、配信要求に応じて端末装置３０に配信される。なお、端末装置３０は、こうしたアプリケーションを、サーバ１０以外の他のサーバ（アプリマーケットを提供するサーバ）等からダウンロードすることもできる。
【００１８】
このように、サーバ１０は、各種サービスを提供するためのウェブサイトを管理し、当該ウェブサイトを構成するウェブページ（ＨＴＭＬデータ）を端末装置３０からの要求に応答して配信することができる。また、上述したように、サーバ１０は、このようなウェブページ（ウェブブラウザ）を用いた各種サービスの提供とは代替的に、又は、これに加えて、端末装置３０において実行されるアプリケーションとの通信に基づいて各種サービスを提供することができる。いずれの態様で当該サービスを提供するにしても、サーバ１０は、各種サービスの提供に必要な各種データ（画面表示に必要なデータを含む）を端末装置３０との間で送受信することができる。また、サーバ１０は、各ユーザを識別する識別情報（例えば、ユーザＩＤ）毎に各種データを記憶し、ユーザ毎に各種サービスの提供状況を管理することができる。詳細な説明は省略するが、サーバ１０は、ユーザの認証処理や課金処理等を行う機能を有することもできる。
【００１９】
一実施形態における端末装置３０は、サーバ１０が提供するウェブサイトのウェブページをウェブブラウザ上で表示すると共にアプリケーションを実行するための実行環境を実装した任意の情報処理装置であり、スマートフォン、タブレット端末、ウェアラブルデバイス、パーソナルコンピュータ、及びゲーム専用端末等が含まれ得るが、これらに限定されるものではない。
【００２０】
端末装置３０は、一般的なコンピュータとして構成され、図１に示すとおり、ＣＰＵ（コンピュータプロセッサ）３１と、メインメモリ３２と、ユーザＩ／Ｆ３３と、通信Ｉ／Ｆ３４と、ストレージ（記憶装置）３５と、を含み、これらの各構成要素がバス３７を介して互いに電気的に接続されている。
【００２１】
ＣＰＵ３１は、ストレージ３５からオペレーティングシステムやその他様々なプログラムをメインメモリ３２にロードし、このロードしたプログラムに含まれる命令を実行する。メインメモリ３２は、ＣＰＵ３１が実行するプログラムを格納するために用いられ、例えば、ＤＲＡＭ等によって構成される。
【００２２】
ユーザＩ／Ｆ３３は、例えば、ユーザの入力を受け付けるタッチパネル、キーボード、ボタン及びマウス等の情報入力装置と、ＣＰＵ３１の演算結果を出力する液晶ディスプレイ等の情報表示装置とを含む。通信Ｉ／Ｆ３４は、ハードウェア、ファームウェア、又は、ＴＣＰ／ＩＰドライバやＰＰＰドライバ等の通信用ソフトウェア又はこれらの組み合わせとして実装され、通信網２０を介してサーバ１０と通信可能に構成される。
【００２３】
ストレージ３５は、例えば磁気ディスクドライブやフラッシュメモリ等により構成され、オペレーティングシステム等の様々なプログラムが記憶される。また、ストレージ３５は、サーバ１０から受信した様々なアプリケーションが記憶され得る。
【００２４】
端末装置３０は、例えば、ＨＴＭＬ形式のファイル（ＨＴＭＬデータ）を解釈して画面表示するためのウェブブラウザを備えており、このウェブブラウザの機能によりサーバ１０から取得したＨＴＭＬデータを解釈して、受信したＨＴＭＬデータに対応するウェブページを表示することができる。また、端末装置３０のウェブブラウザには、ＨＴＭＬデータに関連付けられた様々な形式のファイルを実行可能なプラグインソフトが組み込まれ得る。
【００２５】
端末装置３０のユーザがサーバ１０によって提供されるサービスを利用する際には、例えば、ＨＴＭＬデータやアプリケーションによって指示されたアニメーションや操作用アイコン等が端末装置３０に画面表示される。ユーザは、端末装置３０のタッチパネル等を用いて各種指示を入力することができる。ユーザから入力された指示は、端末装置３０のウェブブラウザやＮｇＣｏｒｅ（商標）等のアプリケーション実行環境の機能を介してサーバ１０に伝達される。
【００２６】
次に、このように構成された一実施形態におけるシステム１が有する機能について説明する。上述したように、一実施形態におけるシステム１は、ユーザに対して様々なインターネットサービスを提供し得るが、特に、ゲーム配信サービスを提供することが可能である。以降、一実施形態におけるシステム１の機能について、ゲーム配信サービスを提供する機能を例として説明する。
【００２７】
図２は、システム１（サーバ１０及び端末装置３０）が有する機能を概略的に示すブロック図である。まず、一実施形態におけるサーバ１０が有する機能について説明する。サーバ１０は、図示するように、様々な情報を記憶する情報記憶部４１と、一実施形態におけるゲームキャラクタの行動を決定するキャラクタ行動制御部４２と、を備える。これらの機能は、ＣＰＵ１１及びメインメモリ１２等のハードウェア、並びに、ストレージ１５に記憶されている各種プログラムやテーブル等が協働して動作することによって実現され、例えば、ロードしたプログラムに含まれる命令をＣＰＵ１１が実行することによって実現される。また、図２に例示したサーバ１０が有する機能の一部又は全部は、端末装置３０によって実現され、又は、サーバ１０と端末装置３０とが協働することによって実現され得る。
【００２８】
一実施形態における情報記憶部４１は、ストレージ１５等によって実現され、図２に示すように、ゲームにおける敵・味方キャラクタ（これらを総称してゲームキャラクタと呼ぶ）の各種ステータス、行動可能なキャラクタ、行動可能な技、直近行動したキャラクタのフラグ、直近行動したキャラクタの技などのゲームパラメータを管理するゲームパラメータ管理テーブル４１ａと、当該ゲームパラメータに基づき各行動が選択された場合の評価値を管理する行動評価値管理テーブル４１ｂと、を有する。
【００２９】
次に、一実施形態におけるゲームキャラクタの行動を決定するキャラクタ行動制御部４２の機能について説明する。キャラクタ行動制御部４２は、情報記憶部４１のゲームパラメータ管理テーブル４１ａに格納されている敵・味方キャラクタの各種ステータス、行動可能なキャラクタ、行動可能な技、直近行動したキャラクタのフラグ、直近行動したキャラクタの技などのゲームパラメータに基づき各ゲームキャラクタの行動を選択・決定していく。より具体的には、キャラクタ行動制御部４２は、ゲームパラメータ管理テーブル４１ａのゲームパラメータを抽出し、これを入力値として１又は複数層のニューラルネットワークに入力し、出力として行動可能なキャラクタの行動及びこれに対応する出力値を抽出し、これらの中から出力値の最も高い行動を決定する。キャラクタ行動制御部４２は、このようにして例えば、１つバトルが終了するまでの間の味方キャラクタの各行動の組み合わせを抽出できる。なお、この例では、１バトルが終了するまでの味方キャラクタの各行動を出力値として抽出したが、敵キャラクタ、味方キャラクタ又はこれらの一部であってもよい。また、１バトルが終了するまでとしたが、その他評価値を算出可能な状態であればこれに限られない。
【００３０】
さらに、キャラクタ行動制御部４２は、１つのバトルが終了するまでの味方キャラクタの各行動の組み合わせを抽出すると、以下に詳述する方法にて、当該出力値の組み合わせに対する評価を行い、評価値を算出する。１つのニューラルネットワーク毎に出力値の組み合わせに対する評価値が抽出されるため、複数のニューラルネットワークがあれば、その数に応じた評価値が抽出されることとなる。なお、通常１００個程度の個体、すなわち１００程度のニューラルネットワークを用意し、その結果１００程度の評価値を抽出することとなるが、その数は任意であり適宜決定することができる。また、個体は、コンボリューションネットワーク（ＣＮＮ）により構成されていてもよい。キャラクタ行動制御部４２は、抽出された出力値の組み合わせに対して算出された評価値に基づき、遺伝的アルゴリズムを適用し、より最適な個体が生き残るよう淘汰を行う、すなわち、より最適なニューラルネットワークに更新する。これを、複数世代、例えば、１００世代程繰り返すことで、ニューラルネットワークが遺伝的アルゴリズムにより進化していく。どの程度の世代を繰り返すかは、諸条件により適宜変更することが可能である。ここで、キャラクタ行動制御部４２は、ニューロエボリューションの１つに分類されるＮＥＡＴの手法を用いて、ニューラルネットワークの構造とパラメータ（重み付けともいう）の最適化を行う。このようにして、キャラクタ行動制御部４２は、基本的にはより評価値の高い出力値の組み合わせを抽出できるニューラルネットワークの構造及びパラメータを生き残らせることとなり、これらの行程を複数世代に亘って繰り返すことで、最適なニューラルネットワークを探索していくこととなる。ここで、既存の遺伝的アルゴリズムやニューロエボリューション、ＮＥＡＴの基本的手法については、詳述しないが、当業者はこれらの手法を適宜一実施形態に係るシステムに適用することができる。
【００３１】
図３はこのフローを示したものである。まず、ゲームパラメータ（入力値）の抽出を行い（ステップ１１０）、これを初期の複数のニューラルネットワークに対して入力を行うことで、各行動の出力値を抽出し（ステップ１２０）、その中からゲームキャラクタの特定の行動を選択・決定し（ステップ１３０）、当該行動後のゲームパラメータとなるようゲームパラメータを更新し（ステップ１４０）、これらのステップを１つゲームバトルが終了するまで繰り返し、ゲームキャラクタの各行動の出力値の組み合わせの評価値を算出し（ステップ１５０）、評価値に基づき遺伝的アルゴリズムを適用しニューラルネットワーク（個体）の構造及びパラメータを更新する（ステップ１６０）。これらを複数世代繰り返していくことでニューラルネットワーク（個体）の構造及びパラメータを進化させていく。以下、一実施形態に係る発明における、ゲームキャラクタのより最適な行動を決定するため、ニューロエボリューションを用いたニューラルネットワークの構造及びパラメータの学習を行う方法をより具体的に示す。
【００３２】
まず、強化学習の対象となる個体のニューラルネットワークは、１又は複数層のニューラルネットワーク（ＣＮＮも含む）構造を備える任意のネットワークであってよい。ここで、個体とは、ニューラルネットワークの構造及び各ノード間の重みと定義できる。以下、ニューラルネットワーク（ＮＮ）の構造及びパラメータと表現する。この個体の生成は初期段階においては、入力と出力のノード数を設定した初期ネットワークを基に、ランダムに個体を生成する。
【００３３】
通常１００個程度の個体が用意され、これらの個体についてゲームの試行が行われる。用意する個体の個数は任意であり、時間、システム負荷、計算効率等様々な要因を考慮して適宜決定され得る。強化学習では、これらの複数の個体を同時に評価しながら進めていくが、ニューロエボリューションでは、局所解に陥ることがないよう、探索範囲を一定範囲で確保することが重要であるため、当該複数の個体を複数の種族（以下、グループと呼ぶ）として分割することを行い、同じ種族内でのみ遺伝的アルゴリズムによる淘汰がなされ、種族間でこれを行わないようにする（Ｎｉｔｃｈｉｎｇと呼ばれる）。
【００３４】
この種族分けの方法として、ＮＥＡＴの手法に基づき、ある１個体と残りの個体とを全て比較し、類似度（ニューラルネットワークのノード数やエッジ数により算出され、距離ともいう）が閾値以下となる個体を同じグループ（種族）とし、グループ（種族）に入らなかった個体を対象に同様の手順を繰り返すことで、種族分けを行う。その結果、全ての個体がいずれかのグループ（種族）に属することとなる。例えば、３つの種族に分割する場合には、類似度が上記閾値より上の個体を更に２つに分割することが必要であるため、そのための閾値を別途設け、類似度がこの閾値以下の個体を２番目のグループ（種族）とし、類似度が当該閾値よりも上の個体を３番目のグループ（種族）とする。この閾値は低ければ低い程より多くのグループ（種族）に分割され、局所解に陥ることを回避できるものの、これを過度に低くすると個体数が１のグループ（種族）が大量に生成されることとなる。
【００３５】
以下、一実施形態として、複数の味方キャラクタと敵キャラクタとが対戦するコマンドバトルゲームを例に説明する。本実施形態のゲームでは、味方キャラクタ及び敵キャラクタは行動ゲージを持っており、時間の経過と共に行動ゲージが上昇する。そして行動ゲージが満タンになったキャラクタは行動可能状態となる。プレイヤは行動可能状態となった味方キャラクタに対して、コマンドを選択することによりゲームが進行する。また、行動可能状態となった敵キャラクタにおいては、ゲームプログラムに設定された所定条件（例えば、ランダム）に従ってコマンドが決定される。個体を用いたゲームの試行においては、ある時間におけるゲームの状態をパラメータ化して入力値として個体に入力し、個体からの出力値に応じてコマンドを選択することでゲームを進行させる。なお、前述したが、ゲームにおける敵・味方キャラクタ（これらを総称してゲームキャラクタと呼ぶ）の各種ステータス、行動可能なゲームキャラクタ、行動可能な技、直近行動したゲームキャラクタのフラグ、直近行動したゲームキャラクタの技などをゲームパラメータと定義する。
【００３６】
次に、この入力値の例をより具体的に説明する。ニューラルネットワーク（個体）への入力値として、例えば、ある時間（いずれかのゲームキャラクタが行動可能となった時間）における（１）ゲームキャラクタ全員のコマンド選択可能フラグと、（２）ゲームキャラクタ全員のステータス変化率とを入力する。前者の（１）ゲームキャラクタ全員のコマンド選択可能フラグは、全ゲームキャラクタ（味方キャラクタ及び敵キャラクタ）の各コマンドについての使用可能フラグ（０又は１）を意味する。
【００３７】
本実施形態のゲームでは、味方キャラクタ１、味方キャラクタ２、味方キャラクタ３、味方キャラクタ４、敵キャラクタがおり、それぞれのキャラクタに５つのコマンド（攻撃、防御、スキル１、スキル２、必殺技）が設定されている。ある時間において、味方キャラクタ１のみが行動可能であり、且つ味方キャラクタ１は攻撃、防御、スキル１、スキル２が選択可能である場合、
味方キャラクタ１_攻撃：１
味方キャラクタ１_防御：１
味方キャラクタ１_スキル１：１
味方キャラクタ１_スキル２：１
味方キャラクタ１_必殺技：０
味方キャラクタ２_攻撃：０
味方キャラクタ２_防御：０
味方キャラクタ２_スキル１：０
味方キャラクタ２_スキル２：０
味方キャラクタ２_必殺技：０
・・・（略）・・・
敵キャラクタ_必殺技：０
といった２５個（５つのゲームキャラクタがそれぞれ５つのコマンドを有しているため）の入力となる。
【００３８】
その際、過去に選択したコマンドを考慮して入力値を調整することで、同じコマンドが連続して選択されにくくなるよう調整可能である。例えば、ゲームキャラクタ毎に過去に選択したコマンドを記憶しておき、１つ前の行動の際に選択したコマンドに０．１を乗じる。さらに、２つ前の行動の際に選択したコマンドには０．２を、３つ前の行動の際に選択したコマンドには０．３を乗じる。過去３回において味方キャラクタ１が選択したコマンドが、古い方からスキル１、スキル２、攻撃であった場合、入力値を
味方キャラクタ１_攻撃：０．１
味方キャラクタ１_防御：１
味方キャラクタ１_スキル１：０．３
味方キャラクタ１_スキル２：０．２
味方キャラクタ１_必殺技：０
とする。
【００３９】
次に、後者の（２）ゲームキャラクタ全員のステータス変化率は、全ゲームキャラクタ（味方キャラクタ及び敵キャラクタ）の各種パラメータ（ＨＰ、攻撃力、防御力、魔法攻撃力、魔法防御力）の初期値からの変動率である。ＨＰ以外のパラメータは、バフ・デバフ状態をＡＩに認識しやすくさせるための工夫として初期値を０としている。また、ＨＰは初期値の５０％が０となるように設定している（範囲は−０．５から０．５）。例えば、ＨＰが満タン（初期値）で、攻撃力が２倍の状態のゲームキャラクタは、
ＨＰ：０．５
攻撃力：１
防御力：０
魔法攻撃力：０
魔法防御力：０
となる。これにより、ニューラルネットワークの学習の効率を高めることができる。
【００４０】
また、前述のゲームパラメータの「直近行動したゲームキャラクタのフラグ」をさらに入力することもできる。ゲームＦＲＫでのゲームバトルにおいて、一定時間継続する「バフ・デバフ」効果があり、一定間隔を置いてバフをかけ続けるという行動が望ましいが、こうした入力を行うことで、バフを連続でかけ続けるという行動に収束することを回避できる。ここで、「バフ」とは、プレイヤキャラクタの能力値を向上させるアクションのことであり、例えば、ゲームキャラクタの攻撃力を２倍にする呪文などがこれに該当する。「デバフ」はその逆を意味する。入力値として、ゲームパラメータの「直近行動したゲームキャラクタのフラグ」をさらに入力することで、後述出力値として「バフ」、「しばらく別のアクション」、「（最初のバフが切れるタイミングで）再バフ」という行動を選択することが確認できた。なお、ステータス値の入力として、ゲーム内の値をそのまま入れず正規化処理を行うことができる。例えば、バフやデバフされるステータスの初期値を０とし変化の割合を入力とする方法である。これは、バフ・デバフ状態をＡＩが認識しやすくするためである。また、別の例として、ＨＰは５０％の値を０とし、差分を入力する。これは、ＨＰが一定割合を下回ると行動を変える敵キャラクタがいたり、プレイヤ心理として５０％下回ると回復行動を取ることが多くなるからである。
【００４１】
次に、出力値の例をより具体的に説明する。ニューラルネットワーク（個体）から全味方キャラクタの全コマンドそれぞれについて数値が出力値として抽出される。４つの味方キャラクタが各５つのコマンドを有している場合には、２０ノードとなる。各ゲームキャラクタにおいて、一番数値が大きいノードに対応するコマンドが選択される。これによって、ある時間における行動可能なキャラクタのコマンドが決定される。
例えば、味方キャラクタ１における出力値が、
味方キャラクタ１_攻撃：０．８
味方キャラクタ１_防御：０．５
味方キャラクタ１_スキル１：０．４
味方キャラクタ１_スキル２：０．１
味方キャラクタ１_必殺技：０
である場合、一番出力値が大きい「攻撃」が選択されることとなる。なお、全てのコマンドの出力値が０である場合は、そもそもその時には行動できないゲームキャラクタであることを意味する。
【００４２】
ゲームバトルにおいては、この入力と出力を繰り返すことで、ゲームキャラクタの各行動を決定していく。通常は複数のゲームキャラクタの複数の行動が組み合わされてゲームバトルが進行してゆき、バトルが終了するまで継続することとなる。バトルの終了は、通常、例えば、敵ゲームキャラクタのＨＰが０となったり、味方ゲームキャラクタ全員のＨＰが０となる場合を意図しているが、ゲームバトルの評価が可能なその他の場合であっても構わない。
【００４３】
上述のゲームバトルの終了までに、通常複数のゲームキャラクタがそれぞれ複数の行動を選択することとなる。ニューラルネットワーク（個体）の評価は、各行動の出力値の組み合わせについて行う。通常は、バトルが終了するまでの各行動の出力値の組み合わせについて行うこととなる。その評価は、下記４つのパラメータに基づき算出する。なお、下記パラメータは、例えば、同じニューラルネットワーク（個体）を用いてゲームバトルを３回行った平均を使用するが、その他の方法であっても構わない。
（１）ゲームバトル終了までの味方キャラクタの行動回数（ability_count）
（２）ゲームバトル終了時における敵ゲームキャラクタの残りＨＰ（boss_hp_sum）
（３）ゲームバトル終了までに味方ゲームキャラクタが受けたダメージ（damage_ratio）
（４）ゲームバトル終了までに味方ゲームキャラクタが死亡した回数（dead_count）
これらのパラメータに基づき、その評価値の計算方法として、下記のような設定を行うことができる。この設定は適宜変更可能である。下記例では、コードの「sum」がその評価値に該当し、最大評価値は０となっている。
return sum((-1.0 * ability_count / max_ability_count,  -1.0 * boss_hp_sum / boss_max_hp_sum * 2,  -1.0 * damage_ratio * 2,  (-1.0 * dead_count / max_dead_count) * 4))
なお、max値は適宜設定することが可能であり、各パラメータはその比率を取っている。また、死亡回数は、最も重要なパラメータであるため４倍の重み付けがなされている。
【００４４】
このようにして、各世代で各ニューラルネットワークの構造やパラメータの評価値を算出し、これをＮＥＡＴの遺伝的アルゴリズムに従い、進化する方向でニューラルネットワーク（個体）を更新していく。世代数は、１００世代であっても、その他であってもよい。次世代に移行する際に、個体を進化させる方法は、詳述しないが、複数のニューラルネットワーク（個体）の上位の個体、例えば、評価値が上から１０番以内の個体同士を掛け合わせることで、次世代となる新たな個体を生成するようにしてもよい。当該ニューラルネットワーク（個体）の更新方法は、適宜設定可能であり、何ら限定を付することを意図していない。また、複数のニューラルネットワーク（個体）が複数のグループ（種族）に分割される場合には、各世代における複数のグループ（種族）に属するニューラルネットワーク（個体）の評価値の平均値を算出し、これを各世代の各グループの評価値とする。場合によっては、各世代における複数のグループ（種族）に属するニューラルネットワーク（個体）の最大評価値を使用することもある。
【００４５】
次に、複数のニューラルネットワーク（個体）が複数のグループ（種族）に分割される場合の各グループ間の関係について説明する。次世代に移行する際に、次のようにして各グループ（種族）の比率を変更する。まず、当該世代における全グループ（種族）の評価値から全体平均値を算出する。そして、各グループ（種族）の評価値と全体平均値とを比較し、全体平均値より高い評価値のグループ（種族）はその割合を増やし、全体平均値より低い評価値のグループは種族はその割合を減らす。その際、全体の個体数が一定となるように、各種族の個体数を調整する。当該割合の増減は、例えば、通常±１０％程度とするが、これに限られず、適宜設定することができる。
【００４６】
複数のニューラルネットワーク（個体）が複数のグループ（種族）に分割される場合の各グループ間の関係について、例外的な取り扱い手法があり、ＮＥＡＴではこれをＳｔａｇｎａｔｉｏｎと呼ぶ。これは、各グループ（種族）における平均評価値がＸ世代連続で改善されない場合、そのグループ（種族）を取り除くというものである。このＳｔａｇｎａｔｉｏｎの基本的考え方は、一実施形態においても共通であるが、本実施形態のゲームのようにゲームパラメータが刻々と変化するようなゲームにこれをそのまま取り入れると、５００世代程度を繰り返しても、グループ（種族）の平均評価値が全く改善されないという問題があることが確認された。図４は、それを示すものであり、横軸に世代を、縦軸に評価値（適合度）を示し、グループ（種族）の平均評価値と最大評価値をそれぞれプロットしたものである。図示のように、グループ（種族）の最大評価値は、ランダムに上下し、グループ（種族）の平均評価値も４００ないし５００世代を経過しても全く改善を見せていない。これは、本実施形態のゲームが、ランダム性の強いゲームであることから、グループ（種族）の評価値が振動する傾向が高いため、当該Ｓｔａｇｎａｔｉｏｎの条件を満たさず、グループ（種族）の淘汰が事実上全くなされないということに起因するものと考えられる。
【００４７】
このような問題に鑑み、一実施形態において、ＮＥＡＴにおけるＳｔａｇｎａｔｉｏｎの条件に修正を加えた。具体的には、グループ（種族）における平均評価値がＸ世代連続で改善されないとするのではなく、例えば、複数のグループの各グループにおける複数のニューラルネットワーク（ＮＮ）の評価値の中で最大の評価値が、所定の世代（１５世代など）の間高くなるよう更新されないという条件とした。また、複数のグループの各グループにおける複数のニューラルネットワーク（ＮＮ）の評価値の平均値が、所定の世代の間高くなるよう更新されないという条件としてもよい。このような条件変更を行うことで、図５に示すように、優秀な種族であって、評価値に一定の改善が見られない場合に、リセットを行うことが可能となることが確認された。図４と同様に、図５は横軸に世代を、縦軸に評価値（適合度）を示し、グループ（種族）の平均評価値と最大評価値をそれぞれプロットしたものである。図示のように、グループ（種族）の最大評価値、平均評価値ともに上昇した後、優秀なグループ（種族）が支配的となるが、評価値が一定程度の改善を達成できなくなり、全く別のグループ（種族）が形成され、これらを繰り返す様子が示されている。本実施形態のゲームのような、グループ（種族）の評価値が振動する傾向が高いランダム性の強いゲームであっても、当該Ｓｔａｇｎａｔｉｏｎの条件を修正することで、グループ（種族）の淘汰を発生させることができることが確認された。
【００４８】
しかしながら、１２０世代程度で最も優秀なグループ（種族）がリセットされ、以降１つのグループ（種族）が全体を占有し、これが数十世代継続した後他のグループ（種族）と入れ替わるのみで、評価値の全体の改善がみられないという別の問題が確認された。そこで、一実施形態において、当該Ｓｔａｇｎａｔｉｏｎの条件だけでなく、その効果の修正を行った。具体的には、複数のグループの各グループにおける複数のニューラルネットワーク（ＮＮ）の評価値の中で最大の評価値が、所定の世代（１５世代など）の間高くなるよう更新されない場合、そのグループのニューラルネットワーク（ＮＮ）の数を１０％よりも大きい割合（例えば、５０％程度）で減少させるように修正を加えた。図６に、条件を満たしたグループのニューラルネットワーク（ＮＮ）の数を５０％程度減少させた場合の結果を示す。図４、５と同様、図６も横軸に世代を、縦軸に評価値（適合度）を示し、グループ（種族）の平均評価値と最大評価値をそれぞれプロットしたものである。このように、Ｓｔａｇｎａｔｉｏｎの条件及びその効果を修正することでＳｔａｇｎａｔｉｏｎを繰り返しながらも、グループ（種族）の評価値の平均が着実に改善され、最大評価値も劣化することなく向上していくことが確認された。これは、評価値が更新されないグループ（種族）が段階的に淘汰されながら、別のグループ（種族）が新たに生まれ、グループ（種族）の多様性が確保されながら、全体としてニューラルネットワーク（個体）が進化していることを示しているものと考えられる。
【００４９】
このようにすることで、ゲームのバトルなどゲームパラメータが刻々と変化するようなゲームにおいても、ニューラルネットワークの構造及びパラメータを遺伝的アルゴリズムを用いて強化学習させ、ニューラルネットワークの構造及びパラメータを更新していくことで、敵キャラクタや味方キャラクタのより適切な行動を決定することが可能となり、ゲームの進行を飽きることなくより自然に楽しめ、ゲーム全体への魅力を高めることが可能となる。
【００５０】
以上、サーバ１０が有する機能について説明した。次に、一実施形態における端末装置３０が有する機能について説明する。端末装置３０は、図２に示すように、様々な情報を記憶する情報記憶部５１と、一実施形態における画像情報を端末側で表示させるための制御を実行する端末側制御部５２と、を有する。これらの機能は、ＣＰＵ３１及びメインメモリ３２等のハードウェア、並びに、ストレージ３５に記憶されている各種プログラムやテーブル等が協働して動作することによって実現され、例えば、ロードしたプログラムに含まれる命令をＣＰＵ３１が実行することによって実現される。また、図２に例示した端末装置３０が有する機能の一部又は全部は、サーバ１０と端末装置３０とが協働することによって実現され、又は、サーバ１０によって実現され得る。
【００５１】
一実施形態における情報記憶部５１は、メインメモリ３２又はストレージ３５等によって実現される。一実施形態における端末側制御部５２は、ユーザキャラクタによる行動の選択や受信したゲーム画面情報の表示などの様々な端末側の処理の実行を制御する。例えば、端末側制御部５２は、ユーザがユーザキャラクタのある行動を選択すると、これをサーバ１０へ送信したり、味方キャラクタや敵キャラクタの行動の結果ゲームパラメータが変化すると、これらの行動の動作や変更後のゲームパラメータをサーバ１０から受信し表示させたりすることができる。
【００５２】
本明細書で説明された処理及び手順は、実施形態中で明示的に説明されたもの以外にも、ソフトウェア、ハードウェアまたはこれらの任意の組み合わせによって実現される。より具体的には、本明細書で説明される処理及び手順は、集積回路、揮発性メモリ、不揮発性メモリ、磁気ディスク、光ストレージ等の媒体に、当該処理に相当するロジックを実装することによって実現される。また、本明細書で説明される処理及び手順は、それらの処理・手順をコンピュータプログラムとして実装し、各種のコンピュータに実行させることが可能である。
【００５３】
本明細書中で説明される処理及び手順が単一の装置、ソフトウェア、コンポーネント、モジュールによって実行される旨が説明されたとしても、そのような処理または手順は複数の装置、複数のソフトウェア、複数のコンポーネント、及び／又は複数のモジュールによって実行され得る。また、本明細書中で説明されるデータ、テーブル、又はデータベースが単一のメモリに格納される旨説明されたとしても、そのようなデータ、テーブル、又はデータベースは、単一の装置に備えられた複数のメモリまたは複数の装置に分散して配置された複数のメモリに分散して格納され得る。さらに、本明細書において説明されるソフトウェアおよびハードウェアの要素は、それらをより少ない構成要素に統合して、またはより多い構成要素に分解することによって実現することも可能である。
【００５４】
本明細書において、発明の構成要素が単数もしくは複数のいずれか一方として説明された場合、又は、単数もしくは複数のいずれとも限定せずに説明された場合であっても、文脈上別に解すべき場合を除き、当該構成要素は単数又は複数のいずれであってもよい。
【符号の説明】
【００５５】
１０  サーバ
２０  通信網
３０  端末装置
４１  情報記憶部
４２  キャラクタ行動制御部
５１  情報記憶部
５２  端末側制御部
【図１】
2018029860.tif 000003
【図２】
2018029860.tif 000004
【図３】
2018029860.tif 000005
【図４】
2018029860.tif 000006
【図５】
2018029860.tif 000007
【図６】
2018029860.tif 000008