(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022037311
(43)【公開日】2022-03-09
(54)【発明の名称】サーバ装置、方法及びプログラム
(51)【国際特許分類】
H04L 43/00 20220101AFI20220302BHJP
【FI】
H04L12/70 100Z
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2020141372
(22)【出願日】2020-08-25
(71)【出願人】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(71)【出願人】
【識別番号】501061319
【氏名又は名称】学校法人 東洋大学
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100124844
【弁理士】
【氏名又は名称】石原 隆治
(72)【発明者】
【氏名】田尻 兼悟
(72)【発明者】
【氏名】川原 亮一
【テーマコード(参考)】
5K030
【Fターム(参考)】
5K030GA11
5K030HD03
5K030JA10
5K030LE03
5K030MB09
5K030MC07
5K030MC08
(57)【要約】
【課題】ネットワークオペレーションタスクを機械学習により実現する際に、処理速度及び精度を最適化する負荷分散を実現すること。
【解決手段】一実施形態に係るサーバ装置は、ルータ及びエッジサーバと接続されるサーバ装置であって、目標とする転送遅延時間に関する制約条件と通信ネットワークの帯域に関する制約条件の下で、所定の機械学習タスクの学習用データのデータ量と前記ルータにおけるデータのサンプリングレートと前記ルータでサンプリングされたデータを前記エッジサーバ又は前記サーバ装置のいずれに転送するかの比率とに関して定式化された最適化問題を解くことで、前記学習用データのデータ量を最大化する前記サンプリングレートと前記比率とを計算する計算部と、前記計算部で計算された前記サンプリングレートと前記比率とを前記ルータに送信する送信部と、を有することを特徴とする。
【選択図】
図1
【特許請求の範囲】
【請求項1】
ルータ及びエッジサーバと接続されるサーバ装置であって、
目標とする転送遅延時間に関する制約条件と通信ネットワークの帯域に関する制約条件の下で、所定の機械学習タスクの学習用データのデータ量と前記ルータにおけるデータのサンプリングレートと前記ルータでサンプリングされたデータを前記エッジサーバ又は前記サーバ装置のいずれに転送するかの比率とに関して定式化された最適化問題を解くことで、前記学習用データのデータ量を最大化する前記サンプリングレートと前記比率とを計算する計算部と、
前記計算部で計算された前記サンプリングレートと前記比率とを前記ルータに送信する送信部と、
を有することを特徴とするサーバ装置。
【請求項2】
前記最大化された前記学習用データのデータ量を用いて、前記機械学習タスクを実現する機械学習モデルの精度を推定する精度推定部を有する、ことを特徴とする請求項1に記載のサーバ装置。
【請求項3】
前記精度推定部で推定された精度と前記機械学習モデルの実際の精度との差を用いて、前記精度推定部によって前記機械学習モデルの精度を推定する際のパラメータ値を調節する調節部を有することを特徴とする請求項2に記載のサーバ装置。
【請求項4】
予め設定された学習周期の間に前記ルータでサンプリングされたデータから作成された学習用データを用いて、前記機械学習タスクを実現する機械学習モデルの学習を行う学習部と、
前記学習部で学習された前記機械学習モデルを前記エッジサーバに配布する配布部と、
を有することを特徴とする請求項1乃至3の何れか一項に記載のサーバ装置。
【請求項5】
前記計算部は、
前記ルータにおける前記帯域の測定結果と前記エッジサーバで前記データから前記学習用データを作成する際の圧縮率の計算結果とを用いて、前記最適化問題を解き直し、前記サンプリングレートと前記比率とを再計算する、ことを特徴とする請求項1乃至4の何れか一項に記載のサーバ装置。
【請求項6】
ルータ及びエッジサーバと接続されるサーバ装置が、
目標とする転送遅延時間に関する制約条件と通信ネットワークの帯域に関する制約条件の下で、所定の機械学習タスクの学習用データのデータ量と前記ルータにおけるデータのサンプリングレートと前記ルータでサンプリングされたデータを前記エッジサーバ又は前記サーバ装置のいずれに転送するかの比率とに関して定式化された最適化問題を解くことで、前記学習用データのデータ量を最大化する前記サンプリングレートと前記比率とを計算する計算手順と、
前記計算手順で計算された前記サンプリングレートと前記比率とを前記ルータに送信する送信部と、
を実行することを特徴とする方法。
【請求項7】
コンピュータを、請求項1乃至5の何れか一項に記載のサーバ装置として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、サーバ装置、方法及びプログラムに関する。
【背景技術】
【0002】
機械学習技術によりネットワークオペレーションタスクを実現することが従来から行われている。また、近年では、機械学習技術で要求される各種機能を仮想ネットワーク上に配置する研究も進められている。このような機能としては、生データを特定の機器に送信する「転送機能」、生データをテーブルデータに整形する「前処理機能」、前処理されたデータを蓄積する「データベース」、データベース内のデータを用いて機械学習モデルを学習する「学習機能」、学習済み機械学習モデルにより特定のネットワークオペレーションタスク(例えば、ネットワーク監視タスク等)を実施する「実施機能」等がある。
【0003】
上記の機能を仮想ネットワーク上に配置する際には同一機能を複数配置することも可能であり、この場合、各種機能に関する処理の負荷分散をどのように行うのが適切なのかが問題となる。これは、負荷分散の仕方によってデータ転送に要する時間やそれに伴う単位時間あたりに利用可能なデータ量等に差が生じ、その結果、学習機能や実施機能の処理速度と機械学習モデルの精度に影響が生じるためである。
【0004】
負荷分散方式の従来技術として、例えば、非特許文献1では、画像分析を行う際に、画像からテキストを得るための前処理を分散して行うことで、画像分析の処理速度を最適にする負荷分散方式が提案されている。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】R. Shinkuma, S. Kato, M. Kanbayashi, Y. Ikeda, R. Kawahara, and T. Hayashi, "System Design for Predictive Road-Traffic Information Delivery using Edge-Cloud Computing," IEEE CCNC 2018, Jan. 2018.
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、従来の負荷分散方式では、データの転送方式に依存する詳細な転送速度も含めた処理速度や機械学習モデルの精度については考慮されていなかった。
【0007】
本発明の一実施形態は、上記の点に鑑みてなされたもので、ネットワークオペレーションタスクを機械学習により実現する際に、処理速度及び精度を最適化する負荷分散を実現することを目的とする。
【課題を解決するための手段】
【0008】
上記目的を達成するため、一実施形態に係るサーバ装置は、ルータ及びエッジサーバと接続されるサーバ装置であって、目標とする転送遅延時間に関する制約条件と通信ネットワークの帯域に関する制約条件の下で、所定の機械学習タスクの学習用データのデータ量と前記ルータにおけるデータのサンプリングレートと前記ルータでサンプリングされたデータを前記エッジサーバ又は前記サーバ装置のいずれに転送するかの比率とに関して定式化された最適化問題を解くことで、前記学習用データのデータ量を最大化する前記サンプリングレートと前記比率とを計算する計算部と、前記計算部で計算された前記サンプリングレートと前記比率とを前記ルータに送信する送信部と、を有することを特徴とする。
【発明の効果】
【0009】
ネットワークオペレーションタスクを機械学習により実現する際に、処理速度及び精度を最適化する負荷分散を実現することができる。
【図面の簡単な説明】
【0010】
【
図1】本実施形態に係る通信ネットワークシステムの全体構成の一例を示す図である。
【
図2】実運用開始前の最適負荷分散決定及び精度推定処理の流れの一例を示すフローチャートである。
【
図3】実運用後の異常検知実施処理の流れの一例を示すフローチャートである。
【
図4】実運用後の異常検知モデル構築処理の流れの一例を示すフローチャートである。
【
図5】実運用後の処理速度算出用のパラメータ調節処理の流れの一例を示すフローチャートである。
【
図6】実運用後の精度推定用のパラメータ調節処理の流れの一例を示すフローチャートである。
【
図7】総検知時間と学習用データ収集時間の関係を説明するための図である。
【
図8】コンピュータのハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【0011】
以下、本発明の一実施形態について説明する。本実施形態では、ネットワークオペレーションタスクの一例として異常検知タスク(つまり、異常トラヒックを検知するタスク)を想定し、機械学習モデルにより異常検知を実現する際に、異常検知タスクの処理速度及び精度を最適化する負荷分散を実現可能な通信ネットワークシステム1について説明する。
【0012】
<通信ネットワークシステム1の全体構成>
まず、本実施形態に係る通信ネットワークシステム1の全体構成について、
図1を参照しながら説明する。
図1は、本実施形態に係る通信ネットワークシステム1の全体構成の一例を示す図である。
【0013】
図1に示すように、本実施形態に係る通信ネットワークシステム1には、クラウドサーバ10と、1以上のエッジサーバ20と、1以上のルータ30とが含まれる。これらのクラウドサーバ10、エッジサーバ20及びルータ30は、例えば、NFV(Network Functions Virtualization)等のネットワーク仮想化技術により各種機能を汎用サーバや機器等のコンピュータ上に配置することで実現される。
【0014】
ここで、本実施形態に係るクラウドサーバ10は通信ネットワークシステム1のクラウド側に配置されるサーバであり、機能部として、収集部101と、転送部102と、前処理部103と、実施部104と、監視部105と、学習部106と、計算部107と、DB(データベース)108とを有する。収集部101は、エッジサーバ20やルータ30から転送されたデータを収集する。転送部102は、異常検知タスクの処理速度及び精度を最適化する負荷分散を実現するためパラメータを各ルータ30に送信したり、学習済み機械学習モデルを各エッジサーバ20に配布したりする。前処理部103は、ルータ30から転送されたデータに対して前処理を行う。実施部104は、学習済み機械学習モデルによりネットワークオペレーションタスク(本実施形態では異常検知タスク)を実施する。監視部105は、通信ネットワークの各種情報(例えば、帯域等)を監視及び測定する。学習部106は、DB108に蓄積されているデータを学習用データとして機械学習モデルの学習を行う。計算部107は、異常検知タスクの処理速度及び精度を最適化する負荷分散を実現するためのパラメータを計算する。DB108は、前処理後のデータを蓄積する。
【0015】
また、本実施形態に係るエッジサーバ20は通信ネットワークシステム1のエッジ側に配置されるサーバであり、機能部として、収集部201と、転送部202と、前処理部203と、実施部204と、監視部205と、DB206とを有する。収集部201は、ルータ30から転送されたデータを収集する。転送部202は、DB206に蓄積されているデータをクラウドサーバ10に転送する。前処理部203は、ルータ30から転送されたデータに対して前処理を行う。実施部204は、クラウドサーバ10から配布された学習済み機械学習モデルによりネットワークオペレーションタスク(本実施形態では異常検知タスク)を実施する。監視部205は、通信ネットワークの各種情報(例えば、帯域等)を監視及び測定する。DB206は前処理後のデータを蓄積する。
【0016】
更に、本実施形態に係るルータ30は、機能部として、収集部301と、転送部302と、監視部303とを有する。収集部301は、当該ルータ30宛のデータを収集する。転送部302は、クラウドサーバ10から送信されたパラメータに従って、データをクラウドサーバ10又はエッジサーバ20に転送する。監視部303は、通信ネットワークの各種情報(例えば、帯域等)を監視及び測定する。
【0017】
<異常検知タスクの処理速度及び精度を最適化する負荷分散の定式化>
本実施形態では、異常検知タスクの処理速度及び精度を最適化するために、クラウドサーバ10の前処理部103とエッジサーバ20の前処理部203とに対してどのように負荷分散を行うかという問題を定式化する。そこで、以降では、処理速度及び機械学習モデルの精度推定の理論式の算出方法とそれらを用いた負荷分散方式の決定方法について説明する。なお、処理速度に関する箇所と機械学習モデルの精度推定に関する箇所における記号の使用はそれぞれ独立であるものとし、記号間に関連がある場合のみその都度説明するものとする。
【0018】
本実施形態では、ネットワークオペレーションタスクとして異常検知タスクを想定しているため、生データとしてNetFlowを想定してモデル化(定式化)を行った。モデル化においては、上記の非特許文献1や参考文献1「新熊亮一, 林田尚之, 池田泰弘, 田尻兼悟, 川原亮一, "リアルタイム予測情報配信のためのエッジ-クラウド連携システムのモデル化の検討," 信学技報, vol. 117, no. 390, MoNA2017-44, pp. 19-23, 2018年1月.」に基づいて、本実施形態で想定するNetFlowデータを対象にしたモデル化を行う。以降では、ルータ30にてサンプリングされた個々のフロー情報のことを「NetFlowフロー」又は単に「フロー」と呼び、それら複数のフロー情報をまとめて一つのパケットとしたものを「NetFlowデータ」又は「NetFlowデータパケット」と呼ぶことにする。
【0019】
NetFlowは各ルータ30の監視部303で測定される。また、各ルータ30の転送部302は、予め設定されたパラメータr(負荷分散の比率を表すパラメータr)を用いて、NetFlowデータパケットをクラウドサーバ10又は最寄りのエッジサーバ20に転送(具体的には、比率rでクラウドサーバ10に転送し、比率1-rで最寄りのエッジサーバ20に転送)する。そして、クラウドサーバ10では、ルータ30から転送されたNetFlowデータパケットの前処理が前処理部103により行われ、DB108に蓄積される。一方で、エッジサーバ20でも、ルータ30から転送されたNetFlowデータパケットの前処理が前処理部203により行われ、DB206に蓄積される。なお、DB206に蓄積されている前処理後のNetFlowデータパケット(以下、単に「前処理後データ」ともいう。)は転送部202により定期的又はリアルタイムにクラウドサーバ10に転送され、クラウドサーバ10のDB108に蓄積される。
【0020】
また、前処理とはNetFlowデータパケットから機械学習に用いられる特徴ベクトルを生成する処理のことであり、クラウドサーバ10及び各エッジサーバ20は特徴ベクトルを生成するための共通のテンプレートを保持しているものとする。つまり、本実施形態における前処理後データは、1又は複数のNetFlowデータパケットから生成された特徴ベクトルのことである。なお、特徴ベクトルは、例えば、NetFlowデータパケットのsrcIP(送信元IPアドレス)毎に定義されることを想定する。
【0021】
≪処理速度の算出≫
クラウドサーバ10の実施部104と各エッジサーバ20の実施部204による異常検知は、前処理部103又は前処理部203によって特徴ベクトルが生成される毎に実施されるものとする。この場合、ある時刻を基準としてその時刻のトラヒック情報を含むNetFlowデータパケットで異常検知を実施するまでに要する時間は、(1)NetFlowデータパケットの転送に要する時間、(2)前処理に要する時間、(3)学習済み機械学習モデルによる異常検知に要する時間、の総和で計算される。
【0022】
クラウドサーバ10では後述する制約付き最適化問題を計算部107により解くことでパラメータp及びrを算出し、このパラメータp及びrを転送部102により各ルータ30に転送する。そして、各ルータ30ではパラメータp(後述するパケットサンプリングレート)に応じてNetFlowデータパケットを収集部301により生成した後、パラメータrに応じて、転送部302により比率rでクラウドサーバ10にNetFlowデータパケットを転送し、比率1-rで最寄りのエッジサーバ20にNetFlowデータパケットを転送する。
【0023】
iを各ルータ30のインデックスとして、λN
iをルータiでのNetFlowフロー発生率[/s]とする。
【0024】
【数1】
である。ここで、pはNetFlowにおけるパケットサンプリングレート、q
jは元のフロー(つまり、サンプリング対象のフロー)においてフロー当たりのパケット数がjである確率、λ
O
iはルータiでの元のフローの発生率[/s]である。なお、上記の数1では、元のフローにおけるフロー当たりのパケット数jの上限としては無限大まで考慮すればよい。
【0025】
また、sNをNetFlowデータパケットのサイズ[bytes]、λiをルータiでのNetFlowデータパケット発生率[/s]、λc
iをルータiでのNetFlowデータパケットのうち、クラウドサーバ10に転送されるNetFlowデータパケットの発生率[/s]、λe
iをルータiでのNetFlowデータパケットのうち、最寄りのエッジサーバ20に転送されるNetFlowデータパケットの発生率[/s]とする。
【0026】
参考文献2「NetFlowおよびNetFlow データ エクスポートの設定,インターネット<URL:https://www.cisco.com/c/ja_jp/td/docs/cian/ios/ios15-2m-t/cg/001/nf-15-2mt/cfg-nflow-data-expt.pdf>」に記載されているように、NetFlowでは複数のフロー情報をまとめて一つのUDPパケットにしてexportされる。また、NetFlow version 5を仮定した場合、参考文献3「NetFlowバージョン5のフィールドとバイト数 NetFlow Analyzer ナレッジベース,インターネット<URL:https://www.manageengine.jp/support/kb/NetFlow_Analyzer/?p=1862>」に記載されているように、NetFlowデータパケットのヘッダサイズ23[bytes]+NetFlowフロー当たりのレコード47[bytes]×30[個]=1433[bytes]である。これに対して、UDPヘッダ、IPヘッダ、イーサネットヘッダのヘッダサイズの合計8+20+18=46[bytes]を加算した1479[bytes]がsNとなる。このUDPパケットが一つのNetFlowデータパケットに対応する。また、NetFlowデータパケットの発生率λiは、λi=λN
i/30となる。更に、ルータiにおけるNetFlowデータパケットのうち、クラウドサーバ10に転送されるNetFlowデータパケットの発生率はλc
i=rλi、最寄りのエッジサーバ20に転送されるNetFlowデータパケットの発生率はλe
i=(1-r)λiとなる。
【0027】
ルータiから最寄りのエッジサーバ20までの経路上にあるリンクの集合をLe
i、ルータiからクラウドサーバ10までの経路上にあるリンクの集合をLc
iとする。各データ転送にかかるエンドエンドでの転送遅延はエンドエンドでの伝搬遅延時間と経路上の各リンクでのキューイング遅延時間との和で決まる。本実施形態では、一例として、簡単のためM/M/1の待ち行列モデルを仮定し、各リンクkでのキューイングによる平均遅延時間Tkを以下の式で算出する。
【0028】
【0029】
【0030】
【数4】
はリンクkのNetFlowデータ利用可能帯域[bps]とする(以下、明細書のテキスト中では、C
kの頭上にバー「-」を付与した記号を「
-C
k」とも表記する。)。つまり、リンクkのリンク容量C
kから前処理後データのデータ転送に使用する帯域分(及びその他の背景トラヒック分)を引いたものを
-C
kとする。より詳細な定義については後述する。したがって、本実施形態はその利用可能帯域でNetFlowデータパケットの転送を制御するように帯域制御がなされているものとする。なお、本実施形態では、その他の背景トラヒックはないものと仮定する。
【0031】
最も簡単な例としては、NetFlowデータパケット毎に特徴ベクトルが生成され、その生成時間が無視できる場合(つまり、上記の(2)の前処理に要する時間が無視できる場合)、NetFlowデータパケットが発生してから異常検知を行うまでに要する時間は、上記のリンクkでのキューイングによる平均遅延時間Tk(と伝搬遅延時間dk)をルータiから最寄りのエッジサーバ20まで加算することで得られるエンドエンド転送遅延Ttrと、当該エッジサーバ20で学習済み機械学習モデルにより異常検知を行うのに要する時間τtestとの和となる。なお、Ttrが上記の(1)のNetFlowデータパケットの転送に要する時間であり、τtestが上記の(3)の学習済み機械学習モデルによる異常検知に要する時間である。τtestの具体的な値(例えば、τtest=1[ms]等)は予め実験等で見積もっておけばよい。なお、ここで、上記の(2)の前処理に要する時間が無視できると仮定したが、無視しない場合には上記の(2)と同様に、予め実験によりその値を見積もっておき、エンドエンド転送遅延Ttrと異常検知時間τtestの和にその値を更に加算すればよい。
【0032】
一方で、複数のNetFlowデータパケットから特徴ベクトルが生成される場合は、最初のNetFlowデータパケットがルータ30から送信された後、特徴ベクトルの生成に必要な個数のNetFlowデータパケットがエッジサーバ20に到着するまでに要する時間と、異常検知時間τtestとの和が、NetFlowデータパケットが発生してから異常検知を行うまでに要する時間となる。
【0033】
ここで、エンドエンド転送遅延Ttrに要求される条件として以下の式(a)に示す制約条件がある。
【0034】
【数5】
ただし、T
*
trは目標転送遅延時間であり、予め設定されるパラメータである。すなわち、上記の式(a)はリアルタイム性の制約条件を表す。なお、エッジサーバ20ではなく、クラウドサーバ10に転送する場合も同様にエンドエンド転送遅延T
trに要求される条件を満たす必要がある。この場合、エンドエンド転送遅延T
trは平均遅延時間T
k(と伝搬遅延時間d
k)をルータiからクラウドサーバ10まで加算することで得られるものである(つまり、上記の数5の第二式のL
e
iをL
c
iに置き換えたものである。)。
【0035】
以上の処理速度の定式化(つまり、上記(1)~(3)の総和の定式化)において操作可能なパラメータはp及びrであり、これらのパラメータp及びrを操作することにより、上記の式(a)の制約条件(つまり、TtrがT*
trを超えないという制約条件)を満たすように制御を行うことになる。
【0036】
ところで、機械学習モデルを学習する際には、学習周期τL(例えば、τL=1[hour]等)を予め設定し、その周期内にエッジサーバj(ただし、jはエッジサーバ20のインデックス)で前処理した前処理後データのデータ量Djを以下の式により算出する。そして、このデータ量Djを用いて、後述する精度推定の式により、機械学習モデルの精度(つまり、異常検知タスクの精度)を計算する。
【0037】
【数6】
ここで、α(<1)は前処理によるデータ圧縮率、S
jはエッジサーバjにNetFlowデータを送信したルータ30のインデックスの集合である。上述したように、τ
Lは学習周期であり、異常検知を行う上でどれくらい最近のデータで学習しておく必要があるかという要件から決まるパラメータである。
【0038】
データ量Djはサンプリングレートpによって調整可能であり、以下の式(b)に示すリンク容量の制約条件を満たすように設定する必要がある。
【0039】
【数7】
ここで、L
c
jはエッジサーバjからクラウドサーバ10までの経路上にあるリンクの集合である。すなわち、上記の式(b)は帯域の制約条件を表す。
【0040】
クラウドサーバ10の学習部106が機械学習モデルを学習する際に利用可能なデータ量Dtotal(以下、「学習用データ量Dtotal」ともいう。)は、各エッジサーバjから転送された前処理後データのデータ量Djと、ルータiから直接転送されたNetFlowデータに対して前処理部103によって前処理を行った後の前処理後データのデータ量との和である。すなわち、
【0041】
【数8】
である。なお、クラウドサーバ10の学習部106によって学習された学習済み機械学習モデルは転送部102により各エッジサーバ20に配布されるが、その配布頻度は低いため、その転送量は無視できるものとする。
【0042】
詳細は機械学習モデルの精度推定の式で示すが、本実施形態における精度推定の式では学習周期τL中に得られる学習用データ量Dtotalと機械学習モデルの精度とが比例する。そのため、負荷分散制御としては、上記の式(a)及び式(b)に示す制約条件の下で、以下の式(c)を満たすパラメータp及びrを探索することになる。
【0043】
【数9】
すなわち、クラウドサーバ10は、上記の式(a)及び式(b)に示す制約条件の下で上記の式(c)に示す最適化問題を計算部107により解くことで、最適なパラメータp及びrを得る。
【0044】
これまで出てきたパラメータのうち、通信ネットワークシステム1の実際の構成(つまり、実際のネットワーク構成や設定等)に依存するパラメータは、q
j、λ
O
i、C
k及びαである。これらは実際に通信ネットワーク上で異常トラヒックを監視する運用を行った際に各ルータ30の監視部303にて帯域等の情報を測定することで決定される。ただし、αはエッジサーバ20でのみ監視可能なため、各エッジサーバ20の監視部205にて決定される。この場合、パラメータq
j、λ
O
i及びC
kが転送部302によりクラウドサーバ10に転送されると共に、パラメータαが転送部202によりクラウドサーバ10に転送される。そして、パラメータq
j、λ
O
i、C
k及びαを用いて、クラウドサーバ10の計算部107にて、上記の式(a)及び式(b)に示す制約条件の下で上記の式(c)に示す最適化問題が解き直され、パラメータp及びrが再決定される。このようなパラメータの調節及び再決定処理の流れについては後述する(
図5)。
【0045】
≪機械学習モデルの精度推定≫
機械学習モデルの精度推定では、PAC学習(Probability Approximately Correct learning)の理論から導出される式を用いる。PAC学習の理論では未知のテストデータに対する学習済み機械学習モデルの推定誤差の期待値(これを汎化誤差という)の上限を、学習用データセットや機械学習モデルの属する関数クラスの大きさ等から算出する。PAC学習では、データセットの特性や機械学習タスク等に応じて様々な汎化誤差の上限に対する理論式が提案されており、どのような式を選ぶのかについて自由度が高い。
【0046】
本実施形態では、異常検知タスクは、時系列依存を持つトラヒックデータ(ただし、本実施形態では更にトラヒックデータの定常性も仮定した)の2クラス分類問題であるという点から、参考文献4「M. Mohri and A. Rostamizadeh, "Rademacher complexity bounds for non-iid processes," NIPS2009.」に記載されている理論式を採用した。
【0047】
2クラス分類を行うための機械学習モデルとしてはカーネルSVMを仮定する。各データ(つまり、学習用データ)xiにはラベルyi∈{-1,+1}が与えられているとする。なお、例えば、yi=-1は異常、yi=+1は正常を表す。
【0048】
この場合、上記の参考文献4では、いくつかの仮定の下で次の汎化誤差の式が示されている。すなわち、ある実数a,β0>0に対してβ(a)≦β0a-rが成り立ち、かつ、グラム行列Kに対してTr[K]≦mR2が成り立つ場合、1-δ以上の確率で任意の仮説集合h∈HKに対して以下の式(d)に示す不等式が成り立つ。
【0049】
【0050】
【0051】
上記の汎化誤差の式の詳細は上記の参考文献4を参照されたいが、以下でいくつかの記号に関して説明を加える。
【0052】
β(a)は以下で定義される数値であり、データの分布に依存する量である。
【0053】
任意の正の整数aに対してβ-mixing定数は以下のように定義される。
【0054】
【数12】
ここで、||・||
TVはtotal variation normであり、
【0055】
【0056】
【0057】
本実施形態では、β(a)の上限を2つのパラメータβ0及びrで操作する。
【0058】
mは学習に用いられるデータ(つまり、学習用データ)の総量であり、仮説集合HKは本実施形態ではカーネルSVMの関数集合、hはその関数集合の中から学習により選ばれた機械学習モデル(関数)を意味する。また、
【0059】
【数15】
は経験誤差と呼ばれる量であり、学習済み機械学習モデルの学習用データに対する識別エラーにより以下のように計算される。
【0060】
【数16】
ここで、ρは経験誤差を操作するパラメータである。
【0061】
また、上記の汎化誤差の式ではm=2μaが成り立っているとされ、
【0062】
【0063】
【0064】
また、グラム行列Kは学習用データ及びカーネルkによって計算される量であり、これをパラメータR及びデータ量mで上界を定める。
【0065】
以上により、上記の式(d)に示す汎化誤差で調節可能なパラメータはr,R,β0,ρ及びδの5つであり、これらを適切に設定して上記の式(d)に示す汎化誤差の上限を計算する。なお、上述したように、処理速度の算出と機械学習モデルの精度推定とで記号の使用は独立であることに留意されたい(したがって、例えば、上記の式(d)に示す汎化誤差で調整可能なパラメータrは、処理速度の算出で説明したパラメータr(負荷分散の比率を表すパラメータr)とは無関係である。)。
【0066】
データ量mが処理速度の算出で述べたDtotalに対応する。また、上記の式(d)の右辺第一項目の経験誤差は実際にデータを用いて計算される量であるため、上記の式(d)に示す汎化誤差の式を、
(汎化誤差)≦(経験誤差)+(第二項目)+(第三項目)
とみなし、第二項目及び第三項目を計算することで機械学習モデルの精度に対する評価を行う。
【0067】
したがって、クラウドサーバ10の計算部107にて、上記の式(c)に示す最適化問題を解くことで得られたDtotalをmに代入して、上記の式(d)の第二項目及び第三項目を計算することで機械学習モデルの精度を推定する。
【0068】
上記のパラメータr,R,β
0,ρ及びδのうちδは上記の式(c)に示す汎化誤差が右辺を超えない確率であり、制約条件のパラメータであるため予め決定しておく。その他のパラメータについては、実際に異常検知を行った場合の精度(実精度)と推定された精度(推定精度)との評価を行い、予め設定された閾値hよりも推定精度-実精度が大きい場合は当該閾値hを下回るようにパラメータr,R,β
0及びρを調節するようにする。このようなパラメータr,R,β
0及びρの調節処理の流れについては後述する(
図6)。
【0069】
<各種処理の流れ>
次に、本実施形態に係る通信ネットワークシステム1が実行する各種処理の流れについて説明する。
【0070】
≪最適負荷分散決定及び精度推定処理≫
まず、実運用開始前に実行される最適負荷分散決定及び精度推定処理の流れについて、
図2を参照しながら説明する。
図2は、実運用開始前の最適負荷分散決定及び精度推定処理の流れの一例を示すフローチャートである。なお、以降では、通信ネットワーク上に各種機能が配置され、
図1に示す通信ネットワークシステム1が実現されているものとする。
【0071】
まず、クラウドサーバ10の計算部107は、各種パラメータのうち、処理速度算出用のパラメータp及びrと精度推定用のパラメータm以外のパラメータを決定(初期化)する(ステップS101)。なお、処理速度算出用のパラメータpはパケットサンプリングレートを表すパラメータpであり、処理速度算出用のパラメータrはNetFlowデータパケットをクラウドサーバ10又は最寄りのエッジサーバ20のいずれに転送するかの比率を表すパラメータrである。
【0072】
次に、クラウドサーバ10の計算部107は、上記の式(a)及び式(b)に示す制約条件下において上記の式(c)に示す最適化問題を計算して、処理速度算出用のパラメータp及びrを決定する(ステップS102)。
【0073】
次に、クラウドサーバ10の転送部102は、上記のステップS102で決定されたパラメータp及びrを各ルータ30に転送する(ステップS103)。これらのパラメータp及びrは各ルータ30に設定される。これにより、各ルータ30では、パラメータpが表すサンプリングレートによりNetFlowフローがサンプリングされると共に、パラメータrが表す比率でNetFlowデータパケットがクラウドサーバ10又は最寄りのエッジサーバ20のいずれかに転送される。
【0074】
次に、クラウドサーバ10の計算部107は、上記のステップS102で計算されたデータ量Dtotalを用いて、上記の式(d)の第二項目及び第三項目を計算して機械学習モデルの精度を推定する(ステップS104)。
【0075】
≪異常検知実施処理≫
次に、実運用後に実行される異常検知実施処理の流れについて、
図3を参照しながら説明する。
図3は、実運用後の異常検知実施処理の流れの一例を示すフローチャートである。なお、以降では、クラウドサーバ10の学習部106によって異常検知タスクを実現する機械学習モデルが学習され、各エッジサーバ20に配布済みであるものとする。
【0076】
ルータ30の収集部301は、クラウドサーバ10から転送されたパラメータp(つまり、サンプリングレートを表すパラメータp)に基づいて、NetFlowデータパケットを生成する(ステップS201)。
【0077】
次に、ルータ30の転送部302は、クラウドサーバ10から転送されたパラメータr(つまり、クラウドサーバ10又は最寄りのエッジサーバ20のいずれに転送するかの比率を表すパラメータr)に応じて、上記のステップS201で生成されたNetFlowデータパケットをクラウドサーバ10又は最寄りのエッジサーバ20に転送する(ステップS202)。上述したように、転送部302は、比率rでクラウドサーバ10に、比率1-rで最寄りのエッジサーバ20にNetFlowデータパケットを転送すればよい。
【0078】
次に、上記のステップS202で転送されたNetFlowデータパケットを受信したクラウドサーバ10の前処理部103又はエッジサーバ20の前処理部203は、当該NetFlowデータパケットに対して前処理を行って前処理後データを生成する(ステップS203)。
【0079】
そして、クラウドサーバ10の実施部104又はエッジサーバ20の実施部204は、上記のステップS203で生成された前処理後データを用いて、学習済み機械学習モデルにより異常検知を行う(ステップS204)。
【0080】
≪異常検知モデル構築処理≫
次に、実運用後に実行される異常検知モデル(つまり、異常検知タスクを実現する学習済み機械学習モデル)の構築処理の流れについて、
図4を参照しながら説明する。
図4は、実運用後の異常検知モデル構築処理の流れの一例を示すフローチャートである。なお、上述したように、
図4に示す異常検知モデル構築処理は、学習周期τ
L毎に繰り返し実行される。
【0081】
各エッジサーバ20の転送部202は、DB206に蓄積されている前処理後データをクラウドサーバ10に転送する(ステップS301)。
【0082】
次に、クラウドサーバ10の学習部106は、DB108に蓄積されている前処理後データと、上記のステップS301で各エッジサーバ20から転送された前処理後データとを用いて、機械学習モデルを学習する(ステップS302)。
【0083】
そして、クラウドサーバ10の転送部102は、上記のステップS302で学習された学習済み機械学習モデル(異常検知モデル)を各エッジサーバ20に再配布する(ステップS303)。
【0084】
≪処理速度算出用のパラメータ調節処理≫
次に、実運用後に、処理速度算出用のパラメータq
j、λ
O
i、C
k及びαを調節して、処理速度算出用のパラメータp及びrを再決定する処理の流れについて、
図5を参照しながら説明する。
図5は、実運用後の処理速度算出用のパラメータ調節処理の流れの一例を示すフローチャートである。
【0085】
各ルータ30の監視部303は、帯域等の情報を測定することで処理速度算出用のパラメータqj、λO
i及びCkを決定する(ステップS401)。
【0086】
次に、各ルータ30の転送部302は、上記のステップS401で決定したパラメータqj、λO
i及びCkをクラウドサーバ10に転送する(ステップS402)。
【0087】
また、各エッジサーバ20の監視部205は、前処理部203による前処理のデータ圧縮率を測定することで処理速度算出用のパラメータαを計算する(ステップS403)。
【0088】
次に、各エッジサーバ20の転送部202は、上記のステップS403で計算したパラメータαをクラウドサーバ10に転送する(ステップS404)
続いて、クラウドサーバ10の計算部107は、上記のステップS402で各ルータ30から転送されたパラメータqj、λO
i及びCkと、上記のステップS404で各エッジサーバ20から転送されたパラメータαとを用いて、上記の式(a)及び式(b)に示す制約条件下において上記の式(c)に示す最適化問題を計算して、処理速度算出用のパラメータp及びrを再決定する(ステップS405)。
【0089】
次に、クラウドサーバ10の転送部102は、上記のステップS405で再決定されたパラメータp及びrを各ルータ30に転送する(ステップS406)。これらのパラメータp及びrは各ルータ30に再設定される。これにより、各ルータ30では、パラメータpが表すサンプリングレートによりNetFlowフローがサンプリングされると共に、パラメータrが表す比率でNetFlowデータパケットがクラウドサーバ10又は最寄りのエッジサーバ20のいずれかに転送される。
【0090】
次に、クラウドサーバ10の計算部107は、上記のステップS405で再計算されたデータ量Dtotalを用いて、上記の式(d)の第二項目及び第三項目を計算して機械学習モデルの精度を推定する(ステップS407)。
【0091】
≪精度推定用のパラメータ調節処理≫
次に、実運用後に、精度推定用のパラメータr,R,β
0及びρを調節する処理の流れについて、
図6を参照しながら説明する。
図6は、実運用後の精度推定用のパラメータ調節処理の流れの一例を示すフローチャートである。なお、上述したように、処理速度の算出と機械学習モデルの精度推定とで記号の使用は独立であり、精度推定用のパラメータrと速度算出用のパラメータr(負荷分散の比率を表すパラメータr)とは無関係である。
【0092】
各エッジサーバ20の転送部202は、実施部204による異常検知結果をクラウドサーバ10に送信する(ステップS501)。
【0093】
クラウドサーバ10の計算部107は、上記のステップS501で各エッジサーバ20から転送された異常検知結果と、これらの異常検知結果に対するオペレータのフィードバックとを用いて、学習済み機械学習モデルの実際の精度(実精度)を計算する(ステップS502)。なお、オペレータのフィードバックとは、例えば、各エッジサーバ20における異常検知結果が正しいか否かを示す情報のことである。
【0094】
次に、クラウドサーバ10の計算部107は、学習済み機械学習モデルの推定精度-実精度が、予め設定された閾値hよりも大きいか否かを判定する(ステップS503)。
【0095】
ステップS503で推定精度-実精度が閾値hよりも大きいと判定された場合、クラウドサーバ10の計算部107は、上記の式(d)の第二項目+第三項目が実精度に近くなるようにパラメータr,R,β0及びρを調節し(ステップS504)、ステップS503に戻る。これにより、推定精度-実精度が閾値h以下となるまで、パラメータr,R,β0及びρの値が調節される。
【0096】
一方で、ステップS503で推定精度-実精度が閾値h以下であると判定された場合、クラウドサーバ10の計算部107は、現在のパラメータr,R,β0及びρを設定する(ステップS505)。これにより、以降では、これらのパラメータr,R,β0及びρを用いて異常検知が実施される。
【0097】
以上のように、本実施形態に係る通信ネットワークシステム1では、リアルタイム性の制約条件を定義するための目標転送遅延時間T*
trと、帯域の制約条件を定義するためのNetFlowデータ利用可能帯域-Ckとが与えられる場合、最適な負荷分散の比率を表すパラメータrとサンプリングレートを表すパラメータpとを決定し、この決定の際に得られたデータ量Dtotalを利用して機械学習モデルの精度(汎化誤差)を評価する。特に、データの前処理をクラウドサーバ10に集中する場合(すなわち、r=1.0)と比較することで、例えば、学習に用いることができるデータ量やそれに付随する精度の際を定量的に評価することが可能になる。
【0098】
ここで、
図7に、ルータiで生成されたNetFlowデータパケットをクラウドサーバ10又はエッジサーバjに送信し、このクラウドサーバ10又はエッジサーバjで前処理及び異常検知を行って、前処理後データを学習用データとしてクラウドサーバ10に集めるという一連の動作の時間的な関係性を示す。
図7では、前処理に要する時間は無視できるものとして、上記の(1)~(4)の合計時間を総検知時間としている。
【0099】
<実験結果>
次に、本実施形態に係る通信ネットワークシステム1をシミュレーションにより実験した結果について説明する。
【0100】
本実験では、参考文献5「荒川伸一, 坂野寿和, 築島幸男, 長谷川浩, 釣谷剛宏, 廣田悠介, 戸出英樹, "日本の地域特性を考慮したフォトニックネットワークモデルの検討," 信学技報, PN2013-1, 2013年6月」に記載されているJapan Photonic Network 25 (JPN25)及びJapan Photonic Network 12 (JPN12)で表されるネットワークトポロジーを用いた。具体的には、JPN25の25ノードをルータ30とし、各ルータ30にてNetFlowフローのサンプリングを行うものとした。また、JPN12の12ノードのうち、Tokyoを表すノードをクラウドサーバ10とし、残り11ノード(Sapporo, Sendai, Hachioji, Kanazawa, Nagano, Nagoya, Osaka, Hiroshima, Matsuyama, Hakata, Naha)をエッジサーバ20とした。各リンク容量は100[Mbps]、各ルータ30でのNetFlowデータ量はそのルータ30に対応するノードが表す都市の人口比見合いとした。具体的には、人口を105で割った商をそのルータ30での(サンプリング前の)NetFlowデータ量[Mbps]とした。また、ノード間をつなぐ各リンクでの伝搬遅延はそのノード間の距離に応じて1000[km]当たり5[ms]として与えた。NetFlowデータパケットのサイズをsN=1479[bytes]とした。なお、経路は距離をメトリックとした最短経路とした。
【0101】
また、ルータ30がエッジサーバ20にNetFlowデータを転送する際にはそのルータ30から最近傍にエッジサーバ20に転送することとした。なお、最近傍がTokyoの場合(つまり、クラウドサーバ10の場合)には負荷分散の比率を表すパラメータrの値に依らず、全てのデータがTokyoに転送されるものとした。更に、目標転送遅延時間T*
trは、T*
tr=20[ms]と設定した。
【0102】
また、NetFlowデータに対する前処理の圧縮率α=0.02とした。この圧縮率は次のように見積もった。すなわち、前処理ではNetFlowデータのsrcIP毎に4次元特徴ベクトルを生成するものとし、この4次元特徴ベクトルの各要素はdstPort数/フロー数等でいずれも0から1の値を取るものとする。srcIPで32[bits]必要となり、4次元特徴ベクトルの各要素を例えば212=4096通りで表現するとすれば、4×12=48[bits]必要となる。よって、各srcIP毎に、32+48=80[bits](=10[bytes])要する。このため、例えば、1000フロー(つまり、33.3個のNetFlowデータパケット×1パケット当たり30フロー格納)毎に、dstPort数等の集計を行うものとし、srcIP当たりのフロー数を平均的に10本とすると、srcIP数は100となり、全体で100×10=1000[bytes]となる。これにTCP/IPヘッダ40[bytes]とイーサネットヘッダ18[bytes]とを足した1058[bytes]を圧縮後のデータサイズとすると、圧縮率はα=1058/(33.3×1479)=0.0215となる。
【0103】
以上の条件の下、フローサンプリングレートを表すパラメータpf(=Σj(1-(1-p)j)qj)と負荷分散の比率を表すパラメータrとのそれぞれを0.01刻みで変化させてDtotalが最大となるようなpf及びrを計算した。その結果、pf=0.71及びr=0のとき最大となった。ここで、r=0となっているが、最近傍がTokyoであるようなルータ30についてはクラウドサーバ10であるTokyoにNetFlowデータを転送している点に留意されたい。この実験の結果を「エッジクラウド連携」という。
【0104】
また、エッジクラウド連携と比較するために、クラウドサーバ10のみにNetFlowデータが転送される場合(つまり、負荷分散を行わない場合)についても計算した。具体的には、r=1と固定し、pfのみを変化させてDtotalが最大となるpfを計算した。その結果、pf=0.13となった。なお、この実験の結果を「クラウドのみ」という。
【0105】
また、上記の2つの結果のDtotalの比率は、(エッジクラウド連携)/(クラウドのみ)=17.9914/3.2942=5.4615となった。つまり、エッジクラウド連携ではクラウドのみと比較して、5.46倍のデータを学習用データとして利用可能であることを示している。
【0106】
次に、異常検知タスクの精度推定を行った。
【0107】
クラウドのみのDtotalと、負荷分散の比率を表すパラメータr=0でのエッジクラウド連携のDtotalとの比を学習周期τL毎のデータ量比として汎化誤差をシミュレーションした。このとき、全パラメータは固定とし、r=100,R=0.1,ρ=1,δ=0.01,β0=0.1とした。なお、このパラメータr=100は、負荷分散の比率を表すパラメータrと同一記号を用いているが独立であることに留意されたい。
【0108】
以下の表1にクラウドのみの場合とエッジクラウド連携の場合とで上記の式(d)に示す汎化誤差の右辺の第二項目及び第三項目(の和)の計算結果を示す。
【0109】
【表1】
上記の表1に示されるように、学習周期τ
Lに得られるデータ量により数値が変化する
こと、及びエッジクラウド連携の方がクラウドのみよりも汎化誤差の上限である第二項目
及び第三項目が小さく機械学習モデルの精度の向上に繋がっていることがわかる。
【0110】
<ハードウェア構成>
最後に、本実施形態に係るクラウドサーバ10、エッジサーバ20及びルータ30を実現するコンピュータ(例えば、汎用サーバや機器等)のハードウェア構成について、
図8を参照しながら説明する。
図8は、コンピュータのハードウェア構成の一例を示す図である。
【0111】
図8に示すコンピュータ500は、ハードウェアとして、入力装置501と、表示装置502と、外部I/F503と、通信I/F504と、プロセッサ505と、メモリ装置506とを有する。これら各ハードウェアは、それぞれがバス507を介して通信可能に接続されている。
【0112】
入力装置501は、例えば、キーボードやマウス、タッチパネル等である。表示装置502は、例えば、ディスプレイ等である。なお、コンピュータ500は、入力装置501及び表示装置502のうちの少なくとも一方を有していなくてもよい。
【0113】
外部I/F503は、外部装置とのインタフェースである。外部装置には、記録媒体503a等がある。コンピュータ500は、外部I/F503を介して、記録媒体503aの読み取りや書き込み等を行うことができる。なお、記録媒体503aとしては、例えば、CD(Compact Disc)、DVD(Digital Versatile Disc)、SDメモリカード(Secure Digital memory card)、USB(Universal Serial Bus)メモリカード等がある。
【0114】
通信I/F504は、コンピュータ500を通信ネットワークに接続するためのインタフェースである。プロセッサ505は、例えば、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)等の各種演算装置である。メモリ装置506は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ等の各種記憶装置である。
【0115】
本実施形態に係るクラウドサーバ10、エッジサーバ20及びルータ30は、
図8に示すコンピュータ500のハードウェア構成を有することにより、上述した各種処理を実現することができる。なお、
図8に示すコンピュータ500のハードウェア構成は一例であって、コンピュータ500は、他のハードウェア構成を有していてもよい。例えば、コンピュータ500は、複数のプロセッサ505を有していてもよいし、複数のメモリ装置506を有していてもよい。
【0116】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲の記載から逸脱することなく、種々の変形や変更、既知の技術との組み合わせ等が可能である。
【符号の説明】
【0117】
1 通信ネットワークシステム
10 クラウドサーバ
20 エッジサーバ
30 ルータ
101 収集部
102 転送部
103 前処理部
104 実施部
105 監視部
106 学習部
107 計算部
108 DB
201 収集部
202 転送部
203 前処理部
204 実施部
205 監視部
206 DB
301 収集部
302 転送部
303 監視部
500 コンピュータ
501 入力装置
502 表示装置
503a 記録媒体
504 通信I/F
505 プロセッサ
506 メモリ装置
507 バス