IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 三菱電機株式会社の特許一覧

<>
  • 特許-異常の検出のための装置および方法 図1
  • 特許-異常の検出のための装置および方法 図2
  • 特許-異常の検出のための装置および方法 図3
  • 特許-異常の検出のための装置および方法 図4
  • 特許-異常の検出のための装置および方法 図5A
  • 特許-異常の検出のための装置および方法 図5B
  • 特許-異常の検出のための装置および方法 図5C
  • 特許-異常の検出のための装置および方法 図6
  • 特許-異常の検出のための装置および方法 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-05
(45)【発行日】2024-09-13
(54)【発明の名称】異常の検出のための装置および方法
(51)【国際特許分類】
   G06N 3/0455 20230101AFI20240906BHJP
   G06F 18/2433 20230101ALI20240906BHJP
【FI】
G06N3/0455
G06F18/2433
【請求項の数】 13
(21)【出願番号】P 2023574887
(86)(22)【出願日】2021-11-30
(65)【公表番号】
(43)【公表日】2024-02-16
(86)【国際出願番号】 JP2021044597
(87)【国際公開番号】W WO2022195976
(87)【国際公開日】2022-09-22
【審査請求日】2023-08-18
(31)【優先権主張番号】17/202,438
(32)【優先日】2021-03-16
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】000006013
【氏名又は名称】三菱電機株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ワン,イェ
(72)【発明者】
【氏名】キム,キョン・ジン
(72)【発明者】
【氏名】ワン,シャオ
【審査官】福西 章人
(56)【参考文献】
【文献】特開2021-012633(JP,A)
【文献】特開2018-190396(JP,A)
【文献】特開2018-195012(JP,A)
【文献】米国特許出願公開第2019/0286506(US,A1)
【文献】中国特許出願公開第112398779(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
G06F 18/00-18/40
(57)【特許請求の範囲】
【請求項1】
異常検出器であって、
入力データを受け付けるように構成される入力インターフェイスと、
少なくとも1つのプロセッサと、
前記異常検出器のモジュールを形成する命令が格納されるメモリとを含み、
前記少なくとも1つのプロセッサは、前記異常検出器の前記モジュールの前記命令を実行するように構成されており、
前記モジュールは、
前記入力データの複数の特徴に基づいて、前記入力データを複数の部分にパーティショニングすることと、前記入力データの複数のベクトル化された部分を決定するよう、前記入力データの前記複数の部分の各部分をベクトル化することとを行うように構成されるデータローダモジュールと、
連結データを形成するよう、前記入力データの前記複数のベクトル化された部分を連結することを行うように構成される連結モジュールと、
前記連結データをエンコードするように訓練されるエンコーダと、エンコードされた前記連結データを再構築された前記入力データとしてデコードするように訓練されるデコーダとを含むオートエンコーダとを含み、前記オートエンコーダは、非異常サンプルデータに基づいて訓練されており、
前記モジュールはさらに、
分類器を含み、
前記分類器は、
受け付けられた前記入力データと再構築された前記入力データとの間の差を示す再構築損失を決定することを行うように構成されており、前記再構築損失は、再構築された前記入力データの複数の部分の再構築損失を評価する複数の損失関数、異なるタイプの損失関数、または、その両方の重み付けられた組み合わせを含み、
前記分類器はさらに、
前記再構築損失がしきい値を上回る場合、再構築された前記入力データにおける異常を検出することを行うように構成されており、
前記異常の検出の結果をレンダリングする出力インターフェイスを含む、異常検出器。
【請求項2】
前記入力インターフェイスはさらに、前記異常の検出の前記結果に基づいてユーザ入力を受け付けるように構成されており、前記ユーザ入力は、受け付けられた前記入力データが異常であるか否かを示すラベルを含む、請求項1に記載の異常検出器。
【請求項3】
前記モジュールはさらに、受け付けられた前記ユーザ入力に応答して、異常の検出の前記結果が前記ラベルと整合されるように前記再構築損失を調整するために、前記しきい値と、前記重み付けられた組み合わせにおける前記複数の損失関数のうちの少なくとも1つの損失関数の重みとのうちの少なくとも1つを更新するように構成されるチューナを含む、請求項2に記載の異常検出器。
【請求項4】
前記入力インターフェイスはさらに、前記異常の検出の前記結果に基づいてユーザ入力を受け付けるように構成されており、前記ユーザ入力は、受け付けられた前記入力データの誤分類を示すラベルを含む、請求項1に記載の異常検出器。
【請求項5】
前記モジュールはさらに、受け付けられた前記ユーザ入力に応答して、受け付けられた前記入力データの前記誤分類を補正するために、前記しきい値と、前記重み付けられた組み合わせにおける前記複数の損失関数のうちの少なくとも1つの損失関数の重みとのうちの少なくとも1つを更新するように構成されるチューナを含む、請求項4に記載の異常検出器。
【請求項6】
前記モジュールは、スプリットモジュールをさらに含み、
前記スプリットモジュールは、
前記オートエンコーダから、再構築された前記入力データを受信することと、
再構築された前記入力データに存在する前記複数の特徴に基づいて、再構築された前記入力データを前記複数の部分にスプリットすることとを行うように構成される、請求項1に記載の異常検出器。
【請求項7】
前記モジュールは、損失関数決定モジュールをさらに含み、
前記損失関数決定モジュールは、
再構築された前記入力データに対応する前記複数の部分の各部分を受信することと、
再構築された前記入力データの各部分について損失を計算するのに適切な損失関数を決定することと、
決定された前記損失関数に基づいて、再構築された前記入力データの各部分に対応する個別の再構築損失を計算することとを行うように構成される、請求項6に記載の異常検出器。
【請求項8】
前記モジュールは、重み決定モジュールをさらに含み、
前記重み決定モジュールは、
各損失関数に重みを割り当てることと、
再構築された前記入力データの前記複数の部分に関連付けられる前記複数の損失関数の前記重み付けられた組み合わせを決定することとを行うように構成される、請求項7に記載の異常検出器。
【請求項9】
前記入力データは、インターネットプロキシログデータに対応する、請求項1~請求項8のいずれか1項に記載の異常検出器。
【請求項10】
前記モジュールは、前記インターネットプロキシログデータの複数の特徴に基づいて前記インターネットプロキシログデータを複数の部分にパーティショニングするように構成されるデータローダモジュールをさらに含み、
前記インターネットプロキシログデータの前記複数の特徴は、埋込特徴、カテゴリ型特徴、および、数値型特徴を含み、
前記データローダモジュールはさらに、前記インターネットプロキシログデータの前記複数の部分の各部分をベクトル化するように構成される、請求項9に記載の異常検出器。
【請求項11】
前記モジュールは、ワード埋込モジュールと、ワンホットエンコードモジュールとをさらに含み、
前記ワード埋込モジュールは、前記埋込特徴に対応する前記複数の部分をベクトル化するように構成されており、
前記ワンホットエンコードモジュールは、前記カテゴリ型特徴に対応する前記複数の部分をベクトル化するように使用される、請求項10に記載の異常検出器。
【請求項12】
異常の検出のための方法であって、前記方法は、前記方法を実施する格納された命令と結合されるプロセッサを使用しており、前記命令は、前記プロセッサによって実行されると、前記方法のステップを実行し、前記方法は、
入力データを受信することと、
前記入力データの複数の特徴に基づいて、前記入力データを複数の部分にパーティショニングすることと、
前記入力データの複数のベクトル化された部分を決定するよう、前記入力データの前記複数の部分の各部分をベクトル化することと、
連結データを形成するよう、前記入力データの前記複数のベクトル化された部分を連結することと、
前記連結データをエンコードし、オートエンコーダアーキテクチャを有するニューラルネットワークを使用して、エンコードされた前記連結データを再構築された前記入力データとしてデコードすることとを含み、前記オートエンコーダは、非異常サンプルデータを使用して訓練されており、前記方法はさらに、
受け付けられた前記入力データと再構築された前記入力データとの間の差を示す再構築損失を決定することを含み、前記再構築損失は、再構築された前記入力データの複数の部分の再構築損失を評価する複数の損失関数、異なるタイプの損失関数、または、その両方の重み付けられた組み合わせを含み、前記方法はさらに、
前記再構築損失がしきい値を上回る場合、再構築された前記入力データにおける異常を検出することと、
前記異常の検出の結果をレンダリングすることとを含む、方法。
【請求項13】
方法を実行するための、プロセッサによって実行可能なプログラムが具現化された非一時的なコンピュータ可読記憶媒体であって、前記方法は、
入力データを受信することと、
前記入力データの複数の特徴に基づいて、前記入力データを複数の部分にパーティショニングすることと、
前記入力データの複数のベクトル化された部分を決定するよう、前記入力データの前記複数の部分の各部分をベクトル化することと、
連結データを形成するよう、前記入力データの前記複数のベクトル化された部分を連結することと、
前記連結データをエンコードし、オートエンコーダアーキテクチャを有するニューラルネットワークを使用して、エンコードされた前記連結データを再構築された前記入力データとしてデコードすることとを含み、前記オートエンコーダは、非異常サンプルデータを使用して訓練されており、前記方法はさらに、
受け付けられた前記入力データと再構築された前記入力データとの間の差を示す再構築損失を決定することを含み、前記再構築損失は、再構築された前記入力データの複数の部分の再構築損失を評価する複数の損失関数、異なるタイプの損失関数、または、その両方の重み付けられた組み合わせを含み、前記方法はさらに、
前記再構築損失がしきい値を上回る場合、再構築された前記入力データにおける異常を検出することと、
前記異常の検出の結果をレンダリングすることとを含む、非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般的には異常の検出に関し、より具体的には、オートエンコーダを使用して異常を検出する装置および方法に関する。
【背景技術】
【0002】
異常の検出は一般的に、異常な状況を検出するタスクを伴う。このタスクは、セキュリティ、安全性、品質管理、障害監視、プロセス制御などのさまざまな用途に広く適用可能である。さまざまな用途にわたって、異常の検出の目的は典型的には、有害な問題を軽減するために、さらなる調査および潜在的に応答的な行動を必要とする普通でない状況について警報を発することである。膨大な情報のフローにより、人手の調査および応答はコストがかかり得るので、調査および適切な応答を導くために、検出の理由を説明することを補助する情報も異常検出システムが提供することが有用であろう。
【0003】
従来の異常検出器は、入力データを再構築するオートエンコーダを使用しており、入力データにおける異常を検出するために、入力データと再構築されたデータとの間の再構築損失が使用される。異常検出器を訓練する際の主な問題の1つは、異常を有する訓練データの欠如である。したがって、異常を検出するように構成されるオートエンコーダは現在、正常な非異常データに基づいて訓練されている。非異常データのみに対してオートエンコーダを訓練する概念は、ワンクラス学習(one-class learning)と呼ばれており、ワンクラス学習は、「正常」(非異常)データサンプルのデータ分布をモデル化する。このアプローチでは、オートエンコーダの再構築損失は、(試験時に与えられる)入力データ例が異常であるか否かのインジケータとして作用し、より高い再構築誤差が異常を示しており、これは、オートエンコーダが正常なデータを効果的に再構築することを学習するはずであるが、異常なデータについてはより高い誤差を有するというのが一般的な原理であるからである。したがって、誤差をしきい値処理することは、異常検出器として機能する。
【0004】
しかしながら、異常の検出のためのワンクラス分類器は、現実世界の実際的な用途のリッチなコンテキストを適切に扱うことができない場合があり、異常の検出のために使用される入力データは、複数の起こり得る異種の特徴を含む。したがって、異常を検出するよう入力データの各特徴を個別に分析し、および/または、検出された異常についての理由を説明する情報を提供する異常検出器についてのニーズが存在する。
【発明の概要】
【0005】
いくつかの実施形態は、異常を検出するように異常検出器を訓練するために、ラベル付けされた異常データを得ることが困難であるという認識に基づく。したがって、正常なデータを用いて異常検出器を訓練することを含む教師なし異常検出方法が使用される。正常データまたは良性データを用いて訓練されている異常検出器に異常データが入力されると、異常検出器は、異常データを検出し得る。そのような訓練は、本明細書ではワンクラス分類器と称される。
【0006】
しかしながら、入力データは複数の特徴を含む。異常の検出のためのワンクラス分類器の訓練は、入力データの各特徴を個別に分析することができない。そのため、現在の異常検出器は、異常を検出しても、入力データのどの特徴が異常であると決定されるかについての情報を提供することができない。そのような情報は、検出された異常の調査を導くのに非常に有用であり得る。たとえば、いくつかの実施形態は、入力データの異なる特徴が異なって異常に寄与し得るという認識に基づく。異なる特徴を別々に、しかし共同で分析することにより、異常の検出の精度が向上され得る。
【0007】
付加的または代替的には、いくつかの実施形態は、時として、異常訓練データが利用可能であるが、マルチクラス分類器を訓練するために充分な量ではないという認識に基づく。いくつかの実施形態は、いくつかのクラスが訓練不足である場合、ワンクラス分類器がマルチクラス分類器よりも依然として好ましいという認識に基づく。したがって、残念ながら、ワンクラスの分類器の学習については、不十分な量の異常学習データは無視される。
【0008】
この問題に対処するために、いくつかの実施形態は、マルチクラス分類器を訓練するために利用可能な異常訓練データを使用する代わりに、ワンクラス分類器の異常の検出のしきい値をチューニングするために異常訓練データを使用する。これらの実施形態は、単独で、または、複合損失関数と組み合わせて、その訓練の複雑性を増加させることなく、異常の検出の精度を向上し得る。
【0009】
たとえば、いくつかの実施形態は、構造化されたシーケンシャルデータに対して異常の検出を実行し、データサンプルは、異なるタイプの特徴の混合を含む。いくつかの特徴はカテゴリ型であり、いくつかは大語彙からのワードであり、いくつかは数値である。シーケンシャルデータを処理することは、異常を検出するために、異なるタイプの特徴に対応する異なるタイプの値を組み合わせることを必要とする。これらのさまざまなデータタイプが、インターネットプロキシログなどのシーケンシャルデータにおいて生じており、いくつかのフィールドはカテゴリ(コマンド、プロトコル、エラーコードなど)であり、いくつかはワード(ドメイン名、URLパス、ファイル名など)であり、その他は数値(データサイズ、文字統計、タイミングなど)である。
【0010】
いくつかの実施形態は、コンピュータネットワークにおけるサイバー物理システムに対するサイバー攻撃および他の悪意のあるアクティビティを検出するためにインターネットプロキシログデータにおいて異常の検出を実行するよう、ワンクラスラベルモデルを使用して訓練される異常検出器を使用する。異常検出器についての目標は、サイバー攻撃の検出および応答を自動化することを補助することであり、さらに、調査および適切な応答を導くために、当該データがなぜ異常であると思われるかについての説明を提供することである。生のインターネットトラフィックログデータは、多くの異なるユーザからのインターネットトラフィック要求のログエントリを含んでおり、これらの異なるデータストリームは、本質的にログデータ記録にインターリーブされている。したがって、提案される異常検出器はまず、異なるユーザによって生成されるログエントリのシーケンスをデインターリーブし、次いで、各ユーザのシーケンスを独立して扱う。インターリーブされている間にシーケンスのすべてを単純に処理する代替案は、追加の不必要な複雑さによりオートエンコーダの訓練に過度に負担がかかり得る。
【0011】
いくつかの実施形態は、インターネットプロキシログデータが、異なる特徴の異種混合を有するデータサンプルを含むという認識に基づく。特徴のいくつかは、データに自然に現れる(プロキシログエントリは、数値フィールド、カテゴリフィールド、およびテキストフィールドを含む)。インターネットプロキシログデータは、シーケンシャルデータのタイプである。シーケンシャルデータでは、各シーケンス内において、データは、異なるタイプの特徴の混合として構造化される。いくつかの特徴はカテゴリ型であり、いくつかは大語彙からのワードであり、いくつかは数値である。特に、インターネットトラフィックログに対応するシーケンシャルデータについて、重要な生の特徴は、HTTPコマンドおよびアクセスされるURLである。HTTPコマンドは、可能性の限られたセット(たとえば、GET、POST、HEADなど)に由来するカテゴリ型特徴の例である。しかしながら、URLは、プロトコル(たとえば、最も一般的には、「http」、「https」、または「ftp」)、ドメイン名、および、トップレベルドメインを含み、潜在的にサブドメイン、パス、ファイル名、ファイル拡張子、およびパラメータも含む多くの異なる部分から構成される。プロトコルおよびトップレベルドメインはカテゴリ型変数であるが、URLの残りの部分は、非常に大きな語彙に由来し得る一般的なワードおよび記号である。したがって、URLの特徴を扱うためには、いくつかの実施形態では、URLは、プロトコルおよびトップレベルドメインをカテゴリ型特徴として扱い、ドメイン名およびサブドメインを大きな語彙からのワードとして扱い、パスおよびパラメータに関する数値統計を計算するといったように分解される。
【0012】
ドメインおよびサブドメインワードを扱うために、訓練データから最も一般的に見られるワードの語彙を形成することが使用される。最も一般的なセットの外側のワードは、「他の」グループとしてラベル付けされ得る。しかしながら、必要な語彙は依然として非常に大きく、語彙のサイズを扱うことを困難にする。したがって、訓練中の語彙のサイズを扱うために、ワード埋込モジュールが使用され得、ワード埋込モジュールは、URLに存在する複数の特徴の各特徴について予め訓練され得、これにより、非常に大きなワンホットカテゴリエンコードを使用するのではなく、各ワードをより小さな次元の特徴ベクトルに変換する。したがって、これらの埋込ベクトル(すなわち、特徴ベクトル)は、オートエンコーダが一緒に動作するための処理された特徴として、元のドメイン/サブドメインワードの代わりに使用される。
【0013】
いくつかの実施形態では、管理可能な数のカテゴリを有する他のカテゴリ型特徴について、カテゴリのセットは、訓練中に最も一般的に見られるもののみに低減され得、残りを「他の」カテゴリとしてラベル付けし得る。
【0014】
いくつかの実施形態では、異常検出器は、シーケンシャルデータの複数の特徴に基づいて、入力されたシーケンシャルデータの各シーケンスを複数のフィールドに分解する。さらに、各フィールドに含まれる各特徴に対応するデータがベクトル化されて連結され、オートエンコーダに提供される。オートエンコーダは、連結データを圧縮および再構築するように訓練される。オートエンコーダ訓練についての全体的な再構築損失は、個別の特徴ごとに個別の損失を組み合わせることによって計算される。埋め込まれたワード特徴について、損失は、ワード埋込特徴ベクトルの平均二乗誤差または平均絶対誤差の形態で測定される。カテゴリ型特徴については、交差エントロピー損失によって損失が測定される。数値型特徴について、損失は、数値の平均二乗誤差または平均絶対誤差によって測定される。これらの個別の損失項はすべて加重平均として組み合わされて、全体的な再構築損失を形成する。
【0015】
いくつかの実施形態では、異なるタイプの構造化シーケンシャルデータをカバーするために、異常検出器は、埋め込みを必要とするカテゴリ型特徴、ワンホットエンコーディングを必要とするカテゴリ型特徴、または、数値型特徴のうちからの特徴選択を提供するフレキシブルな構造を含む。したがって、フレキシブルな構造は、選択された特徴について最良の損失関数のセットを適応的に選択する損失関数選択機構を提供する。
【0016】
いくつかの実施形態は、データ特徴の異種混合から異常を検出することが困難なタスクであるという認識に基づく。異常を検出するための異常検出器の一般的なアプローチは、特徴の異種混合を有する他の形態のデータにも適用され得る。たとえば、コンピュータビジョンのタスクでは、画像の異なるカラーチャネルが、異なるレベルの情報を提供し得る。さらに、画像は、生のピクセル値に加えて異なる特徴をもたらし得る、オブジェクト検出、スケルトントラッキングなどのさまざまなツールを用いて前処理され得る。視聴覚データにおいては、音は、当該混合の部分である別の異種の特徴である。ビデオデータはさらに、生画像に加えて前処理されたモーションベクトルを有し得る。生理学的データはさらに、たとえば、さまざまなセンサモダリティから収集される場合、異種特徴を含んでもよい。
【0017】
特徴の異種混合は、すべての特徴を共同でエンコードおよびデコードするオートエンコーダにより扱われ得、全体的な再構築損失は、各特徴についての個別の損失項の加重和として作り出され、各損失項は、その特徴に特有であるとともに当該特徴について適切であるものである(たとえば、インターネットプロキシデータの場合、数値型特徴についての平均二乗誤差、カテゴリ型特徴のための交差エントロピーなど)。損失項は異なるスケールであり得るので、重みが損失項に適用されるが、これらの重みはさらに、より重要な特徴を強調し、より重要でない特徴を強調しないようにするために有用である。しかしながら、データが正常なサンプルのみを含むという訓練が与えられる場合、未知のタイプの異常を区別するためにどの特徴が最も重要であるかを知ることは困難である。したがって、最も重要な特徴を決定および最良に利用するという困難さが生じる。
【0018】
訓練後、オートエンコーダは、全体的な再構築損失を決定し、チューニング可能なしきい値と比較することによって、新しいデータ例における異常を検出するために適用され得る。さらに、異常の検出においてある程度の説明可能性を得るために、個別の損失項が調べられ得、これによりどの特徴が特に損失に最も寄与するかが発見され得る。これは、圧縮および再構築が最も困難であった特徴を強調することになり、これにより、それらが特定のデータ例を異常にするものの根源(root)であり得ることが示唆される。したがって、このタイプの情報は、追跡調査員に対して、対象の最も異常な特徴に潜在的にフラグを立て得る。
【0019】
したがって、オートエンコーダは、最初に教師なし学習を使用してオフラインで訓練され、次いで、オートエンコーダは、テスト時にフィードバックを提供するユーザによって生成される限られた量のラベル付けされたデータでオンラインでさらにチューニングされる(教師あり学習)。全体的な再構築損失の計算における静的な損失項の重みおよび異常を宣言するための固定されたしきい値を保持する代わりに、これらの重みおよびしきい値は、ユーザからのフィードバックに基づいて、教師ありの態様でチューニングされ得る。
【0020】
さらに、ユーザに異常の検出結果を提供する間、フィードバックは、ユーザによって提供されてもよく、当該フィードバックは、誤警報および検出のミスを異常検出器に示し、これにより、有益なデータ例の小さなセットのためのラベルが提供される。ユーザによってフラグが立てられたラベル付けされたデータのこの小さなセットを用いて、異常検出器は、検出性能を向上するために損失項の重みを再チューニングし得る。
【0021】
その目的のために、再構築損失は、入力されたデータの複数の特徴の各特徴に対応する個別の損失項および重みの関数として計算されるスコアとして扱われる。例の小さなセットについてユーザによって示される正解のラベルにより、重みは、例のラベル付けされた小さなセットに基づいて検出性能を向上するように調整される。これは、動作中にユーザからの限られたフィードバックが得られるので、ラベル付けされた例ごとにインクリメンタルに行われるわずかな調整のみで、オンラインの態様で達成され得る。例示的な実施形態では、当該調整は、具体的には、正解のラベル(ユーザフィードバックによって提供される)と再構築損失およびしきい値から計算される分類スコアとの間のバイナリ分類交差エントロピー損失についての重みに対する勾配降下ステップ(gradient descent step)により実現され得る。
【0022】
さらに、フィードバックにおいて、ユーザはさらに、ユーザが望む場合、誤警報対検出ミストレードオフ曲線上で動作することを大まかに示し得る(すなわち、ユーザは、より多くの誤警報という代償を払ってより良好な検出率を有することを望むか否か、または、より多くの検出ミスという代償を払ってより少ない警報を有することを望むか否かを示し得る)。したがって、異常を検出するために全体的な再構築損失を比較するためのしきい値は、ユーザのフィードバックに応答して増減される。しかしながら、ユーザによって示される特定のトレードオフ点を達成するようにしきい値の較正された調整を行うために、ユーザフィードバックによって生成されるラベル付けされた例の小さなセットを使用して、異常検出器が所望の誤警報対検出ミストレードオフで動作するようにしきい値がチューニングされ得る。
【0023】
したがって、実施形態のうちの1つは、入力データを受け付けるように構成される入力インターフェイスと、少なくとも1つのプロセッサと、異常検出器のモジュールを形成する命令が格納されるメモリとを含む異常検出器を開示しており、少なくとも1つのプロセッサは、異常検出器のモジュールの命令を実行するように構成される。モジュールは、入力データをエンコードするように訓練されるエンコーダと、入力データを再構築するよう、エンコードされた入力データをデコードするように訓練されるデコーダとを含むオートエンコーダを含む。モジュールはさらに、分類器を含み、分類器は、受け付けられた入力データと再構築された入力データとの間の差を示す再構築損失を決定することを行うように訓練されており、再構築損失は、再構築された入力データの複数の部分の再構築損失を評価する複数の損失関数、異なるタイプの損失関数、または、その両方の重み付けられた組み合わせを含む。分類器モジュールはさらに、再構築損失がしきい値を上回る場合、再構築された入力データにおける異常を検出することを行うように構成されている。異常検出器はさらに、異常の検出の結果をレンダリングするように構成される出力インターフェイスを含む。
【0024】
したがって、実施形態の1つは、異常を検出するための方法を開示する。上記方法は、入力データを受信することと、入力データをエンコードすることと、入力データを再構築するよう、エンコードされた入力データをデコードすることとを含む。上記方法はさらに、受け付けられた入力データと再構築された入力データとの間の差を示す再構築損失を決定することを含み、再構築損失は、再構築された入力データの複数の部分の再構築損失を評価する複数の損失関数、異なるタイプの損失関数、または、その両方の重み付けられた組み合わせを含み、上記方法はさらに、再構築損失がしきい値を上回る場合、再構築された入力データにおける異常を検出することと、異常の検出の結果をレンダリングすることとを含む。
【図面の簡単な説明】
【0025】
図1】例示的な実施形態に従った、入力データからの異常の検出のための異常検出器を示す図である。
図2】例示的な実施形態に従った、異常検出器におけるチューニングプロセスの機能図を示す図である。
図3】例示的な実施形態に従った、異常検出器のアーキテクチャを示す概略図である。
図4】例示的な実施形態に従った、異常を検出するための方法のステップを示す図である。
図5A】例示的な実施形態に従った、インターネットプロキシデータにおける異常を検出するための異常検出器のワークフローを示す概略図である。
図5B】例示的な実施形態に従った、データをインターネットプロキシログからカテゴリ型特徴および数値型特徴に分解することを示す図である。
図5C】例示的な実施形態に従った、URLの複数の特徴に対応するデータを連結するように構成される連結モジュールを示す図である。
図6】例示的な実施形態に従った、ビデオデータにおける異常の検出を示すブロック図である。
図7】例示的な実施形態に従った、入力データから異常を検出するためのコンピュータベースの異常検出器のブロック図を示す図である。
【発明を実施するための形態】
【0026】
以下の記載では、説明の目的で、本開示の完全な理解を提供するために、多数の具体的な詳細が記載される。しかしながら、本開示はこれらの具体的な詳細なしに実施され得ることは当業者には明らかであろう。他の例では、本開示を不明瞭にすることを回避するために、装置および方法がブロック図の形式でのみ示されている。
【0027】
本明細書および特許請求の範囲において使用されるように、1つ以上のコンポーネントまたは他の項目のリストと併せて使用される場合、用語「たとえば(for example)」、「たとえば(for instance)」および「といった(such as)」、ならびに、動詞「備える(comprising)」、「有する(having)」、「含む(including)」およびそれらの他の動詞形態は各々、オープンエンドであると解釈されるべきであり、当該リストは、他の付加的なコンポーネントまたは項目を除外するものと考えられるべきではないことを意味する。用語「に基づく」は、少なくとも部分的に基づくことを意味する。さらに、本明細書において使用される専門語および用語は、説明の目的のためであり、限定と見なされるべきではないことが理解されるべきである。この記載内で利用されるいかなる見出しも、便宜上のものにすぎず、法的効果または限定効果を有さない。
【0028】
本開示は、異種特徴の混合を含む画像データ、ビデオデータおよびインターネットプロキシデータなどのシーケンシャルデータにおける異常を検出する異常検出器を提案する。しかしながら、異常を検出する際の困難さの1つは、異常検出器を訓練するために使用され得るラベル付けされた異常データの欠如である。この困難さを克服するために、提案される異常検出器は、ニューラルネットワークベースのオートエンコーダを使用する。高レベルにおけるオートエンコーダは、入力データの潜在空間表現を通じて、入力データをそれ自体(すなわち、入力データ)にマッピングする。その目的のために、オートエンコーダは、入力データを潜在空間にエンコードする。さらに、オートエンコーダは、同じ潜在空間から、エンコードされた入力データをデコードする。オートエンコーダ(またはエンコーダ)への入力データと再構築されたデータとの間の再構築損失が推定される。異常検出器は、入力データにおける異常を検出するよう、再構築損失に基づいて訓練されてもよい。したがって、提案される異常検出器は、ラベル付けされたデータなしで訓練され得る(すなわち、異常検出器は、再構築損失を使用して訓練される)。提案される異常検出器に関する詳細な記載は、図1に関して以下に提供される。
【0029】
図1は、例示的な実施形態に従った、入力データ103からの異常の検出のための異常検出器101を示す。異常検出器101は、入力データ103を取得するよう入力インターフェイス(図示せず)を含み得る。入力データ103は、異種特徴の混合を含むシーケンシャルデータに対応し得る。シーケンシャルデータは、テキストデータ(インターネットプロキシログデータなど)、画像データ、ビデオデータ、オーディオデータ、または、タンパク質配列などを含み得る。いくつかの実施形態では、入力データ103は、カテゴリ型特徴または数値型特徴などの複数の特徴を含み得る。
【0030】
異常検出器101は、オートエンコーダ105を含み得、オートエンコーダ105は、エンコーダニューラルネットワークおよびデコーダニューラルネットワークというニューラルネットワークのペアである。入力データ103はオートエンコーダ105に提供される。オートエンコーダ105は、入力データ103のサンプルを低減された次元(圧縮された)表現に変換し、デコーダは、これらの表現を使用して入力データ103の元のデータサンプルを再構築する。再構築された入力データ107は、いくつかの再構築損失115を含み、再構築損失115は、元の入力データ103と再構築された入力データ107との間の差に対応する。異常検出器101は、再構築損失115の算出に基づいて、入力データ103における異常を決定する。
【0031】
その目的のために、オートエンコーダ105は、入力データ103のタイプに関連付けられる正常なデータサンプル(または良性データサンプル)にて訓練され、オートエンコーダ105は、入力データ103をエンコードするように訓練され、デコーダは、入力データ103を再構築する(すなわち、再構築された入力データ107)よう、エンコードされた入力データをデコードするように訓練される。
【0032】
異常検出器101は、分類器モジュール109(「分類器109」とも称される)を含み得る。再構築された入力データ107は分類器109に提供され、分類器109は、再構築された入力データ107に関連付けられる再構築損失115を決定するように構成される。再構築損失115を決定するために、分類器モジュール109は、最初に、再構築された入力データ107の複数の部分111を決定する。特に、複数の部分111は、再構築された入力データ107の複数の特徴に基づいて決定される。複数の部分111の各部分は、複数の特徴の各特徴に対応する再構築されたデータを含む。複数の特徴は、元の受け付けられた入力データ(入力データ103)から、再構築された入力データ107に継承され得る。たとえば、テキストデータにおいて、複数の特徴は、カテゴリ型特徴または数値型特徴などを含む。
【0033】
分類器モジュール109はさらに、再構築された入力データ107の複数の部分111の各部分について複数の損失関数113を決定するように構成される。複数の損失関数113の各損失関数は、再構築された入力データ107の複数の部分111の各部分に関連付けられる個別の損失(または個別の再構築損失)を正確に測定する。いくつかの実施形態では、複数の損失関数の各損失関数は、複数の部分111の各部分に含まれる特徴のタイプに基づいて選択される。たとえば、分類器モジュール109は、カテゴリ型特徴に関連付けられる再構築された入力データの部分に対応する損失を決定するために、交差エントロピー損失関数を決定し得る。同様に、平均二乗誤差(MSE: mean squared error)損失関数が使用されて、数値型特徴に関連付けられる再構築された入力データ107の部分に対応する損失を決定し得る。
【0034】
さらに、分類器109は、複数の損失関数113の重み付けられた組み合わせとして再構築損失115を決定するように構成される。その目的のために、分類器モジュール109は、複数の損失項/関数113の各損失項を重み付けするために使用される複数の重みを決定し得る。複数の重みは、再構築された入力データ107の重要な特徴を強調し、あまり重要でない特徴を強調しないように使用され得、これにより再構築された入力データ107から異常を決定する。
【0035】
異常を検出するために、分類器モジュール109はさらに、再構築損失115(または全体的な再構築損失)をしきい値再構築損失117(「しきい値117」とも称される)と比較するように構成される。いくつかの実施形態では、しきい値117は、元の入力データ103の複数の正常データサンプル(または良性データサンプル)と入力データ103の正常サンプルに対応する複数の再構築されたデータサンプルとの間の再構築損失に基づいて決定され得る。
【0036】
決定された再構築損失115がしきい値117より高い場合、分類器109は、特定の入力サンプルが、ユーザにとって脅威であり得る異常を含むと決定する。分類器109はさらに、検出された異常についてユーザに通知し得る。他方、決定された再構築損失115がしきい値117未満である場合、分類器109は、特定の入力サンプルを良性データサンプルとして決定する。このように、提案される異常検出器101は、複数の損失関数113の重み付けられた組み合わせである再構築損失115を用いて、入力データ103における異常の検出結果119を決定する。
【0037】
いくつかの実施形態では、しきい値117の値はチューニング可能である。その目的のために、リアルタイムまたはオフラインでフィードバックがユーザから得られる。さらに、ユーザフィードバックは、複数の損失関数113の各損失関数に関連付けられる重みを調整するために使用される。ユーザフィードバックに基づいてしきい値117および損失関数の重みをチューニングすることの詳細な説明は、図2に関してさらに記載される。
【0038】
図2は、例示的な実施形態に従った、異常検出器101におけるチューニングプロセスの機能図を示す。図2は、図1に関連して説明される。
【0039】
いくつかの実施形態では、異常検出器101は、チューナモジュール209を含み得る。チューナモジュール209は、分類器モジュール109とともに使用される。最初に、分類器モジュール109は、複数の部分111の各部分に対応する個別の損失成分201を決定し、個別の損失成分201は、MSE損失または交差エントロピー損失などを含み得る。さらに、個別の損失関数についての重み203が決定され得、したがって、再構築損失115は損失項の加重和として決定され得る。分類器109はさらに、損失ベースの異常の検出205を使用し、分類器109によって計算された再構築損失115が、異常を検出するためにしきい値117と比較され、したがって、異常の検出の結果119をレンダリングする。
【0040】
異常の検出の結果119に基づいて、ユーザは、齟齬がある場合、フィードバック(「ユーザフィードバック」とも称される)を異常検出器101に提供し得る。たとえば、分類器モジュール109によって非異常データとして分類された入力データ103が異常であり得る可能性がある。ユーザは、そのような齟齬を決定すると、フィードバックを提供し得、フィードバックにおいて、ユーザは誤分類された入力データ103についてラベル(この場合は非異常)を提供する。
【0041】
フィードバックに基づいて、チューナモジュール209は、異常の検出の結果119がユーザによって提供されるラベルと整合されるように再構築損失115を調整するために、しきい値117と、損失関数の重み付けられた組み合わせにおける複数の損失関数113のうちの少なくとも1つの(すなわち、個別の)損失関数の重み203とのうちの少なくとも1つを更新し得る。重み203は、異常検出器101の訓練中または実行中に自動的に調整され得る(すなわち、オンラインで受信されるユーザフィードバックに基づく)。
【0042】
別の実施形態では、異常の検出の結果119に基づいて、ユーザは、入力データの誤分類を異常(または非異常)として決定し得る。ユーザは、フィードバックを通じて誤分類に関して異常検出器101を更新し得、フィードバックは、入力データ103の誤分類を示す1つ以上のラベルを含み得る。たとえば、非異常データが異常検出器101によって異常であると識別される場合、ユーザは、入力データ103の誤分類を示すためにラベル「No」を提供し得る。したがって、フィードバックに基づくチューナモジュール209は、誤分類を補正するために、しきい値117と、損失関数の重み付けられた組み合わせにおける複数の損失関数113のうちの少なくとも1つ(または個別)の損失関数の重み203とのうちの少なくとも1つを更新し得る。
【0043】
いくつかの実施形態では、異常検出器101は、ユーザによって提供されるフィードバックに基づいて、誤分類されたデータの量を決定し得る。さらに、誤分類されたデータの量が特定のしきい値を上回る場合、しきい値再構築損失117が更新され得る。
【0044】
別の実施形態では、しきい値117は、異常の検出の結果119の観察に基づいてユーザによって調整されてもよい。ユーザは、異常の検出の結果119が異常または誤警報であるかを確認し得る。異常検出器101は、ユーザがユーザインターフェイス(図示せず)を介してフィードバックを提供することを可能にする。しきい値117を調整することによって、ユーザは、誤警報率の改善と異常検出率の改善との間の性能トレードオフを決定し得る。ユーザフィードバックは、ユーザによって識別された異常データのラベルを含む限られた量のラベル付けされたデータを提供する。ラベル付けされたデータは、分類器モジュール109によって、異常検出器101の性能の評価207に使用される。限られた量のラベル付けされたデータにより、異常検出器101の誤警報率および異常検出率が推定される。その目的のために、異常検出器101は、ユーザフィードバックから取得されたラベル付けされたデータに基づいて、異常検出器101によって誤分類され誤警報をもたらした入力データ103の量を決定し得る。さらに、異常検出器101は、誤分類されたデータの量を特定のしきい値(たとえば、しきい値117)と比較し得、当該比較に基づいて、誤警報率および異常検出率が決定され得る。推定された誤警報率および異常検出率に基づいて、しきい値117は、ユーザが所望する性能トレードオフ(すなわち、ユーザが改善された異常検出率または改善された誤警報検出率を所望するか否か)を得るために自動的に調整され得る。
【0045】
いくつかの実施形態では、ユーザフィードバックは、オンラインで(リアルタイムで)取得されてもよい。別の実施形態では、ユーザフィードバックは、オフラインで取得されてもよい。
【0046】
いくつかの実施形態では、限定されたラベル付けされたデータによる性能評価207は、異常の検出のためのソフト決定スコアとして、全体的な損失または再構築損失115を使用してもよい。ソフト決定スコアは、ラベル付けされたデータに対する交差エントロピー損失を計算するために使用される。再構築損失115は、複数の損失関数の重みの関数であるので、複数の損失関数の重みは、勾配降下などの方法を介して交差エントロピー損失を最適化するように調整され得る。勾配降下は、微分可能な関数の極小値を求めるための最適化アルゴリズムである。勾配降下は、単にコスト関数を可能な限り最小化する関数のパラメータ(係数)の値を求めるために使用される。
【0047】
勾配降下は、非常に限られた量のラベル付けされたデータのみを使用して、ユーザフィードバックを介したオンライン調整を含み得る、異常検出器101の性能の調整およびファインチューニングを可能にする。勾配降下は、全オートエンコーダパラメータ(大量のラベル付けられていないデータにて別々に訓練される)を完全に調整することが禁止されるような態様で、ラベル付けされたデータが限定され得る場合に特に適用可能である。
【0048】
図3は、例示的な実施形態に従った異常検出器101のアーキテクチャを示す。異常検出器101は、入力データ(たとえば、入力データ103)を圧縮し、入力データを再構築するよう入力データを解凍するように訓練されるオートエンコーダモジュール105を含む。さらに、再構築された入力データと元の入力データとの間の再構築損失は、入力データにおける異常を検出するために決定される。いくつかの実施形態は、入力データが複数の特徴を含むという認識に基づく。オートエンコーダモジュール105は、入力データの圧縮および解凍中に、複数の特徴にわたってマージナライズ(marginalize)を行い得る。いくつかの実施形態は、入力データのすべての特徴にわたってマージナライズを行うことによって得られる再構築損失では、入力データに存在する異なる入力特徴がマージナライズによって等しく扱われ得るので、入力データにおける異常が正確に検出されないことがあるというさらなる認識に基づく。したがって、入力データのどの特徴が異常に関連付けられていると検出されたかをユーザに通知することができない場合がある。
【0049】
したがって、いくつかの実施形態は、入力データの各特徴を個別に分析して、異常を正確に決定し、さらに、複数の特徴のうちのどの特徴が異常に関連付けられているかを決定する。
【0050】
その目的のために、オートエンコーダモジュール105は、ワンクラス分類モデルを使用して訓練される。ワンクラス分類モデルは、新しい例を正常(非異常)または非正常(異常)のいずれかとして分類するために「正常」な例をモデル化しようとする教師なし学習アルゴリズムを含む。ワンクラス分類モデルは、非常に傾斜したクラス分布を有するバイナリ分類タスクに使用され得る。モデルは、訓練データセットにおける多数派クラスからの入力例にフィッティングされ得、次いで、ホールドアウトテストデータセットに対して評価され得る。
【0051】
したがって、ワンクラス分類モデルは、異常クラスの例がないかまたはほとんどない不均衡な分類データセットに有効であり得るので、正常データセットの多数派クラスを含む訓練データセットは、ワンクラス分類モデルを使用してオートエンコーダを訓練するために使用され得る。さらに、ワンクラス分類モデルは、教師ありアルゴリズムによって学習され得るクラスを分離するコヒーレントな構造が存在しないデータセットに効果的に使用され得る。したがって、ワンクラス分類、または略してOCCは、「正常」(または非異常)データに対してモデルをフィッティングし、新しいデータが正常(すなわち、非異常)または外れ値/異常(または異常)であるか否かを予測することを伴う。
【0052】
訓練後、オートエンコーダモジュール105は、全体的な再構築損失115を決定し、チューニング可能なしきい値(またはしきい値117)と比較することによって、新しいデータ例における異常を検出するために適用され得る。さらに、異常の検出において検出された異常に関連付けられる説明可能性の程度を得るために、複数の損失項113の個別の損失項が調べられ得、これにより、特に入力データの複数の特徴のうちのどの特徴が再構築損失115に最も寄与するかが発見され得る。これは、圧縮および再構築が最も困難であった特徴を強調することになり、これにより、それらが特定のデータを異常にする根源(root)であり得ることが示唆される。したがって、このタイプの情報は、追跡調査員に対して、対象の最も異常な特徴に潜在的にフラグを立て得る。
【0053】
その目的のために、異常検出器101のデータローダモジュール301は、入力データを受け付け、当該入力データに存在する複数の特徴に基づいて入力データを複数の部分にパーティショニングする。複数の部分の各部分は、複数の特徴の各特徴に対応する入力データを含む。データローダモジュール301はさらに、各特徴に対応する入力データを処理し、かつ、固定された次元数値型特徴表現ベクトルを生成するように構成される。したがって、データローダモジュール301は、各パートに含まれる各特徴に対応するデータをベクトル化し、各パートをベクトル化して、それぞれ「部分A」、「部分B」,...,部分「N」とも称される部分303a、303b,...,303nを生成する。
【0054】
さらに、各ベクトル化されたデータは、異常検出器101の連結モジュール305に提供される。連結モジュール305は、複数のベクトル化された部分を連結して連結データを形成するように構成される。連結データはさらにオートエンコーダモジュール105に提供され、オートエンコーダモジュール105は、エンコーダを使用して、連結データを潜在空間表現にエンコードする。オートエンコーダモジュール105はさらに、デコーダを使用して、連結データの潜在空間表現から入力データを再構築する。
【0055】
さらに、オートエンコーダモジュール105によって生成された再構築されたデータは、異常検出器101のスプリットモジュール307に提供される。スプリットモジュール307は、再構築されたデータに存在する複数の特徴に基づき、再構築されたデータをそれぞれ「部分A’」、「部分B’」,...,「部分N’」とも称される複数の部分309a、309b,...,309nに分割するように構成される。したがって、複数の部分の各部分は、複数の特徴の各特徴に対応するデータを含む。複数の特徴に基づいて再構築されたデータを複数の部分にスプリットすることは、異常検出器101が、再構築されたデータによって別々に継承される入力データの各特徴を分析することを可能にする。
【0056】
さらに、再構築されたデータの複数の部分309a,309b,・・・,309nは、分類器モジュール109に提供される。分類器モジュール109は、損失関数決定モジュール311を含み、損失関数決定モジュール311は、「損失1」,「損失2」,...,「損失n」とも称される複数の損失関数313a,313b,...,313nを決定するように構成される。各損失関数は、複数の部分309a,309b,...,309nの対応する各部分の再構築損失を正確に計算する。さらに、再構築された入力データの各部分に対応する個別の再構築損失が、再構築された入力データに基づいて計算される。
【0057】
全体的な再構築損失115を決定するために、分類器モジュール109は、重み決定モジュール315をさらに含む。重み決定モジュール315は、複数の損失関数113の各損失関数に対する重みを決定するように構成される。いくつかの実施形態では、ユーザは、複数の特徴の残りの特徴よりも重要であるとして、複数の特徴の1つ以上の特徴を選択してもよい。この場合、重み決定モジュール315は、選択された重要な特徴に対応する損失関数313a,313b,...,313nのうちのいくつかの損失関数に対してより高い重みを与え、損失関数313a,313b,...,313nのうちの残りの損失関数に対してより低い重みを与える。さらに、再構築損失115は、損失関数313a、313b,...,313nの重み付けられた組み合わせを計算することによって決定される。再構築損失115は、オートエンコーダモジュール105に入力されたデータとオートエンコーダモジュール105によって再構築されたデータとの差に対応する。再構築損失115は、異常検出器101に提供される入力データにおける異常を検出するためにしきい値117と比較される。再構築損失115がしきい値117より大きい場合、入力データは異常を含むと検出される。
【0058】
異常が検出されると、訓練されたオートエンコーダモジュール105を使用する異常検出器101は、ユーザが入力データにおける異常をさらに調査することを可能にする、入力データのどの特徴が異常であると決定されたかに関する情報を提供し得る。
【0059】
特に、異常の検出の結果に基づいて、異常検出器101は、オンライン(すなわち、リアルタイム)またはオフラインのいずれかでユーザフィードバックを取得するように構成される。ユーザフィードバックは、入力データの誤分類を示す少なくとも1つのラベルを提供する。ユーザフィードバックに基づいて、異常検出器101は、異常の検出の結果がユーザによって提供されるフィードバックに合致するように、損失関数(315a~315n)の重み付けられた組み合わせ115内の複数の損失関数の各損失関数に割り当てられたしきい値117および重み203のうちの少なくとも1つを調整またはチューニングするように構成されるチューナモジュール209を使用する。
【0060】
図4は、例示的な実施形態に従った、異常を検出するための方法400のステップを示す。方法400は、異常が検出されることになる入力データ(たとえば、入力データ103)が異常検出器(たとえば、異常検出器101)によって受信され得るステップ401において開始する。入力データは、異種特徴の混合を含むシーケンシャルデータに対応し得る。シーケンシャルデータは、テキストデータ(インターネットプロキシログデータなど)、画像データ、ビデオデータ、オーディオデータ、または、タンパク質配列などを含み得る。いくつかの実施形態では、入力データは、カテゴリ型特徴または数値型特徴などの複数の特徴を含み得る。
【0061】
さらに、ステップ403において、入力データは、異常検出器のオートエンコーダモジュール(たとえば、オートエンコーダ105)に提供されてもよく、入力データは、オートエンコーダモジュールに含まれるエンコーダニューラルネットワークによってエンコードされてもよい。入力データは、エンコーダによって圧縮され、潜在空間表現にさらにエンコードされ得る。
【0062】
ステップ405において、エンコードされた入力データは、オートエンコーダモジュールのデコーダニューラルネットワークを使用して再構築され得る。デコーダは、入力データの潜在空間表現を使用して、入力データを再構築し得る。再構築された入力データは、何らかの再構築損失を含み、再構築損失は、元の入力データと再構築された入力データとの間の差に対応する。
【0063】
ステップ407において、エンコーダに提供された入力データとデコーダによって提供された再構築された入力データとの間の再構築損失は、分類器モジュール(たとえば、分類器モジュール109)を使用して決定され得る。再構築損失を決定するために、最初に、再構築された入力データの複数の部分が、再構築された入力データに含まれる複数の特徴に基づいて決定され得る。複数の部分の各部分は、複数の特徴の各特徴に対応する再構築されたデータを含む。複数の特徴は、元の受け付けられた入力データから再構築された入力データによって継承され得る。
【0064】
さらに、再構築された入力データの複数の部分の各部分について個別の再構築損失を正確に決定する複数の損失関数が決定される。複数の損失関数の各損失関数は、再構築された入力データの複数の部分の各部分に関連付けられる個別の損失(または個別の再構築損失)を測定する。最後に、再構築損失は、複数の損失関数の重み付けられた組み合わせとして決定され、複数の重みは、複数の損失関数の各損失関数に重み付けするために使用され得る。
【0065】
ステップ409において、再構築損失に基づいて異常が検出され得る。その目的のために、再構築損失がしきい値と比較され得る。しきい値は、分析されるべき入力データに関連付けられる複数のベクトル化された正常データサンプル(または良性データサンプル)と、入力データのベクトル化された正常サンプルに対応する複数の再構築されたデータサンプルとの間の再構築損失に基づいて決定され得る。決定された再構築損失が特定の入力サンプルについてしきい値より高い場合、その入力サンプルは、ユーザにとって脅威となり得る異常を含むと決定される。方法400は、検出された異常に関してユーザに通知することをさらに含み得る。他方、決定された再構築損失が特定の入力サンプルについてしきい値よりも小さい場合、入力サンプルは良性入力データサンプルとして決定される。
【0066】
図5Aは、例示的な実施形態に従った、インターネットプロキシデータ501における異常を検出するための異常検出器500aのワークフローを示す概略図である。サイバー攻撃を検出するよう、インターネットプロキシデータ501における異常が検出され得る。インターネットプロキシデータ501は、カテゴリ型特徴、埋込特徴、および数値型特徴などの複数の特徴を含むシーケンシャルデータである。カテゴリ型特徴は、可能性の離散的なセットからの値を有する特徴であり、当該セットのサイズは管理可能なサイズである。たとえば、インターネットプロキシログデータにおいて、カテゴリ型特徴の例は、HTTP応答/エラーコード(比較的小さいセットに属する)、いくつかのトップレベルドメインカテゴリ、プロトコルカテゴリ、ファイル拡張子などを含む。埋込特徴は、本質的にカテゴリ型特徴であり、可能な値のセットのサイズは、大きすぎて管理できない。ドメイン名において生じ得る可能なワードのセットは、最も一般的なワードのサブセットのみを表す埋め込みを必要とするカテゴリ型特徴の例である。数値型特徴は、応答のサイズ、または、テキストから抽出された文字発生統計など、本質的に数値型である特徴である。
【0067】
インターネットプロキシデータ501における異常を検出するためには、複数の特徴の各特徴に対応する入力データを分析することが重要である。これを達成するために、インターネットプロキシデータ501は、インターネットプロキシデータ501に存在する複数の特徴に基づいて複数の部分にパーティショニングされ得る。
【0068】
その目的のために、異常検出器500aは、インターネットプロキシデータ501を入力として受け付けるとともに埋込特徴、カテゴリ型特徴および数値型特徴に基づいてインターネットプロキシデータ501を複数の部分にさらにパーティショニングするデータローダモジュール503を使用する。入力データ501における異常を決定するよう異常検出器が各部分を分析するために、入力データの各部分はデータローダモジュール503によってベクトル化される。
【0069】
したがって、埋込特徴に対応する入力データ501の部分は、ワード埋込モジュール505に提供される。ワード埋込モジュール505は、固定された次元数値ベクトル表現を生成するためにワード埋め込みを実行するように構成される。ワード埋め込みは、同じ意味を有するワードが同様の表現を有するテキストについての学習された表現である。ワード埋め込み技術では、個別のワードは、事前定義されたベクトル空間内の実数値ベクトルとして表される。各ワードは、しばしば数十~数百の次元の実数値ベクトルによって表される。ベクトル化された埋込特徴データは、連結モジュール509に提供される。
【0070】
同様に、カテゴリ型特徴に対応する入力データの部分は、ワンホットエンコードモジュール507を介して数値ベクトルに変換される。ワンホットエンコードモジュール507は、カテゴリ型特徴を数値ベクトル表現に変換するために、カテゴリ型特徴に対応するデータに対してワンホットエンコードを実行するように構成される。ワンホットエンコードモジュール507は、カテゴリ特徴量データの2値化を行い、2値化された特徴量を数値ベクトルに含める。したがって、ワンホットエンコードを使用して作成された数値ベクトルは、複数の0および複数の1を含む。ベクトル化されたカテゴリデータは、連結モジュール509に提供される。
【0071】
さらに、数値型特徴は本質的に数値型であり、如何なる特定の取り扱いも必要としない。いくつかの実施形態では、数値型特徴は、連結モジュール509にフィードされる前に正規化されてもよい。
【0072】
連結モジュール509は、すべての特徴に対応する数値ベクトルを組み合わせて連結データを形成する。連結データは、オートエンコーダモジュール511に提供され、オートエンコーダモジュール511は、連結データをエンコードおよびデコードして、入力データを再構築する。再構築された入力データは再構築損失を含み、再構築損失は元の入力データと再構築された入力データとの差である。再構築された入力データは、複数の特徴、すなわち埋込特徴、カテゴリ型特徴、および数値型特徴を含む。各特徴に対応するデータを分析するために、再構築された入力データはスプリットモジュール515に提供され、スプリットモジュール515は、複数の特徴に基づいて、再構築された入力データを複数の部分にスプリットする。さらに、複数の部分は分類器モジュール529に提供され、連結データの複数の部分の分析に基づいて、入力データ501が異常を含むか否かが決定される。連結データは、入力データ501の各特徴に対応するベクトル化されたデータを含む。再構築される複数の部分の各部分についての再構築損失は、対応する損失関数を使用して決定される。
【0073】
それを達成するために、埋込特徴に対応するデータは、まず、ワード埋込解除モジュール513を使用して埋め込み解除される。ワード埋込解除モジュール513は、ワード埋込モジュール505と共に使用される。ワード埋込解除モジュール513は、埋込特徴に対応する個別のワードの密度のある表現ベクトル空間を、たとえば各可能なカテゴリ値の正規化されていない対数尤度を示すスコアベクトルなどを用いて、カテゴリ変数の直接表現に変換するために使用される。ワード埋込解除モジュール513は、1つ以上の全結合層を含むニューラルネットワークを含み得る。
【0074】
さらに、埋込特徴およびカテゴリ型特徴に対応する交差エントロピー損失が決定され、第1の交差エントロピー損失517は埋込特徴の交差エントロピー損失に対応し、第2の交差エントロピー損失519はカテゴリ型特徴に対応する。交差エントロピー損失(lossCE)は、離散(カテゴリ型)ラベルをリカバリするために分類器を訓練するために使用される損失関数である。
【0075】
【数1】

式中、p=(p,p,...,p)は、サイズnのバッチに対する推定尤度ベクトルのテンソルを示しており、y=(y,y,...,y)は対応するグラウンドトゥルースラベルを示しており、p[y]は、尤度ベクトルpのy番目の要素を選択することを示す。理想的には、交差エントロピー損失を最小化するために、P[y]は1であるべきであり、pの他の要素は0であるべきである。
【0076】
第1の交差エントロピー損失517は、ワード埋込解除モジュール513の出力および元の埋込特徴に基づいて決定される。同様に、カテゴリ型特徴に対応する第2の交差エントロピー損失519は、元のカテゴリ型特徴に対して計算される。
【0077】
さらに、数値型特徴に対応する成分について、平均二乗誤差(MSE)損失が数値型特徴に対して計算され、数値型特徴に対応するMSE損失は、第1のMSE損失521として示される。さらに、MSE損失は、オートエンコーダモジュール511の入力および出力に対して計算され、オートエンコーダモジュール511の入力および出力に対して計算されたMSE損失521は、第2のMSE損失523として示される。MSE(平均二乗誤差)損失(lossMSE)は、以下の式によって与えられる。
【0078】
【数2】

式中、x=(x,x,...,x)およびy=(y,y,...,y)は、比較される2つのベクトルである。たとえば、xは数値型特徴のベクトルのグラウンドトゥルースであってもよく、yはそのベクトルの推定であってもよい。第1のMSE損失521において、ベクトル「x」は、元の数値型特徴に対応するデータに対応し得、ベクトル「y」は、再構築される数値型特徴に対応するデータに対応し得る。同様に、第2のMSE損失523では、ベクトル「x」は、オートエンコーダモジュール511への入力として提供される連結データに対応し得、ベクトル「y」は、オートエンコーダモジュール511によって生成される再構築された入力データ(連結データ)に対応し得る。
【0079】
いくつかの実施形態では、複数の部分の各部分は、第1の交差エントロピー損失関数517、第2の交差エントロピー損失関数519、第1のMSE損失関数521、および第2のMSE損失関数523などの個別の損失関数を計算するために、損失関数決定モジュール(損失関数決定モジュール145など)(図2Aに図示せず)に提供され得る。
【0080】
さらに、全体的な再構築損失は、すべての損失関数の加重和525(すなわち、第1の交差エントロピー損失関数517、第2の交差エントロピー損失関数519、第1のMSE損失関数521、および第2のMSE損失関数523の加重和)として決定される。その目的のために、各損失関数に対応する重みは、重み決定モジュール(重み決定モジュール315など)(図3に示す)を使用して決定され得る。さらに、損失ベースの異常の検出527を使用してプロキシデータ501において異常が検出され、再構築損失がしきい値再構築損失と比較される。プロキシデータ501に対応する再構築損失がしきい値より大きい場合、プロキシデータ501は異常を含むと決定される。
【0081】
例示的な実施形態では、異常検出器500aは、ユーザインターフェイスとともに使用され得る。ユーザは、ユーザインターフェイスを介して、プロキシデータ501における異常を検出するために、プロキシデータ501の複数の特徴から1つ以上の特徴を選択し得る。さらに、ユーザは、各特徴に対応する損失を決定するために使用されるべき複数の損失関数を選択し、さらに、全体的な再構築損失の決定において各損失関数について使用されるべき重みを選択し得る。
【0082】
例示的な実施形態では、異常検出器500aは、サイバー物理システムへのサイバー攻撃およびコンピュータネットワークにおける他の悪意のあるアクティビティを検出するために、インターネットプロキシログデータ501に対して異常の検出を実行するように、ワンクラス分類モデルを使用して訓練されてもよい。異常検出器500aは、インターネットプロキシデータ501における異常の検出に基づいて、サイバー攻撃の検出を自動化する。さらに、異常検出器500aは、ユーザへの通知などのサイバー攻撃に対する応答を自動化し得、当該通知は、鳴動アラームもしくは通知音、または、通知の表示などを含み得る。異常検出器500aはさらに、調査および適切な応答を導くために、データがなぜ異常であるように見えるのかについて説明を提供してもよい。
【0083】
図5Bは、例示的な実施形態に従う、インターネットプロキシログからカテゴリ型特徴および数値型特徴へのデータの分解を示す。図5Cは、例示的な実施形態に従った、URL531の複数の特徴に対応するデータを連結するように構成される連結モジュール509を示す。図5Bは、図5Aと関連して記載される。さらに、図5Cは、図5Bおよび図5Aと関連して記載される。
【0084】
インターネットプロキシログ(インターネットプロキシデータ501とも称される)は、ユーザによってネットワークに対して行われる要求に関連付けられる情報を含む。たとえば、インターネットプロキシデータ501は、ホストIDと、クライアントIDと、ネットワークに特定のウェブサイトまたはウェブコンテンツへのアクセスを要求したユーザのユーザIDとを含む。インターネットプロキシデータ501はさらに、データ時間と、タイムゾーンと、コマンドの状態およびコマンドによって使用されるバイト数に関する情報とともに特定のウェブサイトまたはウェブコンテンツにアクセスするためにユーザによって使用されるコマンドとを含む。
【0085】
インターネットプロキシデータ501は、多くの異なるユーザからのインターネットトラフィック要求のログエントリのシーケンスを含む生データであり、ログエントリのこれらのシーケンスは、本質的にインターネットプロキシデータ501にインターリーブされている。したがって、インターネットプロキシデータ501における異常を検出するために、異常検出器500aは、最初に、異なるユーザによって生成されたログエントリのシーケンスをデインターリーブし、次いで、各ユーザのシーケンスを独立して扱う。さらに、インターリーブされている間にシーケンスのすべてを単純に処理するという代替案は、追加の不必要な複雑さによりオートエンコーダ511の訓練に過度に負担がかかり得る。
【0086】
デインターリーブされたシーケンスのうちの1つに対応するURL531は、異常検出器500aによって取得され得、異常検出器500aは、URL531に含まれる複数の特徴に基づいてURL531を複数の部分に分解する。URL531は、ウェブサイトまたはウェブコンテンツにアクセスするためにユーザによって行われる要求に関連付けられる異なる情報を含む。URL531に含まれる情報は、カテゴリ型特徴533と数値型特徴535とに分解される。カテゴリ型特徴533に分解された情報は、ウェブサイトにアクセスするためにユーザによって使用されるメソッド名を含み、この場合、メソッド名は「GET」に対応し、GETは、特定のURLからリソースを抽出するために使用されるデフォルトHTTPメソッドである。カテゴリ型特徴533に含まれる情報は、この場合「download」であるサブドメインワードと、この場合「windowsupdate」であるドメインワードと、ジェネリック型トップレベルドメイン(TLD: top-level domain)である「co.」と、国コードTLDである「.jp」と、ファイル拡張子である「.exe」とをさらに含む。サブドメインワードおよびドメインワードは、非常に大きいワード語彙サイズにより、埋込特徴にさらにカテゴライズされ得る。
【0087】
さらに、数値型特徴535にカテゴライズされるURL531の情報は、レベルの数(#)、小文字の#、大文字の#、数値の#、特殊文字の#、および、パラメータの#を含む。データローダモジュール503は、URL531の特徴に基づいてURL531をパーティショニングする。さらに、データローダモジュール503は、各特徴533および535に含まれるデータをベクトル化する。データをベクトル化することは、テキストデータ(たとえば、ドメインワードおよびサブドメインワードなどに含まれるデータなど)を数値ベクトルに変換し、当該数値ベクトルは異常を検出するために使用される。
【0088】
図5Cでは、カテゴリ型特徴533および数値型特徴535に対応するベクトル化されたデータが連結モジュール509に提供される。連結モジュール509は、すべての特徴533および535に対応するベクトル化されたデータを連結し、連結データ537を生成する。
【0089】
ドメインおよびサブドメインワードにおけるデータ(テキスト)をベクトル化するために、ワード埋込モジュール505が訓練され、最も一般的に見られるワードの語彙からのワードを含む訓練データが使用される。最も一般的なセットの外側のワードは、ワード埋込モジュール505の訓練において「他の」グループとしてラベル付けされ得る。しかしながら、必要な語彙は依然として非常に大きく、語彙のサイズの取り扱いを困難にする。したがって、訓練中の語彙のサイズを扱うために、ワード埋込モジュールは、非常に大きなワンホットカテゴリエンコードを使用するのではなく、ドメインワードおよびサブドメインワードにおける各ワードをより小さい次元の特徴ベクトルに変換するよう、URL531に存在する複数の特徴の各特徴について予め訓練され得る。したがって、これらの埋込ベクトル(すなわち、特徴ベクトル)は、オートエンコーダモジュール511がそれとともに動作するための処理された特徴として、元のドメイン/サブドメインワードの代わりに使用される。
【0090】
連結データ537は、オートエンコーダモジュール511に提供され、オートエンコーダモジュール511は、エンコーダを使用して、連結データ537を潜在空間表現にエンコードする。オートエンコーダモジュール511はさらに、デコーダを使用して、連結データ537の潜在空間表現から連結データ537(すなわち、ベクトル化されたURL531)を再構築する。さらに、再構築された連結データ537は、スプリットモジュール515に提供され、ここで、再構築された連結データ537は、再構築された連結データ537に存在する複数の特徴に基づいて、複数の部分にスプリットされる。したがって、複数の部分の各部分は、複数の特徴の各特徴に対応するデータを含む。複数の部分はさらに分類器モジュール529に提供され、URL531が、図5Aに関して記載されるように何らかの異常を含むか否かが決定される。いくつかの実施形態では、提案される異常検出器は、ビデオデータにおける異常を検出するために使用されてもよい。提案される異常検出器を使用するビデオデータにおける異常の検出に関する詳細な記載は、図6に関して以下に提供される。
【0091】
図6は、例示的な実施形態に従った、ビデオデータ601における異常の検出を示すブロック図600である。ビデオデータ601は、シーケンシャルデータの形態であり、リアルタイムビデオおよび/または記録されたビデオであり得る。図6では、ビデオデータ601は、ベッドに横たわる患者601aのビデオデータであり、患者601aの心拍は、心電図(ECG)マシン601bを使用して監視されている。ビデオデータ601は異常検出器603に提供される。異常検出器603は、異常検出器101に対応し得る。ビデオデータ601を受信すると、異常検出器603はビデオデータ601を処理し得る。ビデオデータ601の各画像フレームは、異なる特徴、たとえば、緑、赤または青などのような異なる色チャネルを含む。ビデオデータ601の複数の特徴は、生画像に加えて、前処理されたモーションベクトルを含み得る。さらに、各画像フレームは、生のピクセル値に加えて、ビデオデータ601において複数の特徴をもたらす、オブジェクト検出およびスケルトントラッキングなどのようなさまざまなツールを用いて異常検出器603によって処理される。
【0092】
たとえば、物体検出ツールを使用することによって、異常検出器603は、画像フレームにおけるECGマシン601bを検出し、画像フレームにおいてECGマシン601bに対してズームインまたはズームアウトし得る。さらに、ECGマシン601b上のECGグラフの画像を分析して、患者601aの心拍の異常を検出し得る。その目的のために、異常検出器603は、正常な心拍のECGを含む訓練データを使用して訓練され得る。異常検出器603は、ビデオデータ601の1つ以上の画像フレームに含まれるECGマシン601b上のECGグラフの画像に対応する再構築損失を決定し得る。異常検出器603は、全体的な再構築損失を使用して、患者601aの心拍の異常を決定する。したがって、異常検出器603は、検出した異常について医師に通知し得る。
【0093】
例示的な実施形態では、異常検出器603は、ECGマシン601bに対応するビデオデータ601の画像フレームに基づいて、患者601aの心拍の異常を検出するために使用されてもよい。その目的のために、異常検出器603は、正常な心拍のECGを含む訓練データを使用して訓練されてもよい。付加的または代替的には、異常検出器603は、ECGに対応する画像フレームから異なる特徴を決定するように訓練されてもよく、たとえば、異常検出器603は、(ECGマシン601b上に表示されるECGグラフに対応する)緑色が他の色よりも多くの情報に寄与することを決定するように訓練される。
【0094】
別の実施形態では、異常検出器603は、患者601aのポーズ(または姿勢)における異常を検出するために使用され得る。たとえば、患者601aがベッドから落下しようとしているとき、患者601aは異常なポーズであり得る。さらに、患者601aの異常なポーズは、癲癇発作によるものであり得る。したがって、異常検出器603は、ベッドに横たわっている患者の正常なポーズ、または、食物を食べるなどのベッド上での正常な活動を行う患者の正常なポーズについて訓練され得る。ビデオデータ601に基づく異常検出器603は、ビデオデータ601のさまざまな画像フレームから患者601aの動きに関連付けられる複数の特徴を決定し得る。その目的のために、スケルトントラッキングツールは、患者601aの位置(またはポーズもしくは姿勢)の異常を検出するために異常検出器603によって使用され得る。さらに、異常検出器603は次いで、患者601aの動きに関連付けられる画像に対応する全体的な再構築損失を決定し、再構築損失を使用して患者601aの姿勢の異常を決定し得る。これにより、異常検出器603は、医師に異常について通知し得る。
【0095】
例示的な実現例
図7は、例示的な実施形態に従った、入力データ103から異常を検出するためのコンピュータベースの異常検出器700のブロック図を示す。コンピュータベースの異常検出器700は、異常検出器700を他のシステムおよびデバイスに接続するある数のインターフェイスを含む。異常検出器700は、入力データ103を受け付けるように構成される入力インターフェイス701を含み、入力データ103は、インターネットプロキシデータ、ビデオデータ、オーディオデータまたは画像データなどのシーケンシャルデータを含む。
【0096】
いくつかの実施形態では、異常検出器700は、有線および無線ネットワークの1つまたは組み合わせであり得るネットワーク707を介して入力データ103を取得するように構成されるネットワークインターフェイスコントローラ(NIC: network interface controller)705を含む。
【0097】
ネットワークインターフェイスコントローラ(NIC)705は、バス723を介して異常検出器700をネットワーク707に接続し、異常検出器700を入力デバイス703に接続するように適合される。入力デバイス703は、記録されたプロキシログデータにおける異常を検出するために異常検出器700に提供されるプロキシログデータを記録するプロキシログデータレコーダに対応し得る。別の実施形態では、入力デバイス703は、ビデオレコーダに対応し得、ビデオレコーダは、異常検出器700に提供されるべきビデオを記録し、当該記録されたビデオデータにおける異常を検出し得る。
【0098】
付加的または代替的には、異常検出器700は、ヒューマンマシンインターフェイス(HMI: human machine interface)711を含み得る。異常検出器700内のヒューマンマシンインターフェイス711は、異常検出器700をキーボード713およびポインティングデバイス715に接続し、ポインティングデバイス715は、たとえば、マウス、トラックボール、タッチパッド、ジョイスティック、ポインティングスティック、スタイラス、または、タッチスクリーンを含み得る。
【0099】
異常検出器700は、格納された命令717を実行するように構成されるプロセッサ721と、プロセッサ721によって実行可能な命令を格納するメモリ719とを含む。プロセッサ721は、シングルコアプロセッサ、マルチコアプロセッサ、コンピューティングクラスタ、または、任意の数の他の構成であり得る。メモリ719は、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、フラッシュメモリ、または、任意の他の好適なメモリシステムを含み得る。プロセッサ721は、バス723を介して1つ以上の入力および出力デバイスに接続され得る。
【0100】
命令717は、いくつかの実施形態に従った、異常を検出するための方法を実現し得る。その目的のために、コンピュータメモリ719は、データローダモジュール301、連結モジュール305、オートエンコーダモジュール105、スプリットモジュール307、分類器モジュール109、および、チューナモジュール209を格納する。入力データ103の異常を決定するために、まず、入力データ103は、データローダモジュール301によって、入力データに存在する複数の特徴に基づいて複数の部分にパーティショニングされる。データローダモジュール301はさらに、入力データ103の複数の部分の各部分をベクトル化し、ベクトル化された部分は、対応する部分におけるデータの数値表現を含む。
【0101】
さらに、ベクトル化されたデータは、複数のベクトル化された部分を連結し、連結データを生成するために連結モジュール305に提供される。連結データは、オートエンコーダモジュール105に提供され、連結データは、連結データを再構築するために圧縮および解凍される。再構築されたデータは再構築損失を含み、再構築損失は、オートエンコーダモジュール105への元の入力データとオートエンコーダモジュール105によって再構築された入力データとの差である。
【0102】
異常検出器700は、入力データ103から異常を正確に検出し、さらに入力データ103のどの特徴が異常であるかを決定し得る。その目的のために、異常検出器700は、各特徴に対応する入力データ103を個別に分析するように構成される。これは、再構築されたデータ内の複数の特徴に基づいて再構築されたデータを複数の部分に分割するスプリットモジュール307を使用して達成される。さらに、各特徴に対応するデータは、分類器モジュール109に提供される。分類器モジュール109は、個別の再構築損失を正確に決定するために、各部分に対応する損失関数を決定するように構成される。分類器モジュール109はさらに、個別の再構築損失の重み付けられた組み合わせとして全体的な再構築損失を決定するように構成される。次いで、全体的な再構築損失がしきい値と比較される。全体的な再構築損失がしきい値再構築より大きい場合、分類器モジュール109は、入力データ103が異常を含むと決定する。ユーザは、検出された異常をさらに調査することを可能にするために、異常および異常を含む入力データの特徴に関して通知されてもよい。
【0103】
分類器モジュール109によって提供される異常の検出の結果に基づいて、ユーザは分類器モジュール109にフィードバックを提供し得る。ユーザフィードバックは、異常またはその逆としての入力データの誤分類に関連付けられるラベル付けされた情報を含んでもよい。ユーザフィードバックにおけるラベル付けされたデータは、異常検出器700の修正された結果が、ユーザフィードバックによって提供される入力データ103に対応するラベル(異常または非異常)と一致するように、個別の再構築損失のために使用されるしきい値および重みをチューニングまたは調整するためにチューナモジュール209によって使用される。
【0104】
いくつかの実施形態では、出力インターフェイス727は、ディスプレイデバイス709上に異常の検出の結果をレンダリングするように構成され得る。ディスプレイデバイス709の例は、たとえば、コンピュータモニタ、テレビ、プロジェクタ、または、モバイルデバイスを含む。コンピュータベースの異常検出器700はさらに、さまざまなタスクを実行するためにコンピュータベースの異常検出器700を外部デバイス723に接続するように適合されるアプリケーションインターフェイス725に接続され得る。
【0105】
実施形態
当該記載は、例示的な実施形態のみを提供するものであり、本開示の範囲、適用可能性または構成を限定することを意図するものではない。むしろ、例示的な実施形態の以下の記載は、1つ以上の例示的な実施形態を実施するための実施可能な記載を当業者に提供する。添付の特許請求の範囲に記載されるように開示される主題の精神および範囲から逸脱することなく、要素の機能および配置において行われ得るさまざまな変更が企図される。
【0106】
以下の説明では、実施形態の完全な理解を提供するために具体的な詳細が与えられる。しかしながら、当業者は、実施形態がこれらの具体的な詳細なしに実施され得ることを理解し得る。たとえば、開示される主題におけるシステム、プロセスおよび他の要素は、不必要な詳細で実施形態を不明瞭にしないように、ブロック図の形態のコンポーネントとして示され得る。他の事例では、周知のプロセス、構造、および技術は、実施形態を不明瞭にすることを回避するために、不必要な詳細を伴わずに示される場合がある。さらに、さまざまな図面における同様の参照番号および名称は、同様の要素を示している。
【0107】
さらに、個別の実施形態は、フローチャート、フロー図、データフロー図、構造図、またはブロック図として示されるプロセスとして説明され得る。フローチャートは動作をシーケンシャルプロセスとして記載することがあるが、動作の多くは並列にまたは同時に実行され得る。加えて、動作の順序は並べ替えられ得る。プロセスは、その動作が完了したときに終了し得るが、図において議論されていないまたは含まれていない追加のステップを有し得る。さらに、特に記載される任意のプロセスにおけるすべての動作が、すべての実施形態において生じ得るわけではない。プロセスは、方法、関数、プロシージャ、サブルーチン、サブプログラムなどに対応し得る。プロセスが関数に対応するとき、関数の終了は、呼び出し関数またはメイン関数への関数のリターンに対応し得る。
【0108】
さらに、開示される主題の実施形態は、少なくとも部分的に、手動または自動のいずれかで実現されてもよい。手動または自動の実現例は、マシン、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、もしくは、それらの任意の組み合わせの使用を通じて実行され、または、少なくとも支援され得る。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実現されるとき、必要なタスクを実行するためのプログラムコードまたはコードセグメントは、機械可読媒体に格納され得る。必要なタスクはプロセッサが実行し得る。
【0109】
さらに、本開示の実施形態および本明細書において記載される機能的動作は、デジタル電子回路において実現され得、有形に具現化されたコンピュータソフトウェアもしくはファームウェアにおいて実現され得、本明細書において開示される構造およびそれらの構造的等価物を含むコンピュータハードウェアにおいて実現され得、または、それらの1つ以上の組み合わせにおいて実現され得る。さらに、本開示のいくつかの実施形態は、1つ以上のコンピュータプログラム、すなわち、データ処理装置による実行のために、またはデータ処理装置の動作を制御するために、有形の非一時的プログラムキャリア上にエンコードされたコンピュータプログラム命令の1つ以上のモジュールとして実現され得る。さらに、プログラム命令は、人工的に生成された伝搬信号、たとえば、データ処理装置による実行のために好適な受信機装置に伝送するための情報をエンコードするために生成される、機械生成電気信号、光信号、または電磁信号上でエンコードされ得る。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、または、これらの1つ以上の組み合わせであり得る。
【0110】
コンピュータプログラム(さらに、プログラム、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプト、または、コードとして言及または説明され得る)は、コンパイラ型言語もしくはインタープリタ型言語、または宣言型言語もしくは手続き型言語を含む任意の形態のプログラミング言語で記述され得、スタンドアロンプログラムとして、または、モジュール、コンポーネント、サブルーチン、もしくはコンピューティング環境で使用するのに適切な他のユニットとして含む任意の形態で展開され得る。コンピュータプログラムは、ファイルシステム内のファイルに対応し得るが、対応する必要はない。プログラムは、他のプログラムまたはデータを保持するファイルの部分、たとえば、マークアップ言語ドキュメントに格納された1つ以上のスクリプト、当該プログラム専用の単一のファイル、または、複数の協調ファイル、たとえば、1つ以上のモジュール、サブプログラム、またはコードの部分を格納するファイルに格納され得る。コンピュータプログラムは、1つのコンピュータ上で実行されるように展開され得るか、または、1つのサイトに位置するか、もしくは、複数のサイトにわたって分散され、通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように展開され得る。コンピュータプログラムの実行に適切なコンピュータは、例として、汎用もしくは専用マイクロプロセッサもしくはその両方、または、任意の他の種類の中央処理装置に基づき得る。一般に、中央処理装置は、リードオンリメモリ、ランダムアクセスメモリ、または、その両方から命令およびデータを受け取る。コンピュータの必須要素は、命令を実施または実行するための中央処理装置と、命令およびデータを格納するための1つ以上のメモリデバイスとである。一般的に、コンピュータはさらに、データを格納するための1つ以上の大容量記憶デバイス、たとえば、磁気、光磁気ディスク、もしくは、光ディスクも含むか、または、それらからデータを受信するか、それらにデータを転送するか、または、それらの両方を行うように動作可能に連結される。しかしながら、コンピュータは、そのようなデバイスを有する必要はない。さらに、コンピュータは、別のデバイスに埋め込まれ得、たとえば、ほんの数例を挙げると、携帯電話、携帯情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、または、たとえばユニバーサルシリアルバス(USB)フラッシュドライブのようなポータブル記憶デバイスに埋め込まれ得る。
【0111】
ユーザとの相互作用を提供するために、本明細書で説明される主題の実施形態は、ユーザに情報を表示するためのディスプレイデバイス、たとえば、CRT(陰極線管)またはLCD(液晶ディスプレイ)モニタと、キーボードおよびポインティングデバイス、たとえば、マウスまたはトラックボールとを有するコンピュータ上で実現され得、これにより、ユーザはコンピュータに入力を提供し得る。他の種類のデバイスを使用して、ユーザとの相互作用をさらに提供し得、たとえば、ユーザに提供されるフィードバックは、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックなど任意の形態の感覚フィードバックであり得、さらに、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態で受信され得る。加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送信し、ユーザによって使用されるデバイスから文書を受信することによって、たとえば、ウェブブラウザから受信した要求に応答して、ユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによって、ユーザと相互作用し得る。
【0112】
本明細書において記載される主題の実施形態は、たとえばデータサーバとしてバックエンドコンポーネントを含むコンピューティングシステムにおいて実現され得、または、たとえばアプリケーションサーバなどのミドルウェアコンポーネントを含むコンピューティングシステムにおいて実現され得、または、たとえば本明細書において記載される主題の実現例とユーザが相互作用し得るグラフィカルユーザインターフェイスまたはウェブブラウザを有するクライアントコンピュータなどのフロントエンドコンポーネントを含むコンピューティングシステムにおいて実現され得、または、1つ以上のそのようなバックエンド、ミドルウェアもしくはフロントエンドコンポーネントの任意の組み合わせにおいて実現され得る。システムのコンポーネントは、たとえば通信ネットワークなどのデジタルデータ通信の任意の形態または媒体によって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、たとえばインターネットを含む。
【0113】
コンピューティングシステムは、クライアントおよびサーバを含み得る。クライアントおよびサーバは一般的に、互いにリモートであり、典型的には、通信ネットワークを通じて相互作用する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されるとともに互いにクライアント-サーバ関係を有するコンピュータプログラムによって生じる。
【0114】
本開示は、ある好ましい実施形態を参照して記載されたが、さまざまな他の適応および修正が、本開示の精神および範囲内で行われ得ることが理解されるべきである。したがって、添付の特許請求の範囲の局面は、本開示の真の精神および範囲内に該当するすべてのそのような変形例および修正例を包含するものである。
図1
図2
図3
図4
図5A
図5B
図5C
図6
図7