(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-24
(45)【発行日】2024-07-02
(54)【発明の名称】部分抽出装置、部分抽出方法およびプログラム
(51)【国際特許分類】
G06F 8/65 20180101AFI20240625BHJP
G06F 30/10 20200101ALI20240625BHJP
【FI】
G06F8/65
G06F30/10 200
(21)【出願番号】P 2020065028
(22)【出願日】2020-03-31
【審査請求日】2023-02-08
【国等の委託研究の成果に係る記載事項】(出願人による申告)令和元年度、総務省、「革新的AIネットワーク統合基盤技術の研究開発」、産業技術力強化法第17条の適用を受ける特許出願
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100149548
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100181135
【氏名又は名称】橋本 隆史
(72)【発明者】
【氏名】八鍬 豊
(72)【発明者】
【氏名】黒田 貴之
【審査官】児玉 崇晶
(56)【参考文献】
【文献】特開平06-019694(JP,A)
【文献】国際公開第2019/244446(WO,A1)
【文献】特開平06-202859(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/00
G06F 8/65
G06F 30/10
(57)【特許請求の範囲】
【請求項1】
システムの構成をグラフで示す第一情報を取得する構成情報取得手段と、
前記第一情報が示す前記システム
をレイヤに基づいて分割した部分の少なくとも1つを含む部分の構成をグラフで示す第二情報を抽出する部分構成情報抽出手段と、
を備える部分抽出装置。
【請求項2】
前記部分構成情報抽出手段は、前記システムをネットワークドメインに基づいて分割した部分の少なくとも1つを含む前記部分の構成を示す前記第二情報を抽出する、
請求項1に記載の部分抽出装置。
【請求項3】
前記部分構成情報抽出手段は、前記システムの構成が前記第一情報で抽象的に示されている部分の構成を示す前記第二情報を抽出する、
請求項1
または請求項2に記載の部分抽出装置。
【請求項4】
前記部分構成情報抽出手段は、前記第一情報に第一の部分抽出方法を適用して抽出した部分に、さらに第二の部分抽出方法を適用して前記第二情報を抽出する、
請求項1から
3の何れか一項に記載の部分抽出装置。
【請求項5】
システムの構成をグラフで示す第一情報を取得する工程と、
前記第一情報が示す前記システム
をレイヤに基づいて分割した部分の少なくとも1つを含む部分の構成をグラフで示す第二情報を抽出する工程と、
を含む部分抽出方法。
【請求項6】
コンピュータに、
システムの構成をグラフで示す第一情報を取得する工程と、
前記第一情報が示す前記システム
をレイヤに基づいて分割した部分の少なくとも1つを含む部分の構成をグラフで示す第二情報を抽出する工程と、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、部分抽出装置、部分抽出方法およびプログラムに関する。
【背景技術】
【0002】
ソフトウェアを複数の部分に分割し、分割した各部分の設計または開発を行う場合がある。ソフトウェアの分割に関して、特許文献1には、プログラムを関数等のプログラム要素に分割し、プログラム要素間における配列へのアクセスの関係に基づいてプログラム要素を複数のグループにグルーピングする情報処理装置が記載されている。
また、特許文献2には、ソフトウェアファイルのアーチファクトを有するデータベースにアクセスし、アーチファクトに基づいてソフトウェアファイルのデザインパターンを特定する方法が記載されている。
【0003】
特許文献3に記載の技術では、未確定な部分が含まれているシステムの構成を示す情報(抽象構成情報)の前記未確定な部分を確定することによって、前記抽象構成情報を具体化する方法が規定された具体化規則を記憶部に記憶させる。そして、グラフ形式で表現されたシステムの構成要件に含まれている抽象構成情報を、記憶されている具体化規則を用いて具体化する。これによって、前記構成要件を基に、前記未確定な部分が含まれていないシステムの構成を示す情報であるシステム構成情報を生成する。
非特許文献1は、カリキュラム強化学習について開示する。カリキュラム強化学習は、解決すべき難しい問題をはじめから学習するのではなく、簡単な問題から順番に学習するというアプローチを経ることにより、効率よく学習する技術である。係るカリキュラム強化学習は、採り得る解のパターンが多数あることに起因して、学習を繰り返しても報酬が得られる頻度が低いことにより、適切な解を得るための方法がうまく学習できないという課題を解決するための一手段である。
非特許文献2は、特許文献3に示されるような技術において、前記未確定な部分を確定する方法が複数ある場合にいずれかを選択するにあたり、強化学習で学習した結果を用いて有望な方法を選択することで、効率的に前記システム構成情報を生成する技術を開示する。
【先行技術文献】
【特許文献】
【0004】
【文献】国際公開第2018/066074号
【文献】特表2017-519300号公報
【文献】国際公開第2019/216082号
【非特許文献】
【0005】
【文献】Y. Bengio、外3名、“Curriculum learning”、In International Conference on Machine Learning、pp. 41-48、 ACM、2009年
【文献】丸山貴志、外4名、「探索型ネットワーク設計導出方式の強化学習による探索の効率化」、信学技報、vol. 118、no. 483、ICM2018-71、pp. 123-128、2019年3月
【発明の概要】
【発明が解決しようとする課題】
【0006】
個々の設計をより簡単にする観点から、ソフトウェアに限らずハードウェアの設計を含むシステム設計においても、例えば設計対象のシステムを分割するなど、個々の設計対象の規模を比較的小さくできることが好ましい。
【0007】
本発明は、上述の課題を解決することのできる部分抽出装置、部分抽出方法およびプログラムを提供することを目的としている。
【課題を解決するための手段】
【0008】
本発明の第1の態様によれば、部分抽出装置は、システムの構成をグラフで示す第一情報を取得する構成情報取得手段と、前記第一情報が示す前記システムをレイヤに基づいて分割した部分の少なくとも1つを含む部分の構成をグラフで示す第二情報を抽出する部分構成情報抽出手段と、を備える。
【0009】
本発明の第2の態様によれば、部分抽出方法は、システムの構成をグラフで示す第一情報を取得する工程と、前記第一情報が示す前記システムをレイヤに基づいて分割した部分の少なくとも1つを含む部分の構成をグラフで示す第二情報を抽出する工程と、を含む。
【0010】
本発明の第3の態様によれば、プログラムは、コンピュータに、システムの構成をグラフで示す第一情報を取得する工程と、前記第一情報が示す前記システムをレイヤに基づいて分割した部分の少なくとも1つを含む部分の構成をグラフで示す第二情報を抽出する工程と、を実行させるためのプログラムである。
【発明の効果】
【0011】
この発明によれば、ハードウェアの設計を含むシステム設計において、個々の設計対象の規模を比較的小さくすることができる。
【図面の簡単な説明】
【0012】
【
図1】実施形態に係る設計システムの装置構成の例を示す概略構成図である。
【
図2】実施形態に係る設計システムが扱うシステム要件の例を示す図である。
【
図3】実施形態に係る変換規則適用前のシステム要件の例を示す図である。
【
図4】実施形態に係る変換規則適用後のシステム要件の例を示す図である。
【
図5】実施形態に係るシステム設計装置が行うシステム設計における変換規則適用の分岐の例を示す図である。
【
図6】実施形態に係る強化学習装置の機能構成の例を示す概略ブロック図である。
【
図7】実施形態に係るシステム設計装置の機能構成の例を示す概略ブロック図である。
【
図8】実施形態に係るシステム設計装置がシステム設計を行う処理手順の例を示すフローチャートである。
【
図9】実施形態に係る強化学習装置が評価モデルを学習する処理手順の例を示すフローチャートである。
【
図10】実施形態に係る強化学習装置が、段階的に評価モデルを学習する処理手順の例を示すフローチャートである。
【
図11】ネットワークドメイン毎に分割されたシステム要件の例を示す図である。
【
図12】実施形態に係る強化学習装置がシステム要件をネットワークドメイン毎に分割する処理手順の例を示すフローチャートである。
【
図13】レイヤ毎に分割されたシステム要件の例を示す図である。
【
図14】実施形態に係る強化学習装置がシステム要件をレイヤ毎に分割する処理手順の例を示すフローチャートである。
【
図15】システム要件から抽出された抽象的部分の例を示す図である。
【
図16】実施形態に係る強化学習装置がシステム要件から抽象的部分を抽出する処理手順の例を示すフローチャートである。
【
図17】実施形態に係る部分抽出装置の構成の例を示す図である。
【
図18】実施形態に係る部分抽出方法における処理の手順の例を示すフローチャートである。
【
図19】少なくとも1つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
【発明を実施するための形態】
【0013】
本出願人は、例えば特許文献3において、システムを自動設計する技術を提案している。また、本発明者等は、例えば非特許文献2において、システムの自動設計に対して機械学習を適用する技術を提案している。この場合、システムの自動設計では、製品レベルのシステムの設計規模が膨大であるという条件があることに起因して、強化学習を行う際に設計が成功する確率は微少であり報酬が得られる頻度が非常に低いという問題が生じるので、学習がうまく進まないという問題がある。この場合、背景技術欄にて参照したように、カリキュラム強化学習を利用することが想定される。しかしながら、学習が比較的簡単なシステム要件の生成を目的にシステム要件を闇雲に分割しても、学習する価値のあるシステム要件は生成できない。これに対し、本発明者は、設計者のノウハウを踏まえ学習する価値のあるシステム要件を元のシステム要件から自動的に生成する知見を見出した。そこで係る知見に基づく本発明を、以下に開示する実施形態を例に詳細に説明する。
【0014】
以下、本発明の実施形態を説明するが、以下の実施形態は請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、実施形態に係る設計システムの装置構成の例を示す概略構成図である。
図1に示す構成で、設計システム1は、強化学習装置11と、システム設計装置12とを備える。
【0015】
設計システム1は、システム設計を自動的または半自動的に行う。具体的には、システム設計装置12が、設計対象システムのシステム要件を取得する。ここでいうシステム要件は、当該設計対象システムが備えるべき構成を記述した情報である。システム設計装置12に入力されるシステム要件では、当該設計対象システムの構成要素を抽象的に記述することが可能である。これに対し、システム設計装置12は、取得したシステム要件に対して、予め定められた変換規則を繰り返し適用することで、システムを配備(Deployment)可能なレベルにまでシステム要件を具体化する。
【0016】
図2は、設計システム1が扱うシステム要件の例を示す図である。
図2は、設計システム1が不審者検知システムを設計する場合の、設計対象のシステム要件の例を示している。
図2の例のように、設計システム1が扱うシステム要件はグラフ形式で記述される。記述されたグラフにおいて、ノード、エッジの何れにも属性情報を付加することができる。
【0017】
例えば、ノードには、そのノードが示す機能または機器などの名称または識別情報が属性情報として付加されていてもよい。
図2の例の場合、ノードN101は、カメラ機能(撮影機能)を示す。ノードN102およびN109は、何れもネットワークスイッチを示す。ノードN103およびN110は、何れもルータを示す。ノードN104は、顔認証機能を示す。ノードN105は、クラウド基盤を示す。ノードN106は、WAN(Wide Area Network、広域通信網)を示す。ノードN107は、モニタ機能(画像表示機能)を示す。ノードN108は、サーバ装置を示す。
【0018】
また、ノードには、そのノードの抽象度も属性情報として付加されていてもよい。
図2の例の場合、ノードN101、N104、N105、および、N107は、抽象的なノードである。一方、ノードN102、N103、N106、N108、N109、および、N110は、具体的なノードである。ここで、抽象的なノードとは、予め定められた変換規則を少なくとも1回参照することにより、現在よりも具体的な構成を表すノードに変換できるノードである。一方、具体的なノードは、当該変換規則を参照しても、これ以上は具体的な構成を表すノードには変換することができないノードである。
【0019】
システム設計装置12は、抽象的なノードを具体化するように、システム要件に当該変換規則を適用する。例えば、システム設計装置12が、
図2に例にされるシステム要件に、カメラ機能を示すノードN101を、カメラ(撮像装置)のノードと、カメラを制御する制御装置のノードとを含む部分グラフ(Subgraph)に変換する変換規則を適用してもよい。
【0020】
また、
図2の例では、エッジE101、E106、および、E109のそれぞれの属性情報「join」と、エッジE103およびE107のそれぞれの属性情報「http」が示されている。「join」は、所属関係を示す。例えば、ノードN101が示すカメラ機能は、ノードN102が示すネットワークスイッチが形成するLAN(Local Area Network)に含まれる。ノードN104が示す顔認証機能は、ノードN105が示すクラウド基盤上に設けられる。ノードN107が示すモニタ機能は、ノードN108が示すサーバ装置を用いて制御される。
【0021】
「http」は、HTTP(Hyper Text Transfer Protocol)を用いた通信を示す。例えば、エッジE103は、ノードN101が示すカメラ機能からノードN105が示す顔認証機能へ、HTTPでデータを送信することを示している。エッジE107は、ノードN105が示す顔認証機能からノードN107が示すモニタ機能へ、HTTPでデータを送信することを示している。
なお、設計システム1が用いるシステム要件で、エッジが向きを有していること(
図2の例では、エッジが矢印で示されること)は必須ではない。例えば、システム要件が無向グラフを用いて示されていてもよい。
また、エッジにも、そのエッジの抽象度も属性情報として付加されていてもよい。
図2の例の場合、エッジE101、E103、E105、E107およびE109は、抽象的なエッジである。一方、エッジE102、E104、E106、E108、E110およびE111は、具体的なエッジである。ここで、抽象的なエッジとは、予め定められた変換規則を少なくとも1回参照することにより、現在よりも具体的な構成を表すエッジに変換できるエッジである。一方、具体的なエッジは、当該変換規則を参照しても、これ以上は具体的な構成を表すエッジには変換することができないエッジである。
【0022】
設計システム1が用いる変換規則には、エッジを具体化する変換規則が含まれていてもよい。
図3は、変換規則適用前のシステム要件の例を示す図である。
図3に示されるシステム要件では、ノードN201が示すカメラ機能が、ノードN202が示すワークステーションに接続される。また、ノードN203が示す顔認証機能が、ノードN204が示すワークステーション上で実行される。エッジE201は、ノードN201が示すカメラ機能から、ノードN203が示す顔認証機能へ、HTTPでデータを送信することを示していることとする。
【0023】
図4は、変換規則適用後のシステム要件の例を示す。
図4は、
図3に示されるシステム要件に変換規則を適用した例を示している。
図4では、
図3のエッジE201に代えて、エッジE211が設けられている。エッジE211は、ノードN202が示すワークステーションから、ノードN204が示すワークステーションへTCP(Transmission Control Protocol)を用いてデータを送信することを示していることとする。即ち、
図4は、
図3のシステム要件に対する変換規則の適用により、HTTPを用いた通信が、TCPを用いた通信に具体化する変換が行われたことが表されている。
【0024】
予め定められた複数の変換規則のうち、システム設計装置12がシステム要件にどの変換規則を適用するかによって、さらには、システム設計装置12がシステム要件に複数の変換規則を適用する順番によって、変換後のシステム要件が表す内容(構成)が異なるという事象が生じる。特に、システム要件に適用する変換規則によって、さらには、システム要件に複数の変換規則を適用する順番によって、システム設計装置12がシステムの設計に成功する場合と、失敗する場合とに分かれる。換言すると、システム設計装置12の目的は、システムを配備(Deployment)可能なレベルにシステム要件を具体化することである。しかしながら、システム設計装置12は、システムの構成要素の一部が抽象的に記述されたままであるのに、それ以上は適用可能な変換規則が無くなることは、システム設計装置12によるシステム設計の失敗を意味する。このことについて
図5を参照して更に説明する。
【0025】
図5は、システム設計装置12が行うシステム設計における変換規則適用の分岐の例を示す図である。
図5に示す木(Tree)のノードは、システム要件を示すこととする。この場合、エッジは、システム要件に適用される変換規則を示す。なお、図を見やすくするために、木の一部の表記を省略し破線のエッジで示している。
【0026】
図5の例で、1つのノードから複数のエッジが出ていることは、予め定められた複数の変換規則において、ノードが示すシステム要件に適用可能な変換規則が複数あることを示している。
根(Root)であるノードN301は、システム設計装置12に入力されるシステム要件を示す。葉(Leaf)は、適用可能な変換規則がないシステム要件を示す。
図5の木が複数の葉を有しているように、システム要件に対してどの変換規則を適用するかによって、さらには、システム要件に複数の変換規則を適用する順番によって、システム設計の結果として得られるシステム要件が異なる。
【0027】
システム設計装置12が、ノードN302が示すシステム要件を取得した場合、このシステム要件が、抽象的な部分を含んでいないときは、システム設計装置12は、システム設計に成功している。一方、ノードN302が示すシステム要件が抽象的な部分を含んでいるときは、抽象的な部分を具体化できる変換規則が無いため、システム設計装置12は、システム設計に失敗したことになる。
【0028】
システム設計装置12がシステム設計に成功する可能性を高めるため、強化学習装置11は、システム設計装置12がシステム要件に適用する変換規則を選択するための評価モデルを提供する。例えば、強化学習装置11は、システム要件の入力を受けてシステム設計に成功する可能性の評価値を出力する評価モデルを、システム設計装置12に提供する。
設計システム1が用いる評価モデルは、特定の方式のモデルに限定されない。例えば、評価モデルがニューラルネットワーク(Neural Network;NN)を用いて構成されていてもよいが、これに限定されない。
【0029】
システム設計装置12は、現在のシステム要件に適用可能な変換規則毎に、変換後のシステム要件を算出し、算出したシステム要件を評価モデルに入力して、変換規則毎に評価値を算出する。システム設計装置12は、評価が高い(評価値が大きい)変換規則を優先的に選択する。
【0030】
システム設計装置12が、複数の変換規則のうち何れか1つを選択し、1つのノードから1つのノードに到達するようにしてもよい。すなわち、システム設計装置12が、1つのシステム要件に1つの変換規則を適用して、1つの変換後のシステム要件を取得するようにしてもよい。
【0031】
あるいは、システム設計装置12が、システム要件を5つまで選択可能とするなど、システム設計装置12が1つのノードから複数のノードに到達できるようにしてもよい。すなわち、システム設計装置12が、1つのシステム要件に対して複数の変換規則をそれぞれ適用し、複数の変換後のシステム要件(変換規則毎の変換後のシステム要件)を取得するようにしてもよい。
【0032】
強化学習装置11およびシステム設計装置12が、それぞれ、例えばパソコン(Personal Computer;PC)またはワークステーション(Workstation)などのコンピュータを用いて構成されていてもよい。あるいは、強化学習装置11およびシステム設計装置12のうち何れか一方または両方が、ASIC(Application Specific Integrated Circuit)を用いて構成されるなど、専用のハードウェアを用いて構成されていてもよい。
【0033】
図6は、強化学習装置11の機能構成の例を示す概略ブロック図である。
図6に示す構成で、強化学習装置11は、第一通信部110と、第一記憶部180と、第一制御部190とを備える。第一制御部190は、強化学習部191と、部分構成情報抽出部192とを備える。
第一通信部110は、他の装置と通信を行う。特に、第一通信部110は、上述した評価モデルをシステム設計装置12へ送信する。
【0034】
第一記憶部180は、各種データを記憶する。第一記憶部180は、強化学習装置11が備える記憶デバイスを用いて構成される。
第一制御部190は、強化学習装置11の各部を制御して各種処理を実行する。第一制御部190の機能は、強化学習装置11が備えるCPU(Central Processing Unit)が、第一記憶部180からプログラムを読み出して実行することで実行される。
【0035】
強化学習部191は、上記の評価モデルを取得する。具体的には、強化学習部191は、強化学習にて評価モデルを学習する。強化学習部191が行う強化学習では、エージェントは、システム設計装置12が行うシステム設計と同様、システム要件に変換規則を繰り返し適用するシステム設計を行う。エージェントは、システム設計に成功した場合に報酬を与えられる。
【0036】
これに対し、エージェントがシステム設計に成功する頻度が低い場合、報酬が疎になって(すなわち、報酬を得られる頻度が低くなって)学習がなかなか進まなくなってしまう、という知見が得られた。例えば、設計対象システムの規模が大きい場合、1回のシステム設計でシステム要件に変換規則を適用する回数が多くなり、また、エージェントがシステム設計に失敗する頻度が比較的高くなり、報酬が疎になる。
【0037】
そこで、強化学習装置11は、比較的簡単なシステム設計にて評価モデルを学習した後、より複雑なシステム設計にて評価モデルを学習するというように、複数段階の学習を行う。
比較的簡単なシステム設計による評価モデルの学習のために、強化学習部191は、システム要件を部分構成情報抽出部192に出力する。部分構成情報抽出部192は、取得したシステム要件が示すシステム構成を分割するなど、システム要件が示すシステムの部分を示すシステム要件を生成し、強化学習部191に出力する。これにより、設計対象システムが簡単化され、エージェントがシステム設計に成功する頻度がより高くなって学習が進むことが期待される。
システムの部分をサブシステムとも称する。
【0038】
部分構成情報抽出部192が部分を抽出する対象のシステムを示すシステム要件(部分構成情報抽出部192が強化学習部191から取得するシステム要件)を、第一情報とも称する。部分構成情報抽出部192が抽出した部分を示すシステム要件(部分構成情報抽出部192が強化学習部191に出力するシステム要件)を、第二情報とも称する。
このように、強化学習部191は、第一情報を取得し、部分構成情報抽出部192へ出力する。強化学習部191は、構成情報取得手段の例に該当する。また、部分構成情報抽出部192は、第一情報が示すシステムの部分の構成をグラフで示す第二情報を抽出する。部分構成情報抽出部192は、部分構成情報抽出手段の例に該当する。
強化学習装置11は、部分抽出装置の例に該当する。
【0039】
図7は、システム設計装置12の機能構成の例を示す概略ブロック図である。
図7に示す構成で、システム設計装置12は、第二通信部210と、第二記憶部280と、第二制御部290とを備える。第二制御部290は、設計処理部291を備える。
第二通信部210は、他の装置と通信を行う。特に、第二通信部210は、上述した評価モデルを強化学習装置11から受信する。
【0040】
第二記憶部280は、各種データを記憶する。第二記憶部280は、システム設計装置12が備える記憶デバイスを用いて構成される。
第二制御部290は、システム設計装置12の各部を制御して各種処理を実行する。第二制御部290の機能は、システム設計装置12が備えるCPUが、第二記憶部280からプログラムを読み出して実行することで実行される。
【0041】
設計処理部291は、上述したシステム設計を行う。具体的には、設計処理部291は、設計対象システムのシステム要件の入力を受け、予め定められている複数の変換規則の何れかを、評価モデルを用いて選択してシステム要件に適用する処理を繰り返す。これにより、設計処理部291は、システム要件を具体化する。
【0042】
上述したように、システムを配備可能なレベルにシステム要件が具体化された場合、設計処理部291は、システム設計に成功している。一方、システム要件が抽象的な部分を含んだまま、システム要件に適用可能な変換規則がなくなった場合、設計処理部291は、システム設計に失敗している。
【0043】
図8は、システム設計装置12がシステム設計を行う処理手順の例を示すフローチャートである。
図8の処理で、設計処理部291は、設計対象システムのシステム要件を取得する(ステップS101)。
そして、設計処理部291は、システム要件に適用する変換規則を選択する(ステップS102)。上述したように、設計処理部291は、現在のシステム要件に適用可能な変換規則毎に、変換後のシステム要件を算出し、算出したシステム要件を評価モデルに入力して、変換規則毎に評価値を算出する。設計処理部291は、評価が高い(評価値が大きい)変換規則を優先的に選択する。設計処理部291が、評価が高い変換規則ほど高い確率で選択するようにして、何れか1つの変換規則を確率的に選択するようにしてもよい。
【0044】
次に、設計処理部291は、選択した変換規則をシステム要件に適用することで、システム要件の変換を実行する(ステップS103)。これにより、設計処理部291は、システム要件を具体化するように変換を行う。
次に、設計処理部291は、システム要件が全て具体化されたか否かを判定する(ステップS111)。例えば、設計処理部291は、システム要件を記述するグラフのノードおよびエッジに付加されている属性情報を参照して、抽象的なノードまたはエッジが残っているか否かを判定する。抽象的なノードまたはエッジが残っていないと判定した場合、設計処理部291は、システム要件が全て具体化されたと判定する。一方、抽象的なノードまたはエッジが残っていると判定した場合、設計処理部291は、システム要件に具体化されていない部分が残っていると判定する。
【0045】
システム要件が全て具体化されたと判定した場合(ステップS111:YES)、システム設計装置12は、システム設計成功時の処理として予め定められている処理を行う(ステップS121)。例えば、システム設計装置12が表示画面を備え、得られたシステム要件(具体化されたシステム要件)を表示するようにしてもよい。
ステップS121の後、システム設計装置12は、
図8の処理を終了する。
【0046】
一方、ステップS111で、システム要件に具体化されていない部分が残っていると判定した場合(ステップS111:NO)、設計処理部291は、システム要件(現在のシステム要件)に適用可能な変換規則があるか否かを判定する(ステップS131)。
適用可能な変換規則があると設計処理部291が判定した場合(ステップS131:YES)、処理がステップS102へ戻る。
【0047】
一方、ステップS131で、適用可能な変換規則が無いと判定した場合(ステップS131:NO)、システム設計装置12は、システム設計失敗時の処理として予め定められている処理を実行する(ステップS141)。例えば、システム設計装置12が、ステップS101で取得したシステム要件を用いて、
図8の処理を再帰的に実行するようにしてもよい。ステップS102で、設計処理部291が変換規則を確率的に選択することで、同じシステム要件から異なる設計結果が得られる場合があり、システム設計装置12が、再度のシステム設計で成功する可能性がある。
ステップ141の後、システム設計装置12は、
図8の処理を終了する。
【0048】
図9は、強化学習装置11が評価モデルを学習する処理手順の例を示すフローチャートである。
図9の処理で、強化学習部191は、システム設計の初期状態のシステム要件を1つ設定する(ステップS201)。例えば、強化学習部191が、ステップS201の処理を行う毎に、強化学習用に与えられた複数のシステム要件のうち何れか1つを選択して設定するようにしてもよい。
【0049】
なお、
図8を参照して説明したシステム設計装置12のシステム設計の場合と同様、強化学習部191がシステム要件に適用する変換規則を確率的に選択することで、同一のシステム要件から異なる設計結果が得られる。そこで、強化学習部191が、ステップS201の処理で、同じシステム要件を繰り返し設定するようにしてもよい。
【0050】
次に、強化学習部191は、システム要件に適用する変換規則を選択する(ステップS202)。具体的には、強化学習部191は、現在のシステム要件に適用可能な変換規則毎に、変換後のシステム要件を算出し、算出したシステム要件を評価モデルに入力して、変換規則毎に評価値を算出する。強化学習部191は、評価が高い(評価値が大きい)変換規則を優先的に選択する。強化学習部191は、評価が高い変換規則ほど高い確率で選択するようにして、何れか1つの変換規則を確率的に選択する。
【0051】
次に、強化学習部191は、選択した変換規則をシステム要件に適用することで、システム要件の変換を実行する(ステップS203)。これにより、強化学習部191は、システム要件を具体化するように変換を行う。
そして、強化学習部191は、評価モデルのパラメータ値を更新する(ステップS204)。強化学習部191は、システム設計に成功した場合に報酬を与え、それ以外の場合は報酬を与えないものとして、強化学習の手法でパラメータ値を更新する。
【0052】
次に、強化学習部191は、所定の学習終了条件が成立したか否かを判定する(ステップS205)。ここでの学習終了条件として、いろいろな条件を用いることができる。例えば、学習終了条件が、「強化学習部191が、所定回数以上システム設計に成功したこと」となっていてもよい。あるいは、学習終了条件が、「強化学習部191が、ステップS202からS204の処理を所定回数以上行ったこと」となっていてもよい。
【0053】
学習条件が成立したと判定した場合(ステップS205:YES)、強化学習装置11は、
図9の処理を終了する。
一方、ステップS205で、学習終了条件が成立していないと判定した場合(ステップS205:NO)、強化学習部191は、システム要件(現在のシステム要件)に適用可能な変換規則があるか否かを判定する(ステップS211)。
【0054】
適用可能な変換規則があると強化学習部191が判定した場合(ステップS211:YES)、処理がステップS202へ戻る。この場合、システム設計は終了しておらず、強化学習部191は、引き続きシステム設計を行って評価モデルを学習する。
一方、ステップS211で、適用可能な変換規則がないと強化学習部191が判定した場合(ステップS211:NO)、処理がステップS201へ戻る。この場合、システム設計は終了しており、強化学習部191は、新たなシステム設計を行って評価モデルを学習する。
【0055】
図10は、強化学習装置11が、段階的に評価モデルを学習する処理手順の例を示すフローチャートである。
図10は、強化学習装置11が、1つのシステム要件を取得する場合の例を示している。強化学習装置11が、学習用データとして複数のシステム要件を取得する場合、得られるシステム要件毎に
図10の処理を行うようにしてもよい。
【0056】
図10の処理で、強化学習部191は、1つのシステム要件を取得する(ステップS301)。
そして、強化学習部191は、得られたシステム要件の難しさを評価し(ステップS302)、評価結果に基づいてシステム要件が難しいか否かを判定する(ステップS303)。強化学習部191が、システム要件の難しさを評価する方法は、特定の方法に限定されない。例えば、強化学習部191が、システム要件を示すグラフに含まれるノードの個数など、システム要件を示すグラフの規模が所定の閾値以上である場合に、システム要件が難しいと判定するようにしてもよい。
【0057】
あるいは、強化学習部191が、ステップS101で得られたシステム要件に基づくシステム設計を複数回行い、システム設計に成功した回数を、システム設計に成功した回数と失敗した回数との合計値で除算して成功率を算出するようにしてもよい。そして、強化学習部191が、得られた成功率が所定の閾値未満である場合に、ステップS101で得られたシステム要件が難しいと判定するようにしてもよい。
【0058】
システム要件が難しくないと判定した場合(ステップS303:NO)、強化学習部191は、
図9の処理を実行する(ステップS321)。この場合、強化学習部191は、
図10のステップS301で取得したシステム要件を、
図9のステップS201で設定する。
ステップS3321の後、強化学習装置11は、
図10の処理を終了する。
【0059】
一方、ステップS303で、システム要件が難しいと判定した場合(ステップS303:YES)、部分構成情報抽出部192が、ステップS301で得られたシステム要件が示すシステムの部分を抽出し、抽出した部分を示すシステム要件を取得する(ステップS311)。ステップS311におけるシステムの部分を抽出する処理は、システム要件を示すグラフの部分グラフを抽出する処理として行うことができる。
【0060】
後述するように、部分構成情報抽出部192が、ステップS301で得られたシステム要件が示すシステムをネットワークドメイン毎に分割し、分割された部分毎にシステム要件を生成するようにしてもよい。あるいは、部分構成情報抽出部192が、ステップS301で得られたシステム要件が示すシステムをレイヤ(Layer)毎に分割し、分割された部分毎にシステム要件を生成するようにしてもよい。あるいは、部分構成情報抽出部192が、ステップS301で得られたシステム要件を示すグラフのうち、抽象的な部分の部分グラフをシステム要件として抽出するようにしてもよい。
【0061】
次に、強化学習装置11は、ステップS311で得られたシステム要件の1つについて、
図10の処理を再帰的に実行することで、段階的な強化学習を行う(ステップS312)。この場合、強化学習装置11は、ステップS311で得られたシステム要件の1つを、再帰的に実行する
図10のステップS301で取得するシステム要件として用いる。
【0062】
ステップS312の後、強化学習部191は、ステップS311で得られた部分のシステム要件を全て学習済みか否かを判定する(ステップS313)。
まだ学習が済んでいないシステム要件(部分のシステム要件)があると判定した場合(ステップS313:NO)、処理がステップS312に戻る。この場合、強化学習装置11は、ステップS312で
図10の処理を再帰的に実行し、まだ学習が済んでいないシステム要件を、ステップS312で再帰的に実行する
図10の処理で、ステップS301で取得するシステム要件として用いる。
一方、ステップS313で、部分のシステム要件を全て学習済みであると判定した場合(ステップS313:YES)、強化学習装置11は、
図10の処理を終了する。
【0063】
このように、強化学習装置11が、
図10の処理を再帰的に実行することで、部分構成情報抽出部192がシステムの部分を抽出する複数の方法を組み合わせることができ、システムをより簡単化することができる。
例えば、
図10の処理の1段目の実行(非再帰的実行)におけるステップS311で、部分構成情報抽出部192がシステムをネットワークドメイン毎に分割するようにしてもよい。そして、
図10の処理の2段目の実行(1回の再帰呼び出しによる実行)におけるステップS311で、部分構成情報抽出部192が、システム(の部分)をさらにレイヤ毎に分割するようにしてもよい。これにより、強化学習装置11は、システムをネットワークドメイン毎、かつ、レイヤ毎に分割することができ、システムを分割した個々の部分がより小さくなる。個々の部分が小さいことで、強化学習部191がシステム設計に成功する可能性が比較的高くなり、強化学習が進むことが期待される。
【0064】
次に、部分構成情報抽出部192によるシステムの部分の抽出について説明する。
<通信ネットワークの位置に基づくシステム要件の分割>
部分構成情報抽出部が、通信ネットワークの位置を境界としてシステム要件を分割するようにしてもよい。
図11は、ネットワークドメイン毎に分割されたシステム要件の例を示す図である。
図11は、
図2のグラフ(システム要件)を、部分構成情報抽出部192がネットワークドメイン毎に分割する場合の例を示している。
【0065】
部分構成情報抽出部は、ネットワークを境界としてシステムを分割することで、ネットワークドメイン毎にシステムを分割する。システム要件を示すグラフを分割する場合、部分構成情報抽出部192は、ネットワークを示すノードを境界としてグラフを分割する。
図2の例では、ノードN106がネットワークを示すノードに該当する。部分構成情報抽出部192は、ノードN106を境界として
図2のグラフ(システム要件)を分割することで、
図11のシステム要件R101、R102、R103の3つのシステム要件を取得する。
【0066】
ここでは、部分構成情報抽出部192が、WANを境界としてシステムを分割する場合を例に説明するが、部分構成情報抽出部192が分割の境界とする通信ネットワークは、特定の種類の通信ネットワークに限定されない。例えば、部分構成情報抽出部192が、LAN(Local Area Network)を境界としてシステムを分割するようにしてもよい。あるいは、部分構成情報抽出部192がインターネットを境界としてシステムを分割するようにしてもよい。
【0067】
人間がシステム要件を作成する際に、通信ネットワークに接続される各部分を機能的な纏まりとしてシステム要件を作成することが一般的と考えられる。
図11の例の場合、システム要件R101は、ノードN101に示されるカメラ機能を、カメラ機能に必要なネットワーク通信も含めて実行するためのサブシステムのシステム要件となっている。システム要件R102は、ノードN104に示される顔認証機能を、顔認証機能に必要なネットワーク通信も含めて実行するためのサブシステムのシステム要件となっている。システム要件R103は、ノードN107に示されるモニタ機能を、モニタ機能に必要なネットワーク通信も含めて実行するためのサブシステムのシステム要件となっている。
【0068】
このように、部分構成情報抽出部192が通信ネットワークを境界としてシステム要件を分割することで、得られた各部が示すサブシステムを人間が理解し易いことが期待される。得られたサブシステムを人間が理解し易いことで、部分構成情報抽出部192によるシステムの分割が妥当か否かの検証を、人間が比較的容易に行うことができる。
【0069】
また、人間が理解し易いサブシステムを得られるので、得られたサブシステムに対して、人間がシステム設計を行う場合と同様の具体化を行えば、システム設計に成功すると期待される。したがって、強化学習部191が
図9のステップS203でシステム要件に適用する変換規則として、人間がシステム設計を行う場合に行うと考えられる具体化を示す規則を用意しておくことで、強化学習部191がサブシステムの設計に成功することが期待される。強化学習部191がサブシステムの設計に成功することで、評価モデルの学習が進むことが期待される。
【0070】
また、強化学習部191がシステム要件に適用する変換規則として、人間がシステム設計を行う場合に行うと考えられる具体化を示す規則を用意しておけばよい点で、変換規則を用意する人は、変換規則を比較的容易に定義できる。変換規則を用意する人は、例えば、強化学習装置11の設計者、または、強化学習装置11のユーザであってもよい。
【0071】
図12は、強化学習装置11がシステム要件をネットワークドメイン毎に分割する処理手順の例を示すフローチャートである。
図12の処理で、部分構成情報抽出部192は、WANノードに接続しているエッジを全て抽出する(ステップS401)。ここでいうWANノードは、システム要件を示すグラフのノードのうちWANを示すノードである。
図2の例では、ノードN106がWANノードの例に該当し、エッジE104、E106、および、E108が、WANノードに接続しているエッジの例に該当する。
【0072】
次に、部分構成情報抽出部192は、WANノードに接続しているエッジの集合の冪集合を生成する(ステップS402)。
図2の例の場合、エッジを図中の符号で示すこととすると、WANノードに接続しているエッジの集合は、{E104,E106,E108}である。したがって、WANノードに接続しているエッジの集合の冪集合は、{{E104,E106,E108},{E104,E106},{E104,E108},{E106,E108},{E104},{E106},{E108},φ}である。φは空集合を示す。
【0073】
次に、部分構成情報抽出部192、ステップS402で生成した冪集合の要素のうち、空集合以外で未選択の要素があるか否かを判定する(ステップS403)。
空集合以外で未選択の要素が無いと判定した場合(ステップS403:NO)、強化学習装置11は、
図12の処理を終了する。
一方、ステップS403で、未選択の要素があると判定した場合(ステップS403:YES)、部分構成情報抽出部192は、ステップS402で生成した冪集合の要素のうち、空集合以外で未選択の要素を1つ選択する(ステップS411)。
【0074】
そして、部分構成情報抽出部は、ステップS411で選択した要素に含まれるエッジの、WANノードに接続していない側の端部から、ネットワークドメインを跨がないエッジ(およびノード)のみを辿って到達できるノードを全て抽出する(ステップS412)。
エッジがネットワークドメインを跨ぐか否かについて、部分構成情報抽出部192が、エッジの属性情報を参照して判定するようにしてもよい。例えば、部分構成情報抽出部192が、属性情報として「http」、「TCP」、「IP」の何れかが付加されているエッジを、ネットワークドメインを跨ぐエッジと判断し、それ以外のエッジを、ネットワークドメインを跨がないエッジと判定するようにしてもよい。
【0075】
次に、部分構成情報抽出部192は、ステップS412で抽出したノード間のエッジを全て抽出する(ステップS413)。
そして、部分構成情報抽出部192は、ステップS412で得られたノード、および、ステップS413で得られたエッジを、元のシステム要件における接続関係と同様の接続関係で組み合わせて、システム要件を生成する(ステップS414)。
ステップS414の後、処理がステップS403へ遷移する。
【0076】
図12の処理によれば、部分構成情報抽出部192は、通信ネットワークを境界としてシステムを分割した個々のサブシステムのシステム要件だけでなく、複数のサブシステムを纏めたサブシステムのシステム要件も得られる。
図2および
図11の例の場合、部分構成情報抽出部192は、冪集合の要素{E104}に基づいて、システム要件R101を生成する。同様に、部分構成情報抽出部192は、冪集合の要素{E106}に基づいて、システム要件R102を生成する。部分構成情報抽出部192は、冪集合の要素{E108}に基づいて、システム要件R103を生成する。
【0077】
さらに、部分構成情報抽出部は、冪集合の要素{E104,E106}に基づいて、システム要件R101に示されるサブシステムと、システム要件R102に示されるサブシステムとを纏めたサブシステムのシステム要件を生成する。具体的には、部分構成情報抽出部192は、
図2のグラフのうち、ノードN101、N102、N103、N104、N105およびN106と、エッジE101、E102、E103、E104、E105およびE106とを含む部分グラフで示されるシステム要件を生成する。
【0078】
同様に、部分構成情報抽出部は、冪集合の要素{E104,E108}に基づいて、システム要件R101に示されるサブシステムと、システム要件R103に示されるサブシステムとを纏めたサブシステムのシステム要件を生成する。部分構成情報抽出部192は、冪集合の要素{E106,E108}に基づいて、システム要件R102に示されるサブシステムと、システム要件R103に示されるサブシステムとを纏めたサブシステムのシステム要件を生成する。
【0079】
このように、部分構成情報抽出部192が、冪集合の要素それぞれに基づくシステム要件を生成することで、いろいろな規模のシステム要件を得られる。ここでいうシステム要件の規模は、システム要件を示すグラフの規模である。一般的には、システム要件の規模が大きいほど、強化学習部191がそのシステム要件を用いて行う強化学習が難しい(システム設計に成功する頻度が低く、報酬を得られる頻度が低い)。
【0080】
そこで、強化学習部191が、部分構成情報抽出部192が生成するシステム要件を規模の小さい順に用いて、それぞれのシステム要件に基づく強化学習を行うようにしてもよい。これにより、強化学習部191が、サブシステムのシステム要件に基づく強化学習なしに、システム全体のシステム要件に基づく強化学習を行う場合よりも、学習が進むことが期待される。
【0081】
強化学習部191がシステム要件の規模大小を判定する方法として、いろいろな方法を用いることができる。例えば、強化学習部191が、システム要件を示すグラフのノードの個数、またはエッジの個数、またはこれらの合計の個数が大きいほど、システム要件の規模が大きいと判定するようにしてもよい。あるいは、強化学習部191が、部分構成情報抽出部192がシステム要件を生成する際に用いた冪集合の要素に含まれる要素の個数が多いほど、システム要件の規模が大きいと判定するようにしてもよい。
【0082】
強化学習部191が、
図12の処理で部分構成情報抽出部が生成する複数のシステム要件のうち、一部のシステム要件を用いて強化学習を行うようにしてもよい。
例えば、強化学習部191が、冪集合の要素のうち要素を1つのみ含む要素に基づくシステム要件の各々を用いて強化学習を行った後、冪集合の要素のうち要素数が最大の要素に基づくシステム要件に基づく強化学習を行うようにしてもよい。冪集合の要素のうち要素数が最大の要素に基づくシステム要件は、システム全体のシステム要件である。
また、部分構成情報抽出部192が、冪集合の要素のうち一部の要素に基づくシステム要件のみを生成するようにしてもよい。
【0083】
<レイヤに基づくシステム要件の分割>
部分構成情報抽出部192が、システムに関して定義されているレイヤに基づいて、システム要件を分割するようにしてもよい。
図13は、レイヤ毎に分割されたシステム要件の例を示す図である。
図13の例では、部分構成情報抽出部192は、
図2に示されるシステム要件を、機能レイヤ、プラットフォームレイヤ、および、ネットワークレイヤの各々に分割している。システム要件R201は、機能レイヤに含まれるサブシステムのシステム要件である。システム要件R202は、プラットフォームレイヤに含まれるサブシステムのシステム要件である。システム要件R203は、ネットワークレイヤに含まれるサブシステムのシステム要件である。
ただし、部分構成情報抽出部192が用いるレイヤの規定は、特定のものに限定されない。例えば、部分構成情報抽出部192が、OSI参照モデル(Open Systems Interconnection reference model)など公知のレイヤの規定に基づいてシステム要件を分割するようにしてもよい。
【0084】
人間がシステム要件を作成する際に、レイヤ毎の各部を機能的な纏まりとしてシステム要件を作成することが考えられる。特に、システムの規模が比較的大きい場合、構築したいシステムの機能をレイヤ毎の機能に落とし込んで各部の要件を決定することが考えられる。
例えば、人間が
図2に示されるシステム要件を作成する場合に、
図13のシステム要件R201のように、各機能を実行するノードおよびノード間の通信を決定し、次に、システム要件R202のように、各機能を構築するためのプラットフォームを決定し、その後、システム要件R203のように、各機能間の通信のための構成を決定することが考えられる。
【0085】
このように、部分構成情報抽出部192がレイヤに従ってシステム要件を分割することで、得られた各部が示すサブシステムを人間が理解し易いことが期待される。得られたサブシステムを人間が理解し易いことで、部分構成情報抽出部192によるシステム要件の分割が妥当か否かの検証を、人間が比較的容易に行うことができる。
【0086】
また、人間が理解し易いサブシステムを得られるので、得られたサブシステムに対して、人間がシステム設計を行う場合と同様の具体化を行えば、システム設計に成功すると期待される。したがって、強化学習部191が
図9のステップS203でシステム要件に適用する変換規則として、人間がシステム設計を行う場合に行うと考えられる具体化を示す規則を用意しておくことで、強化学習部191がサブシステムの設計に成功することが期待される。強化学習部191がサブシステムの設計に成功することで、評価モデルの学習が進むことが期待される。
【0087】
また、強化学習部191がシステム要件に適用する変換規則として、人間がシステム設計を行う場合に行うと考えられる具体化を示す規則を用意しておけばよい点で、変換規則を用意する人は、変換規則を比較的容易に定義できる。この場合も、変換規則を用意する人は、例えば、強化学習装置11の設計者、または、強化学習装置11のユーザであってもよい。
【0088】
図14は、強化学習装置11がシステム要件をレイヤ毎に分割する処理手順の例を示すフローチャートである。
図14の処理で、部分構成情報抽出部192は、システム要件の分割に用いることに決定したレイヤの集合の冪集合を生成する(ステップS501)。
図2および
図13の例の場合、レイヤの集合は、{機能レイヤ,プラットフォームレイヤ,ネットワークレイヤ}である。したがって、レイヤの集合の冪集合は{{機能レイヤ,プラットフォームレイヤ,ネットワークレイヤ},{機能レイヤ,プラットフォームレイヤ},{機能レイヤ,ネットワークレイヤ},{プラットフォームレイヤ,ネットワークレイヤ},{機能レイヤ},{プラットフォームレイヤ},{ネットワークレイヤ},φ}である。
【0089】
次に、部分構成情報抽出部192、ステップS501で生成した冪集合の要素のうち、空集合以外で未選択の要素があるか否かを判定する(ステップS502)。
空集合以外で未選択の要素が無いと判定した場合(ステップS502:NO)、強化学習装置11は、
図14の処理を終了する。
一方、ステップS502で、空集合以外で未選択の要素があると判定した場合(ステップS502:YES)、部分構成情報抽出部192は、ステップS501で生成した冪集合の要素のうち、空集合以外で未選択の要素を1つ選択する(ステップS511)。
【0090】
そして、部分構成情報抽出部は、ステップS511で選択した要素に含まれるレイヤの何れかに属するノードを全て抽出する(ステップS512)。
次に、部分構成情報抽出部192は、ステップS512で抽出したノード間のエッジを全て抽出する(ステップS513)。
そして、部分構成情報抽出部192は、ステップS512で得られたノード、および、ステップS513で得られたエッジを、元のシステム要件における接続関係と同様の接続関係で組み合わせて、システム要件を生成する(ステップS514)。
ステップS514の後、処理がステップS502へ遷移する。
【0091】
図14の処理によれば、部分構成情報抽出部192は、1つのレイヤに含まれる個々のサブシステムのシステム要件だけでなく、複数のサブシステムを纏めたサブシステムのシステム要件も得られる。
図2および
図13の例の場合、部分構成情報抽出部192は、冪集合の要素{機能レイヤ}に基づいて、システム要件R201を生成する。同様に、部分構成情報抽出部192は、冪集合の要素{プラットフォームレイヤ}に基づいて、システム要件R202を生成する。部分構成情報抽出部192は、冪集合の要素{ネットワークレイヤ}に基づいて、システム要件R203を生成する。
【0092】
さらに、部分構成情報抽出部は、冪集合の要素{機能レイヤ,プラットフォームレイヤ}に基づいて、システム要件R201に示されるサブシステムと、システム要件R202に示されるサブシステムとを纏めたサブシステムのシステム要件を生成する。具体的には、部分構成情報抽出部192は、
図2のグラフのうち、ノードN101、N104、N105、N107およびN108と、エッジE103、E105、E107およびE109とを含む部分グラフで示されるシステム要件を生成する。
【0093】
同様に、部分構成情報抽出部は、冪集合の要素{機能レイヤ,ネットワークレイヤ}に基づいて、システム要件R201に示されるサブシステムと、システム要件R203に示されるサブシステムとを纏めたサブシステムのシステム要件を生成する。部分構成情報抽出部192は、冪集合の要素{プラットフォームレイヤ,ネットワークレイヤ}に基づいて、システム要件R202に示されるサブシステムと、システム要件R203に示されるサブシステムとを纏めたサブシステムのシステム要件を生成する。
【0094】
この場合も、部分構成情報抽出部192が、冪集合の要素それぞれに基づくシステム要件を生成することで、いろいろな規模のシステム要件を得られる。
そこで、強化学習部191が、部分構成情報抽出部192が生成するシステム要件を規模の小さい順に用いて、それぞれのシステム要件に基づく強化学習を行うようにしてもよい。これにより、強化学習部191が、サブシステムのシステム要件に基づく強化学習なしに、システム全体のシステム要件に基づく強化学習を行う場合よりも、学習が進むことが期待される。
【0095】
強化学習部191が、
図14の処理で部分構成情報抽出部が生成する複数のシステム要件のうち、一部のシステム要件を用いて強化学習を行うようにしてもよい。
例えば、強化学習部191が、冪集合の要素のうち要素を1つのみ含む要素に基づくシステム要件の各々を用いて強化学習を行った後、冪集合の要素のうち要素数が最大の要素に基づくシステム要件に基づく強化学習を行うようにしてもよい。冪集合の要素のうち要素数が最大の要素に基づくシステム要件は、システム全体のシステム要件である。
また、部分構成情報抽出部192が、冪集合の要素のうち一部の要素に基づくシステム要件のみを生成するようにしてもよい。
【0096】
<システム要件の抽象的部分の抽出>
部分構成情報抽出部192がシステム要件のうち抽象的部分を抽出するようにしてもよい。
図15は、システム要件から抽出された抽象的部分の例を示す図である。
図15は、部分構成情報抽出部192が、
図2に示されるシステム要件のうち抽象的部分を抽出した場合の例を示している。
図2の例では、ノードN101、N104、N105およびN107が抽象的なノードに該当し、部分構成情報抽出部192は、これらのノードと、これらのノード間のエッジ(エッジE103、E105およびE107)とを含む部分グラフを抽出している。
【0097】
部分構成情報抽出部192が、システム要件のうち抽象的部分を抽出することで、システム要件から元々具体的な部分が排除される。これにより、
図5に示される木において、元々具体的な部分を活用して設計するか、またはそれを活用せず新規に設計するかの選択肢がなくなるため、相対的に木のサイズが小さくなる。これにより、学習において報酬が得られる頻度が高まる。この点で、強化学習部191の強化学習が進むことが期待される。
強化学習部191が、部分構成情報抽出部192が与えられたシステム要件から抽象的な部分を抽出して生成したシステム要件を用いて強化学習を行った後、元のシステム要件(与えられたシステム要件)を用いて強化学習を行うようにしてもよい。
【0098】
図16は、強化学習装置11がシステム要件から抽象的部分を抽出する処理手順の例を示すフローチャートである。
図16の処理で、部分構成情報抽出部192は、システム要件として与えられたグラフに含まれる抽象的なノードを全て抽出する(ステップS601)。上述したように、
図2および
図15の例の場合、抽象的なノードは、ノードN101、N104、N105およびN107である。
【0099】
次に、部分構成情報抽出部192は、ステップS601で抽出した抽象的なノード間のエッジを全て抽出する。上述したように、
図2および
図15の例の場合、抽象的なノード間のエッジは、エッジE103、E105およびE107である。
そして、部分構成情報抽出部192は、ステップS601で得られたノード、および、ステップS602で得られたエッジを、元のシステム要件における接続関係と同様の接続関係で組み合わせて、システム要件を生成する(ステップS603)。
ステップS603の後、強化学習装置11は、
図16の処理を終了する。
【0100】
以上のように、強化学習部191は、システムの構成をグラフで示す第一情報を取得する。部分構成情報抽出部192は、第一情報が示すシステムの部分の構成をグラフで示す第二情報を抽出する。
強化学習部191は、第二情報を用いた比較的簡単な強化学習を行った後、第一情報を用いた比較的複雑な強化学習を行うことができ、第二情報を用いた強化学習なしに第一情報を用いた強化学習を行う場合よりも、学習が進むことが期待される。
【0101】
また、部分構成情報抽出部192は、システムをネットワークドメインに基づいて分割した部分の少なくとも1つを含む部分の構成を示す第二情報を抽出する。
【0102】
このように、部分構成情報抽出部192がシステムをネットワークドメインに基づいて分割したシステム要件を生成することで、得られたシステム要件が示すサブシステムを人間が理解し易いことが期待される。得られたサブシステムを人間が理解し易いことで、部分構成情報抽出部192によるシステムの分割が妥当か否かの検証を、人間が比較的容易に行うことができる。
【0103】
また、人間が理解し易いサブシステムを得られるので、得られたサブシステムに対して、人間がシステム設計を行う場合と同様の具体化を行えば、システム設計に成功すると期待される。したがって、強化学習部191が
図9のステップS203でシステム要件に適用する変換規則として、人間がシステム設計を行う場合に行うと考えられる具体化を示す規則を用意しておくことで、強化学習部191がサブシステムの設計に成功することが期待される。強化学習部191がサブシステムの設計に成功することで、評価モデルの学習が進むことが期待される。
【0104】
また、強化学習部191がシステム要件に適用する変換規則として、人間がシステム設計を行う場合に行うと考えられる具体化を示す規則を用意しておけばよい点で、変換規則を用意する人は、変換規則を比較的容易に定義できる。
【0105】
また、部分構成情報抽出部192は、システムをレイヤに基づいて分割した部分の少なくとも1つを含む部分の構成を示す第二情報を抽出する。
【0106】
このように、部分構成情報抽出部192がシステムをレイヤに基づいて分割したシステム要件を生成することで、得られたシステム要件が示すサブシステムを人間が理解し易いことが期待される。得られたサブシステムを人間が理解し易いことで、部分構成情報抽出部192によるシステム要件の分割が妥当か否かの検証を、人間が比較的容易に行うことができる。
【0107】
また、人間が理解し易いサブシステムを得られるので、得られたサブシステムに対して、人間がシステム設計を行う場合と同様の具体化を行えば、システム設計に成功すると期待される。したがって、強化学習部191が
図9のステップS203でシステム要件に適用する変換規則として、人間がシステム設計を行う場合に行うと考えられる具体化を示す規則を用意しておくことで、強化学習部191がサブシステムの設計に成功することが期待される。強化学習部191がサブシステムの設計に成功することで、評価モデルの学習が進むことが期待される。
【0108】
また、強化学習部191がシステム要件に適用する変換規則として、人間がシステム設計を行う場合に行うと考えられる具体化を示す規則を用意しておけばよい点で、変換規則を用意する人は、変換規則を比較的容易に定義できる。
【0109】
また、部分構成情報抽出部192は、システムの構成が第一情報で抽象的に示されている部分の構成を示す第二情報を抽出する。
部分構成情報抽出部192が、システム要件のうち抽象的部分を抽出することで、システム設計における具体化の対象となる抽象的部分を残して、システムの規模を比較的小さくすることができる。これにより、強化学習部191は、比較的小さい規模のシステム要件を用いて強化学習を行うことができる。この点で、強化学習部191の強化学習が進むことが期待される。
【0110】
また、部分構成情報抽出部192は、第一情報に第一の部分抽出方法を適用して抽出した部分に、さらに第二の部分抽出方法を適用して第二情報を抽出する。
部分構成情報抽出部192が、システム要件(第一情報)に複数の部分抽出方法を適用することで、部分抽出方法を1つのみ適用する場合よりも規模の小さいシステム要件(第二情報)を得られる。これにより、強化学習部191は、比較的小さい規模のシステム要件を用いて強化学習を行うことができる。この点で、強化学習部191の強化学習が進むことが期待される。
【0111】
図17は、実施形態に係る部分抽出装置の構成の例を示す図である。
図17に示す部分抽出装置500は、構成情報取得部501と、部分構成情報抽出部502と、を備える。
かかる構成で、構成情報取得部501は、システムの構成をグラフで示す第一情報を取得する。部分構成情報抽出部502は、第一情報が示すシステムの部分の構成をグラフで示す第二情報を抽出する。
構成情報取得部501は、構成情報取得手段の例に該当する。部分構成情報抽出部502は、部分構成情報抽出手段の例に該当する。
【0112】
部分抽出装置500によれば、システム設計のための評価モデルの学習を強化学習で行う場合に、第二情報を用いた比較的簡単な強化学習を行った後、第一情報を用いた比較的複雑な強化学習を行うことができる。これにより、第二情報を用いた強化学習なしに第一情報を用いた強化学習を行う場合よりも、学習が進むことが期待される。
【0113】
図18は、実施形態に係る部分抽出方法における処理の手順の例を示すフローチャートである。
図18に示す処理は、構成情報取得工程(ステップS701)と、部分構成情報抽出工程(ステップS702)と、を含む。
【0114】
図18に示す処理によれば、システム設計のための評価モデルの学習を強化学習で行う場合に、第二情報を用いた比較的簡単な強化学習を行った後、第一情報を用いた比較的複雑な強化学習を行うことができる。これにより、第二情報を用いた強化学習なしに第一情報を用いた強化学習を行う場合よりも、学習が進むことが期待される。
【0115】
図19は、少なくとも1つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
図19に示す構成で、コンピュータ700は、CPU710と、主記憶装置720と、補助記憶装置730と、インタフェース740とを備える。
【0116】
上記の強化学習装置11、システム設計装置12、および、部分抽出装置500のうち何れか1つ以上が、コンピュータ700に実装されてもよい。その場合、上述した各処理部の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。また、CPU710は、プログラムに従って、上述した各記憶部に対応する記憶領域を主記憶装置720に確保する。
【0117】
強化学習装置11がコンピュータ700に実装される場合、第一制御部190およびその各部の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
また、CPU710は、プログラムに従って、第一記憶部180に対応する記憶領域を主記憶装置720に確保する。
第一通信部110による通信は、インタフェース740が通信機能を有し、CPU710の制御に従って通信を行うことで実行される。
【0118】
システム設計装置12がコンピュータ700に実装される場合、第二制御部290およびその各部の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
また、CPU710は、プログラムに従って、第二記憶部280に対応する記憶領域を主記憶装置720に確保する。
第二通信部210による通信は、インタフェース740が通信機能を有し、CPU710の制御に従って通信を行うことで実行される。
【0119】
部分抽出装置500がコンピュータ700に実装される場合、構成情報取得部501と、部分構成情報抽出部502との動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
【0120】
なお、強化学習装置11、システム設計装置12、および、部分抽出装置500の全部または一部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。ここでいう「コンピュータシステム」とは、OS(オペレーティングシステム)や周辺機器等のハードウェアを含む。
「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM(Read Only Memory)、CD-ROM(Compact Disc Read Only Memory)等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【0121】
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【符号の説明】
【0122】
1 設計システム
11 強化学習装置
110 第一通信部
180 第一記憶部
190 第一制御部
191 強化学習部
192、502 部分構成情報抽出部
12 システム設計装置
210 第二通信部
280 第二記憶部
290 第二制御部
291 設計処理部
500 部分抽出装置
501 構成情報取得部