(57)【要約】  ユーザ行動を実行することによりログデータを出力するシステムにおけるシステム状態を推定するシステム状態推定装置において、予め蓄積したログデータを用いて、システム状態及びユーザ行動と、当該システム状態において当該ユーザ行動をとったときのログデータとを関連付ける確率モデルを作成するモデル作成部と、システム状態の確率分布及び前記確率モデルに基づいて、前記システムにおけるシステム状態の特定に寄与するユーザ行動を決定する行動決定部とを備える。
2019240229.tif 000002
【特許請求の範囲】
【請求項１】
ユーザ行動を実行することによりログデータを出力するシステムにおけるシステム状態を推定するシステム状態推定装置であって、
予め蓄積したログデータを用いて、システム状態及びユーザ行動と、当該システム状態において当該ユーザ行動をとったときのログデータとを関連付ける確率モデルを作成するモデル作成部と、
システム状態の確率分布及び前記確率モデルに基づいて、前記システムにおけるシステム状態の特定に寄与するユーザ行動を決定する行動決定部と
を備えることを特徴とするシステム状態推定装置。
【請求項２】
前記行動決定部は、決定されたユーザ行動を実行した前記システムから出力されるログデータを収集し、当該ログデータに基づいて前記確率分布を更新し、更新した確率分布及び前記確率モデルに基づいて、前記システムにおけるシステム状態の特定に寄与するユーザ行動を決定する処理を、前記システムにおけるシステム状態を特定できるまで繰り返し実行する
ことを特徴とする請求項１に記載のシステム状態推定装置。
【請求項３】
前記行動決定部は、前記繰り返し実行する処理において、あるシステム状態の確率が閾値を超えた場合に、当該システム状態を前記システムのシステム状態として特定する
ことを特徴とする請求項２に記載のシステム状態推定装置。
【請求項４】
前記行動決定部は、システム状態の特定に寄与するユーザ行動として、システム状態の確率分布のエントロピーを最小化するユーザ行動を決定する
ことを特徴とする請求項１ないし３のうちいずれか１項に記載のシステム状態推定装置。
【請求項５】
前記行動決定部は、システム状態の特定に寄与するユーザ行動として、Ｑ学習で決定された関数に状態候補とユーザ行動を入力して得られる値を最大とするユーザ行動を決定する
ことを特徴とする請求項１ないし３のうちいずれか１項に記載のシステム状態推定装置。
【請求項６】
ユーザ行動を実行することによりログデータを出力するシステムにおけるシステム状態を推定するシステム状態推定装置により実行されるシステム状態推定方法であって、
予め蓄積したログデータを用いて、システム状態及びユーザ行動と、当該システム状態において当該ユーザ行動をとったときのログデータとを関連付ける確率モデルを作成するモデル作成ステップと、
システム状態の確率分布及び前記確率モデルに基づいて、前記システムにおけるシステム状態の特定に寄与するユーザ行動を決定する行動決定ステップと
を備えることを特徴とするシステム状態推定方法。
【請求項７】
コンピュータを、請求項１ないし５のうちいずれか１項に記載のシステム状態推定装置における各部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザ行動に伴いログを出力するシステムにおけるシステム状態を推定する技術に関連するものである。
【背景技術】
【０００２】
近年急速に大規模化してきた通信システムは、数千・数万台の装置から構成され、発生する障害の種類も多岐に渡るため、障害対応には非常に多くの時間を要している。特に、障害の要因を突き止める切り分け作業は、オペレータの多大な稼働を割くものであるため、自動化する機構の需要が高まっている。【０００３】
一般に障害の要因特定では、装置が出力するシステムログ（以下単にログと呼ぶ）に含まれる情報を活用することが多い。通常、ログは人力での確認が困難なほど膨大な量が出力されるため、自動で解析する技術が開発されてきた。多くの従来技術では、膨大な量の観測ログデータを入力とした機械学習的手法により、イベント間の因果関係を獲得したり、ログデータと障害要因を関連付けるルール作成を行ったりすることで、障害発生時の要因特定を自動化、迅速化している（非特許文献１）。【０００４】
しかしながら、そうした手法の多くは機器の定期監視により受動的に得られるログ（これを監視ログと呼ぶ）に基づいているため、異なる障害要因で同じようなログを出力してしまうものに関しては、それらを切り分けることができないという問題点があった。【０００５】
そこで、監視ログだけでなく、「仮想マシンの起動」や「ボリュームの削除」などのシステムユーザが通常行うような行動（これをユーザ行動と呼ぶ）を、システム管理者が能動的に実行し、その際に出力されるログ（これを行動ログと呼ぶ）も合わせて要因特定に用いる手法が開発された（非特許文献２）。【０００６】
非特許文献２に開示された技術は、異なる障害要因において、監視ログには差異が表れなくても、行動ログには差異が表れることがあるという事実を利用したものである。非特許文献２では、事前に、テストベッド環境システム又は運用前の実環境システムにおいて様々な障害時における様々なユーザ行動に対する行動ログを網羅的に蓄積しておいて、運用中の実環境システムで障害が発生した際は、管理者側が網羅的にあらゆるユーザ行動を（自動）実行しその際の行動ログを収集、分析して障害要因を特定するというものである。【０００７】
管理者側がなんらかの行動を実行して情報を得るという観点からは、有効と思われる行動を優先的に選択して実行し要因特定を自動化、迅速化するという技術が存在する（非特許文献３、４）。非特許文献３、４では管理者の行動に対しシステムがフィードバックを返し、そのフィードバックに応じて次にとるべき行動を決定する、という動作をし、適切な行動を適切な順序で実行することが可能となり迅速な要因特定が達成される。しかしこれらの手法は、ユーザ行動ではなく、pingコマンドなどの運用管理用の切り分け行動を対象としており、特にそのフィードバックが「ping疎通成功」、「ping疎通失敗」のように二値をとるような簡単なものに限定されている。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】S. P. Kavulya, K. Joshi, F. D. Giandomenico, and P. Narasimhan, "Failure diagnosis of complex systems," Resilience assessment and evaluation of computing systems, Springer, pp. 239-261, 2012.
【非特許文献２】池内光希，渡邉暁，川田丈浩，川原亮一，「ユーザ行動に起因するログを用いた障害要因推定技術の検討」， 信学会総合大会，B-7-18，2018．
【非特許文献３】K. R. Joshi, M. A. Hiltunen, W. H. Sanders, and R. D. Schlichting, "Probabilistic model-driven recovery in distributed systems," IEEE Transaction on Dependable and Secure Computing, vol. 8, no. 6, pp. 913-928, 2011.
【非特許文献４】M. L. Littman, N. Ravi, E. Fenson, and R. Howard, "An Instance-based State Representation for Network Repair", in Proc. of the 19th National Conference on American Association for Artificial Intelligence (AAAI), pp. 287-292, 2004.
【発明の概要】
【発明が解決しようとする課題】
【０００９】
非特許文献２に開示された技術では実際の障害要因特定の際に、障害中の実環境システムに対し網羅的にユーザ行動を実行してログを収集する必要がある。しかしこの行為は、実環境システムに多大な負荷を与えシステム状態を悪化させる危険性がある。また、例えばクラウドシステムの場合、ユーザ行動の種類は少なくとも数十にのぼり、これらを全て実行しログを収集することは長い時間を要し、結果として障害要因特定が長引いてしまう恐れがある。したがって、非特許文献２の障害要因特定においては、適切なユーザ行動を適切な順番で行えるような機構が必要となる。【００１０】
非特許文献３、４に開示された技術は、行動の選択という同じような課題の解決に関するものであるが、管理者の実行した行動に対して、システムが二値では表せないログデータのような複雑なフィードバックを返すような状況に適用することはできない。【００１１】
本発明は上記の点に鑑みてなされたものであり、ユーザ行動を用いたシステム状態の特定の際に、適切なユーザ行動を適切な順番に実行することを可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【００１２】
開示の技術によれば、ユーザ行動を実行することによりログデータを出力するシステムにおけるシステム状態を推定するシステム状態推定装置であって、
予め蓄積したログデータを用いて、システム状態及びユーザ行動と、当該システム状態において当該ユーザ行動をとったときのログデータとを関連付ける確率モデルを作成するモデル作成部と、
システム状態の確率分布及び前記確率モデルに基づいて、前記システムにおけるシステム状態の特定に寄与するユーザ行動を決定する行動決定部と
を備えることを特徴とするシステム状態推定装置が提供される。
【発明の効果】
【００１３】
開示の技術によれば、ユーザ行動を用いたシステム状態の特定の際に、適切なユーザ行動を適切な順番に実行することを可能とする技術が提供される。
【図面の簡単な説明】
【００１４】
【図１】障害要因推定装置１０の機能構成図である。
【図２】障害要因推定装置１０のハードウェア構成例を示す図である。
【図３】ログメッセージ列のＩＤ化を説明するための図である。
【図４】ログＩＤ番号列の特徴ベクトル化を説明するための図である。
【図５】行動決定部１２の処理のフローチャートである。
【図６】実施例における処理を説明するための図である。
【図７】実施例における処理を説明するための図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態（本実施の形態）を説明する。以下で説明する実施の形態は、本発明をシステム障害の要因特定に適用する場合の例であるが、本発明はシステム障害の要因特定に限らず、他のシステム状態の特定にも適用することが可能である。
【００１６】
（実施の形態の概要）
本実施の形態では、システム運用において、通信システム内で発生した障害の要因を自動で特定することとしている。特に定期的な監視ログだけでは差異が見いだせず切り分けが困難な障害に対し、ユーザ行動に伴い出力されるログも用いることで従来技術より迅速かつシステムに与える処理負荷の少ない要因特定を可能にする。
【００１７】
後述するように、障害要因推定装置１０が使用される。障害要因推定装置１０は、正常時及び障害時のあらゆるユーザ行動に伴うログデータが蓄積してある学習データ蓄積部内のログデータを用いて、システム状態及びユーザ行動とそのときに現れやすいログデータを関連付けるモデルを作成する。また、運用中のシステムから観測ログデータを収集し、当該モデルを用いて、システム状態の切り分けのために有効なユーザ行動を決定し、それを実行しフィードバックとして観測ログデータを新たに取得することで、障害要因候補を逐次的に絞っていく。
【００１８】
システム状態の切り分けのために有効なユーザ行動を決定するために、障害要因推定装置１０は、例えば、オンラインのシステムから得られるログを元に、上記モデルを用い、最も障害要因の候補を狭めることが出来そうなユーザ行動をその都度算出し選択する。
【００１９】
また、システム状態の切り分けのために有効なユーザ行動を決定するために、障害要因推定装置１０は、行動に対してログのような数値化されていないフィードバックを返すようなシステムにおいて、上記モデル内で要因特定問題をシミュレートし様々な行動を実行することで、オンラインの切り分け時に実行すべき適切なユーザ行動を決めるための方策を事前に学習しておき、オンラインでの切り分けの際にはその方策に従ってユーザ行動を選択することとしてもよい。
【００２０】
（装置構成、動作概要）
図１に、本発明の実施の形態における障害要因推定装置１０の機能構成例を示す。図１に示すように、障害要因推定装置１０は、モデル作成部１１、行動決定部１２、ベクトル変換部１３、１４、ユーザインタフェース１５、行動実行部１６を有する。また、図示されるとおり、障害要因推定装置１０は、実環境システム２０及び学習データ蓄積部３０と通信可能に接続されている。なお、モデル作成部１１がベクトル変換部１４を含み、行動決定部１２がベクトル変換部１３を含むこととしてもよい。また、障害要因推定装置１０はシステム状態を推定する装置であるので、これをシステム状態推定装置と称しても良い。動作の概要は下記のとおりである。
【００２１】
学習データ蓄積部３０には、非特許文献２に開示された技術により生成された障害時の行動ログデータが学習データとして蓄積されている。ベクトル変換部１４は、学習データ蓄積部３０から学習データを取得し、当該学習データを特徴ベクトル化する。モデル作成部１１は、特徴ベクトル化された学習データからモデルを作成する。
【００２２】
ベクトル変換部１３は、実環境システム２０からオンラインでログデータを収集し、実データを特徴ベクトル化する。行動決定部１２は、モデル作成部１１により作成されたモデル、及び実環境システム２０からオンラインで得られたログデータ（特徴ベクトル化されたもの）に基づき、次にどの行動を実行すればよいかを決定する。ユーザインタフェース１５は、運用者等のユーザに、実行すべき行動や要因特定結果を通知する。行動実行部１６は、行動決定部１２により決定された行動を実環境システム２０に対して実行する。
【００２３】
モデル作成部１１では、特徴ベクトル化した学習データに基づき、ある障害時にある行動をとったとき、どのような特徴ベクトル（に対応するログ）が得られやすいかというモデルを作成する。ここで作成したモデルによって、例えば実環境システム２０からログが得られたときに、ある障害時にあるユーザ行動をとった確率に相当する値が数値的に計算できるようになる。このモデルは行動決定部１２で用いられる。
【００２４】
行動決定部１２は、まず障害要因候補に対し、各候補の確率分布を定義する。その確率分布に基づき所定のアルゴリズムに基づいて実行すべきユーザ行動を決定する。決定したユーザ行動は行動実行部１６により実行される。続いて、行動決定部１２は、そのフィードバックとして得られたログを特徴ベクトル化したものに基づき、障害要因候補の確率分布を更新する。更新された確率分布を元に次のユーザ行動を決定、実行する。
【００２５】
以上の過程を繰り返すことで、最終的に障害要因候補を一意に絞りこみ要因特定を達成する。このようなユーザ行動の順序考慮、選択実行により、全ユーザ行動を実行する非特許文献２の技術よりも少ないユーザ行動数で要因特定を達成することができる。
【００２６】
上述した障害要因推定装置１０は、例えば、コンピュータに、本実施の形態で説明する処理内容を記述したプログラムを実行させることにより実現可能である。
【００２７】
すなわち、障害要因推定装置１０は、コンピュータに内蔵されるＣＰＵやメモリ等のハードウェア資源を用いて、障害要因推定装置１０で実施される処理に対応するプログラムを実行することによって実現することが可能である。上記プログラムは、コンピュータが読み取り可能な記録媒体（可搬メモリ等）に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メール等、ネットワークを通して提供することも可能である。
【００２８】
図２は、本実施の形態における上記コンピュータのハードウェア構成例を示す図である。図２のコンピュータは、それぞれバスＢで相互に接続されているドライブ装置１５０、補助記憶装置１５２、メモリ装置１５３、ＣＰＵ１５４、インタフェース装置１５５、表示装置１５６、及び入力装置１５７等を有する。
【００２９】
当該コンピュータでの処理を実現するプログラムは、例えば、ＣＤ−ＲＯＭ又はメモリカード等の記録媒体１５１によって提供される。プログラムを記憶した記録媒体１５１がドライブ装置１５０にセットされると、プログラムが記録媒体１５１からドライブ装置１５０を介して補助記憶装置１５２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１５１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１５２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００３０】
メモリ装置１５３は、プログラムの起動指示があった場合に、補助記憶装置１５２からプログラムを読み出して格納する。ＣＰＵ１５４は、メモリ装置１５３に格納されたプログラムに従って、当該装置に係る機能を実現する。インタフェース装置１５５は、ネットワークに接続するためのインタフェースとして用いられる。表示装置１５６はプログラムによるＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）等を表示する。入力装置１５７はキーボード及びマウス、ボタン、又はタッチパネル等で構成され、様々な操作指示を入力させるために用いられる。
【００３１】
（各部の詳細説明）
以下、上述した構成における主要な機能部をより詳細に説明する。以下では、まず、非特許文献２の技術に基づく学習データ蓄積部３０の蓄積データについてその概要を説明し、その後に、モデル作成部１１、行動決定部１２について詳細に説明する。特に行動決定部１２の処理内容に関しては、二つの実現方式「最小エントロピー法」、「強化学習による方法」を説明する。
【００３２】
（学習データ蓄積部３０）
まず、本明細書で使用するいくつかの用語の定義を説明する。「システム状態ｓ」とは、システムの障害の種類を表し、オペレータが特定したい障害要因と同一視する。システム状態の集合Ｓは、Ｓ＝｛０，１，...，ｍ｝のように記す。例えば、高々一つのプロセスが異常終了した状況において、異常終了したプロセスを（存在するかも含め）特定したいのであれば、ｓ＝０を正常状態（障害が起きていない状態）、ｓ∈Ｓ−｛０｝をｓ番目のプロセスが異常終了した状態、といったように定義すればよい。「ユーザ行動ａ」とは、システムを利用する際に、ユーザが行うことのできるアクションを表す。
【００３３】
例えば、システムとして本発明の適用先の好例であるＩａａＳクラウドサービスを考えると、「仮想マシン（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ；ＶＭ）を起動する」、「ＶＭにｓｓｈログインする」などがユーザ行動にあたる。ユーザ行動集合をＡ＝｛０，１，...，ｎ｝で表す。特にａ０は何も行動を起こさないことを表すものとする。
【００３４】
「行動ログ」とはシステム状態ｓの際にユーザ行動ａをとったときに発生する一連のログメッセージ列のことである。例えば参考文献１（T. Kimura, A. Watanabe, T. Toyono, and K. Ishibashi, "Proactive failure detection learning generation patterns of large-scale network logs," in Proc. of the 11th International Conference on Network and Service Management (CNSM), pp. 8-14, 2015.）のログテンプレート化技術を用い、同種のログメッセージには同じＩＤ番号、異種のログメッセージには異なるＩＤ番号を付与することで、行動ログはＩＤ番号列とみなすことができる。これをＬｓａのように表す。ｓがｍ＋１種類（｜Ｓ｜＝ｍ＋１）、ａがｎ＋１種類（｜Ａ｜＝ｎ＋１）なので、行動ログは（ｍ＋１）（ｎ＋１）種類あることになる：｛Ｌｓａ｜ｓ∈Ｓ，ａ∈Ａ｝。
【００３５】
非特許文献２に開示された技術では、テストベッド環境システム又は運用前の実環境システムにおいて、この（ｍ＋１）（ｎ＋１）種類の行動ログをデータベースに保管している状況を考えている。なお、ａ＝０に対応するＬｓ０は、行動なしの際に発生するログなので監視ログとみなすことができる。すなわち、この定義の下では行動ログは監視ログを含む。
【００３６】
行動ログＬｓａは試行のたびに毎回少しずつ揺らぎが生ずることが考えられる。そこで本実施の形態では、各（ｓ，ａ）に対しＬｓａは一つずつではなく複数のサンプルＬｓａ（１），Ｌｓａ（２），...，Ｌｓａ（Ｋ）（Ｋは試行回数）を蓄積している状況を仮定する。
【００３７】
図３に、ログメッセージ列のＩＤ番号列化の例として、６つのログメッセージからなるログメッセージ列を示す。当該ログメッセージ列は、システム状態ｓのときにユーザ行動ａを実行した際に生じたものとする。図３に示すとおり、Ｌｓａ（ｋ）＝［１，２，４，５，７，５］としてログＩＤ番号列が生成されている。
【００３８】
なお、この例において、四番目と六番目のログメッセージはパラメタ（ｒｅｑ−１３５７９とｒｅｑ−４３２１０など）は違うものの内容は同種のものなので，同じＩＤ番号５が振られている。また、本例は、クラウド環境においてｓとしてＶＭ関連プロセス停止、ａとしてＶＭ起動コマンド実行とした際に得られる行動ログから一部を抜粋した上でプロセス名やパラメタを加工して作られているものである。
【００３９】
（モデル作成部１１）
次に、モデル作成部１１について説明する。モデル作成部１１の処理は、上述した学習データの蓄積に続き、オフラインで事前に実行しておく。モデル作成部１１の役割は、学習データ蓄積部３０に蓄積された行動ログを体系的な形で加工することであり、実際に要因特定に関わる行動決定部１２で必要となるモデルを作ることである。モデル作成は次の「＜ステップ１０１＞行動ログの特徴ベクトル化」、「＜ステップ１０２＞代表ベクトルの生成」、「＜ステップ１０３＞確率モデルの作成」のステップで実行される。以下のステップ１０１はベクトル変換部１４により実行され、ステップ１０２、１０３はモデル作成部１１により実行される。
【００４０】
＜ステップ１０１＞行動ログの特徴ベクトル化
各（ｓ，ａ）に対し、学習データとして学習データ蓄積部３０に蓄積されている行動ログの各サンプルＬｓａ（ｋ）（ｋ＝１，２，...，Ｋ）を特徴ベクトルｘｓａ（ｋ）（ｋ＝１，２，...，Ｋ）に変換する。変換の方法は任意であるが、ここでは、一例として、各ログＩＤが出たか出ないかを特徴量として並べたもの特徴ベクトルとする。すなわち全ログＩＤを１，２，...，Ｎとして、ｘｓａ（ｋ）はＮ次元ベクトルであり、ログＩＤ番号ｉがＬｓａ（ｋ）の中に出現していたらｘｓａ，ｉ（ｋ）＝１、出現していなかったらｘｓａ，ｉ（ｋ）＝０とする。ただし、ｘｓａ，ｉ（ｋ）はＮ次元ベクトルｘｓａ（ｋ）の第ｉ成分である。
【００４１】
特徴ベクトル化の例を図４に示す。図４は、図３に示したログＩＤ番号列を特徴ベクトルとした例を示す。なお、ここではログＩＤ番号の最大値をＮ＝８とした。ＩＤ番号１，２，４，５，７はＬｓａ（ｋ）に登場しているので、ｘｓａ（ｋ）の第１，２，４，５，７成分は１となり、ＩＤ番号３，６，８はＬｓａ（ｋ）に登場していないのでｘｓａ（ｋ）の第３，６，８成分は０となる。
【００４２】
＜ステップ１０２＞代表ベクトルの生成
次に、特徴ベクトルｘｓａ（ｋ）（ｋ＝１，２，...，Ｋ）を用いて、各（ｓ，ａ）に対して代表ベクトル＾ｘｓａをひとつずつ生成する。なお、本明細書のテキストにおいては、記載の便宜上、"＾ｘ"のように、文字の頭に付けられる＾を当該文字の前に記述する。代表ベクトルの各要素は、下記の式により計算される。
【００４３】
【数１】
2019240229.tif 000003
ここでα、βは有効観測数と呼ばれる任意の正パラメタ―である。＾ｘｓａは過去のサンプルに基づき、システム状態ｓにおいてユーザ行動ａを実行した際に各ログＩＤが出る確率を表したベクトルとみなすことができる。
【００４４】
＜ステップ１０３＞確率モデルの作成
次に、代表ベクトル＾ｘｓａを用い、（ｓ，ａ）が与えられたもとで（つまり、システム状態ｓのときにユーザ行動ａを実行したもとで）どのような特徴ベクトル（に対応した行動ログ）が得られやすいか、その確率を表す確率モデルを作成する。確率モデルの与え方も任意ではあるが、ここでは一例として、（ｓ，ａ）が与えられたもとで各ログＩＤの出現が独立であるという仮定を設けたベルヌーイ分布を使用する。なわち、（ｓ，ａ）が与えられたもとで特徴ベクトルｘ∈｛０，１｝Ｎが観測される確率Ｐａ（ｘ｜ｓ）は
【００４５】
【数２】
2019240229.tif 000004
となる。
【００４６】
（行動決定部１２）
続いて、行動決定部１２について説明する。なお、本明細書のテキストにおいては、記載の便宜上、"〜ｓ"のように、文字の頭に付けられる〜を当該文字の前に記述する。
【００４７】
行動決定部１２は、実環境システムの障害要因特定の際にオンラインで動作する。より詳細には、別技術である異常検知技術（既存技術の何を用いてもよい）やユーザ申告などにより、実環境システムに何かしらの異常が認められてから行動決定部１２は動作を始める。このときの（未知の）システム状態を〜ｓと記す。
【００４８】
行動決定部１２の役割は、システム状態〜ｓが未知の実環境システムにおいて、ユーザ行動実行により得られる行動ログ（を特徴ベクトル化したものｘ∈｛０，１｝Ｎ）及びモデル作成部１１で作成した確率モデルに基づき、できるだけ少ない手数で要因特定、すなわち〜ｓの特定ができるようにユーザ行動を選択、実行すること、またそれにより障害要因を絞り込んでいくことである。行動決定部１２は、次のステップ２０１〜２０５の手順を実行する。図５は、当該手順のフローチャートである。
【００４９】
＜ステップ２０１＞
まず、システム状態候補を表す初期確率分布φ（ｓ）（ｓ∈Ｓ）を定義する（０≦φ（ｓ）≦１  ｆｏｒ  ∀ｓ∈Ｓ，Σｓ∈Ｓφ（ｓ）＝１）。これは実環境システムがシステム状態ｓ∈Ｓである確率を示すものである。この初期確率分布の定め方は任意であり、例えば一様分布として定めたり、過去の障害頻度に応じて定めたり、監視ログのみから得られる情報に基づき従来技術を用いて定めたりすればよい。行動決定部１２には、当該初期確率分布φ（ｓ）が予め格納されていてもよいし、行動決定部１２が動作開始するタイミングで初期確率分布φ（ｓ）を計算してもよい。
【００５０】
＜ステップ２０２＞
次に、行動決定部１２は状態確率分布φ（ｓ）及び確率モデルＰａ（ｘ｜ｓ）を入力として「方策」に基づき、次に実行すべき最も有効なユーザ行動ａＢ∈Ａを出力する。「方策」については後で詳しく説明する。
【００５１】
＜ステップ２０３＞
行動決定部１２により決定されたユーザ行動ａＢを行動実行部１６により実行し行動ログを得る。なお、ユーザ行動ａＢの実行は、ユーザインタフェース１５によりユーザ行動ａＢを通知された運用者（人間）が行うこととしてもよい。この行動ログをモデル作成部１１と同様の方法で特徴ベクトル化したものを
【００５２】
【数３】
2019240229.tif 000005
と記述する。行動決定部１２は当該特徴ベクトルを取得する。
【００５３】
＜ステップ２０４＞
行動決定部１２は、観測した特徴ベクトル
【００５４】
【数４】
2019240229.tif 000006
及び確率モデルＰａ（ｘ｜ｓ）に基づき状態確率分布φ（ｓ）を「更新式」に基づき更新する：φ（ｓ）→φ´（ｓ）。「更新式」については後で詳しく説明する。
【００５５】
＜ステップ２０５＞
行動決定部１２は、更新された状態確率分布φ´（ｓ）について、あるｓ∈Ｓに対する値がある閾値よりも高ければそのｓを要因推定結果として出力する。閾値を０．５より大きく設定した場合には出力される状態は０〜ｍのいずれか一つであるが、０．５以下に設定した場合は複数のｓが出力されることもある。ｓの出力を以て行動決定部１２は動作を終了する。該当するｓが存在しなければ、更新された状態確率分布φ´（ｓ）を用いてステップ２０２からの処理を繰り返す。なお、行動決定部１２から出力されたｓは、例えばユーザインタフェース１５により運用者に提示される。
【００５６】
本実施の形態では、ステップ２０４のように、ユーザ行動を実行した行動ログを特徴ベクトル化したものを用いて状態確率分布を更新することで、２値ではないフィードバックを次に実行すべき行動に反映させている。また、非特許文献２に開示された技術ではｎ＋１種類のユーザ行動を全て実行していたのに対し、本実施の形態では確率モデルに基づき適切な行動順序を算出することで極力早くステップ２０２〜２０５のループを終了させ少ないユーザ行動数でとどめシステムへの処理負荷を減らしている。
【００５７】
以下、前述したステップ２０２の「方策」、及びステップ２０４の「更新式」について詳細に説明する。ここではそれらの実現方式として「エントロピー最小化法」と「強化学習に基づく方法」の二つの方法を説明する。いずれの方法に従った「方策」、「更新式」を実装しても、上述の課題を解決することができる。なお、「エントロピー最小化法」と「強化学習に基づく方法」に限定されるわけではなく、これら以外の方法を用いることも可能である。
【００５８】
（エントロピー最小化法）
＜エントロピー最小化法：方策＞
まず、エントロピー最小化法を用いる場合の「方策」を説明する。
【００５９】
本方法では、状態確率分布φ（ｓ）をあるｓ∈Ｓに一番偏らせると思われるユーザ行動ａを、確率モデルを用いて計算し選択する。もしユーザ行動実行の結果、実際に状態確率分布が大きく偏れば、少ないループ（ステップ２０２〜ステップ２０５の繰り返し）数で要因が特定されることになる。
【００６０】
確率分布φ（ｓ）の偏り具合は一般にエントロピーＩ（φ（ｓ））＝−Σｓφ（ｓ）ｌｎφ（ｓ）で表すことができ、偏りを大きくすることはエントロピーを小さくすることに対応するため、本方法をエントロピー最小化法と呼ぶ。本方法の詳細は下記のとおりである。
【００６１】
ユーザ行動ａを実行したとき特徴ベクトルｘを観測する確率Ｐａ（ｘ）は、状態確率分布φ（ｓ）及び確率モデルＰａ（ｘ｜ｓ）を用いてＰａ（ｘ）＝ΣｓＰａ（ｘ｜ｓ）φ（ｓ）と計算される。ユーザ行動ａを実行した結果、特徴ベクトルｘを得たとすると、そのときの状態確率分布の事後分布Ｐａ（ｓ｜ｘ）は、Ｂａｙｅｓの定理を用いてＰａ（ｓ｜ｘ）＝Ｐａ（ｘ｜ｓ）φ（ｓ）／Ｐａ（ｘ）と求められる。ここで「事後分布のエントロピーの期待値（ＥＩ）」という概念を導入し、それを次式で定める。
【００６２】
【数５】
2019240229.tif 000007
上記の第一式におけるｓ、第二式におけるｓ´は確率分布の引数を表す記号であり、明示的に現れる変数ではないことに注意されたい。第一式（ＥＩの定義式）によると、ＥＩ（ａ）はユーザ行動ａをとった際に状態確率分布の事後分布がどの程度偏るかの期待値を、状態確率分布φ（ｓ）及び確率モデルＰａ（ｘ｜ｓ）のみを用いて計算しているものであると見なすことができる。ただし、この定義式はΣｘとあるように、２Ｎ個の項の和となっており計算量が多いため、実際の計算ではある条件下で成立する第二式（ＥＩの近似式）を用いる。ここで、ｘ＊ｓａ≡ａｒｇ  ｍａｘｘＰａ（ｘ｜ｓ）であり、これは次のように簡単に得られる。
【００６３】
【数６】
2019240229.tif 000008
さて本方法における、最も有効なユーザ行動ａＢ∈Ａを決める「方策」とは次式のことである。
【００６４】
【数７】
2019240229.tif 000009
ここでＤｏｎｅはこれまでのループの中で既に行ったユーザ行動の集合である。すなわち、０〜ｎのユーザ行動は、それぞれ１回までしか行わない。
【００６５】
＜エントロピー最小化法：更新式＞
エントロピー最小化法を用いる場合の「更新式」は以下のとおりである。
【００６６】
ユーザ行動ａＢを実行し特徴ベクトル
【００６７】
【数８】
2019240229.tif 000010
を得た際の状態確率分布の更新φ（ｓ）→φ´（ｓ）は、Ｂａｙｅｓの定理を用いて次式で行う。
【００６８】
【数９】
2019240229.tif 000011
（強化学習に基づく方法）
次に、強化学習に基づく方法について説明する。
【００６９】
一般に、「『状態』そのものは観測できないが、そこに何らかの『行動』を実行することで、それに応じて確率的な『観測値』及び『報酬』が得られるという状況の中で、状態を推定しながら多くの報酬をもらえるような行動を選択し実行していくことを目指す」という意思決定問題は部分観測マルコフ決定過程（Partially Observable Markov Decision Process; POMDP）として定式化できる（参考文献２：L. P. Kaelblinga, M. L. Littman, and A. R. Cassandra, "Planning and acting in partially observable stochastic domains," Artificial Intelligence, vol. 101, no. 1-2, pp. 99-134, 1998.）。本実施の形態における問題設定も、「状態」としてシステム状態ｓ、「行動」としてユーザ行動ａ、観測値として特徴ベクトル化された観測ログｙｓａとし、「報酬」として適当な関数を定めれば、ＰＯＭＤＰの枠組みに落とし込むことができる。一般のＰＯＭＤＰは計算量的に解くことが困難な場合も多いため、本実施の形態では、本実施の形態での問題設定に合わせて簡略化した定式化を行った上で、「方策」、「更新式」を実現している。
【００７０】
＜強化学習に基づく方法：方策＞
強化学習に基づく方法を用いる場合における「方策」を説明する。
【００７１】
ＰＯＭＤＰでは、前に導入した状態確率分布φ（ｓ）のことを信念状態と呼ぶ。信念状態及び行動の関数であるＱ関数Ｑ（φ（ｓ），ａ）というものを定める。一般的にＰＯＭＤＰにおける方策は、下記の式に示すように、現在の信念状態φ（ｓ）において、Ｑ関数を最大にするような行動ａをとるというものである。
【００７２】
【数１０】
2019240229.tif 000012
上記の式においては、（ｉ）Ｑ関数の引数であるφ（ｓ）は連続値であるので計算量の観点から扱いにくい、（ｉｉ）そもそもＱ関数をどのように得るのか、という問題がある。以下では本実施の形態の問題設定を考慮した（ｉ）、（ｉｉ）に対する解決策について説明する。
【００７３】
（ｉ）に対する解決策：
通常、φ（ｓ）の離散化を行うことでこの問題を回避する。ここでは次のように状態候補Ｂを導入することにする：Ｂ＝Ψ（φ（ｓ））≡｛ｓ∈Ｓ｜φ（ｓ）≧ｑ＊｝∈２Ｓ。ここでｑ＊∈［０，１］は適当な閾値である。つまり、ｓ∈Ｓのうちで、ある一定確率ｑ＊の可能性があるものだけを集めたものをＢとしている。これにより、無限個あったφ（ｓ）が、高々２｜Ｓ｜個に落とし込める。以下、Ｑ関数もＱ（φ（ｓ），ａ）の代わりにＱ（Ｂ，ａ）を用いればよい。
【００７４】
（ｉｉ）に対する解決策：
事前に「方策学習」を行う。これには様々な方法があるが、ここでは強化学習の一手法Ｑ学習（参考文献３：R. Sutton and A. Barto, (邦訳 三上貞芳, 皆川雅章),「強化学習」, 森北出版, pp. 159-161, 2000.）に準ずる方法を説明する。
【００７５】
方策学習では、事前に様々な行動を試していく中で、最大の報酬が得られるようなＱ関数を獲得するというものである。本実施の形態では、事前に作成した確率モデルＰａ（ｘ｜ｓ）を用いて、多くの要因特定問題をシミュレーション上で生成し、方策学習を行う。要因特定問題のシミュレーションは次のように行う。
【００７６】
まず適当な〜ｓ∈Ｓをサンプルしこれを真の状態とする。もちろんこれは直接観測できない。続いて、確率１−εでＱ（Ｂ，ａ）を最大化するａを実行し、確率εでそれ以外のａを適当に選んで実行する。ただし、初めのＱ（Ｂ，ａ）の値としては適当な初期値を与えておけばよい。また行動の種類としては、ユーザ行動ａ∈Ａ＝｛０，１，...，ｎ｝に加え、終了行動ａ＝ｎ＋１も加えておく。とった行動によって次のように要因推定は進む。もしａ∈Ａ＝｛０，１，...，ｎ｝をとれば、状態候補は
【００７７】
【数１１】
2019240229.tif 000013
のように遷移し、報酬Ｒ（Ｂ）＝０を受け取る（つまり報酬はなし）。もしａ＝ｎ＋１をとれば、要因特定は終了し、｜Ｂ｜≧１かつ〜ｓ∈Ｂであれば報酬Ｒ（Ｂ）＝１／｜Ｂ｜を受け取り、それ以外の場合はＲ（Ｂ）＝０とする。これは、ａ＝ｎ＋１は「答え合わせ」の行動に相当し、状態候補の中に正解の状態が含まれていれば、その絞り込み具合に応じて候補数が小さいほど高報酬が得られるようになっている、ということである。また、いずれのａをとった場合も、Ｑ関数Ｑ（Ｂ，ａ）を一般的なＱ学習の更新式Ｑ（Ｂ，ａ）←Ｑ（Ｂ，ａ）＋α（Ｒ（Ｂ）＋γｍａｘａ´Ｑ（Ｂ，ａ´）−Ｑ（Ｂ，ａ））に従って更新する。ここでα、γはそれぞれ、学習率、割引率と呼ばれるパラメタである。このように、要因特定が終了するまで（つまりａ＝ｎ＋１がとられるまで）行動選択、実行を繰り返すのが要因特定のシミュレーションである。要因特定が終了したら、また新しい〜ｓをサンプルしてシミュレーションを繰り返す。
【００７８】
何度もシミュレーションを繰り返していくうちに、Ｑ関数が適当なものに収束していくというのがＱ学習の理論で保証されている。今回のケースの場合、主に報酬関数Ｒ（Ｂ）及び割引率γ∈（０，１）の与え方のおかげで、なるべく少ない行動数で正しく状態候補が一つに絞られていくような方策が学習されることになる。
【００７９】
以上をまとめると、本方法による「方策」は次のように与えられる。事前に十分な数のシミュレーションによる方策学習を行った後得られるＱ関数Ｑ（Ｂ，ａ）を用いて、オンラインでの要因特定におけるステップ２０２では次式で行動を決定する。
【００８０】
【数１２】
2019240229.tif 000014
ただし状態候補Ｂとは現在の状態確率分布（信念状態）φ（ｓ）によってＢ＝Ψ（φ（ｓ））≡｛ｓ∈Ｓ｜φ（ｓ）≧ｑ＊｝で求められるものである。また、エントロピー最小化法のときと同様、一度とった行動は記録しておき、二度以上実行しないようにする。
【００８１】
＜強化学習に基づく方法：更新式＞
強化学習に基づく方法を用いる場合における更新式は以下のとおりである。
【００８２】
状態確率分布φ（ｓ）の更新はエントロピー最小化法と同様で次式に従う。
【００８３】
【数１３】
2019240229.tif 000015
したがって、状態候補Ｂも同時に次式で更新される：Ｂ＝Ψ（φ（ｓ））→Ｂ´＝Ψ（φ´（ｓ））。
【００８４】
「エントロピー最小化法」、「強化学習の方法」のいずれの場合も、全てのユーザ行動を実行しても要因が特定されない場合、つまりステップ２０２〜２０５をｎ＋１回繰り返しても与えられた閾値を超えるφ´（ｓ）が算出されなかった場合はエラー（特定失敗）を出力し終了するか、一番確率の高いｓを出力して停止するものとする。また「強化学習の方法」において、状態候補Ｂの要素がひとつに絞られた場合には、それを要因特定結果として出力して停止するものとし、状態候補Ｂが空集合となってしまった場合にはエラーを返し終了するものとする。
【００８５】
（実施例）
以下、実施例として、障害要因推定装置１０の具体的な動作例を説明する。本実施例における動作は、オフラインでの準備段階の動作と、オンラインでの要因特定の動作からなる。
【００８６】
まず、オフラインでの準備段階について、図６を参照して説明する。本実施例では、Ｓ＝｛０，１，２，３｝、Ａ＝｛０，１，２，３｝とし、各（ｓ，ａ）に対するＬｓａのサンプル数をＫ＝１００とした。
【００８７】
ここではテストベッド環境システム又は運用前の実環境システム２０を用いて、十分な数（Ｋ＝１００）の行動ログが学習データ蓄積部３０に蓄積されていると仮定する。図６に示すように、障害要因推定装置１０は、学習データ蓄積部３０にアクセスし、各学習データ｛Ｌｓａ（ｋ）｝をベクトル変換部１４により特徴ベクトル｛ｘｓａ（ｋ）｝に変換する。これをモデル作成部１１に引き渡し、モデル作成部１１は、上述の方法により確率モデルＰａ（ｘ｜ｓ）を作成する。以上はあらかじめオフラインで実行しておく。なお、ここで作成した確率モデルＰａ（ｘ｜ｓ）は、オンラインで用いる行動決定部１２に事前に入力しておく。
【００８８】
続いてオンラインでの要因特定について、図７を参照して説明する。Ｓ１からＳ１１までのＳ（ステップ）に付けられた番号は時系列を表す。ここでは、未知の状態〜ｓを推定するために、前述したステップ２０５〜２０５を二ループ回し、最終的に要因推定結果ｓ＝２を出力する例を示す。ステップ２０５における閾値を０．７とする。以下では図７の具体例に沿って要因特定の流れを説明する。
【００８９】
まず、他の異常検知技術やユーザ申告を発端として要因特定が開始されると、行動決定部１２は、Ｓ０において、初期状態確率φ（ｓ）を設定する。ここでは一様分布を考える。これを図示したのが図７の左下図のグラフ（Ｓ０）であり、φ（０）＝φ（１）＝φ（２）＝φ（３）＝０．２５となっている。
【００９０】
次に、行動決定部１２は、確率モデルＰａ（ｘ｜ｓ）に基づき作られた「方策」に従って、Ｓ１において、最適な行動ａＢ＝２を決定したとする。それをＳ２において行動実行部１６に通知することとしてもよい。運用者にユーザインタフェース１５を通して通知することとしてもよい。
【００９１】
Ｓ３において行動実行部１６あるいは運用者はａ＝２を実環境システム２０で実行する。その結果、実環境システム２０は行動ログを出力し、それがベクトル変換部１３（モデル作成のときと同じ動作をするものであれば、モデル作成のときと異なる機能を用意してもよい）を経由して、Ｓ４において、特徴ベクトル
【００９２】
【数１４】
2019240229.tif 000016
として得られたとする。この
【００９３】
【数１５】
2019240229.tif 000017
を行動決定部１２への入力とし「更新式」を計算することで、Ｓ５において、行動決定部１２は新たな状態確率分布φ´（ｓ）を得る。これを図示したものが左下図のグラフ（Ｓ５）である。ここでどのｓに対してもφ（ｓ）が閾値０．７を超えていないので、要因特定のループはステップ２０２に戻る。
【００９４】
Ｓ６において、行動決定部１２が「方策」でａＢ＝１を決定し、Ｓ７でそれを通知して、Ｓ８において運用者又は行動実行部１６は実環境システム２０に対しａ＝１を実行する。
【００９５】
Ｓ９において、実環境システム２０はａ＝１に対するフィードバックとして行動ログを出力し、ベクトル変換部１３を経て特徴ベクトル
【００９６】
【数１６】
2019240229.tif 000018
を与える。これを入力として、Ｓ１０において、行動決定部１２は「更新式」に従って状態確率分布の更新を行う。更新後の状態確率分布φ´（ｓ）が左下図のグラフ（Ｓ１０）である。これによるとφ（ｓ＝２）≧０．７となっているため、要因特定のループから脱出し、Ｓ１１において、行動決定部１２は要因推定結果ｓ＝２を出力して、要因推定の動作を終了する。
【００９７】
（実施の形態の効果）
本実施の形態により、監視ログだけでは差異が見いだせず切り分けが困難であった障害に対し、有効なユーザ行動を選択実行し、その際に生ずる行動ログを用いて要因候補を絞っていくことで、運用者の知識や経験に依存することなく、従来技術よりも迅速かつ安全な要因特定が可能になる。
【００９８】
すなわち、ユーザ行動を用いた要因特定システムにおいて、障害発生時の要因特定の際に、適切な行動を適切な順番に実行することが可能となる。特に、ユーザ行動に対する実環境システムのフィードバックが行動ログのようにそのまま数値的に扱うのが困難なものでも本技術は適用できる。本技術により、ユーザ行動を用いた要因特定システムにおいて、従来よりも迅速かつ実環境システムへの負担が軽減された要因特定が可能となる。
【００９９】
（実施の形態のまとめ）
以上、説明したように、本実施の形態によれば、ユーザ行動を実行することによりログデータを出力するシステムにおけるシステム状態を推定するシステム状態推定装置であって、予め蓄積したログデータを用いて、システム状態及びユーザ行動と、当該システム状態において当該ユーザ行動をとったときのログデータとを関連付ける確率モデルを作成するモデル作成部と、システム状態の確率分布及び前記確率モデルに基づいて、前記システムにおけるシステム状態の特定に寄与するユーザ行動を決定する行動決定部とを備えることを特徴とするシステム状態推定装置が提供される。
【０１００】
前記行動決定部は、例えば、決定されたユーザ行動を実行した前記システムから出力されるログデータを収集し、当該ログデータに基づいて前記確率分布を更新し、更新した確率分布及び前記確率モデルに基づいて、前記システムにおけるシステム状態の特定に寄与するユーザ行動を決定する処理を、前記システムにおけるシステム状態を特定できるまで繰り返し実行する。
【０１０１】
前記行動決定部は、前記繰り返し実行する処理において、あるシステム状態の確率が閾値を超えた場合に、当該システム状態を前記システムのシステム状態として特定することとしてもよい。
【０１０２】
前記行動決定部は、システム状態の特定に寄与するユーザ行動として、システム状態の確率分布のエントロピーを最小化するユーザ行動を決定することとしてもよいし、Ｑ学習で決定された関数に状態候補とユーザ行動を入力して得られる値を最大とするユーザ行動を決定することとしてもよい。
【０１０３】
以上、本実施の形態について説明したが、本発明はかかる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【０１０４】
本特許出願は２０１８年６月１４日に出願した日本国特許出願第２０１８−１１３８７２号に基づきその優先権を主張するものであり、日本国特許出願第２０１８−１１３８７２号の全内容を本願に援用する。
【符号の説明】
【０１０５】
１０  障害要因推定装置
１１  モデル作成部
１２  行動決定部
１３、１４  ベクトル変換部
１５  ユーザインタフェース
１６  行動実行部
２０  実環境システム
３０  学習データ蓄積部
１５０  ドライブ装置
１５１  記録媒体
１５２  補助記憶装置
１５３  メモリ装置
１５４  ＣＰＵ
１５５  インタフェース装置
１５６  表示装置
１５７  入力装置
【図１】
2019240229.tif 000019
【図２】
2019240229.tif 000020
【図３】
2019240229.tif 000021
【図４】
2019240229.tif 000022
【図５】
2019240229.tif 000023
【図６】
2019240229.tif 000024
【図７】
2019240229.tif 000025
【国際調査報告】
2019240229.tif 000026
2019240229.tif 000027
2019240229.tif 000028
2019240229.tif 000029