(57)【要約】      （修正有）【課題】複数ノードで構成されるネットワークにおいて、要求される処理精度や処理速度に応じて、データに対する処理を適切に複数ノードに分散させる。【解決手段】データ転送機能を有するノードである転送ノードと、データ処理機能を有するノードである処理ノードと、制御機能を有するノードである制御ノードを有し、機械学習による処理を実行するネットワークにおける前記制御ノードとして機能する制御装置において、各処理ノードの負荷情報に基づいて、各転送ノードの各処理ノードへのデータの転送レートを決定する第１決定手段と、データのグルーピングと処理ノードのグルーピングに基づいて、データを処理する処理ノードを決定する第２決定手段とを備える。【選択図】図４
2019148876.tif 000002
【特許請求の範囲】
【請求項１】
データ転送機能を有するノードである転送ノードと、データ処理機能を有するノードである処理ノードと、制御機能を有するノードである制御ノードを有し、機械学習による処理を実行するネットワークにおける前記制御ノードとして機能する制御装置であって、
各処理ノードの負荷情報に基づいて、各転送ノードの各処理ノードへのデータの転送レートを決定する第１決定手段と、
データのグルーピングと処理ノードのグルーピングに基づいて、データを処理する処理ノードを決定する第２決定手段と
を備えることを特徴とする制御装置。
【請求項２】
前記第１決定手段は、各処理ノードの負荷情報と、転送ノードと処理ノード間の負荷情報とに基づいて、機械学習のためのデータ整形前の生データ転送時間と、処理ノードで実行されるデータ整形の時間との和が最小になるように、前記転送レートを決定する
ことを特徴とする請求項１に記載の制御装置。
【請求項３】
前記第１決定手段は、前記負荷情報として、機械学習による回帰モデルで予測される負荷情報を使用する
ことを特徴とする請求項２に記載の制御装置。
【請求項４】
前記第２決定手段は、処理ノード間の負荷情報と、各処理ノードでの機械学習の処理速度とに基づいて、機械学習の精度が所定の条件を満たすように、機械学習のための整形済みデータの転送時間と機械学習の処理にかかる時間との和が最小になるように、データを処理する処理ノードを決定する
ことを特徴とする請求項１ないし３のうちいずれか１項に記載の制御装置。
【請求項５】
前記第２決定手段は、処理ノード間の負荷情報と、各処理ノードでの機械学習の処理速度とに基づいて、機械学習のための整形済みデータの転送時間と機械学習の処理にかかる時間との和が所定の条件を満たすように、機械学習の精度が最大になるように、データを処理する処理ノードを決定する
ことを特徴とする請求項１ないし３のうちいずれか１項に記載の制御装置。
【請求項６】
前記第１決定手段は、データ転送量に関する制約条件を満足するように前記転送レートを決定する
ことを特徴とする請求項１ないし５のうちいずれか１項に記載の制御装置。
【請求項７】
データ転送機能を有するノードである転送ノードと、データ処理機能を有するノードである処理ノードと、制御機能を有するノードである制御ノードを有し、機械学習による処理を実行するネットワークにおける前記制御ノードとして機能する制御装置が実行するデータ処理制御方法であって
各処理ノードの負荷情報に基づいて、各転送ノードの各処理ノードへのデータの転送レートを決定する第１決定ステップと、
データのグルーピングと処理ノードのグルーピングに基づいて、データを処理する処理ノードを決定する第２決定ステップと
を備えることを特徴とするデータ処理制御方法。
【請求項８】
コンピュータを、請求項１ないし６のうちいずれか１項に記載の制御装置における各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク内外から発生するデータを分析する技術分野に関連するものである。
【背景技術】
【０００２】
IoTにおいては様々な物に組み込まれたセンサから得られる情報がネットワークを通じて通信される。それらを収集し分析し、意味のある情報を抽出することによって新たなアプリケーションの実現が可能となる（非特許文献１）。また一方でIoTにおいてセンサが接続するネットワーク自体もログデータ等多数の情報を出力しており、これを分析することでも新たなアプリケーションが実現しうる。
【０００３】
しかし、多数のセンサがネットワークに接続した場合、それに伴いネットワーク上に膨大なセンサデータが存在することになり、ネットワークの負荷及び膨大なデータを分析するサーバの負荷が課題となる。このような問題を解決するために複数のサーバで分散して処理を行うことで負荷を軽減しようとする研究がなされている。例えば非特許文献２では画像分析において画像からテキストへの前処理をエッジサーバとクラウドサーバで分散する手法を提案している。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Charith Perera, Arkady Zaslavsky, Peter Christen, and Dimitrios Georgakopoulos. "Context aware computing for the internet of things: A survey," Communications Surveys & Tutorials, IEEE, Vol. 16, No. 1, pp. 414-454, 2014.
【非特許文献２】新熊亮一・加藤槙悟・上林将大・池田泰弘・川原亮一・林  孝典 " エッジ-クラウド連携制御のためのシステム設計の研究", 信学技報, vol. 117, no. 71, MoNA2017-2, pp. 29-32, 2017年6月.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、上記の研究では機械学習のテストにおける前処理の負荷分散を議論したのみであり、IoTにおける包括的な負荷軽減を考えるならば、データの前処理、訓練、テストの全ての段階において動的に負荷分散がなされるべきであると考えられる。また、ネットワーク自身も分析対象となるデータを生み出す点において、自分自身も分析対象として扱い、それに応じてオペレーションされることにより強固なIoT基盤が実現すると考えられる。
【０００６】
本発明は上記の点に鑑みてなされたものである、複数ノードで構成されるネットワークにおいて、要求される処理精度や処理速度に応じて、データに対する処理を適切に複数ノードに分散させることを可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
開示の技術によれば、データ転送機能を有するノードである転送ノードと、データ処理機能を有するノードである処理ノードと、制御機能を有するノードである制御ノードを有し、機械学習による処理を実行するネットワークにおける前記制御ノードとして機能する制御装置であって、
各処理ノードの負荷情報に基づいて、各転送ノードの各処理ノードへのデータの転送レートを決定する第１決定手段と、
データのグルーピングと処理ノードのグルーピングに基づいて、データを処理する処理ノードを決定する第２決定手段と
を備えることを特徴とする制御装置が提供される。
【発明の効果】
【０００８】
開示の技術によれば、複数ノードで構成されるネットワークにおいて、要求される処理精度や処理速度に応じて、データに対する処理を適切に複数ノードに分散させることを可能とする技術が提供される。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態におけるシステム構成の例を示す図である。
【図２】制御装置の機能構成の一例を示す図である。
【図３】制御装置のハードウェア構成の一例を示す図である。
【図４】実施例５における動作例を説明するためのフローチャートである。
【図５】実施例６における動作例を説明するためのフローチャートである。
【図６】実施例７における動作例を説明するためのフローチャートである。
【図７】実施例８における動作例を説明するためのフローチャートである。
【図８】効果を説明するためのラダー型ネットワークの構成例を示す図である。
【図９】クラウドエッジ対応による処理速度と精度の関係性を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照して本発明の実施の形態（本実施の形態）を説明する。以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。
【００１１】
以下では、本実施の形態におけるシステム（ネットワーク）構成例を実施例１として説明し、当該システムにおける動作例を実施例２〜９において説明する。なお、実施例１〜９は任意に組み合わせて実施することが可能である。
【００１２】
（実施例１）
＜全体構成＞
本実施の形態におけるシステム（ネットワーク）は、ネットワークの境界に存在するエッジノードと、ネットワーク内部に存在するコアノードから構成される。
【００１３】
当該ネットワークの外部にはセンサデバイスが存在し、エッジノードが当該センサデバイスにより生成されるセンサデータを収集する。また、各エッジノード及び各コアノードのそれぞれからログデータが得られる。本実施の形態では、センサデータ及びログデータの２種類のデータを取り扱う。各ノードは、例えば、データの送受信機能を有するコンピュータ（ルータ等を含む）である。また、当該コンピュータは、仮想マシン（クラウドで提供されるサーバや通信装置等）であってもよい。
【００１４】
ネットワークを構成する各ノードは、データ転送機能を持つノード(以下、転送ノードと称する)、データ処理機能を持つノード(以下、処理ノードと称する)、制御機能を持つノード(以下、制御ノードと称する)の３種類に分類される。ただし、１つのノードが、複数の機能を備えてもよい。図１は、本実施の形態におけるネットワークの構成の一例を示している。
【００１５】
転送ノードは処理ノードにデータを転送する。処理ノードは、当該データに対し、機械学習による分析を行うための数値ベクトル化、正規化等のデータ整形（前処理と称してもよい）を行う。制御ノードは、どの処理ノードにどのデータを処理させるかと、転送ノードがどのノードにどれくらいデータを送るのかを決定する。
【００１６】
より具体的には、外部センサからエッジノードに入力される外部センサデータとしては、例えば、カメラ画像、各センサの感知した温度、圧力等センサに応じた様々なデータがある。
【００１７】
また、ネットワーク内部から生成されるログデータとしては、例えば、NetFlowデータ、MIBデータ、Syslogデータ等がある。
【００１８】
ネットワークにおけるどのノードを、制御ノード、処理ノード、転送ノードのどれにするかについては、例えば、ネットワークトポロジーにおける位置関係やハードの処理能力等に従って決定する。前述したように、１つのノードが複数の機能を持つことも可能である。この決定はハードの交換等がない限りは固定とするが、固定であることに限定されるわけではなく、ノードの機能が変更される場合があってもよい。
【００１９】
＜制御ノードの機能構成＞
図２に、制御ノードの構成例を示す。制御ノードを「制御装置」と称してもよい。図２に示すように、本実施の形態における制御ノードは、入力部１０１、記憶部１０２、モデル計算部１０３、正規化パラメータ管理部１０４、機械学習テスト部１０５、転送比率計算部１０６、機械学習訓練部１０７、出力部１０８を有する。図２に示す構成は、制御ノードが、処理ノードの機能も含む例を示している。各機能部の動作概要は次のとおりである。
【００２０】
入力部１０１は、各ノードから、処理対象データや、制御に用いる情報（負荷情報等）を入力する。記憶部１０２は、予め作成したモデルのパラメータや、処理に使用する各種データを格納する。
【００２１】
モデル計算部１０３は、モデルを用いた計算を実行する正規化パラメータ管理部１０４は、実施例２、５において説明する正規化に係る処理を実行する。機械学習テスト部１０５は、機械学習の訓練で得られたモデルを用いたテストを行う。転送比率計算部１０６は、実施例２、３等において説明する転送レートに係る処理を実行する。機械学習訓練部１０７は、機械学習の訓練を実施し、モデル（パラメータ等）を決定する。出力部１０８は、正規化パラメータ管理部１０４や転送比率計算部１０６等の計算により得られた結果を対象ノードへ送信する等の動作を行う。
【００２２】
＜ハードウェア構成例＞
上述した制御ノード（制御装置）は、例えば、コンピュータに、本実施の形態で説明する処理内容を記述したプログラムを実行させることにより実現可能である。
【００２３】
すなわち、制御ノードは、コンピュータに内蔵されるＣＰＵやメモリ等のハードウェア資源を用いて、制御ノードで実施される処理に対応するプログラムを実行することによって実現することが可能である。上記プログラムは、コンピュータが読み取り可能な記録媒体（可搬メモリ等）に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メール等、ネットワークを通して提供することも可能である。
【００２４】
図３は、本実施の形態における上記コンピュータのハードウェア構成例を示す図である。図３のコンピュータは、それぞれバスＢで相互に接続されているドライブ装置１５０、補助記憶装置１５２、メモリ装置１５３、ＣＰＵ１５４、インターフェース装置１５５、表示装置１５６、及び入力装置１５７等を有する。
【００２５】
当該コンピュータでの処理を実現するプログラムは、例えば、ＣＤ−ＲＯＭ又はメモリカード等の記録媒体１５１によって提供される。プログラムを記憶した記録媒体１５１がドライブ装置１５０にセットされると、プログラムが記録媒体１５１からドライブ装置１５０を介して補助記憶装置１５２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１５１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１５２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００２６】
メモリ装置１５３は、プログラムの起動指示があった場合に、補助記憶装置１５２からプログラムを読み出して格納する。ＣＰＵ１５４は、メモリ装置１５３に格納されたプログラムに従って、制御ノードに係る機能を実現する。インターフェース装置１５５は、ネットワークに接続するためのインターフェースとして用いられる。図２に示した機能構成における入力部１０１と出力部１０８は、当該インターフェース装置１５５により実現することが可能である。
【００２７】
表示装置１５６はプログラムによるＧＵＩ（Graphical User Interface）等を表示する。入力装置１５７はキーボード及びマウス、ボタン、又はタッチパネル等で構成され、様々な操作指示を入力させるために用いられる。なお、制御ノードにおいて入力装置１５７と表示装置１５６を備えないこととしてもよい。
【００２８】
（実施例２）
実施例２では、実施例１で説明した、各機能が各ノードに配置されたネットワークにおいて、制御ノードの転送比率計算部１０６が、各転送ノードで収集されるログデータから得られる現在の負荷状況(CPU使用率、転送量等)等に基づき、データ処理や転送による遅延、転送量の観点から、各転送ノードがどの処理ノードにどのくらいの比率でどのデータを転送するかを制御する。
【００２９】
また、制御ノードの正規化パラメータ管理部１０４は、機械学習において必要となるデータの正規化を行うために、同じ種類のデータが複数の処理ノードに分散した場合において、各処理ノードの持っているデータのうち正規化に必要な情報を集約計算し、再分配する。
【００３０】
より詳細には、制御ノードの入力部１０１を介して転送比率計算部１０６が収集する負荷状況の具体例としては、例えば、各ノードのCPU使用率や、各リンクのスループット、RTT等がある。
【００３１】
また、制御ノードの転送比率計算部１０６が情報を収集する方法としては、例えば、SDN等、ノード及びエッジの負荷状況を直接観測できる基盤において直接収集する方法、topコマンドやpingコマンドでCPU使用率、ネットワーク遅延等を測定する方法、NetFlowやMIB等のログデータから抽出する方法等がある。なお、「エッジ」とは、ノード間のネットワーク部分を示す。
【００３２】
各ノードや各エッジの負荷状況、及びデータ整形方法に基づく転送速度やデータ整形速度は予めモデル化しておき、制御ノードの転送比率計算部１０６は記憶部１０２に当該モデルを保持し、当該モデル及び現在の負荷状況(CPU使用率、転送量等)に基づき、データ処理や転送による遅延、転送量の観点から、各転送ノードがどの処理ノードにどのくらいの比率でどのデータを転送するかを制御する。転送比率計算部１０６は、データ転送及び整形にかかる時間が最短になるようにデータの転送制御を行う。
【００３３】
ここで、機械学習における訓練時の各データの正規化について、例えば(value-最小値)/(最大値-最小値)のように行うとすると、制御ノードの正規化パラメータ管理部１０４は、各処理ノードか持つデータの最小値min_j及び最大値max_jを入力部１０１を介して収集し、これから全体の最小値=min{min_j},最大値= max{max_j}を計算し、当該計算された最小値と最大値を当該データを持つ全処理ノードに再分配する。
【００３４】
一方、テスト時においては、制御ノードの正規化パラメータ管理部１０４は、訓練の際に決定した最小値と最大値を各処理ノードに転送し、各処理ノードはこれを用いて処理を行う。
【００３５】
上述したように、制御ノードは、データ転送及び整形にかかる時間が最短になるようにデータの転送制御を行うが、転送ノードに存在するデータはテスト用に処理ノードに転送された際にも転送ノードにも保持されており、これはテスト終了後に訓練用のデータとして再度用いられる。ただし、機械学習が異常検知である場合は、テストに異常と判断されたデータは学習には用いられない。
【００３６】
実施例２におけるデータ転送制御に係るより具体的な処理内容については実施例５において説明する。
【００３７】
（実施例３）
実施例３では、実施例１におけるネットワーク形状や対象データを前提として、制御ノードの転送比率計算部１０６が、処理ノードから得られる、データ転送時間を含むデータ分析時間、及びデータ分析の精度に基づいて、各転送ノードから得られたデータをグルーピングして機械学習のモデルパラメータを決定し、更に分散学習のために処理ノードをグルーピングし、どの処理ノードグループで訓練を行うかを決定し、当該処理ノードグループにおいて訓練を実施させる。なお、単一処理ノードで訓練を行うことも可能である。
【００３８】
以上の訓練結果を利用して、制御ノードの転送比率計算部１０６は、テストを実行する処理ノードグループを決定し、当該処理ノードグループの処理ノードにテストを行わせる。この際テストを行う処理ノードグループは訓練の時に用いたものと違ってもよい。
【００３９】
より具体的には、初めに、訓練やテストに使用する処理ノードグループ、データのグループ化方法及び学習モデルのパラメータを与えるとどのくらいの処理速度及び精度が出るのかを予めモデル化し、当該モデルを記憶部１０２に格納しておく。そして、転送比率計算部１０６は、当該モデルに従って処理速度、機械学習の精度が与えられた条件を満たすように機械学習のモデルパラメータを制御していく。なお、この制御の中で、モデルを用いた計算は、モデル計算部１０３により行われる。制御の中で、モデルとの乖離が現れた場合、各種パラメータと現在の状態を使ってモデルを更新してもよい。
【００４０】
より詳細な処理ノードの決定方法、データグルーピングの決定方法等については実施例６、７において説明する。
【００４１】
（実施例４）
実施例２においてログデータからノードやエッジの負荷状況を抽出する場合、ログデータを実際に処理する時間が存在し、結果として制御ノードが得るネットワークの負荷状況と現在時刻に時間差が生じることになる。そこで、実施例４では、ログデータを実施例３に基づいて分析し予測を行い、その結果と実施例３で説明したモデルを用いて、制御ノードの転送比率計算部１０６がデータ転送制御を行う。予測の方法については例えば回帰分析等を用いる。
【００４２】
制御方法の詳細については、実施例８で説明する。
【００４３】
（実施例５）
実施例５では、実施例２の詳細例を説明する。実施例５において、各転送ノードには単位時間当たりそれぞれの種類のデータがN_iαだけ入力されるとする。また、訓練に用いるデータの期間をT_s、テストに用いるデータの期間をT_pとする。
【００４４】
また、処理ノードjの状態(CPU使用率等)をx_jとし、ノードijを接続するエッジの状態(ネットワーク負荷状況等)をy_ijとし、これらについて処理ノードの前処理速度P_j及びエッジの転送速度Q_ijがx_i, y_ijの関数としてP_j(x_j, α) [bps]（ここでαはデータの種類を表する。種類としては、NetFlowのデータ、MIBのデータ、センサから得られる温度情報等がある）、Q_ij(y_ij) [bps]のようにモデリングされているとする(i = 1~n: 転送ノード, j=1~m: 処理ノード, i=jは同じノードを表すのでQ_jj = inf.としておく)。ノードijは、処理ノードjにデータを転送する転送ノードiである。
【００４５】
上記モデル（パラメータ等）は、制御ノードの記憶部１０２に格納される。また、データ整形の際、各種類のデータの整形は同時に行うことが可能であるとする。
【００４６】
実施例５における処理手順を図４のフローチャートを参照して説明する。Ｓ１０１において、制御ノードの転送比率計算部１０６は、各処理ノードの状態x_j、及び、各エッジの状態y_ijを収集する。Ｓ１０２において、転送比率計算部１０６は、上述したモデルに基づいて、P_j(x_j, α)とQ_ij(y_ij)を計算する。
【００４７】
Ｓ１０３において、転送比率計算部１０６は、P_j(x_j, α)とQ_ij(y_ij)に基づいて、ネットワーク全体での(生データ転送時間)+(データ整形時間)が最小になるように、各転送ノードの各処理ノードへのデータ転送レートであるデータ整形前転送レートA_ijαを決定する。
【００４８】
A_ijαの決定方法を説明する。訓練の場合はデータの転送が完了した後、処理ノードと制御ノードが連携して正規化パラメータを定めてデータ整形を行うことになるので、データの転送からデータ整形までの時間を最速にするようなA_ijαを決定する式は、
argmin_{A_ijα}(max_{i,j,α}(N_iα*T_s/Q_ij(y_ij))+max_{j,α}((Σ_{i}N_i*T_p)/P_j(x_j,α)))
と表される。転送比率計算部１０６は、当該式に示される最適化問題を解くことで、訓練時のA_ijαを決定する。
【００４９】
テスト時の場合、既に正規化パラメータは用意してあるのでデータの転送から整形までの時間を最速にするA_ijαを決定する式は、
argmin_{A_ijα}(max_{j,α}(z_α/Q_ij(y_ij) + max(max_{i}(A_ijα*(N_αi-z_α)*T_p/Q_ij(y_ij)),Σ_{i}(A_ijα*N_αi*T_p/P_j(x_j,α))))
と表わされる。ここで２項目のmax()の中の1項目はデータの転送速度が処理速度より遅い場合、２項目はデータの処理速度が転送速度より遅い場合を表す。
【００５０】
図４のＳ１０３において、転送比率計算部１０６は、これらの式より訓練時、テスト時それぞれの場合においてA_ijαを決定する。
【００５１】
転送比率計算部１０６で計算されたA_ijαは、出力部１０８から該当の転送ノードに通知される。Ｓ１０４では、当該A_ijαに基づいて、転送ノードから処理ノードへのデータ転送が行われる。
【００５２】
図４のＳ１０５〜Ｓ１１０は、実施例２で説明したデータの正規化に関する処理を示している。
【００５３】
Ｓ１０５における判定が「訓練」の場合、Ｓ１０６において、制御ノードの正規化パラメータ管理部１０４は、各処理ノードか持つ正規化用のデータ（例：前述したデータの最小値min_j及び最大値max_j）を収集する。
【００５４】
Ｓ１０７において、制御ノードの正規化パラメータ管理部１０４は、収集したデータに基づいて、正規化用のデータ（例：前述した最小値=min{min_j},最大値= max{max_j}）を作成し、当該作成された正規化用データを各処理ノードに再分配する。Ｓ１０８において、各処理ノードは、当該正規化用データを用いて機械学習等の処理を行う。
【００５５】
Ｓ１０５における判定が「テスト」の場合、制御ノードの正規化パラメータ管理部１０４は、訓練の際に決定した正規化用データを各処理ノードに転送し（Ｓ１０９）、各処理ノードはこれを用いて処理を行う（Ｓ１１０）。
【００５６】
（実施例６）
次に、実施例６を説明する。実施例６は実施例３の詳細例である。実施例６では、制御ノードの転送比率計算部１０６が、データ処理時間や機械学習の要求精度が予め定めた条件を満たすように、データのグルーピング、及び処理ノードのグルーピングを行う。これらグルーピングに従って、データの再配分がなされる。より詳細には下記のとおりである。
【００５７】
ここでは、前処理を行った処理ノードから機械学習を行う処理ノードに対して転送されるデータのグルーピングをG_dとし、処理ノードのグルーピングをG_nとし、訓練に用いるデータの期間をT_s、テストに用いるデータの期間をT_pとした上で、機械学習の精度をG_d、T_s、T_pを変数とする関数F(G_d, T_s, T_p)として定め、制御ノードの転送比率計算部１０６が、指定された分析精度εに対してF(G_d, T_s, T_p)>εを満たすという条件を満たすように、各処理ノードの機械学習の訓練速度R(x(g_nk), g_dl)、テスト速度R'(x(g_nk), g_dl)、及びQ_jj'(y_jj')に基づき、(整形済みデータのデータ転送時間)+(訓練もしくはテストにかかる時間)を最小にするように、訓練に用いるデータの期間T_s、テストに用いるデータの期間T_p、データ整形後転送レートB_jj'G (jは前処理を行った処理ノードで、j'は機械学習を行う処理ノード)、データのグルーピングG_d、及び処理ノードのグルーピングG_nの最適化を行う。
【００５８】
上記のG_dはデータの種類α_kについてG_d ={g_d1, g_d2,…}= {{α_1, α_2,…},{α_k,…},…}のようにグルーピングを行うことを示す。なお、α_1はデータの種類αの1次元目を意味する。また、モデルグループの中に複数の種類のデータの列が含まれていてもよい。また、処理ノードのグルーピングG_nは、処理ノードjについてG_n = {g_n1, g_n2,…} ={{1,2,…}, {j,…},…}のようにグルーピングを行うことを示す。
【００５９】
また、x_(g_nk)はグループg_nkに含まれるノードjの状態の集合を意味する。なお、G_dは訓練とテストで共通だが、G_nは訓練とテストで異なっていてもよくそれぞれのフェーズで最速になるように決定される。
【００６０】
また、G_dの各要素をどのG_nで処理を行うかを定義する記号としてG={g_1, g_2, …}={(g_d1, g_na), (g_d2,g_nb),….}という表記を定義する。また、B_jj'Gは、処理ノードj'が属するノードグループ内における、前処理を行った処理ノードから機械学習を行う処理ノードへの転送レートを示す。前処理を行った処理ノードjと機械学習を行う処理ノードj'は別のノードグループに属していてもよい。B_jj'Gは、同一ノードグループ内のどのノードにどのくらいデータを送るのかというところに自由度がある。
【００６１】
実施例６の処理手順例を図５のフローチャートを参照して説明する。
【００６２】
Ｓ２０１において、制御ノードの転送比率計算部１０６は、入力部１０１を介して各処理ノードの状態x_j、各エッジの状態y_jj'を収集する。
【００６３】
訓練を行う場合（Ｓ２０２の訓練）、Ｓ２０３に進み、制御ノードの転送比率計算部１０６は、モデルに基づいて、様々なGについて訓練速度R(x(g_nk), g_dl)、及び機械学習の精度F(G_d, T_s, T_p)を計算する。
【００６４】
Ｓ２０４において、制御ノードの転送比率計算部１０６は、R(x(g_nk), g_dl)、Q_jj'(y_jj')、F(G_d, T_s, T_p)に基づいて、F(Gd, Ts, Tp)>εを満たすという条件のもとでτ_sが最小になるようにG、B_jj'G、Tsを決定する。
【００６５】
τ_sは、(整形済みデータのデータ転送時間)+(訓練にかかる時間)であり、
τ_s = max_{j}(B_jj'G*(Σ_{i}(A_ijα*N_αi*T_s))/Qjj')+ max_{G}(Σ_{jj'}(B_jj'G*(Σ_{i}(A_ijα*N_αi*T_s)))/R(x(g_nk), g_dl))
と表わされる。転送比率計算部１０６は、当該最適化問題を解くことにより、G、B_jj'G、Tsを決定する。ここで、α∈g_dl、j'∈g_nkである。
【００６６】
テストを行う場合（Ｓ２０２のテスト）、Ｓ２０５に進み、制御ノードの転送比率計算部１０６は、モデルに基づいて、様々なGについてテスト速度R'(x(g_nk), g_dl)、及び機械学習の精度F(G_d, T_s, T_p)を計算する。
【００６７】
Ｓ２０６において、制御ノードの転送比率計算部１０６は、R'(x(g_nk), g_dl)、Q_jj'(y_jj')、F(G_d, T_s, T_p)に基づいて、F(Gd, Ts, Tp) >εを満たすという条件のもとでτ_pが最小になるようにTp, B_jj'Gを決定する。
【００６８】
τ_pは、(整形済みデータのデータ転送時間)+(テストにかかる時間)であり、
τ_p = max_{j}(B_jj'G*(Σ_{i}(A_ijα*N_αi*T_p))/Qjj')+ max_{G}(Σ_{jj'}( B_jj'G*(Σ_{i}(A_ijα*N_αi*T_p)))/ R'(x(g_nk), g_dl))
と表わされる。転送比率計算部１０６は、当該最適化問題を解くことにより、Tp, B_jj'Gを決定する。
【００６９】
上記の計算により得られた結果は、出力部１０８から対象の各ノードに通知され、各ノードは、計算で得られたパラメータに基づいて処理を行う。
【００７０】
（実施例７）
次に、実施例７を説明する。実施例７も実施例３の詳細例である。実施例７でも制御ノードの転送比率計算部１０６が、データ処理時間や機械学習の要求精度が予め定めた条件を満たすように、データのグルーピング、及び処理ノードのグルーピングを行う。より詳細には下記のとおりである。実施例７は、以下では、主に、実施例６と異なる点を説明する。
【００７１】
実施例６で説明したとおり、処理ノードに前処理後のデータが配置されている場合、((機械学習に用いる処理ノードに転送する時間)+(機械学習処理にかかる時間))は訓練、テストそれぞれでτ_s、τ_pである。
実施例７では、訓練及びテストを行う時間間隔をそれぞれΔ_s、Δ_pとする。Δ_s及びΔ_pはシステムの要件として定められるパラメータである。
【００７２】
そして、転送比率計算部１０６は、min{T_s, (生データの転送時間)+(データ整形時間)+(整形済みデータのデータ転送時間)+(訓練にかかる時間)}<Δ_sを満たすという条件のもとでF(G_d, T_s, T_p)を最大化するようにG, B_jj'G,T_sを決定する。また、転送比率計算部１０６は、min{T_p, (生データの転送時間)+(データ整形時間)+(整形済みデータのデータ転送時間)+(テストにかかる時間)}<Δ_pを満たすという条件のもとでF(G_d, T_s, T_p)を最大化するようにG, B_jj'G,T_pを決定する。
【００７３】
言い換えると、転送比率計算部１０６は、システム要件として要求されるΔ_s, Δ_pに対してmax(τ_s, T_s) < Δ_s, max(τ_p, T_p) < Δ_pを満たすという条件のもとで機械学習の精度 F(G_d, T_s, T_p)を最大化するように、G, T_s, T_p、B_jj'Gを決定する。
【００７４】
実施例７の処理手順例を図６のフローチャートを参照して説明する。
【００７５】
Ｓ３０１において、制御ノードの転送比率計算部１０６は、入力部１０１を介して各処理ノードの状態x_j、各エッジの状態y_jj'を収集する。
【００７６】
訓練を行う場合（Ｓ３０２の訓練）、Ｓ３０３に進み、制御ノードのモデル計算部１０３は、モデルに基づいて、様々なGについて訓練速度R(x(g_nk), g_dl)、及び機械学習の精度F(G_d, T_s, T_p)を計算する。
【００７７】
Ｓ３０４において、制御ノードのモデル計算部１０３は、R(x(g_nk), g_dl)、Q_jj'(y_jj')、F(G_d, T_s, T_p)に基づいて、max{τ_s, T_s}<Δ_sを満たすという条件のもとで、F(G_d, T_s, T_p)が最大になるようにG、B_jj'G、T_sを決定する。
【００７８】
テストを行う場合（Ｓ３０２のテスト）、Ｓ３０５に進み、制御ノードのモデル計算部１０３は、モデルに基づいて、様々なGについてテスト速度R'(x(g_nk), g_dl)、及び機械学習の精度F(G_d, T_s, T_p)を計算する。
【００７９】
Ｓ３０６において、制御ノードの転送比率計算部１０６は、R'(x(g_nk), g_dl)、Q_jj'(y_jj')、F(G_d, T_s, T_p)に基づいて、max{τ_p, Tp}<Δ_pを満たすという条件のもとで、F(G_d, T_s, T_p)が最大になるようにT_p、Bjj'_Gを決定する。
【００８０】
上記の計算により得られた結果は、出力部１０８から対象の各ノードに通知され、各ノードは、計算で得られたパラメータに基づいて処理を行う。
【００８１】
（実施例８）
次に、実施例８を説明する。実施例８は実施例４の詳細例である。実施例８では、処理ノードにおける機械学習として回帰分析が行われているとする。周期Δ_s,Δ_pで各ノードの状態x_j及び各エッジの状態y_ijやy_jj'に対する回帰の訓練とテストを行っている場合において、制御ノードは、ある周期の訓練やテストが始まる前の1周期前に行われたテストの結果で得られた回帰予測値xp_j(t-Δ_p) (各処理ノードの状態)、yp_ij(t-Δ_p), yp_jj'(t-Δ_p)(各エッジの状態)に基づいてA_ijα、G、B_jj'G、T_s、T_pを制御する。ここで、xp_i(t-Δ_p)は、ノードにおける時刻t-Δ_pの状態に基づく時刻tについての予測値を表し、yp_ij(t-Δ_p)及びyp_jj'(t-Δ_p)はエッジにおける時刻t-Δ_pの状態に基づく時刻tについての予測値を表す。
【００８２】
すなわち、実施例８では、制御ノードは、現在時刻tから時刻Δ_pだけ前の処理ノードの状態xp_j(t-Δ_p)及び各エッジの状態yp_ij(t-Δ_p), yp_jj'(t-Δ_p)に対して、転送レートA_ijα及びB_jj'Gが与えられた時のxp_j(t),yp_ij(t)及びyp_jj'(t)、それらに基づくP_j(xp_j(t), α), Q_ij(yp_ij(t)), Q_jj'(yp_jj'(t)), R(x(g_nk(t)), g_dl), R'(x(g_nk(t)), g_dl)を実施例２、３等の手順に従って計算し、データ整形及び転送にかかる時間を最速にするA_ijα及びB_jj'Gを決定する。
【００８３】
図７のフローチャートを参照して、実施例８の処理手順を説明する。Ｓ４０１において、制御ノードの転送比率計算部１０６は、時刻tにおいて時刻t-Δpで行った回帰予測の結果xp_j(t-Δp), yp_ij(t-Δp)を用いて実施例２の処理を実施する。すなわち、転送比率計算部１０６は、A_ijαを決定して、処理ノードに前処理を行わせる。
【００８４】
Ｓ４０２において、制御ノードの転送比率計算部１０６は、時刻tにおいて時刻t-Δpで行った回帰予測の結果xp_j(t-Δp), yp_jj'(t-Δp)を用いて実施例３の処理を実施し、回帰予測によりxp_j(t), yp_jj'(t)を予測する。
【００８５】
Ｓ４０３において、制御ノードの転送比率計算部１０６は、tをt+Δ_Pに更新し、Ｓ４０１からの処理を繰り返す。
【００８６】
（実施例９）
次に、実施例９を説明する。実施例９では、実施例５、６、７において、制御ノードの転送比率計算部１０６が、データ転送レートA_ijα, B_jj'Gを決定する際に、データ転送量に関する制約条件H(A_ijα, B_jj'G)≦θを満足するようなA_ijα及びB_jj'Gを決定する。なお、制約条件は、H1(A_ijα)≦θ1、H2(B_jj'G)≦θ2のように、A_ijα, B_jj'Gのそれぞれについて表わされてもよい。
【００８７】
ここで、H(A_ijα, B_jj'G)は、例えば、転送ノード（あるいは処理ノード）が処理ノードにデータを転送することによる転送量を表す関数であり、一例としては、A_ijα及びB_jj'Gの全ての値についての統計量（総和，平均，最大値等）である。また、当該関数として、A_ijαやB_jj'Gの値だけではなく、ノードiからノードjまでのホップ数も掛け合わせる等、ネットワークに対する負荷を考慮した関数を使用することとしてもよい。
【００８８】
（効果について）
実施例１〜９を用いて説明した本発明に係る技術により、ネットワーク内外から発生する膨大な情報を要求される精度及び速度で分析を行う際に、サンプリングレート及び分析と処理を行うノードを動的に決定し、負荷分散及び要求される精度を実現するモデリングを行うことができる。すなわち、当該技術により、複数ノードでネットワークが構成される系において、要求される精度や処理速度に応じて機械学習を分散させて行うことが可能となる。ここでは、実施例７に従い、データを分散して処理を行う場合に求められる処理速度を保持したまま、どれだけの精度が確保できるのかについて説明する。
【００８９】
ここでは、一例として、図８に示すネットワーク構造を対象とし、実施例２、５で説明した前処理は全てのノードで自身の保有するデータについて行ったものとし、各ノードから発生するMIBデータとSyslogデータを用いた異常検知を行うものとする。また、各ノードで発生したこれらのデータはそれぞれ等しい次元と容量を持っているものとする。
【００９０】
また、機械学習を行う能力を持つノードは、図８に示す最下層（１層目）のエッジノードと最上位のクラウドノード（クラウドサーバと称してもよい）だけであるとし、クラウドノードは単体で機械学習を行い、エッジノードは全体で１つとなって機械学習を行うものとする。
【００９１】
この場合、データのグルーピングについては、（１）クラウドノードに送られたデータ、及び、（２）エッジノードに送られたデータの２つのグループにグルーピングされる。また、各ノードは自身の所有するデータを比率r_jでクラウドノードで処理させ、1-r_jでエッジノードに処理させる。これらの比率はB_jj'Gに対応する。
【００９２】
また、ここでは、ネットワークの各階層ごとに転送レートは一律であるとする。よって、この例では、r_1,r_2,r_3,r_cの４つのレートが存在する。
【００９３】
図８のネットワーク構成において、各階層のリング１つあたりのノード数は、n1=6、n2=6、n3=4である(n1が最下層の１層目、n2が中間層の２層目、n3が最上位層の３層目)。各層間エッジの転送速度をQ12（１層目と２層目との間の転送速度）、Q23（２層目と３層目との間の転送速度）、Q3c（３層目とクラウドサーバとの間の転送速度）とし、各グループの機械学習速度をRe(エッジサーバグループ)、Rc(クラウドサーバ)とする。また、１ノードから発生するMIBやSyslogのデータ量を１とする。
【００９４】
この時、１層目のノードのクラウドノードへのデータ転送速度をt1uとし、２層目のノードのクラウドノードへのデータ転送速度をt2uとし、２層目のノードのエッジグループへのデータ転送速度をt2dとし、３層目のノードのクラウドノードへのデータ転送速度をt3uとし、３層目のノードのエッジグループへのデータ転送速度をt3dとし、２層目のノードのエッジグループへのデータ転送速度をtcdとする。
【００９５】
この場合、実施例６において示したτ_sの第一項はmax{t1u,t2u,t2d,t3u,t3d,tcd}となる。一方で、エッジノードグループとクラウドノードで処理するデータ量をそれぞれde、dcとすると、τ_sの第２項はmax_{エッジorクラウド}{de/Re, dc/Rc}となる。
【００９６】
また、モデルにはできるだけ多くの情報が含まれていた方が様々な次元間の関係性より異常を発見することができ、精度が上がると考えらるので、(精度)=(エッジグループで処理するデータの次元数)^2+(クラウドで処理するデータの次元数)^2/(全データの総次元数)^2として精度を0.5~1の範囲で表すことにする。
【００９７】
転送レート比率をQ12:Q23:Q3c=1:30:50とし、処理レート比率をRe:Rc=10:15としてみると、実施例６の数式に従って転送時間と機械学習時間のそれぞれの最大値を取ったものが総処理時間となる。ここで[r_1,r_2,r_3,r_c]=[1,1,1,1]という全てのデータをクラウドサーバに送る場合を考える。この場合の結果は、図９に示すとおり、(総処理時間)=54.76, (精度)=1となった。
【００９８】
一方で、(総処理時間)<=35を満たすように、精度を最大化するようにレート[r_1,r_2,r_3,r_c]を決定するという問題を解くと、図９に示すとおり、[r_1,r_2,r_3,r_c]=[0,0.2,0.1,0.8]となり、(総処理時間)=35,(精度)=0.93となった。
【００９９】
このように処理を分散させることで精度7%の低下に対し、36%処理速度を削減させることができ、処理速度と精度を双方鑑みて分散方法を決定するという本発明に係る技術の効果が確認された。
【０１００】
（実施例のまとめ）
以上、説明したように、実施例１においては、ネットワーク外から得られるセンサデータと、ネットワーク内で得られるログデータに対してネットワーク上で機械学習による分析を行うために、ネットワーク上のノードに対して、データの処理を担う処理ノード、どの処理ノードがどのデータを処理するかについて制御を行う制御ノード、自身が得たデータを処理させるためにデータを処理ノードに転送する転送ノードの３種の機能を与える。
【０１０１】
実施例２においては、実施例１のネットワーク構成において、制御ノードが、各ノードの負荷状況に基づいて、各転送ノードがどの処理ノードにどのくらいの比率でどのデータを転送するかを制御する。また、機械学習において必要となるデータの正規化を行うために、制御ノードは、各処理ノード上に集約されたデータの統計量を集約計算し、正規化に必要な情報を処理ノードへと再分配を行う。
【０１０２】
実施例３においては、実施例１のネットワーク構成において、制御ノードが、データ処理時間や機械学習の要求精度を目的関数もしくは制約条件として用いることで、転送ノードから収集されたデータをグルーピングし、各グループについて機械学習のモデルを生成する。また、グルーピングされた各モデルをどの処理ノードで訓練させるかについて、処理ノードのグルーピングも行う。また、訓練されたモデルを用いてテストを行う際に、どの処理ノードでテストさせるかについてもグルーピングを行う。この際テストを行う処理ノードグループは訓練の時に用いたものと違ってもよい。
【０１０３】
実施例４においては、実施例１のネットワーク構成で機械学習としてネットワーク負荷情報の回帰を行う場合に、実施例２において、制御ノードに対して入力となる各ノードの負荷状況について、実際に計測した負荷ではなく、実施例３における機械学習によって回帰モデルで予測される負荷を入力とし、データ収集のサンプリングレートや、各データ転送ノードがデータ整形の前後でどの処理ノードにどのくらいの比率でデータを転送するかを制御する。
【０１０４】
実施例５は実施例２の詳細例である。実施例５では、制御ノードは各処理ノードの負荷情報を表すx_j(j: 処理ノードのラベル)及び各エッジの負荷情報を表すy_ij(i: 転送ノードのラベル)に依存する、各処理ノードのデータ整形速度P_j(x_j, α)（ここでαはデータの種類を表す）、各エッジのデータ伝送速度Q_ij(y_ij) に基づきネットワーク全体での(生データ転送時間)+(データ整形時間)を最短にするように各転送ノードの各処理ノードへの整形前後のデータ転送レートA_ijα(データ整形前転送レート)を決定する。
【０１０５】
実施例６は実施例３の詳細例である。実施例６では、訓練に用いるデータの期間をT_s、テストに用いるデータの期間をT_pとした上で、機械学習の精度をG_d, T_s, T_pを変数とする関数F(G_d, T_s, T_p)として表し、指定された分析精度εに対してF(G_d, T_s, T_p)>εを満たすという条件を満たすように各処理ノードの機械学習の訓練速度R(x(g_nk), g_dl)及びテスト速度R'(x(g_nk), g_dl)とQ_jj'(y_jj') に基づき(整形済みデータのデータ転送時間)+(訓練もしくはテストにかかる時間)を最小にするように訓練に用いるデータの期間T_s, テストに用いるデータの期間T_p, データ整形後転送レートB_jj'G (j'は機械学習を行う処理ノード)、データのグルーピングG_d、及び処理ノードのグルーピングG_nの最適化を行う。
【０１０６】
実施例７も実施例３の詳細例である。実施例７では、訓練及びテストを行う時間間隔をそれぞれΔ_s、Δ_pとし、訓練及びテストに要する時間がΔ_s及びΔ_pより小さくなるような制約条件の元で、実施例６における精度F(G_d, T_s, T_p)を最大化する。
【０１０７】
実施例８は、実施例４の詳細例である。実施例８では、周期Δ_s, Δ_pで各ノードの状態x_j及び各エッジの状態y_ij, y_jj'に対する回帰の訓練とテストを行っている場合において、ある周期の訓練やテストが始まる前の1周期前に行われたテストの結果で得られた回帰予測値xp_i(t-Δ_p) (各処理ノードの状態)、yp_ij(t-Δ_p)及びyp_jj'(t-Δ_p) (各エッジの状態)に基づいてA_ijα、G、B_jj'G、T_s、T_pを制御する。
【０１０８】
実施例９は、実施例５、６、７のそれぞれに適用可能な例である。実施例５、６、７において、転送ノードから処理ノードへのデータ転送量をできるだけ抑えるために、制御ノードは、レートA_ijα、B_jj'αに関する制約条件H(A_ijα, B_jj'α)≦θの元でA_ijα, B_jj'Gを決定する。
【０１０９】
上述したとおり、本発明の実施の形態により、データ転送機能を有するノードである転送ノードと、データ処理機能を有するノードである処理ノードと、制御機能を有するノードである制御ノードを有し、機械学習による処理を実行するネットワークにおける前記制御ノードとして機能する制御装置であって、各処理ノードの負荷情報に基づいて、各転送ノードの各処理ノードへのデータの転送レートを決定する第１決定手段と、データのグルーピングと処理ノードのグルーピングに基づいて、データを処理する処理ノードを決定する第２決定手段とを備えることを特徴とする制御装置が提供される。
【０１１０】
転送比率計算部１０６は、第１決定手段及び第２決定手段の例である。
【０１１１】
前記第１決定手段は、各処理ノードの負荷情報と、転送ノードと処理ノード間の負荷情報とに基づいて、機械学習のためのデータ整形前の生データ転送時間と、処理ノードで実行されるデータ整形の時間との和が最小になるように、前記転送レートを決定することとしてもよい。
【０１１２】
前記第１決定手段は、前記負荷情報として、機械学習による回帰モデルで予測される負荷情報を使用することとしてもよい。
【０１１３】
前記第２決定手段は、処理ノード間の負荷情報と、各処理ノードでの機械学習の処理速度とに基づいて、機械学習の精度が所定の条件を満たすように、機械学習のための整形済みデータの転送時間と機械学習の処理にかかる時間との和が最小になるように、データを処理する処理ノードを決定することとしてもよい。
【０１１４】
前記第２決定手段は、処理ノード間の負荷情報と、各処理ノードでの機械学習の処理速度とに基づいて、機械学習のための整形済みデータの転送時間と機械学習の処理にかかる時間との和が所定の条件を満たすように、機械学習の精度が最大になるように、データを処理する処理ノードを決定することとしてもよい。
【０１１５】
前記第１決定手段は、データ転送量に関する制約条件を満足するように前記転送レートを決定することとしてもよい。
【０１１６】
また、本実施の形態により、コンピュータを、上記制御装置における各手段として機能させるためのプログラムが提供される。
【０１１７】
また、本実施の形態により、データ転送機能を有するノードである転送ノードと、データ処理機能を有するノードである処理ノードと、制御機能を有するノードである制御ノードを有し、機械学習による処理を実行するネットワークにおける前記制御ノードとして機能する制御装置が実行するデータ処理制御方法であって各処理ノードの負荷情報に基づいて、各転送ノードの各処理ノードへのデータの転送レートを決定する第１決定ステップと、データのグルーピングと処理ノードのグルーピングに基づいて、データを処理する処理ノードを決定する第２決定ステップとを備えることを特徴とするデータ処理制御方法が提供される。
【０１１８】
以上、本実施の形態について説明したが、本発明はかかる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【０１１９】
１０１  入力部
１０２  記憶部
１０３  モデル計算部
１０４  正規化パラメータ管理部
１０５  機械学習テスト部
１０６  転送比率計算部
１０７  機械学習訓練部
１０８  出力部
１５０  ドライブ装置
１５１  記録媒体
１５２  補助記憶装置
１５３  メモリ装置
１５４  ＣＰＵ
１５５  インターフェース装置
１５６  表示装置
１５７  入力装置
【図１】
2019148876.tif 000003
【図２】
2019148876.tif 000004
【図３】
2019148876.tif 000005
【図４】
2019148876.tif 000006
【図５】
2019148876.tif 000007
【図６】
2019148876.tif 000008
【図７】
2019148876.tif 000009
【図８】
2019148876.tif 000010
【図９】
2019148876.tif 000011