(57)【要約】【課題】ニューラルネットワークによる分類精度を向上させる。【解決手段】機械学習装置１０は、第１項目群内の項目それぞれの変数値の組み合わせパタンと、第２項目群内の項目それぞれの変数値の組み合わせパタンとのそれぞれに対応する複数の基準値の配列により、複数の数値をニューラルネットワーク１へ入力する際の、複数の数値の順序付けの基準を示す照合パタン１１ａ，１１ｂを生成する。次に機械学習装置１０は、第１項目群内の項目それぞれの変数値の組み合わせパタンそれぞれ、および第２項目群内の項目それぞれの変数値の組み合わせパタンそれぞれに対応する複数の入力用数値を算出する。そして機械学習装置１０は、複数の入力用数値の入力順序を、照合パタン１１ａ，１１ｂに基づいて決定し、ニューラルネットワーク１の出力値を算出し、入力用数値の誤差８を算出し、入力用数値の誤差８に基づいて、照合パタン１１ａ，１１ｂを更新する。【選択図】図１
2019049782.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
複数の項目それぞれの変数値の組み合わせパタンごとに数値が設定された入力データと、前記入力データに対する分類の正解を示す教師データとを取得し、
前記入力データの前記複数の項目のうちの第１項目の変数値それぞれと特定の関係を有する第２項目の変数値が一意に決まる場合、前記複数の項目から前記第２項目を除外した第１項目群内の項目それぞれの変数値の組み合わせパタンと、前記第１項目と前記第２項目とを含む第２項目群内の項目それぞれの変数値の組み合わせパタンとのそれぞれに対応する複数の基準値の配列により、複数の数値をニューラルネットワークへ入力する際の、前記複数の数値の順序付けの基準を示す照合パタンを生成し、
前記入力データに基づいて、前記第１項目群内の項目それぞれの変数値の組み合わせパタンそれぞれ、および前記第２項目群内の項目それぞれの変数値の組み合わせパタンそれぞれに対応する複数の入力用数値を算出し、
前記複数の入力用数値の入力順序を、前記照合パタンに基づいて決定し、
前記ニューラルネットワークの入力層の複数のユニットへ、前記複数の入力用数値を前記入力順序に従って入力した場合の、前記ニューラルネットワークの出力値を算出し、
前記出力値と前記教師データとの誤差に基づいて、前記ニューラルネットワークで正解を得るための、前記複数のユニットへの入力用数値の誤差を算出し、
前記複数のユニットへの入力用数値の誤差に基づいて、前記照合パタンの前記複数の基準値を更新する、
処理を実行させる機械学習プログラム。
【請求項２】
前記入力データにおける、複数の項目それぞれの変数値の組み合わせパタンごとに設定された数値は、変数値の組み合わせに対応する事象の発生頻度に応じた値であり、
前記複数の入力用数値の算出では、前記第１項目群に含まれない項目の変数値の影響を除外して、前記第１項目群内の項目それぞれの変数値の組み合わせに対応する事象の発生頻度に応じた入力用数値を算出し、前記第２項目群に含まれない項目の変数値の影響を除外して、前記第２項目群内の項目それぞれの変数値の組み合わせに対応する事象の発生頻度に応じた前記入力用数値を算出する、
請求項１記載の機械学習プログラム。
【請求項３】
前記照合パタンは、前記第１項目群内の項目それぞれの変数値の組み合わせパタンに対応する基準値が設定された第１照合パタンと、前記第２項目群内の項目それぞれの変数値の組み合わせパタンに対応する基準値が設定された第２照合パタンとを含み、
前記複数の基準値の更新では、
前記第１照合パタンまたは前記第２照合パタンの基準値を変化対象値として選択し、
前記第１照合パタンの前記変化対象値を所定量だけ変動させた仮第１照合パタンと前記第２照合パタンとの組、または前記第２照合パタンの前記変化対象値を所定量だけ変動させた仮第２照合パタンと前記第１照合パタンとの組に基づいて、前記複数の入力用数値それぞれの仮の入力順序を決定し、
決定した前記仮の入力順序と、前記第１照合パタンと前記第２照合パタンとの組に基づいて決定した前記入力順序とにおいて、同じ順番となる数値間の差分値を算出し、
前記複数のユニットへの入力値の誤差と、算出された前記差分値とに基づいて、前記照合パタン内の前記変化対象値の増加または減少を決定し、
増加または減少の決定に従って、前記変化対象値として選択された前記照合パタンの基準値を更新する、
請求項１または２記載の機械学習プログラム。
【請求項４】
コンピュータが、
複数の項目それぞれの変数値の組み合わせパタンごとに数値が設定された入力データと、前記入力データに対する分類の正解を示す教師データとを取得し、
前記入力データの前記複数の項目のうちの第１項目の変数値それぞれと特定の関係を有する第２項目の変数値が一意に決まる場合、前記複数の項目から前記第２項目を除外した第１項目群内の項目それぞれの変数値の組み合わせパタンと、前記第１項目と前記第２項目とを含む第２項目群内の項目それぞれの変数値の組み合わせパタンとのそれぞれに対応する複数の基準値の配列により、複数の数値をニューラルネットワークへ入力する際の、前記複数の数値の順序付けの基準を示す照合パタンを生成し、
前記入力データに基づいて、前記第１項目群内の項目それぞれの変数値の組み合わせパタンそれぞれ、および前記第２項目群内の項目それぞれの変数値の組み合わせパタンそれぞれに対応する複数の入力用数値を算出し、
前記複数の入力用数値の入力順序を、前記照合パタンに基づいて決定し、
前記ニューラルネットワークの入力層の複数のユニットへ、前記複数の入力用数値を前記入力順序に従って入力した場合の、前記ニューラルネットワークの出力値を算出し、
前記出力値と前記教師データとの誤差に基づいて、前記ニューラルネットワークで正解を得るための、前記複数のユニットへの入力用数値の誤差を算出し、
前記複数のユニットへの入力用数値の誤差に基づいて、前記照合パタンの前記複数の基準値を更新する、
機械学習方法。
【請求項５】
ニューラルネットワークへ入力する数値の順序付けの基準が複数の基準値の配列で示された照合パタンを記憶する記憶部と、
複数の項目それぞれの変数値の組み合わせパタンごとに数値が設定された入力データと、前記入力データに対する分類の正解を示す教師データとを取得し、前記入力データの前記複数の項目のうちの第１項目の変数値それぞれと特定の関係を有する第２項目の変数値が一意に決まる場合、前記複数の項目から前記第２項目を除外した第１項目群内の項目それぞれの変数値の組み合わせパタンと、前記第１項目と前記第２項目とを含む第２項目群内の項目それぞれの変数値の組み合わせパタンとのそれぞれに対応する複数の基準値の配列により、複数の数値を前記ニューラルネットワークへ入力する際の、前記複数の数値の順序付けの基準を示す前記照合パタンを生成し、前記照合パタンを前記記憶部に格納し、前記入力データに基づいて、前記第１項目群内の項目それぞれの変数値の組み合わせパタンそれぞれ、および前記第２項目群内の項目それぞれの変数値の組み合わせパタンそれぞれに対応する複数の入力用数値を算出し、前記複数の入力用数値の入力順序を、前記照合パタンに基づいて決定し、前記ニューラルネットワークの入力層の複数のユニットへ、前記複数の入力用数値を前記入力順序に従って入力した場合の、前記ニューラルネットワークの出力値を算出し、前記出力値と前記教師データとの誤差に基づいて、前記ニューラルネットワークで正解を得るための、前記複数のユニットへの入力用数値の誤差を算出し、前記複数のユニットへの入力用数値の誤差に基づいて、前記照合パタンの前記複数の基準値を更新する、処理部と、
を有する機械学習装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械学習プログラム、機械学習方法、および機械学習装置に関する。
【背景技術】
【０００２】
ニューラルネットワークを利用して、コンピュータに機械学習を行わせることができる。例えばコンピュータは、学習対象の入力データをニューラルネットワークの入力層に入力する。次にコンピュータは、ニューラルネットワーク内のユニットごとに、予め定義された処理を入力データに対して実行し、その結果を次の層のユニットへの入力とする。ニューラルネットワークの出力層まで処理が到達すると、コンピュータは出力層での処理結果を、出力データとして出力する。そしてコンピュータは、入力データに対応付けられた教師データの値と出力データとを比較し、値に差があれば、その差が縮まるようにニューラルネットワークを修正する。このような処理を繰り返すことで、入力データを所定の基準で分類できるニューラルネットワークが作成される。例えば、ある一定期間内のネットワークの通信ログから、その期間内に不正行為が行われているか否かを分類するニューラルネットワークが作成できる。
【０００３】
なお、ニューラルネットワークは、教師データの数と比較して、１つの教師データで入力される数値の数が多い場合、過学習になりやすい。過学習は、過剰適合とも呼ばれる。過学習は、教師データに過剰に適合してしまい、教師データの分類精度は高いが、教師データ以外のデータの分類精度が低い状態である。ニューラルネットワークにおいては、このような過学習を避けるための技術が適用される場合もある。
【０００４】
ニューラルネットワークを用いた技術としては、例えば入力文字を正しく分類することにより、精度よく文字を認識できる文字認識装置がある。また微分値を用いてニューラルネットワークの修正の振動を防ぐことによる、高速で精度の良いニューラルネットワークの学習方法も考えられている。さらに各学習データの学習のしやすさ、データパタンなどの分類や分類ごとのデータ数によらず、各データを均一、かつ高速に学習させるニューラルネットワークの学習装置もある。グラフデータの各ノードの近傍ノードを順序付け、近傍ノード間の関係に同じ重みを与える畳み込みニューラルネットワーク学習技術もある。
【０００５】
過学習を避けるための技術としては、例えば中間層素子の融合直後に学習に必要な各種変数の値を修正する、ニューラルネットワークの最適化学習方法がある。また、過剰学習を回避して、分類精度を向上させ、誤差／荷重比率を調整した、学習を行うことができるニューラルネットワークの学習装置がある。さらに、ユーザが設定する学習用の出力信号をニューラルネットワークの学習に適した形態に変換することで、ニューラルネットワークの過学習を防止する信号処理装置がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平８−３２９１９６号公報
【特許文献２】特開平９−８１５３５号公報
【特許文献３】特開平９−１３８７８６号公報
【特許文献４】特開２００２−２２２４０９号公報
【特許文献５】特開平７−３１９８４４号公報
【特許文献６】特開平８−２４９３０３号公報
【非特許文献】
【０００７】
【非特許文献１】Mathias Niepert, Mohamed Ahmed, Konstantin Kutzkov, "Learning Convolutional Neural Networks for Graphs", Proceedings of The 33rd International Conference on Machine Learning, ICML, 8 June 2016, pp. 2014-2023
【発明の概要】
【発明が解決しようとする課題】
【０００８】
人またはものの関係をニューラルネットワークで学習する場合において、入力層へ入力する値の順番が、出力層における出力値に影響する場合がある。すなわち、入力層への入力する値の順番が不適切であることが、分類精度低下の原因となる。そこで、正確な学習を行うには、教師データに示される複数の値を、適切な順番で入力することが重要となる。しかし、入力データに含まれる値の数が多い場合、それらの値の適切な入力順を決定するのは容易ではない。しかも、入力データに含まれる値の数が多いことが過学習を引き起こし、分類精度の低下を招く可能性もある。
【０００９】
１つの側面では、本件は、ニューラルネットワークによる分類精度を向上させることを目的とする。
【課題を解決するための手段】
【００１０】
１つの案では、コンピュータに以下の処理を実行させる機械学習プログラムが提供される。
まずコンピュータは、複数の項目それぞれの変数値の組み合わせパタンごとに数値が設定された入力データと、入力データに対する分類の正解を示す教師データとを取得する。次にコンピュータは、入力データの複数の項目のうちの第１項目の変数値それぞれと特定の関係を有する第２項目の変数値が一意に決まる場合、複数の項目から第２項目を除外した第１項目群内の項目それぞれの変数値の組み合わせパタンと、第１項目と第２項目とを含む第２項目群内の項目それぞれの変数値の組み合わせパタンとのそれぞれに対応する複数の基準値の配列により、複数の数値をニューラルネットワークへ入力する際の、複数の数値の順序付けの基準を示す照合パタンを生成する。次にコンピュータは、入力データに基づいて、第１項目群内の項目それぞれの変数値の組み合わせパタンそれぞれ、および第２項目群内の項目それぞれの変数値の組み合わせパタンそれぞれに対応する複数の入力用数値を算出する。次にコンピュータは、複数の入力用数値の入力順序を、照合パタンに基づいて決定する。次にコンピュータは、ニューラルネットワークの入力層の複数のユニットへ、複数の入力用数値を入力順序に従って入力した場合の、ニューラルネットワークの出力値を算出する。次にコンピュータは、出力値と教師データとの誤差に基づいて、ニューラルネットワークで正解を得るための、複数のユニットへの入力用数値の誤差を算出する。そしてコンピュータは、複数のユニットへの入力用数値の誤差に基づいて、照合パタンの複数の基準値を更新する。
【発明の効果】
【００１１】
１態様によれば、ニューラルネットワークによる分類精度を向上させることができる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態に係る機械学習装置の構成例を示す図である。
【図２】第２の実施の形態のシステム構成例を示す図である。
【図３】第２の実施の形態に用いる監視サーバのハードウェアの一構成例を示す図である。
【図４】監視サーバの機能の一例を示すブロック図である。
【図５】通信ログ記憶部の一例を示す図である。
【図６】教師データ記憶部の一例を示す図である。
【図７】学習結果記憶部の一例を示す図である。
【図８】過学習の抑止策を適用しない場合の学習データが十分にある場合のデータの分類方法を示す図である。
【図９】照合パタンの適正化の概要を示す図である。
【図１０】過学習の抑止策を適用しない場合の機械学習処理の手順を示すフローチャートの一例である。
【図１１】機械学習に利用するニューラルネットワークの一例を示す図である。
【図１２】機械学習の例を示す第１の図である。
【図１３】機械学習の例を示す第２の図である。
【図１４】機械学習の例を示す第３の図である。
【図１５】機械学習の例を示す第４の図である。
【図１６】機械学習の例を示す第５の図である。
【図１７】機械学習の例を示す第６の図である。
【図１８】照合パタンのパラメータ数を説明する図である。
【図１９】変換データの自由度が低い場合の例を示す図である。
【図２０】入力データの結合表現の一例を示す図である。
【図２１】照合パタンの結合表現の一例を示す図である。
【図２２】過学習の抑止策を適用する場合の機械学習処理の手順を示すフローチャートの一例である。
【図２３】独立モデル化できない場合と独立モデル化できる場合との例を示す図である。
【図２４】化合物の分類例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
まず第１の実施の形態に係る機械学習装置について説明する。
【００１４】
図１は、第１の実施の形態に係る機械学習装置の構成例を示す図である。機械学習装置１０は、記憶部１１と処理部１２とを有する。機械学習装置１０は、例えばコンピュータである。記憶部１１は、例えば機械学習装置１０が有するメモリまたはストレージ装置により実現することができる。処理部１２は、例えば機械学習装置１０が有するプロセッサにより実現することができる。
【００１５】
記憶部１１は、データ分類用のニューラルネットワーク１へ入力する数値の順序付けの基準が複数の基準値の配列で示された照合パタン１１ａ，１１ｂを記憶する。
処理部１２は、複数の数値の組を含む入力データ２と、入力データ２の分類の正解を示す教師データ３（教師ラベルと呼ぶこともある）とを取得する。例えば入力データ２には、複数の項目（項Ｓ、項Ｒ、項Ｐ）それぞれの変数値の組み合わせパタンごとに数値が設定されている。設定された数値は、例えば変数値の組み合わせに対応する事象の発生頻度に応じた値である。
【００１６】
ここで、入力データ２の複数の項目のうちの第１項目（項Ｒ）の変数値それぞれと特定の関係を有する第２項目（項Ｐ）の変数値が一意に決まる場合がある。特定の関係とは、例えば、関係の判定対象の第１項目（項Ｒ）の変数値と第２項目（項Ｐ）の変数値とを含む組み合わせパタンに設定された数値が所定範囲内（例えば０より大きな値）であることである。例えば、第１項目（項Ｒ）の特定の変数値を含む組み合わせパタンのうち、設定された数値が所定範囲内の組み合わせパタンに含まれる第２項目（項Ｐ）の変数値が、常に同じであれば、特定の関係を有する第２項目（項Ｐ）の変数値が一意に決まる。
【００１７】
図１の例であれば、第１項目（項Ｒ）の変数値「Ｒ１」を含む組み合わせパタンには、第２項目（項Ｐ）の変数値が「Ｐ１」の場合にのみ、０より大きな値が設定されている。同様に、第１項目（項Ｒ）の変数値「Ｒ２」を含む組み合わせパタンには、第２項目（項Ｐ）の変数値が「Ｐ２」の場合にのみ、０より大きな値が設定されている。したがって、図１に示す入力データ２では、複数の項目のうちの第１項目（項Ｒ）の変数値それぞれと特定の関係を有する第２項目（項Ｐ）の変数値が一意に決まる。
【００１８】
なお、第１項目の変数値と特定の関係を有する変数値を有する第２項目は、複数存在してもよい。
第１項目（項Ｒ）の変数値と特定の関係を有する第２項目（項Ｐ）の変数値が一意に決まる場合、入力データ２は、複数のデータ（第１部分データ４と第２部分データ５）の結合（ＪＯＩＮ）で表現することができる。そこで処理部１２は、結合することで入力データ２となる第１部分データ４と第２部分データ５それぞれの数値を適切に並べ替えるのに利用する照合パタン１１ａ，１１ｂを生成する。照合パタン１１ａ，１１ｂは、複数の基準値の配列により、複数の数値をニューラルネットワーク１へ入力する際の、複数の数値の順序付けの基準を示している。
【００１９】
照合パタン１１ａに示される複数の基準値は、複数の項目（項Ｓ、項Ｒ、項Ｐ）から第２項目（項Ｐ）を除外した第１項目群（項Ｓ、項Ｒ）内の項目それぞれの変数値の組み合わせパタンそれぞれに対応する。照合パタン１１ａの「項Ｓ」の変数値の数は、入力データ２の「項Ｓ」の変数値の数と同じである。ただし照合パタン１１ａの「項Ｓ」の変数値として、入力データ２の「項Ｓ」と同じ変数値を用いなくてもよい。例えば入力データ２の「項Ｓ」の変数値は「Ｓ１」、「Ｓ２」、「Ｓ３」の３つであるが、照合パタン１１ａの「項Ｓ」の変数値は「Ｓ’１」、「Ｓ’２」、「Ｓ’３」である。同様に、照合パタン１１ａの「項Ｒ」の変数値の数は、入力データ２の「項Ｒ」の変数値の数と同じである。
【００２０】
照合パタン１１ｂに示される複数の基準値は、第１項目（項Ｒ）と第２項目（項Ｐ）とを含む第２項目群（項Ｒ、項Ｐ）内の項目それぞれの変数値の組み合わせパタンそれぞれに対応する。照合パタン１１ｂの「項Ｒ」の変数値の数は、入力データ２の「項Ｒ」の変数値の数と同じである。照合パタン１１ｂの「項Ｒ」の変数値は、照合パタン１１ａの「項Ｒ」の変数値「Ｒ’１」、「Ｒ’２」と同じである。照合パタン１１ｂの「項Ｐ」の変数値の数は、入力データ２の「項Ｐ」の変数値の数と同じである。
【００２１】
処理部１２は、生成した照合パタン１１ａと照合パタン１１ｂとを、記憶部１１に格納する。
次に処理部１２は、入力データ２に基づいて、第１項目群（項Ｓ、項Ｒ）内の項目それぞれの変数値の組み合わせパタンそれぞれ、および第２項目群（項Ｒ、項Ｐ）内の項目それぞれの変数値の組み合わせパタンそれぞれに対応する複数の入力用数値を算出する。例えば処理部１２は、入力データ２に基づいて、第１部分データ４と第２部分データ５とを生成する。第１部分データ４には、第１項目群（項Ｓ、項Ｒ）内の項目それぞれの変数値の組み合わせパタンそれぞれに対応する入力用数値が設定されている。第２部分データ５には、第２項目群（項Ｒ、項Ｐ）内の項目それぞれの変数値の組み合わせパタンそれぞれに対応する入力用数値が設定されている。
【００２２】
次に処理部１２は、複数の入力用数値の入力順序を、照合パタン１１ａ，１１ｂに基づいて決定する。そして処理部１２は、決定した入力順序を示す変換データ６，７を生成する。例えば処理部１２は、第１部分データ４と第２部分データ５との各項目の変数値を、照合パタン１１ａ，１１ｂの対応する項目の変数値に置き換えることで、変換データ６，７を生成する。変換データ６，７における各項目の変数値の組み合わせに対応する数値は、第１部分データ４または第２部分データ５の置き換え前の変数値の組み合わせに対して設定されていた数値である。このとき、処理部１２は、変換データ６の変数値の置き換え後の数値の配列と、照合パタン１１ａの基準値の配列との類似度が最大化するように、第２部分データ５の変数値の置き換えを行う。同様に処理部１２は、変換データ７の変数値の置き換え後の数値の配列と、照合パタン１１ｂの基準値の配列との類似度が最大化するように、第２部分データ５の変数値の置き換えを行う。
【００２３】
図１の例では、変換データ６，７において、入力順序が上位の数値ほど上に配置されているものとする。例えば処理部１２は、変換データ６の入力順序が上位の数値から順に並べた複数の数値の配列を成分とした第１ベクトルを生成する。そして処理部１２は、照合パタン１１ａ内の複数の基準値を成分とする第２ベクトルと第１ベクトルとの内積が最大となるように、第１ベクトル内の成分の順番を入れ替えることで、第１部分データ４に含まれる複数の数値の入力順序を決定する。同様に処理部１２は、変換データ７の入力順序が上位の数値から順に並べた複数の数値の配列を成分とした第３ベクトルを生成する。そして処理部１２は、照合パタン１１ｂ内の複数の基準値を成分とする第４ベクトルと第３ベクトルとの内積が最大となるように、第３ベクトル内の成分の順番を入れ替えることで、第２部分データ５に含まれる複数の数値の入力順序を決定する。
【００２４】
次に処理部１２は、複数の数値を、決定された入力順序に従ってニューラルネットワーク１の入力層の複数のユニットへ入力する。そして処理部１２は、入力した数値に基づいてニューラルネットワーク１の出力値を算出する。図１の例では、ニューラルネットワーク１の入力層１ａのユニットが縦に並んで示されており、入力順序が上位の数値ほど、上に配置されたユニットへの入力となるように、複数の数値が入力層の複数のユニットに入力される。なお入力層１ａの１つのユニットには、１つの数値のみが入力されるものとする。図１の例では、変換データ６の数値を上位のユニットに入力し、変換データ７の数値を下位のユニットに入力している。
【００２５】
次に処理部１２は、ニューラルネットワーク１の出力値と教師データ３との誤差に基づいて、ニューラルネットワーク１で正解を得るための、入力層１ａの複数のユニットへの入力値の誤差８を算出する。例えば処理部１２は、ニューラルネットワーク１の誤差逆伝播法により、入力値の誤差８を算出する。
【００２６】
次に処理部１２は、入力層１ａの複数のユニットへの入力値の誤差８に基づいて、照合パタン１１ａ，１１ｂの複数の基準値を更新する。例えば処理部１２は、照合パタン１１ａ，１１ｂの複数の基準値それぞれを変化対象値として選択する。そして処理部１２は、変化対象値として選択した基準値ごとに以下の処理を実行する。
【００２７】
処理部１２は、照合パタン１１ａ（第１照合パタン）の変化対象値を所定量だけ変動させた仮第１照合パタン、または照合パタン１１ｂ（第２照合パタン）の変化対象値を所定量だけ変動させた仮第２照合パタンを生成する。次に処理部１２は、仮第１照合パタンと照合パタン１１ｂとの組、または仮第２照合パタンと照合パタン１１ａとの組に基づいて、複数の入力用数値それぞれの仮の入力順序を決定する。例えば処理部１２は、仮第１照合パタンと照合パタン１１ｂとの組、または仮第２照合パタンと照合パタン１１ａとの組に対する類似度が最大となるように第１部分データと第２部分データそれぞれの数値を並べ替えた変換データを生成する。
【００２８】
次に処理部１２は、照合パタン１１ａ，１１ｂに基づいて決定した入力順序と、仮第１照合パタンと仮第２照合パタンに基づいて決定した仮の入力順序とにおいて、同じ順番となる数値間の差分値を算出する。
【００２９】
次に処理部１２は、複数のユニットへの入力値の誤差８と、同じ順番となる数値間の差分値とに基づいて、照合パタン１１ａ，１１ｂ内の変化対象値に対応する基準値の増加または減少を決定する。例えば処理部１２は、入力値の誤差８を成分とする第３ベクトルと、仮の入力順序が上位の方から並べられた、同じ順番の数値との差分値を成分とする第４ベクトルとの内積に基づいて、変化対象値に対応する基準値の増加または減少を決定する。
【００３０】
変化対象値を所定量だけ増加させたのであれば、処理部１２は、内積の符号が正のとき基準値の値を減少させると決定し、内積の符号が負のとき基準値の値を増加させると決定する。また変化対象値を所定量だけ減少させたのであれば、処理部１２は、内積の符号が正のとき基準値の値を増加させると決定し、内積の符号が負のとき基準値の値を減少させると決定する。
【００３１】
照合パタン１１ａ，１１ｂのすべての基準値に対応する変動値を算出すると、処理部１２は、増加または減少の決定に従って、変化対象値として選択された照合パタン１１ａ，１１ｂの基準値を更新する。例えば処理部１２は、ニューラルネットワーク１のステップサイズを変動値に乗算し、乗算結果を、照合パタン１１ａ，１１ｂ内のその変動値に対応する基準値から減算する。
【００３２】
処理部１２は、このような照合パタン１１ａ，１１ｂの更新処理を、例えば更新前と更新後とで、照合パタン１１ａ，１１ｂの基準値の差が所定値以下になるまで繰り返す。その結果、入力データ２を適正に並べ替える基準を示す照合パタン１１ａ，１１ｂが得られる。
【００３３】
最終的に得られた照合パタン１１ａ，１１ｂを用いて、分類の正解が不明の入力データを並べ替え、ニューラルネットワーク１を用いて分類することで、その入力データを正しく分類することができる。すなわち入力データにおける数値の配列が分類結果に影響をおよぼす場合であっても、数値が適切な順番で並べ替えられることで、適切な分類結果が得られる。
【００３４】
しかも、入力データ２に設定されている数値の数よりも、第１部分データ４または第２部分データ５に設定されている数値の数が少なくてすむ。これにより、照合パタン１１ａ，１１ｂに含まれる基準値も少なくてすむ。基準値の数が削減され、入力データ２の数値数も同様に削減されることで、ニューラルネットワーク１が過学習になることが抑止される。
【００３５】
例えば入力データ２は、３つの項目の変数値のすべての組み合わせに応じた数値が設定されている。そのため、入力データ２には、「項Ｓ」の変数値数×「項Ｒ」の変数値数×「項Ｐ」の変数値数に対応する数（３×２×３＝１８個）の数値が含まれる。すなわち入力データ２の数値の数は、３次の式で表される。
【００３６】
それに対して、第１部分データ４は、２つの項目の変数値のすべての組み合わせに応じた数値が設定されている。そのため、第１部分データ４には、「項Ｓ」の変数値数×「項Ｒ」の変数値数に対応する数（３×２＝６個）の数値が含まれる。同様に第２部分データ５には、「項Ｒ」の変数値数×「項Ｐ」の変数値数に対応する数（２×３＝６個）の数値が含まれる。第１部分データ４内の数値の数と第２部分データ５内の数値の数とを合計（６＋６＝１２個）しても、入力データ２の数値の数（１８個）より少ない。すなわち第１部分データ４と第２部分データ５との数値の数は、２次の式で表される。これは、入力データ２の数値の数を表す式よりも少ない次数である。数値の数を示す式の次数が減ることで、数値の数が減ることが分かる。
【００３７】
このように、２つの照合パタン１１ａ，１１ｂで基準値を定義し、入力データ２を第１部分データ４と第２部分データ５とで表すことで、基準値の数、およびニューラルネットワーク１に入力する数値の数が削減される。その結果、過学習が抑止される。
【００３８】
なお、第１部分データ４と第２部分データ５とには、入力データ２の特徴が含まれている。そのため、入力データ２を第１部分データ４と第２部分データ５とに分離しても、分類精度を低下させずにすむ。
【００３９】
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、コンピュータネットワーク上の通信ログに基づいて、不正な通信の有無を、ニューラルネットワークを用いて解析するものである。
【００４０】
図２は、第２の実施の形態のシステム構成例を示す図である。ネットワーク２０には、複数のサーバ２１１，２１２，・・・、複数の端末装置２２１，２２２，・・・、および監視サーバ１００が接続されている。複数のサーバ２１１，２１２，・・・は、いずれかの端末装置からの要求に応じた処理を実行するコンピュータである。複数のサーバ２１１，２１２，・・・のうちの２台以上が連携して処理を実行する場合もある。複数の端末装置２２１，２２２，・・・は、複数のサーバ２１１，２１２，・・・で提供されるサービスを利用するユーザが使用するコンピュータである。
【００４１】
監視サーバ１００は、ネットワーク２０を介して行われた通信を監視し、通信ログを記録する。監視サーバ１００は、通信ログを用いて、機械学習を行い、不正通信の有無を判別に利用するニューラルネットワークの最適化を行う。そして監視サーバ１００は、通信ログに基づいて、最適化されたニューラルネットワークを用いて不正通信が行われた時間帯を検出する。
【００４２】
図３は、第２の実施の形態に用いる監視サーバのハードウェアの一構成例を示す図である。監視サーバ１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１がプログラムを実行することで実現する機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００４３】
メモリ１０２は、監視サーバ１００の主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。メモリ１０２としては、例えばＲＡＭ（Random Access Memory）などの揮発性の半導体記憶装置が使用される。
【００４４】
バス１０９に接続されている周辺機器としては、ストレージ装置１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００４５】
ストレージ装置１０３は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置１０３は、コンピュータの補助記憶装置として使用される。ストレージ装置１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置１０３としては、例えばＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）を使用することができる。
【００４６】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００４７】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００４８】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００４９】
機器接続インタフェース１０７は、監視サーバ１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５やメモリリーダライタ２６を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。
【００５０】
ネットワークインタフェース１０８は、ネットワーク２０に接続されている。ネットワークインタフェース１０８は、ネットワーク２０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００５１】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。なお、第１の実施の形態に示した装置も、図３に示した監視サーバ１００と同様のハードウェアにより実現することができる。
【００５２】
監視サーバ１００は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。監視サーバ１００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、監視サーバ１００に実行させるプログラムをストレージ装置１０３に格納しておくことができる。プロセッサ１０１は、ストレージ装置１０３内のプログラムの少なくとも一部をメモリ１０２にロードし、プログラムを実行する。また監視サーバ１００に実行させるプログラムを、光ディスク２４、メモリ装置２５、メモリカード２７などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１０１からの制御により、ストレージ装置１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００５３】
次に、監視サーバが有する機能について説明する。
図４は、監視サーバの機能の一例を示すブロック図である。監視サーバ１００は、通信情報収集部１１０、通信ログ記憶部１２０、教師データ記憶部１３０、学習部１４０、学習結果記憶部１５０、および解析部１６０を有する。
【００５４】
通信情報収集部１１０は、ネットワーク２０を介して送受信されているパケットなどの通信情報を取得する。例えば通信情報収集部１１０は、ネットワーク２０内に設置されたスイッチのミラーリングポートを介して、そのスイッチを経由して通信されたパケットを取得する。また通信情報収集部１１０は、各サーバ２１１，２１２，・・・から、そのサーバ自身の通信ログを取得することもできる。通信情報収集部１１０は、取得した通信情報を、通信ログ記憶部１２０に格納する。
【００５５】
通信ログ記憶部１２０は、通信情報収集部１１０が収集した通信情報のログ（通信ログ）を記憶する。
教師データ記憶部１３０は、過去の所定の期間における単位時間帯（例えば１０分間）ごとの、不正通信の発生の有無（教師フラグ）を示す情報を記憶する。
【００５６】
学習部１４０は、通信ログ記憶部１２０に格納された通信ログと、教師データ記憶部１３０に格納された教師フラグとに基づいて、不正通信が行われたときの通信ログの特徴を学習し、学習結果を反映させたニューラルネットワークを生成する。例えば学習部１４０は、ニューラルネットワークへの入力データの並べ替えに用いる照合パタンと、ニューラルネットワーク内の各ユニットへ入力する値の重みとを決定する。そして学習部１４０は、ニューラルネットワーク、照合パタン、および重みを含む学習結果を学習結果記憶部１５０に格納する。
【００５７】
学習結果記憶部１５０は、学習部１４０における学習結果を記憶する。
解析部１６０は、学習結果記憶部１５０に格納された学習結果に基づいて、通信ログ記憶部１２０に新たに格納された単位時間帯の通信ログを解析し、その単位時間帯内に不正通信が行われたか否かを判断する。
【００５８】
なお、図４に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図４に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【００５９】
次に通信ログ記憶部１２０に格納される情報について具体的に説明する。
図５は、通信ログ記憶部の一例を示す図である。通信ログ記憶部１２０には、複数の単位期間ログ１２１，１２２，・・・が格納されている。単位期間ログ１２１，１２２，・・・それぞれには、通信ログの収集期間が示されている。単位期間ログ１２１，１２２，・・・には、収集期間で示された時間帯内に収集した通信情報が格納される。
【００６０】
単位期間ログ１２１，１２２，・・・に格納される各レコードには、通信元ホスト、通信先ホスト、および量が含まれる。通信元ホストは、パケットの通信元の装置の識別子である。通信先ホストは、パケットの宛先の装置の識別子である。量は、通信元ホストと通信先ホストとの組が同一となる通信の出現回数である。なお単位期間ログ１２１，１２２，・・・に、通信に使用されたポートの識別子（例えば宛先のＴＣＰ／ＵＤＰのポート番号）を含めてもよい。
【００６１】
次に教師データ記憶部１３０に格納される情報について具体的に説明する。
図６は、教師データ記憶部の一例を示す図である。教師データ記憶部１３０には、正常通信リスト１３１と不正通信リスト１３２とが格納されている。正常通信リスト１３１には、正常な通信が行われていた単位期間のリストが設定される。不正通信リスト１３２には、不正な通信が行われた単位期間のリストが設定される。正常通信リスト１３１と不正通信リスト１３２への単位期間の設定は、例えばシステムの管理者が行う。
【００６２】
機械学習を行う際には、単位期間が正常通信リスト１３１と不正通信リスト１３２とのどちらに登録されているかにより、その単位期間の通信ログを入力データとして機械学習を実施したときの正解を示す値（教師ラベル）が決定される。例えば学習部１４０は、正常通信リスト１３１に登録されている単位期間の通信ログを入力データとしたときの教師ラベルを「１．０」とする。また学習部１４０は、不正通信リスト１３２に登録されている単位期間の通信ログを入力データとしたときの教師ラベルを「０．０」とする。
【００６３】
次に学習結果記憶部１５０に格納される情報について具体的に説明する。
図７は、学習結果記憶部の一例を示す図である。学習結果記憶部１５０には、ニューラルネットワーク１５１、パラメータ群１５２、および照合パタン１５３が格納されている。ニューラルネットワーク１５１は、入力層から出力層まで、ニューロンを表すユニットを接続したものである。図７において、ユニットは円で表されている。
【００６４】
ユニット間は、信号の流れを示す矢印で接続されている。各ユニットには、入力された信号に対する処理が定義されている。各ユニットにおける処理の結果、そのユニットから出力される信号が決定され、その信号が次のユニットに送られる。出力層のユニットから出力される信号の値に基づいて、入力されたデータが属する分類（例えば、不正通信を含む通信ログなのか否か）が判定される。
【００６５】
パラメータ群１５２には、あるユニットから別のユニットに与える影響の強さを示す複数の重み値が含まれる。各重み値は、ニューラルネットワーク１５１のユニット間を接続する矢印に対応付けられている。
【００６６】
照合パタン１５３は、単位期間ログ内の各レコードの並べ替えに使用する情報である。分類対象の単位期間ログを、ニューラルネットワーク１５１を用いて分類する場合、照合パタン１５３と類似するように、単位期間ログ内のレコードの並べ替えが行われる。例えば照合パタン１５３のレコードには、通信元ホスト、通信先ホスト、および量が含まれる。通信元ホストは、パケットの送信元の装置を示す、ニューラルネットワーク１５１を用いた解析上の識別子である。通信先ホストは、パケットの送信先の装置を示す、ニューラルネットワーク１５１を用いた解析上の識別子である。量は、通信元ホストと通信先ホストとの組に対応する通信の単位期間内での発生確率である。
【００６７】
次に、ニューラルネットワーク１５１を用いたデータ分類方法について説明する。なお第２の実施の形態では、過学習の抑止策を適用する場合と、過学習の抑止策を適用しない場合とで処理が異なる。過学習の抑止策を適用する場合とは、例えば過学習になりやすく、過学習の抑止策が適用可能な場合である。以下、過学習の抑止策を適用しない場合の処理を先に説明し、次に、過学習の抑止策を適用する場合における過学習の抑止策を適用しない場合との相違点を説明する。
【００６８】
＜過学習の抑止策を適用しない場合のデータ分類処理＞
図８は、過学習の抑止策を適用しない場合のデータの分類方法を示す図である。例えば、１つの単位期間ログを、ニューラルネットワーク１５１を用いた分類対象の入力データ３０として、解析部１６０に入力する場合を想定する。
【００６９】
入力データ３０内の各レコードが、ニューラルネットワーク１５１の入力層のいずれかのユニットに対応付けられる。そして各レコード内の量の値が、対応付けられたユニットへの入力となる。入力層に入力される値は、例えば正規化して入力される。
【００７０】
図８に示すように、複数の対象物の関係（通信元ホストと通信先ホストとの関係）に応じた分類を行う場合、どの関係をどのユニットへの入力とするのが適切なのか、不明な場合が多い。例えば、不正通信が、あるサーバによる処理ａと、そのサーバとは別のサーバによる処理ｂと組み合わせで実施される場合を想定する。この場合、サーバＡが処理ａを実行し、サーバＢが処理ｂを実行すれば、不正通信が成立する。また、サーバＢが処理ａを実行し、サーバＡが処理ｂを実行しても、不正通信が成立する。このように、不正通信の有無を検出する場合、不正通信のパタンを構成するホストは、その都度異なる。
【００７１】
そこで不正通信の有無についてニューラルネットワーク１５１を用いて判別する場合、入力データ３０内の各レコードに、不正通信の有無を正しく判定できるように順序付けを行うこととなる。例えば分類に強く寄与する関係が、変数値間の関係全体の構造とは無関係に出現する場合、適切な順序付けを行わないと、その関係が適切に入力層のユニットに対応付けられず、分類精度が悪くなってしまう。
【００７２】
複数の対象物の関係を示すレコードの従来の順序付けは、分類精度とは無関係に行われている。そのため従来の方法では、より高い分類精度が得られる方法が見逃される可能性が高い。単純に、順序付けのすべてのパタンを生成し、すべてのパタンを入力データとすることも考えられるが、計算量が膨大となる。そこで、第２の実施の形態では、学習部１４０が適切な照合パタン１５３を生成することで、少ない計算量で、精度よく分類可能な順序付けを可能とする。
【００７３】
図９は、照合パタンの適正化の概要を示す図である。学習部１４０は、照合パタン５０の初期値を設定する。例えば通信元ホストが２台存在し、通信先ホストが２台存在する場合を想定する。この場合、学習部１４０は、通信元ホストの識別子として「Ｓ’１」と「Ｓ’２」とを生成する。また学習部１４０は、通信先ホストの識別子として「Ｒ’１」と「Ｒ’２」とを生成する。さらに学習部１４０は、通信元ホストの識別子と通信先ホストの識別子とのすべての組み合わせを生成し、各組み合わせの量に初期値を設定する。初期値は、例えばランダムに生成した値である。そして学習部１４０は、通信元ホストの識別子、通信先ホストの識別子、および量の組を１レコードとする照合パタン５０を生成する。
【００７４】
次に学習部１４０は、教師データ記憶部１３０内の正常通信リスト１３１または不正通信リスト１３２に含まれる単位期間の通信ログを、入力データ３０として取得する。次に、学習部１４０は、入力データ３０に示される通信元ホストの識別子と通信先ホストの識別子とを、照合パタン５０で用いている識別子に変換するとともに、レコードに順序付けを行い、照合パタン５０と類似度が最大となる変換データ６０を生成する。照合パタン５０と変換データ６０との類似度は、例えば各レコードの量の値を示すベクトル間の内積で表される。なお、入力データ３０内の通信元ホストの識別子と、照合パタン５０内の通信元ホストの識別子とは、１対１で対応付けられる。
【００７５】
変換データ６０の生成処理では、学習部１４０は、入力データ３０の量を成分とし、量の順番を並べ替えで生成可能なすべてのベクトル（入力ベクトル）を生成する。また学習部１４０は、照合パタン５０に設定されている量を成分として、照合パタン５０に示される順に成分を並べたベクトル（照合ベクトル）を生成する。次に学習部１４０は、複数のベクトルそれぞれについて、照合ベクトルとの内積を計算する。学習部１４０は、内積が最大となる入力ベクトルを特定する。学習部１４０は、特定した入力ベクトルが得られるように、入力データ３０の通信元ホストと通信先ホストとの識別子を、照合パタン５０に示す識別子に変換する。
【００７６】
図９の例では、入力ベクトル（１，３，０，２）が最も照合ベクトル（０．２，０．１，−０．３，０．４）との内積が大きくなる。そこで、入力データ３０において量が「３」の関係「Ｓ１，Ｒ１」を示すレコードは、変換データ６０では２番目のレコードとなるように、「Ｓ’２，Ｒ’１」に変換されている。入力データ３０において量が「１」の関係「Ｓ２，Ｒ１」を示すレコードは、変換データ６０では１番目のレコードとなるように、「Ｓ’１，Ｒ’１」に変換されている。入力データ３０において量が「２」の関係「Ｓ１，Ｒ２」を示すレコードは、変換データ６０では４番目のレコードとなるように、「Ｓ’２，Ｒ’２」に変換されている。入力データ３０において量が「０」の関係「Ｓ２，Ｒ２」を示すレコードは、変換データ６０では３番目のレコードとなるように、「Ｓ’１，Ｒ’２」に変換されている。このように、先に量の値の順序付けが行われ、それに合わせて通信元ホストと通信先ホストとの識別子が変換される。
【００７７】
このように第２の実施の形態では、入力データ３０の順序付けが、照合パタン５０を基準に決められる。学習部１４０は、以下の手順でニューラルネットワーク１５１の誤差逆伝播を利用し、照合パタン５０を最適化することで、入力データ３０の順序付けの最適な基準を定義する。
【００７８】
変換データ６０を生成すると、学習部１４０は、変換データ６０の量を、ニューラルネットワーク１５１の入力層の各ユニットへの入力として、ニューラルネットワーク１５１に基づく順伝播を計算する。そして学習部１４０は、出力層からの出力と、教師データ記憶部１３０に設定された正解の値とを比較し、誤差を計算する。次に学習部１４０は、誤差逆伝播により、誤差が減少するように各ユニットへの入力の重み値を修正する。学習部１４０は、誤差逆伝播を入力層のユニットへの入力にも適用し、入力層のユニットへの入力値の誤差を計算する。これにより、入力層の誤差を示す誤差ベクトル（−１．３，０．１，１．０，−０．７）が得られる。
【００７９】
また学習部１４０は、照合パタン５０の変動に対する変換データ６０の量の変分を算出する。例えば学習部１４０は、照合パタン５０における「Ｓ’１，Ｒ’１」の量が「１」だけ増加した場合を想定し、その場合の照合パタンとの類似度が最大となる変換データ６０ａを生成する。変換データ６０ａの生成方法は、変換データ６０を生成する場合と同じである。例えば学習部１４０は、照合パタン５０の「Ｓ’１，Ｒ’１」の量を「１．２」に変更した仮の照合パタンを生成し、仮の照合パタンとの類似度が最大となるように入力データ３０のレコードを並べ替え、変換データ６０ａを生成する。このとき生成される仮の照合パタンは、照合パタン５０内の１つの量の変化が変換データ６０におよぼす影響を調査するために一時的に生成される照合パタンである。基準となる照合パタンの量が変わったことで、変換データ６０とは異なる変換データ６０ａが生成される。
【００８０】
学習部１４０は、新たに生成した変換データ６０ａの量と、変換データ６０の量との変分を計算する。例えば学習部１４０は、同じ順番のレコードごとに、変換データ６０ａのレコードの量から変換データ６０のレコ−ドの量を減算する。その結果、量の変分を示す変分ベクトル（２，−２，２，−２）が得られる。
【００８１】
学習部１４０は、誤差逆伝播により得られる入力層の誤差ベクトルと、照合パタン５０の「Ｓ’１，Ｒ’１」の量を「１」だけ増加させた場合の変換データ６０ａに基づく変分ベクトルとの内積を計算する。学習部１４０は、算出された内積により、照合パタン５０の「Ｓ’１，Ｒ’１」の量の変動方向、および変動量を決定する。照合パタン５０の「Ｓ’１，Ｒ’１」の量を「１」だけ増加させることで、分類誤差が増加する場合、内積の結果は正となる。そのため内積の結果に負の値を乗算した方向が、「Ｓ’１，Ｒ’１」の量の変動方向となる。例えば学習部１４０は、内積に負の実数を乗算した値を、照合パタン５０における「Ｓ’１，Ｒ’１」の量に加算することで、その量を変動させる。なお入力データが複数ある場合、学習部１４０は、例えば複数の入力データそれぞれに基づいて計算した内積の平均値に基づいて、「Ｓ’１，Ｒ’１」の量を変動させる。
【００８２】
同様に照合パタン５０の他の量も、その量を「１」増加した場合の変換データに基づいて、変動させることができる。
このように学習部１４０は、分類誤差を増加させる変換データの量の変分の方向（入力層の誤差）に、照合パタンの変動に対する変換データの量の変分を掛け合わせることにより、分類誤差を増加させる照合パタンの変動の方向、および変動量を算出する。
【００８３】
以下、学習部１４０における機械学習の処理を具体的に説明する。
図１０は、過学習の抑止策を適用しない場合の機械学習処理の手順を示すフローチャートの一例である。以下、図１０に示す処理をステップ番号に沿って説明する。
【００８４】
［ステップＳ１０１］学習部１４０は、照合パタンとニューラルネットワークの、各ユニットへの入力の重みのパラメータを初期化する。例えば学習部１４０は、照合パタンの各レコードの量に、ランダムに生成した値を設定する。また学習部１４０は、各重みの値として、ランダムに生成した値を設定する。
【００８５】
［ステップＳ１０２］学習部１４０は、照合パタンに最も類似する変換データに、入力データを変換する。
［ステップＳ１０３］学習部１４０は、ニューラルネットワークを用いた順伝播および誤差逆伝播により、入力層の誤差ベクトルを取得する。
【００８６】
［ステップＳ１０４］学習部１４０は、照合パタンの未選択のレコードを１つ選択する。
［ステップＳ１０５］学習部１４０は、選択したレコードの量を「１」だけ増加させたときの、変換データの量の変分ベクトルを算出する。
【００８７】
［ステップＳ１０６］学習部１４０は、ステップＳ１０３で取得した誤差ベクトルと、ステップＳ１０５で算出した変分ベクトルとの内積を算出する。学習部１４０は、内積の結果を、選択したレコードの変動値とする。
【００８８】
［ステップＳ１０７］学習部１４０は、照合パタン内のすべてのレコードを選択したか否かを判断する。すべてのレコードが選択済みであれば、処理がステップＳ１０８に進められる。未選択のレコードがあれば、処理がステップＳ１０４に進められる。
【００８９】
［ステップＳ１０８］学習部１４０は、照合パタンの量とニューラルネットワークの重みのパラメータとを更新する。例えば学習部１４０は、照合パタンの各レコードの量に、レコードを選択したときにステップＳ１０６で算出した変動値を加算する。また学習部１４０は、ニューラルネットワークの誤差逆伝播によって計算した各パラメータの修正後の値に、重みのパラメータを更新する。
【００９０】
［ステップＳ１０９］学習部１４０は、処理の終了条件が満たされたか否かを判断する。例えば学習部１４０は、照合パタンの量とニューラルネットワークの重みのパラメータとが収束したか、もしくは、ステップＳ１０２〜Ｓ１０８の処理を所定回数以上ループさせた場合、終了条件が満たされたと判断する。照合パタンの量については、例えばステップＳ１０８における更新前後での各量の変化量の合計が所定値以下であれば、収束したと判断することができる。またニューラルネットワークの重みのパラメータについては、例えばステップＳ１０８における更新前後での各パラメータの変化量の合計が所定値以下であれば、収束したと判断することができる。すなわち、照合パタンの量とニューラルネットワークの重みのパラメータとのいずれもが、ステップＳ１０８の更新によってほとんど値が変化しない場合、収束したものと判断できる。終了条件が満たされた場合、処理が終了する。終了条件が満たされていなければ、処理がステップＳ１０２に進められる。
【００９１】
以上のような手順で機械学習を実行し、適切な照合パタンの量と各パラメータの値とを決定することができる。以下、図１１〜図１７を参照して、具体的な機械学習の例について説明する。なお、図１２〜図１７以下では、各データの通信元ホストを設定するフィールドを「項Ｓ」と表し、通信先ホストを設定するフィールドを「項Ｒ」と表すものとする。
【００９２】
図１１は、機械学習に利用するニューラルネットワークの一例を示す図である。図１１の例では、第２の実施の形態の処理を分かりやすくするため、ユニットが４つの入力層とユニットが１つの出力層とで構成されるニューラルネットワーク４１を想定する。入力層の各ユニットから出力層のユニットへの信号には、それぞれ重みを示すパラメータ（Ｗ１，Ｗ２，Ｗ３，Ｗ４）が設定されている。学習部１４０は、このようなニューラルネットワーク４１を用いて機械学習を行う。
【００９３】
図１２は、機械学習の例を示す第１の図である。例えば教師ラベル「１．０」の入力データ３１に基づいて、学習部１４０が機械学習を行うものとする。まず学習部１４０は、照合パタン５１の量と、パラメータ群７１の各重みの値とを初期化する。
【００９４】
次に学習部１４０は、照合パタン５１との類似度が最大となるように、入力データ３１の並べ替えを行い、変換データ６１を生成する。図１２の例では、照合パタン５１の量を成分とする照合ベクトルと、変換データ６１の量を成分とする入力ベクトルとの内積は「１．３」である。
【００９５】
図１３は、機械学習の例を示す第２の図である。学習部１４０は、変換データ６１の量を入力ベクトルとして、ニューラルネットワーク４１の順伝播の計算を行い、出力値を算出する。例えば学習部１４０は、入力ベクトルの各成分の量に、その量の入力先のユニットの重みの値を乗算し、成分ごとの乗算結果の合計を、順伝播の出力値とする。図１３の例では、出力値は「２．１」（１×１．２＋３×（−０．１）＋０×（−０．９）＋２×（０．６））である。学習部１４０は、出力値「２．１」と教師ラベル「１．０」との差を計算する。例えば学習部１４０は出力値から教師ラベルの値を減算し、差「１．１」を得る。この差は、出力値が「１．１」だけ大きすぎることを意味する。
【００９６】
次に学習部１４０は、誤差逆伝播により、入力層へ入力する値の誤差を計算する。例えば学習部１４０は、教師ラベルとの差を各ユニットの重みの値に乗算し、乗算結果を、そのユニットへ入力する量の誤差とする。そして学習部１４０は、入力層のユニットごとの誤差を成分とするベクトルを生成することで、誤差ベクトル（１．３，−０．１，−１．０，０．７）を得る。誤差ベクトルの成分の符号が正の場合、入力層の対応するユニットへの入力値が大きすぎることを意味する。誤差ベクトルの成分の符号が負の場合、入力層の対応するユニットへの入力値が小さすぎることを意味する。
【００９７】
また学習部１４０は、初期状態の照合パタン５１（図１２参照）の「Ｓ’１，Ｒ’１」のレコードの量を「１」だけ増加させて「１．２」とした照合パタン５２を生成する。次に学習部１４０は、入力データ３１の順序付けを行い、照合パタン５２と類似度が最大となる変換データ６２を生成する。次に学習部１４０は、元の変換データ６１と新たに生成した変換データ６２との量を、通信元ホスト（項Ｓ）と通信先ホスト（項Ｒ）との組が同じレコード同士で比較し、量の変分を計算する。例えば変換データ６２の「Ｓ’１，Ｒ’１」の量「３」から、変換データ６１の「Ｓ’１，Ｒ’１」の量「１」を減算し、減算結果「２」を「Ｓ’１，Ｒ’１」に対応する量の変分とする。学習部１４０は、レコードごとに計算した量の変分を成分とする変分ベクトル（２，−２，２，−２）を生成する。
【００９８】
学習部１４０は、誤差ベクトル（１．３，−０．１，−１．０，０．７）と変分ベクトル（２，−２，２，−２）との内積を計算し、得られた内積「−０．６」を「Ｓ’１，Ｒ’１」の量の変動値とする。学習部１４０は、例えば、通信元ホスト（項Ｓ）と通信先ホスト（項Ｒ）との組「Ｓ’１，Ｒ’１」に対応付けて、変動値「−０．６」を変動データ８０に設定する。
【００９９】
誤差ベクトルは、各入力値について、出力値の誤差を拡大させる方向にどの程度ずれているのかを示している。そのため「Ｓ’１，Ｒ’１」のレコードの量を「１」だけ増加させたときの変分ベクトルが誤差ベクトルと類似している場合、その量の増加が、出力値の誤差を拡大させる方向に作用することを意味する。すなわち、誤差ベクトルと変分ベクトルとの内積が正の場合、「Ｓ’１，Ｒ’１」の量を増加させると、出力値の誤差が拡大する。誤差ベクトルと変分ベクトルとの内積が負の場合、「Ｓ’１，Ｒ’１」の量を増加させると、出力値の誤差が縮小する。
【０１００】
図１４は、機械学習の例を示す第３の図である。学習部１４０は、初期状態の照合パタン５１（図１２参照）の「Ｓ’２，Ｒ’１」のレコードの量を「１」だけ増加させて「１．１」とした照合パタン５３を生成する。次に学習部１４０は、入力データ３１の順序付けを行い、照合パタン５３と類似度が最大となる変換データ６３を生成する。次に学習部１４０は、元の変換データ６１と新たに生成した変換データ６３との量を、通信元ホスト（項Ｓ）と通信先ホスト（項Ｒ）との組が同じレコード同士で比較し、量の変分を計算する。そして学習部１４０は、レコードごとに計算した量の変分を成分とする変分ベクトル（０，０，０，０）を生成する。学習部１４０は、誤差ベクトル（１．３，−０．１，−１．０，０．７）と変分ベクトル（０，０，０，０）との内積を計算し、得られた内積「０．０」を「Ｓ’２，Ｒ’１」の量の変動値として、変動データ８０に設定する。
【０１０１】
図１５は、機械学習の例を示す第４の図である。学習部１４０は、初期状態の照合パタン５１（図１２参照）の「Ｓ’１，Ｒ’２」のレコードの量を「１」だけ増加させて「０．７」とした照合パタン５４を生成する。次に学習部１４０は、入力データ３１の順序付けを行い、照合パタン５４と類似度が最大となる変換データ６４を生成する。次に学習部１４０は、元の変換データ６１と新たに生成した変換データ６４との量を、通信元ホスト（項Ｓ）と通信先ホスト（項Ｒ）との組が同じレコード同士で比較し、量の変分を計算する。そして学習部１４０は、レコードごとに計算した量の変分を成分とする変分ベクトル（１，−３，３，−１）を生成する。学習部１４０は、誤差ベクトル（１．３，−０．１，−１．０，０．７）と変分ベクトル（１，−３，３，−１）との内積を計算し、得られた内積「−２．１」を「Ｓ’１，Ｒ’２」の量の変動値として、変動データ８０に設定する。
【０１０２】
図１６は、機械学習の例を示す第５の図である。学習部１４０は、初期状態の照合パタン５１（図１２参照）の「Ｓ’２，Ｒ’２」のレコードの量を「１」だけ増加させて「１．４」とした照合パタン５５を生成する。次に学習部１４０は、入力データ３１の順序付けを行い、照合パタン５５と類似度が最大となる変換データ６５を生成する。次に学習部１４０は、元の変換データ６１と新たに生成した変換データ６５との量を、通信元ホスト（項Ｓ）と通信先ホスト（項Ｒ）との組が同じレコード同士で比較し、量の変分を計算する。そして学習部１４０は、レコードごとに計算した量の変分を成分とする変分ベクトル（−１，−１，１，１）を生成する。学習部１４０は、誤差ベクトル（１．３，−０．１，−１．０，０．７）と変分ベクトル（−１，−１，１，１）との内積を計算し、得られた内積「−１．５」を「Ｓ’２，Ｒ’２」の量の変動値として、変動データ８０に設定する。
【０１０３】
図１７は、機械学習の例を示す第６の図である。学習部１４０は、変換データ６１の各レコードの量に、ニューラルネットワーク４１の順伝播の計算結果と教師ラベルとの差「１．１」を乗算する。学習部１４０は、乗算結果に、定数αをさらに乗算する。定数αの値は、例えばニューラルネットワーク４１のステップサイズであり、図１１〜図１７に示した例では「α＝１」である。学習部１４０は、「変換データ６１の量×教師ラベルとの差「１．１」×定数α」の結果を、パラメータ群７１のパラメータから減算する。
【０１０４】
例えば学習部１４０は、入力層の１つめのユニットに対応する重み「Ｗ１」の値「１．２」から、そのユニットへ入力する量「１」に「１．１」とα「１」を乗算した結果「１．１」を減算し、新たな重み「Ｗ１」の値「０．１」とする。同様に、入力層のユニットごとに、重みのパラメータの値が更新され、新たなパラメータ群７２が生成される。
【０１０５】
また学習部１４０は、通信元ホスト（項Ｓ）と通信先ホスト（項Ｒ）との組ごとに、照合パタン５１に示される量から、変動データ８０の変動値に定数αを乗算した値を減算する。そして学習部１４０は、通信元ホスト（項Ｓ）と通信先ホスト（項Ｒ）との組ごとの計算結果を、更新後の照合パタン５６の量の値とする。例えば「Ｓ’１，Ｒ’１」の量は、「０．８」（０．２−１×（−０．６））に更新される。
【０１０６】
入力データが複数ある場合、学習部１４０は、入力データごとに算出された変換データ６１の量の平均値を用いて、パラメータ群７１の重みの値を更新する。また学習部１４０は、入力データごとに算出された変動データ８０の変動値の平均値を用いて、照合パタン５１の量を更新する。
【０１０７】
このようにして学習部１４０により、ニューラルネットワークにより算出される誤差を利用して、照合パタンが更新される。最終的に出力された照合パタンを用いて、解析部１６０が通信ログの分類を行う。例えば解析部１６０は、学習フラグがない通信ログを、照合パタンとの類似度が最大になるように変換する。そして、解析部１６０は、変換後のデータをニューラルネットワークへの入力値として入力し、ニューラルネットワークの出力値を計算する。その際、解析部１６０は、学習部１４０によって生成されたパラメータ群によって、各ユニットへの入力値を重み付けする。そして解析部１６０は、ニューラルネットワークの出力値により、例えば、通信ログの取得期間内に不正通信が行われたか否かを判定する。すなわち、その通信ログが、正常な通信の記録なのか、不正な通信の記録なのかの分類が行われる。このようにして、入力データの適切な順序付けにより、高精度の分類が可能となる。
【０１０８】
しかも、順序付けのすべてのパタンを探索することなく、現実的な計算量で最適な順序付けが探索可能となり、計算量も少なくてすむ。例えば、３項目の人またはものがあり、各項目の種類数がそれぞれ「Ａ，Ｂ，Ｃ」（Ａ，Ｂ，Ｃは１以上の整数）であるものとする。また、各項目から１種類ずつの人またはものの組み合わせに対応する数値がＮ個（Ｎは１以上の整数）あるものとする。適切な照合結果を得るために探索するすべての順序付けのパタンは（Ａ！Ｂ！Ｃ！）N通りになる。この場合、数値の数が増えると、現実的な時間で機械学習の計算をするのが困難となる。第２の実施の形態では、照合パタンにおける３つの項目の種類数を「Ａ’，Ｂ’，Ｃ’」（Ａ’，Ｂ’，Ｃ’は１以上の整数）とする。またニューラルネットワークの更新回数をＥ（Ｅは１以上の整数）とする。この場合、Ａ’Ｂ’Ｃ’（Ａ＋Ｂ＋Ｃ）ＮＥに比例する計算量となり、現実的な計算量で計算可能である。
【０１０９】
＜過学習の抑止策を適用する場合のデータ分類処理＞
過学習の抑止策は、過学習が発生しやすい場合に行われる。過学習が発生しやすい場合として、まず教師データが十分にない場合がある。教師データが十分にあるかどうかは、照合パタンの各項目の変数値の組み合わせパタンの数との相対的な比較によって決まる。例えば、教師データ数に対して、照合パタンの各項目の変数値の組み合わせパタンに対応する量をパラメータとしたときのパラメータ数が多いと、機械学習において過学習が発生する。
【０１１０】
照合パタンのパラメータ数は、照合パタンの項目の数と、項に設定される変数値の数とに依存する。データがｍ個（ｍは１以上の整数）の項目間の関係であり、各項目の変数値の数がＩ1，・・・，Ｉmの場合、照合パタンのパラメータ数はＩ1×…×Ｉmとなる。
【０１１１】
図１８は、照合パタンのパラメータ数を説明する図である。図１８に示す照合パタン３０１は、通信元ホスト、通信先ホスト、およびポートの３つの項目を有している。通信元ホストには、変数値として「Ｓ’１」と「Ｓ’２」が含まれる。通信先ホストには、変数値として「Ｒ’１」と「Ｒ’２」とが含まれる。ポートには、変数値として「Ｐ’１」が含まれる。この場合、照合パタン３０１における各項目の変数値の組み合わせパタンは、４種類である。すなわちパラメータ数は「４」である。
【０１１２】
項目の数、または各項目の変数値の数が増えると、パラメータ数も増加する。例えば１０種類の通信元ホスト、１０種類の通信先ホスト、１０種類のポートの間の関係の場合、照合パタンのパラメータ数は１０×１０×１０＝１０００個である。照合パタンのパラメータ数が１０００個の場合に、例えば入力データが１００個程度しかないと、容易に過学習となる。
【０１１３】
また、変換データの自由度が低い場合にも、過学習となりやすい。変換データの自由度が低い場合とは、例えば、特定の項目の変数値が、他の項目の変数値により、一意に決まる場合である。
【０１１４】
図１９は、変換データの自由度が低い場合の例を示す図である。図１９の例では、入力データ３０２には、通信元ホスト、通信先ホスト、およびポートの項目が含まれているが、ポートの変数値（通信先ホストが使用するポート番号）は、通信先ホストの変数値（パケットの宛先の装置の識別子）に応じて一意に決まる場合がある。図１９の例では、通信先ホストが「Ｒ１」の場合、ポートは常に「Ｐ１」となっている。図１９には示していないが、通信先ホストが「Ｒ２」の場合、例えばポートは常に「Ｐ２」となる。この場合、通信先ホスト「Ｒ２」、ポート「Ｐ１」のレコードの量の値は、常に「０」となる。
【０１１５】
ポートの変数値が通信先ホストの変数値に応じて一意に決まる場合、入力データ３０２のデータ構造は、より単純な構造で表すことができる。例えば、通信元ホストと通信先ホストとの関係を表すテーブルと、通信先ホストと通信先ポートとの関係を表すテーブルとの結合（ＪＯＩＮ）に置き換えることができる。
【０１１６】
入力データ３０２内のレコードについて、照合パタン３０３との類似度が最大化されるように順序付けを行った変換データ３０４についても、同様に、２つのテーブルの結合に置き換えることができる。変換データ３０４を単純なデータ構造で表せるということは、変換データ３０４の自由度が低いことを意味する。変換データ３０４の自由度が低いと、全教師データに対して正解できる照合パタンの作成が容易となり、過学習となりやすい。
【０１１７】
過学習を避けるための、単純な解決方法としては、照合パタンのパラメータ数をより少なく設定することが考えられる。照合パタンのパラメータ数を少なくするためには、例えば、変換データの同じ変数値に、入力データの複数の変数値を対応づけることが考えられる。しかし、入力データの複数の変数値を、変換データの１つの変数値に対応付けると、入力データに含まれる特徴のうち、変換データで表現できないものが多くなってしまう。その結果、高い分類精度が出せないことがある。
【０１１８】
そこで第２の実施の形態では、入力データの特定の項目の変数値が、他の項目の変数値により一意に決まる場合、照合パタンも同様に、特定の項目の変数値が、他の項目の変数値により一意に決まるように記述する。
【０１１９】
図２０は、入力データの結合表現の一例を示す図である。入力データ３１１には、通信元ホスト、通信先ホスト、およびポートの組み合わせごとの量（通信頻度）が設定されている。このとき、ポートの項目の変数値であるポート番号は、通信先ホストの項目の変数値である通信先のホストの識別子により、一意に決まるものとする。図２０に示した入力データ３１１では、通信先ホストが「Ｒ１」の場合、ポート「Ｐ１」を用いた通信しか発生していない。また通信先ホストが「Ｒ２」の場合、ポート「Ｐ２」を用いた通信しか発生していない。
【０１２０】
このような場合、入力データ３１１を、複数の入力データ３１２，３１３による結合表現に置き換えることができる。入力データ３１２は、通信元ホストと通信先ホストの組に対応する量が設定されている。入力データ３１３には、通信先ホストとポートとの組に対応する量が設定されている。入力データ３１１の各レコードの量の値は、そのレコードに含まれる通信元ホストと通信先ホストとの組に対応する量の値と、そのレコードに含まれる通信先とポートとの組に対応する量の値との積である。
【０１２１】
同様に、照合パタンについても、複数の照合パタンの結合表現とする。
図２１は、照合パタンの結合表現の一例を示す図である。図２１には、結合表現を行わない場合の照合パタン３２１と、結合表現による照合パタン３２２，３２３とが示されている。照合パタン３２１には、通信元ホスト、通信先ホスト、およびポートの組み合わせごとの量が設定されている。照合パタン３２２は、通信元ホストと通信先ホストの組に対応する量が設定されている。照合パタン３２３には、通信先ホストとポートとの組に対応する量が設定されている。照合パタン３２１の各レコードの量の値は、そのレコードに含まれる通信元ホストと通信先ホストとの組に対応する量の値と、そのレコードに含まれる通信先とポートとの組に対応する量の値との積である。なお照合パタン３２２，３２３の量は、初期状態ではランダムな値が設定される。
【０１２２】
次に、過学習の抑止策を適用する場合の機械学習処理の手順について説明する。
図２２は、過学習の抑止策を適用する場合の機械学習処理の手順を示すフローチャートの一例である。以下、図２２に示す処理をステップ番号に沿って説明する。なお、図２０に示す入力データ３１１が入力されたときに、図２１に示す照合パタン３２２，３２３を用いて、機械学習を行うものとする。
【０１２３】
［ステップＳ２０１］学習部１４０は、結合表現の２つの照合パタン３２２，３２３と、ニューラルネットワークの各ユニットへの入力の重みのパラメータとを初期化する。例えば学習部１４０は、２つの照合パタン３２２，３２３の各レコードの量に、ランダムに生成した値を設定する。また学習部１４０は、各重みパラメータの値として、ランダムに生成した値を設定する。
【０１２４】
［ステップＳ２０２］学習部１４０は、２つの照合パタン３２２，３２３に最も類似する変換データに、入力データを変換する。例えば学習部１４０は、入力データ３１１を、結合表現の２つの入力データ３１２，３１３に変換する。そして学習部１４０は、入力データ３１２，３１３それぞれを、同じ項を有する照合パタン３２２，３２３に最も類似する変換データに変換する。これにより、入力データ３１２は、照合パタン３２２に最も類似するような変換データに変換される。入力データ３１３は、照合パタン３２３に最も類似するような変換データに変換される。
【０１２５】
［ステップＳ２０３］学習部１４０は、ニューラルネットワークを用いた順伝播および誤差逆伝播により、入力層の誤差ベクトルを取得する。この際、ニューラルネットワークの入力層には、入力データ３１２，３１３それぞれから生成された変換データの各レコードに１対１で対応するユニットが設けられる。そして変換データの各レコードの量の変数値が、対応するユニットへの入力となる。
【０１２６】
［ステップＳ２０４］学習部１４０は、照合パタン３２２または照合パタン３２３の未選択のレコードを１つ選択する。
［ステップＳ２０５］学習部１４０は、選択したレコードの量を「１」だけ増加させたときの、入力データ３１２，３１３それぞれから生成した変換データの量の変分ベクトルを算出する。変分ベクトルは、例えば入力データ３１２から生成した変換データの量の変分と、入力データ３１３から生成した変換データの量の変分とを要素とするベクトルである。
【０１２７】
［ステップＳ２０６］学習部１４０は、ステップＳ２０３で取得した誤差ベクトルと、ステップＳ２０５で算出した変分ベクトルとの内積を算出する。学習部１４０は、内積の結果を、選択したレコードの変動値とする。
【０１２８】
［ステップＳ２０７］学習部１４０は、照合パタン３２２，３２３内のすべてのレコードを選択したか否かを判断する。すべてのレコードが選択済みであれば、処理がステップＳ２０８に進められる。未選択のレコードがあれば、処理がステップＳ２０４に進められる。
【０１２９】
［ステップＳ２０８］学習部１４０は、照合パタン３２２，３２３の量とニューラルネットワークの重みのパラメータとを更新する。例えば学習部１４０は、照合パタン３２２，３２３の各レコードの量に、レコードを選択したときにステップＳ２０６で算出した変動値を加算する。また学習部１４０は、ニューラルネットワークの誤差逆伝播によって計算した各パラメータの修正後の値に、重みのパラメータを更新する。
【０１３０】
［ステップＳ２０９］学習部１４０は、処理の終了条件が満たされたか否かを判断する。終了条件が満たされた場合、処理が終了する。終了条件が満たされていなければ、処理がステップＳ２０２に進められる。
【０１３１】
このようにして、照合パタンを少ないレコードで表現でき、その結果、過学習を抑止することができる。
入力データがｍ項間の関係であり、各項目の変数値の数がＩ1，・・・，Ｉmであり、入力データが、大きさｌ1，・・・，ｌnの多次元配列と大きさｌn，・・・，ｌmの多次元配列のｎ次元目の結合（ＪＯＩＮ）により表現できるものとする。この場合、結合表現に変換した照合パタンのレコード数はＩ1×…×Ｉn ＋ｌn×…×ｌmになる。例えば、１０種類の通信元ホスト、１０種類の通信先ホスト、１０種類のポートの間の関係を示す入力データが、１０種類の通信元ホストと１０種類の通信先ホストの関係と、１０種類の通信先ホストと１０種類のポートの関係の結合で表現できるものとする。この場合、照合パタンのレコード数は１０×１０＋１０×１０＝２００個になる。
【０１３２】
また、特定の項目の変数値が他の項目の変数値により一意に決まる場合、入力データに含まれる特徴は、結合表現の入力データにも表現されている。そのため、入力データから生成される変換データで表現できる特徴を大きく損なうことなく、レコード数を大幅に削減できる。そして、入力データの特徴が保持されていることにより、データの分類精度も維持される。
【０１３３】
なお、第２の実施の形態における過学習の抑止策は、入力データのうちの特定の項目の変数値が他の項目の変数値によりおおよそ一意に決まり、かつ、特定の項と他の項との関係が、独立にモデル化可能であることが仮定できる場合に、特に有効となる。
【０１３４】
図２３は、独立モデル化できない場合と独立モデル化できる場合との例を示す図である。例えば通信元ホストと通信先ホストとの相互関係に、ポート番号が依存する場合、通信先ホストとポート番号との関係を、独立にモデル化することができない。独立にモデル化できない場合、通信元ホストの識別子ごとに、通信先ホストとポート番号との関係をモデル化することとなる。
【０１３５】
それに対して、通信元ホストと通信先ホストとの相互関係にポート番号が依存せず、ポート番号が通信先ホストに応じて一意に決まる場合、通信先ホストとポート番号との関係を、独立にモデル化できる。独立にモデル化できる場合として、例えば、同じ通信先ホストは同じポート番号を使ったサービスしか提供せず、同じ通信元ホストはほぼ同じアプリケーションソフトウェアしか使わない場合が考えられる。このように、独立にモデル化できることは、通常のシステム運用においても十分にあり得る。
【０１３６】
なお、学習データの分類精度を損なうことなく、かつ過学習を防ぐことができるという効果は、独立にモデル化できる場合に顕著となるが、厳密には独立にモデル化できるとはいえない場合でも、同様の効果は得られる。例えば、通信先ホストが頻繁にアプリケーションを変更するために、ポート番号が通信先ホストにより一意に決まらない場合も多い。この場合、厳密には独立にモデル化できるとはいえない。しかし、類似のアプリケーションを用いる特定の通信先ホストの集団が、特定のポート番号の集団と関係しているのであれば、通信元ホスト・通信先ホスト間の関係とは独立に、通信先モデル・ポート間の関係をモデル化することが妥当である。そして、このような場合、通信先モデル・ポート間の関係を独立にモデル化した照合パタンを用いてデータ分類処理を行うことで、学習データの分類精度を損なうことなく、かつ過学習を防ぐことができる。
【０１３７】
〔その他の実施の形態〕
第２の実施の形態は、通信ログの分類の機械学習に関する例であるが、通信ログの分類以外にも、入力値の順番が精度に影響する場合がある。例えば、化合物の位置に関わらず活性をもつ構造により、化合物を分類したい場合が考えられる。化合物の分類に対しても、照合パタンを用いて適切な順序付けを行うことで、精度の高い分類が可能となる。
【０１３８】
図２４は、化合物の分類例を示す図である。例えば複数の化合物構造データ９１，９２，・・・を、その化合物の働きに応じて分類する場合を考える。化合物構造データ９１，９２，・・・には、化合物を構成する物質のうちの２つの物質間の関係を示す複数のレコードが含まれているものとする。
【０１３９】
分類に強く寄与する関係（図中、破線の円で囲まれた関係）が、変数値間の関係全体の構造とは無関係に出現する場合がある。ニューラルネットワークを用いた分類において、化合物構造データ９１，９２，・・・内の関係の順番が不適切だと、正しく分類できない可能性がある。そこで、分類精度を高めるように最適化された照合パタンを用いて、化合物構造データ９１，９２，・・・内の関係を順序付けることで、化合物の位置に関わらず活性をもつ構造が存在する場合でも、化合物を正しく分類できる。
【０１４０】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１４１】
１  ニューラルネットワーク
１ａ  入力層
２  入力データ
３  教師データ
４  第１部分データ
５  第２部分データ
６，７  変換データ
８  誤差
１０  機械学習装置
１１  記憶部
１１ａ，１１ｂ  照合パタン
１２  処理部
【図１】
2019049782.tif 000003
【図２】
2019049782.tif 000004
【図３】
2019049782.tif 000005
【図４】
2019049782.tif 000006
【図５】
2019049782.tif 000007
【図６】
2019049782.tif 000008
【図７】
2019049782.tif 000009
【図８】
2019049782.tif 000010
【図９】
2019049782.tif 000011
【図１０】
2019049782.tif 000012
【図１１】
2019049782.tif 000013
【図１２】
2019049782.tif 000014
【図１３】
2019049782.tif 000015
【図１４】
2019049782.tif 000016
【図１５】
2019049782.tif 000017
【図１６】
2019049782.tif 000018
【図１７】
2019049782.tif 000019
【図１８】
2019049782.tif 000020
【図１９】
2019049782.tif 000021
【図２０】
2019049782.tif 000022
【図２１】
2019049782.tif 000023
【図２２】
2019049782.tif 000024
【図２３】
2019049782.tif 000025
【図２４】
2019049782.tif 000026