(57)【要約】【課題】ユーザにより実行される可能性がより高い行動の推論を行い、ゲームプログラムを検査することが可能なシステムを提供する。【解決手段】本発明は、複数の媒体を含んで構成される所有媒体群からユーザが媒体を選択してゲームフィールドに出すことで進行するゲームのゲームプログラムを検査するためのシステムであって、ゲームフィールド及び所有媒体群を含んで構成されるゲーム状態が含む媒体に関する媒体情報を含むゲームログを取得し、取得されたゲームログに基づいてゲーム状態が含む媒体情報を表すマトリクスを時間軸上に並べた配列データを作成することによりテンソルデータを作成し、該テンソルデータを用いて機械学習を行うことにより学習モデルを生成し、該学習モデルを用いてユーザが選択する媒体を推論し、該推論される媒体をユーザによる媒体の選択として用いてゲームプログラムを実行することにより該ゲームプログラムを検査する。【選択図】図１
2019164753.tif 000002
【特許請求の範囲】
【請求項１】
複数の媒体を含んで構成される所有媒体群からユーザが媒体を選択して該媒体をゲームフィールドに出すことで進行するゲームのゲームプログラムを検査するためのシステムであって、
ユーザの操作に応じて作成される、前記ゲームフィールド及び前記所有媒体群を含んで構成されるゲーム状態が含む前記媒体に関する媒体情報を含むゲームログを、該ゲームログが格納されるゲームサーバから取得するゲームログ取得部と、
前記取得されたゲームログに基づいて前記ゲーム状態が含む前記媒体情報を表すマトリクスを時間軸上に並べた配列データを作成することによりテンソルデータを作成するテンソルデータ作成部と、
前記作成されたテンソルデータを学習データとして用いて機械学習を行うことにより学習モデルを生成する学習部と、
前記学習モデルを用いて任意の前記ゲーム状態においてユーザが選択する前記媒体を推論する推論部と、
前記ゲームが進行したときの前記ゲーム状態におけるユーザによる前記媒体の選択として前記推論部により推論される前記媒体を用いて前記ゲームプログラムを実行することにより該ゲームプログラムを検査する検査部と、
を備える、システム。
【請求項２】
前記マトリクスは、前記ゲームが備える前記媒体の種類と前記ゲーム状態を構成する前記ゲームフィールド及び前記所有媒体群の種別とのいずれか一方を行とし、他方を列とし、
前記テンソルデータ作成部は、前記マトリクスの各要素に前記媒体の有無に関する情報を格納する、請求項１に記載のシステム。
【請求項３】
前記テンソルデータ作成部は、
前記ゲームログ取得部が新たに取得したゲームログに基づいて前記配列データを作成することにより新たなテンソルデータを作成する、請求項１又は２に記載のシステム。
【請求項４】
前記ゲームログは、ユーザを識別するための情報を含み、
前記テンソルデータ作成部は、前記配列データを、ユーザの種類を示すユーザ軸上にユーザごとに格納することによりテンソルデータを作成する、請求項１から３のいずれか１項に記載のシステム。
【請求項５】
前記ゲームは、複数のユーザが各々の前記所有媒体群から前記媒体を選択して該媒体を前記ゲームフィールドに出して対戦する対戦ゲームであり、
前記テンソルデータ作成部は、前記配列データを、追記回数を示す追記回数軸上に格納することによりテンソルデータを作成する、請求項１から４のいずれか１項に記載のシステム。
【請求項６】
前記ゲームが備える前記媒体の種類は、ユーザにより選択されたクラスに応じて異なるものであり、
前記ゲームログは、クラスを識別するための情報を含み、
前記テンソルデータ作成部は、前記配列データを、クラスの種類を示すクラス軸上にクラスごとに格納することによりテンソルデータを作成する、請求項１から５のいずれか１項に記載のシステム。
【請求項７】
前記推論部は、前記ゲームに新たな種類の前記媒体が追加されるとき、追加される前記媒体と前記ゲームが備える前記媒体との関係を示す変換マトリクスを更に用いて任意の前記ゲーム状態においてユーザが選択する前記媒体を推論する、請求項１から６のいずれか１項に記載のシステム。
【請求項８】
前記学習モデルは、ニューラルネットワークモデルである、請求項１から７のいずれか１項に記載のシステム。
【請求項９】
前記推論部は、ユーザが選択する前記媒体の尤度を所定の閾値と比較して、より尤もらしい尤度を持つ前記媒体を出力し、
前記検査部は、ユーザによる前記媒体の選択として前記推論部により出力される前記媒体を用いて前記ゲームプログラムを実行することにより該ゲームプログラムを検査する、請求項１から８のいずれか１項に記載のシステム。
【請求項１０】
前記検査部は、ユーザによる前記媒体の選択として前記推論部により出力される前記媒体のうち、より尤もらしい尤度を持つ前記媒体から順番に用いて前記ゲームプログラムを実行することにより該ゲームプログラムを検査する、請求項９に記載のシステム。
【請求項１１】
前記検査部は、前記ゲームプログラムをヘッドレスモードで実行することにより該ゲームプログラムを検査する、請求項１から１０のいずれか１項に記載のシステム。
【請求項１２】
前記所有媒体群は、前記ゲームの進行に応じて決定される、ユーザが選択可能な第１の媒体群と、ユーザが選択不可能な第２の媒体群とから構成され、
前記推論部は、前記学習モデルを用いて任意の前記ゲーム状態においてユーザが選択する前記媒体を前記第１の媒体群から推論する、請求項１から１１のいずれか１項に記載のシステム。
【請求項１３】
複数の媒体を含んで構成される所有媒体群からユーザが媒体を選択して該媒体をゲームフィールドに出すことで進行するゲームのゲームプログラムを検査するための方法であって、
ユーザの操作に応じて作成される、前記ゲームフィールド及び前記所有媒体群を含んで構成されるゲーム状態が含む前記媒体に関する媒体情報を含むゲームログを、該ゲームログが格納されるゲームサーバから取得するステップと、
前記取得されたゲームログに基づいて前記ゲーム状態が含む前記媒体情報を表すマトリクスを時間軸上に並べた配列データを作成することによりテンソルデータを作成するステップと、
前記作成されたテンソルデータを学習データとして用いて機械学習を行うことにより学習モデルを生成するステップと、
前記学習モデルを用いて任意の前記ゲーム状態においてユーザが選択する前記媒体を推論するステップと、
前記ゲームが進行したときの前記ゲーム状態におけるユーザによる前記媒体の選択として前記推論される前記媒体を用いて前記ゲームプログラムを実行することにより該ゲームプログラムを検査するステップと、
を有する、方法。
【請求項１４】
請求項１３に記載の方法の各ステップをコンピュータに実行させるプログラム。
【請求項１５】
複数の媒体を含んで構成される所有媒体群からユーザが媒体を選択して該媒体をゲームフィールドに出すことで進行するゲームにおけるユーザが選択する媒体を推論するための学習モデルを、機械学習により生成するための学習データを作成する機械学習支援装置であって、
ユーザの操作に応じて作成される、前記ゲームフィールド及び前記所有媒体群を含んで構成されるゲーム状態が含む前記媒体に関する媒体情報を含むゲームログを、該ゲームログが格納されるゲームサーバから取得するゲームログ取得部と、
前記取得されたゲームログに基づいて前記ゲーム状態が含む前記媒体情報を表すマトリクスを時間軸上に並べた配列データを作成することによりテンソルデータを作成するテンソルデータ作成部と、
を備える、機械学習支援装置。
【請求項１６】
複数の媒体を含んで構成される所有媒体群からユーザが媒体を選択して該媒体をゲームフィールドに出すことで進行するゲームにおけるユーザが選択する媒体を推論するための学習モデルを、機械学習により生成するための学習データのデータ構造であって、
ユーザの操作に応じて作成される、前記ゲームフィールド及び前記所有媒体群を含んで構成されるゲーム状態が含む前記媒体に関する媒体情報を含むゲームログに基づいて、前記ゲーム状態が含む前記媒体情報を表すマトリクスを時間軸上に並べた配列データを作成することにより作成されるテンソルデータを含み、
コンピュータに、前記テンソルデータを学習データとして用いて機械学習を行わせることにより学習モデルを生成させ、該学習モデルを用いて任意の前記ゲーム状態において、より尤もらしい尤度を持つ前記媒体に関する推論情報を出力させる、
学習データのデータ構造。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲームプログラムを検査するためのシステム、方法、プログラム、機械学習支援装置及びデータ構造に関する。
【背景技術】
【０００２】
近年、ネットワークを通じて複数のプレイヤが参加可能なオンラインゲームを楽しむプレイヤが増えている。当該ゲームは、スマートフォンなどの携帯端末装置がゲーム運営者のサーバ装置と通信を行うゲームシステムなどにより実現され、携帯端末装置を操作するプレイヤは、他のプレイヤと対戦プレイを行うことができる。
【０００３】
ゲーム運営者は、ゲームを提供するにあたっては、ゲームプログラムを検査してバグを検出しておく必要がある。一般的に、このような検査を効率化する技術は、Ｑｕａｌｉｔｙ  Ａｓｓｕｒａｎｃｅ（ＱＡ）技術と呼ばれる。
【０００４】
従来、ＱＡ技術の１つとして、プログラムの実行を伴わない静的検査を自動的に実行する静的コード解析がある。この静的コード解析は、検証対象となるプログラムのソースコードの形式や内容を解析することにより、潜在的な問題や仕様との齟齬を検出する。ＵＮＩＸ(登録商標)システム上では、ｌｉｎｔなどのプログラムの形式を確認するツールが古くから提供されており、また商用製品ではｃｏｖｅｒｉｔｙが良く知られている（非特許文献１、２）。しかし、ソースコードから実行時の振る舞いを網羅的に検証することは困難であるため、動的な解析と併用する必要があった。
【０００５】
動的な解析は、プログラムの実行を伴う動的検査であって、所謂テストプレイと呼ばれるものであり、古くからＱＡプロセスの一環として実行されてきた。テストプレイは、デバッガーやテスターと呼ばれる専門の技術者がゲームを実際にプレイすることにより問題を発見する手法であり、高い効果が期待できる。このようなＱＡを行うにあたっては、ゲーム内のプレイヤの行動の組み合わせは膨大であるため、ゲーム運営者は、その組み合わせの中から、実行される可能性が高い順にゲームプログラム動作させてバグを検出する必要がある。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Darwin, Ian F. Checking C Programs with Lint. ISBN 0-937175-30-7.
【非特許文献２】Synopsys, Inc. Coverity, https://www.synopsys.com/software-integrity.html
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ＱＡを行うゲームとして、カードやキャラクタなどの組み合わせ（以下、「カード組み合わせ」という。）に応じて様々なアクションが実行されるデジタルコレクタブルカードゲーム（ＤＣＣＧ）と呼ばれるカードゲームが挙げられる。カード組み合わせは、ゲームの戦略性を飛躍的に向上させるものの、一方で、検証するべき状況の数も爆発的に増大させる。例えば、手持ちのカードをゲームフィールド（場）に出して対戦するカードバトルゲームにおいて、１０００枚のカードが存在し、平均８ターンの対戦が行われるとき、場に約１６回カードが出されることになる。このとき、場の状況のパターンは、１０００の１６乗の組み合わせになり、実質的にほぼ無限の組み合わせが発生することになる。このような無限のカード組み合わせについて、人力でのテストプレイにより網羅的に検証することは、膨大な人数と膨大な時間を投入する必要があるため、極めて困難であった。
【０００８】
本発明は、このような課題を解決するためになされたものであり、ユーザにより実行される可能性がより高い行動の推論を行い、ゲームプログラムを検査することが可能なシステム等を提供することを主目的とする。
【課題を解決するための手段】
【０００９】
上記の目的を達成するために、本発明の一態様としてのシステムは、複数の媒体を含んで構成される所有媒体群からユーザが媒体を選択して該媒体をゲームフィールドに出すことで進行するゲームのゲームプログラムを検査するためのシステムであって、ユーザの操作に応じて作成される、前記ゲームフィールド及び前記所有媒体群を含んで構成されるゲーム状態が含む前記媒体に関する媒体情報を含むゲームログを、該ゲームログが格納されるゲームサーバから取得するゲームログ取得部と、前記取得されたゲームログに基づいて前記ゲーム状態が含む前記媒体情報を表すマトリクスを時間軸上に並べた配列データを作成することによりテンソルデータを作成するテンソルデータ作成部と、前記作成されたテンソルデータを学習データとして用いて機械学習を行うことにより学習モデルを生成する学習部と、前記学習モデルを用いて任意の前記ゲーム状態においてユーザが選択する前記媒体を推論する推論部と、前記ゲームが進行したときの前記ゲーム状態におけるユーザによる前記媒体の選択として前記推論部により推論される前記媒体を用いて前記ゲームプログラムを実行することにより該ゲームプログラムを検査する検査部と、を備えることを特徴とする。
【００１０】
また、本発明において好ましくは、前記マトリクスは、前記ゲームが備える前記媒体の種類と前記ゲーム状態を構成する前記ゲームフィールド及び前記所有媒体群の種別とのいずれか一方を行とし、他方を列とし、前記テンソルデータ作成部は、前記マトリクスの各要素に前記媒体の有無に関する情報を格納する。
【００１１】
また、本発明において好ましくは、前記テンソルデータ作成部は、前記ゲームログ取得部が新たに取得したゲームログに基づいて前記配列データを作成することにより新たなテンソルデータを作成する。
【００１２】
また、本発明において好ましくは、前記ゲームログは、ユーザを識別するための情報を含み、前記テンソルデータ作成部は、前記配列データを、ユーザの種類を示すユーザ軸上にユーザごとに格納することによりテンソルデータを作成する。
【００１３】
また、本発明において好ましくは、前記ゲームは、複数のユーザが各々の前記所有媒体群から前記媒体を選択して該媒体を前記ゲームフィールドに出して対戦する対戦ゲームであり、前記ゲームログは、前記テンソルデータ作成部は、前記配列データを、追記回数を示す追記回数軸上に格納することによりテンソルデータを作成する。
【００１４】
また、本発明において好ましくは、前記ゲームが備える前記媒体の種類は、ユーザにより選択されたクラスに応じて異なるものであり、前記ゲームログは、クラスを識別するための情報を含み、前記テンソルデータ作成部は、前記配列データを、クラスの種類を示すクラス軸上にクラスごとに格納することによりテンソルデータを作成する。
【００１５】
また、本発明において好ましくは、前記推論部は、前記ゲームに新たな種類の前記媒体が追加されるとき、追加される前記媒体と前記ゲームが備える前記媒体との関係を示す変換マトリクスを更に用いて任意の前記ゲーム状態においてユーザが選択する前記媒体を推論する。
【００１６】
また、本発明において好ましくは、前記学習モデルは、ニューラルネットワークモデルである。
【００１７】
また、本発明において好ましくは、前記推論部は、ユーザが選択する前記媒体の尤度を所定の閾値と比較して、より尤もらしい尤度を持つ前記媒体を出力し、前記検査部は、ユーザによる前記媒体の選択として前記推論部により出力される前記媒体を用いて前記ゲームプログラムを実行することにより該ゲームプログラムを検査する。
【００１８】
また、本発明において好ましくは、前記検査部は、ユーザによる前記媒体の選択として前記推論部により出力される前記媒体のうち、より尤もらしい尤度を持つ前記媒体から順番に用いて前記ゲームプログラムを実行することにより該ゲームプログラムを検査する。
【００１９】
また、本発明において好ましくは、前記検査部は、前記ゲームプログラムをヘッドレスモードで実行することにより該ゲームプログラムを検査する。
【００２０】
また、本発明において好ましくは、前記所有媒体群は、前記ゲームの進行に応じて決定される、ユーザが選択可能な第１の媒体群と、ユーザが選択不可能な第２の媒体群とから構成され、前記推論部は、前記学習モデルを用いて任意の前記ゲーム状態においてユーザが選択する前記媒体を前記第１の媒体群から推論する。
【００２１】
また、上記の目的を達成するために、本発明の一態様としての方法は、複数の媒体を含んで構成される所有媒体群からユーザが媒体を選択して該媒体をゲームフィールドに出すことで進行するゲームのゲームプログラムを検査するための方法であって、ユーザの操作に応じて作成される、前記ゲームフィールド及び前記所有媒体群を含んで構成されるゲーム状態が含む前記媒体に関する媒体情報を含むゲームログを、該ゲームログが格納されるゲームサーバから取得するステップと、前記取得されたゲームログに基づいて前記ゲーム状態が含む前記媒体情報を表すマトリクスを時間軸上に並べた配列データを作成することによりテンソルデータを作成するステップと、前記作成されたテンソルデータを学習データとして用いて機械学習を行うことにより学習モデルを生成するステップと、前記学習モデルを用いて任意の前記ゲーム状態においてユーザが選択する前記媒体を推論するステップと、前記ゲームが進行したときの前記ゲーム状態におけるユーザによる前記媒体の選択として前記推論される前記媒体を用いて前記ゲームプログラムを実行することにより該ゲームプログラムを検査するステップと、を有することを特徴とする。
【００２２】
また、上記の目的を達成するために、本発明の一態様としてのプログラムは、上記の方法の各ステップをコンピュータに実行させることを特徴とする。
【００２３】
また、上記の目的を達成するために、本発明の一態様としての機械学習支援装置は、複数の媒体を含んで構成される所有媒体群からユーザが媒体を選択して該媒体をゲームフィールドに出すことで進行するゲームにおけるユーザが選択する媒体を推論するための学習モデルを、機械学習により生成するための学習データを作成する機械学習支援装置であって、ユーザの操作に応じて作成される、前記ゲームフィールド及び前記所有媒体群を含んで構成されるゲーム状態が含む前記媒体に関する媒体情報を含むゲームログを、該ゲームログが格納されるゲームサーバから取得するゲームログ取得部と、前記取得されたゲームログに基づいて前記ゲーム状態が含む前記媒体情報を表すマトリクスを時間軸上に並べた配列データを作成することによりテンソルデータを作成するテンソルデータ作成部と、を備えることを特徴とする。
【００２４】
また、上記の目的を達成するために、本発明の一態様としてのデータ構造は、複数の媒体を含んで構成される所有媒体群からユーザが媒体を選択して該媒体をゲームフィールドに出すことで進行するゲームにおけるユーザが選択する媒体を推論するための学習モデルを、機械学習により生成するための学習データのデータ構造であって、ユーザの操作に応じて作成される、前記ゲームフィールド及び前記所有媒体群を含んで構成されるゲーム状態が含む前記媒体に関する媒体情報を含むゲームログに基づいて、前記ゲーム状態が含む前記媒体情報を表すマトリクスを時間軸上に並べた配列データを作成することにより作成されるテンソルデータを含み、コンピュータに、前記テンソルデータを学習データとして用いて機械学習を行わせることにより学習モデルを生成させ、該学習モデルを用いて任意の前記ゲーム状態において、より尤もらしい尤度を持つ前記媒体に関する推論情報を出力させる、ことを特徴とする。
【発明の効果】
【００２５】
本発明によれば、ユーザにより実行される可能性がより高い行動の推論を行い、ゲームプログラムを検査することができる。
【図面の簡単な説明】
【００２６】
【図１】本発明の一実施形態による検査システムの全体構成図である。
【図２】ニューラルネットワークモデルの一例を示す図である。
【図３】本発明の一実施形態による情報処理装置のハードウェア構成を示すブロック図である。
【図４】本発明の一実施形態によるゲームサーバのハードウェア構成を示すブロック図である。
【図５】ユーザの端末装置のディスプレイに表示されるゲーム画面の一例である。
【図６】本発明の一実施形態による検査サーバのハードウェア構成を示すブロック図である。
【図７】本発明の一実施形態による検査システムの機能ブロック図の一例を示す図である。
【図８】ログデータベースに格納されるゲームログの一例を示す図である。
【図９】ある一時点におけるカード情報マトリクスの一例を示す図である。
【図１０】ある一時点におけるカード情報マトリクスの一例を示す図である。
【図１１】テンソルデータ作成部が作成する３次元配列データの一例を示す図である。
【図１２】テンソルデータ作成部が作成する３次元配列データの一例を示す図である。
【図１３】３次元配列データを、ユーザ軸、追記回数軸、及びクラス軸の３軸上に配置したテンソルデータモデルの一例を示す図である。
【図１４】既存のカードと新規のカードとの関係を示す変換マトリクスの一例を示す図である。
【図１５】検査サーバ及び情報処理装置による検査処理のフローチャートの一例を示す図である。
【発明を実施するための形態】
【００２７】
以下、図面を参照して、本発明の実施形態による、ゲームプログラムを検査するための検査システムについて説明する。
【００２８】
本発明の実施形態による検査システム１の技術的特徴の１つは、ゲームの進行状況に合わせて蓄積されていくゲームログを、ディープニューラルネットワーク（ＤＮＮ）技術を用いて学習可能な形式であるテンソル構造へ、追記的に写像することである。このような構成により、ユーザの行動を反映するゲームログを用いて、ニューラルネットワークモデル（ＮＮモデル）を生成し、人間らしい手を算出する仕組みを構築する。これにより、ある特定のゲーム状態において、人間が採用する可能性が高い行動を自動的に選択するＡＩボットを作成し、このＡＩボットによりテストプレイを繰り返させることで、ユーザが遭遇する確率が高いバグから優先的に発見し続けることが可能となる。
【００２９】
ここで機械学習やニューラルネットワーク（ＮＮ）について簡単に説明する。機械学習とは、入力値と出力値のデータから、そこに潜むパターンを獲得することを目的とした学習方法である。ニューラルネットワークは、機械学習で用いられる枠組みの１つであり、入出力値から入力関係を表す関数を学習（近似）する機能を有する。
【００３０】
図２は、ＮＮ（４層ＤＮＮ）の一例を示す図である。図２に示す４層ＤＮＮは、入力として入力値ｘ、ｙ、ｚに対応した３つのノード、出力として出力値ｕに対応した１つのノードを有する。４層ＤＮＮは、２層の中間層を有し、中間層の各ノードが重みを持っている。４層ＤＮＮは、大量の入出力データを利用することで、各ノードの適切な重みを生成することができ、これは一般的にディープラーニングと呼ばれる。ここで、ＮＮはゲームログをそのまま学習することはできないため、ＮＮに学習させるデータはｎ次元のテンソルデータ構造とする必要がある。ｎ次元のテンソルデータは、プログラム処理上、ｎ次元の配列として扱う配列データである。なお、図２に示すＮＮの層の数、ノード数は、１つの例示であることは理解される。
【００３１】
図１は、本発明の一実施形態による検査システム１の全体構成図である。図１に示すように、検査システム１は、情報処理装置１０と、ゲームサーバ２０と、検査サーバ３０とを備え、これらはインターネットなどのネットワーク２に接続され、互いに通信可能である。
【００３２】
図３は本発明の一実施形態による情報処理装置１０のハードウェア構成を示すブロック図である。本実施形態による情報処理装置１０は、一般的なサーバやＰＣ等と同様の構成を含む。情報処理装置１０は、プロセッサ１１、入力装置１２、出力装置１３、記憶装置１４、及び通信装置１５を備える。これらの各構成装置はバス１６によって接続される。なお、バス１６と各構成装置との間には必要に応じてインタフェースが介在しているものとする。１つの例では、情報処理装置１０は、複数のコンピュータやサーバ装置を含んで構成される。
【００３３】
プロセッサ１１は、情報処理装置１０全体の動作を制御するものであり、例えばＣＰＵ及びＧＰＵである。情報処理装置１０は機械学習を行うため、好ましくは、プロセッサ１１は、グラフィクス描画以外の汎用処理を行うためのＧＰＵを含む。このような構成とすることにより、例えば１０００を超えるコアを同時に動かして並列処理させ、計算速度を向上させることが可能となる。プロセッサ１１は、記憶装置１４に格納されているプログラムやデータを読み込んで実行することにより、様々な処理を実行する。
【００３４】
入力装置１２は、情報処理装置１０に対するユーザからの入力を受け付けるユーザインタフェースであり、例えば、タッチパネル、タッチパッド、キーボード、又はマウスである。出力装置１３は、ユーザに情報処理装置１０の出力情報を出力又は表示するものであり、例えば、画像を出力するディスプレイやプリンタである。
【００３５】
記憶装置１４は、主記憶装置及び補助記憶装置を含む。主記憶装置は、例えばＲＡＭのような半導体メモリである。ＲＡＭは、情報の高速な読み書きが可能な揮発性の記憶媒体であり、プロセッサ１１が情報を処理する際の記憶領域及び作業領域として用いられる。主記憶装置は、読み出し専用の不揮発性記憶媒体であるＲＯＭを含んでいてもよい。この場合、ＲＯＭはファームウェア等のプログラムを格納する。補助記憶装置は、様々なプログラムや、各プログラムの実行に際してプロセッサ１１が使用するデータを格納する。補助記憶装置は、例えばハードディスク装置であるが、情報を格納できるものであればいかなる不揮発性ストレージ又は不揮発性メモリであってもよく、着脱可能なものであっても構わない。補助記憶装置は、例えば、オペレーティングシステム（ＯＳ）、ミドルウェア、アプリケーションプログラム、これらのプログラムの実行に伴って参照され得る各種データなどを格納する。
【００３６】
通信装置１５は、ネットワーク２を介して他のコンピュータとの間でデータの授受を行う。例えば通信装置１５は、イーサネット（登録商標）ケーブル等を用いた有線通信や移動体通信、無線ＬＡＮ等の無線通信を行い、ネットワーク２へ接続する。
【００３７】
図４は本発明の一実施形態によるゲームサーバ２０のハードウェア構成を示すブロック図である。本実施形態によるゲームサーバ２０は、一般的なサーバと同様の構成を含む。１つの例では、ゲームサーバ２０は、公知のサーバコンピュータである。ゲームサーバ２０は、プロセッサ２１、入力装置２２、出力装置２３、記憶装置２４、及び通信装置２５を備える。これらの各構成装置はバス２６によって接続される。なお、バス２６と各構成装置との間には必要に応じてインタフェースが介在しているものとする。プロセッサ２１、入力装置２２、出力装置２３、記憶装置２４、及び通信装置２５の各要素は、前述したプロセッサ１１、入力装置１２、出力装置１３、記憶装置１４、及び通信装置１５に各々対応するものであり、同様の構成を有するため、説明は省略する。１つの例では、ゲームサーバ２０は、複数のサーバ装置を含んで構成される。
【００３８】
ゲームサーバ２０は、ゲームをプレイする各ユーザの端末装置とネットワークを介して接続される。ユーザの端末装置は、好ましくはスマートフォンであるが、パーソナルコンピュータ、タブレット端末、携帯電話機などとすることができる。
【００３９】
例えば、各ユーザは端末装置にインストールされたゲームアプリを起動すると、端末装置はゲームサーバ２０にアクセスし、ゲームサーバ２０は、各端末装置からのアクセスを受け付けて、ネットワークを介したゲームサービスを提供する。このとき、ゲームサーバ２０は、各ユーザのゲームログを含むゲーム情報を記憶装置２４に記憶して管理する。本実施形態においては、ゲームサーバ２０は、データベースサーバ機能を備える。この場合、記憶装置２４はデータベース用のデータ（例えばテーブル）やプログラムを記憶し、プログラムが実行されることにより、データベースは実現される。ゲームサーバ２０が複数のサーバ装置を含んで構成される場合、そのうちの１又は複数のサーバ装置をデータベースサーバとすることもできる。なお、ゲームサーバ２０と各ユーザの端末装置が接続されるネットワークは、ネットワーク２であってもよい。
【００４０】
ゲームサーバ２０の記憶装置２４は、ゲーム用のアプリケーションであるゲームプログラムを記憶し、ゲームサーバ２０は、各ユーザの端末装置と通信して、ゲームを提供する。ゲームサーバ２０は、ユーザの端末装置でのゲーム操作入力に応じてゲームを実行し、その実行結果をユーザの端末装置に送信する。
【００４１】
本実施形態におけるゲームサーバ２０が提供するゲームは、いわゆるコレクタブルカードゲームである。具体的には、本実施形態のゲームは、複数のカードを含んで構成される所有カード群からユーザがカードを選択して当該カードをゲームフィールドに出すことで、カードやクラスの組み合わせに応じて様々なイベントが実行されて進行するものとする。また、本実施形態のゲームは、複数のユーザが所有カード群からカードを選択してゲームフィールド４３に出して対戦する対戦ゲームである。本実施形態のゲームにおいて、各カードは、カードＩＤ、カード種別、ヒットポイント、攻撃力、属性などのパラメータを含むカード定義情報を有し、各クラスは、クラス定義情報を有する。カード種別は、カードがキャラクタ又はアイテムであることを示す情報である。
【００４２】
図５は、ユーザの端末装置のディスプレイに表示されるゲーム画面の一例であり、ユーザ端末装置を操作するユーザ自身である自ユーザと他のユーザ端末装置を操作する他ユーザのカードバトルのゲーム画面４０を示すものである。ゲーム画面４０は、自ユーザの手札である第１のカード群４２ａと、他ユーザの手札である第１のカード群４２ｂとを示している。ゲームは、自ユーザが他ユーザの第１のカード群４２ｂの内容を確認できないように構成される。
【００４３】
各ユーザが所有する所有カード群は、ユーザの手札である第１のカード群４２と、ユーザの山札である第２のカード群４４から構成され、一般的にカードデッキと呼ばれるものである。ユーザが所有する各カード４１が第１のカード群４２に含まれるか第２のカード群４４に含まれるかは、ゲームの進行に応じて決定される。第１のカード群４２は、ユーザが選択可能であり、ゲームフィールド４３に出すことが可能なカード群であり、第２のカード群４４は、ユーザが選択不可能なカード群である。所有カード群は、複数のカード４１から構成されるものであるが、ゲームの進行上、所有カード群は１枚のカード４１から構成される場合もある。ゲームは、各ユーザが第１のカード群４２（４２ａ、４２ｂ）の各々からゲームフィールド４３にカード４１を出すことで、進行する。なお、各ユーザのカードデッキは、すべて異なる種類のカード４１により構成されてもよいし、同じ種類のカード４１を一部含んで構成されてもよい。また、自ユーザのカードデッキを構成するカード４１の種類は、他ユーザのカードデッキを構成するカード４１の種類と異なってもよい。他の例では、各ユーザが所有する所有カード群は、第１のカード群４２のみから構成される。
【００４４】
ゲーム画面４０は、自ユーザの選択したキャラクタ４５ａと、他ユーザの選択したキャラクタ４５ｂを示す。本実施形態において、ユーザが選択するキャラクタは、カードと関連付けられているキャラクタとは異なるものであり、所有カード群のタイプを示すクラスを定める。本実施形態のゲームは、クラスに応じて、ユーザが所有するカード４１が異なるように構成される。１つの例では、本実施形態のゲームは、各ユーザのカードデッキを構成することができるカードの種類が、クラスに応じて異なるように構成される。１つの例では、本実施形態のゲームは、カード４１をゲームフィールド４３に出すことにより生じる効果は、カード定義情報に設定されるパラメータにより異なるように構成される。
【００４５】
ただし、カード４１（カード群）は、キャラクタやアイテムなどの媒体（媒体群）とすることができ、所有カード群は、ユーザが所有する複数の媒体を含んで構成される所有媒体群とすることができる。例えば媒体群がキャラクタとアイテムの媒体により構成される場合、ゲーム画面４０は、カード４１として、キャラクタ又はアイテムそのものを示すこととなる。また、本明細書においては、ゲーム状態が、ある一時点における又はある１つの場面におけるゲーム全体の状態を示すものとする。ゲーム状態は、ゲームフィールド４３の情報及び所有カード群の情報を含んで構成される。具体的には、本実施形態におけるゲーム状態は、ある一時点（１つの場面）におけるゲームフィールド４３に出されているカード４１の情報と自ユーザの所有カード群（又は第１のカード群４２）のカード４１の情報とを少なくとも含むものであればよい。例えば、自ユーザが第１のカード群４２ａからカードＡ１をゲームフィールド４３に出した場合、所有カード群からカードＡ１が無くなり、ゲームフィールド４３にカードＡ１が出されたことをゲーム状態から確認することができる。
【００４６】
１つの例では、本実施形態のゲームは、１つの対戦（カードバトル）が複数のターンを含む対戦ゲームであり、各ターンにおいて、自ユーザ又は他ユーザは、第１のカード群４２からカードを選択し、ゲームフィールド４３に出すことで進行する。１つの例では、キャラクタ４５ｂはノンプレイヤキャラクタである。１つの例では、本実施形態のゲームは、ゲーム画面４０上の一のカード又はキャラクタに対するユーザ操作に応答して、他のカード又はキャラクタのヒットポイントや攻撃力などのパラメータを変更する。１つの例では、本実施形態のゲームは、特定のゲーム状態になるなどの所定条件を満たした場合、各ユーザのカードデッキ又は各ユーザのカードデッキ以外からゲームフィールド４３にカードが出される。１つの例では、本実施形態のゲームは、特定のゲーム状態になるなどの所定条件を満たした場合、当該所定条件に対応するカードをゲームフィールドから除外又は自ユーザ若しくは他ユーザのカードデッキに移動する。１つの例では、本実施形態のゲームは、スペルカードなどのような特定のカードを各ユーザのカードデッキからゲームフィールド４３に出した場合、所定の効果を発揮すると同時にゲームフィールド４３から当該特定カードを消滅させる。
【００４７】
図６は本発明の一実施形態による検査サーバ３０のハードウェア構成を示すブロック図である。本実施形態による検査サーバ３０は、一般的なサーバと同様の構成を含む。１つの例では、検査サーバ３０は、公知のサーバコンピュータである。検査サーバ３０は、プロセッサ３１、記憶装置３４、及び通信装置３５を備える。これらの各構成装置はバス３６によって接続される。なお、バス３６と各構成装置との間には必要に応じてインタフェースが介在しているものとする。プロセッサ３１、記憶装置３４、及び通信装置３５の各要素は、前述したプロセッサ１１、記憶装置１４、及び通信装置１５に各々対応するものであり、同様の構成を有するため、説明は省略する。１つの例では、検査サーバ３０は、複数のサーバ装置を含んで構成される。
【００４８】
なお本実施形態では、検査サーバ３０は、ヘッドレス化による処理の高速化を目的として、入出力装置を備えない構成としているが、入出力装置を備えることもできる。また情報処理装置１０又はゲームサーバ２０が検査サーバ３０の機能を有するように構成することもできる。
【００４９】
好適な１つの例では、検査サーバ３０は、他のプロセスと隔離されたゲームアプリ（ゲームプログラム）を複数並行して実行するサーバシステムである。検査サーバ３０は、dockerなどのＯＳレベルの仮想化技術である「コンテナ」と呼ばれる技術を用いて上述のゲームアプリを仮想化する。このような構成とすることにより、１台のサーバ装置で、同時に複数のゲームアプリを並列に実行することが可能となる。
【００５０】
また上記の仮想化されたゲームプログラムについて、検査サーバ３０は、ヘッドレスモードでゲームプログラムを実行するか、又はヘッドレスのゲームプログラムを実行する。ヘッドレス化されたゲームプログラムは、律速要素となりうるグラフィックとサウンドを必要としないため、プロセッサ３１単独でゲーム内容を高速に、短時間でゲームプログラムを実行することが可能となる。これにより、ゲームプログラムの実行を伴う動的検査を効率的に行うことが可能となる。
【００５１】
本実施形態においては、検査サーバ３０は、データベースサーバ機能を備える。この場合、記憶装置３４はデータベース用のデータ（例えばテーブル）やプログラムを記憶し、プログラムが実行されることにより、データベースは実現される。検査サーバ３０が複数のサーバ装置を含んで構成される場合、そのうちの１又は複数のサーバ装置をデータベースサーバとすることもできる。
【００５２】
図７は本発明の一実施形態による検査システム１の機能ブロック図の一例を示す図である。これらの機能は、各装置のプロセッサ１１、２１、３１により各々プログラムが実行されることにより実現される。本実施形態においては、各種機能がプログラム読み込みにより実現されるため、１つのパート（機能）の一部を他のパートが有していてもよい。ただし、各機能の一部又は全部を実現するための電子回路等を構成することにより、ハードウェアによってこれらの機能は実現してもよい。
【００５３】
ゲームサーバ２０は、図７に示すとおり、ログデータベース６１を備える。ゲームサーバ２０は、ユーザがゲームをプレイする度に、ログデータベース６１にゲームの進行状況を示すゲームログを追記的に格納する。ゲームログは、ユーザの操作に応じて作成される、ゲーム状態が含むカードに関するカード情報を含む。
【００５４】
図８は、ログデータベース６１に格納されるゲームログの一例を示す図である。図８に示すとおり、ゲームログは、「ユーザＸの操作ログＸ１」などのゲームの進行状況を示す各ログにより構成され、ゲームサーバ２０は、ログデータベース６１に、各ログを時系列に沿って逐次的に格納する。「ユーザＸの操作ログＸ１」などの各ログは、時間情報、ユーザを識別するためのユーザＩＤ、操作種別、シーケンス番号などの情報を含み、ユーザの行動を記録することができるものである。本実施形態においては、ゲームログは情報処理装置１０が用いるものであるが、当該ゲームログは、障害対応やカスタマーサポートなどの幅広い用途に使用されるログである。そのため、ゲームログに含まれる情報を用いることで、ゲームログを取得した時点のゲーム状態におけるゲームフィールド４３のカード情報と所有カード群（又は第１のカード群４２）のカード情報とを把握することができる。
【００５５】
情報処理装置１０は、図７に示すように、ゲームログ取得部６２と、テンソルデータ作成部６３と、学習部６４と、推論部６５とを備える。ゲームログ取得部６２は、ログデータベース６１からゲームログを取得する。
【００５６】
テンソルデータ作成部６３は、ゲームログ取得部６２により取得されたゲームログに基づいてゲーム状態が含むカード情報を表すカード情報マトリクスを時間軸上に並べた配列データを作成することによりテンソルデータを作成する。テンソルデータ作成部６３は、ある一時点におけるゲーム状態をマトリクスとして、ゲームログを拡張可能なテンソル構造に写像することにより、機械学習可能なデータを生成する。ユーザの行動後のカード情報マトリクスは、ユーザの行動前のカード情報マトリクスに対してユーザがとった行動を示すこととなり、正解ラベルとして用いることができる。この正解ラベルは、任意のゲーム状態において大多数のユーザが選択するカードを推論するための正解ラベルである。
【００５７】
図９、図１０は、ある一時点におけるカード情報マトリクスの一例を示す図である。カード情報マトリクスは、ゲームが備えるカードの種類を行とし、ゲームフィールド４３及び所有カード群の種別を列とし、ある一時点における、すなわちあるゲーム状態におけるマトリクスの各要素にカードの有無に関する情報が格納される。ただし、マトリクスの各要素にカードの数量に関する情報が格納されてもよい。
【００５８】
例えば、図９に示すカード情報マトリクスは、ステージのカードＡ１に「１」が格納され、ステージのカードＡ２に「０」が格納されている。これは、このゲーム状態において、ゲームフィールド４３には、カードＡ１は出されており、カードＡ２は出されていないことを示している。同様に、図９に示すカード情報マトリクスは、デッキのカードＡ１に「０」が格納され、デッキのカードＡ２に「１」が格納されている。これは、このゲーム状態において、所有カード群には、カードＡ１は含まれておらず、カードＡ２は含まれていることを示している。
【００５９】
このように、カード情報マトリクスは、ある一時点における、１つの対戦のゲームフィールド４３のカード情報とユーザの所有カード群のカード情報を、ｎ種類のカードに対応するｎ次元のベクトルとして表現したものである。本実施形態において、カード情報マトリクスにおける所有カード群のカード情報は、自ユーザの所有カード群であって、他ユーザの所有カード群は含まない。ただし、ゲームの内容によっては、カード情報マトリクスは、他ユーザの所有カード群を含むように構成することもできる。なお、カード情報マトリクスの行と列は、入れ替えても構わない。
【００６０】
図１０は、図９のゲーム状態において、ユーザがカードＡ２をゲームフィールド４３に出した後のカード情報マトリクスを示している。図１０に示すカード情報マトリクスは、図９のカード情報マトリクスと比較すると、ステージのカードＡ２に格納される情報は「０」から「１」となり、デッキのカードＡ２に格納される情報は「１」から「０」となる。
【００６１】
このように、カード情報マトリクスを用いることにより、ユーザがカード選択操作を行うなどアクションを起こし、ゲームフィールド４３のカード情報及び所有カード群のカード情報に変化が現れた場合、マトリクス内の値の変化として検出することが可能となる。ただし、変形例として、カード情報マトリクスの列の要素は、ゲームフィールド４３及び第１のカード群４２とすることもできるし、ゲームフィールド４３、所有カード群、及び第１のカード群４２とすることもできる。
【００６２】
テンソルデータ作成部６３は、図１１に示すように、カード情報マトリクスをすべてのアクションごとに時間軸上に並べることにより、１つのカードバトルごとに、図１２に示すような３次元配列データを作成する。したがって、１つのカードバトルは、場／デッキ（ゲームフィールド４３／所有カード群）の種別の軸と、カードの種類の軸と、アクション回数を示す時間軸との３次元のテンソルで表現される。
【００６３】
ここで、ゲームログにはユーザＩＤやクラスが含まれるため、テンソルデータ作成部６３は、３次元配列データをユーザごとに、クラスごとに、及び追記回数ごとに分類して、蓄積することができる。テンソルデータ作成部６３は、３次元配列データを、ユーザの種類を示すユーザ軸上にユーザごとに、追記回数を示す追記回数軸上に追記回数ごとに、及びクラスの種類を示すクラス軸上にクラスごとに、格納することによりテンソルデータを更に作成する。図１３は、３次元配列データを、ユーザ軸、追記回数軸、及びクラス軸の３軸上に配置したテンソルデータモデルの一例を示す図である。
【００６４】
したがって、テンソルデータ作成部６３が作成するテンソルデータは、場／デッキの種別と、カードの種類と、アクション回数と、ユーザの種類と、追記回数と、クラスの種類とのデータを格納する６次元のテンソルデータである。ここで追記回数とは、テンソルデータ作成部６３が６次元のテンソルデータを作成するにあたって、追記回数以外の５次元のテンソルデータを追記した回数を示すものである。当該５次元のテンソルデータは１つのカードバトルごとに生成されるため、追記回数は、結果としてバトル回数を示すものとなる。
【００６５】
ただし、テンソルデータは、以下の変形例のように構成することもできる。１つの変形例では、テンソルデータ作成部６３が作成するテンソルデータは、上記の３次元配列データ、すなわち３次元のテンソルデータである。１つの変形例では、テンソルデータ作成部６３が作成するテンソルデータは、３次元配列データを、ユーザ軸、追記回数軸、及びクラス軸の３軸のいずれか１つの軸上に配置した４次元のテンソルデータである。１つの変形例では、テンソルデータ作成部６３が作成するテンソルデータは、３次元配列データを、ユーザ軸、追記回数軸、及びクラス軸の３軸のいずれか２つの軸上に配置した５次元のテンソルデータである。その他、テンソルデータ作成部６３が作成するテンソルデータは、上記に示すテンソルデータに他の１又は複数の次元を追加したｎ次元（ｎ≧４）のテンソルデータとすることもできる。
【００６６】
ログデータベース６１は、ユーザがゲームをプレイしている間は追記的に格納され続けるものである。好適な１つの例では、情報処理装置１０は、テンソルデータ差分検出部を更に備える。テンソルデータ差分検出部は、例えばテンソルデータ作成部６３が作成したテンソルデータの最後の更新時間と、ゲームログ取得部６２によるゲームログ取得時間とを比較することにより、ゲームログの追加分を抽出する。このようにして、テンソルデータ作成部６３は、ゲームログ取得部６２が新たに取得したゲームログに基づいて配列データを作成することによりテンソルデータを作成する。ゲームログ取得部６２又はテンソルデータ作成部６３が、テンソルデータ差分検出部の機能を有していてもよい。
【００６７】
１つの変形例では、テンソルデータ作成部６３は、図１２に示した３次元構造の配列データを、例えばＮＤ４Ｊのような疎行列を効率的に格納するシステムを用いて、テンソルデータを作成する。これにより、テンソルデータは多次元構造であるため、単純に多次元配列として格納すると、大部分のセルがゼロとなる配列となり、メモリ空間の効率が悪いという問題点を解消することが可能となる。
【００６８】
上記の例示においては、説明の便宜上、テンソルデータ作成部６３は、カードの有無に応じて、カード情報マトリクスの各要素に「０」又は「１」を格納するものとして説明したが、これに限定されない。ただし、機械学習可能なデータとしてテンソルデータを作成するため、テンソルデータ作成部６３は、カードの有無及びカードの枚数に応じて、カード情報マトリクスの各要素に「０」〜「１」の実数を格納することが好ましい。例えばステージが含むことができるカードの枚数が最大５枚である場合において、ステージがカードＡ１を含まず、カードＡ２を１枚含み、カードＡ３を３枚含む場合、テンソルデータ作成部６３は、ステージのカードＡ１の要素に「０」を格納し、ステージのカードＡ２の要素に「０．２」を格納し、ステージのカードＡ３の要素に「０．６」を格納する。
【００６９】
学習部６４は、作成されたテンソルデータを学習データとして用いて機械学習を行うことによりニューラルネットワークモデルを生成する。学習データは、入力データとその正解ラベルの対となる出力データから構成されるものである。例えばテンソルデータ作成部６３が作成するテンソルデータが３次元配列データの場合、アクション回数の軸に沿って隣接するカード情報マトリクスは、アクション回数が小さい方が入力データとなり、アクション回数が大きい方が出力データとなる。すなわち、ある一時点におけるカード情報マトリクスは、アクション回数が１つ前の入力データとしてのカード情報マトリクスの出力データとなり、アクション回数が１つ後の出力データとしてのカード情報マトリクスの入力データとなる。
【００７０】
学習部６４は、公知のニューラルネットワークを使用して、ニューラルネットワークモデルを生成することができる。本実施形態のニューラルネットワークは、多層のニューラルネットワーク、すなわちディープニューラルネットワークを含むことができる。学習部６４は、好ましくは、図２に示すような、中間層を２つ以上有するディープニューラルネットワークを使用する。例えば、学習部６４は、Deeplearning4j（登録商標）、TensorFlow（登録商標）、Chainer（登録商標）などのフレームワークを用いることができる。なお学習部６４は、例えばランダムフォレスト法による学習モデルなどのニューラルネットワークモデル以外の他の学習モデルを作成することもできる。
【００７１】
推論部６５は、学習部６４が生成したニューラルネットワークモデル（学習モデル）を用いて、任意のゲーム状態においてユーザが選択するカードを推論する。ある一時点のゲーム状態におけるカード情報は、カード情報マトリクスにより表される。例えば、テンソルデータ作成部６３が３次元のテンソルデータを作成する場合、推論部６５は、ある一時点のゲーム状態を表すカード情報マトリクスを入力すると、ユーザが次に選択するカードを推論（出力）する。
【００７２】
１つの例では、推論部６５は、ユーザが選択するカードの尤度を所定の閾値と比較して、より尤もらしい尤度を持つカードを出力（決定）する。具体的には、推論部６５は、所定の閾値以上（又は所定の閾値を超える）の尤度を持つカードに関する情報である推論情報を出力する。推論情報は、所定の閾値以上の尤度を持つカードに関する情報（例えばカードＩＤ）を含む。推論情報は、カードＩＤごとの尤度に関する情報を含むこともできるし、推論部６５は、尤度が高いカードから順番に出力することもできる。本実施形態では、尤度が高いほど、尤もらしさが高い（より尤もらしい）ものとする。ただし、変形例として、尤度が低いほど尤もらしさが高くなるように設定することもでき、この場合、推論部６５は、所定の閾値以下（又は所定の閾値未満）の尤度を持つカードを出力する。閾値は、予めゲーム運営者などにより設定される。閾値は、推論部６５により出力されるカードがユーザにより選択可能な全カードのうちの１０％以下となるように決定することが好ましい。これにより、推論部６５が、１つのゲーム状態において、１つのカードのみ決定し続けてしまうことを防止することが可能となる。なおこの場合、推論部６５が出力する推論情報は、当該ゲーム状態におけるユーザが選択する尤度が高いカードに関する情報であれば、上記に限定されない。推論部６５は、構築された学習モデルを用いて、データの推論を行うことができる公知の推論実行モジュールを使用して、データを推論（出力）することができる。例えば、推論部６５は、CoreMLなどのフレームワークを用いることができる。
【００７３】
１つの例では、ゲーム運営者などによりゲームに１又は複数の新たな種類のカードが追加されるとき、推論部６５は追加されるカードと該追加される前のゲームが備えるカードとの関係を示す変換マトリクスを更に用いて任意のゲーム状態においてユーザが選択するカードを推論する。図１４は、ゲームが現在備える既存のカードパックＡと新規カードパックＢとの関係を示す変換マトリクスの一例を示す図である。推論部６５は、入出力においてこの変換マトリクスをフィルタとして用いることにより、既存のカードとの関係を介して、学習データの存在しない新規カードパックのユーザが選択する可能性が高いカードを推論する。このような構成とすることにより、ゲームに新たにカードを追加する場合、ゲームログが取得できていない追加されたカードのデバッグを効率的に行うことが可能となる。この変換マトリクスは、カードの仕様や機能の趣旨を鑑みて、ゲーム運営者などにより設定される。例えば、図１４に示す変換マトリクスにおいては、新規カードＢ１は、既存カードＡ１の割合が０．９、既存カードＡｎの割合が０．１となるようなカードであり、ほぼ既存カードＡ１と同様の仕様又は機能の趣旨を有することが分かる。なお、新規カードパックＢは、新規に追加したカードだけではなく、新規に追加したカードを含むゲームが備えるすべてのカードの種類を含むものとしてもよい。他の例では、推論部６５は、入力又は出力においてのみ変換マトリクスをフィルタとして用いる。他の例では、学習部６４は、作成されたテンソルデータを学習データとして用いて機械学習を行う場合、当該テンソルデータに対して変換マトリクスをフィルタとして用いて学習データを再生成し、ニューラルネットワークモデルを生成する。このような構成とすることにより、ゲームログが含まない新規カードパックに関する情報を反映させたニューラルネットワークモデルを生成することが可能となる。
【００７４】
検査サーバ３０は、図７に示すように、検査部６６及び検査履歴データベース６７を備える。検査部６６は、ゲームが進行したときのゲーム状態におけるユーザによるカードの選択として推論部６５により推論されるカードを用いてゲームプログラムを実行することによりゲームプログラムを検査する。
【００７５】
具体的には、検査部６６は、ゲームプログラムを実行し、ユーザによるカードの選択が必要となるときには、そのときのゲーム状態に関する情報、例えばカード情報マトリクスを推論部６５に受け渡す。推論部６５は、生成された学習モデルを用いて、検査部６６より受け取ったカード情報マトリクスからユーザが次に選択するカードを推論し、その情報を検査部６６に受け渡す。検査部６６は、推論部６５により出力されたカードをユーザにより選択されたカードとして用いて、ゲームプログラムを実行することによりゲームプログラムを検査する。好ましくは、検査部６６は、ユーザによるカードの選択として、推論部６５により出力されるカードのうち、尤度の高いカードから順番に用いてゲームプログラムを実行することによりゲームプログラムを検査する。検査部６６は、上記の動作を繰り返し、任意の不整合状態を検出した場合、又はセグメンテーション違反のような明示的な例外をＯＳより検出した場合などにバグを検出する。１つの例では、一般的な商用製品としてのゲームは、不整合状態を検出する機能を備えるため、検査部６６は、一般的にゲームが備える不整合状態検出機能を用いて、バグを検出する。
【００７６】
検査履歴データベース６７は、検査部６６がゲームプログラムを実行することにより実際に検査を行った、ゲーム状態に関する情報と、そのときのユーザ選択カードとして用いたカード情報とを記憶する。検査部６６は、検査履歴データベース６７を参照することにより、例えば任意のゲーム状態において、以前にユーザ選択カードとして用いたカードを再び選択してゲームプログラムを実行することを防止することが可能となる。
【００７７】
図１５は、本実施形態における検査サーバ３０及び情報処理装置１０による検査処理のフローチャートの一例を示す図である。まずステップ１０１で、検査サーバ３０は、ゲームプログラムを実行し、ユーザによるカード選択が必要になると、ステップ１０２で、そのときのゲーム状態に関する情報を情報処理装置１０に送信する。好適な１つの例では、そのときのゲーム状態に関する情報は、そのときのカード情報マトリクスである。
【００７８】
次にステップ１０３で、情報処理装置１０は、ゲーム状態に関する情報を受信し、その情報を入力として、生成されたＮＮモデルを用いることにより、ユーザが選択するカードをランク付けて決定する。このとき、情報処理装置１０は、ユーザが選択する尤度が閾値以上のカードを決定し、決定されたカードの中で尤度が高い順番にカードをソートする。例えば情報処理装置１０は、ユーザが選択する尤度が高いカードから、「０」番目、「１」番目…、と番号を割り当てる。番号の割り当ては、ゲーム状態ごとに行われる。このように尤度が最も高いカード以外のカードを選択する余地を残すことにより、情報処理装置１０が、１つのゲーム状態において、ユーザが選択するカードとして１つのカードのみ決定し続けてしまうことを防止することが可能となる。
【００７９】
次にステップ１０４で、情報処理装置１０は、ランク付けしたカードのｉ番目を選択する。ここでは、ユーザが選択する可能性が高いカードから選択するため、ｉの初期値は「０」となる。
【００８０】
次にステップ１０５で、情報処理装置１０は、当該ゲーム状態に関する情報及び選択されたカード情報の組み合わせが検査履歴データベース６７に格納されているか否かについて検査サーバ３０に問い合わせのデータを送信し、検査サーバ３０はそれに対して応答する。当該ゲーム状態に関する情報及び選択されたカード情報の組み合わせが検査履歴データベース６７に格納されていない場合、検査処理はステップ１０８へ進み、格納されている場合、検査処理はステップ１０６へ進む。
【００８１】
ステップ１０６では、情報処理装置１０は、ステップ１０４で選択されたｉ番目の次のｉ＋１番目のランク付けしたカードの有無を判定する。カードが有る場合、検査処理は、ステップ１０７へ進んでｉを１つ増加し、ステップ１０４へ戻る。カードが無い場合、検査処理は、ステップ１０８へ進む。ここでステップ１０８へ進む場合、情報処理装置１０は、好ましくは、ｉの値を初期値として、ランク付けしたカードの０番目のカードを選択する。
【００８２】
ステップ１０８では、情報処理装置１０は、選択されたカードの情報を検査サーバ３０へ送信する。
【００８３】
次にステップ１０９で、検査サーバ３０は、選択されたカードの情報を受信し、そのカードを選択する操作を行い、ゲームプログラムを実行する。
【００８４】
次に、ステップ１１０で、検査サーバ３０は、ゲームプログラムを継続して実行する場合はステップ１０１へ戻り、ゲームプログラムの実行を終了する場合、本検査処理を終了する。例えば、検査サーバ３０は、任意の不整合状態を検出した場合、又はセグメンテーション違反のような明示的な例外をＯＳより検出した場合など、ゲームプログラムが異常終了した場合、本検査処理を終了する。好ましくは、検査サーバ３０は、上記のようなバグを検出した場合、検査サーバ３０とネットワークを介して接続された管理者用パソコンなどに、バグ検出に関する情報を送信するように構成される。
【００８５】
次に、本発明の実施形態による検査システム１の主な作用効果について説明する。本実施形態では、テンソルデータ作成部６３は、ゲームの進行状況に合わせて蓄積されていくゲームログであって、ゲームフィールド４３と所有カード群のカード情報を含むゲームログから、例えば図１３に示すような構造を持つテンソルデータを作成する。学習部６４は、機械学習可能な形式に作成されたテンソルデータを用いて機械学習を行うことによりＮＮモデル（学習モデル）を生成し、推論部６５は、生成されたＮＮモデルを用いて任意のゲーム状態においてユーザが選択するカードを推論する。検査部６６は、ゲームが進行したときのゲーム状態におけるユーザによるカードの選択として推論部６５により推論されるカードを用いてゲームプログラムを実行することによりゲームプログラムを検査する。
【００８６】
このように、テンソルデータ作成部６３が、ユーザの行動を反映するゲームログから機械学習可能なテンソルデータ構造を作成する構成とすることにより、任意のゲーム状態において人間が選択する可能性が高いカードを推論するための学習モデルを生成することが可能となる。
【００８７】
また本実施形態では、テンソルデータ作成部６３が作成するテンソルデータにおいては、テンソル内の各要素は、カードの有無に応じて、例えば「０」〜「１」の実数が格納される。そのため、テンソルデータ作成部６３が作成するテンソルデータ構造は、ゲーム運営者などによりゲームの内容が一部変更された場合、例えば一部のカード定義情報が変更された場合や新たな種類のカードが追加された場合であっても、構造自体には影響が無いものである。また本実施形態では、情報処理装置１０は、ゲームログの追加分を抽出し、当該新たに取得したゲームログに基づいて３次元配列データを作成することによりテンソルデータを作成する。例えば、図１３に示すテンソルデータ構造においては、情報処理装置１０は、新たに作成された３次元配列データを、ユーザ軸、追記回数軸、及びクラス軸で構成される座標上に格納する。この場合、情報処理装置１０は、新規ユーザからゲームログを取得した場合、テンソルデータ作成部６３は、３次元配列データを新たなユーザ軸の座標に格納する。新たなクラスの種類のゲームログ、又は新たなバトル回数のゲームログを取得した場合においても同様である。このような構成とすることにより、本実施形態では、テンソルデータ作成部６３が作成するテンソルデータの構造は不変であるため、継続的にＮＮモデルに学習させることが可能となる。このように、本実施形態による検査システム１は、テンソルデータが継続的に拡張されること前提として追記型のモデルを採用しており、長期間運用されるゲームタイトルに適したものである。
【００８８】
また本実施形態では、主として学習部６４及び推論部６５により、任意のゲーム状態において、人間が選択する可能性が高いカードを自動的に選択するＡＩボットを実現している。検査部６６は、このＡＩボットを用いて、テストプレイを行うことで、ユーザが遭遇する確率が高いバグから優先的に発見し続けることが可能となる。
【００８９】
例えば、従来のＱＡでは、ユーザの操作ログの膨大な組み合わせの中から、エンジニアが経験的に設定した優先度で検証を行っており、実際のユーザの操作動向を定量的に反映することは困難であった。特に、継続的に提供されるオンラインゲームでは、ユーザの動向も時間に伴い変化するため、ユーザの実際の動向をＱＡプロセスに反映することが求められていた。上記のような構成とすることにより、本実施形態では、人力でのテストプレイによる網羅的な検証が極めて困難な実質的に無限の組み合わせが発生するカードバトルゲーム等において、ユーザのプレイ傾向を反映させて、ユーザが遭遇する確率が高いバグを優先的に発見することが可能となる。なお、本実施形態では、特定のバグ検出方式には一切依存しておらず、アプリ側でバグの発生そのものを検出可能でさえあれば、任意の原因のバグを検出することが可能である。
【００９０】
また本実施形態では、ゲームに新たなカードが追加されるとき、推論部６５は、追加されるカードとゲームが備えるカードとの関係を示す変換マトリクスを更に用いて任意のゲーム状態においてユーザが選択するカードを推論する。学習データが存在しない新規なカードを追加する場合、上記のように変換マトリクスをＮＮモデルの入出力部分にフィルタとして用いることにより、ゲームログの存在しないカードについて、検査システム１がゲームプログラムを検査することが可能となる。これにより、新規カードパックの追加時のコールドスタート問題、すなわち学習すべきデータが存在しない状態で推論をする必要があるという問題に、変換マトリクスを用いて対応することが可能となる。
【００９１】
上記の作用効果は、特に言及が無い限り、他の実施形態や他の実施例においても同様である。
【００９２】
本発明の他の実施形態では、上記で説明した本発明の実施形態の機能やフローチャートに示す情報処理を実現するプログラムや該プログラムを格納したコンピュータ読み取り可能な記憶媒体とすることもできる。また他の実施形態では、上記で説明した本発明の実施形態の機能やフローチャートに示す情報処理を実現するための学習データのデータ構造とすることもできる。また他の実施形態では、上記で説明した本発明の実施形態の機能やフローチャートに示す情報処理を単独で実現する電子装置とすることもできる。また他の実施形態では、上記で説明した本発明の実施形態の機能やフローチャートに示す情報処理を実現する方法とすることもできる。また他の実施形態では、上記で説明した本発明の実施形態の機能やフローチャートに示す情報処理を実現するプログラムをコンピュータに供給することができるサーバとすることもできる。また他の実施形態では、上記で説明した本発明の実施形態の機能やフローチャートに示す情報処理を実現する仮想マシンとすることもできる。
【００９３】
本発明の他の実施形態では、情報処理装置１０は、機械学習支援装置と、機械学習装置と、推論装置とを備える。例えば機械学習支援装置は、ゲームログ取得部６２及びテンソルデータ作成部６３を備え、機械学習装置は、学習部６４を備え、推論装置は、推論部６５を備えるものであり、各々コンピュータなどにより実現される。
【００９４】
以上に説明した処理又は動作において、あるステップにおいて、そのステップではまだ利用することができないはずのデータを利用しているなどの処理又は動作上の矛盾が生じない限りにおいて、処理又は動作を自由に変更することができる。また以上に説明してきた各実施例は、本発明を説明するための例示であり、本発明はこれらの実施例に限定されるものではない。本発明は、その要旨を逸脱しない限り、種々の形態で実施することができる。
【符号の説明】
【００９５】
１  検査システム
２  ネットワーク
１０  情報処理装置
１１  プロセッサ
１２  入力装置
１３  出力装置
１４  記憶装置
１５  通信装置
１６  バス
２０  ゲームサーバ
２１  プロセッサ
２２  入力装置
２３  出力装置
２４  記憶装置
２５  通信装置
２６  バス
３０  検査サーバ
３１  プロセッサ
３４  記憶装置
３５  通信装置
４０  ゲーム画面
４１  カード
４２  第１のカード群
４３  ゲームフィールド
４４  第２のカード群
４５  キャラクタ
６１  ログデータベース
６２  ゲームログ取得部
６３  テンソルデータ作成部
６４  学習部
６５  推論部
６６  検査部
６７  検査履歴データベース
【図１】
2019164753.tif 000003
【図２】
2019164753.tif 000004
【図３】
2019164753.tif 000005
【図４】
2019164753.tif 000006
【図５】
2019164753.tif 000007
【図６】
2019164753.tif 000008
【図７】
2019164753.tif 000009
【図８】
2019164753.tif 000010
【図９】
2019164753.tif 000011
【図１０】
2019164753.tif 000012
【図１１】
2019164753.tif 000013
【図１２】
2019164753.tif 000014
【図１３】
2019164753.tif 000015
【図１４】
2019164753.tif 000016
【図１５】
2019164753.tif 000017