【文献】
半田 久志 Hisashi Handa,Mario AIにおけるDeep Boltzmann Machineを併用した進化学習 Evolutionary Learning with Deep Boltzmann Machine for Mario AI Championships,電気学会論文誌C Vol.134 No.11 IEEJ,日本,一般社団法人電気学会 The Institute of Electrical Engineers of Japan,第134巻,PP.1738-1745
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0012】
図1は、本発明の一実施形態に係るシステム1の構成を概略的に示す構成図である。一実施形態におけるシステム1は、図示するように、サーバ10と、このサーバ10とインターネット等の通信網20を介して接続された複数の端末装置30と、を備え、端末装置30のユーザに対して電子商取引サービスを提供する。また、一実施形態におけるシステム1は、キャラクタを用いたゲームや電子書籍、動画コンテンツ、及び音楽コンテンツ等のゲーム以外の様々なデジタルコンテンツの提供サービス、並びに、テキストチャット(ミニメール)、サークル、アバター、日記、伝言板、及び挨拶等の様々なユーザ間のコミュニケーション機能を実現するコミュニケーションプラットフォーム(SNSプラットフォーム)サービス等の様々なインターネットサービスを、端末装置30のユーザに対して提供し得る。
【0013】
一実施形態におけるサーバ10は、一般的なコンピュータとして構成されており、図示のとおり、CPU(コンピュータプロセッサ)11と、メインメモリ12と、ユーザI/F13と、通信I/F14と、ストレージ(記憶装置)15と、を含み、これらの各構成要素がバス17を介して互いに電気的に接続されている。CPU11は、ストレージ15からオペレーティングシステムやその他様々なプログラムをメインメモリ12にロードし、このロードしたプログラムに含まれる命令を実行する。メインメモリ12は、CPU11が実行するプログラムを格納するために用いられ、例えば、DRAM等によって構成される。なお、一実施形態におけるサーバ10は、それぞれ上述したようなハードウェア構成を有する複数のコンピュータを用いて構成され得る。なお、上述したCPU(コンピュータプロセッサ)11は一例であり、これに代えて、GPU(グラフィックス・プロセッシング・ユニット)を用いるものであってもよいことは言うまでもない。CPU及び/又はGPUをどのように選択するかは、所望のコストないし効率などを勘案した上で適宜決定することが可能である。以下、CPU11を例として説明する。
【0014】
ユーザI/F13は、例えば、オペレータの入力を受け付けるキーボードやマウス等の情報入力装置と、CPU11の演算結果を出力する液晶ディスプレイ等の情報出力装置とを含む。通信I/F14は、ハードウェア、ファームウェア、又はTCP/IPドライバやPPPドライバ等の通信用ソフトウェア又はこれらの組み合わせとして実装され、通信網20を介して端末装置30と通信可能に構成される。
【0015】
ストレージ15は、例えば磁気ディスクドライブで構成され、各種サービスを提供するための制御用プログラム等の様々なプログラムが記憶される。また、ストレージ15には、各種サービスを提供するための各種データも記憶され得る。ストレージ15に記憶され得る各種データは、サーバ10と通信可能に接続されるサーバ10とは物理的に別体のデータベースサーバ等に格納されてもよい。
【0016】
一実施形態において、サーバ10は、階層構造の複数のウェブページから成るウェブサイトを管理するウェブサーバとしても機能し、こうしたウェブサイトを介して各種サービスを端末装置30のユーザに対して提供し得る。ストレージ15には、このウェブページに対応するHTMLデータも記憶され得る。HTMLデータは、様々な画像データが関連付けられ、又、JavaScript(登録商標)等のスクリプト言語等で記述された様々なプログラムが埋め込まれ得る。
【0017】
また、一実施形態において、サーバ10は、端末装置30においてウェブブラウザ以外の実行環境上で実行されるアプリケーション(プログラム)を介して各種サービスを提供し得る。ストレージ15には、こうしたアプリケーションも記憶され得る。このアプリケーションは、例えば、Objective−CやJava(登録商標)等のプログラミング言語を用いて作成される。ストレージ15に記憶されたアプリケーションは、配信要求に応じて端末装置30に配信される。なお、端末装置30は、こうしたアプリケーションを、サーバ10以外の他のサーバ(アプリマーケットを提供するサーバ)等からダウンロードすることもできる。
【0018】
このように、サーバ10は、各種サービスを提供するためのウェブサイトを管理し、当該ウェブサイトを構成するウェブページ(HTMLデータ)を端末装置30からの要求に応答して配信することができる。また、上述したように、サーバ10は、このようなウェブページ(ウェブブラウザ)を用いた各種サービスの提供とは代替的に、又は、これに加えて、端末装置30において実行されるアプリケーションとの通信に基づいて各種サービスを提供することができる。いずれの態様で当該サービスを提供するにしても、サーバ10は、各種サービスの提供に必要な各種データ(画面表示に必要なデータを含む)を端末装置30との間で送受信することができる。また、サーバ10は、各ユーザを識別する識別情報(例えば、ユーザID)毎に各種データを記憶し、ユーザ毎に各種サービスの提供状況を管理することができる。詳細な説明は省略するが、サーバ10は、ユーザの認証処理や課金処理等を行う機能を有することもできる。
【0019】
一実施形態における端末装置30は、サーバ10が提供するウェブサイトのウェブページをウェブブラウザ上で表示すると共にアプリケーションを実行するための実行環境を実装した任意の情報処理装置であり、スマートフォン、タブレット端末、ウェアラブルデバイス、パーソナルコンピュータ、及びゲーム専用端末等が含まれ得るが、これらに限定されるものではない。
【0020】
端末装置30は、一般的なコンピュータとして構成され、
図1に示すとおり、CPU(コンピュータプロセッサ)31と、メインメモリ32と、ユーザI/F33と、通信I/F34と、ストレージ(記憶装置)35と、を含み、これらの各構成要素がバス37を介して互いに電気的に接続されている。
【0021】
CPU31は、ストレージ35からオペレーティングシステムやその他様々なプログラムをメインメモリ32にロードし、このロードしたプログラムに含まれる命令を実行する。メインメモリ32は、CPU31が実行するプログラムを格納するために用いられ、例えば、DRAM等によって構成される。
【0022】
ユーザI/F33は、例えば、ユーザの入力を受け付けるタッチパネル、キーボード、ボタン及びマウス等の情報入力装置と、CPU31の演算結果を出力する液晶ディスプレイ等の情報表示装置とを含む。通信I/F34は、ハードウェア、ファームウェア、又は、TCP/IPドライバやPPPドライバ等の通信用ソフトウェア又はこれらの組み合わせとして実装され、通信網20を介してサーバ10と通信可能に構成される。
【0023】
ストレージ35は、例えば磁気ディスクドライブやフラッシュメモリ等により構成され、オペレーティングシステム等の様々なプログラムが記憶される。また、ストレージ35は、サーバ10から受信した様々なアプリケーションが記憶され得る。
【0024】
端末装置30は、例えば、HTML形式のファイル(HTMLデータ)を解釈して画面表示するためのウェブブラウザを備えており、このウェブブラウザの機能によりサーバ10から取得したHTMLデータを解釈して、受信したHTMLデータに対応するウェブページを表示することができる。また、端末装置30のウェブブラウザには、HTMLデータに関連付けられた様々な形式のファイルを実行可能なプラグインソフトが組み込まれ得る。
【0025】
端末装置30のユーザがサーバ10によって提供されるサービスを利用する際には、例えば、HTMLデータやアプリケーションによって指示されたアニメーションや操作用アイコン等が端末装置30に画面表示される。ユーザは、端末装置30のタッチパネル等を用いて各種指示を入力することができる。ユーザから入力された指示は、端末装置30のウェブブラウザやNgCore(商標)等のアプリケーション実行環境の機能を介してサーバ10に伝達される。
【0026】
次に、このように構成された一実施形態におけるシステム1が有する機能について説明する。上述したように、一実施形態におけるシステム1は、ユーザに対して様々なインターネットサービスを提供し得るが、特に、ゲーム配信サービスを提供することが可能である。以降、一実施形態におけるシステム1の機能について、ゲーム配信サービスを提供する機能を例として説明する。
【0027】
図2は、システム1(サーバ10及び端末装置30)が有する機能を概略的に示すブロック図である。まず、一実施形態におけるサーバ10が有する機能について説明する。サーバ10は、図示するように、様々な情報を記憶する情報記憶部41と、一実施形態におけるゲームキャラクタの行動を決定するキャラクタ行動制御部42と、を備える。これらの機能は、CPU11及びメインメモリ12等のハードウェア、並びに、ストレージ15に記憶されている各種プログラムやテーブル等が協働して動作することによって実現され、例えば、ロードしたプログラムに含まれる命令をCPU11が実行することによって実現される。また、
図2に例示したサーバ10が有する機能の一部又は全部は、端末装置30によって実現され、又は、サーバ10と端末装置30とが協働することによって実現され得る。
【0028】
一実施形態における情報記憶部41は、ストレージ15等によって実現され、
図2に示すように、ゲームにおける敵・味方キャラクタ(これらを総称してゲームキャラクタと呼ぶ)の各種ステータス、行動可能なキャラクタ、行動可能な技、直近行動したキャラクタのフラグ、直近行動したキャラクタの技などのゲームパラメータを管理するゲームパラメータ管理テーブル41aと、当該ゲームパラメータに基づき各行動が選択された場合の評価値を管理する行動評価値管理テーブル41bと、を有する。
【0029】
次に、一実施形態におけるゲームキャラクタの行動を決定するキャラクタ行動制御部42の機能について説明する。キャラクタ行動制御部42は、情報記憶部41のゲームパラメータ管理テーブル41aに格納されている敵・味方キャラクタの各種ステータス、行動可能なキャラクタ、行動可能な技、直近行動したキャラクタのフラグ、直近行動したキャラクタの技などのゲームパラメータに基づき各ゲームキャラクタの行動を選択・決定していく。より具体的には、キャラクタ行動制御部42は、ゲームパラメータ管理テーブル41aのゲームパラメータを抽出し、これを入力値として1又は複数層のニューラルネットワークに入力し、出力として行動可能なキャラクタの行動及びこれに対応する出力値を抽出し、これらの中から出力値の最も高い行動を決定する。キャラクタ行動制御部42は、このようにして例えば、1つバトルが終了するまでの間の味方キャラクタの各行動の組み合わせを抽出できる。なお、この例では、1バトルが終了するまでの味方キャラクタの各行動を出力値として抽出したが、敵キャラクタ、味方キャラクタ又はこれらの一部であってもよい。また、1バトルが終了するまでとしたが、その他評価値を算出可能な状態であればこれに限られない。
【0030】
さらに、キャラクタ行動制御部42は、1つのバトルが終了するまでの味方キャラクタの各行動の組み合わせを抽出すると、以下に詳述する方法にて、当該出力値の組み合わせに対する評価を行い、評価値を算出する。1つのニューラルネットワーク毎に出力値の組み合わせに対する評価値が抽出されるため、複数のニューラルネットワークがあれば、その数に応じた評価値が抽出されることとなる。なお、通常100個程度の個体、すなわち100程度のニューラルネットワークを用意し、その結果100程度の評価値を抽出することとなるが、その数は任意であり適宜決定することができる。また、個体は、コンボリューションネットワーク(CNN)により構成されていてもよい。キャラクタ行動制御部42は、抽出された出力値の組み合わせに対して算出された評価値に基づき、遺伝的アルゴリズムを適用し、より最適な個体が生き残るよう淘汰を行う、すなわち、より最適なニューラルネットワークに更新する。これを、複数世代、例えば、100世代程繰り返すことで、ニューラルネットワークが遺伝的アルゴリズムにより進化していく。どの程度の世代を繰り返すかは、諸条件により適宜変更することが可能である。ここで、キャラクタ行動制御部42は、ニューロエボリューションの1つに分類されるNEATの手法を用いて、ニューラルネットワークの構造とパラメータ(重み付けともいう)の最適化を行う。このようにして、キャラクタ行動制御部42は、基本的にはより評価値の高い出力値の組み合わせを抽出できるニューラルネットワークの構造及びパラメータを生き残らせることとなり、これらの行程を複数世代に亘って繰り返すことで、最適なニューラルネットワークを探索していくこととなる。ここで、既存の遺伝的アルゴリズムやニューロエボリューション、NEATの基本的手法については、詳述しないが、当業者はこれらの手法を適宜一実施形態に係るシステムに適用することができる。
【0031】
図3はこのフローを示したものである。まず、ゲームパラメータ(入力値)の抽出を行い(ステップ110)、これを初期の複数のニューラルネットワークに対して入力を行うことで、各行動の出力値を抽出し(ステップ120)、その中からゲームキャラクタの特定の行動を選択・決定し(ステップ130)、当該行動後のゲームパラメータとなるようゲームパラメータを更新し(ステップ140)、これらのステップを1つゲームバトルが終了するまで繰り返し、ゲームキャラクタの各行動の出力値の組み合わせの評価値を算出し(ステップ150)、評価値に基づき遺伝的アルゴリズムを適用しニューラルネットワーク(個体)の構造及びパラメータを更新する(ステップ160)。これらを複数世代繰り返していくことでニューラルネットワーク(個体)の構造及びパラメータを進化させていく。以下、一実施形態に係る発明における、ゲームキャラクタのより最適な行動を決定するため、ニューロエボリューションを用いたニューラルネットワークの構造及びパラメータの学習を行う方法をより具体的に示す。
【0032】
まず、強化学習の対象となる個体のニューラルネットワークは、1又は複数層のニューラルネットワーク(CNNも含む)構造を備える任意のネットワークであってよい。ここで、個体とは、ニューラルネットワークの構造及び各ノード間の重みと定義できる。以下、ニューラルネットワーク(NN)の構造及びパラメータと表現する。この個体の生成は初期段階においては、入力と出力のノード数を設定した初期ネットワークを基に、ランダムに個体を生成する。
【0033】
通常100個程度の個体が用意され、これらの個体についてゲームの試行が行われる。用意する個体の個数は任意であり、時間、システム負荷、計算効率等様々な要因を考慮して適宜決定され得る。強化学習では、これらの複数の個体を同時に評価しながら進めていくが、ニューロエボリューションでは、局所解に陥ることがないよう、探索範囲を一定範囲で確保することが重要であるため、当該複数の個体を複数の種族(以下、グループと呼ぶ)として分割することを行い、同じ種族内でのみ遺伝的アルゴリズムによる淘汰がなされ、種族間でこれを行わないようにする(Nitchingと呼ばれる)。
【0034】
この種族分けの方法として、NEATの手法に基づき、ある1個体と残りの個体とを全て比較し、類似度(ニューラルネットワークのノード数やエッジ数により算出され、距離ともいう)が閾値以下となる個体を同じグループ(種族)とし、グループ(種族)に入らなかった個体を対象に同様の手順を繰り返すことで、種族分けを行う。その結果、全ての個体がいずれかのグループ(種族)に属することとなる。例えば、3つの種族に分割する場合には、類似度が上記閾値より上の個体を更に2つに分割することが必要であるため、そのための閾値を別途設け、類似度がこの閾値以下の個体を2番目のグループ(種族)とし、類似度が当該閾値よりも上の個体を3番目のグループ(種族)とする。この閾値は低ければ低い程より多くのグループ(種族)に分割され、局所解に陥ることを回避できるものの、これを過度に低くすると個体数が1のグループ(種族)が大量に生成されることとなる。
【0035】
以下、一実施形態として、複数の味方キャラクタと敵キャラクタとが対戦するコマンドバトルゲームを例に説明する。本実施形態のゲームでは、味方キャラクタ及び敵キャラクタは行動ゲージを持っており、時間の経過と共に行動ゲージが上昇する。そして行動ゲージが満タンになったキャラクタは行動可能状態となる。プレイヤは行動可能状態となった味方キャラクタに対して、コマンドを選択することによりゲームが進行する。また、行動可能状態となった敵キャラクタにおいては、ゲームプログラムに設定された所定条件(例えば、ランダム)に従ってコマンドが決定される。個体を用いたゲームの試行においては、ある時間におけるゲームの状態をパラメータ化して入力値として個体に入力し、個体からの出力値に応じてコマンドを選択することでゲームを進行させる。なお、前述したが、ゲームにおける敵・味方キャラクタ(これらを総称してゲームキャラクタと呼ぶ)の各種ステータス、行動可能なゲームキャラクタ、行動可能な技、直近行動したゲームキャラクタのフラグ、直近行動したゲームキャラクタの技などをゲームパラメータと定義する。
【0036】
次に、この入力値の例をより具体的に説明する。ニューラルネットワーク(個体)への入力値として、例えば、ある時間(いずれかのゲームキャラクタが行動可能となった時間)における(1)ゲームキャラクタ全員のコマンド選択可能フラグと、(2)ゲームキャラクタ全員のステータス変化率とを入力する。前者の(1)ゲームキャラクタ全員のコマンド選択可能フラグは、全ゲームキャラクタ(味方キャラクタ及び敵キャラクタ)の各コマンドについての使用可能フラグ(0又は1)を意味する。
【0037】
本実施形態のゲームでは、味方キャラクタ1、味方キャラクタ2、味方キャラクタ3、味方キャラクタ4、敵キャラクタがおり、それぞれのキャラクタに5つのコマンド(攻撃、防御、スキル1、スキル2、必殺技)が設定されている。ある時間において、味方キャラクタ1のみが行動可能であり、且つ味方キャラクタ1は攻撃、防御、スキル1、スキル2が選択可能である場合、
味方キャラクタ1_攻撃:1
味方キャラクタ1_防御:1
味方キャラクタ1_スキル1:1
味方キャラクタ1_スキル2:1
味方キャラクタ1_必殺技:0
味方キャラクタ2_攻撃:0
味方キャラクタ2_防御:0
味方キャラクタ2_スキル1:0
味方キャラクタ2_スキル2:0
味方キャラクタ2_必殺技:0
・・・(略)・・・
敵キャラクタ_必殺技:0
といった25個(5つのゲームキャラクタがそれぞれ5つのコマンドを有しているため)の入力となる。
【0038】
その際、過去に選択したコマンドを考慮して入力値を調整することで、同じコマンドが連続して選択されにくくなるよう調整可能である。例えば、ゲームキャラクタ毎に過去に選択したコマンドを記憶しておき、1つ前の行動の際に選択したコマンドに0.1を乗じる。さらに、2つ前の行動の際に選択したコマンドには0.2を、3つ前の行動の際に選択したコマンドには0.3を乗じる。過去3回において味方キャラクタ1が選択したコマンドが、古い方からスキル1、スキル2、攻撃であった場合、入力値を
味方キャラクタ1_攻撃:0.1
味方キャラクタ1_防御:1
味方キャラクタ1_スキル1:0.3
味方キャラクタ1_スキル2:0.2
味方キャラクタ1_必殺技:0
とする。
【0039】
次に、後者の(2)ゲームキャラクタ全員のステータス変化率は、全ゲームキャラクタ(味方キャラクタ及び敵キャラクタ)の各種パラメータ(HP、攻撃力、防御力、魔法攻撃力、魔法防御力)の初期値からの変動率である。HP以外のパラメータは、バフ・デバフ状態をAIに認識しやすくさせるための工夫として初期値を0としている。また、HPは初期値の50%が0となるように設定している(範囲は−0.5から0.5)。例えば、HPが満タン(初期値)で、攻撃力が2倍の状態のゲームキャラクタは、
HP:0.5
攻撃力:1
防御力:0
魔法攻撃力:0
魔法防御力:0
となる。これにより、ニューラルネットワークの学習の効率を高めることができる。
【0040】
また、前述のゲームパラメータの「直近行動したゲームキャラクタのフラグ」をさらに入力することもできる。ゲームFRKでのゲームバトルにおいて、一定時間継続する「バフ・デバフ」効果があり、一定間隔を置いてバフをかけ続けるという行動が望ましいが、こうした入力を行うことで、バフを連続でかけ続けるという行動に収束することを回避できる。ここで、「バフ」とは、プレイヤキャラクタの能力値を向上させるアクションのことであり、例えば、ゲームキャラクタの攻撃力を2倍にする呪文などがこれに該当する。「デバフ」はその逆を意味する。入力値として、ゲームパラメータの「直近行動したゲームキャラクタのフラグ」をさらに入力することで、後述出力値として「バフ」、「しばらく別のアクション」、「(最初のバフが切れるタイミングで)再バフ」という行動を選択することが確認できた。なお、ステータス値の入力として、ゲーム内の値をそのまま入れず正規化処理を行うことができる。例えば、バフやデバフされるステータスの初期値を0とし変化の割合を入力とする方法である。これは、バフ・デバフ状態をAIが認識しやすくするためである。また、別の例として、HPは50%の値を0とし、差分を入力する。これは、HPが一定割合を下回ると行動を変える敵キャラクタがいたり、プレイヤ心理として50%下回ると回復行動を取ることが多くなるからである。
【0041】
次に、出力値の例をより具体的に説明する。ニューラルネットワーク(個体)から全味方キャラクタの全コマンドそれぞれについて数値が出力値として抽出される。4つの味方キャラクタが各5つのコマンドを有している場合には、20ノードとなる。各ゲームキャラクタにおいて、一番数値が大きいノードに対応するコマンドが選択される。これによって、ある時間における行動可能なキャラクタのコマンドが決定される。
例えば、味方キャラクタ1における出力値が、
味方キャラクタ1_攻撃:0.8
味方キャラクタ1_防御:0.5
味方キャラクタ1_スキル1:0.4
味方キャラクタ1_スキル2:0.1
味方キャラクタ1_必殺技:0
である場合、一番出力値が大きい「攻撃」が選択されることとなる。なお、全てのコマンドの出力値が0である場合は、そもそもその時には行動できないゲームキャラクタであることを意味する。
【0042】
ゲームバトルにおいては、この入力と出力を繰り返すことで、ゲームキャラクタの各行動を決定していく。通常は複数のゲームキャラクタの複数の行動が組み合わされてゲームバトルが進行してゆき、バトルが終了するまで継続することとなる。バトルの終了は、通常、例えば、敵ゲームキャラクタのHPが0となったり、味方ゲームキャラクタ全員のHPが0となる場合を意図しているが、ゲームバトルの評価が可能なその他の場合であっても構わない。
【0043】
上述のゲームバトルの終了までに、通常複数のゲームキャラクタがそれぞれ複数の行動を選択することとなる。ニューラルネットワーク(個体)の評価は、各行動の出力値の組み合わせについて行う。通常は、バトルが終了するまでの各行動の出力値の組み合わせについて行うこととなる。その評価は、下記4つのパラメータに基づき算出する。なお、下記パラメータは、例えば、同じニューラルネットワーク(個体)を用いてゲームバトルを3回行った平均を使用するが、その他の方法であっても構わない。
(1)ゲームバトル終了までの味方キャラクタの行動回数(ability_count)
(2)ゲームバトル終了時における敵ゲームキャラクタの残りHP(boss_hp_sum)
(3)ゲームバトル終了までに味方ゲームキャラクタが受けたダメージ(damage_ratio)
(4)ゲームバトル終了までに味方ゲームキャラクタが死亡した回数(dead_count)
これらのパラメータに基づき、その評価値の計算方法として、下記のような設定を行うことができる。この設定は適宜変更可能である。下記例では、コードの「sum」がその評価値に該当し、最大評価値は0となっている。
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値は適宜設定することが可能であり、各パラメータはその比率を取っている。また、死亡回数は、最も重要なパラメータであるため4倍の重み付けがなされている。
【0044】
このようにして、各世代で各ニューラルネットワークの構造やパラメータの評価値を算出し、これをNEATの遺伝的アルゴリズムに従い、進化する方向でニューラルネットワーク(個体)を更新していく。世代数は、100世代であっても、その他であってもよい。次世代に移行する際に、個体を進化させる方法は、詳述しないが、複数のニューラルネットワーク(個体)の上位の個体、例えば、評価値が上から10番以内の個体同士を掛け合わせることで、次世代となる新たな個体を生成するようにしてもよい。当該ニューラルネットワーク(個体)の更新方法は、適宜設定可能であり、何ら限定を付することを意図していない。また、複数のニューラルネットワーク(個体)が複数のグループ(種族)に分割される場合には、各世代における複数のグループ(種族)に属するニューラルネットワーク(個体)の評価値の平均値を算出し、これを各世代の各グループの評価値とする。場合によっては、各世代における複数のグループ(種族)に属するニューラルネットワーク(個体)の最大評価値を使用することもある。
【0045】
次に、複数のニューラルネットワーク(個体)が複数のグループ(種族)に分割される場合の各グループ間の関係について説明する。次世代に移行する際に、次のようにして各グループ(種族)の比率を変更する。まず、当該世代における全グループ(種族)の評価値から全体平均値を算出する。そして、各グループ(種族)の評価値と全体平均値とを比較し、全体平均値より高い評価値のグループ(種族)はその割合を増やし、全体平均値より低い評価値のグループは種族はその割合を減らす。その際、全体の個体数が一定となるように、各種族の個体数を調整する。当該割合の増減は、例えば、通常±10%程度とするが、これに限られず、適宜設定することができる。
【0046】
複数のニューラルネットワーク(個体)が複数のグループ(種族)に分割される場合の各グループ間の関係について、例外的な取り扱い手法があり、NEATではこれをStagnationと呼ぶ。これは、各グループ(種族)における平均評価値がX世代連続で改善されない場合、そのグループ(種族)を取り除くというものである。このStagnationの基本的考え方は、一実施形態においても共通であるが、本実施形態のゲームのようにゲームパラメータが刻々と変化するようなゲームにこれをそのまま取り入れると、500世代程度を繰り返しても、グループ(種族)の平均評価値が全く改善されないという問題があることが確認された。
図4は、それを示すものであり、横軸に世代を、縦軸に評価値(適合度)を示し、グループ(種族)の平均評価値と最大評価値をそれぞれプロットしたものである。図示のように、グループ(種族)の最大評価値は、ランダムに上下し、グループ(種族)の平均評価値も400ないし500世代を経過しても全く改善を見せていない。これは、本実施形態のゲームが、ランダム性の強いゲームであることから、グループ(種族)の評価値が振動する傾向が高いため、当該Stagnationの条件を満たさず、グループ(種族)の淘汰が事実上全くなされないということに起因するものと考えられる。
【0047】
このような問題に鑑み、一実施形態において、NEATにおけるStagnationの条件に修正を加えた。具体的には、グループ(種族)における平均評価値がX世代連続で改善されないとするのではなく、例えば、複数のグループの各グループにおける複数のニューラルネットワーク(NN)の評価値の中で最大の評価値が、所定の世代(15世代など)の間高くなるよう更新されないという条件とした。また、複数のグループの各グループにおける複数のニューラルネットワーク(NN)の評価値の平均値が、所定の世代の間高くなるよう更新されないという条件としてもよい。このような条件変更を行うことで、
図5に示すように、優秀な種族であって、評価値に一定の改善が見られない場合に、リセットを行うことが可能となることが確認された。
図4と同様に、
図5は横軸に世代を、縦軸に評価値(適合度)を示し、グループ(種族)の平均評価値と最大評価値をそれぞれプロットしたものである。図示のように、グループ(種族)の最大評価値、平均評価値ともに上昇した後、優秀なグループ(種族)が支配的となるが、評価値が一定程度の改善を達成できなくなり、全く別のグループ(種族)が形成され、これらを繰り返す様子が示されている。本実施形態のゲームのような、グループ(種族)の評価値が振動する傾向が高いランダム性の強いゲームであっても、当該Stagnationの条件を修正することで、グループ(種族)の淘汰を発生させることができることが確認された。
【0048】
しかしながら、120世代程度で最も優秀なグループ(種族)がリセットされ、以降1つのグループ(種族)が全体を占有し、これが数十世代継続した後他のグループ(種族)と入れ替わるのみで、評価値の全体の改善がみられないという別の問題が確認された。そこで、一実施形態において、当該Stagnationの条件だけでなく、その効果の修正を行った。具体的には、複数のグループの各グループにおける複数のニューラルネットワーク(NN)の評価値の中で最大の評価値が、所定の世代(15世代など)の間高くなるよう更新されない場合、そのグループのニューラルネットワーク(NN)の数を10%よりも大きい割合(例えば、50%程度)で減少させるように修正を加えた。
図6に、条件を満たしたグループのニューラルネットワーク(NN)の数を50%程度減少させた場合の結果を示す。
図4、5と同様、
図6も横軸に世代を、縦軸に評価値(適合度)を示し、グループ(種族)の平均評価値と最大評価値をそれぞれプロットしたものである。このように、Stagnationの条件及びその効果を修正することでStagnationを繰り返しながらも、グループ(種族)の評価値の平均が着実に改善され、最大評価値も劣化することなく向上していくことが確認された。これは、評価値が更新されないグループ(種族)が段階的に淘汰されながら、別のグループ(種族)が新たに生まれ、グループ(種族)の多様性が確保されながら、全体としてニューラルネットワーク(個体)が進化していることを示しているものと考えられる。
【0049】
このようにすることで、ゲームのバトルなどゲームパラメータが刻々と変化するようなゲームにおいても、ニューラルネットワークの構造及びパラメータを遺伝的アルゴリズムを用いて強化学習させ、ニューラルネットワークの構造及びパラメータを更新していくことで、敵キャラクタや味方キャラクタのより適切な行動を決定することが可能となり、ゲームの進行を飽きることなくより自然に楽しめ、ゲーム全体への魅力を高めることが可能となる。
【0050】
以上、サーバ10が有する機能について説明した。次に、一実施形態における端末装置30が有する機能について説明する。端末装置30は、
図2に示すように、様々な情報を記憶する情報記憶部51と、一実施形態における画像情報を端末側で表示させるための制御を実行する端末側制御部52と、を有する。これらの機能は、CPU31及びメインメモリ32等のハードウェア、並びに、ストレージ35に記憶されている各種プログラムやテーブル等が協働して動作することによって実現され、例えば、ロードしたプログラムに含まれる命令をCPU31が実行することによって実現される。また、
図2に例示した端末装置30が有する機能の一部又は全部は、サーバ10と端末装置30とが協働することによって実現され、又は、サーバ10によって実現され得る。
【0051】
一実施形態における情報記憶部51は、メインメモリ32又はストレージ35等によって実現される。一実施形態における端末側制御部52は、ユーザキャラクタによる行動の選択や受信したゲーム画面情報の表示などの様々な端末側の処理の実行を制御する。例えば、端末側制御部52は、ユーザがユーザキャラクタのある行動を選択すると、これをサーバ10へ送信したり、味方キャラクタや敵キャラクタの行動の結果ゲームパラメータが変化すると、これらの行動の動作や変更後のゲームパラメータをサーバ10から受信し表示させたりすることができる。
【0052】
本明細書で説明された処理及び手順は、実施形態中で明示的に説明されたもの以外にも、ソフトウェア、ハードウェアまたはこれらの任意の組み合わせによって実現される。より具体的には、本明細書で説明される処理及び手順は、集積回路、揮発性メモリ、不揮発性メモリ、磁気ディスク、光ストレージ等の媒体に、当該処理に相当するロジックを実装することによって実現される。また、本明細書で説明される処理及び手順は、それらの処理・手順をコンピュータプログラムとして実装し、各種のコンピュータに実行させることが可能である。
【0053】
本明細書中で説明される処理及び手順が単一の装置、ソフトウェア、コンポーネント、モジュールによって実行される旨が説明されたとしても、そのような処理または手順は複数の装置、複数のソフトウェア、複数のコンポーネント、及び/又は複数のモジュールによって実行され得る。また、本明細書中で説明されるデータ、テーブル、又はデータベースが単一のメモリに格納される旨説明されたとしても、そのようなデータ、テーブル、又はデータベースは、単一の装置に備えられた複数のメモリまたは複数の装置に分散して配置された複数のメモリに分散して格納され得る。さらに、本明細書において説明されるソフトウェアおよびハードウェアの要素は、それらをより少ない構成要素に統合して、またはより多い構成要素に分解することによって実現することも可能である。
【0054】
本明細書において、発明の構成要素が単数もしくは複数のいずれか一方として説明された場合、又は、単数もしくは複数のいずれとも限定せずに説明された場合であっても、文脈上別に解すべき場合を除き、当該構成要素は単数又は複数のいずれであってもよい。