(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024027307
(43)【公開日】2024-03-01
(54)【発明の名称】状態表現装置、学習装置、状態表現方法及び状態表現プログラム
(51)【国際特許分類】
G06N 20/00 20190101AFI20240222BHJP
【FI】
G06N20/00
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022129996
(22)【出願日】2022-08-17
(71)【出願人】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100106002
【弁理士】
【氏名又は名称】正林 真之
(74)【代理人】
【識別番号】100120891
【弁理士】
【氏名又は名称】林 一好
(72)【発明者】
【氏名】長谷川 健人
(72)【発明者】
【氏名】披田野 清良
(72)【発明者】
【氏名】福島 和英
(57)【要約】
【課題】ホストの状態を示す効率的な表現を生成できる状態表現装置、学習装置、状態表現方法及び状態表現プログラムを提供すること。
【解決手段】状態表現装置1は、ホストに対応するノードに対して、当該ホストに関する属性の種類をそれぞれホストに対応するノードよりも下位のノード、さらに各属性の値をそれぞれ属性の種類に対応するノードよりも下位のノードとした木構造を構成し、各ノードに対して、属性の種類又は属性の値を示す符号化データを付与する木構造生成部11と、木構造及び符号化データを入力とするエンコード関数により、ホストの状態を示す表現として、所定の次元数のベクトルを生成するエンコード部12と、を備え、エンコード関数は、表現学習アルゴリズムにより、木構造及び符号化データの類似性が反映された表現を出力するように学習される。
【選択図】
図1
【特許請求の範囲】
【請求項1】
ホストに対応するノードに対して、当該ホストに関する属性の種類をそれぞれ前記ホストに対応するノードよりも下位のノード、さらに各属性の値をそれぞれ前記属性の種類に対応するノードよりも下位のノードとした木構造を構成し、各ノードに対して、前記属性の種類又は前記属性の値を示す符号化データを付与する木構造生成部と、
前記木構造及び前記符号化データを入力とするエンコード関数により、前記ホストの状態を示す表現として、所定の次元数のベクトルを生成するエンコード部と、を備え、
前記エンコード関数は、表現学習アルゴリズムにより、前記木構造及び前記符号化データの類似性が反映された表現を出力するように学習される状態表現装置。
【請求項2】
前記木構造生成部は、前記属性の種類、又は前記属性の値を、親子関係に細分化して前記木構造を構成する請求項1に記載の状態表現装置。
【請求項3】
前記表現学習アルゴリズムは、教師なし対照学習である請求項1又は請求項2に記載の状態表現装置。
【請求項4】
前記符号化データは、実数値又は実数ベクトルであり、前記表現は、実数ベクトルである請求項1又は請求項2に記載の状態表現装置。
【請求項5】
ホストに対応するノードに対して、当該ホストに関する属性の種類をそれぞれ前記ホストに対応するノードよりも下位のノード、さらに各属性の値をそれぞれ前記属性の種類に対応するノードよりも下位のノードとした木構造をランダムに複数構成し、各ノードに対して、前記属性の種類又は前記属性の値を示す符号化データを付与する木構造生成部と、
前記木構造及び前記符号化データを入力とするエンコード関数により、前記ホストの状態を示す表現として、所定の次元数のベクトルを生成するエンコード部と、
表現学習アルゴリズムにより、前記エンコード関数を、前記木構造及び前記符号化データの類似性が反映された表現を出力するように学習する学習部と、を備える学習装置。
【請求項6】
ホストに対応するノードに対して、当該ホストに関する属性の種類をそれぞれ前記ホストに対応するノードよりも下位のノード、さらに各属性の値をそれぞれ前記属性の種類に対応するノードよりも下位のノードとした木構造を構成し、各ノードに対して、前記属性の種類又は前記属性の値を示す符号化データを付与する木構造生成部ステップと、
前記木構造及び前記符号化データを入力とするエンコード関数により、前記ホストの状態を示す表現として、所定の次元数のベクトルを生成するエンコードステップと、をコンピュータが実行し、
前記エンコード関数は、表現学習アルゴリズムにより、前記木構造及び前記符号化データの類似性が反映された表現を出力するように学習される状態表現方法。
【請求項7】
請求項1又は請求項2に記載の状態表現装置としてコンピュータを機能させるための状態表現プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、機械学習の入力データとして、ネットワークシステムの状態を示す表現を得るための装置、方法及びプログラムに関する。
【背景技術】
【0002】
従来、強化学習等の機械学習技術を用いることで、ネットワークシステムの管理を効率化する試みがなされている。例えば、非特許文献1では、強化学習を用いてネットワークシステムにおける脆弱性検査を自動化する技術が提案されている。
【0003】
強化学習等の機械学習技術でネットワークシステムを取り扱うためには、ネットワークシステムの状態を、ベクトル又は行列のように機械学習アルゴリズムに入力できる形式で表現する必要がある。具体的には、ネットワークのトポロジ、及びネットワークシステムに接続されたホストの性質として、ネットワークのサブネット、アドレス、デバイスの種類、搭載するサービス又はアプリケーション等を、ベクトル又は行列の形式で表現する必要がある。
【0004】
従来手法では、まず、ネットワークに接続されたホストの性質が属性及び値の2つ組(タプル)として整理され、次に、各属性の中でそれぞれの値に対して固有の符号が対応づけられる。例えば、属性であるポート番号の取り得る値が22,80,3389の3種類とすると、その3種類を[1,0,0],[0,1,0],[0,0,1]のようにベクトル形式の符号としてそれぞれ対応づけることができる。最後に、全ての属性から得られるそれぞれの値を示す符号を連結することで、ホストの状態を表現するフラグ形式のデータが構成される(例えば、非特許文献1及び2参照)。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】Z. Hu et al., "Automated penetration testing using deep reinforcement learning," Proc. EuroS&P Workshops, 2020.
【非特許文献2】R. Maeda et al., "Automating post-exploitation with deep reinforcement learning," Computers & Security, 2021.
【非特許文献3】K. S. Tai et al., "Improved Semantic Representations from Tree-Structured Long Short-Term Memory Networks," Proc. ACL, 2015.
【非特許文献4】Z. Zhang et al., "Deep Learning on Graphs: A Survey," IEEE Transactions on Knowledge and Data Engineering, 2020.
【非特許文献5】T. Chen et al., "A simple framework for contrastive learning of visual representations," Proc. International Conference on Machine Learning, 2020.
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、従来の手法では、ホストの状態を詳細に表現しようとすると多数の属性を定義する必要があるため、構成されるベクトル又は行列が長大なものになっていた。この結果、機械学習で処理する際により多くのメモリが必要となるのに加えて、強化学習においては状態数が増加し、学習の収束性が悪化していた。また、機械学習モデルを構築した後、ホストの状態表現に新たな属性を加えるためには、次元数を増やした機械学習モデルを再構築して学習し直す必要があった。
これらの問題点から、従来手法では限定的な問題設定しか扱うことができず、実世界のネットワークシステムを扱うことは難しかった。
【0007】
本発明は、ホストの状態を示す効率的な表現を生成できる状態表現装置、学習装置、状態表現方法及び状態表現プログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明に係る状態表現装置は、ホストに対応するノードに対して、当該ホストに関する属性の種類をそれぞれ前記ホストに対応するノードよりも下位のノード、さらに各属性の値をそれぞれ前記属性の種類に対応するノードよりも下位のノードとした木構造を構成し、各ノードに対して、前記属性の種類又は前記属性の値を示す符号化データを付与する木構造生成部と、前記木構造及び前記符号化データを入力とするエンコード関数により、前記ホストの状態を示す表現として、所定の次元数のベクトルを生成するエンコード部と、を備え、前記エンコード関数は、表現学習アルゴリズムにより、前記木構造及び前記符号化データの類似性が反映された表現を出力するように学習される。
【0009】
前記木構造生成部は、前記属性の種類、又は前記属性の値を、親子関係に細分化して前記木構造を構成してもよい。
【0010】
前記表現学習アルゴリズムは、教師なし対照学習であってもよい。
【0011】
前記符号化データは、実数値又は実数ベクトルであり、前記表現は、実数ベクトルであってもよい。
【0012】
本発明に係る学習装置は、ホストに対応するノードに対して、当該ホストに関する属性の種類をそれぞれ前記ホストに対応するノードよりも下位のノード、さらに各属性の値をそれぞれ前記属性の種類に対応するノードよりも下位のノードとした木構造をランダムに複数構成し、各ノードに対して、前記属性の種類又は前記属性の値を示す符号化データを付与する木構造生成部と、前記木構造及び前記符号化データを入力とするエンコード関数により、前記ホストの状態を示す表現として、所定の次元数のベクトルを生成するエンコード部と、表現学習アルゴリズムにより、前記エンコード関数を、前記木構造及び前記符号化データの類似性が反映された表現を出力するように学習する学習部と、を備える。
【0013】
本発明に係る状態表現方法は、ホストに対応するノードに対して、当該ホストに関する属性の種類をそれぞれ前記ホストに対応するノードよりも下位のノード、さらに各属性の値をそれぞれ前記属性の種類に対応するノードよりも下位のノードとした木構造を構成し、各ノードに対して、前記属性の種類又は前記属性の値を示す符号化データを付与する木構造生成部ステップと、前記木構造及び前記符号化データを入力とするエンコード関数により、前記ホストの状態を示す表現として、所定の次元数のベクトルを生成するエンコードステップと、をコンピュータが実行し、前記エンコード関数は、表現学習アルゴリズムにより、前記木構造及び前記符号化データの類似性が反映された表現を出力するように学習される。
【0014】
本発明に係る状態表現プログラムは、前記状態表現装置としてコンピュータを機能させるためのものである。
【発明の効果】
【0015】
本発明によれば、ホストの状態を示す効率的な表現が得られる。
【図面の簡単な説明】
【0016】
【
図1】実施形態における状態表現装置の機能構成を示すブロック図である。
【
図2】実施形態における属性の種類と属性の値との対応関係を表形式で示した図である。
【
図3】実施形態におけるホストの状態を示す木構造を例示する図である。
【
図4】実施形態における状態表現方法の手順を示すフローチャートである。
【発明を実施するための形態】
【0017】
以下、本発明の実施形態の一例について説明する。
本実施形態の状態表現装置は、機械学習モデル等への入力データとして用いるために、ネットワークホストの状態(性質)を示す表現をベクトル形式で生成する装置である。
【0018】
図1は、本実施形態における状態表現装置1の機能構成を示すブロック図である。
状態表現装置1は、制御部10及び記憶部20の他、各種の入出力デバイス及び通信デバイス等を備えた情報処理装置(コンピュータ)である。
【0019】
制御部10は、状態表現装置1の全体を制御する部分であり、記憶部20に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における各機能を実現する。制御部10は、CPUであってよい。
【0020】
記憶部20は、ハードウェア群を状態表現装置1として機能させるための各種プログラム、及び各種データ等の記憶領域であり、ROM、RAM、フラッシュメモリ又はハードディスクドライブ(HDD)等であってよい。
【0021】
制御部10は、木構造生成部11と、エンコード部12と、学習部13とを備える。
状態表現装置1は、これらの機能部により、サンプルのホストの状態を木構造に整理し、これをベクトルへ埋め込むためのエンコード関数を表現学習アルゴリズムにより最適化する学習装置としても機能し、最適化されたエンコード関数により、任意のホストの状態を示す表現を出力する。
なお、学習装置は、状態表現装置1とは独立して設けられてもよく、この場合、学習装置により最適化されたエンコード関数のパラメータが状態表現装置1に提供される。
【0022】
木構造生成部11は、ホストに対応するノードに対して、このホストに関する属性の種類をそれぞれホストに対応するノードよりも下位のノード、さらに各属性の値をそれぞれ属性の種類に対応するノードよりも下位のノードとした木構造を構成し、各ノードに対して、属性の種類又は属性の値を示す符号化データを付与する。なお、符号化データは、実数値又は実数ベクトルであってよい。
このとき、木構造生成部11は、属性の種類、又は属性の値を、親子関係に細分化して木構造を構成してもよい。
【0023】
エンコード部12は、木構造及び符号化データを入力とするエンコード関数により、ホストの状態を示す表現として、所定の次元数のベクトルを生成する。
なお、生成される表現は、実数ベクトルであってよい。
【0024】
学習部13は、ランダムに複数構成された木構造と、各ノードに付与された符号化データとを用いて、表現学習アルゴリズムにより、エンコード関数を、木構造及び符号化データの類似性が反映された表現を出力するように学習する。
表現学習アルゴリズムは、例えば、教師なし対照学習であってよい。
【0025】
[木構造によるホストの状態表現]
本実施形態の木構造は、ノードの集合から構成される。ノードは、(値,子ノードの集合)で表現される。木には、根となるノードが1つ設定される。根以外の全てのノードには、親ノードが必ず1つだけ存在する。すなわち、各ノードの子ノードとして指定されるノードは、他に親ノードを持たない。
【0026】
各ノードの値は、ホストの状態を示すための属性の種類、又は属性の値を示す。
属性の種類とは、例えば、ホスト上で稼働するOS、サービス(アプリケーション)、開放されているポート等、ホストから得られる情報の種類を指す。属性の値とは、例えば、稼働するOSの名称、アプリケーションの名称、開放されているポートの番号等、属性の種類に対して実際にホストに対応する値を指す。
【0027】
図2は、本実施形態における属性の種類と属性の値との対応関係を表形式で示した図である。
ホストから取得される情報に基づいて、例えば、属性の種類「OS」に対して値「Windows(登録商標)」が、属性の種類「Service」に対して複数の値「SSH,RDP,Apache(登録商標)2.4」が対応づけられている。
【0028】
図3は、本実施形態におけるホストの状態を示す木構造を例示する図である。
ホストである「マシンA」を根として、属性の種類「OS」、「Service」、「Port」がそれぞれ子ノードとなっている。
なお、ここでは、ホストに対応するノードを根として例示しているが、これには限られず、例えば、このホストを含むネットワーク内の複数のホストが階層構造で表現されていてもよい。
【0029】
また、属性の種類及び値の双方について、細分化することで階層的に表現できる場合は、該当ノードを分割して複数の階層とすることができる。例えば、アプリケーションAのバージョン番号が2.4であったとき、「アプリケーションA」、「2」(メジャーバージョン)、「4」(マイナーバージョン)のように分割し、「アプリケーションA」から順に親子関係として表現することができる。
【0030】
[木構造のエンコード]
木構造をグラフG=(V,E)とおく。ここで、Vはノードの集合を、Eはエッジの集合を示す。エッジe∈Eはノードのタプルで表現され、ノードu∈Vの子ノードにノードv∈Vが存在するとき、エッジ(u,v)が存在する。
【0031】
行列Xは値の集合を示し、ノードvの値はxv∈Xで示される。このとき、ノードの値が数値又はベクトルで直接表現できない場合は、符号化して数値又はベクトル形式で表される。
なお、符号化の方法は限定されず、ここでは、xvは、実数値又は実数を要素とするベクトルであるとする。
【0032】
グラフGと値の集合Xに基づいて、木構造全体を符号化するエンコード関数を、fEncとおく。木構造に対応する表現をhとおくと、h=fEnc(G,X)となる。
ここで、表現とは、規定の次元数を持つ実数のベクトルである。エンコード関数の具体例としては、再帰型ニューラルネットワークを用いたTree LSTM(例えば、非特許文献3参照)、又はグラフ学習アルゴリズム(例えば、非特許文献4参照)が用いられる。
【0033】
例えば、まず、xvを初期値として、グラフ学習アルゴリズムによってノードvに対応する表現hvを獲得し、次に、読み出し関数fReadoutで全ノードの表現を読み出して集約することで、木構造に対する表現hを獲得することができる。読み出し関数fReadoutの具体例として、ノード毎の表現全体を加算するfReadout({hv|v∈V})=Σv∈Vhvが挙げられる。
【0034】
[表現学習アルゴリズム]
表現学習は、入力データにおける重要な特徴を反映させるような表現を得ることを目的とする。元の入力データXに対してエンコード関数fEncを適用して表現hを得る場合、表現学習では、表現hが入力データXの重要な特徴を含意するようエンコード関数fEncが最適化される。
【0035】
表現学習アルゴリズムの1つとして、教師なし対照学習がある。教師なし対照学習は、ラベルを用いずに、注目するサンプルに対して類似のサンプル及び相違するサンプルとの対比を通じて、注目するサンプルの表現を獲得するためにエンコード関数を最適化するアルゴリズムである。ここで、サンプルとは、ある高次元のベクトル又は行列、あるいは行列形式で表現できない情報を示す。
【0036】
表現学習には、例えば、次のように、非特許文献5の手法が適用できる。
ここでは、ある入力サンプルxk(k∈[N])に対応する表現hを獲得するため、エンコード関数fEncを最適化することを考える。
【0037】
まず、学習部13は、2つのデータ拡張演算t,t’を用いて入力サンプルxkから2つの類似したサンプルx~2k-1,x~2kを生成する。データ拡張演算とは、機械学習において十分な数の訓練データを確保するため、現在有するサンプルと似た新たなサンプルを生成する処理であり、例えば画像では、回転又は拡大、グラフではノード属性の入れ替え等を指す。
【0038】
続いて、エンコード関数fEncにより、h=fEnc(xk)として表現hを得るものとすると、学習部13は、データ拡張演算から得られた2つのサンプルx~2k-1,x~2kに対応する表現h2k-1,h2kを得る。さらに、学習部13は、表現学習のために用いるプロジェクション関数gを用いて、2つの表現h2k-1,h2kに対してz=g(h)として、2つの潜在表現z2k-1,z2kを得る。
【0039】
ここで、潜在表現z
i,z
jの類似度をs
i,j=z
i
Tz
j/(∥z
i∥∥z
j∥)とおく。また、正例に対する損失を、
【数1】
とおく。
学習部13は、エンコード関数f
Enc及びプロジェクション関数gの重みを更新して以下の損失関数を最小化することで、N個の入力サンプルx
kに対応する表現を獲得するためのエンコード関数を最適化する。すなわち、拡張演算により生成された類似したサンプル間では表現の類似度s
2k-1,2kが大きく、他のサンプル間では表現の類似度が小さくなるように、エンコード関数が最適化される。
【数2】
【0040】
図4は、本実施形態における状態表現方法の手順を示すフローチャートである。
ステップS1において、状態表現装置1は、ホストがその状態として取り得る属性の種類及び値を定める。これらの情報は、ユーザからの入力により定義されてよい。あるいは、実環境におけるログの収集結果から抽出されてもよい。
【0041】
ステップS2において、木構造生成部11は、ステップS1で定められた範囲の中からランダムに属性の種類及び値を選択して仮想的なホストとして設定し、この状態を木構造と属性値の集合(G,X)で表現する。木構造生成部11は、これを多数(N個)生成し、データセットDを作成する。
【0042】
ステップS3において、エンコード部12は、エンコード関数fEncを構成し、初期化する。
この後、ステップS4~S5において、学習部13は、表現学習を用いて、エンコード関数fEncの重みを最適化する。
ここでは、教師なし対照学習を用いることとする。
【0043】
ステップS4において、学習部13は、データセットDに含まれるサンプル(Gk,Xk)(k∈[N])それぞれに関して、データ拡張演算t,t’を用いて、(G’2k-1,X’2k-1),(G’2k,X’2k)を生成し、2N個のデータを含むデータセットD’を構成する。
【0044】
ステップS5において、学習部13は、データセットD’とエンコード関数fEncを用いて、教師なし対照学習として前述の損失関数を最小化するように、エンコード関数fEnc及びプロジェクション関数gの重みを最適化する。
【0045】
これにより、エンコード部12は、ステップS6において、任意のサンプル(G,X)を、最適化したエンコード関数fEncに与えることで、h=fEnc(G,X)として表現hを得る。
【0046】
本実施形態によれば、状態表現装置1(学習装置)は、予めホストの状態を木構造により表現し、木構造を所定の次元数のベクトルに変換するエンコード関数について、教師なし対照学習等の表現学習を用いて最適化する。この結果、状態表現装置1は、木構造により表現された任意のホストの状態を、最適化されたエンコード関数に入力することで、このホストの状態を効果的に表すベクトル形式の表現を得る。
すなわち、状態表現装置1は、ホストの状態を、従来よりも少ない一定の次元数で多くの情報を表現することが可能となり、ホストの状態を示す効率的な表現を出力してメモリの増大を抑制できる。
【0047】
また、従来のフラグ形式の表現では、値そのものに意味はなく、例えば相互の類似性は距離等では表されず、数学的には判断できなかった。一方、本実施形態の状態表現装置1は、木構造における階層の情報を表現すると共に、さらに、表現学習アルゴリズムにより木構造及び符号化データの類似性が反映されたベクトルを出力する。
したがって、状態表現装置1は、ホストの状態を示す表現を、数学的にも意味があり、情報量が増えたとしても一定の次元数のベクトルとして出力できる。この結果、例えば、未知の類似ホストに対して数学的に類似した表現が得られるため、このような表現を入力としたセキュリティ判断等の各種の解析において、適切な解析結果を得られることが期待でき、未知の情報への対応が可能となる。
【0048】
また、状態表現装置1は、属性の種類又は属性の値を、親子関係に細分化して木構造を構成することにより、さらに、符号化データとして、実数値又は実数ベクトルを扱うことで、より詳細なホストの情報を、数学的に意味のあるベクトルとして適切に表現することができる。
【0049】
なお、本実施形態により、例えばネットワークシステムの状態を適切にベクトル化して管理を効率化できることから、国連が主導する持続可能な開発目標(SDGs)の目標9「レジリエントなインフラを整備し、持続可能な産業化を推進すると共に、イノベーションの拡大を図る」に貢献することが可能となる。
【0050】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、前述した実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されるものではない。
【0051】
状態表現装置1による状態表現方法及び学習方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置(コンピュータ)にインストールされる。また、これらのプログラムは、CD-ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したWebサービスとしてユーザのコンピュータに提供されてもよい。
【符号の説明】
【0052】
1 状態表現装置(学習装置)
10 制御部
11 木構造生成部
12 エンコード部
13 学習部
20 記憶部