(57)【要約】【課題】補完の影響による判別精度の劣化を抑制できる学習プログラム、学習方法および学習装置を提供する。【解決手段】学習プログラムは、複数の項目を有するレコードをデータ単位とする複数ログから生成された入力データを入力する処理をコンピュータに実行させる。学習プログラムは、入力データの項目の一部の値が欠落している補完対象レコードに対し、欠落した値の少なくとも一部を候補値から補完した変換データを生成する処理をコンピュータに実行させる。学習プログラムは、変換データを、入力テンソルデータをテンソル分解し深層学習を行う学習器により学習させる処理をコンピュータに実行させる。【選択図】図１
2019179457.tif 000002
【特許請求の範囲】
【請求項１】
複数の項目を有するレコードをデータ単位とする複数ログから生成された入力データを入力し、
前記入力データの項目の一部の値が欠落している補完対象レコードに対し、欠落した値の少なくとも一部を候補値から補完した変換データを生成し、
前記変換データを、入力テンソルデータをテンソル分解し深層学習を行う学習器により学習させる、
処理をコンピュータに実行させる学習プログラム。
【請求項２】
前記生成する処理は、前記補完対象レコードの値が欠落している項目に、同じ項目の値が欠落していないレコードの複数種類の値を前記候補値とし、該候補値のうち、いずれかの値を複写して補完した前記変換データを生成する、
請求項１に記載の学習プログラム。
【請求項３】
前記生成する処理は、前記補完対象レコードを含む複数のレコードを時刻順に並べ、前記候補値の数に対して不足する数だけ前記補完対象レコードを複製し、前記補完対象レコードのそれぞれに対して、前記候補値のそれぞれを複写して、前記変換データを生成する、
請求項２に記載の学習プログラム。
【請求項４】
前記生成する処理は、前記補完対象レコードのそれぞれに対して、前記補完対象レコードの値が欠落していない項目のうち、前記候補値を有するレコードの対応する項目と値が一致する項目の数が多い順に、前記候補値のそれぞれを複写して、前記変換データを生成する、
請求項３に記載の学習プログラム。
【請求項５】
前記生成する処理は、前記補完対象レコードのそれぞれに対して、直近の時刻から順に前記候補値のそれぞれを複写して、前記変換データを生成する、
請求項３または４に記載の学習プログラム。
【請求項６】
前記学習させる処理は、生成した前記変換データのうち、前記補完対象レコードをｎ行複製して前記候補値を補完した前記変換データを学習した第１学習済モデルと、前記補完対象レコードをｎ＋１行複製して前記候補値を補完した前記変換データを学習した第２学習済モデルとを生成し、
生成した前記変換データに基づく評価用データを用いて、前記第１学習済モデルおよび前記第２学習済モデルの分類精度を比較し、比較した前記分類精度が同一となるまで前記ｎを増加させた場合における、前記第１学習済モデルと、前記補完対象レコードに補完したｎ＋１個の補完値を出力する、
処理を前記コンピュータに実行させる請求項３〜５のいずれか１つに記載の学習プログラム。
【請求項７】
前記生成する処理は、前記補完対象レコードの値が欠落している項目に、予め設定した複数種類の設定値を前記候補値とし、該候補値のうち、いずれかの値を複写して補完した前記変換データを生成する、
請求項１に記載の学習プログラム。
【請求項８】
複数の項目を有するレコードをデータ単位とする複数ログから生成された入力データを入力し、
前記入力データの項目の一部の値が欠落している補完対象レコードに対し、欠落した値の少なくとも一部を候補値から補完した変換データを生成し、
前記変換データを、入力テンソルデータをテンソル分解し深層学習を行う学習器により学習させる、
処理をコンピュータが実行する学習方法。
【請求項９】
複数の項目を有するレコードをデータ単位とする複数ログから生成された入力データを入力する入力部と、
前記入力データの項目の一部の値が欠落している補完対象レコードに対し、欠落した値の少なくとも一部を候補値から補完した変換データを生成する生成部と、
前記変換データを、入力テンソルデータをテンソル分解し深層学習を行う学習器により学習させる学習部と、
を有する学習装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、学習プログラム、学習方法および学習装置に関する。
【背景技術】
【０００２】
近年、各種のデータを入力とする機械学習が行われている。機械学習における入力データは、例えば、様々な機器から取得したデータである場合、データを取得する機器の設置場所やタイミングが異なるため、同一のデータであっても重なってしまう場合がある。また、時間的遅延がある場合や、データ中に欠損値が発生した場合等では、これらのデータの適切な紐付けや扱いが難しい場合がある。この様な入力データを機械学習する場合、例えば、欠損部分を補完した入力データを用いることがある。また、グラフ構造のデータを深層学習する事が可能なグラフ構造学習技術（以降、このようなグラフ構造学習を行う装置の一形態を「ディープテンソル」と呼ぶ。）が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−１７９５４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、欠損部分を補完する場合に、欠損部分を例えばＮＡ（Not  Available）で補完したり、統計分布に基づく値で補完して学習を行うと、結果として補完する値の設計に対応した特徴量が付加された学習が行われることになる。このため、機械学習に必要な欠損部分の補完が、判別精度を向上させる妨げとなり得る。
【０００５】
一つの側面では、補完の影響による判別精度の劣化を抑制できる学習プログラム、学習方法および学習装置を提供することにある。
【課題を解決するための手段】
【０００６】
一つの態様では、学習プログラムは、複数の項目を有するレコードをデータ単位とする複数ログから生成された入力データを入力する処理をコンピュータに実行させる。学習プログラムは、前記入力データの項目の一部の値が欠落している補完対象レコードに対し、欠落した値の少なくとも一部を候補値から補完した変換データを生成する処理をコンピュータに実行させる。学習プログラムは、前記変換データを、入力テンソルデータをテンソル分解し深層学習を行う学習器により学習させる処理をコンピュータに実行させる。
【発明の効果】
【０００７】
補完の影響による判別精度の劣化を抑制できる。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施例の学習装置の構成の一例を示すブロック図である。
【図２】図２は、社内ネットワークへの侵入とログの取得場所の一例を示す図である。
【図３】図３は、複数の機器から取得したデータにおける欠損パターンの一例を示す図である。
【図４】図４は、欠損値を補完する候補値の一例を示す図である。
【図５】図５は、ディープテンソルにおける学習の一例を示す図である。
【図６】図６は、ディープテンソルによる部分構造の抽出と他の部分構造の決定方法との比較の一例を示す図である。
【図７】図７は、部分構造の情報量の比較の一例を示す図である。
【図８】図８は、分類精度とデータの組み合わせの情報量との関係の一例を示す図である。
【図９】図９は、統合データ記憶部の一例を示す図である。
【図１０】図１０は、複製データ記憶部の一例を示す図である。
【図１１】図１１は、複製データの生成の一例を示す図である。
【図１２】図１２は、実施例の学習処理の一例を示すフローチャートである。
【図１３】図１３は、実施例の判別処理の一例を示すフローチャートである。
【図１４】図１４は、学習プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【０００９】
以下、図面に基づいて、本願の開示する学習プログラム、学習方法および学習装置の実施例を詳細に説明する。なお、本実施例により、開示技術が限定されるものではない。また、以下の実施例は、矛盾しない範囲で適宜組みあわせてもよい。
【実施例】
【００１０】
図１は、実施例の学習装置の構成の一例を示すブロック図である。図１に示す学習装置１００は、複数の項目を有するレコードをデータ単位とする複数ログから生成された入力データを入力する。学習装置１００は、入力データの項目の一部の値が欠落している補完対象レコードに対し、欠落した値の少なくとも一部を候補値から補完した変換データを生成する。学習装置１００は、変換データを、入力テンソルデータをテンソル分解し深層学習を行う学習器により学習させる。これにより、学習装置１００は、補完の影響による判別精度の劣化を抑制できる。
【００１１】
まず、図２から図４を用いて、ログの取得およびデータの欠損について説明する。図２は、社内ネットワークへの侵入とログの取得場所の一例を示す図である。図２は、ある社内ネットワーク１１に対して外部の攻撃者から攻撃を受けた場合におけるログの取得場所を示す。攻撃者は、例えば、攻撃サーバ１２からファイアウォール１３を経由して、社内ネットワーク１１内の端末１４にマルウェアを送りつける。マルウェアは、感染した端末１４を起点にして不正な活動を行う。不正な活動は、例えば、図３中の攻撃（１）〜（４）等に示すように、他の端末等の社内ネットワーク１１内に対して行われる。マルウェアは、活動する際に攻撃者の活動に特徴的な操作や、通信の一連の流れ等に痕跡を残す。この様な活動は、例えば、ファイアウォール１３のログ、端末１４や端末１４から攻撃を受けた他の端末におけるイベントログ、侵入経路１５の通信をキャプチャしたログといった各種のログに記録される。
【００１２】
ところが、マルウェアの不正な通信や活動履歴は、通常の通信や操作履歴と一見すると見分けが付きにくい。また、それぞれの単独のログ等の特定の履歴だけでは不正な通信等であるかを判断しにくいため、従来は専門家がそれぞれのログから総合的に判断していた。この総合的な判断を実現するために、本実施例では、限定された情報が記録される多くのログについて、結合したグラフ構造データとして機械学習し、通常操作と攻撃者の活動とを分類する。ログとしては、攻撃活動の典型的なパターンである、通信の確立行動と、プロセスの活動とがあり、少なくともこれら２種類のログの情報をグラフ構造データとする。ここで、通信の確立活動は、例えば、通信関係のログに表出する。また、プロセスの活動、つまり遠隔によるコマンド操作の活動は、プロセスやイベントログに表出する。
【００１３】
このように、複数の機器からログを取得した場合、それぞれのログでは、機器間の取得地点の違いや、時間的な遅延や粒度の違いが生じる。このため、それぞれのログを統合した統合データでは、同一の活動に対するログが複数のレコードに記録される場合がある。また、ログのデータは、同一種類の機器であっても、異なる個体であれば、故障等によりログの一部に欠損が生じる場合がある。つまり、統合データは、項目の一部の値が欠落しているレコードが存在する場合がある。なお、以下の説明では、項目の一部の値が欠落していることを欠損と称し、その値を欠損値と称する場合がある。
【００１４】
図３は、複数の機器から取得したデータにおける欠損パターンの一例を示す図である。図３に示すデータ１６は、機器Ａおよび機器Ｂからの情報（ログ）を統合したデータであり、欠損がない場合の一例である。一方、データ１７は、機器Ａおよび機器Ｂからの情報（ログ）を統合したデータであり、例えば、機器Ｂが故障しているため、２行目のレコードにおいて、項目「コマンド属性」のデータが欠損している場合の一例である。この様な欠損パターンの場合では、各レコードの前後関係が明らかであれば、部分欠損の補完（紐付け）は容易であるが、前後関係が他のログとの関連により不明確になる場合がある。不明確になる例としては、ポートスキャンやＤＤｏＳ（Distributed  Denial  of  Service）攻撃等のように、短時間で多数の通信が様々に情報を変えながら行われる場合等が挙げられる。この場合、部分欠損の補完が本当に正しいのかどうかを判定することが難しくなる。また、データ１６およびデータ１７では、１行目と２行目、および、３行目と４行目が、それぞれ同一の活動に基づくログであるとする。すると、データ１６およびデータ１７の例では、１行目と２行目、および、３行目と４行目において、時間粒度が異なる。このように、時間粒度が異なる機器同士のログは、単純に紐付けることが難しい場合がある。
【００１５】
データ１７に示すような単独の欠損の補完には、多重代入法やＭＩＣＥ（Multivariate  Imputation  by  Chained  Equations）法等を用いて統計分布に基づく値で補完することが考えられる。ところが、欠損値を、出現頻度が高いから適切な値であるとして、出現頻度の高い値で補完してしまうと、マルウェア等の攻撃のようにレアケースである場合には、正常データの出現頻度に引きずられてしまい、適切な補完とはならなくなる。また、これらの補完の方法には、様々な仮説や方式が混在しており、ある仮説が全てのデータに対して有効であるとは定義しにくい。これに対し、本実施例では、欠損を適切に補完したデータに対してディープテンソルを用いることで、例えば、マルウェア等の遠隔操作による攻撃検知時に、背景にある最適な組み合わせも学習することによって、汎化性を向上させる。
【００１６】
図４は、欠損値を補完する候補値の一例を示す図である。図４に示すデータ１８では、９行目のレコードの項目「コマンド属性」が欠損値１９となっている。欠損値１９は、単に欠損しているだけなので、データ１８中に１つは適切な組み合わせパターンが存在する。欠損値１９では、１行目から８行目のレコードの同じ項目の値「Ｌａｕｎｃｈ」および「Ａｃｃｅｓｓ」が補完する候補値となる。つまり、欠損値１９は、１行目から８行目のレコードの「Ｌａｕｎｃｈ」および「Ａｃｃｅｓｓ」のうち、いずれかの値で補完できる。
【００１７】
続いて、ディープテンソルと部分構造の情報量とについて説明する。ディープテンソルとは、テンソル（グラフ情報）を入力とするディープラーニングであり、ニューラルネットワークの学習とともに、判別に寄与する部分グラフ構造（以下、部分構造ともいう。）を自動的に抽出する。この抽出処理は、ニューラルネットワークの学習とともに、入力テンソルデータのテンソル分解のパラメータを学習することによって実現される。
【００１８】
図５は、ディープテンソルにおける学習の一例を示す図である。図５に示すように、あるグラフ構造データの全体を表すグラフ構造２５は、テンソル２６として表すことができる。また、テンソル２６は、構造制約テンソル分解によって、コアテンソル２７と行列の積に近似することができる。ディープテンソルでは、コアテンソル２７をニューラルネットワーク２８に入力して深層学習を行い、ターゲットコアテンソル２９に近くなるように、拡張誤差逆伝搬法で最適化を行う。このとき、コアテンソル２７をグラフで表すと、特徴が凝縮された部分構造を表すグラフ３０となる。すなわち、ディープテンソルは、グラフ全体からコアテンソルによって重要な部分構造を自動的に学習できる。
【００１９】
図６は、ディープテンソルによる部分構造の抽出と他の部分構造の決定方法との比較の一例を示す図である。図６では、元となるグラフ３１を、隣接関係等の特定の関係性をベースに変換して部分構造を決定する場合と、ディープテンソルを用いて部分構造を抽出した場合とを比較する。特定の関係性に基づく部分構造を決定する場合、例えば、あるノードを中心に他のノードが６個付くことが特徴であると決定した部分構造３２に対して、データの組み合わせが増えると、他のノードが７個付くことや８個付くことが重要という学習になる。つまり、特定の関係性に基づく部分構造３２では、特徴量（情報量）が変動するため、分類結果が変動してしまう。
【００２０】
これに対し、ディープテンソルを用いて分類に寄与する任意の部分構造を抽出する場合、近いノードを分類するといった仮定とは関係なく、分類に寄与する部分構造３３ａ，３３ｂ，３３ｃを抽出する。このとき、新たな入力データがディープテンソルに入力されても、分類に寄与する部分構造が見つからない場合、部分構造３３ａ，３３ｂ，３３ｃは、入力データに対して不変である。すなわち、ディープテンソルでは、特定の繋がり方を仮定しなくても、分類に寄与する部分構造を抽出することができる。
【００２１】
図７は、部分構造の情報量の比較の一例を示す図である。図７では、元のデータ群３４からディープテンソルを用いて抽出する部分構造群３５と、設計で決定する部分構造群３６とを比較する。元のデータ群３４は、データ３４ａからデータ３４ｅに向かうに連れて情報量が多くなる。部分構造群３５では、部分構造３５ａから部分構造３５ｅが、それぞれデータ３４ａからデータ３４ｅより抽出された部分構造である。部分構造群３５では、部分構造３５ａから部分構造３５ｅにかけて、部分構造が付加されている。このとき、部分構造３５ｆおよび部分構造３５ｇは、追加されたが重要でない部分であるとすると、部分構造３５ｄ以降は、精度面への寄与がないと言える。
【００２２】
一方、部分構造群３６では、部分構造３６ａから部分構造３６ｅが、それぞれデータ３４ａからデータ３４ｅより抽出された部分構造である。部分構造群３６では、部分構造３６ａから部分構造３６ｅにかけて、部分構造が付加されている。このとき、部分構造３６ｂから部分構造３６ｅは、部分構造３６ａからの変動分全ての情報を取り込んでいるので、ノイズが多くなる。つまり、部分構造３６ｄおよび部分構造３６ｅは、追加されたが重要でない部分である部分構造３５ｆおよび部分構造３５ｇに対応する部分構造がノイズとなっている。
【００２３】
図８は、分類精度とデータの組み合わせの情報量との関係の一例を示す図である。図８のグラフ３７は、ディープテンソルを用いて抽出した部分構造群３５と、設計で決定する部分構造群３６とにおける分類精度と組み合わせの情報量との関係を、それぞれグラフ３８およびグラフ３９で示す。グラフ３８に示すように、部分構造群３５では、組み合わせの情報量が増加しても、分類精度は低下せず、ある一定の分類精度を維持する。ここで、組み合わせの情報量は、組み合わせ中から補完する範囲を徐々に増大させ、評価精度（分類精度）が最大になるまでとしている。つまり、ディープテンソルでは、分類に寄与する部分構造の最適化が行われるため、適切な補完範囲が求まる。なお、グラフ３８に示すように、補完パターンが変化しても（組み合わせの情報量が増加しても）結果が全く変動しなくなることが、補完パターンの最適化となる。
【００２４】
これに対し、グラフ３９に示すように、部分構造群３６では、組み合わせの情報量が増加すると、ノイズの影響を受けて分類精度が低下していくことになる。つまり、部分構造群３６では、仮説やアルゴリズムに依存して結果が変動してしまうため、補完パターンが変化しても（組み合わせの情報量が増加しても）結果が全く変動しなくなることが成り立たない。
【００２５】
このように、ディープテンソルでは、元の大きな入力データから、特徴が凝縮されたコアテンソルを自動的に抽出することができる。このとき、コアテンソルは、検知の分類精度を最大化する観点の結果として選択されるので、結果として分類に寄与する部分グラフ構造を自動的に抽出できることになる。すなわち、設計で決定する部分構造群３６を用いた場合では、情報量が多くなると、無駄な組み合わせが多いせいで学習が進まなくなって分類精度が上がらない。これに対し、ディープテンソルでは、必要な部分構造が抽出出来ればノイズの有無は関係なくなってしまうため、組み合わせを増大しても学習を進めることができる。
【００２６】
次に、学習装置１００の構成について説明する。図１に示すように、学習装置１００は、通信部１１０と、表示部１１１と、操作部１１２と、記憶部１２０と、制御部１３０とを有する。なお、学習装置１００は、図１に示す機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや音声出力デバイス等の機能部を有することとしてもかまわない。
【００２７】
通信部１１０は、例えば、ＮＩＣ（Network  Interface  Card）等によって実現される。通信部１１０は、図示しないネットワークを介して他の情報処理装置と有線または無線で接続され、他の情報処理装置との間で情報の通信を司る通信インタフェースである。通信部１１０は、例えば、他の端末から学習用の訓練データや判別対象の新規データを受信する。また、通信部１１０は、他の端末に、学習結果や判別結果を送信する。
【００２８】
表示部１１１は、各種情報を表示するための表示デバイスである。表示部１１１は、例えば、表示デバイスとして液晶ディスプレイ等によって実現される。表示部１１１は、制御部１３０から入力された表示画面等の各種画面を表示する。
【００２９】
操作部１１２は、学習装置１００のユーザから各種操作を受け付ける入力デバイスである。操作部１１２は、例えば、入力デバイスとして、キーボードやマウス等によって実現される。操作部１１２は、ユーザによって入力された操作を操作情報として制御部１３０に出力する。なお、操作部１１２は、入力デバイスとして、タッチパネル等によって実現されるようにしてもよく、表示部１１１の表示デバイスと、操作部１１２の入力デバイスとは、一体化されるようにしてもよい。
【００３０】
記憶部１２０は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）等の半導体メモリ素子、ハードディスクや光ディスク等の記憶装置によって実現される。記憶部１２０は、統合データ記憶部１２１と、複製データ記憶部１２２と、学習済モデル記憶部１２３とを有する。また、記憶部１２０は、制御部１３０での処理に用いる情報を記憶する。
【００３１】
統合データ記憶部１２１は、取得した訓練データを統合した統合データを記憶する。図９は、統合データ記憶部の一例を示す図である。図９に示すように、統合データ記憶部１２１は、「時刻」、「送信ＩＰ」、「受信ＩＰ」、「受信ポートＮｏ」、「送信ポートＮｏ」、「コマンド属性」、「コマンドパス」といった項目を有する。
【００３２】
「時刻」は、各レコードのログデータが取得された時刻を示す情報である。「送信ＩＰ」は、例えば、遠隔操作を行う側のサーバ等のＩＰアドレスを示す情報である。「受信ＩＰ」は、例えば、遠隔操作される側のパーソナルコンピュータ等のＩＰアドレスを示す情報である。「受信ポートＮｏ」は、例えば、遠隔操作を行う側のサーバ等から見たポート番号を示す情報である。「送信ポートＮｏ」は、例えば、遠隔操作される側のパーソナルコンピュータ等から見たポート番号を示す情報である。「コマンド属性」は、例えば、遠隔操作される側のパーソナルコンピュータ等における、起動されたコマンドの属性を示す情報である。「コマンドパス」は、例えば、遠隔操作される側のパーソナルコンピュータ等における、起動されたコマンドパス、例えば実行ファイル名を示す情報である。なお、統合データ記憶部１２１では、欠損値を「欠損」として表している。
【００３３】
図１の説明に戻って、複製データ記憶部１２２は、欠損値の補完対象レコードに、欠損値の候補値を代入（複写）した複製データを記憶する。図１０は、複製データ記憶部の一例を示す図である。図１０に示すように、複製データ記憶部１２２は、例えば、統合データの各レコードを時刻順に並べ、補完対象レコードの欠損しているセルに、欠損値の候補値を複写した複製データ１２２ａを有する。また、複製データ記憶部１２２は、補完対象レコードを１行複製し、基の補完対象レコードと合わせて２種類の候補値をそれぞれ複写した複製データ１２２ｂを有する。つまり、複製データ記憶部１２２は、欠損値の候補値の数をｍ個とすると、補完対象レコードを（ｍ−１）行複製し、それぞれの候補値を複写した複製データ１２２ｍを有することになる。
【００３４】
複製データ１２２ｍは、それぞれ「時刻」、「送信ＩＰ」、「受信ＩＰ」、「受信ポートＮｏ」、「送信ポートＮｏ」、「コマンド属性」、「コマンドパス」といった項目を有する。なお、各項目は、統合データ記憶部１２１と同様であるのでその説明を省略する。
【００３５】
図１の説明に戻って、学習済モデル記憶部１２３は、複製データ、つまり欠損値を補完した変換データを深層学習した学習済モデルを記憶する。学習済モデルは、例えば、ニューラルネットワークの各種パラメータ（重み係数）や、テンソル分解の方法等を記憶する。
【００３６】
制御部１３０は、例えば、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等によって、内部の記憶装置に記憶されているプログラムがＲＡＭを作業領域として実行されることにより実現される。また、制御部１３０は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現されるようにしてもよい。制御部１３０は、生成部１３１と、学習部１３２と、比較部１３３と、判別部１３４とを有し、以下に説明する情報処理の機能や作用を実現または実行する。なお、制御部１３０の内部構成は、図１に示した構成に限られず、後述する情報処理を行う構成であれば他の構成であってもよい。
【００３７】
生成部１３１は、例えば、通信部１１０を介して、他の端末から学習用の訓練データを取得する。すなわち、生成部１３１は、複数の項目を有するレコードをデータ単位とする複数ログから生成された入力データを入力する入力部の一例である。生成部１３１は、取得した訓練データを統合した統合データを生成する。生成部１３１は、例えば、図３に示す機器Ａおよび機器Ｂからの情報に基づくデータ１７のように、それぞれのデータを統合した統合データを生成する。このとき、生成部１３１は、例えば、各レコードを時刻順に並べる。生成部１３１は、生成した統合データを統合データ記憶部１２１に記憶する。
【００３８】
生成部１３１は、生成した統合データから補完対象レコードを特定する。生成部１３１は、特定した補完対象レコードの欠損値の列について、他のレコードから候補値を抽出する。生成部１３１は、例えば、抽出した候補値の数をｍ個とすると、補完対象レコードを最大で（ｍ−１）行複製する。つまり、生成部１３１は、候補値の数に対して不足する数だけ補完対象レコードを複製する。ここで、補完対象レコードの複製は、ｎ＝０からｎ＝ｍまで順に行い、それぞれに対応する複製データを生成することになる。なお、候補値は、項目に当てはまる値がいくつかの候補に決まっている場合、予め設定した複数種類の設定値であってもよい。
【００３９】
生成部１３１は、それぞれの補完対象レコードの欠損部分のセルに、それぞれの候補値を代入、つまり複写して複製データを生成する。このとき、生成部１３１は、補完対象レコードの複製数をｎ行とすると、ｎ＝０から順に複製データをｍ個生成することになる。なお、ｎ＝０の場合とは、補完対象レコードを複製せずに、欠損部分のセルに補完値を複写する場合である。生成部１３１は、候補値を複写する場合、補完対象レコードの欠損していない項目のうち、他のレコードの対応する項目と値が一致する項目の数が多い順に、他のレコードから抽出した候補値を複写する。つまり、生成部１３１は、他のレコードの各項目の値が補完対象レコードと似ている順に、候補値を複写して複製データを生成する。また、生成部１３１は、補完対象レコードの直近の時刻の他のレコードから順に候補値を複写して複製データを生成してもよい。なお、生成部１３１は、初回のみ補完対象レコードをｎ行複製した複製データと、ｎ＋１行複製した複製データとを生成する。
【００４０】
生成部１３１は、生成した複製データを複製データ記憶部１２２に記憶する。なお、生成部１３１は、ｎが増加すると、その都度生成した複製データを複製データ記憶部１２２に記憶する。つまり、複製データ記憶部１２２には、複製データがｎ＝０から順番に記憶される。なお、補完対象レコードの欠損部分のセルが複数ある場合には、少なくとも１つ以上の欠損部分のセルに、候補値を複写して補完するようにしてもよい。
【００４１】
ここで、図１１を用いて複製データの生成について説明する。図１１は、複製データの生成の一例を示す図である。図１１の複製データ４０の例では、生成部１３１は、補完対象レコードの欠損値の列である項目「コマンド属性」の列について、レコード群４１の項目「コマンド属性」から候補値「Ｌａｕｎｃｈ」および「Ａｃｃｅｓｓ」を抽出する。生成部１３１は、候補値の数ｍが２個であるので、補完対象レコードを１行複製し、各補完対象レコードに候補値を複写して補完対象レコード４２ａ，４２ｂを生成する。
【００４２】
生成部１３１は、複製データを生成すると、生成した複製データを、交差検証を行うために分割する。生成部１３１は、例えば、Ｋ−分割交差検証や一個抜き交差検証（LOOCV：Leave  One  Out  Cross  Validation）を用いて、学習用データおよび評価用データを生成する。なお、生成部１３１は、訓練データが少なく複製データも少ない場合には、学習に用いた複製データを用いて正しく判定できているかどうかを検証するようにしてもよい。生成部１３１は、生成した学習用データを学習部１３２に出力する。また、生成部１３１は、生成した評価用データを比較部１３３に出力する。
【００４３】
言い換えると、生成部１３１は、入力データの項目の一部の値が欠落している補完対象レコードに対し、欠落した値の少なくとも一部を候補値から補完した変換データを生成する。また、生成部１３１は、補完対象レコードの値が欠落している項目に、同じ項目の値が欠落していないレコードの複数種類の値を候補値とし、該候補値のうち、いずれかの値を複写して補完した変換データを生成する。また、生成部１３１は、補完対象レコードを含む複数のレコードを時刻順に並べ、候補値の数に対して不足する数だけ補完対象レコードを複製し、補完対象レコードのそれぞれに対して、候補値のそれぞれを複写して、変換データを生成する。また、生成部１３１は、補完対象レコードのそれぞれに対して、補完対象レコードの値が欠落していない項目のうち、候補値を有するレコードの対応する項目と値が一致する項目の数が多い順に、候補値のそれぞれを複写して、変換データを生成する。また、生成部１３１は、補完対象レコードのそれぞれに対して、直近の時刻から順に候補値のそれぞれを複写して、変換データを生成する。また、生成部１３１は、補完対象レコードの値が欠落している項目に、予め設定した複数種類の設定値を候補値とし、該候補値のうち、いずれかの値を複写して補完した変換データを生成する。
【００４４】
図１の説明に戻って、学習部１３２は、生成部１３１から学習用データが入力されると、学習用データを学習して学習済モデルを生成する。つまり、学習部１３２は、学習用データをテンソル分解し、コアテンソル（部分グラフ構造）を生成する。学習部１３２は、生成したコアテンソルをニューラルネットワークに入力して出力を得る。学習部１３２は、出力値の誤差が小さくなるように学習するとともに、判定精度が高くなるようにテンソル分解のパラメータを学習する。テンソル分解においては自由度があり、テンソル分解のパラメータとして、分解モデル、制約、最適化アルゴリズムの組み合わせ等が挙げられる。分解モデルは、例えば、ＣＰ（Canonical  Polyadic  decomposition）やＴｕｃｋｅｒが挙げられる。制約は、例えば、直交制約、スパース制約、スムース制約、非負制約等が挙げられる。最適化アルゴリズムは、例えば、ＡＬＳ（Alternating  Least  Square）、ＨＯＳＶＤ（Higher  Order  Singular  Value  Decomposition）、ＨＯＯＩ（Higher  Order  Orthogonal  Iteration  of  tensors）等が挙げられる。ディープテンソルにおいては、「判定精度が高くなる」という制約下でテンソル分解を行う事になる。
【００４５】
学習部１３２は、学習用データの学習が完了すると、学習済モデルを学習済モデル記憶部１２３に記憶する。このとき、学習済モデル記憶部１２３には、複製データの複製行数ｎに対応する学習済モデルと、複製行数ｎ＋１に対応する学習済モデルとが記憶されている状態となるようにする。つまり、学習部１３２は、初回のみ複製行数ｎに対応する学習済モデルと、複製行数ｎ＋１に対応する学習済モデルとの２つの学習済モデルを生成する。学習部１３２は、複製行数ｎ＝１以降では、従前の複製行数ｎ＋１に対応する学習済モデルを複製行数ｎに対応する学習済モデルに移行し、新たに学習した複製行数ｎ＋１に対応する学習済モデルを生成する。なお、ニューラルネットワークは、ＲＮＮ（再帰型ニューラルネットワーク：Recurrent  Neural  Network）など様々なニューラルネットワークを用いることができる。また、学習方法は、誤差逆伝播法など様々な手法を採用することができる。
【００４６】
言い換えると、学習部１３２は、変換データ（複製データ）を、入力テンソルデータをテンソル分解し深層学習を行う学習器により学習させる。また、学習部１３２は、生成した変換データ（複製データ）のうち、補完対象レコードをｎ行複製して候補値を補完した変換データを学習した第１学習済モデルを生成する。また、学習部１３２は、変換データ（複製データ）のうち、補完対象レコードをｎ＋１行複製して候補値を補完した変換データを学習した第２学習済モデルを生成する。
【００４７】
比較部１３３は、学習部１３２で学習用データの学習が完了すると、学習済モデル記憶部１２３を参照して、生成部１３１から入力された評価用データを用いて、評価用データの分類精度を比較する。つまり、比較部１３３は、ｎ行複製に対応する学習済モデルを用いた場合の評価用データの分類精度と、ｎ＋１行複製に対応する学習済モデルを用いた場合の評価用データの分類精度とを比較する。
【００４８】
比較部１３３は、比較の結果、ｎ行複製の分類精度が、ｎ＋１行複製の分類精度とほぼ等しいか否かを判定する。なお、分類精度の比較は、比較した分類精度が同一であるか否かを判定するようにしてもよい。比較部１３３は、ｎ行複製の分類精度が、ｎ＋１行複製の分類精度とほぼ等しくないと判定した場合には、複製行数ｎをインクリメントして、次の複製データを生成するように生成部１３１に指示する。比較部１３３は、ｎ行複製の分類精度が、ｎ＋１行複製の分類精度とほぼ等しいと判定した場合には、その時のｎ行複製に対応する学習済モデル、つまり複製行数ｎの学習済モデル、および、当該複製行数ｎに対応するｎ＋１個の補完値を学習済モデル記憶部１２３に記憶する。すなわち、このときの複製行数ｎの学習済モデルは、分類精度が変動しなくなった状態である。
【００４９】
言い換えると、比較部１３３は、生成した変換データに基づく評価用データを用いて、第１学習済モデルおよび第２学習済モデルの分類精度を比較する。比較部１３３は、比較した分類精度が同一となるまでｎを増加させた場合における、第１学習済モデルと、補完対象レコードに補完したｎ＋１個の補完値を出力する。
【００５０】
判別部１３４は、学習済モデルの生成後に、新規データを取得し、学習済モデルを用いて判別した判別結果を出力する。判別部１３４は、例えば、通信部１１０を介して、他の端末から判別対象の新規データを受信して取得する。判別部１３４は、取得した新規データを統合した判別対象の統合データを生成する。生成部１３１は、生成した統合データから補完対象レコードを特定する。
【００５１】
判別部１３４は、学習済モデル記憶部１２３を参照し、判別に用いる複製行数ｎ時の学習済モデルおよびｎ＋１個の補完値を取得する。判別部１３４は、取得したｎ＋１個の補完値に基づいて、判別対象の統合データの補完対象レコードをｎ個複製し、各補完対象レコードにｎ＋１個の補完値それぞれを複写して、判別対象の複製データを生成する。
【００５２】
判別部１３４は、取得した複製行数ｎ時の学習済モデルを用いて判別対象の複製データを判別する。すなわち、判別部１３４は、学習済モデルの各種パラメータを設定したニューラルネットワークを構築し、テンソル分解の方法を設定する。判別部１３４は、生成した判別対象の複製データをテンソル分解し、ニューラルネットワークに入力して、判別結果を取得する。判別部１３４は、取得した判別結果を表示部１１１に出力して表示したり、記憶部１２０に出力して記憶したりする。
【００５３】
次に、実施例の学習装置１００の動作について説明する。まず、学習済モデルを生成する学習処理について説明する。図１２は、実施例の学習処理の一例を示すフローチャートである。
【００５４】
生成部１３１は、例えば、他の端末から学習用の訓練データを取得する（ステップＳ１）。生成部１３１は、取得した訓練データを統合した統合データを生成する。生成部１３１は、生成した統合データを統合データ記憶部１２１に記憶する。生成部１３１は、生成した統合データから補完対象レコードを特定する（ステップＳ２）。
【００５５】
生成部１３１は、特定した補完対象レコードの欠損値の列について、他のレコードから候補値を抽出する（ステップＳ３）。生成部１３１は、候補値を抽出すると、補完対象レコードをｎ行複製し、各補完対象レコードに候補値を複写して複製データを生成する（ステップＳ４）。また、生成部１３１は、補完対象レコードをｎ＋１行複製し、各補完対象レコードに候補値を複写して複製データを生成する（ステップＳ５）。なお、ｎの初期値は０とすることができる。生成部１３１は、生成した複製データを複製データ記憶部１２２に記憶する。
【００５６】
生成部１３１は、複製データを生成すると、生成した複製データを、交差検証を行うために分割する（ステップＳ６）。生成部１３１は、交差検証に基づく評価用データを生成する（ステップＳ７）。また、生成部１３１は、交差検証に基づく学習用データを生成する（ステップＳ８）。生成部１３１は、生成した学習用データを学習部１３２に出力する。また、生成部１３１は、生成した評価用データを比較部１３３に出力する。
【００５７】
学習部１３２は、生成部１３１から学習用データが入力されると、学習用データを学習し（ステップＳ９）、学習済モデルを生成する（ステップＳ１０）。なお、学習部１３２は、初回のみ複製行数ｎに対応する学習済モデルと、複製行数ｎ＋１に対応する学習済モデルとの２つの学習済モデルを生成する。学習部１３２は、学習用データの学習が完了すると、学習済モデルを学習済モデル記憶部１２３に記憶する。
【００５８】
比較部１３３は、学習部１３２で学習用データの学習が完了すると、学習済モデル記憶部１２３を参照して、生成部１３１から入力された評価用データを用いて、評価用データの分類精度を比較する（ステップＳ１１）。比較部１３３は、比較の結果、ｎ行複製の分類精度が、ｎ＋１行複製の分類精度とほぼ等しいか否かを判定する（ステップＳ１２）。比較部１３３は、ｎ行複製の分類精度が、ｎ＋１行複製の分類精度とほぼ等しくないと判定した場合には（ステップＳ１２：否定）、複製行数ｎをインクリメントする（ステップＳ１３）。また、比較部１３３は、次の複製データを生成するように生成部１３１に指示し、ステップＳ５に戻る。
【００５９】
比較部１３３は、ｎ行複製の分類精度が、ｎ＋１行複製の分類精度とほぼ等しいと判定した場合には（ステップＳ１２：肯定）、複製行数ｎの学習済モデルおよびｎ＋１個の補完値を学習済モデル記憶部１２３に記憶し（ステップＳ１４）、学習処理を終了する。これにより、学習装置１００は、補完の影響による判別精度の劣化を抑制できる。つまり、学習装置１００は、汎化性が高い学習済モデルを生成できる。
【００６０】
なお、本学習処理の例では、補完値として適切な組み合わせが存在するものとして説明しているため、ステップＳ１２で例外処理を行っていないが、候補値の数が多い場合には、ステップＳ１２の判定を所定回数行った時点でステップＳ１４に進むようにしてもよい。所定回数は、例えば、学習処理の所要時間に応じて決定することができる。例えば、所定回数は、ステップＳ５〜Ｓ１２までの処理が１時間かかるとした場合、１日分、つまり２４回とすることができる。また、候補値の数が多い場合には、ランダムに選択した候補値を用いてステップＳ５〜Ｓ１２までの処理を何回か実行し、上位に来る候補値を用いるようにしてもよい。
【００６１】
続いて、新規データを判別する判別処理について説明する。図１３は、実施例の判別処理の一例を示すフローチャートである。
【００６２】
判別部１３４は、例えば、他の端末から判別対象の新規データを受信して取得する（ステップＳ２１）。判別部１３４は、取得した新規データを統合した判別対象の統合データを生成する。生成部１３１は、生成した統合データから補完対象レコードを特定する（ステップＳ２２）。
【００６３】
判別部１３４は、学習済モデル記憶部１２３を参照し、判別に用いる複製行数ｎ時の学習済モデルおよびｎ＋１個の補完値を取得する。判別部１３４は、取得したｎ＋１個の補完値に基づいて、判別対象の統合データの補完対象レコードをｎ個複製し、各補完対象レコードにｎ＋１個の補完値それぞれを複写して、判別対象の複製データを生成する（ステップＳ２３）。
【００６４】
判別部１３４は、取得した複製行数ｎ時の学習済モデルを用いて判別対象の複製データを判別する（ステップＳ２４）。判別部１３４は、判別結果を、例えば表示部１１１に出力して表示させる（ステップＳ２５）。これにより、学習装置１００は、補完の影響による判別精度の劣化を抑制した学習済モデルを用いて判別対象のデータを判別するので、例えば、遠隔操作の攻撃の検知精度を向上させることができる。すなわち、学習装置１００は、汎化性が向上することで検知精度を向上させることができる。
【００６５】
このように、学習装置１００は、複数の項目を有するレコードをデータ単位とする複数ログから生成された入力データを入力する。学習装置１００は、入力データの項目の一部の値が欠落している補完対象レコードに対し、欠落した値の少なくとも一部を候補値から補完した変換データを生成する。また、学習装置１００は、変換データを、入力テンソルデータをテンソル分解し深層学習を行う学習器により学習させる。その結果、学習装置１００は、補完の影響による判別精度の劣化を抑制できる。
【００６６】
また、学習装置１００は、補完対象レコードの値が欠落している項目に、同じ項目の値が欠落していないレコードの複数種類の値を候補値とし、該候補値のうち、いずれかの値を複写して補完した変換データを生成する。その結果、学習装置１００は、欠落した値を補完して学習を行うことができる。
【００６７】
また、学習装置１００は、補完対象レコードを含む複数のレコードを時刻順に並べ、候補値の数に対して不足する数だけ補完対象レコードを複製し、補完対象レコードのそれぞれに対して、候補値のそれぞれを複写して、変換データを生成する。その結果、学習装置１００は、関連性が高いと期待される候補値から順に補完することができる。
【００６８】
また、学習装置１００は、補完対象レコードのそれぞれに対して、補完対象レコードの値が欠落していない項目のうち、候補値を有するレコードの対応する項目と値が一致する項目の数が多い順に、候補値のそれぞれを複写して、変換データを生成する。その結果、学習装置１００は、より関連性が高いと期待される候補値から順に補完することができる。
【００６９】
また、学習装置１００は、補完対象レコードのそれぞれに対して、直近の時刻から順に候補値のそれぞれを複写して、変換データを生成する。その結果、学習装置１００は、より関連性が高いと期待される候補値から順に補完することができる。つまり、学習装置１００は、例えば、コマンドの近傍の適切な通信確立行動が対応付けられたデータを学習できる。すなわち、学習装置１００は、汎化性が高い学習済モデルを生成できる。
【００７０】
また、学習装置１００は、生成した変換データのうち、補完対象レコードをｎ行複製して候補値を補完した変換データを学習した第１学習済モデルと、補完対象レコードをｎ＋１行複製して候補値を補完した変換データを学習した第２学習済モデルとを生成する。また、学習装置１００は、生成した変換データに基づく評価用データを用いて、第１学習済モデルおよび第２学習済モデルの分類精度を比較する。また、学習装置１００は、比較した分類精度が同一となるまでｎを増加させた場合における、第１学習済モデルと、補完対象レコードに補完したｎ＋１個の補完値を出力する。その結果、学習装置１００は、検知の分類精度を最大化しつつ、過学習を防止できる。また、学習装置１００は、学習における計算時間の短縮を図ることができる。
【００７１】
また、学習装置１００は、補完対象レコードの値が欠落している項目に、予め設定した複数種類の設定値を候補値とし、該候補値のうち、いずれかの値を複写して補完した変換データを生成する。その結果、学習装置１００は、学習における計算時間の短縮を図ることができる。
【００７２】
なお、上記実施例では、ニューラルネットワークとして、ＲＮＮを一例として挙げたが、これに限定されない。例えば、ＣＮＮ（Convolutional  Neural  Network）など様々なニューラルネットワークを用いることができる。また、学習の手法も、誤差逆伝播以外にも公知の様々な手法を採用することができる。また、ニューラルネットワークは、例えば入力層、中間層（隠れ層）、出力層から構成される多段構成であり、各層は複数のノードがエッジで結ばれる構造を有する。各層は、「活性化関数」と呼ばれる関数を持ち、エッジは「重み」を持ち、各ノードの値は、前の層のノードの値、接続エッジの重みの値、層が持つ活性化関数から計算される。なお、計算方法については、公知の様々な手法を採用できる。また、機械学習としては、ニューラルネットワーク以外にも、ＳＶＭ（support  vector  machine）等の各種手法を用いてもよい。
【００７３】
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、生成部１３１と学習部１３２とを統合してもよい。また、図示した各処理は、上記の順番に限定されるものでなく、処理内容を矛盾させない範囲において、同時に実施してもよく、順序を入れ替えて実施してもよい。
【００７４】
さらに、各装置で行われる各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ（Micro  Controller  Unit）等のマイクロ・コンピュータ）上で、その全部または任意の一部を実行するようにしてもよい。また、各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ等のマイクロ・コンピュータ）で解析実行されるプログラム上、またはワイヤードロジックによるハードウェア上で、その全部または任意の一部を実行するようにしてもよいことは言うまでもない。
【００７５】
ところで、上記の各実施例で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することで実現できる。そこで、以下では、上記の各実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図１４は、学習プログラムを実行するコンピュータの一例を示す図である。
【００７６】
図１４に示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０１と、データ入力を受け付ける入力装置２０２と、モニタ２０３とを有する。また、コンピュータ２００は、記憶媒体からプログラム等を読み取る媒体読取装置２０４と、各種装置と接続するためのインタフェース装置２０５と、他の情報処理装置等と有線または無線により接続するための通信装置２０６とを有する。また、コンピュータ２００は、各種情報を一時記憶するＲＡＭ２０７と、ハードディスク装置２０８とを有する。また、各装置２０１〜２０８は、バス２０９に接続される。
【００７７】
ハードディスク装置２０８には、図１に示した生成部１３１、学習部１３２、比較部１３３および判別部１３４の各処理部と同様の機能を有する学習プログラムが記憶される。また、ハードディスク装置２０８には、統合データ記憶部１２１、複製データ記憶部１２２、学習済モデル記憶部１２３、および、学習プログラムを実現するための各種データが記憶される。入力装置２０２は、例えば、コンピュータ２００の管理者から操作情報等の各種情報の入力を受け付ける。モニタ２０３は、例えば、コンピュータ２００の管理者に対して表示画面等の各種画面を表示する。インタフェース装置２０５は、例えば印刷装置等が接続される。通信装置２０６は、例えば、図１に示した通信部１１０と同様の機能を有し図示しないネットワークと接続され、他の情報処理装置と各種情報をやりとりする。
【００７８】
ＣＰＵ２０１は、ハードディスク装置２０８に記憶された各プログラムを読み出して、ＲＡＭ２０７に展開して実行することで、各種の処理を行う。また、これらのプログラムは、コンピュータ２００を図１に示した生成部１３１、学習部１３２、比較部１３３および判別部１３４として機能させることができる。
【００７９】
なお、上記の学習プログラムは、必ずしもハードディスク装置２０８に記憶されている必要はない。例えば、コンピュータ２００が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ２００が読み出して実行するようにしてもよい。コンピュータ２００が読み取り可能な記憶媒体は、例えば、ＣＤ−ＲＯＭやＤＶＤ（Digital  Versatile  Disc）、ＵＳＢ（Universal  Serial  Bus）メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、ＬＡＮ等に接続された装置にこの学習プログラムを記憶させておき、コンピュータ２００がこれらから学習プログラムを読み出して実行するようにしてもよい。
【符号の説明】
【００８０】
１００  学習装置
１１０  通信部
１１１  表示部
１１２  操作部
１２０  記憶部
１２１  統合データ記憶部
１２２  複製データ記憶部
１２３  学習済モデル記憶部
１３０  制御部
１３１  生成部
１３２  学習部
１３３  比較部
１３４  判別部
【図１】
2019179457.tif 000003
【図２】
2019179457.tif 000004
【図３】
2019179457.tif 000005
【図４】
2019179457.tif 000006
【図５】
2019179457.tif 000007
【図６】
2019179457.tif 000008
【図７】
2019179457.tif 000009
【図８】
2019179457.tif 000010
【図９】
2019179457.tif 000011
【図１０】
2019179457.tif 000012
【図１１】
2019179457.tif 000013
【図１２】
2019179457.tif 000014
【図１３】
2019179457.tif 000015
【図１４】
2019179457.tif 000016