(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024162323
(43)【公開日】2024-11-21
(54)【発明の名称】強化学習装置、強化学習方法、および強化学習プログラム
(51)【国際特許分類】
G06N 20/00 20190101AFI20241114BHJP
G06N 3/092 20230101ALI20241114BHJP
【FI】
G06N20/00
G06N3/092
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023077712
(22)【出願日】2023-05-10
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001678
【氏名又は名称】藤央弁理士法人
(72)【発明者】
【氏名】山下 泰穂
(57)【要約】
【課題】行動選択に際してアクターおよびラーナーが採るべきリスクを考慮した分散強化学習を可能にすること。
【解決手段】強化学習装置は、分析対象に適用する行動を行動群から選択する際に採るべき第1リスクに関する第1パラメータの選択範囲を一部の範囲に設定し、価値関数の学習において採るべき第2リスクに関する第2パラメータを設定する設定部と、価値関数と一部の範囲内の第1パラメータとに基づいて行動を選択して分析対象の状態を更新し、更新後の状態が新規な状態であるほど高い報酬を算出するアクターと、報酬と第2パラメータとに基づいて価値関数を更新するラーナーと、複数の第1パラメータの各々が用いられた際に算出された報酬の履歴に基づいて、アクターへの出力対象を、新規な状態に更新させた特定の行動をアクターが選択した際に用いられた特定の第1パラメータに決定する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
分析対象に適用する行動を行動群から選択する際に採るべき第1リスクに関する第1パラメータの選択範囲を前記選択範囲の一部の範囲に設定し、前記行動の選択指針となる価値を算出する価値関数の学習において採るべき第2リスクに関する第2パラメータを設定する設定部と、
前記価値関数と前記一部の範囲内の前記第1パラメータとに基づいて前記行動を選択して、前記分析対象の状態を更新し、更新後の状態が新規な状態であるほど高い報酬を算出するアクターと、
前記報酬と前記第2パラメータとに基づいて前記価値関数を更新するラーナーと、
前記一部の範囲内の複数の前記第1パラメータの各々が用いられた際に前記アクターによって算出された前記報酬の履歴に基づいて、前記アクターへの出力対象となる前記第1パラメータを、前記分析対象を新規な状態に更新させた特定の行動を前記アクターが選択した際に用いられた特定の第1パラメータに決定し、前記アクターに出力する決定部と、
を有することを特徴とする強化学習装置。
【請求項2】
請求項1に記載の強化学習装置であって、
前記決定部は、前記一部の範囲内の複数の前記第1パラメータの各々の前記報酬の履歴ごとに、前記報酬の期待値を算出し、前記第1パラメータの前記報酬の期待値に基づいて、次の行動選択に用いられる前記特定の第1パラメータを決定する、
ことを特徴とする強化学習装置。
【請求項3】
請求項2に記載の強化学習装置であって、
前記決定部は、前記報酬の期待値が最大となる前記一部の範囲内の前記第1パラメータを、前記特定のパラメータに決定する、
ことを特徴とする強化学習装置。
【請求項4】
請求項1に記載の強化学習装置であって、
前記一部の範囲の下限値は、前記選択範囲の下限値であり、前記一部の範囲の上限値は、前記選択範囲の上限値よりも小さい、
ことを特徴とする強化学習装置。
【請求項5】
請求項1に記載の強化学習装置であって、
前記一部の範囲の下限値は、前記選択範囲の下限値よりも大きく、前記一部の範囲の上限値は、前記選択範囲の上限値である、
ことを特徴とする強化学習装置。
【請求項6】
請求項1に記載の強化学習装置であって、
前記ラーナーは、前記第2パラメータと前記価値関数の勾配とに基づいて、前記価値関数の学習パラメータを更新する、
ことを特徴とする強化学習装置。
【請求項7】
請求項1に記載の強化学習装置であって、
前記設定部、前記アクター、前記ラーナー、および、前記決定部を有する複数の実行主体を有し、
前記複数の実行主体の各々の前記アクターは、前記更新後の状態を共有する、
強化学習装置。
【請求項8】
請求項1に記載の強化学習装置であって、
前記設定部、前記アクター、前記ラーナー、および、前記決定部を有する第1実行主体と、
前記設定部、前記アクター、前記ラーナー、および、前記決定部を有し、かつ、前記行動群が前記第1実行主体における前記行動群に対抗する行動を含む第2実行主体と、を有し、
前記第1実行主体および前記第2実行主体の各々の前記アクターは、前記更新後の状態を共有し、
前記第2実行主体の前記アクターは、前記価値関数に基づいて前記行動を選択して、前記分析対象の状態を更新し、更新後の状態が新規な状態であるほど低くなるように前記報酬を算出する、
ことを特徴とする強化学習装置。
【請求項9】
強化学習において行動選択を実行するアクターと、前記強化学習において選択行動の価値を決定するラーナーと、設定部と、決定部と、を有する強化学習装置が実行する強化学習方法であって、
前記設定部が、分析対象に適用する行動を行動群から選択する際に採るべき第1リスクに関する第1パラメータの選択範囲を前記選択範囲の一部の範囲に設定し、前記行動の選択指針となる価値を算出する価値関数の学習において採るべき第2リスクに関する第2パラメータを設定する設定処理と、
前記アクターが、前記価値関数と前記一部の範囲内の前記第1パラメータとに基づいて前記行動を選択して、前記分析対象の状態を更新し、更新後の状態が新規な状態であるほど高い報酬を算出する算出処理と、
前記ラーナーが、前記報酬と前記第2パラメータとに基づいて前記価値関数を更新する更新処理と、
前記決定部が、前記一部の範囲内の複数の前記第1パラメータの各々が用いられた際に前記アクターによって算出された前記報酬の履歴に基づいて、前記アクターへの出力対象となる前記第1パラメータを、前記分析対象を新規な状態に更新させた特定の行動を前記アクターが選択した際に用いられた特定の第1パラメータに決定し、前記アクターに出力する決定処理と、
を実行することを特徴とする強化学習方法。
【請求項10】
強化学習におけるアクターおよびラーナーを制御するプロセッサに、
分析対象に適用する行動を行動群から選択する際に採るべき第1リスクに関する第1パラメータの選択範囲を前記選択範囲の一部の範囲に設定し、前記行動の選択指針となる価値を算出する価値関数の学習において採るべき第2リスクに関する第2パラメータを設定する設定処理と、
前記アクターが、前記価値関数と前記一部の範囲内の前記第1パラメータとに基づいて前記行動を選択して、前記分析対象の状態を更新し、更新後の状態が新規な状態であるほど高い報酬を算出する算出処理と、
前記ラーナーが、前記報酬と前記第2パラメータとに基づいて前記価値関数を更新する更新処理と、
前記一部の範囲内の複数の前記第1パラメータの各々が用いられた際に前記アクターによって算出された前記報酬の履歴に基づいて、前記アクターへの出力対象となる前記第1パラメータを、前記分析対象を新規な状態に更新させた特定の行動を前記アクターが選択した際に用いられた特定の第1パラメータに決定し、前記アクターに出力する決定処理と、
を実行させることを特徴とする強化学習プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、強化学習を実行する強化学習装置、強化学習方法、および強化学習プログラムに関する。
【背景技術】
【0002】
近年発展の著しい強化学習において、特に顕著な進歩が認められるモデルの一つに、好奇心をもつ分散強化学習があげられる(非特許文献1)。分散強化学習は、ある学習環境において、互いに独立して試行を行う多数のアクターと、それらのアクターの経験を集約して、行動から得られる報酬を予測するラーナーと、によって学習が行われる。好奇心をもつ分散強化学習では、このアクターの行動において、好奇心をもたせる、つまり未知の状態へつながるものを選択した場合に大きな報酬を与えることで、より効率的に探索を行うことを可能とした学習モデルである。
【0003】
非特許文献1の分散強化学習を含む通常の強化学習モデルでは、得られる報酬の期待値が上がるように学習はデザインされる。しかし、強化学習を適用する分野によっては、平均的に報酬を上げるより、一度でよいからより高い報酬を得たい、または低い報酬を得る可能性をできるだけ低くしたい、つまりハイリスクハイリターンまたはローリスクローリターンな学習の需要が存在する。
【0004】
特許文献1は、リスクの定量化、ポリシーの検索、および自動化された安全なポリシーの展開手法を開示する。特許文献1のシステムは、展開したポリシーに反して受信したポリシーに関わる傾向があるリスクの定量化に少なくとも一部基づいて、受信したポリシーの展開を制御することを含む動作を実行するように構成された1台以上のコンピューティング装置を含み、制御は、展開したポリシーの展開を記述する展開データ上の強化学習および集中の不均一を使用して、受信したポリシーの性能測定の値を予測し、また予測した値に関して1つ以上の統計的保証を計算することによりリスクを定量化し、展開されたポリシーを、性能の対策の測定した値が展開されたポリシーの性能の対策に少なくとも一部基づく閾値に少なくとも対応している少なくとも信頼レベルを1つ以上の統計的保証が表示するという判断に対応する受信したポリシーに変換することを含むことを特徴とする。
【0005】
特許文献2は、コンピュータ装置を用いて、対象期間の各期の状態それぞれについて、リスクを考慮した最適アクションを決定するための方法を開示する。この方法は、a)今期において取り得る状態の1つを選択するステップと、b)実行可能なアクション候補のうちの1つを選択するステップと、c)選択されたアクション候補のうちの1つを実行したことによって得られる報酬および来期の状態における最適価値に依存する評価値の確率分布を算出するステップと、d)評価値の確率分布を用いて、リスク指標を算出するステップと、e)前記リスク指標を考慮した所定のプリファレンスに従って重み付けを行って、アクション候補が実行された場合の価値指標を算出するステップと、f)未選択のアクション候補について、ステップb)~e)を繰り返すステップと、g)アクション候補のうちの1つを最適アクションとして決定するために、価値指標を比較するステップを含む。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】米国特許公開2016-0148251号
【特許文献2】特開2012-068780号公報
【非特許文献】
【0007】
【非特許文献1】Badia, Adria Puigdomenech, et al. "Agent57: Outperforming the atari human benchmark." International Conference on Machine Learning. PMLR, 2020
【非特許文献2】Mihatsch, O., Neuneier, R. "Risk-Sensitive Reinforcement Learning." Machine Learning 49, 267-290 (2002)
【発明の概要】
【発明が解決しようとする課題】
【0008】
特許文献1および特許文献2は、それぞれの手法で、ある行動を選択した場合のリスクを見積もり、リスクの値によって報酬に重みづけを行うことによってリスクを考慮して学習を行う技術である。特許文献1および特許文献2の手法はリスクが大きいときに学習を抑制するが、高いリスクを課してより高い報酬を狙う学習はできない。また、好奇心をもつ分散強化学習における好奇心を決定するアルゴリズムにおいてリスクを考慮して学習を行う手法については述べられていない。
【0009】
非特許文献2は、アクターの各行動をもってラーナーが報酬予測モデルを学習する際に、その行動が現行の予測モデルの予測する報酬よりも高い報酬を得た行動の場合はκ%学習率を下げ、低い報酬を得た行動の場合はκ%学習率を上げることを提案している。κが正の場合は低い報酬になってしまった場合を重視することによりリスクを避ける学習となり、κが負の場合は想定より高い報酬が得られた場合を重視するリスク追及型の学習に対応する。こちらでも好奇心をもつ分散強化学習における好奇心を決定するアルゴリズムにおいてリスクを考慮して学習を行う手法については述べられていない。
【0010】
本発明は、行動選択に際してアクターおよびラーナーが採るべきリスクを考慮した分散強化学習を可能にすることを目的とする。
【課題を解決するための手段】
【0011】
本願において開示される発明の一側面となる強化学習装置は、分析対象に適用する行動を行動群から選択する際に採るべき第1リスクに関する第1パラメータの選択範囲を前記選択範囲の一部の範囲に設定し、前記行動の選択指針となる価値を算出する価値関数の学習において採るべき第2リスクに関する第2パラメータを設定する設定部と、前記価値関数と前記一部の範囲内の前記第1パラメータとに基づいて前記行動を選択して、前記分析対象の状態を更新し、更新後の状態が新規な状態であるほど高い報酬を算出するアクターと、前記報酬と前記第2パラメータとに基づいて前記価値関数を更新するラーナーと、前記一部の範囲内の複数の前記第1パラメータの各々が用いられた際に前記アクターによって算出された前記報酬の履歴に基づいて、前記アクターへの出力対象となる前記第1パラメータを、前記分析対象を新規な状態に更新させた特定の行動を前記アクターが選択した際に用いられた特定の第1パラメータに決定し、前記アクターに出力する決定部と、を有することを特徴とする。
【発明の効果】
【0012】
本発明の代表的な実施の形態によれば、行動選択に際してアクターおよびラーナーが採るべきリスクを考慮した分散強化学習が可能になる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【0013】
【
図1】
図1は、実施例1にかかるサイバー攻撃AIの実行例を示す説明図である。
【
図2】
図2は、強化学習装置のハードウェア構成例を示すブロック図である。
【
図3】
図3は、分析対象DBの一例を示す説明図である。
【
図4】
図4は、行動テーブルの一例を示す説明図である。
【
図5】
図5は、実施例1にかかる強化学習回路の回路構成例を示すブロック図である。
【
図6】
図6は、報酬履歴テーブルの一例を示す説明図である。
【
図7】
図7は、
図5に示したラーナーの構成例を示すブロック図である。
【
図8】
図8は、2次元配列の一例を示す説明図である。
【
図9】
図9は、状態に関する状態テーブルの一例を示す説明図である。
【
図10】
図10は、強化学習回路の動作例を示す説明図である。
【
図11】
図11は、実施例1にかかる強化学習装置の出力デバイスに表示される入出力画面の一例を示す説明図である。
【
図12】
図12は、実施例1にかかるデータ処理手順例を示すフローチャートである。
【
図13】
図13は、実施例2にかかる分析対象DBの一例を示す説明図である。
【
図14】
図14は、実施例2にかかる強化学習回路の回路構成例を示すブロック図である。
【
図15】
図15は、実施例2にかかる強化学習装置の出力デバイスに表示される入出力画面の一例を示す説明図である。
【
図16】
図16は、実施例2にかかるデータ処理手順例を示すフローチャートである。
【発明を実施するための形態】
【実施例0014】
以下、実施例1にかかる強化学習装置、データ処理方法、およびデータ処理プログラムの一例について添付図面を参照して説明する。また、実施例1では、分析対象となるデータ群は、たとえば、サイバー攻撃の対象となりうる、ウェブサイトやそのユーザ、それらが使用するディレクトリサービスやリポジトリサービスなどから成るネットワークにおける各ノードの接続関係、脆弱性、およびステータスの集合である。なお、ネットワーク構成は一例である。
【0015】
<分析の一例>
図1は、実施例1にかかるサイバー攻撃AI100の実行例を示す説明図である。サイバー攻撃AI(Artificial Intelligence)100は、ネットワーク106内の楕円で示したノードを攻撃して占有するアタッカーであり、アクター101と、ラーナー102と、を有する。
【0016】
アクター101は、ある価値関数とこれまでに得られた価値の履歴に基づいて、サイバー攻撃AI100がとるべき行動を行動テーブル105から選択するAIである。
図1では、アクター101は1つであるが、2以上存在してもよい。
【0017】
ラーナー102は、これまでにアクター101が行った行動と、その結果得られたネットワーク106の状態と、その状態から得られた報酬rと、に基づいて、アクター101が採りうる行動(ノードへの攻撃方法)の価値を決定する価値関数を更新するAIである。
【0018】
ユーザUは、サイバー攻撃AI100を利用する人であり、たとえば、医師や学者、研究者でもよく、サイバー攻撃AI100による分析サービスを提供する事業者でもよい。
【0019】
(1)サイバー攻撃AI100は、分析対象DB104内の情報を読み込む。分析対象DB104は、分析対象となるネットワーク106における各ノードの性質(ステータス、脆弱性、接続状態)を記憶する。
【0020】
(2)ユーザUは、アクター101およびラーナー102の各々のリスクを決定するリスクパラメータ130を選択する。サイバー攻撃AI100は、ユーザUの操作により、リスクパラメータテーブル103内のリスクパラメータ130を読み込んで設定する。リスクとは、アクター101が選択した行動の不確実さである。
【0021】
リスクパラメータ130は、アクター101に関するアクターリスクパラメータ131とラーナー102に関するラーナーリスクパラメータ132の組み合わせである。アクターリスクパラメータ131は、アクター101でとるべきリスクの大小を調節するためのパラメータであり、選択範囲[0.0,1.0]の中の一部の範囲となる値域[a,b](0≦a<b≦1)によって設定される。
【0022】
アクターリスクパラメータ131は、複数の値域、たとえば、[a,b],[c,d](0≦a<b<c<d≦1)によって設定されてもよい。
図1の例では、アクターリスクパラメータ131は、[0.0,0.9]となっており、0.0から0.9までの間の離散値となる。ラーナーリスクパラメータ132は、ある値κ(-1≦κ≦1)によって設定される。
【0023】
(3)アクター101は、行動テーブル105から、ノードへの攻撃方法を行動として選択する。アクター101は、たとえば、Agent57型の好奇心を導入した価値関数を最大化する行動を選択する。具体的には、たとえば、アクター101は、(5)好奇心の大きさを決定するために、離散化された各好奇心の値を選択した場合の価値の期待値を計算し、(3)当該期待値が最も大きな好奇心の値を採用する。なお、アクターリスクパラメータ131は、この期待値の重みづけを行うパラメータである。
【0024】
(4)アクター101は、選択行動と分析対象DB104の保持する脆弱性とに基づいて、ネットワーク106の状態を更新し、報酬rを計算する。報酬rは、たとえば、サイバー攻撃AI100が占有したノード数である。
【0025】
ネットワーク106は、たとえば、分析対象DB104の保持する各ノードのステータスとノードの接続関係とにより構成される。楕円図形がノード、矢印がノード間の接続関係を示すエッジである。「GitHubProject」は、リポジトリサービスの一例である。「Website.Directory」は、ディレクトリサービスの一例である。「Website1」は、「GitHubProject」および「Website.Directory」を使用するウェブサイトである。「client」は、「Website1」を利用するコンピュータである。「user」は、ネットワーク106内のコンピュータである。「user」は、「Website1」とエッジで接続されていないため、「Website1」を利用できない。
【0026】
黒色のノード(「Website1」、「client」)は、サイバー攻撃AI100に占有されたノードである(owned)。網掛けのノード(「GitHubProject」、「Website.Directory」)は、サイバー攻撃AI100に発見されたが占有されていないノードである(discovered)。白色のノード(「user」)は、サイバー攻撃AI100に発見されていないノードである(undiscovered)。
【0027】
(5)ラーナー102は、更新されたネットワーク106の状態と報酬rとに基づいて、たとえば、ニューラルネットワークを用いた演算で価値関数を更新する。ラーナーリスクパラメータ132は、この価値関数の更新値の重みづけを行うパラメータである。このあと、サイバー攻撃AI100は、(3)~(5)を繰り返し実行する。
【0028】
(6)サイバー攻撃AI100は、(3)~(5)を繰り返し実行することによって得られたネットワーク106の状態と得られた報酬rとに基づいて、ユーザUの操作により、リスクパラメータテーブルを更新してもよい。サイバー攻撃AI100は、(2)を実行したあと、(3)~(5)を繰り返し実行する。
【0029】
このように、サイバー攻撃AI100がリスクパラメータに基づいて攻撃方法を行動テーブル105から選択し、ネットワーク106の状態を更新する。
【0030】
<強化学習装置200のハードウェア構成例>
図2は、強化学習装置200のハードウェア構成例を示すブロック図である。強化学習装置200は、プロセッサ201と、記憶デバイス202と、入力デバイス203と、出力デバイス204と、通信インターフェース(通信IF)205と、を有する。プロセッサ201、記憶デバイス202、入力デバイス203、出力デバイス204、および通信IF205は、バス206により接続される。プロセッサ201は、強化学習装置200を制御する。記憶デバイス202は、プロセッサ201の作業エリアとなる。また、記憶デバイス202は、各種プログラムやデータ、分析対象DBを記憶する非一時的なまたは一時的な記録媒体である。記憶デバイス202としては、たとえば、ROM(Read Only Memory)、RAM(Random Access Memory)、HDD(Hard Disk Drive)、フラッシュメモリがある。入力デバイス203は、データを入力する。入力デバイス203としては、たとえば、キーボード、マウス、タッチパネル、テンキー、スキャナがある。出力デバイス204は、データを出力する。出力デバイス204としては、たとえば、ディスプレイ、プリンタがある。通信IF205は、ネットワークと接続し、データを送受信する。
【0031】
強化学習装置200は、
図1に示したサイバー攻撃AI100を実装する。サイバー攻撃AI100は、記憶デバイス202に記憶されたプログラムをプロセッサに実行させることにより実現される。また、強化学習装置200において、
図1に示した分析対象DB104および行動テーブル105は、記憶デバイス202に記憶される。
【0032】
また、強化学習装置200は、強化学習回路207を有してもよい。強化学習回路207は、価値関数の学習を実行する回路構成である。強化学習回路207は、行動テーブル105を参照して、
図1に示した(1)~(6)の処理を実行する。行動テーブル105は、たとえば、強化学習回路207内の図示しない記憶領域に記憶されてもよい。なお、強化学習回路207は、回路構成により実現されるが、記憶デバイス202に記憶されたプログラムをプロセッサ201に実行させることにより実現されてもよい。
【0033】
<分析対象DB104>
図3は、分析対象DB104の一例を示す説明図である。分析対象DB104は、フィールドとして、ノードID301と、ステータス302と、脆弱性303と、接続関係304と、を有する。同一行における各フィールドの値の組み合わせが、1つのノードの分析対象データとなる。
【0034】
ノード301は、分析対象のネットワーク106の構成要素であり、たとえば、「client」、「Website」、「Website.Directory」、「user」、「GitHubProject」で表現される。
【0035】
ステータス302は、サイバー攻撃AI100の攻撃により変更可能性があるノード301の状態を示す。たとえば、ステータス302は、ノード301がサイバー攻撃AI100によって発見されていない「undiscoverd」、発見されている「discovered」、または所有されている「owned」に分類される。
【0036】
脆弱性303は、特定の攻撃によりそのノードの安全性を脅かす恐れのある欠陥を示す。たとえば、ノードID301が「client」の脆弱性303に「Search web history for list of accessed websites」があれば、行動「ScanWebHistory」によって「Website1」への接続が得られることを意味する。
【0037】
接続関係304は、そのノードの接続先ノードを示す。ノードID「client」の接続関係304に「Website」があれば、「client」(矢印の始端)から「Websiteノード」(矢印の終端)へと接続が可能なことを意味する。
【0038】
<行動テーブル105>
図4は、行動テーブル105の一例を示す説明図である。行動テーブル105は、分析対象のネットワーク106のノードに対する攻撃方法を行動として規定したテーブルである。行動テーブル105の内容は、あらかじめ設定される。
【0039】
行動テーブル105は、フィールドとして、行動ID401と、行動402と、を有する。行動ID401は、行動402を一意に特定する識別情報である。
【0040】
行動402は、アクター101によって選択可能な攻撃方法である。行動402は、ローカル攻撃行動と、リモート攻撃行動と、接続行動と、に分類される。ローカル攻撃行動は、ローカルな攻撃の対象となる一つのノード(node1)を変数とする。具体的には、たとえば、ローカル攻撃行動は、node1を起点として他のノードを発見したり、所有したりする行動である。たとえば、行動ID401が「a0」および「a1」である行動402が、ローカル攻撃行動に該当する。
【0041】
リモート攻撃行動は、リモート攻撃の起点となる二つのノード(node1,node2)を変数とする。具体的には、たとえば、リモート攻撃行動は、node1およびnode2を起点として他のノードを発見したり、所有したりする行動である。たとえば、行動ID401が「a20」および「a21」である行動402が、リモート攻撃行動に該当する。
【0042】
接続行動は、接続の起点と対象となる二つのノード(node1,node2)を変数とする。具体的には、たとえば、接続行動は、二つのノード(node1,node2)をエッジで接続したり、接続を解除したりする。たとえば、行動ID401が「a50」である行動402が接続行動に該当する。
【0043】
なお、xxxIDyyの値z(xxxは名称、yyは符号、zは英数字列)を、xxxIDzと表記する。たとえば、行動ID401が「a50」の行動402は、行動a50と表記される。
【0044】
<強化学習回路の構成例>
図5は、実施例1にかかる強化学習回路207の回路構成例を示すブロック図である。強化学習回路207は、データメモリ500、アクターユニット510、選択ユニット520、ラーナー102、リスクパラメータテーブル103、および行動テーブル105を有する。
【0045】
データメモリ500には、記憶デバイス202から分析対象DB104の全データ、すなわち、ノードID301、ステータス302、脆弱性303、および接続関係304が記憶される。
【0046】
また、データメモリ500には、アクターユニット510がこれまでに選択したアクターリスクパラメータ131の離散値の履歴と、当該選択された離散値に基づいて、アクターが選択した行動402の結果得られた報酬rの履歴と、が記憶される。
【0047】
アクターユニット510は、1以上のアクター101である。アクター101の数は、ユーザUの操作により設定可能である。
【0048】
アクターリスクパラメータ131は、非特許文献1において、アームと呼ばれる好奇心パラメータに対応する。好奇心とは、一般的には人間が抱く未知の事柄についての興味であるが、本例では、アクター101が特定したネットワーク106の未知の状態について、行動402および報酬rに関連する要素である。未知の状態とは、アクター101が行動を開始してからネットワーク106が初期の状態からこれまでに更新された状態群には存在しない新規な状態である。
【0049】
具体的には、たとえば、ネットワーク106の状態がアクター101にとって未知である場合に、当該未知の状態につながる行動402をアクター101が選択したときに、ネットワーク106の状態がアクター101にとって既知である場合と比べて、得られる報酬rが大きくなる。本例の場合、ステータス302が「undiscoverd」から「discovered」になるほど、「discovered」から「owned」になるほど、報酬rが高くなる。そのような報酬rを得るための行動402の選択が好奇心であり、当該好奇心を数値化した情報が好奇心パラメータである。本例では、アクターリスクパラメータ131の離散値が、好奇心パラメータとなる。
【0050】
なお、以降では、便宜的に、アクターリスクパラメータ131の離散値(好奇心パラメータ)を「アーム」と称し、アクターリスクパラメータ131の離散値(好奇心パラメータ)を一意に特定する識別情報を、「アームID」と称する場合がある。
【0051】
選択ユニット520は、アームIDを選択して、ラーナー102が使用するアクターリスクパラメータ131の離散値を決定する。アクターリスクパラメータ131は、ラーナー102が提示する価値関数Q(t)において、報酬r(t)に基づいた外部価値関数ze(t)に対する、より探索的な行動402に報酬r(t)を与える内部価値関数zi(t)の重みに対応する。すなわち、価値関数Q(t)は、下記式(1)によって表現される。なお、tはタイムステップを示す。
【0052】
Q(t)=ze(t)+βzi(t)・・・(1)
【0053】
上記式(1)のβは、アクターリスクパラメータ131の離散値である。選択ユニット520において選択可能なアームIDは、ユーザUの操作により、複数個設定される。本例では、アームIDの個数を32個とする。選択ユニット520は、アクターリスクパラメータ131から、設定されたアームIDの個数分のアクターリスクパラメータ131の離散値を、好奇心パラメータとして割り振る。
【0054】
具体的には、たとえば、選択ユニット520は、抽出部521と、決定部513と、を有する。抽出部521は、データメモリ500に保存された、アームID別の報酬履歴に基づいて、一定数(たとえば、100個)の報酬rをサンプリングする。このサンプリングは、アクター101ごとに実行される。
【0055】
[報酬履歴テーブル]
図6は、報酬履歴テーブルの一例を示す説明図である。報酬履歴テーブル600は、データメモリ500に記憶される。報酬履歴テーブル600は、アクター101ごとに存在する。報酬履歴テーブル600は、フィールドとして、エピソード回数601と、報酬履歴602と、を有する。
【0056】
エピソード回数601は、エピソードが実行された回数である。強化学習では、タイムステップt=m回(mは1以上の整数)の学習(
図10を参照)で1回のエピソードが実行されたことになる。
図6の例では、エピソードの上限が10000回であることを示している。エピソード回数601の値が小さいほど、新しいエピソードであることを示す。
【0057】
エピソード回数601の値が「1」の行が、各々のアームIDにとって最新のエピソードとなるが、同一行であっても異なるアームID間では同一エピソードとは限らない。
【0058】
なお、エピソードは、10000回を超えて実行されてもよい。この場合、報酬履歴テーブル600には、アームIDごとに最大で10000回分の最新の報酬履歴602が格納される。
【0059】
報酬履歴602は、アームID別の報酬rの履歴である。
図6では、例として、32個のアームIDが存在するため、32個の異なるアクターリスクパラメータ131の離散値がアクターリスクパラメータ131から選択される。
【0060】
なお、アームIDの値である「1」~「32」を、アームID1~アームID32と表記する。アームID1~アームID32を区別しない場合は、単に、アームIDと表記する。
【0061】
アームID1~アームID32の各列の値は、そのアームIDで特定されるアクターリスクパラメータ131の離散値を用いて選択された行動402をサイバー攻撃AI100が採った場合に得られる報酬rの履歴である。具体的には、当該エピソード内の最後のタイムステップtで出力される報酬r(t)である。
【0062】
たとえば、アームID1の列では、報酬rが10000個格納されているため、アームID1で特定されるアクターリスクパラメータ131の離散値が、10000回の行動402の選択に用いられ、その行動402の選択により、10000回の報酬rが算出されたことを示している。たとえば、エピソード回数601が「1」のときの報酬r=0.21が最新エピソードでの報酬rであることを示す。
【0063】
また、アームID2の列では、報酬rが3個格納されているため、アームID2で特定されるアクターリスクパラメータ131の離散値が、3回の行動402の選択に用いられ、その行動402の選択により、3回の報酬rが算出されたことを示している。たとえば、エピソード回数601が「1」のときの報酬r=0.01が最新エピソードでの報酬rであることを示す。
【0064】
ただし、アームID1におけるエピソード回数601が「1」のときの報酬r=0.21と、アームID2におけるエピソード回数601が「1」のときの報酬r=0.01とが、同一エピソードでの報酬rとは限らない。
【0065】
抽出部521は、報酬履歴602をアームID別に報酬rの確率分布d1~d132を生成し、生成した確率分布d1~d132に基づいて、一定数(たとえば、最大で100個)の報酬rを報酬履歴テーブル600からアームIDごとにサンプリングする。
【0066】
確率分布d1~d132(これらを区別しない場合は単に確率分布dと称す)の横軸は、そのアームIDの列が示す報酬履歴602の報酬rを示す。縦軸は、報酬履歴602で特定される報酬rの出現確率Pを示す。
【0067】
たとえば、抽出部521は、各アームの報酬履歴602が正規分布に従うと仮定して、報酬履歴602内の報酬rの平均および分散を推定する。抽出部521は、推定された報酬rの平均および分散に基づいて確率分布dを生成する。抽出部521は、確率分布dに従ってランダムに一定数の報酬rf1~rf132(これらを区別しない場合は単に報酬rfと称す)をサンプリングする。
【0068】
図5に戻り、決定部522は、抽出部521によってサンプリングされた一定数の報酬rf1~rf132に基づいて、報酬rの期待値が最大となるアームIDを選択し、アクターユニット510に出力する。アームIDの選択は、アクター101ごとに実行される。
【0069】
具体的には、たとえば、決定部522は、一定数の報酬rf1~rf132の各々について(すなわち、アームIDごとに)、リスクパラメータテーブル103のアクターリスクパラメータ131の値域[a,b]で定義されるパーセンタイルにしたがって、上位aパーセントに位置する報酬から上位bパーセントに位置する報酬までの報酬群を抽出する。決定部522は、アームIDごとに抽出された報酬群を用いて、報酬rの期待値をアームIDごとに算出する。報酬rの期待値は、抽出した報酬群の平均値でもよく中央値でもよい。
【0070】
aは、アクターリスクパラメータ131の下限値であり、0≦a<1となる。bは、アクターリスクパラメータ131の上限値であり、0<b≦1となる。
【0071】
決定部522は、アームIDの集合の中から、アームIDごとに算出された報酬rの期待値の中から特定の期待値(たとえば、最大値)となるアームIDを特定する。たとえば、アクターリスクパラメータ131の値域が[0.0,0.9]に設定されていたとする。
【0072】
この場合、決定部522は、サンプリングされた一定数の報酬rfについて、上位0パーセントの報酬から上位90パーセントに位置する大きさの報酬までの報酬群の平均値により報酬rの期待値をアームIDごとに算出する。決定部522は、報酬rの期待値が最大となるアームIDによって特定されるアームを、アクターユニット510が使用するアクターリスクパラメータ131の離散値に決定する。
【0073】
このように、アーム(好奇心)を決定することにより、決定部522は、たとえば、アクターリスクパラメータ131の値域が[0.0,0.9]の場合、これまでの報酬履歴602から期待されうる報酬rの上位10パーセンタイル分を無視して行動402を決定することができる。つまり、偶然得られうる上位10パーセンタイルの報酬rを無視することにより、よりリスクの低い行動選択を、アクターユニット510に実行させやすくすることができる。
【0074】
また、逆に、アクターリスクパラメータ131の値域が[0.1,1.0]の場合、これまでの報酬履歴602から期待されうる報酬rの下位10パーセンタイルを無視することにより、リスクが高いがより高い報酬rが得られるかもしれない行動402をアクターユニット510に実行させやすくすることができる。
【0075】
なお、サンプリングされた報酬から期待値を算出する際に考慮する報酬サンプルを決定するパーセンタイルを、アクターリスクパラメータ131とする替わりに、報酬履歴602そのものから期待値を算出する際に考慮する報酬サンプルを決定するパーセンタイルを、アクターリスクパラメータ131としてもよい。また、上記以外のなんらかの報酬列から期待値を算出する際に考慮する報酬サンプルを決定するパーセンタイルを、アクターリスクパラメータ131としてもよい。
【0076】
アクターユニット510およびラーナー102は、
図1に示したサイバー攻撃AI100の一部を構成する。アクターユニット510は、選択ユニット520によって選択されたアームIDの好奇心パラメータ(アクターリスクパラメータ131のの離散値)と現在のネットワーク106の状態を用いて価値関数Qの値(行動402の価値)を計算し、価値関数Qの値を最大化する行動402を選択する。
【0077】
なお、アクターユニット510内において、アクター101は複数存在してもよい。この場合、選択ユニット520は複数のアクター101のそれぞれに対して同数配置されてもよいし、複数のアクター101に対して単一の選択ユニット520が配置されてもよい。アクター101が複数存在する場合、アクター101ごとにネットワーク106の状態s(t)が更新される。これにより、同一処理時間で、より多くの行動402を収集することができる。また、アクター101ごとに、後述するランダムユニット703が生成する乱数値eのしきい値ethを異ならせることで、アクター101に個性を与えることができる。
【0078】
ラーナー102は、外部価値関数ze(t)および内部価値関数zi(t)の二つの価値関数を学習する、好奇心をもつ強化学習における価値関数モデルである。ラーナー102は、現在のタイムステップtでのネットワーク106の状態s(t)において、アクターユニット510が選択した行動a(t)と、行動a(t)によって更新されたネットワーク106の状態s(t+1)と、状態s(t+1)から得られる報酬r(t+1)と、を取得する。
【0079】
そして、ラーナー102は、アクターユニット510および選択ユニット520を制御する。具体的には、たとえば、ラーナー102は、アクターユニット510からネットワーク106の状態s(t)が入力されると、アクターユニット510の選択する行動402を決定づける価値関数Qを更新する。
【0080】
[ラーナー102]
図7は、
図5に示したラーナー102の構成例を示すブロック図である。ラーナー102は、ネットワークユニット700と、リプレイメモリ720と、学習パラメータ更新ユニット730と、を有する。ネットワークユニット700は、Q*ネットワーク701と、Qネットワーク702と、ランダムユニット703とを有する。
【0081】
Q*ネットワーク701およびQネットワーク702は、価値を最大化するような行動a(t)を学習する同一構成の行動価値関数である。この場合の価値とは、行動a(t)で規定される行動402をとることにより更新されたネットワーク106の状態s(t+1)から得られる報酬r(t+1)の大きさをあらわす指標値である。
【0082】
具体的には、たとえば、Q*ネットワーク701は、ネットワーク106の状態s(t)を入力とし、学習パラメータθ*に基づいて各行動402の外部価値関数ze(t)の値と内部価値関数zi(t)の値とを含む価値関数z(t)の値を示す2次元配列を出力とする深層強化学習DQN(Deep Q-Network)である。
【0083】
[2次元配列]
図8は、2次元配列の一例を示す説明図である。2次元配列800は、行動ID401で特定される行動402で組み合わせ可能なノード構成801ごとに算出される外部価値関数z
e(t)の値を示す1次元配列802および内部価値関数z
i(t)の値を示す1次元配列803を有する。ノード構成801は、行動402の変数であるネットワーク106内のノードの種類数とその組み合わせで規定される。
【0084】
たとえば、行動a0は1変数であるため、ノード構成801は、5種類のノード、すなわち、5通りとなる。一方、行動a0は2変数であるため、ノード構成801は、10通り(5C2)となる。
【0085】
図7に戻り、Qネットワーク702は、Q*ネットワーク701と同一構成の深層強化学習DQNである。Qネットワーク702は、学習パラメータをθとし、現在のネットワーク106の状態s(t)における各行動402の価値を、ノード構成801ごとに、上記式(1)により求める。
【0086】
ランダムユニット703は、0以上1以下の乱数値eを出力する。乱数値eは、しきい値ethと比較される。たとえば、乱数値eがしきい値eth以上であれば、アクター101は行動402をランダムに選択し、乱数値eがしきい値eth未満であれば、アクター101はQ*ネットワーク701に基づいて選択する。しきい値ethは、ユーザUによって任意の値に設定可能である。ランダムな行動選択を排除する場合は、しきい値eth>1に設定すればよい。
【0087】
学習パラメータ更新ユニット730は、勾配算出ユニット631を有する。学習パラメータ更新ユニット730は、勾配算出ユニット631を用いて、ある行動a(t)によって得られたネットワーク106の状態s(t+1)から算出される報酬r(t)とリスクパラメータテーブル103のラーナーリスクパラメータ132との両方を考慮した勾配gを算出する。学習パラメータ更新ユニット730は、勾配gを学習パラメータθに加算することにより、学習パラメータθを更新する。
【0088】
リプレイメモリ720は、データパックD(t)を格納する。データパックD(t)は、タイムステップtにおける、ネットワーク106の状態s(t)、状態s(t+1)、行動a(t)、報酬r(t)を含む。
【0089】
図7に戻り、Q*ネットワーク701の構成例を具体的に説明する。Q*ネットワーク701には、状態s(t)が入力される。ここで、状態s(t)を具体的に例示する。
【0090】
[状態テーブル]
図9は、状態s(t)に関する状態テーブルの一例を示す説明図である。状態テーブル900は、接続元ノード901と、ステータス902と、接続情報903と、を有する。
【0091】
接続元ノード901は、接続先ノードと接続されるノード301、すなわち、ネットワーク106において矢印で示されるエッジの始端に接続されるノード301である。ステータス902は、接続元ノード901のステータス302である。
【0092】
ステータス902は、アクター101が採る行動402が実行されることで変化する。たとえば、行動402により、サイバー攻撃AI100に発見されていないノード301が発見されると、ステータス902は、「undiscoverd」から「discovered」に更新される。行動402により、サイバー攻撃AI100に発見されたノード301が所有されると、ステータス902は、「discovered」から「owned」に更新される。
【0093】
接続情報903は、接続先ノードとの接続有無を示す。具体的には、たとえば、接続情報903は、ネットワーク106において矢印で示されるエッジの終端に接続されるノード301を接続先ノードとし、接続元ノード901との接続の有無を「1」または「0」のフラグで表現する。「1」は接続、「0」は非接続を示す。
【0094】
図7に戻り、Q*ネットワーク701は、外部価値関数z
e(t)に関する1次元配列802を出力するネットワーク701(1)と内部価値関数z
i(t)に関する1次元配列803を出力するネットワーク701(2)の2つのネットワークによって構成される。
【0095】
たとえば、ネットワーク701(1)の第1層および第2層は、全結合ネットワーク(ニューロン数:256、アクチベーション関数:ReLU)である。ネットワーク701(1)の出力層は、全結合ネットワークであり、行動テーブル105の行動a0~a50をインデックスとする1次元配列802を出力信号として出力する。
【0096】
また、ネットワーク701(2)の第1層は、ネットワーク106の状態s(t)において行動テーブル105の行動a0~a50のそれぞれを行ったときに得られる51種類の状態を算出する層である。ネットワーク701(2)の第2層および第3層は、上記51種類の状態s(t)の各々を入力とし、51種類のベクトルを出力する全結合ネットワーク(ニューロン数:256、アクチベーション関数:ReLU)である。
【0097】
ネットワーク701(2)の出力層は、上記51種類のベクトルの各々に対し、リプレイメモリ620に格納された過去の状態s群を第2層および第3層の全結合ネットワークに入力して得られたベクトル群とのユークリディアン距離の最小値を計算し、行動a0~a50を当該51種類の最小値のインデックスとした1次元配列803を出力する。
【0098】
[強化学習回路207の動作例]
図10は、強化学習回路207の動作例を示す説明図である。
図10では、理解の用意のため、あるエピソードでのタイムステップt=0からt=2に至るまでの動作例を示す。
【0099】
(ステップS1000:t=0)
選択ユニット520内の決定部522は、アクターリスクパラメータ131の値域[0.0,0.9]から抽出された32個の離散値dv1~dv32(これらを区別しない場合は単に離散値dv)からいずれかの離散値dvを選択する。
図10では、離散値dv1が選択されたものとする。なお、離散値dv1~dv32はそれぞれ、アームID1~アームID32に対応する。
【0100】
(ステップS1001:t=0)
ステップS1001において、乱数値eがしきい値eth未満であったとする。アクター101は、離散値dv1に対応するアームID1における2次元配列800を算出する。アクター101は、ノード構成801ごとに、ノード構成801における1次元配列802のze(t=0)の値を上記式(1)のze(t)に代入し、1次元配列802のzi(t=0)の値を上記式(1)のzi(t)に代入する。たとえば、行動a0のノード構成801「client」の場合、アクター101は、「1.53」をze(t)に代入し、「0.60」をzi(t)に代入する。
【0101】
離散値dv1=0.1とすると、この場合の価値関数Q(t=0)は、
1.53+0.1×0.60=1.59
となる。アクター101は、このような計算を、アームID1における行動a0~a50の全ノード構成801について実行する。
【0102】
図10のQ(x,y-z)は、価値関数の値を示す。xは、ノードIDを示す。yは、行動ID401における数字の番号(a0であればy=0)である。zは、行動ID401でのノード構成801を一意に示す番号である。たとえば、Q(1,0-2)は、ノードID1における行動a0内の2番目のノード構成801である「Website1」における価値を示す。
【0103】
(S1002:t=0)
アクター101は、計算した価値関数の値Q(1,0-1)~Q(1,50-10)から最大価値となる行動402を選択する。本例の場合、Q(1,0-2)に対応する行動a0が選択される。
【0104】
(ステップS1003:t=0)
アクター101は、選択された行動a0(攻撃方法)が実行されることで、ネットワーク106の状態s(t=0)を状態s(t=1)に更新する。
【0105】
(ステップS1004:t=0)
アクター101は、状態s(t=1)に基づいて報酬r(t=0)を算出する。
【0106】
(ステップS1005:t=0)
ラーナー102は、価値関数Q(t=0)を価値関数Q(t=1)に更新する。
【0107】
(ステップS1006:t=0)
選択ユニット520の抽出部521は、
図6に示したように、報酬履歴テーブル600から、確率分布dに従ってランダムに一定数の報酬rf1~rf132をサンプリングする。
【0108】
(ステップS1007:t=0)
選択ユニット520の決定部522は、抽出部521によってサンプリングされた一定数の報酬rf1~rf132の各々について報酬rの期待値を算出する。決定部522は、一定数の報酬rf1~rf132の各々について算出された報酬rの期待値のうち、最大期待値の算出元となる一定数の報酬rfのサンプリング元となるアームIDを特定する。
【0109】
(ステップS1008:t=0)
選択ユニット520の決定部522は、ステップS1007で特定されたアームIDに対応するアクターリスクパラメータ131内の離散値dvを特定する。ここで、特定された離散値dvは、エピソードが終了するまで変化しない。本例の場合、離散値dv32が特定されたものとする。
【0110】
(ステップS1009:t=0)
選択ユニット520の決定部522は、ステップS1008で特定された離散値dv32をアクター101に出力する。
【0111】
(ステップS1011:t=1)
ステップS1011において、乱数値eがしきい値eth未満であったとする。アクター101は、ステップS1001と同様に、離散値dv32に対応するアームID32における2次元配列800を算出する。
【0112】
(ステップS1012:t=1)
アクター101は、計算した価値関数の値Q(32,0-1)~Q(32,50-10)から最大価値となる行動402を選択する。本例の場合、Q(32,50-10)に対応する行動a50が選択される。
【0113】
(ステップS1013:t=1)
サイバー攻撃AI100は、選択された行動a50(攻撃方法)が実行されることで、ネットワーク106の状態s(t=1)を状態s(t=2)に更新する。
【0114】
(ステップS1014:t=1)
サイバー攻撃AI100は、状態s(t=2)に基づいて報酬r(t=1)を算出する。
【0115】
(ステップS1015:t=1)
ラーナー102は、価値関数Q(t=1)を価値関数Q(t=2)に更新する。
【0116】
(ステップS1019:t=1)
選択ユニット520の決定部522は、ステップS1008で特定された離散値dv32をアクター101に出力する。
【0117】
(ステップS1021:t=2)
ステップS1021において、乱数値eがしきい値eth未満であったとする。アクター101は、ステップS1011と同様に、離散値dv32に対応するアームID32における2次元配列800を算出する。
【0118】
(ステップS1022:t=2)
アクター101は、計算した価値関数の値Q(32,0-1)~Q(32,50-10)から最大価値となる行動402を選択する。本例の場合、Q(32,0-3)に対応する行動a0が選択される。以下、エピソードが終了するまで同様に実行される。
【0119】
<入出力画面例>
図11は、実施例1にかかる強化学習装置200の出力デバイス204に表示される入出力画面の一例を示す説明図である。入出力画面1100は、ロードボタン1110と、アクター数入力領域1120と、アーム数入力領域1130と、リスクパラメータ入力領域1140と、報酬入力領域1150と、開始ボタン1160と、ネットワーク表示領域1170と、停止・再開ボタン1180と、を含む。
【0120】
ロードボタン1110は、ユーザUの押下により分析対象DB104のエントリをデータメモリ500にロードするためのユーザインタフェースである。
【0121】
アクター数入力領域1120は、配置するアクター101の数の入力を受け付ける領域である。アーム数入力領域1130は、選択ユニット520におけるアームの数、すなわち、アクターリスクパラメータの離散値の個数の入力を受け付ける領域である。
【0122】
リスクパラメータ入力領域1140には、アクターリスクパラメータ131の入力領域1141と、ラーナーリスクパラメータ132の入力領域1142と、を含む。報酬選択領域1150は、得られたネットワーク106の状態s(t)に対して与える報酬r(t)の種類の選択を受け付ける領域である。具体的には、たとえば、占有された(ステータス情報がownedである)ノードの数が選択可能である。これにより、上述したように、報酬rは、ノードの占有数として算出されることになる。なお、選択可能な報酬rの種類は、占有ノード数の割合など他の種類が選択可能であってもよい。
【0123】
開始ボタン1160は、ユーザUの押下により、ロードボタン1110でロードされたネットワーク106においてアクター数入力領域1120、アーム数入力領域1130、リスクパラメータ入力領域1140、報酬入力領域1150にて設定されたアクター数、アーム数、リスクパラメータ、報酬を用いて、サイバー攻撃AI100の動作を開始するためのユーザインタフェースである。
【0124】
ネットワーク表示領域1170には、アクター101の行動402によって更新されたネットワーク106が表示される。ネットワーク表示領域1170にて表示されるネットワーク106は状態テーブル900でもよいし、グラフネットワーク図でもよい。
【0125】
停止・再開ボタン1180は、停止ボタン1181と再開ボタン1182とを含む。停止ボタン1181は、ユーザUの押下により、サイバー攻撃AI100の動作を一時停止させるためのユーザインタフェースである。再開ボタン1182は、ユーザUの押下により、停止ボタン1181で一時停止したサイバー攻撃AI100の動作を再開させるためのユーザインタフェースである。
【0126】
なお、入出力画面1100は、たとえば、強化学習装置200の出力デバイス204の一例であるディスプレイに表示される。また、入出力画面1100は、強化学習装置200の通信IF205から、入出力画面1100に関する情報を、通信IF205と通信可能に接続される他のコンピュータに送信することにより、当該他のコンピュータのディスプレイに表示されてもよい。
【0127】
<データ処理手順例>
図12は、実施例1にかかるデータ処理手順例を示すフローチャートである。なお、処理開始前において、
図11の入出力画面1100のロードボタン1110の押下により分析対象DB104のエントリがデータメモリ500にロードされているものとする。
【0128】
(ステップS1201)
強化学習装置200は、初期化を実行する。具体的には、たとえば、強化学習装置200は、計算ステップmをm=1に設定する。また、強化学習装置200は、Q*ネットワーク701の学習パラメータθ*をランダムな重みで初期化する。また、強化学習装置200は、Qネットワーク702の学習パラメータθをランダムな重みで初期化する。また、報酬履歴602のすべてのセルを空白に、タイムステップtをt=0に、状態s(t)を分析対象DB104の保持する初期のネットワーク106の状態s(t=0)に設定する。
【0129】
(ステップS1202)
強化学習装置200は、ユーザUによって入力されたリスクパラメータ130の値を格納したリスクパラメータテーブル103を設定する。
【0130】
(ステップS1203)
ラーナー102は、Q*ネットワーク701に状態s(t=0)を入力することにより2次元配列800を決定する。また、ラーナー102は、ランダムユニット603により乱数値eを生成する。
【0131】
(ステップS1204)
選択ユニット520は、
図10のステップS1006~S1009(S1019)に示したように、アクターリスクパラメータ131とデータメモリ500に格納されている報酬履歴602とに基づいて、報酬rの期待値が最大となるアームIDを特定し、特定したアームIDに対応するアクターリスクパラメータ131の離散値dvを出力する。なお、タイムステップt=0においては、選択ユニット520は、決定部522により、アクターリスクパラメータ131の値域からランダムな離散値dvを選択して、アクター101に出力する。
【0132】
(ステップS1205)
アクター101は、ラーナー102のランダムユニット703によって生成された乱数値eを取得する。そして、アクター101は、乱数値eに基づいて行動402の選択方針(ランダムまたは2次元配列800に基づく選択)を決定し、決定した選択方針にしたがって、行動402を選択する。
【0133】
具体的には、たとえば、乱数値eがしきい値eth(たとえば、eth=0.5)以上であれば、アクター101は、行動テーブル105からランダムに1つの行動を選択し、かつ、当該選択した行動402の対象となるノードに必要な数分の対象ノードをランダムに選択する。
【0134】
たとえば、行動テーブル105からランダムに選択された行動402が、行動a1の「CredScanBashHistory(node1)」であれば、ネットワーク106から1個のノードがnode1としてランダムに選択される。たとえば、node1として「Website.Directory」が選択されたとすると、アクター101は、node1が指定された行動402として「CredScanBashHistory(Website.Directory)」を採用することになる。
【0135】
一方、ランダムユニット703が出力した乱数値がeth未満であれば、アクター101は、ネットワークユニット700内のQ*ネットワーク701に、状態s(t)を入力し、2次元配列800を計算する。
【0136】
アクター101は、2次元配列800のノード構成801ごとに、上記式(1)の外部価値関数z
e(t)の値を示す1次元配列802の値と、内部価値関数z
i(t)の値を示す1次元配列803の値と、を代入し、選択ユニット520が選択したアームに対応するアクターリスクパラメータ131の離散値dv(
図10の例ではdv1)をβに代入する。
【0137】
たとえば、離散値dv1=0.5の場合、価値関数Q(t=0)の最大値は行動IDa0の対象ノード「Website1」の外部価値関数ze(t=0)の値「3.88」と、行動IDa0の対象ノード「Website1」の内部価値関数zi(t=0)の値「0.02」に離散値dv1=0.5を乗じた値「0.01」との和の値「3.89」である。
【0138】
行動テーブル105において、行動IDa0の行動402は、「SearchEdgeHistory(node1)」である。アクター101は、最大価値となる「SearchEdgeHistory(Website1)」を選択する。このように、アクター101は、より価値の高い行動を選択することができる。
【0139】
(ステップS1206)
アクター101は、
図10のステップS1003、S1004に示したように、タイムステップtでステップS1205で選択された行動402を行ったあとのネットワーク106の状態s(t+1)への更新と、その報酬r(t)の計算と、を実行する。具体的には、たとえば、アクター101は、ステップS1205で選択された行動402に基づいて、状態テーブル900におけるステータス902と接続情報903とを更新する。
【0140】
具体的には、たとえば、アクター101は、更新後の状態s(t+1)での状態テーブル900において、ステータス902が「owened」であるノードの数を報酬r(t)として計算する。アクター101は、報酬r(t)をデータメモリ500に保存するとともにラーナー102に出力する。
【0141】
なお、報酬r(t)は、ステータス902が「owened」であるノードの数に限定されない。たとえば、ステータス902に応じてポイントを付与し、その合計を報酬r(t)としてもよい。たとえば、「undiscoverd」が0ポイント、「discovered」が1ポイント、「owned」が3ポイントというように、攻撃の効果を奏するような新規な状態に遷移するほどポイントを高く設定することで、未知の状態s(t+1)が得られた時の報酬r(t)を高くすることができる。このような、報酬rの種類も、上述した報酬選択領域1150で選択可能である。
【0142】
(ステップS1207)
つぎに、ネットワークユニット700は、報酬r(t)、報酬履歴602、ネットワーク106の状態s(t),s(t+1)を1組のデータとしたデータパックD(t)を、リプレイメモリ720に保存する。
【0143】
また、強化学習装置200は、更新されたネットワーク106の状態s(t+1)を表示する。具体的には、たとえば、強化学習装置200は、記憶デバイス202に保存されたデータパックD(t)をロードし、データパックD(t)内のネットワーク106の状態s(t+1)におけるステータス902および接続情報903を用いてグラフネットワーク図を描画し、ネットワーク表示領域1170に表示する。
【0144】
また、強化学習装置200は、データパックD(t)内の報酬r(t)をネットワーク表示領域1170に表示する。なお、記憶デバイス202にデータパックD(t)が保存されていない場合、強化学習装置200は、分析失敗を示す分析結果を表示してもよい。
【0145】
(ステップS1208)
強化学習装置200は、タイムステップtが所定の周期T(Tは1以上の整数)について、tがノンゼロかつt/Tの余りがゼロとなる場合(ステップS1208:Yes)、ステップS1209に移行する。そうではない場合(ステップS1208:No)、タイムステップtをt=t+1として、ステップS1203に戻る。これにより、所定の周期TのタイムステップtでステップS1209とステップS1210による学習の実行が可能になる。
【0146】
(ステップS1209)
学習パラメータ更新ユニット730は、リプレイメモリ720からランダムにJ個のデータパックD(j)(j=1,…,J)(以下、データパック群Ds)をロードし、下記式(2)により教師信号y(j)を更新する。教師信号y(j)は、行動402の価値の予測値である。なお、実施例1ではJの上限を100とする。
【0147】
【0148】
上記式(2)において、右辺のr(j)は、j番目のデータパックD(j)内の報酬である。また、右辺のγは割引率であり、実施例1では、γ=0.998の固定値とする。また、右辺のmaxQ(s(j+1);θ)は、価値関数Q(s(j+1);θ)の最大値を算出する計算処理である。
【0149】
価値関数Q(s(j+1);θ)は、学習パラメータθの適用を条件として、状態s(j+1)における行動の価値を示す。具体的には、たとえば、ネットワークユニット700は、Qネットワーク702に状態s(j+1)を入力し、Qネットワーク702が学習パラメータθを適用してt=jの2次元配列800を算出する。ネットワークユニット700は、下記式(3)のように外部価値関数ze(s(j+1);θ)の値と内部価値関数zi(s(j+1);θ)の値に好奇心の値β(離散値dv)で重みづけした値との和である行動402の価値を、ノード構成801ごとに算出する。
【0150】
【0151】
上記式(3)の右辺の外部価値関数ze(s(j+1);θ)は、学習パラメータθの適用を条件として、状態s(j+1)における外部価値関数ze(j+1)の値を示す。上記式(3)の右辺の内部価値関数zi(s(j+1);θ)は、学習パラメータθの適用を条件として、状態s(j+1)における内部価値関数zi(j+1)の値を示す。
【0152】
たとえば、
図8の行動a0のノード構成801「Website1」の列の外部価値関数z
e(j)の値「3.88」と内部価値関数z
i(j)の値「0.02」から得られるQ(s(j+1);θ)の値「3.89」が、他のいずれのノード構成801のQ(s(j+1);θ)の値よりも大きい場合、計算処理maxQ(s(j+1);θ)は、行動a0のノード構成801「Website1」における行動価値が示す値「3.89」を出力する。このようにして、学習パラメータ更新ユニット730は、教師信号y(j)を更新する。
【0153】
(ステップS1210)
つぎに、学習パラメータ更新ユニット730は、学習計算を実行する。具体的には、たとえば、勾配算出ユニット631は、下記式(4)を用いて学習パラメータθについて勾配gを出力し、勾配gを学習パラメータθに加算することで学習パラメータθを更新する。
【0154】
【0155】
上記式(4)におけるκは、ラーナーリスクパラメータ132である。κが0<κ≦1の場合、教師信号y(j)がQ*ネットワーク701が予測する価値Q(s(j);θ)より大きいときにより小さい学習率(1-κ)または(1+κ)で学習し、逆の時は大きい学習率とする。つまり、予想より高い価値が得られたときには学習をせずに予想よりも価値が低かったときに強く学習するという、リスクを回避することを重視するローリスクローリターン型の学習となる。
【0156】
逆にκが-1≦κ<0の場合は、予想よりも価値が低かったときは学習せずに予想よりも高かったときに強く学習するという、リスクをとってより高い価値を目指すことを重視するハイリスクハイリターン型の学習となる。
【0157】
上記式(4)の右辺第2項は、行動402の価値の勾配gである。これにより、Qネットワーク702は、報酬r(j)が考慮された更新後の学習パラメータθにより、報酬、たとえば、「owned」ステータス902が「owened」であるノードの数が大きくなるような行動402を示すことができる。
【0158】
また、学習計算(ステップS1210)において、学習パラメータ更新ユニット730は、Qネットワーク702の更新後の学習パラメータθを、Q*ネットワーク701の学習パラメータθ*に上書きする。すなわち、学習パラメータθ*が、更新後の学習パラメータθと同一の値となる。これにより、Q*ネットワーク701は、行動価値、すなわち、目的変数の予測精度が高くなると期待できる行動402を特定することができる。
【0159】
(ステップS1211)
強化学習装置200は、リスクパラメータテーブル103および分析対象DB104のうち少なくとも一方の変更があったか否かを判断する(ステップS1211)。リスクパラメータテーブル103および分析対象DB104のいずれにも変更がない場合(ステップS1211:1)、タイムステップtをt=t+1に更新して、ステップS1203に移行する。
【0160】
リスクパラメータテーブル103および分析対象DB104のうちリスクパラメータテーブル103のみ変更があった場合(ステップS1211:2)、タイムステップtをt=t+1に更新して、ステップS1202に移行する。たとえば、入出力画面1100で停止ボタン1101が押下され、リスクパラメータ入力領域1140に値が再入力され、再開ボタン1182が押下された場合が該当する。
【0161】
リスクパラメータテーブル103および分析対象DB104のうち分析対象DB104のみ変更があった場合(ステップS1211:3)、ステップS1201に移行する。たとえば入出力画面1100で停止ボタン1181が押下され、ロードボタン1110が再押下され、再開ボタン1182が押された場合が該当する。
【0162】
また、タイムステップtが上限に達すると当該エピソードが終了して、次のエピソードについて、ステップS1201から処理が再開される。また、エピソードの回数が上限に達すると、データ処理が終了する。
【0163】
このように、実施例1によれば、ある規定されたネットワーク106に対して、ある報酬rを最大化するようなサイバー攻撃を、とるべきリスクを規定した上で自動的に求めることができる。
つぎに、実施例2について説明する。実施例1では、サイバー攻撃を担うサイバー攻撃AI100について説明した。これに対し、実施例2では、サイバー攻撃AI100に加えて、サイバー攻撃AI100とは独立した防衛AIを含む例について説明する。防衛AIは、サイバー攻撃AI100と同様に、アクターおよびラーナーを有する。防衛AIは、ネットワーク106のノードのステータス902が「owened」とならないようにノードを防衛したり、ステータス902が「owened」になったノードを取り返したりする(「owened」から「discovered」に変更)AIである。実施例2では、実施例1との相違点を中心に説明するため、実施例1と同一構成には同一符号を付し、その説明を省略する。
攻撃側ステータス1301は、サイバー攻撃AI100から見た、そのノードのステータス302である。具体的には、たとえば、攻撃側ステータス1301は、サイバー攻撃AI100の攻撃により変更可能性があるノード301の状態を示す。
防衛側ステータス1302は、防衛AIから見た、そのノードのステータス302である。具体的には、たとえば、防衛側ステータス1302は、防衛AIの防衛により変更可能性があるノード301の状態を示す。
攻撃側接続関係1303は、サイバー攻撃AI100から見た、そのノードの接続先ノードを示す。防衛側接続関係1304は、防衛AIから見た、そのノードの接続先ノードを示す。
攻撃側および防衛側を区別しない場合は、符号の末尾の「A」および「D」、ならびに、先頭の「攻撃側」および「防衛側」を省略する。なお、データメモリ500は、攻撃側回路構成1400Aおよび防衛側回路構成1400Dで共有される。
一方、防衛側行動テーブル105Dは、防衛AIである防衛側回路構成1400Dがネットワーク106内のノードを防衛するのに必要な行動402を規定する。具体的には、たとえば、防衛側行動テーブル105Dにおける行動402は、防衛側アクターユニット510Dによって選択可能な防衛方法である。この行動402は、ローカル防衛行動と、リモート防衛行動と、接続行動と、に分類される。
ローカル防衛行動は、ローカルな防衛の対象となる一つのノード(node1)を変数とする。具体的には、たとえば、ローカル防衛行動は、node1を起点として他のノードを隠蔽したり(「discovered」→「undiscovered」)、所有されたノードを奪取したり(「owned」→「discovered」)する行動である。
リモート防衛行動は、リモート防衛の起点となる二つのノード(node1,node2)を変数とする。具体的には、たとえば、リモート攻撃行動は、node1およびnode2を起点として他のノードを隠蔽したり(「discovered」→「undiscovered」)、所有されたノードを奪取したり(「owned」→「discovered」)する行動である。
たとえば、あるタイムステップtにおいて、攻撃側回路構成1400Aが状態s(t)Aを状態s(t+1)Aに更新した場合、防衛側回路構成1400Dは、攻撃側回路構成1400Aで更新された状態s(t+1)Aを状態s(t)Dとして、状態s(t+1)Dに更新する。そして、攻撃側回路構成1400Aは、状態s(t+1)Aを状態s(t+1)Dで更新する。
ここでは、同じタイムステップtにおいて攻撃側回路構成1400Aが先に攻撃して防衛側回路構成1400Dがその後防御するような状態s(t)の更新例について説明したが、防衛側回路構成1400Dが先に防御して、攻撃側回路構成1400Aがそのあと攻撃するような状態s(t)の更新でもよい。
また、どちらが先に攻撃または防衛を行うかを規定せず、攻撃側回路構成1400Aと防衛側回路構成1400Dが競合するような行動402を選択した場合にはどちらの行動402も採用されないとし、状態s(t)は変化しないとしてもよい。
一方、それぞれの行動テーブル105、得られた報酬r、報酬履歴テーブル600、および、ラーナー102内のネットワークユニット700がリプレイメモリ720に格納したデータパックD(t)を共有しない。
攻撃側回路構成1400Aでの報酬r(t)は、実施例1で示した通りである。一方、防衛側回路構成1400Dでの報酬r(t)は、たとえば、ネットワーク106内のノード総数からステータス902が「owened」であるノードの数を減算した値となる。
また、ステータス902が「owened」であるノードの数に限定されない。たとえば、ステータス902に応じてポイントを付与し、その合計を報酬r(t)としてもよい。たとえば、「undiscoverd」が3ポイント、「discovered」が1ポイント、「owned」が0ポイントというように、攻撃の効果を奏するような新規な状態に遷移するほどポイントを低く設定する。
入出力画面1500は、攻撃者数および防衛者数の入力領域1501を有する。攻撃者数および防衛者数の入力領域1501は、攻撃者数入力領域1511と防衛者数入力領域1512とを有する。攻撃者数入力領域1511は、ユーザUの操作により、攻撃者数の入力を受け付ける領域である。攻撃者数とは、サイバー攻撃AI100の数である。防衛者数入力領域1512は、ユーザUの操作により、防衛者数の入力を受け付ける領域である。防衛者数とは、防衛AIの数である。
また、攻撃側ラーナーリスクパラメータ132の入力領域1142Aに「-0.5」が入力されている。したがって、サイバー攻撃AI100は、予想よりも価値が低かったときは学習せずに予想よりも高かったときに強く学習するという、リスクをとってより高い価値を目指すことを重視するハイリスクハイリターン型の学習を攻撃側ラーナー102Aに実行させることになる。
また、防衛側ラーナーリスクパラメータ132の入力領域1142Dに「0.5」が入力されている。したがって、防衛AIは、予想より高い価値が得られたときには学習をせずに予想よりも価値が低かったときに強く学習するという、リスクを回避することを重視するローリスクローリターン型を防衛側ラーナー102Dに実行させることになる。
このように、実施例2によれば、ある規定されたネットワーク106に対して、攻撃側の報酬rを最大化するようなサイバー攻撃と、防御側の報酬rを最大化するような防御とを、とるべきリスクを規定した上で自動的に求めることができる。
なお、実施例2では、攻撃側回路構成1400Aおよび防衛側回路構成1400Dを1つずつ配置した構成について説明したが、攻撃側回路構成1400Aおよび防衛側回路構成1400Dは、それぞれ1以上配置してもよい。また、複数の攻撃側回路構成1400Aのみで構成してもよい。
また、実施例1および実施例2では、攻撃対象または防御対象としてネットワーク106を例に挙げて説明したが、攻撃対象または防御対象は、このようなサイバー攻撃やその防衛に限られない。たとえば、ある市場での株式取引にも適用可能であり、分析対象DB104、1300を各会社のIDとその会社の株式価格、純利益、従業員数、売上高などの会社情報を変数群とするデータセットとし、行動テーブル105を株式の売買、行動テーブル105の行動の対象を各会社、状態s(t)を分析対象DB104、1300の会社情報とすればよい。また、実施例1の場合、報酬r(t)は、ユーザの得た総利益とすればよい。また、実施例2の場合、防衛者と攻撃者は複数の競争的な株式取引者とすればよい。
以上説明したように、本実施例にかかる強化学習装置200は、好奇心をもつ分散強化学習において、ラーナー102が行動402の選択指針となる価値関数の学習において採るべきリスクであるラーナーリスクパラメータ132と、行動402を選択する際に採用すべきアーム、すなわち離散化された好奇心パラメータの値、をアクター101が選択する際にとるべきリスクであるアクターリスクパラメータ131と、を調節する。したがって、両リスクを考慮したハイリスクハイリターン型またはローリスクローリターン型の学習が可能になる。
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。たとえば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加、削除、または置換をしてもよい。
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、たとえば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、SSD(Solid State Drive)等の記憶装置、又は、IC(Integrated Circuit)カード、SDカード、DVD(Digital Versatile Disc)の記録媒体に格納することができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。