(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025038609
(43)【公開日】2025-03-19
(54)【発明の名称】システム構成評価装置、システム構成評価方法、及びプログラム
(51)【国際特許分類】
G06N 20/00 20190101AFI20250312BHJP
【FI】
G06N20/00
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2023145331
(22)【出願日】2023-09-07
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.WINDOWS
2.UBUNTU
(71)【出願人】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】110002044
【氏名又は名称】弁理士法人ブライタス
(72)【発明者】
【氏名】八鍬 豊
(72)【発明者】
【氏名】黒田 貴之
(57)【要約】
【課題】システム構成の一部が変更された場合であっても学習内容を応用でき、且つ、システム構成の規模に応じて学習に必要なデータ量及び時間が増大するのを抑制する。
【解決手段】システム構成評価装置1は、学習モデルを用いて、コンピュータシステムの各構成要素の評価値を出力し、出力した評価値を統合して、コンピュータシステム全体の評価値を出力する、構成評価部11と、予め設定された要件に基づいてコンピュータシステムの設計を試行し、設計の開始から終了に至るまでの過程で得られた構成について、それに含まれる各構成要素が要件に沿って具体化されているかどうかを判定し、判定の結果を用いて、学習モデルの学習データを生成し、生成した学習データを用いて、学習モデルに対して機械学習を実行する、構成要素学習部12と、を備えている。
【選択図】
図1
【特許請求の範囲】
【請求項1】
学習モデルを用いて、コンピュータシステムの各構成要素の評価値を出力し、更に、出力した評価値を統合して、前記コンピュータシステム全体の評価値を出力する、構成評価部と、
予め設定された要件に基づいて前記コンピュータシステムの設計を試行し、前記設計の開始から終了に至るまでの過程で得られた構成について、それに含まれる各構成要素が前記要件に沿って具体化されているかどうかを判定し、判定の結果を用いて、前記学習モデルの学習データを生成し、生成した前記学習データを用いて、前記学習モデルに対して機械学習を実行する、
構成要素学習部と、
を備えている、ことを特徴とするシステム構成評価装置。
【請求項2】
前記構成要素学習部が、
前記構成毎に、それに含まれる前記各構成要素が、前記要件に沿って具体化されているかどうかを判定し、判定の結果に基づいて、当該構成に含まれる前記各構成要素に与えるべき報酬を算出し、
前記構成毎に、当該構成と、当該構成について算出された、前記各構成要素に与えるべき報酬とを、前記学習データとして生成する、
請求項1に記載のシステム構成評価装置。
【請求項3】
前記構成要素学習部が、
特定の構成要素と、それを具体化するのに必要となる別の構成要素と、の関係性を表す依存関係に基づいて、依存関係がない構成要素及び依存関係にある構成要素について学習が完了した構成要素の順に学習が行われるように、カリキュラムを生成し、
生成した前記カリキュラムに従って、前記学習モデルに対する機械学習を実行する、
請求項1に記載のシステム構成評価装置。
【請求項4】
前記構成評価部が出力する前記各構成要素の前記評価値に基づいて、前記コンピュータシステムの設計空間において探索対象となる構成を決定し、決定した前記構成を用いて、前記コンピュータシステムのシステム構成を設計する、設計部を更に備えている、
請求項1に記載のシステム構成評価装置。
【請求項5】
前記構成評価部が出力する前記各構成要素の前記評価値に基づいて、具体化の対象となる構成要素を決定し、決定した構成要素を具体化することで得られる構成のみを生成する、絞り込み部を更に備え、
前記設計部は、前記探索対象となる構成を追加する場合に、前記絞り込み部が生成した前記構成のみ追加し、
前記構成要素学習部は、前記コンピュータシステムの設計の試行において、前記コンピュータシステムの設計空間において探索対象となる構成を決定し、決定した前記構成を用いて、前記コンピュータシステムのシステム構成の設計を試行し、前記探索対象となる構成を追加する場合に、前記絞り込み部が生成した前記構成のみ追加する、
ことを特徴とする請求項4に記載のシステム構成評価装置。
【請求項6】
学習モデルを用いて、コンピュータシステムの各構成要素の評価値を出力し、更に、出力した評価値を統合して、前記コンピュータシステム全体の評価値を出力する、構成評価ステップと、
予め設定された要件に基づいて前記コンピュータシステムの設計を試行し、前記設計の開始から終了に至るまでの過程で得られた構成について、それに含まれる各構成要素が前記要件に沿って具体化されているかどうかを判定し、判定の結果を用いて、前記学習モデルの学習データを生成し、生成した前記学習データを用いて、前記学習モデルに対して機械学習を実行する、構成要素学習ステップと、
を有する、ことを特徴とするシステム構成評価方法。
【請求項7】
コンピュータに、
学習モデルを用いて、コンピュータシステムの各構成要素の評価値を出力し、更に、出力した評価値を統合して、前記コンピュータシステム全体の評価値を出力する、構成評価ステップと、
予め設定された要件に基づいて前記コンピュータシステムの設計を試行し、前記設計の開始から終了に至るまでの過程で得られた構成について、それに含まれる各構成要素が前記要件に沿って具体化されているかどうかを判定し、判定の結果を用いて、前記学習モデルの学習データを生成し、生成した前記学習データを用いて、前記学習モデルに対して機械学習を実行する、構成要素学習ステップと、
を実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ICT(Information and Communication Technology)システムの自動設計及びその機械学習を行う技術に関する。特に、本開示は、設計の要件及び使用する部品のみを人間が宣言的に定義し、それらの定義から、想定される設計の範囲を設計空間としてコンピュータに計算させ、その空間をAI(Artificial Intelligence)に探索させることで設計を自動化するシステム設計自動化技術、およびその機械学習を行う技術に関する。
【背景技術】
【0002】
特許文献1は、顧客の要件を満たすICTシステムを自動的に設計する技術を開示している。特許文献1に開示された技術では、顧客の抽象的なシステム要件に含まれる抽象的な要素が段階的に具体化され、配備可能なレベルまで詳細化されたシステム構成が導出される。
【0003】
また、特許文献1に開示された技術では、顧客の抽象的な「システム要件」(又は単に「要件」)と、システム要件を具体化している最中の「システム構成案」(又は単に「構成案」)と、システム要件を完全に具体化した「システム具体構成」(又は単に「具体構成」)と、は、
図42に示すグラフで表現される。
図42は、ICTシステムの要件を示すグラフの一例を示す図である。
図43は、
図42に示すICTシステムの要件に含まれる構成要素を説明する図である。
【0004】
また、システム要件と、システム構成案と、システム具体構成と、の三つは、総称して「システム構成」(又は単に「構成」)と呼ばれる。システム構成のグラフを構築するノードおよびエッジは、構成要素と呼ばれる。ノードはシステム構成に含まれる個々の部品(例えばサーバ、ルータ等)を意味し、エッジは部品間の関係性(例えばネットワーク接続等)を意味する。
【0005】
具体化は、グラフの書き換えにより実現される。グラフの書き換え方の規則は自動設計を実施する前に予め用意され、この規則は具体化規則と呼ばれる。適用可能な具体化規則(つまりグラフの書き換え方の規則)は、システム要件及びシステム構成案に対して複数用意されていても良い。どの具体化規則を適用するか、それらを適用する順序に応じて、設計が分岐し、導出されるシステムの具体構成が変化する。その結果、設計に差異が生じ、場合によっては設計に失敗する(入力であるシステム要件を満たせなくなる)状況も存在する。
【0006】
そのため特許文献1に開示されている技術を用いて効率的な設計を行うためには、前述したように複数ある適用可能な具体化規則のどれを適用するかの判断と、各具体的規則の適用の順序が適切かどうかの判断と、が重要である。
【0007】
非特許文献1は、強化学習を利用して、前述した具体化規則の適用の判断及び順序が適切かどうかの判断を行う技術を開示している。強化学習技術は、行動の内容及び順序によって得られる結果が異なる問題において、多様な試行を繰り返し、試行の結果に応じて得られる報酬に基づいて、行動の内容及び順序が適切かどうかの判断を学習する技術である。強化学習技術は囲碁AIの学習などにおいて高い実績を残している。また、特許文献2は、システム構成の部分的な要素に対する評価を学習する技術を開示している。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特許第7036205号公報
【特許文献2】特開2022-63209号公報
【非特許文献】
【0009】
【非特許文献1】丸山貴志 他: 「探索型ネットワーク設計導出方式の強化学習による探索の効率化」, 信学技報, vol. 118, no. 483, ICM2018-71, pp. 123-128, 2019年3月.
【発明の概要】
【発明が解決しようとする課題】
【0010】
ところで、特許文献1に開示される技術には、システム構成の評価がシステム構成全体に対して与えられていることを原因にして2つの問題がある。1つ目は、構成の一部が変更された際にその影響が不明であるため、学習内容を応用できないという問題である。2つ目は、学習に必要なデータ量及び時間がシステム構成の規模に応じて増大してしまい、スケーラブルでないという問題である。
【0011】
また、特許文献2に開示された技術を用いたとしても、特許文献1に開示された技術では、学習の対象は依然としてシステム構成全体の設計の成否の見込みを表す評価であり、学習処理はシステム構成単位で行う必要があるため、上記2つの問題の解決は困難である。
【0012】
本開示の目的の一例は、システム構成の一部が変更された場合であっても学習内容を応用でき、且つ、システム構成の規模に応じて学習に必要なデータ量及び時間が増大するのを抑制する、ことにある。
【課題を解決するための手段】
【0013】
上記目的を達成するため、本開示の一側面におけるシステム構成評価装置は、
学習モデルを用いて、コンピュータシステムの各構成要素の評価値を出力し、更に、出力した評価値を統合して、前記コンピュータシステム全体の評価値を出力する、構成評価部と、
予め設定された要件に基づいて前記コンピュータシステムの設計を試行し、前記設計の開始から終了に至るまでの過程で得られた構成について、それに含まれる各構成要素が前記要件に沿って具体化されているかどうかを判定し、判定の結果を用いて、前記学習モデルの学習データを生成し、生成した前記学習データを用いて、前記学習モデルに対して機械学習を実行する、
構成要素学習部と、
を備えている、ことを特徴とする。
【0014】
また、上記目的を達成するため、本開示の一側面におけるシステム構成評価方法は、
学習モデルを用いて、コンピュータシステムの各構成要素の評価値を出力し、更に、出力した評価値を統合して、前記コンピュータシステム全体の評価値を出力する、構成評価ステップと、
予め設定された要件に基づいて前記コンピュータシステムの設計を試行し、前記設計の開始から終了に至るまでの過程で得られた構成について、それに含まれる各構成要素が前記要件に沿って具体化されているかどうかを判定し、判定の結果を用いて、前記学習モデルの学習データを生成し、生成した前記学習データを用いて、前記学習モデルに対して機械学習を実行する、構成要素学習ステップと、
を有する、ことを特徴とする。
【0015】
更に、上記目的を達成するため、本開示の一側面におけるプログラムは、
コンピュータに、
学習モデルを用いて、コンピュータシステムの各構成要素の評価値を出力し、更に、出力した評価値を統合して、前記コンピュータシステム全体の評価値を出力する、構成評価ステップと、
予め設定された要件に基づいて前記コンピュータシステムの設計を試行し、前記設計の開始から終了に至るまでの過程で得られた構成について、それに含まれる各構成要素が前記要件に沿って具体化されているかどうかを判定し、判定の結果を用いて、前記学習モデルの学習データを生成し、生成した前記学習データを用いて、前記学習モデルに対して機械学習を実行する、構成要素学習ステップと、
を実行させる、ことを特徴とする。
【発明の効果】
【0016】
本発明によれば、システム構成の一部が変更された場合であっても学習内容を応用でき、且つ、システム構成の規模に応じて学習に必要なデータ量及び時間が増大するのを抑制できる。
【図面の簡単な説明】
【0017】
【
図1】
図1は、システム構成評価装置の一例(第1例)の概略構成を示す構成図である。
【
図2】
図2は、システム構成評価装置の一例(第1例)の構成をより具体的に示す構成図である
【
図3】
図3は、システム構成評価装置の一例(第1例)における構成評価の学習動作の一例を示すフロー図である。
【
図4】
図4は、
図3に示した繰り返し行う強化学習の一回分の期間の動作(ステップS12)を示すフロー図である。
【
図5】
図5は、
図4に示した強化学習におけるシステム要件から構成パスを生成する動作(S121)を示すフロー図である。
【
図6】
図6は、
図4に示した強化学習における学習データを生成する動作(S122)を示すフロー図である。
【
図7】
図7は、
図6に示した構成要素が「完全に具体的」であるか否か判定する動作(B11)を示すフロー図である。
【
図8】
図8は、
図4に示した強化学習における学習データを用いて学習を行う動作(S124)を示すフロー図である。
【
図9】
図9は、
図3に示した強化学習における設計の試行を行う動作(S13)を示すフロー図である。
【
図10】
図10は、システム構成評価装置における構成評価の動作を示すフロー図である。
【
図11】
図11は、システム構成評価装置の一例(第2例)の構成を示す構成図である
【
図12】
図12は、システム構成評価装置の一例(第2例)における構成評価の初期学習の動作を示すフロー図である。
【
図13】
図13は、
図12に示した構成評価の初期学習において依存グラフを生成する動作(U21)を示すフロー図である。
【
図14】
図14は、
図12に示した構成評価の初期学習においてカリキュラムを生成する動作(U22)を示すフロー図である。
【
図15】
図15は、
図14に示したカリキュラム生成において学習難易度の計算を行う動作(U224)を示すフロー図である。
【
図16】
図16は、
図14に示したカリキュラム生成においてエッジを削除し巡回を解消する動作(U227)を示すフロー図である。
【
図17】
図17は、
図16に示したカリキュラム生成において巡回に含まれるエッジの削除候補リストを生成する動作(D23)を示すフロー図である。
【
図18】
図18は、
図16に示したカリキュラム生成において削除候補リストからエッジを一つ選び削除する動作(D24)を示すフロー図である。
【
図19】
図19は、
図12に示した構成評価の初期学習において学習項目の学習に用いる要件の集合を生成する動作(U25)を示すフロー図である。
【
図20】
図20は、
図19に示した、学習項目の学習に用いる要件の集合を生成する動作の中で、具体化規則の具体化に必要な構成又は具体化後の構成に含まれる構成要素を再帰的に処理する動作(U257)を示すフロー図である。
【
図21】
図21は、
図12に示した構成評価の初期学習において要件の集合を用いて学習項目を学習する動作(U26)を示すフロー図である。
【
図22】
図22は、システム構成評価装置の一例(第2例)における構成評価の再学習の動作を示すフロー図である。
【
図23】
図23は、システム構成評価装置の一例(第3例)の構成を示す構成図である。
【
図24】
図24は、システム構成評価装置の一例(第3例)における設計の動作を示すフロー図である。
【
図25】
図25は、システム構成評価装置の一例(第4例)の構成を示す構成図である。
【
図26】
図26は、システム構成評価装置の一例(第4例)における学習の動作を示すフロー図である。
【
図27】
図27は、
図26に示した繰り返し行う強化学習の一回分の期間の動作を示すフロー図である。
【
図28】
図28は、
図27に示した強化学習におけるシステム要件から構成パスを生成する動作(S421)を示すフロー図である。
【
図29】
図29は、システム構成評価装置の一例(第4例)における設計の動作を示すフロー図である。
【
図30】
図30は、ICTシステムの自動設計において設計が分岐を繰り返し構成が生成される様子を示す図である。
【
図31】
図31は、ICTシステムの自動設計においてICTシステム構成をグラフ構造で表した情報を図示した図である。
【
図32】
図32は、
図31に示したICTシステムのシステム構成をテキストで表現した情報を示す図である。
【
図33】
図33は、ICTシステムの自動設計において構成要素の型を定義するためのフォーマットを示す図である。
【
図34】
図34は、実施の形態2において生成される依存グラフの一例を示す図である。
【
図35】
図35は、実施の形態2において生成されるカリキュラムの一例を示す図である。
【
図37】
図37は、実施の形態1において生成される探索木の一例を示す図である。
【
図38】
図38は、ICTシステムの自動設計において構成要素の型を定義するためのフォーマットを示す図である。
【
図39】
図39は、ICTシステムの自動設計において構成要素の型の定義を表す情報である構成要素型定義情報の一例を示す図である。
【
図40】
図40は、ICTシステムの自動設計において、
図39の構成要素型定義情報から生成される、具体化規則の定義を表す情報である具体化規則定義情報の一例を示す図である。
【
図41】
図41は、システム構成評価装置を実現するコンピュータの一例を示すブロック図である。
【
図42】
図42は、ICTシステムの要件を示すグラフの一例を示す図である。
【
図43】
図43は、
図1に示すICTシステムの要件に含まれる構成要素を説明する図である。
【発明を実施するための形態】
【0018】
(開示の前提)
実施の形態の説明の前に、適用対象であるICTシステムの自動設計について説明する。まず、設計が分岐を繰り返し構成が生成される様子を
図30に示す。
図30において、(a)~(g)のそれぞれがICTシステムの構成を表現している。各構成には、ICTシステムの構成自体を示すグラフの情報に加えて、各構成要素に課せられた制約条件の情報が含まれてもよい。制約条件とは、各構成要素が持つ評価指標が満たすべき条件を、等式及び不等式で表現したものである。
【0019】
図30に示すように、各構成(
図30において矩形で区切られた部分)に含まれる情報のうち、丸で表現されたノードは、システム構成に含まれる個々の部品(例えばサーバやルータ等)であり、構成部品を表している。矢印で表現されたエッジは、構部品成間の関係性(例えばネットワーク接続等)を表している。上述したように、ノードおよびエッジは、「構成要素」と呼ばれる。各構成部品のアイコンは構成部品の種類を表している。アイコンと種類との対応は凡例(
図43参照)に示す。構成部品に添えられた文字列は構成部品の識別子を表している。また、各構成に添えられた不等式は制約条件を表している。例えば、"$s1.conn >= 100"とは、識別子が"s1"の構成に紐付けられた評価指標である"conn"に関する制約条件であって、"conn"が100以上であることを表している。
【0020】
各構成に含まれる情報(以下「構成情報」と表記する)は、
図30に示した図によって表現された情報に限られず、テキストで表現された情報であってもよい。テキストでの表現方法は、一意な図に変換できるのであれば特に限定しないが、その一例として、
図32に、
図31に示された構成をテキストで表現した例が示されている。
【0021】
図31では、ノードおよびエッジに添えられたテキストは、それぞれ、構成部品および構成部品間の関係性を示している。つまり、
図31は、具体的なアプリケーションYとなんらかのアプリケーションとが通信できる構成であることを示しており、ノードとエッジとを用いて「AppとApp_YとがConn_toの関係性で接続されている」ことを表現している。点線は抽象的な構成部品、実線は具体的な構成部品を表す。Appは何らかのアプリケーションを表す抽象的なノードであるためこの時点では点線で表示されており、構成の具体化過程において、具体的なアプリケーションに具体化されていくものである。
【0022】
図32に示すように、テキスト形式での構成情報は、構成部品と構成部品間の関係性とのリストで構成されている。各構成部品には、その構成部品を識別する識別子とその構成部品の型とが定義される。各関係性には、関係性を識別する識別子、関係性の型、接続元の構成部品の識別子、及び接続先の構成部品の識別子が定義される。
図32における記号"$"は、それが付加された識別子を参照することを示す。構成部品の他の定義部分で参照されることがないなどの理由により、ある構成部品の識別子の定義が不要の場合は、識別子の定義は省略されていてもよい。
【0023】
続いて、ノード及びエッジを表す構成要素について、その型の定義方法を説明する。構成要素の型を定義するためのフォーマットを
図33に示す。構成要素の型には、構成要素の型の名前(型名)、継承元、具体性、プロパティといった、構成要素の型の特徴を表す情報が指定される。また、構成要素の型には、期待周辺構成という情報も指定される。期待周辺構成は、その型の構成要素がシステム構成内に存在するために、自身の周辺に存在することを期待する、構成の情報である。なお、構成要素の型のことを「構成要素型」とも呼ぶ。また、構成要素型を定義したデータなどのことを「構成要素型定義情報」とも呼ぶ。
【0024】
上述した継承元は、その構成要素が継承する他の構成要素の型を表し、指定がない場合は何も継承していないことを表す。構成部品が、他の構成部品の型を承継し、構成部品間の関係性が、他の構成部品間の関係性の型を継承することで、継承元の型のプロパティ及び期待周辺構成の情報の継承が可能となる。
【0025】
上述した具体性は、その構成要素型自身が、さらに具体化されうる抽象的な構成要素の型であるか、それ以上具体化されない具体的な構成要素の型であるかを表すフラグである。具体性がTrueであれば具体的な構成要素の型であることを表す。具体性がFalseであれば抽象的な構成要素型であることを表しており、当該構成要素型を継承するその他の構成要素型へと具体化が可能である。
【0026】
プロパティは、その構成要素型の特性を表す属性情報であり、構成要素型の種類に応じて任意の属性情報を指定できる。期待周辺構成は、その型の構成要素が成り立つために、自身の周辺で満たされるべき構成情報を表し、ここに記載された構成が存在することで、その型の構成要素が成り立つことを表す。
【0027】
例えば、何らかのアプリケーションが存在するためには、それをホストするOSが必須であると考えられるため、APP型の構成部品の期待周辺構成に、APP自身が何らかのOS型の構成部品にホストされるという構成情報を記載する。一つの構成要素に対して期待周辺構成は複数定義可能である。ある構成要素の期待周辺構成が一つでも構成の中に存在すれば、当該構成要素の期待周辺構成が満たされていると表現する。
【0028】
個々の期待周辺構成には、その期待周辺構成の名前、前提構成情報、必須構成情報および制約条件が記述される。前提構成情報とは、後述する必須構成情報を満たすように具体化する際に前提となる構成情報である。前提構成情報は、設計途中のシステム構成が、前提構成情報に記載された構成情報を満たしている場合に、後述する必須構成情報を適用してシステム構成を具体化することを表す。必須構成情報は、ここに記載された構成情報をシステム構成に追加することで、システム構成を一段階具体化するための情報である。制約条件は、必須構成情報に記載された構成情報でシステム構成を具体化する際に、各構成要素が満たすべき制約条件である。
【0029】
入力されたシステム要件に基づきシステム構成を具体化していく処理は、各構成要素自身を具体的な構成要素に具体化していく処理と、各構成要素に定義された期待周辺構成を満たすようにシステム構成を具体化していく処理と、の二つの処理から成り立っている。そのため具体化規則の情報は、構成要素型の定義のうち継承元および期待周辺構成の内容から生成可能である。
【0030】
具体化規則を定義するためのフォーマットを
図38に示す。具体化規則には、具体化対象と、具体化に必要な構成と、具体化後の構成と、制約条件と、という情報が指定される。具体化対象には、具体化する対象となる構成要素の型名を指定する。具体化規則は、1つの構成要素のみを具体化対象としており、1回の具体化規則の適用では1つの構成要素のみが具体化される。
【0031】
具体化に必要な構成には、この具体化規則を適用するにあたって事前に満たされるべき周辺構成が指定される。すなわち、具体化対象の構成要素の周辺に、具体化に必要な構成に示された構成が存在する場合に限り、当該具体化規則が適用される。具体化後の構成は、当該具体化規則が適用された後に残る構成を指定する。
【0032】
具体化規則が適用されると、具体化対象の構成要素が具体化後の構成に示された構成に置き換えられることになる。制約条件は、具体化規則の適用後に満たされるべき条件を指定する。すなわち、具体化対象およびその周辺の構成が、具体化規則の適用後も制約条件に指定された内容を満たすことができる場合に限り、当該具体化規則が適用される。
【0033】
図39は、構成要素型の定義の例を示す。
図40は、
図39に示した構成要素型の定義から生成可能な具体化規則の定義の例を示す。
図39は、オペレーティングシステムを表す抽象的な構成部品の型であるOSの定義の例と、OSを継承する型であるWindows及びUbuntuの定義の例を示している。OSは、プロパティとして、OSが使用するメモリ量を指定するrequired_memoryを保持する。ただし、OS型は抽象的な構成部品の型であるため、具体的な値は設定されていない。OSは、自身が成り立つためには何らかのMachine上にホストされている必要があるため、OS自身とMachine間とにおいて、Hosted_onの関係性が成り立っている必要があることを期待周辺構成として定義している。
【0034】
更に、期待周辺構成が適用される際の制約条件として、ホスト元のMachineが搭載するメモリ量が、OS自身が必要とするメモリ使用量以上であることを定義している。また、OSを継承する型として具体的なOSであるWindows型とUbuntu型との構成部品が定義され、具体的なメモリ使用量の値が設定される。
【0035】
図40は、OSを具体化する3種類の具体化規則の定義の例を示している。具体化規則1は、抽象的なOSという型の構成要素を、具体的なWindowsという型の構成要素に具体化する具体化規則を定義している。具体化規則2は、抽象的なOSという型の構成要素を、具体的なUbuntuという型の構成要素に具体化する具体化規則を定義している。具体化規則3は、OSの期待周辺構成を満たすように、Machine型の構成部品と、OS型の構成要素およびMachine型の構成要素を接続するHosted_on型の関係性と、を生成してOSを具体化する具体化規則を定義している。なお、
図40に示されるような、具体化規則を定義したデータなどのことを「具体化規則定義情報」とも呼ぶ。
【0036】
システム構成に含まれる全ての構成要素に対して、各構成要素自身を具体的な構成要素に具体化していく処理と、各構成要素に定義された期待周辺構成を満たすようにシステム構成を具体化していく処理と、の二つの処理が完了した時点でシステム設計が完了したと判定する。つまり、システム構成内の全ての構成要素の具体性がTrueであり、且つ、全ての構成要素の期待周辺構成が満たされている場合に、システム構成は具体構成であり、設計が完了したと判定する。一つの構成要素に複数の期待周辺構成が定義されている場合は、それらのうちいずれか一つの期待周辺構成が満たされていればよいものとする。
【0037】
また、ある構成要素の期待周辺構成を満たすようにシステムの具体化を行う際に、その具体化の内容を定義した具体化規則の具体化後の構成に記載された構成要素の全部もしくは一部が、既にシステム構成内に存在している場合、既存の構成要素を利用するような構成に具体化してもよいし、新規に構成要素を追加する構成に具体化してもよい。
【0038】
例えば、App型の構成部品の期待周辺構成に、App自身が何らかのOS型の構成部品にホストされるという構成情報が記載されていた場合、このAppの期待周辺構成を満たすためにシステム構成に新たなOSを追加してもよいし、もしすでに他のAppがホストされているOSがシステム構成内に存在する場合などは、新たなOSは追加せずに既存のOSにホストされる構成に具体化してもよい。
【0039】
このように、期待周辺構成を満たすように具体化する際に、既存の構成要素を利用する構成に具体化するか、新規に追加する構成に具体化するかは任意に選択できる。そのため、一つの具体化規則をある構成に適用する場合でも、その適用方法のパターンの数は複数あることがある。適用方法のパターンのことを「適用パターン」とも呼ぶ。
【0040】
(実施の形態1)
以下、実施の形態1における、システム構成評価装置、システム構成評価方法、及びプログラムについて、
図1~
図10を参照しながら説明する。
【0041】
[装置構成]
最初に、実施の形態1におけるシステム構成評価装置の概略構成について
図1を用いて説明する。
図1は、システム構成評価装置の一例の概略構成を示す構成図である。
【0042】
図1に示す、システム構成評価装置1は、ICTシステムコンピュータシステムといったコンピュータシステムの構成を評価する装置である。
図1に示すように、システム構成評価装置1は、構成評価部11と、構成要素学習部12とを備えている。
【0043】
構成評価部11は、学習モデルを用いて、コンピュータシステムの各構成要素の評価値を出力し、更に、出力した評価値を統合して、コンピュータシステム全体の評価値を出力する。
【0044】
構成要素学習部12は、予め設定された要件に基づいてコンピュータシステムの設計を実行し、設計の開始から終了に至るまでの過程で得られた構成について、それに含まれる各構成要素が要件に沿って具体化されているかどうかを判定する。また、構成要素学習部12は、判定の結果を用いて、学習モデルの学習データを生成し、生成した学習データを用いて、学習モデルに対して機械学習を実行する。
【0045】
本発明の第1の効果は、構成の一部が変更された際にその影響が分からず学習内容が応用できないという課題が解決され、全体の構成が変わっても構成要素単位での応用が可能になることである。その理由は、以下の通りである。
【0046】
このように、システム構成評価装置1は、システム構成全体の設計の成否の見込みではなく、各構成要素の具体化の成否の見込みを学習する。つまり、システム構成評価装置1は、各構成要素の具体化の成否に応じて報酬を生成し、それに基づいて構成要素毎に具体化が正しく完了する見込みを表す評価を学習する。このため、システム構成評価装置1によれば、構成要素単位の学習が可能になり、システム構成の一部が変更された場合であっても学習内容の応用が可能となる。更に、システム構成評価装置1によれば、学習に必要なデータ量及び時間が構成の規模に依存しなくなるので、システム構成の規模に応じて学習に必要なデータ量及び時間が増大するのが抑制され、学習効率が向上する。
【0047】
続いて、
図2を用いて、実施の形態1におけるシステム構成評価装置の構成及び機能について具体的に説明する。
図2は、システム構成評価装置の一例の構成をより具体的に示す構成図である。
図2に示すように、システム構成評価装置1は、上述したように、構成評価部11と、構成要素学習部12と、を備える。
【0048】
更に、
図2に示すように、構成評価部11は、構成要素評価部111と、構成総合評価部112と、を備える。構成要素学習部12は、学習工程制御部121と、設計試行部122と、具体化成功判定部123と、報酬生成部124と、学習データ生成部125と、機械学習部126と、を備える。これらの部は、それぞれ概略次のように動作する。
【0049】
構成要素評価部111は、学習モデルを用いて、それに入力された構成に含まれる各構成要素の評価値を出力する。評価値は、構成要素が完全に具体化できるか否かの見込みを表している。また、構成総合評価部112は、構成要素評価部111から出力された各構成要素の評価値を総合し、コンピュータシステムの構成全体の評価値を出力する。
【0050】
学習工程制御部121は、学習モデルにおける学習工程の全体の制御を行う。設計試行部122は、コンピュータシステムの設計を試行し、設計の開始から終了に至るまでの過程で得られた構成を収集する。
【0051】
具体化成功判定部123は、設計試行部122の設計結果である構成に含まれる各構成要素が、要件に沿って完全に具体化されているか否か判定する。報酬生成部124は、具体化成功判定部123による判定の結果に基づき、収集された各構成に含まれる各構成要素に与えるべき報酬を算出する。
【0052】
学習データ生成部125は、収集された構成毎に、当該構成と、当該構成について算出された各構成要素に与えるべき報酬とを、学習データとして生成する。機械学習部126は、生成された学習データを用いて、構成要素が完全に具体化できるか否かの見込みを表す評価値を、構成要素評価部111が用いる学習モデルに学習させる。
【0053】
[装置動作]
次に、実施の形態1におけるシステム構成評価装置1の動作の一例について
図3~
図10を用いて説明する。以下の説明においては、適宜
図1及び
図2を参照する。また、実施の形態1では、システム構成評価装置1を動作させることによって、システム構成評価方法が実施される。よって、実施の形態1において、システム構成評価方法の説明は、以下のシステム構成評価装置の動作説明に代える。
【0054】
実施の形態1において、システム構成評価装置1の動作としては、大きく分類して二つの動作がある。それは、1つは構成評価の学習動作であり、もう1つは構成評価動作である。構成評価の学習動作では、システム構成評価装置1は、コンピュータシステム(ICTシステム)の構成の評価を行うため、コンピュータシステムの各構成要素単位の評価について学習モデルの学習を行う。構成評価動作では、システム構成評価装置1は、学習済の学習モデルを活用し、コンピュータシステム構成の評価を行う。以降、それぞれについて説明する。
【0055】
図3を参照して、システム構成評価装置1における構成評価の学習動作S1について詳細に説明する。まず、学習工程制御部121が、学習対象のシステム要件R1を入力として受け取る(ステップS11)。
【0056】
次に、構成要素学習部12が、システム要件R1を用いて強化学習を適当な期間行う(ステップS12)。適当な期間は、学習時間、学習回数、例えばニューラルネットワークを用いた強化学習の場合はニューラルネットワークの重みの更新回数等に基づき決定されるのが良いが、これら以外に基づいて決定されても良い。
【0057】
さらに、設計試行部122が、現在の学習モデル(例えばニューラルネットワークを用いた強化学習の場合はニューラルネットワーク)を用いて、システム要件R1の設計を試みる(ステップS13)。この場合の設計方法としては、例えば、特許文献1に開示された設計方法が挙げられる。但し、実施の形態において、設計方法は特に限定されない。
【0058】
そして、学習工程制御部121が、ステップS13の結果に基づき、学習が十分であるか否か判断する(ステップS14)。ステップS14における判断の方法は、ステップS13での設計方法に依存する。例えば、特許文献1に開示された設計方法によってステップS13が実施されているとする。この場合、設計における探索のステップ数が一定以下であった場合に十分だと判断する方法、過去に実行されたステップS13での設計において、規定の回数連続で探索のステップ数が一定以下だった場合に十分だと判断する方法が挙げられる。但し、実施の形態において、ステップS14における判断の方法は特に限定されない。
【0059】
ステップS14の判断の結果、学習が十分でない場合は、ステップS12及びS13が再度実行される。一方、ステップS14の判断の結果、学習が十分である場合は、学習動作S1は終了する。
【0060】
図4を参照して、強化学習を行うステップS12の動作について詳細に説明する。ここで説明する動作は、システムの機能要件に関する設計方法を学習するための動作の一例である。ステップS12における動作は、システムの機能要件に関する設計方法の学習が実現されるのであれば、ここに記載するものに限定されない。また、設計方法としては、上述したように、例えば特許文献1に開示された設計方法が挙げられるが、これに限定されるものではない。
【0061】
図4に示すように、まず、設計試行部122が、システム要件R1を用いて設計の試行を行い、構成パスCP1を生成する(ステップS121)。そして、学習データ生成部125が、学習データを生成する(ステップS122)。次に、設計試行部122は、ステップS121~S122が規定の回数繰り返されているかどうかを判定する(ステップS123)。
【0062】
ここでいう規定の回数は、学習データのサイズ、1回の繰り返しで生成できる学習データの数、学習に利用するマシンのスペック等に基づいて、適宜決定される。なお、実施の形態では、これら以外に基づいて決定されていても良い。
【0063】
ステップS123の判定の結果、ステップS121~S122が規定の回数繰り返されていない場合は、設計試行部122は、再度ステップS121を実行する。一方、ステップS123の判定の結果、ステップS121~S122が規定の回数繰り返されている場合は、機械学習部126が、学習データを用いて、学習モデルの機械学習を実行する(ステップS124)。
【0064】
次に、機械学習部126は、学習が終了しているかどうか、即ち、学習が適当な期間行われたかどうかを判定する(ステップS125)。ステップS125の判定の結果、学習が終了していない場合は、再度ステップS121~S124が実行される。一方、ステップS125の判定の結果、学習が終了している場合は、ステップS12は終了する。
【0065】
ここでいう適当な期間は、学習時間、学習回数、例えばニューラルネットワークを利用した強化学習の場合は、ニューラルネットワークの重みの更新回数等に基づき決定されるのが良い。但し、実施の形態1では、適当な期間は、これら以外に基づいて決定されても良い。
【0066】
図5を参照して、構成パスを生成するステップS121の動作について詳細に説明する。ステップS121の動作主体は、特に言及がない限り設計試行部122である。まず、設計試行部122は、システム要件R1を、現在の構成を表す変数に代入する(ステップA11)。以降、現在の構成を表す変数に代入されている内容を、単に「現在構成」と表記する。
【0067】
次に、設計試行部122は、現在構成のみを内容として含むリスト型のデータ構造の変数として、構成パスCP1を初期化する(ステップA12)。構成パスCP1は、学習データを生成するために行った設計の試行の結果として得られる、設計中の構成の過程を保持する変数である。なお、ここでは一例として構成パスCP1のデータ構造をリスト型としているが、同種の内容物を順序が定まる形で複数格納することが可能なデータ構造であれば、リスト型以外のデータ構造でもよい。
【0068】
さらに、設計試行部122は、現在の構成から1回の具体化規則の適用で生成可能な構成を全て列挙する(ステップA13)。そして、設計試行部122は、ステップA13で列挙した各構成を、構成総合評価部112に入力し、構成評価を行う(ステップA14)。構成評価の動作T1の詳細は後述する。
【0069】
次に、設計試行部122は、ステップA14の処理によって構成評価がなされた各構成のうち、評価値が最も高いものを、現在の構成を表す変数に代入する(ステップA15)。さらに、設計試行部122は、現在構成を構成パスCP1の末尾に追加する(ステップA16)。
【0070】
次に、設計試行部122は、現在の構成に対して具体化規則を適用できるかどうかを判定する(ステップA17)。ステップA17の判定の結果、具体化規則を適用できる場合は、設計試行部122は、ステップA13~A16を再度実行する。一方、ステップA17の判定の結果、具体化規則を適用できない場合は、ステップS121は終了する。
【0071】
ここで、構成パスCP1の例を
図36に示す。
図36は、上述したステップS121の動作により、
図30に示した設計が分岐する状態であって、
図30に示した(a)=>(b)=>・・・=>(f)という順で構成パスCP1が生成される例を示している。
【0072】
図6を参照して、学習データを生成するステップS122の動作について詳細に説明する。ステップS122の動作主体は、特に言及がない限り報酬生成部124である。以降、ステップS121終了時点での現在構成のことを「最終構成」と表記する。
【0073】
まず、具体化成功判定部123が、最終構成に含まれる各構成要素が「完全に具体的」であるか否か判定する(ステップB11)。構成要素が「完全に具体的」であることの定義およびその判定方法の詳細は後述する。
【0074】
次に、報酬生成部124は、構成パスCPIに、以前のステップB12Yで選択されていない構成が残っているかどうかを判定する(ステップB12X)。ステップB12Xの判定の結果、構成パスCPIに構成が残っていない場合は、ステップS122は終了する。
【0075】
一方、ステップB12Xの判定の結果、構成パスCPIに構成が残っている場合は、報酬生成部124は、残っている各構成について、末尾から順に以下で説明するステップB12Y~B1Cの動作を行う。
【0076】
具体的には、まず、報酬生成部124は、以前に実行されたステップB12Yで選択されていない構成のうち、構成パスCP1で最も後ろにある構成を選択する(ステップB12Y)。次に、報酬生成部124は、ステップB12Yで選択した構成が探索木T1のノードとして登録されているかどうかを判定する(ステップB13)。
【0077】
ステップB13の判定の結果、ステップB12Yで選択した構成が探索木T1のノードとして登録されていなければ(ステップB13:No)、報酬生成部124は、以下で説明するステップB14~B16の動作を行う。
【0078】
まず、報酬生成部124は、ステップB12で処理中の構成を、探索木T1のノードとして登録する(ステップB14)。探索木T1は、構成がどの部品を具体化した際にいくら報酬を得られたかを保存しておく木構造のデータ構造である。
【0079】
次に、報酬生成部124は、ステップB14で登録したノードの変数として、ノードが探索で訪問された回数を表す変数を初期値1に初期化する(ステップB15)。以降、変数及びその内容のことを、単に「訪問回数」と表記する。
【0080】
さらに、報酬生成部124は、ノードが持つ変数として、辞書型の変数を初期化する(ステップB16)。辞書型の変数は、ステップB12で処理中の構成に含まれる各構成要素が、設計の結果として「完全に具体的」になった回数を構成要素毎に保存する変数である。また、辞書型の変数は、構成要素の識別子をキー、構成要素が「完全に具体的」になった回数をバリューとして持つ辞書型の変数でもある。
【0081】
初期化の結果として、各バリューは全て0に設定される。以降、辞書型の変数によって、ある構成要素の識別子をキーとして取得できるバリューの値は、構成要素の「具体化成功回数」と表記される。なお、ここでは一例として辞書型の変数としているが、ステップB12で処理中の構成に含まれる各構成要素が、設計の結果として「完全に具体的」になった回数を構成要素毎に保存できるデータ構造であれば、辞書型以外のデータ構造でもよい。ステップB16の後はステップB18Xが実行される。
【0082】
一方、ステップB13の判定の結果、ステップB12Yで選択した構成が探索木T1のノードとして登録されていれば(ステップB13:Yes)、報酬生成部124は、ノードの訪問回数を1増やす(ステップB17)。ステップB16の後はステップB18Xが実行される。
【0083】
次に、報酬生成部124は、構成パスCPIに、ステップB12Yで選択した構成に、以前のステップB18Yで選んでいない構成要素が未だ残っているかどうかを判定する(ステップB18X)。ステップB18Xの判定の結果、構成要素が未だ残っている場合は、報酬生成部124は、以下で説明するB18Y~B1Bの処理を実行する。
【0084】
まず、報酬生成部124は、ステップB12Yで選択した構成に含まれる構成要素から一つの構成要素を選択する(ステップB18Y)。次に、報酬生成部124は、ステップB18Yで選択した構成要素が最終構成で「完全に具体的」であるかどうかを判定する(ステップB19)。
【0085】
ステップB19の判定の結果、ステップB18Yで選択した構成要素が最終構成で「完全に具体的」である場合は(ステップB19:Yes)、報酬生成部124は、ステップB12Yで選んだ構成のノードが持つ前記構成要素の具体化成功回数を1増やす(ステップB1A)。
【0086】
一方、ステップB19の判定の結果、ステップB18Yで選択した構成要素が最終構成で「完全に具体的」でない場合は(ステップB19:No)、報酬生成部124は、ステップB1Bを実行する。つまり、報酬生成部124は、ステップB18Yで選んだ構成要素の具体化成功回数の値を、ステップB12Yで選んだ構成のノードの訪問回数で除算し、得られた値を、前記構成要素の報酬とする(ステップB1B)。その後、報酬生成部124は、再度、ステップB18Xを実行する。
【0087】
また、ステップB18Xの判定の結果、構成要素が残っていない場合は、学習データ生成部125が、ステップB12Yで選んだ構成に含まれる構成要素毎に、その構成と、その構成要素の識別子と、ステップB1Bで生成したその構成要素の報酬と、から成る学習データを生成して、学習データの集合に追加する(ステップB1C)。
【0088】
ここで、探索木T1の例を
図37に示す。
図37は、上述したステップS122の動作により、
図30に示した設計が分岐する過程で生成される構成の一例を示している。
図37において、ノードに添えられている文字は、そのノードが表す
図30中の構成を意味する。
図38の例では、構成(c)を表すノードにおいて、それが保持している、訪問回数(10回)と、構成(c)に含まれる構成要素が「完全に具体化」された回数(それぞれs1が7回、b1が4回、a1が5回、a2が6回)と、の情報が示されている。
図38には示されていないが、構成(c)以外のノード(a)~(g)についても同様に、訪問回数と、当該構成に含まれる「完全に具体化」された回数と、の情報を保持している。
【0089】
構成要素が「完全に具体的」であるか否か判定するステップB11の動作について詳細に説明するのに先立ち、構成要素が「完全に具体的」である条件について概念的に説明する。構成要素が「完全に具体的」であるとは、構成要素がそれに必要なその他の全ての構成要素も含めて具体的であることである。
【0090】
ここで、構成要素が「具体的」であることの条件は、以下で説明する二つの条件を満たすことである。一つ目の条件は、構成要素の型が具体的な型であることである。二つ目の条件は、構成要素の型に期待周辺構成が存在しない、又は、構成要素の型に期待周辺構成が存在し、構成要素の期待周辺構成が満たされているあることである。
【0091】
構成要素が「完全に具体的」であることの厳密な条件は、以下に示す二つの条件により再帰的に定義される。一つ目の条件は、構成要素が具体的であること。二つ目の条件は、構成要素の型に期待周辺構成が存在し、期待周辺構成が構成要素に適用済みである場合に、期待周辺構成に登場する全ての構成要素が「完全に具体的」であることである。
【0092】
これらを踏まえ、
図7を参照して、構成要素が「完全に具体的」であるか否か判定するステップB11の動作について詳細に説明する。ステップB11の動作主体は、特に言及がない限り具体化成功判定部123である。ステップB11は、次に説明する、一つの構成要素と一つの構成を引数とする再帰的な手続きとして定義される。
【0093】
まず、具体化成功判定部123は、引数の構成要素の型に期待周辺構成が存在しているかどうかを判定する(ステップB111)。ステップB111の判定の結果、引数の構成要素の型に期待周辺構成が存在していない場合(ステップB111:No)、具体化成功判定部123は、Trueを返し(ステップB112)、ステップB11を終了する。
【0094】
一方、ステップB111の判定の結果、引数の構成要素の型に期待周辺構成が存在する場合(ステップB111:Yes)、具体化成功判定部123は、引数の構成要素の期待周辺構成が満たされているかどうかを判定する(ステップB113)。
【0095】
ステップB113の判定の結果、引数の構成要素の期待周辺構成が満たされていなければ(ステップB113:No)、具体化成功判定部123は、Falseを返し(ステップB114)、ステップB11を終了する。
【0096】
一方、ステップB113の判定の結果、引数の構成要素の期待周辺構成が満たされていれば(ステップB113:Yes)、具体化成功判定部123は、引数の構成の中に存在する引数の構成要素の期待周辺構成を全て列挙する(ステップB115)。
【0097】
次に、具体化成功判定部123は、以前実行されたステップB116Yで選択されていない期待周辺構成がまだ存在しているかどうかを判定する(ステップB116X)。ステップB116Xの判定の結果、選択されていない期待周辺構成がまだ存在している場合は、具体化成功判定部123は、以下で説明するステップB116Y~B11Dの動作を行う。
【0098】
まず、具体化成功判定部123は、ステップB115で列挙した期待周辺構成から一つを選択する(ステップB116Y)。次に、具体化成功判定部123は、フラグ変数にTrueを代入する(ステップB117)。
【0099】
更に、具体化成功判定部123は、ステップB116Yで選んだ期待周辺構成に未処理の構成要素が存在しているかどうかを判定する(ステップB118X)。ステップB118Xの判定の結果、ステップB116Yで選んだ期待周辺構成に未処理の構成要素が存在していない場合は、具体化成功判定部123は、ステップB11Cを実行する。
【0100】
一方、ステップB118Xの判定の結果、ステップB116Yで選んだ期待周辺構成に未処理の構成要素が存在している場合は、具体化成功判定部123は、以下で説明するステップB118Y~B11Bの動作を行う。
【0101】
まず、具体化成功判定部123は、ステップB116Yで選んだ期待周辺構成に含まれる各構成要素から一つの構成要素を選択する(ステップB118Y)。次に、具体化成功判定部123は、ステップB118Yで選んだ構成要素と、ステップB11の引数の構成と、を引数としてステップB11の再帰手続きを行う(ステップB119)。
【0102】
次に、具体化成功判定部123は、ステップB119の返り値がTrueであるかどうかを判定する(ステップB11A)。ステップB11Aの判定の結果、ステップB119の返り値がTrueだった場合(ステップB11A:Yes)、具体化成功判定部123は、ステップB118Xを再度実行する。
【0103】
一方、ステップB11Aの判定の結果、返り値がFalseだった場合(ステップB11A:No)、具体化成功判定部123は、フラグ変数にFalseを代入する(ステップB11B)。
【0104】
次に、ステップB11Bの実行後、又はステップB118XでNoの場合は、具体化成功判定部123は、フラグ変数の内容がTrueであるかどうかを判定する(ステップB11C)。ステップB11Cの判定の結果、フラグ変数の内容がTrueである場合(ステップB11C:Yes)、具体化成功判定部123は、Trueを返し(ステップB11D)、ステップB11の動作を終了する。
【0105】
一方、ステップB11Cの判定の結果、フラグ変数の内容がFalseだった場合(ステップB11C:No)、具体化成功判定部123は、ステップB116Xを再度実行する。
【0106】
また、ステップB116Xの判定の結果、選択されていない期待周辺構成が存在していない場合は、具体化成功判定部123は、全ての期待周辺構成の処理が終了しているので、Falseを返し(ステップB114)、ステップB11の動作を終了する。
【0107】
図8を参照して、学習データに基づき学習を行うステップS124の動作について詳細に説明する。ステップS124の動作主体は、特に言及がない限り機械学習部126である。構成要素評価部111の学習モデルは、グラフ内の各ノードおよびエッジと、グラフ自身が属性値を持つグラフ情報とを入力とし、同様の形式のグラフ情報を出力するGNN(Graph Neural Network)とする。
【0108】
最初に、機械学習部126は、ステップS122で保存した学習データの集合から、一つの学習データLD1を選出する(ステップC11)。そして、機械学習部126は、学習データLD1に含まれる構成を表すグラフ情報を構成要素評価部111の学習モデルに入力し、結果として構成要素評価部111の学習モデルから出力されるグラフ情報をOG1とする(ステップC12)。
【0109】
次に、機械学習部126は、OG1に含まれる構成要素のうち、学習データLD1に含まれる構成要素の識別子と同一の識別子を持つ構成要素の属性値PV1と、学習データLD1に含まれる報酬と、の組をVP1とする(ステップC13)。
【0110】
次に、機械学習部126は、学習データの集合から学習データを全て選出したかどうかを判定する(ステップC14)。ステップC14の結果、学習データの集合から学習データを全て選出していない場合は(ステップC14:Yes)、機械学習部126は、再度ステップC11からC13を実行する。
【0111】
一方、ステップC14の判定の結果、学習データの集合から学習データを全て選出している場合は(ステップC14:No)、機械学習部126は、学習データに含まれる全てのデータについて、VP1を生成し、これを集めたものをVPS1とする(ステップC15)。
【0112】
更に、機械学習部126は、VPS1に含まれる各ペアについて、属性値と確定報酬の平均二乗誤差とを損失関数とし、その損失関数を最小化するよう、構成要素評価部111の学習モデルの機械学習を実行する(ステップC16)。
【0113】
図9を参照して、学習の過程で設計の試行を行うステップS13の動作について詳細に説明する。ステップS13の動作主体は、特に言及がない限り、設計試行部122である。
【0114】
まず、設計試行部122は、システム要件R1を、現在の構成を表す変数に代入する(ステップS131)。以降、現在の構成を表す変数に代入されている内容を、単に「現在構成」と表記する。そして、設計試行部122は、次に現在の構成を表す変数に代入される構成の候補を格納する変数NL1を空のリストとして初期化する(ステップS132)。
【0115】
次に、設計試行部122は、現在の構成に具体化規則を適用できるかどうかを判定する(ステップS137)。ステップS137の判定の結果、現在の構成に具体化規則を適用できない場合は、後述するステップS138が実行される。
一方、ステップS137の判定の結果、現在の構成に具体化規則を適用できる場合は、設計試行部122は、現在の構成から1回の具体化規則の適用で生成可能な構成を全て列挙する(ステップS133)。
【0116】
さらに、設計試行部122は、ステップS133で列挙した各構成を、構成総合評価部112に入力し、その構成評価を行う(ステップS134)。構成評価の動作T1の詳細は後述する。そして、設計試行部122は、ステップS134の処理により得られた各構成のうち、評価値が最も高いものを、現在の構成を表す変数に代入する(ステップS135)。
【0117】
次に、ステップS133で列挙した構成のうち、ステップS135で現在の構成を表す変数に代入した構成以外の各構成について、その構成と、ステップS134で得られたその構成の評価値と、から成るペアを、変数NL1が格納するリストに追加する(ステップS136)。
【0118】
ステップS136の実行後、設計試行部122は、再度ステップS137を実行する。ステップS137の判定の結果、現在の構成に具体化規則を適用できる場合は、設計試行部122は、再度ステップS133を実行する。
【0119】
一方、ステップS137の判定の結果、現在の構成に具体化規則を適用できない場合は、設計試行部122は、現在構成が具体構成であるかどうかを判定する(ステップS138)。ステップS138の判定の結果、現在構成が具体構成である場合は(ステップS138:Yes)、ステップS13での動作は終了する。
【0120】
一方、ステップS138の判定の結果、現在構成が具体構成でない場合は(ステップS138:No)、設計試行部122は、変数NL1が格納するリストから、評価値が最も高いペアを取り出す(ステップS139)。次に、設計試行部122は、ステップS139で取り出したペアに含まれる構成を、現在の構成を表す変数に代入する(ステップS13A)。その後、設計試行部122は、再度、ステップS137に移行する。
【0121】
図10を参照して、構成評価の動作T1について詳細に説明する。構成評価の動作T1の動作主体は、特に言及がない限り構成総合評価部112である。
【0122】
まず、
図10に示すように、構成総合評価部112は、評価対象の構成を入力として受け取る(ステップT11)。次に、ステップT11で入力として受け取った評価対象の構成を構成要素評価部111に入力し、入力した構成に含まれる各構成要素の評価値を得る(ステップT12)。
【0123】
さらに、構成総合評価部112は、ステップT12で得られた各構成要素の評価値のうち、最も値が小さいものを、評価対象の構成の評価値とする(ステップT13)。ステップT13において、評価値は、上述したように、構成要素が完全に具体化できるか否かの見込みを表している。なお、評価値の決定手法は、上述したステップT13には特に限定されない。評価対象の構成の評価値としては、各構成要素の評価値の平均値が用いられても良いし、各構成要素の評価値の最大値が用いられても良い。
【0124】
[効果の説明]
実施の形態1においては、システム構成全体の設計の成否の見込みではなく、各構成要素の具体化の成否の見込みが学習される。つまり、各構成要素の具体化の成否に応じて報酬が生成され、それに基づいて構成要素毎に具体化が正しく完了する見込みを表す評価値が学習される。
この結果、構成要素単位の学習が可能になり、構成の一部が変更された際にその影響が分からず学習内容が応用できないという問題が解消され、全体の構成が変わっても構成要素単位での応用が可能になる。また、学習に必要なデータ量及び時間が構成の規模に応じて増大してしまいスケーラブルでないという問題も解消決され、ICTシステムの自動設計の学習効率が向上する。
【0125】
[プログラム]
実施の形態1において、プログラムは、コンピュータに、
図3~
図10に示す各ステップを実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、システム構成評価装置1とシステム構成評価方法とを実現することができる。この場合、コンピュータのプロセッサは、構成評価部11及び構成要素学習部12として機能し、処理を行なう。コンピュータとしては、汎用のPCの他に、スマートフォン、タブレット型端末装置が挙げられる。
【0126】
また、プログラムは、複数のコンピュータによって構築されたコンピュータシステムによって実行されても良い。この場合は、例えば、1又は複数のコンピュータが、構成評価部11及び構成要素学習部12のいずれかとして機能しても良い。
【0127】
(実施の形態2)
次に実施の形態2における、システム構成評価装置、システム構成評価方法、及びプログラムについて、
図11~
図22を参照しながら説明する。
【0128】
実施の形態2では、カリキュラム学習が行われる。カリキュラム学習とは、学習したい大きな問題を小さな問題に分割し、それらを適切な順序で学習することで効率的に学習する手法である。実施の形態2では、構成全体を設計するという大きな問題を、構成に含まれる構成要素をそれぞれ具体化するという小さな問題に分割し、それらを適切な順番で学習することが行われる。以下においては、実施の形態1と同様の部分については、適宜省略する。
【0129】
[装置構成]
最初に、実施の形態2におけるシステム構成評価装置の構成について
図11を用いて説明する。
図11は、システム構成評価装置の一例の構成を示す構成図である
【0130】
図11に示すように、システム構成評価装置2は、構成評価部21と、構成要素学習部22と、を備える。更に、構成評価部21は、構成要素評価部111と、構成総合評価部112と、を備える。構成要素学習部22は、学習工程制御部221と、設計試行部122と、具体化成功判定部123と、報酬生成部124と、学習データ生成部125と、機械学習部126と、カリキュラム生成部227と、を備える。各部は、それぞれ概略次のように動作する。
【0131】
構成要素評価部111、構成総合評価部112、設計試行部122、具体化成功判定部123、報酬生成部124、学習データ生成部125、及び機械学習部126、それぞれの動作の概略は、実施の形態1で説明した各部の動作と同様である。
【0132】
但し、実施の形態2では、上述したように、構成要素学習部22が、カリキュラム生成部227を備えており、この点で、実施の形態2は実施の形態1と異なっている。また、これに伴い、学習工程制御部221の動作も異なる。
【0133】
カリキュラム生成部227は、特定の構成要素と、それを具体化するのに必要となる別の構成要素と、の関係性を表す依存関係に基づいて、依存関係がない構成要素および依存関係にある構成要素について学習が完了した構成要素の順に学習が行われるように、カリキュラムを生成する。
【0134】
学習工程制御部221は、カリキュラム生成部が生成したカリキュラムに従って、学習工程の実行を制御して、学習モデルに対する機械学習を実行する。この場合の学習工程には、大きく分類して初期学習と再学習との二種類がある。これらの詳細については後述する。
【0135】
[装置動作]
次に、実施の形態2におけるシステム構成評価装置2の動作の一例について
図12から
図22を用いて説明する。以下の説明においては、適宜
図11を参照する。また、実施の形態2では、システム構成評価装置2を動作させることによって、システム構成評価方法が実施される。よって、実施の形態2において、システム構成評価方法の説明は、以下のシステム構成評価装置の動作説明に代える。
【0136】
実施の形態2においては、大きく分類して三つの動作がある。それは、構成評価の初期学習の動作と、構成評価の再学習の動作と、構成評価の動作との三つである。構成評価の初期学習の動作では、コンピュータシステム、具体的にはICTシステムのシステム構成の評価を行うため、ICTシステムの各構成要素単位の評価について、過去に学習が行われていない学習モデルの学習が行われる。構成評価の再学習では、ICTシステムの各構成要素単位の評価について、過去に学習済の学習モデルの学習が行われる。構成評価の動作では、学習済の学習モデルが活用されて、ICTシステムのシステム構成の評価が行われる。以降、それぞれについて説明する。
【0137】
図12を参照して、システム構成評価装置2における構成評価の初期学習の動作U2について詳細に説明する。
【0138】
まず、
図12に示すように、カリキュラム生成部227が依存グラフを生成する(ステップU21)。次に、カリキュラム生成部227がカリキュラムを生成する(ステップU22)。カリキュラムはグラフ構造を呈しており、カリキュラム中のノードを学習項目と呼ぶ。
【0139】
次に、カリキュラム生成部227が、カリキュラム中の各学習項目の学習完了フラグを未完了に設定する(ステップU23)。そして、カリキュラム生成部227は、カリキュラム中の学習完了フラグが未完了である学習項目があるかどうかを判定する(ステップU24X)。ステップU24Xの判定の結果、カリキュラム中の学習完了フラグが未完了である各学習項目が存在しない場合は、動作U2は終了する。
【0140】
一方、ステップU24Xの判定の結果、カリキュラム中の学習完了フラグが未完了である各学習項目が存在する場合は、カリキュラム生成部227は、以下で説明するステップU25~U27の動作を行う。
【0141】
まず、学習工程制御部221が、依存先がない、又は全ての依存先の学習完了フラグが完了になっている学習項目を、カリキュラムから一つ選ぶ(ステップU24Y)。次に、カリキュラム生成部227が、ステップU24Yで選んだ学習項目を学習するための要件の集合を生成する(ステップU25)。
【0142】
さらに、構成要素学習部22が、ステップU25で生成した要件の集合を用いて、ステップU24Yで選んだ学習項目を学習する(ステップU26)。そして、学習工程制御部221が、ステップU24Yで選んだ学習項目の学習完了型フラグを完了に設定する(ステップU27)。その後、学習工程制御部221は、再度ステップU24Xを実行する。
【0143】
ここで、依存グラフを生成する動作U21について説明するのに先立ち、依存グラフについて説明する。依存グラフとは、構成要素の型の依存関係を表すグラフ構造の情報である。構成要素型がノード、前記構成要素型間の依存関係が有向エッジで表される。依存グラフにおける依存関係とは、ある型の構成要素がシステム構成の中で正しく機能するために必要となるその他の構成要素の型を表す関係性のことである。
【0144】
例えば、ある構成要素型ET_Xの期待周辺構成である前提構成情報又は必須構成情報に、構成要素型ET_Yが含まれている場合、型ET_Yの構成要素は型ET_Xの構成要素が機能するために必要である。このとき、型ET_Xおよび型ET_Yの間には依存関係があり、型ET_Xは型ET_Yに依存すると表現する。
【0145】
ある構成要素型のノードから、構成要素型が依存しているその他の構成要素型のノードに向けて、有向エッジが引かれる。先程の例では、型ET_Xのノードから型ET_Yのノードに向けて有向エッジが引かれる。
【0146】
図34は依存グラフの例を示す。
図34において、ノードに添えられている文字は、当該ノードが表す構成要素型の名前を表す。
図34に含まれる全ての構成要素型についての説明は省略するが、例えば構成要素型cに着目した場合、構成要素型cは構成要素型dおよびfに依存しており、構成要素型aおよびgから依存されている。
【0147】
図13を参照して、依存グラフを生成するステップU21について詳細に説明する。ステップU21の動作主体は、特に言及がない限りカリキュラム生成部227である。
【0148】
まず、
図13に示すように、カリキュラム生成部227は、構成要素型定義情報に定義されている全ての構成要素型について、その型を表すノードを依存グラフに登録する(ステップU211)。
【0149】
次に、カリキュラム生成部227は、依存グラフに登録されている各ノードの中に後述のステップU212Yによって未だ選択されていないノードがあるかどうかを判定する(ステップU212X)。ステップU212Xの判定の結果、未だ選択されていないノードがない場合は、ステップU21は終了する。一方、ステップU212Xの判定の結果、未だ選択されていないノードがある場合は、カリキュラム生成部227は、以下に説明するステップU212Y~U219の動作を行う(ステップU212X)。
【0150】
まず、カリキュラム生成部227は、依存グラフに登録されている全ノードから、未だ選択されていないノードを1つ選択する(ステップU212Y)。次に、カリキュラム生成部227は、ステップU212Yで選択したノードが表す構成要素型ET1が依存する構成要素型の集合を格納する変数TS1を、ステップU212Yで選んだノードに変数として持たせ空集合として初期化する(ステップU213)。
【0151】
さらに、カリキュラム生成部227は、具体化規則定義情報に定義されている具体化規則から、構成要素型ET1を具体化対象とする具体化規則を全て列挙する(ステップU214)。そして、カリキュラム生成部227は、具体化規則がまだあるかどうかを判定する(ステップU215X)。
【0152】
ステップU215Xの判定の結果、具体化規則はない場合は、カリキュラム生成部227は、再度ステップU212Xを実行する。一方、ステップU215Xの判定の結果、具体化規則がまだある場合は、カリキュラム生成部227は、ステップU214で列挙した各具体化規則について、以下で説明するステップU215Y~U219の動作を行う(ステップU215X)。
【0153】
まず、カリキュラム生成部227は、ステップU214で列挙した具体化規則から一つ選ぶ(ステップU215Y)。次に、カリキュラム生成部227は、ステップU215Yで選んだ具体化規則の具体化後の構成に含まれる構成要素のうち、ステップU215Yで選んだ具体化規則の具体化対象の構成要素と識別子が等しい、構成要素の構成要素型ET2が、構成要素型ET1と同じであるかどうかを判定する(ステップU216)。
【0154】
ステップU216の判定の結果、構成要素型ET2が構成要素型ET1と同じでない場合は(ステップU216:No)、カリキュラム生成部227は、変数TS1が格納する集合の要素として構成要素型ET2を追加する(ステップU217)。
【0155】
次に、カリキュラム生成部227は、依存グラフに登録されている、構成要素型ET2を表すノードに向けて、ステップU212Yで選んだノードからエッジを引く(ステップU218)。さらに、カリキュラム生成部227は、ステップU218で引いたエッジの期待周辺構成フラグをFalseに設定する(ステップU219)。その後、カリキュラム生成部227は、ステップU21Aを実行する。期待周辺構成フラグは、当該エッジが期待周辺構成に基づく依存関係を表すものか否かを表すフラグである。
【0156】
また、ステップU216の判定の結果、構成要素型ET2が構成要素型ET1と同じである場合(ステップU216:Yes)、又はステップU219が実行された場合は、カリキュラム生成部227は、ステップU21Aを実行する。
【0157】
具体的には、カリキュラム生成部227は、ステップU215Yで選んだ具体化規則の、具体化に必要な構成又は具体化後の構成に含まれる構成要素を全て列挙する(ステップU21A)。さらに、カリキュラム生成部227は、ステップU21Aで列挙した各構成要素の型を、変数TS1が格納する集合の要素として追加する(ステップU21B)。
【0158】
そして、カリキュラム生成部227は、ステップU21Bで変数TS1が格納する集合の要素として追加した各構成要素型について、依存グラフに登録されている各構成要素型を表す各ノードに向けて、ステップU212Yで選んだノードからエッジを引く(ステップU21C)。次に、カリキュラム生成部227は、ステップU21Cで引かれた各エッジについて、エッジの期待周辺構成フラグをTrueに設定する(ステップU21D)。
【0159】
カリキュラムを生成する動作U22について説明するのに先立ち、カリキュラムについて説明する。カリキュラムとは、カリキュラム学習で行う個々の学習の半順序関係を表すグラフの情報である。グラフにおいて、学習項目がノード、学習項目間の依存関係が有向エッジとして表される。
【0160】
学習項目とは、カリキュラム学習で行う個々の学習のことであり、実施の形態では、学習項目は、学習の対象とする構成要素型の情報を少なくとも保持する。カリキュラムにおける依存関係とは、ある学習項目を学習するために事前に学習しておく必要のあるその他の学習項目を表す関係性のことである。
【0161】
例えば、ある学習項目LT_Xにおける学習の対象が構成要素型ET_Xであり、それとは別の学習項目LT_Yにおける学習の対象が構成要素型ET_Yであり、構成要素型ET_Xは構成要素型ET_Yに依存しているとする。この場合、構成要素型ET_Xを用いた設計において、構成要素型ET_Yが登場する可能性があるため、学習項目LT_Yは学習項目LT_Xよりも前に学習しておく必要がある。このとき、学習項目LT_XとLT_Yの間には依存関係があり、学習項目LT_Xは学習項目LT_Yに依存すると表現する。
【0162】
ある学習項目のノードから、学習項目が依存しているその他の学習項目のノードに向けて、有向エッジが引かれる。先程の例では、学習項目LT_Xのノードから学習項目LT_Yのノードに向けて有向エッジが引かれる。なお、前述の説明から分かるとおり、学習項目間の依存関係は、学習項目のそれぞれの学習の対象である構成要素型の間に依存関係がある場合に限り成り立つ。このため、依存グラフとカリキュラムのグラフとは、基本的には同型となる。
【0163】
ただし、カリキュラムに巡回(グラフの中で有向エッジにより形成される閉路)が存在してしまうと、巡回に含まれる学習項目を学習する順番が決定できなくなってしまう。このため、カリキュラムは依存グラフから巡回を排除したグラフ、つまり各巡回に含まれるエッジの一部が削除されたグラフになっている。
【0164】
このような事情から、カリキュラムは依存グラフを基に生成される。
図34の依存グラフを基に生成したカリキュラムの例を
図35に示す。ノードに添えられている文字は、当該ノードが表す学習項目の学習の対象である構成要素型の名前を表す。
図35に含まれる全ての構成要素型についての説明は省略するが、例えば学習項目cに着目した場合、学習項目cは学習項目dおよびfに依存しており、学習項目aから依存されている。
図35に示すとおり、
図34の依存グラフに含まれていたノードgからノードcへの有向エッジが削除されており、
図34の依存グラフに含まれていたノードc=>d=>g=>cの巡回が排除されている。
【0165】
図14を参照して、カリキュラムを生成するステップU22の動作について詳細に説明する。ステップU22の動作主体は、特に言及がない限りカリキュラム生成部227である。
【0166】
まず、
図14に示すように、カリキュラム生成部227は、ステップU21で生成した依存グラフをコピーしてカリキュラムの初期値とする(ステップU221)。カリキュラムはグラフ構造をしており、カリキュラム中のノードを学習項目と呼ぶ。
【0167】
次に、カリキュラム生成部227は、カリキュラムに含まれるグラフの巡回構造(以降、単に「巡回」と表記する)を検出しリスト化する(ステップU222)。以降、リスト化した巡回のことを巡回リストと表記する。
【0168】
さらに、カリキュラム生成部227は、カリキュラムから、ステップU222で検出した各巡回に含まれるエッジを一時的に削除する(ステップU223)。そして、カリキュラム生成部227は、カリキュラム中の各学習項目について、学習項目の学習難易度を計算する(ステップU224)。
【0169】
次に、カリキュラム生成部227は、ステップU223でカリキュラムから一時的に削除したエッジをカリキュラムに復元する(ステップU225)。さらに、カリキュラム生成部227は、ステップU222でリスト化した巡回リストを、特定の順序にソートする(ステップU226)。
【0170】
そして、カリキュラム生成部227は、ステップU226でソートした巡回リストに含まれる各巡回について、前記巡回に含まれる特定の条件を満たすエッジを削除し巡回を解消する(ステップU227)。
【0171】
図15を参照して、学習難易度の計算を行うステップU224の動作について詳細に説明する。ステップU224の動作主体は、特に言及がない限りカリキュラム生成部227である。
【0172】
まず、
図15に示すように、カリキュラム生成部227は、処理すべき学習項目があるかどうかを判定する(ステップF21X)。ステップF21Xの判定の結果、学習項目がない場合は、ステップU224は終了する。一方、ステップF21Xの判定の結果、学習項目がある場合は、カリキュラム生成部227は、以下で説明するステップF21Y~F24の動作を行う。
【0173】
まず、カリキュラム生成部227は、カリキュラムの中から、依存先がないか、又は依存先の学習難易度が全て計算済みの学習項目を一つ選択する(ステップF21Y)。次に、カリキュラム生成部227は、ステップF21Yで選択した学習項目の依存先があるかどうかを判定する(ステップF22)。
【0174】
ステップF22の判定の結果、ステップF21Yで選択した学習項目の依存先がない場合(ステップF22:No)、カリキュラム生成部227は、学習項目の学習難易度を1に設定する(ステップF23)。その後、カリキュラム生成部227は、再度ステップF21Xを実行する。
【0175】
一方、ステップF22の判定の結果、ステップF21Yで選択した学習項目の依存先がある場合(ステップF22:Yes)、カリキュラム生成部227は、依存先の各学習項目の学習難易度のうち、最も高い学習難易度に1を足した値を、ステップF21Yで選んだ学習項目の学習難易度に設定する(ステップF24)。
【0176】
ここで、
図14に示したステップU226で行う巡回のソートの方法について詳細に説明する。ステップU226の動作主体は、特に言及がない限りカリキュラム生成部227である。まず、カリキュラム生成部227は、各エッジが巡回に含まれる数CCをカウントし、各巡回に含まれるエッジのCCの値のうち最大のものを前記巡回のソートに用いる値SV1とし、SV1の値が降順になるように巡回をソートする(ソート条件SC1)。
【0177】
ソート条件SC1で求めたソートに用いる値SV1が同一である場合には、カリキュラム生成部227は、各巡回に含まれるエッジのうち、値が最大のCCを持つエッジの数を巡回のソートに用いる値SV2とし、SV1の値が等しい巡回同士では、SV2の値が降順になるように巡回をソートする(ソート条件SC2)。
【0178】
ソート条件SC2で求めたソートに用いる値SV2が同一である場合には、カリキュラム生成部227は、一意の順序に決定できる任意の方法によりソートする(ソート条件SC3)。例えば、巡回に含まれる学習項目の学習対象である構成要素型の名称を、アルファベット順で最初のものが先頭になるように巡回の順に並べて結合した文字列を、前記巡回のソートに用いる文字列SV3とし、SV3がアルファベット順になるように巡回をソートしてもよい。
【0179】
図16を参照して、エッジを削除し巡回を解消するステップU227の動作について詳細に説明する。ステップU227の動作主体は、特に言及がない限りカリキュラム生成部227である。
【0180】
まず、
図16に示すように、カリキュラム生成部227は、ステップU226でソートした巡回リストに未処理の巡回が残っているかどうかを判定する(ステップD21X)。ステップD21Xの判定の結果、巡回リストに未処理の巡回が残っていない場合は、ステップU227は終了する。一方、ステップU226でソートした巡回リストに未処理の巡回が残っている場合は、カリキュラム生成部227は、以下で説明するステップD21Y~D24を行う。
【0181】
まず、カリキュラム生成部227は、ステップU226でソートした巡回リストの前から順に、このステップD21Yで選んでいない巡回を一つ選択する(ステップD21Y)。次に、カリキュラム生成部227は、ステップD21Yで選択した巡回において削除済のエッジが含まれているかどうかを判定する(ステップD22)。
【0182】
ステップD22の判定の結果、ステップD21Yで選択した巡回において削除済のエッジが一つでも含まれている場合(ステップD22:Yes)、カリキュラム生成部227は、再度ステップD21Xを実行する。これにより、次のループ処理に移行する。
【0183】
一方、ステップD22の判定の結果、ステップD21Yで選択した巡回において削除済のエッジが一つもふくまれていない場合(ステップD22:No)、カリキュラム生成部227は、巡回に含まれるエッジの削除候補リストを生成する(ステップD23)。
【0184】
さらに、カリキュラム生成部227は、ステップD23で生成した削除候補リストから、所定の方法でエッジを一つ選択し、選択したエッジを削除する(ステップD24)。
【0185】
図17を参照して、巡回に含まれるエッジの削除候補リストを生成するステップD23の動作について詳細に説明する。ステップD23の動作主体は、特に言及がない限りカリキュラム生成部227である。削除候補リストとは、巡回の解消のために削除する候補となる、エッジを格納するリスト型のデータ構造の変数である。
【0186】
まず、
図17に示すように、カリキュラム生成部227は、巡回に含まれるエッジのうち、期待周辺構成フラグがTrueのエッジを全て列挙する(ステップD231)。
【0187】
次に、カリキュラム生成部227は、ステップD231で列挙したエッジが空であるかどうかを判定する(ステップD232)。
【0188】
ステップD232の判定の結果、ステップD231で列挙したエッジが空でない場合(ステップD232:No)、カリキュラム生成部227は、ステップD231で列挙したエッジを格納したリストを削除候補リストとする(ステップD233)。
【0189】
一方、ステップD232の判定の結果、ステップD231で列挙したエッジが空であった場合(ステップD232:Yes)、カリキュラム生成部227は、巡回に含まれる全てのエッジを格納したリストを削除候補リストとする(ステップD234)。
【0190】
図18を参照して、削除候補リストからエッジを一つ選んで削除するステップD24の動作について詳細に説明する。ステップD24の動作主体は、特に言及がない限りカリキュラム生成部227である。
【0191】
まず、
図18に示すように、カリキュラム生成部227は、削除候補リストに含まれるエッジのうち、ステップD21Yで選んだ巡回以外の巡回に含まれている数が最大のエッジが1つであるかどうかを判定する(ステップD24)。
【0192】
ステップD24の判定の結果、エッジが1つである場合(ステップD241:Yes)、カリキュラム生成部227は、そのエッジを削除し(ステップD242)、ステップD24の動作を終了する。
【0193】
ステップD24の判定の結果、エッジが1つでない場合(ステップD241:No)、カリキュラム生成部227は、ステップD21Yで選んだ巡回以外の巡回に含まれている数が最大のエッジのうち、学習難易度が最小の学習項目から出るエッジが1つであるかどうかを判定する(ステップD243)。
【0194】
ステップD243の判定の結果、エッジが1つである場合(ステップD243:Yes)、カリキュラム生成部227は、そのエッジを削除し(ステップD242)、ステップD24の動作を終了する。
【0195】
一方、ステップD243の判定の結果、エッジが1つでない場合(ステップD243:No)、カリキュラム生成部227は、ステップD21Yで選んだ巡回以外の巡回に含まれている数が最大のエッジのうち、学習難易度が最大の学習項目へ向かうエッジが1つであるかどうかを判定する(ステップD244)。
【0196】
ステップD244の判定の結果、エッジが1つである場合(ステップD244:Yes)、カリキュラム生成部227は、そのエッジを削除し(ステップD242)、ステップD24の動作を終了する。
【0197】
一方、ステップD244の判定の結果、エッジが1つでない場合(ステップD244:No)、カリキュラム生成部227は、ステップD21Yで選んだ巡回以外の巡回に含まれている数が最大のエッジのうち、一意に決定できる任意の方法で一つを選択し(ステップD245)、そして、選択したエッジを削除し(ステップD242)、ステップD24の動作を終了する。なお、ステップD245における選択基準としては、例えば、エッジが出ている学習項目の学習対象である、構成要素型の名称がアルファベット順で最も早いエッジが選ばれる、等が挙げられる。
【0198】
図19を参照して、選んだ学習項目の学習に用いる要件の集合を生成するステップU25の動作について説明する。ステップU25の動作主体は、特に言及がない限りカリキュラム生成部227である。
【0199】
まず、
図19に示すように、カリキュラム生成部227は、生成した要件の集合を表す変数RSを空集合として初期化する(ステップU251)。次に、カリキュラム生成部227は、選んだ学習項目の学習対象である構成要素型を具体化対象とする具体化規則を全て列挙する(ステップU252)。
【0200】
さらに、カリキュラム生成部227は、ステップU252で列挙した具体化規則のうち、処理が終了してない具体化規則がまだあるかどうかを判定する(ステップU253X)。ステップU253Xの判定の結果、処理が終了していない具体化規則がない場合は、ステップU25は終了する。
【0201】
一方、ステップU253Xの判定の結果、処理が終了していない具体化規則がまだある場合は、カリキュラム生成部227は、ステップU252で列挙した未処理の具体化規則について、以下で説明するステップU253Y~U258の動作を行う。
【0202】
まず、カリキュラム生成部227は、ステップU252で列挙した未処理の具体化規則から一つの具体化規則を選択する(ステップU253Y)。次に、カリキュラム生成部227は、生成した要件を表す変数GRを空の構成として初期化する(ステップU254)。
【0203】
さらに、カリキュラム生成部227は、ステップU253Yで選択した具体化規則の、具体化対象の構成要素と、具体化に必要な構成に含まれる全構成要素と、を変数GRが格納する構成に追加する(ステップU255)。
【0204】
そして、カリキュラム生成部227は、ステップU253Yで選択した具体化規則において、具体化に必要な構成又は具体化後の構成に含まれる構成要素が未だあるかどうかを判定する(ステップU256X)。
【0205】
ステップU256Xの判定の結果、構成要素がない場合は、カリキュラム生成部227は、後述するステップU258を実行する。一方、ステップU256Xの判定の結果、構成要素がある場合は、カリキュラム生成部227は、以下で説明するステップU256Y~U257の動作を行う。
【0206】
まず、カリキュラム生成部227は、ステップU253Yで選んだ具体化規則の、具体化に必要な構成又は具体化後の構成に含まれる構成要素から一つの構成要素を選択する(ステップU256Y)。次に、カリキュラム生成部227は、ステップU256Yで選択した構成要素と、変数GRの内容と、を引数として、後述する再帰的な処理を実行する(ステップU257)。
【0207】
そして、ステップU256XでNoの場合、カリキュラム生成部227は、生成した要件を表す変数GRが格納する要件を、生成した要件の集合を表す変数RSが格納する集合に追加する(ステップU258)。
【0208】
図20を参照して、選んだ学習項目の学習に用いる要件の集合を生成する動作において、具体化規則の具体化に必要な構成もしくは具体化後の構成に含まれる構成要素を再帰的に処理するステップU257の動作について説明する。ステップU257の動作主体は、特に言及がない限りカリキュラム生成部227である。ステップU257の再帰的な処理は、構成要素と、構成と、を引数とする。
【0209】
まず、
図20に示すように、カリキュラム生成部227は、引数として受け取った構成要素の型を具体化対象とする具体化規則から、任意の方法で一つ選択する(ステップE21)。次に、カリキュラム生成部227は、ステップE21で選んだ具体化規則の具体化対象を、引数として受け取った構成に追加すべきかどうかを判定する(ステップE22)。具体的には、ステップE22では、カリキュラム生成部227は、ステップE21で選んだ具体化規則の具体化対象が、引数として受け取った構成に含まれておらず、且つ、具体化規則の具体化に必要な構成の中で参照されているかどうかを判定する。
【0210】
ステップE22の判定の結果、具体化対象を、引数として受け取った構成に追加すべきでない場合(ステップE22:No)、カリキュラム生成部227は、後述するステップE24を実行する。
【0211】
一方、ステップE22の判定の結果、具体化対象を、引数として受け取った構成に追加すべき場合(ステップE22:Yes)、カリキュラム生成部227は、具体化対象を引数として受け取った構成に追加する(ステップE23)。
【0212】
さらに、ステップE23の実行後、又はステップE22の判定がNoの場合は、カリキュラム生成部227は、ステップE21で選んだ具体化規則の具体化に必要な構成に含まれる全構成要素を、引数として受け取った構成に追加する(ステップE24)。
【0213】
そして、カリキュラム生成部227は、ステップE21で選んだ具体化規則の、具体化に必要な構成又は具体化後の構成に含まれる構成要素のうち、未処理の構成要素が残っているかどうかを判定する(ステップE25X)。
【0214】
ステップE25Xの判定の結果、未処理の構成要素が残っていない場合は、ステップU257は終了する。一方、ステップE25Xの判定の結果、未処理の構成要素が残っている場合は、カリキュラム生成部227は、以下で説明するステップE25Y~E26の動作を行う。
【0215】
まず、カリキュラム生成部227は、ステップE21で選んだ具体化規則の、具体化に必要な構成又は具体化後の構成に含まれる構成要素から、1つの構成要素を選択する(ステップE25Y)。次に、カリキュラム生成部227は、ステップE25Yで選んだ構成要素と、引数として受け取った構成と、を引数として、後述する再帰的な処理を行う(ステップE26)。
【0216】
図21を参照して、生成した要件の集合を用いて学習項目を学習するステップU26の動作を詳細に説明する。
【0217】
図21に示すように、まず、学習工程制御部221は、生成した要件の集合に含まれる要件のなかに未学習の要件があるかどうかを判定する(ステップU261X)。ステップU261Xの判定の結果、未学習の要件がない場合は、ステップU26は終了する。
【0218】
一方、ステップU261Xの判定の結果、未学習の要件がある場合は、学習工程制御部221は、未学習の各要件に対して以下で説明するステップU261Y~U262の動作を行う。
【0219】
まず、学習工程制御部221が、生成した要件の集合から要件を一つ選択する(ステップU261Y)。次に、構成要素学習部22が、ステップU261で選んだ要件を入力として、学習モデルに対して要件の構成評価の学習を行う(ステップU262)。ステップU262の構成評価の学習の動作は、実施の形態1で説明した構成評価の学習のステップS1と同様である。
【0220】
図22を参照して、システム構成評価装置2における構成評価の再学習の動作V2について説明する。
【0221】
まず、
図22に示すように、カリキュラム生成部227が、依存グラフを生成する(ステップV21)。依存グラフを生成するステップV21の動作の詳細は、
図12に示したステップU21と同様である。
【0222】
次に、カリキュラム生成部227が、カリキュラムを生成する(ステップV22)。カリキュラムを生成するステップV22の動作の詳細は、
図12に示したステップU22と同様である。次に、カリキュラム生成部227が、カリキュラム中の各学習項目の学習完了フラグを完了に設定する(ステップV23)。
【0223】
そして、カリキュラム生成部227が、カリキュラムに含まれる学習項目のうち、前回の学習時に存在していなかった構成要素型を学習対象とする全ての学習項目について、学習完了フラグを未完了に設定する(ステップV24)。ステップV24の詳細な方法の一例として、前回の学習時のカリキュラムを保存しておき、今回の学習のカリキュラムと比較して、今回のカリキュラムにのみ存在する学習項目の学習完了フラグを未完了に設定するという方法が好適であるが、この方法に限定されない。
【0224】
次に、カリキュラム生成部227が、カリキュラムに含まれる学習項目のうち、前回の学習から定義が変更された構成要素型を学習対象とする全ての学習項目について、学習完了フラグを未完了に設定する(ステップV25)。ステップV25の詳細な方法の一例として、前回の学習時のカリキュラムの作成日時と、各構成要素型の定義情報の更新日時と、を保存しておき、前回の学習時のカリキュラムの作成日時よりも定義情報の更新日時が遅い構成要素型の学習項目の学習完了フラグを未完了に設定するという方法が好適であるが、この方法に限定されない。
【0225】
次に、カリキュラム生成部227は、カリキュラムに含まれる学習項目のなかに、選択されずに未学習である学習項目があるかどうかを判定する(ステップV26X)。
【0226】
ステップV26Xの判定の結果、未学習である学習項目がある場合は、カリキュラム生成部227は、学習完了フラグが未完了のものが全て選択されるまで、以下で説明するステップV26Y~V27の動作を行う。
【0227】
まず、カリキュラム生成部227が、カリキュラムに含まれる学習項目から、学習完了フラグが未完了の学習項目を一つ選択する(ステップV26Y)。次に、カリキュラム生成部227が、ステップV26Yで選択した学習項目から、カリキュラム中の有向エッジを一つ遡って到達可能な各学習項目について、学習項目の学習完了フラグを未完了に設定する(ステップV27)。その後、カリキュラム生成部227は、再度ステップV26Xの判定を実行する。
【0228】
また、ステップV26Xの判定の結果、未学習である学習項目がない場合は、カリキュラム生成部227は、依存先がない又は全ての依存先の学習完了フラグが完了になっている学習項目があるかどうかを判定する(ステップV28X)。
【0229】
ステップV28Xの判定の結果、依存先がない又は全ての依存先の学習完了フラグが完了になっている学習項目が存在しない場合は、動作V2は終了する。一方、ステップV28Xの判定の結果、依存先がない又は全ての依存先の学習完了フラグが完了になっている学習項目が存在する場合は、以下で説明するステップV28Y~U2Bが実行される。
【0230】
まず、学習工程制御部221が、依存先がない又は全ての依存先の学習完了フラグが完了になっている学習項目を、カリキュラムから一つ選択する(ステップV28Y)。
【0231】
次に、カリキュラム生成部227が、ステップV28Yで選択された学習項目を学習するための要件の集合を生成する(ステップV29)。学習項目を学習するための要件の集合を生成するステップV29の動作の詳細は、
図12に示したステップU25の動作と同様である。
【0232】
さらに、構成要素学習部22が、ステップV29で生成した要件の集合を用いて、ステップV28Yで選んだ学習項目を学習する(ステップV2A)。そして、学習工程制御部221が、ステップV28Yで選んだ学習項目の学習完了型フラグを完了に設定する(ステップV2B)。要件の集合を用いて学習項目を学習するステップV2Aの動作の詳細は、
図12に示したステップU26と同様である。
【0233】
なお、実施の形態2においても、構成評価の動作T2は、実施の形態1における構成評価の動作T1と同様である。
【0234】
[効果の説明]
実施の形態2によれば、構成要素毎の評価値を適切な順序で学習することで学習効率が向上する。実施の形態2では、依存関係に基づくカリキュラムに沿った順序で構成要素の学習が行われる。よって、特定の構成要素を学習するために事前の学習を要する、その他の構成要素の学習が完了した状態で学習が可能になる。また、実施の形態2によれば、学習済みの構成要素の学習をスキップすることで学習にかかる時間を短縮できる。結果として、学習効率が向上する。
【0235】
[プログラム]
実施の形態2において、プログラムは、コンピュータに、
図12~
図22に示す各ステップを実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、システム構成評価装置2とシステム構成評価方法とを実現することができる。この場合、コンピュータのプロセッサは、構成評価部21及び構成要素学習部22として機能し、処理を行なう。コンピュータとしては、汎用のPCの他に、スマートフォン、タブレット型端末装置が挙げられる。
【0236】
また、プログラムは、複数のコンピュータによって構築されたコンピュータシステムによって実行されても良い。この場合は、例えば、1又は複数のコンピュータが、構成評価部21及び構成要素学習部22のいずれかとして機能しても良い。
【0237】
(実施の形態3)
次に、実施の形態3におけるシステム構成評価装置、システム構成評価方法、及びプログラムについて、
図23及び
図24を参照しながら説明する。
【0238】
[装置構成]
最初に、実施の形態3におけるシステム構成評価装置の構成について
図23を用いて説明する。
図23は、システム構成評価装置の一例の構成を示す構成図である
【0239】
図23に示すように、システム構成評価装置3は、構成評価部31と、構成要素学習部32と、設計部33と、を備える。更に、構成評価部31は、構成要素評価部111と、構成総合評価部112と、を備える。構成要素学習部32は、学習工程制御部121と、設計試行部122と、具体化成功判定部123と、報酬生成部124と、学習データ生成部125と、機械学習部126と、を備える。各部は、それぞれ概略次のように動作する。
【0240】
構成要素評価部111、構成総合評価部112、学習工程制御部121、設計試行部122、具体化成功判定部123、報酬生成部124、学習データ生成部125、及び機械学習部126、それぞれの動作の概略は、実施の形態1で説明した各部の動作と同様である。
【0241】
但し、実施の形態3では、上述したように、システム構成評価装置3は、設計部33を備えており、この点で、実施の形態3は実施の形態1と異なっている。設計部33は、構成総合評価部112が出力する評価値に基づいて、コンピュータシステムの設計空間において探索対象となる構成を決定し、決定した構成を用いて、システム構成を設計する。
【0242】
[装置動作]
次に、実施の形態3におけるシステム構成評価装置3の動作の一例について
図24を用いて説明する。以下の説明においては、適宜
図23を参照する。また、実施の形態3では、システム構成評価装置3を動作させることによって、システム構成評価方法が実施される。よって、実施の形態3において、システム構成評価方法の説明は、以下のシステム構成評価装置の動作説明に代える。
【0243】
実施の形態3においては、大きく分類して三つの動作がある。それは、構成評価の学習と、構成評価と、設計と、の動作である。構成評価の学習の動作では、コンピュータシステム、具体的にはICTシステム構成の評価を行うため、ICTシステムの各構成要素単位の評価について、学習モデルの学習が行われる。構成評価の動作では、学習済の学習モデルが活用されて、ICTシステム構成の評価が行われる。設計の動作では、抽象的な要件を段階的に具体化していく方法の探索が行われることにより、具体的なICTシステムが獲得される。探索においては、構成評価の結果に基づいて、探索の方向が決定される。以降、それぞれについて説明する。
【0244】
まず、実施の形態3においては、構成評価の学習の動作S3は、実施の形態1における構成評価の学習の動作S1と同様の動作である。更に、実施の形態3においては、構成評価の動作T3は、実施の形態1における構成評価の動作T1と同様の動作である。
【0245】
図24を参照して、実施の形態における設計の動作W3について詳細に説明する。設計の動作W3の動作主体は、特に言及がない限り設計部33である。
【0246】
図24に示すように、まず、設計部33は、現在の構成を表す変数に設計対象の要件を代入する(ステップW31)。以降、前記現在の構成を表す変数に代入されている内容を、単に「現在構成」と表記する。そして、設計部33は、次に現在の構成を表す変数に代入される構成の候補を格納する変数NL3を空のリストとして初期化する(ステップW32)。
【0247】
次に、設計部33は、現在構成が具体構成であるかどうかを判定する(ステップW38)。ステップW38の判定の結果、現在構成が具体構成である場合は、動作W3は終了する。一方、ステップW38の判定の結果、現在構成が具体構成で無い場合は、設計部33は、現在の構成から1回の具体化規則の適用で生成可能な構成を全て列挙する(ステップW33)。
【0248】
さらに、設計部33は、ステップW33で列挙した各構成を、構成総合評価部112に入力し構成評価を行わせる(ステップW34)。ステップW34の動作は構成評価の動作T3である。つまり、ステップW34における動作は、実施の形態1で説明した構成評価の動作T1と同様である。
【0249】
次に、設計部33は、ステップW33で列挙した各構成について、その構成と、ステップW34で得られた構成の評価値と、から成るペアを、変数NL3を格納するリストに追加する(ステップW35)。
【0250】
次に、設計部33は、変数NL3を格納するリストから、評価値が最も高いペアを取り出す(ステップW36)。さらに、設計部33は、ステップW36で取り出したペアに含まれる構成を、現在の構成を表す変数に代入する(ステップW37)。
【0251】
これにより、現在構成が具体構成になるまで、ステップW33~W37が繰り返し実行される。
【0252】
[効果の説明]
実施の形態3によれば、効率の良い学習により得られる学習モデルを利用したICTシステムの自動設計が可能になる。実施の形態3では、実施の形態1により学習した学習モデルを、構成要素評価部111で利用して設計することが可能になる。
【0253】
[プログラム]
実施の形態3において、プログラムは、コンピュータに、
図3~
図10、
図24に示す各ステップを実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、システム構成評価装置3とシステム構成評価方法とを実現することができる。この場合、コンピュータのプロセッサは、構成評価部31、構成要素学習部32、及び設計部33として機能し、処理を行なう。コンピュータとしては、汎用のPCの他に、スマートフォン、タブレット型端末装置が挙げられる。
【0254】
また、プログラムは、複数のコンピュータによって構築されたコンピュータシステムによって実行されても良い。この場合は、例えば、1又は複数のコンピュータが、構成評価部31、構成要素学習部32、及び設計部33のいずれかとして機能しても良い。
【0255】
(実施の形態4)
次に実施の形態4における、システム構成評価装置、システム構成評価方法、及びプログラムについて、
図25~
図29を参照しながら説明する。実施の形態4では、設計の過程で生成する構成案の絞り込みが行われる。実施の形態4において、実施の形態1と同様の部分については、適宜省略しながら説明を進める。
[装置構成]
最初に、実施の形態4におけるシステム構成評価装置の構成について
図25を用いて説明する。
図25は、システム構成評価装置の一例の構成を示す構成図である
【0256】
図25に示すように、システム構成評価装置4は、構成評価部41と、構成要素学習部42と、設計部43と、絞り込み部44と、を備える。構成評価部41は、構成要素評価部111と、構成総合評価部112と、を備える。構成要素学習部42は、学習工程制御部121と、設計試行部422と、具体化成功判定部123と、報酬生成部124と、学習データ生成部125と、機械学習部126と、を備える。各部は、それぞれ概略次のように動作する。
【0257】
構成要素評価部111、構成総合評価部112、学習工程制御部121、具体化成功判定部123、報酬生成部124、学習データ生成部125、及び機械学習部126、それぞれの動作の概略は、実施の形態1及び3で説明した各部の動作と同様である。
【0258】
実施の形態4において、絞り込み部44は、設計の過程において探索される候補の構成を生成する場合において、構成要素評価手段が出力した各構成要素の評価値に基づいて、具体化の対象となる構成要素を決定し、決定した構成要素を具体化することで得られる構成のみを生成する。
【0259】
また、設計試行部422は、コンピュータシステムの設計を試行し、設計の開始から終了に至るまでの過程で得られた構成を収集する。設計試行部422の動作の概略も、実施の形態1及び3で説明した動作と同様である。但し、実施の形態4では、設計試行部422は、設計の過程で探索する構成(候補)を追加する場合に、絞り込み部44が生成した構成のみ追加する。
【0260】
設計部43は、構成総合評価部112が出力する評価値に基づいて、コンピュータシステムの設計空間において探索対象となる構成を決定し、決定した構成を用いて、コンピュータシステムのシステム構成を設計する。設計部43の動作は、実施の形態3で説明した動作と同様である。但し、実施の形態4では、設計部43は、設計の過程で探索する構成(候補)を追加するに場合に、絞り込み部44が生成した構成のみ追加する。
【0261】
[装置動作]
次に、実施の形態4におけるシステム構成評価装置4の動作の一例について
図26から
図29を用いて説明する。以下の説明においては、適宜
図25を参照する。また、実施の形態4では、システム構成評価装置4を動作させることによって、システム構成評価方法が実施される。よって、実施の形態4において、システム構成評価方法の説明は、以下のシステム構成評価装置の動作説明に代える。
【0262】
実施の形態4においては、大きく分類して三つの動作がある。それは、構成評価の学習の動作と、構成評価の動作と、設計の動作と、の三つである。構成評価の学習の動作では、コンピュータシステム、具体的には、ICTシステムのシステム構成の評価を行うため、ICTシステムの各構成要素単位の評価について、学習モデルの学習が行われる。構成評価の動作では、学習済の学習モデルが活用されて、ICTシステムのシステム構成の評価が行われる。設計の動作では、抽象的な要件を段階的に具体化していく方法の探索が行われ、それにより具体的なICTシステムが獲得される。探索においては、構成評価の結果に基づいて、探索の方向が決定される。以降、それぞれについて説明する。
【0263】
図26を参照して、構成評価の学習の動作S4について説明する。なお、
図26の粒度では、構成評価の学習の動作S4は、実施の形態1で説明した構成評価の学習の動作S1と同様である。但し、より詳細な粒度では、動作S4は、後述するステップS42において、動作S1と異なる部分がある。異なる部分については別途説明する。ステップS42以外は詳細な粒度においても、実施の形態1で説明した構成評価の学習の動作S1と同様である。
【0264】
図26に示すように、まず、構成要素学習部42が、学習対象のシステム要件R4を入力として受け取る(ステップS41)。次に、構成要素学習部42が、システム要件R4を用いて強化学習を適当な期間行う(ステップS42)。ここでの適当な期間は、学習時間及び学習回数(例えばニューラルネットワークを用いた強化学習の場合はニューラルネットワークの重みの更新回数)に基づいて、適宜設定される。なお、ここでの適当な期間は特に限定されるものではない。
【0265】
さらに、設計試行部422が、現在の学習モデル(例えばニューラルネットワークを用いた強化学習の場合はニューラルネットワーク)を用いて、システム要件R4の設計を試みる(ステップS43)。設計の方法としては、例えば、特許文献1に開示された方法が挙げられるが、実施の形態4において、設計の方法は特に限定されない。
【0266】
そして、学習工程制御部121が、ステップS13の結果に基づき、学習が十分であるか否か判断する(ステップS44)。ステップS44における判断の方法は、ステップS43での設計方法に依存する。例えば、特許文献1に開示された方法によりステップS43が実施された場合、設計における探索のステップ数が一定以下であった場合に十分だと判断する方法が挙げられる。更に、過去に行ったステップS43での設計において、規定の回数連続で探索のステップ数が一定以下だった場合に十分だと判断する方法も挙げられる。ステップS44における判断の方法は、これらに限定されない。
【0267】
ステップS44の判定の結果、学習が十分である場合は、動作S4は終了する。一方、ステップS44の判定の結果、学習が十分である場合は、再度ステップS42が実行される。つまり、ステップS44で学習が十分であると判断されるまで、ステップS42~S43が繰り返えされる。
【0268】
図27を参照して、強化学習を行うステップS42の動作について詳細に説明する。なお、
図28の粒度では、ステップS42の動作は、実施の形態1で説明したステップS12の動作と同様である。但し、より詳細な粒度では、ステップS42は、後述するステップS421において、S12と異なっており、それについては別途説明する。ステップS421以外は詳細な粒度においても、実施の形態1で説明した構成評価の学習の動作S1と同様である。
【0269】
また、ここで説明する動作は、システムの機能要件に関する設計方法を学習するための動作の一例であり、システムの機能要件に関する設計方法の学習が実現されるのであれば、ここに記載するものに限定されない。また、設計の方法としては、例えば、特許文献1に開示された方法が挙げられるが、実施の形態4において、設計の方法は特に限定されない。
【0270】
図27に示すように、まず、設計試行部422が、システム要件R4を用いて設計の試行を行い、構成パスCP1を生成する(ステップS421)。そして、学習データ生成部125が、学習データを生成する(ステップS422)。
【0271】
次に、設計試行部422は、ステップS421~S422が規定の回数繰り返されているかどうかを判定する(ステップS423)。ステップS423の判定の結果、ステップS421~S422が規定の回数繰り返されていない場合は、設計試行部422は、再度ステップS421を実行する。
【0272】
一方、ステップS423の判定の結果、ステップS421~S422が規定の回数繰り返されている場合は、機械学習部126が、学習データに基づき学習を行う(ステップS424)。
【0273】
次に、機械学習部126は、学習が終了しているかどうか、即ち、学習が適当な期間行われたかどうかを判定する(ステップS425)。ステップS425の判定の結果、学習が終了していない場合は、再度ステップS421~S424が実行される。一方、ステップS425の判定の結果、学習が終了している場合は、ステップS42は終了する。
【0274】
ここでいう適当な期間とは、学習時間や学習回数、例えばニューラルネットワークを利用した強化学習の場合は、ニューラルネットワークの重みの更新回数等に基づくき決定されるのが良い。但し、実施の形態4では、適当な期間は、これら以外に基づいて決定されても良い。
【0275】
図28を参照して、構成パスを生成するステップS421の動作について詳細に説明する。ステップS421の動作主体は、特に言及がない限り、設計試行部422である。
【0276】
図28に示すように、まず、設計試行部422は、システム要件R4を、現在の構成を表す変数に代入する(ステップA41)。以降、現在の構成を表す変数に代入されている内容を、単に「現在構成」と表記する。
【0277】
次に、設計試行部422は、現在構成のみを内容として含むリスト型のデータ構造の変数として構成パスCP4を初期化する(ステップA42)。なお、ここでは一例として構成パスCP4のデータ構造をリスト型としているが、同種の内容物を順序が定まる形で複数格納することが可能なデータ構造であれば、リスト型以外のデータ構造でもよい。
【0278】
さらに、設計試行部422は、現在構成を構成要素評価部111に入力し、得られた構成要素毎の評価値を現在構成に記録する(ステップA43)。
【0279】
次に、設計試行部422は、現在構成に対して具体化規則を適用できるかどうかを判定する(ステップA4E)。ステップA4Eの判定の結果、具体化規則を適用できない場合は、ステップS421における処理は終了する。
【0280】
一方、ステップA4Eの判定の結果、具体化規則を適用できる場合は、絞り込み部44が、現在構成でまだ具体化対象になっていない構成要素のうち、当該構成要素の評価値が最も低いものを対象とした具体化規則の適用パターンを全て列挙する(ステップA44)。
【0281】
次に、設計試行部422は、適用パターンが空であるかどうかを判定する(ステップA45)。ステップA45の判定の結果、適用パターンが空である場合は(ステップA45:Yes)、更に、設計試行部422は、ステップA44の判定が行われていない構成要素があるかどうかを判定する(ステップA46)。
【0282】
ステップA46の判定の結果、構成要素がある場合は(ステップA46:Yes)、設計試行部422は、ステップA44を再度実行する。一方、ステップA46の判定の結果、構成要素がない場合は(ステップA46:No)、ステップS421の動作全体が終了する。
【0283】
また、ステップA45の判定の結果、適用パターンが空でない場合は(ステップA45:No)、絞り込み部44が、ステップA44で列挙した具体化規則の適用パターンの数だけ、現在構成のコピーを生成する(ステップA47)。
【0284】
さらに、絞り込み部44が、ステップA44で列挙した具体化規則の適用パターンを、ステップA47で生成したそれぞれ異なる現在構成のコピーに適用した結果得られる構成を全て列挙する(ステップA48)。
【0285】
そして、絞り込み部44は、後述のステップA49Yで未だ選択されていない構成があるかどうかを判定する(ステップA49X)。ステップA49Aの判定の結果、構成がある場合は、絞り込み部44は、ステップA48で列挙した構成から一つの構成を選択する(ステップA49Y)。
【0286】
次に、絞り込み部44は、ステップA49Yで選択した構成を、構成要素評価部111に入力し、得られた構成要素毎の評価値をその構成に記録する(ステップA4A)。さらに、絞り込み部44は、ステップA4Aで得られた構成要素毎の評価値のうち、最も値が小さいものを、ステップA49Yで選択した構成の評価値とする(ステップA4B)。その後、絞り込み部44は、再度ステップA49Xの判定を実行する。
【0287】
また、ステップA49Aの判定の結果、構成がない場合は、絞り込み部44は、ステップA48で列挙した各構成のうち、評価値が最も高いものを、現在の構成を表す変数に代入する(ステップA4C)。次に、絞り込み部44は、現在構成を構成パスCP4の末尾に追加する(ステップA4D)。その後、絞り込み部44は、ステップA4Eの判定を実行し、現在構成にこれ以上具体化規則を適用できなくなるまで、ステップA44~A4Dを繰り返す。
【0288】
実施の形態4における構成評価の動作は、実施の形態3と同様であり、つまり、実施の形態1における構成評価の動作T1と同様である。
【0289】
図29を参照して、実施の形態における設計の動作W4について詳細に説明する。設計の動作W4の動作主体は、特に言及がない限り設計部43である。
【0290】
図29に示すように、まず、設計部43は、現在の構成を表す変数に設計対象の要件を代入する(ステップW41)。以降、現在の構成を表す変数の内容を単に「現在構成」と表記する。
【0291】
そして、設計部43は、現在の構成を表す変数に代入される構成の候補を格納する変数NL4を空のリストとして初期化する(ステップW42)。次に、現在構成を構成要素評価部111に入力し、得られた構成要素毎の評価値を現在構成に記録する(ステップW43)。
【0292】
次に、設計部43は、現在構成が具体構成でないかどうかを判定する(ステップW44)。ステップW44の判定の結果、現在構成が具体構成である場合は、動作W4は終了する。一方、ステップW44の判定の結果、現在構成が具体構成である場合は、設計部43は、現在構成が具体構成になるまで、以下で説明するステップW45~W4Iの動作を行う。
【0293】
まず、絞り込み部44が、現在構成でまだ具体化対象になっていない構成要素のうち、当該構成要素の評価値が最も低いものを対象とした具体化規則の適用パターンを全て列挙する(ステップW45)。ステップW45で対象となった構成要素は、具体化対象になったものとして扱う。
【0294】
次に、設計部43は、適用パターンが空であるかどうかを判定する(ステップW46)。ステップW46の判定の結果、適用パターンが空である場合は(ステップW46:Yes)、設計部43は、現在構成において未だ具体化対象になっていない構成要素があるかどうかを判定する(ステップW47)。
【0295】
ステップW47の判定の結果、現在構成において未だ具体化対象になっていない構成要素がない場合は(ステップW47:No)、動作W4は終了し、ステップW4Hに移行する。一方、ステップW47の判定の結果、現在構成において未だ具体化対象になっていない構成要素がある場合は(ステップW47:Yes)、設計部43は、ステップW45を再度実行する。
【0296】
また、ステップW46の判定の結果、適用パターンが空でない場合は(ステップW46:No)、絞り込み部44が、ステップW45で列挙した具体化規則の適用パターン数だけ、現在構成のコピーを生成する(ステップW48)。
【0297】
さらに、絞り込み部44が、ステップW45で列挙した具体化規則の適用パターンを、ステップW48で生成したそれぞれ異なる現在構成のコピーに適用した結果得られる構成を全て列挙する(ステップW49)。
【0298】
次に、設計部43は、ステップW49で列挙した各構成のうち、後述するステップW4AY~W4Dが実行されていない構成が未だあるかどうかを判定する(ステップW4AX)。
【0299】
ステップW4AXの判定の結果、ステップW4AY~W4Dが実行されていない構成が未だある場合は、設計部43は、ステップW49で列挙した構成から一つの構成を選択する(ステップW4AY)。次に、設計部43は、ステップW4AYで選んだ構成を、構成要素評価部111に入力し、得られた構成要素毎の評価値を、その構成に記録する(ステップW4B)。
【0300】
さらに、設計部43は、ステップW4Bで得られた構成要素毎の評価値のうち、最も値が小さいものを、ステップW4AYで選んだ構成の評価値とする(ステップW4C)。そして、ステップW4AYで選んだ構成と、ステップW4Cで構成要素評価部111から得られた構成の評価値と、から成るペアを、変数NL4を格納するリストに追加する(ステップW4D)。その後、設計部43は、ステップW4AXの判定を再度実行する。
【0301】
また、ステップW4AXの判定の結果、ステップW4AY~W4Dが実行されていない構成がない場合は、設計部43は、現在構成において未だ具体化対象になっていない構成要素があるかどうかを判定する(ステップW4E)。
【0302】
ステップW4Eの判定の結果、現在構成において未だ具体化対象になっていない構成要素がある場合(ステップW4E:Yes)、設計部43は、現在構成に含まれる構成要素の評価値のうち、最も低いものを現在構成の評価値とする(ステップW4F)。次に、設計部43は、現在構成と、ステップW4Gで求めた現在構成の評価値と、から成るペアを、変数NL4を格納するリストに追加する(ステップW4G)。
【0303】
そして、ステップW4Gが実行された場合、又はステップW4Eの判定の結果、現在構成において未だ具体化対象になっていない構成要素が残っていなかった場合(ステップW4E:No)、設計部43は、ステップW4Hを実行する。
【0304】
ステップW4Hでは、設計部43は、変数NL4が格納するリストから、評価値が最も高いペアを取り出す(ステップW4H)。さらに、設計部43は、ステップW4Hで取り出したペアに含まれる構成を、現在の構成を表す変数に代入する(ステップW4I)。その後、設計部43は、ステップW44の判定を再度実行する。
【0305】
[効果の説明]
実施の形態4によれば、コンピュータシステム、具体的にはICTシステムの自動設計及びその学習の効率を向上させることができる。実施の形態4では、自動設計及びその学習の探索ステップ毎に生成する構成を絞り込むことで、各探索ステップで生成される構成の数が削減される。このため、探索ステップ1回あたりの時間が短縮され効率が向上する。また、具体化が正しく完了する見込みが最も低い構成要素が優先的に具体化するよう絞り込まれるので、システム構成全体の設計が成功する見込みを高めるような具体化が選択されやすくなり、探索の精度が向上する。結果として、学習の効率が向上する。
【0306】
[プログラム]
実施の形態4において、プログラムは、コンピュータに、
図6~
図10、
図26~29に示す各ステップを実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、システム構成評価装置1とシステム構成評価方法とを実現することができる。この場合、コンピュータのプロセッサは、構成評価部41、構成要素学習部42、設計部43、及び絞り込み部44として機能し、処理を行なう。コンピュータとしては、汎用のPCの他に、スマートフォン、タブレット型端末装置が挙げられる。
【0307】
また、プログラムは、複数のコンピュータによって構築されたコンピュータシステムによって実行されても良い。この場合は、例えば、1又は複数のコンピュータが、構成評価部41、構成要素学習部42、設計部43、及び絞り込み部44のいずれかとして機能しても良い。
【0308】
[物理構成]
ここで、実施の形態1~4におけるプログラムを実行することによって、システム構成評価装置を実現するコンピュータについて
図41を用いて説明する。
図41は、システム構成評価装置を実現するコンピュータの一例を示すブロック図である。
【0309】
図41に示すように、コンピュータ510は、CPU(Central Processing Unit)511と、メインメモリ512と、記憶装置513と、入力インターフェイス514と、表示コントローラ515と、データリーダ/ライタ516と、通信インターフェイス517とを備える。これらの各部は、バス521を介して、互いにデータ通信可能に接続される。
【0310】
また、コンピュータ510は、CPU511に加えて、又はCPU511に代えて、GPU(Graphics Processing Unit)、又はFPGA(Field-Programmable Gate Array)を備えていても良い。この態様では、GPU又はFPGAが、実施の形態におけるプログラムを実行することができる。
【0311】
CPU511は、記憶装置513に格納された、コード群で構成された実施の形態におけるプログラムをメインメモリ512に展開し、各コードを所定順序で実行することにより、各種の演算を実施する。メインメモリ512は、典型的には、DRAM(Dynamic Random Access Memory)等の揮発性の記憶装置である。
【0312】
また、実施の形態におけるプログラムは、コンピュータ読み取り可能な記録媒体520に格納された状態で提供される。なお、本実施の形態におけるプログラムは、通信インターフェイス517を介して接続されたインターネット上で流通するものであっても良い。
【0313】
また、記憶装置513の具体例としては、ハードディスクドライブの他、フラッシュメモリ等の半導体記憶装置が挙げられる。入力インターフェイス514は、CPU511と、キーボード及びマウスといった入力機器518との間のデータ伝送を仲介する。表示コントローラ515は、ディスプレイ装置519と接続され、ディスプレイ装置519での表示を制御する。
【0314】
データリーダ/ライタ516は、CPU511と記録媒体520との間のデータ伝送を仲介し、記録媒体520からのプログラムの読み出し、及びコンピュータ510における処理結果の記録媒体520への書き込みを実行する。通信インターフェイス517は、CPU511と、他のコンピュータとの間のデータ伝送を仲介する。
【0315】
また、記録媒体520の具体例としては、CF(Compact Flash(登録商標))及びSD(Secure Digital)等の汎用的な半導体記憶デバイス、フレキシブルディスク(Flexible Disk)等の磁気記録媒体、又はCD-ROM(Compact Disk Read Only Memory)などの光学記録媒体が挙げられる。
【0316】
なお、システム構成評価装置は、プログラムがインストールされたコンピュータではなく、各部に対応したハードウェア、例えば、電子回路を用いることによっても実現可能である。更に、システム構成評価装置は、一部がプログラムで実現され、残りの部分がハードウェアで実現されていてもよい。実施の形態において、コンピュータは、
図41に示すコンピュータに限定されることはない。
【0317】
上述した実施の形態の一部又は全部は、以下に記載する(付記1)~(付記15)によって表現することができるが、以下の記載に限定されるものではない。
【0318】
(付記1)
学習モデルを用いて、コンピュータシステムの各構成要素の評価値を出力し、更に、出力した評価値を統合して、前記コンピュータシステム全体の評価値を出力する、構成評価部と、
予め設定された要件に基づいて前記コンピュータシステムの設計を試行し、前記設計の開始から終了に至るまでの過程で得られた構成について、それに含まれる各構成要素が前記要件に沿って具体化されているかどうかを判定し、判定の結果を用いて、前記学習モデルの学習データを生成し、生成した前記学習データを用いて、前記学習モデルに対して機械学習を実行する、
構成要素学習部と、
を備えている、ことを特徴とするシステム構成評価装置。
【0319】
(付記2)
前記構成要素学習部が、
前記構成毎に、それに含まれる前記各構成要素が、前記要件に沿って具体化されているかどうかを判定し、判定の結果に基づいて、当該構成に含まれる前記各構成要素に与えるべき報酬を算出し、
前記構成毎に、当該構成と、当該構成について算出された、前記各構成要素に与えるべき報酬とを、前記学習データとして生成する、
付記1に記載のシステム構成評価装置。
【0320】
(付記3)
前記構成要素学習部が、
特定の構成要素と、それを具体化するのに必要となる別の構成要素と、の関係性を表す依存関係に基づいて、依存関係がない構成要素及び依存関係にある構成要素について学習が完了した構成要素の順に学習が行われるように、カリキュラムを生成し、
生成した前記カリキュラムに従って、前記学習モデルに対する機械学習を実行する、
付記1に記載のシステム構成評価装置。
【0321】
(付記4)
前記構成評価部が出力する前記各構成要素の前記評価値に基づいて、前記コンピュータシステムの設計空間において探索対象となる構成を決定し、決定した前記構成を用いて、前記コンピュータシステムのシステム構成を設計する、設計部を更に備えている、
付記1に記載のシステム構成評価装置。
【0322】
(付記5)
前記構成評価部が出力する前記各構成要素の前記評価値に基づいて、具体化の対象となる構成要素を決定し、決定した構成要素を具体化することで得られる構成のみを生成する、絞り込み部を更に備え、
前記設計部は、前記探索対象となる構成を追加する場合に、前記絞り込み部が生成した前記構成のみ追加し、
前記構成要素学習部は、前記コンピュータシステムの設計の試行において、前記コンピュータシステムの設計空間において探索対象となる構成を決定し、決定した前記構成を用いて、前記コンピュータシステムのシステム構成の設計を試行し、前記探索対象となる構成を追加する場合に、前記絞り込み部が生成した前記構成のみ追加する、
ことを特徴とする付記4に記載のシステム構成評価装置。
【0323】
(付記6)
学習モデルを用いて、コンピュータシステムの各構成要素の評価値を出力し、更に、出力した評価値を統合して、前記コンピュータシステム全体の評価値を出力する、構成評価ステップと、
予め設定された要件に基づいて前記コンピュータシステムの設計を試行し、前記設計の開始から終了に至るまでの過程で得られた構成について、それに含まれる各構成要素が前記要件に沿って具体化されているかどうかを判定し、判定の結果を用いて、前記学習モデルの学習データを生成し、生成した前記学習データを用いて、前記学習モデルに対して機械学習を実行する、構成要素学習ステップと、
を有する、ことを特徴とするシステム構成評価方法。
【0324】
(付記7)
前記構成要素学習ステップにおいて、
前記構成毎に、それに含まれる前記各構成要素が、前記要件に沿って具体化されているかどうかを判定し、判定の結果に基づいて、当該構成に含まれる前記各構成要素に与えるべき報酬を算出し、
前記構成毎に、当該構成と、当該構成について算出された、前記各構成要素に与えるべき報酬とを、前記学習データとして生成する、
付記6に記載のシステム構成評価方法。
【0325】
(付記8)
前記構成要素学習ステップにおいて、
特定の構成要素と、それを具体化するのに必要となる別の構成要素と、の関係性を表す依存関係に基づいて、依存関係がない構成要素及び依存関係にある構成要素について学習が完了した構成要素の順に学習が行われるように、カリキュラムを生成し、
生成した前記カリキュラムに従って、前記学習モデルに対する機械学習を実行する、
付記6に記載のシステム構成評価方法。
【0326】
(付記9)
前記構成評価ステップで出力する前記各構成要素の前記評価値に基づいて、前記コンピュータシステムの設計空間において探索対象となる構成を決定し、決定した前記構成を用いて、前記コンピュータシステムのシステム構成を設計する、設計ステップを更に有する、
付記6に記載のシステム構成評価方法。
【0327】
(付記10)
前記構成評価ステップで出力する前記各構成要素の前記評価値に基づいて、具体化の対象となる構成要素を決定し、決定した構成要素を具体化することで得られる構成のみを生成する、絞り込みステップを更に有し、
前記設計ステップにおいて、前記探索対象となる構成を追加する場合に、前記絞り込みステップが生成した前記構成のみ追加し、
前記構成要素学習ステップにおいて、前記コンピュータシステムの設計の試行において、前記コンピュータシステムの設計空間において探索対象となる構成を決定し、決定した前記構成を用いて、前記コンピュータシステムのシステム構成の設計を試行し、前記探索対象となる構成を追加する場合に、前記絞り込みステップで生成した前記構成のみ追加する、
ことを特徴とする付記9に記載のシステム構成評価方法。
【0328】
(付記11)
コンピュータに、
学習モデルを用いて、コンピュータシステムの各構成要素の評価値を出力し、更に、出力した評価値を統合して、前記コンピュータシステム全体の評価値を出力する、構成評価ステップと、
予め設定された要件に基づいて前記コンピュータシステムの設計を試行し、前記設計の開始から終了に至るまでの過程で得られた構成について、それに含まれる各構成要素が前記要件に沿って具体化されているかどうかを判定し、判定の結果を用いて、前記学習モデルの学習データを生成し、生成した前記学習データを用いて、前記学習モデルに対して機械学習を実行する、構成要素学習ステップと、
を実行させる、プログラム。
【0329】
(付記12)
前記構成要素学習ステップにおいて、
前記構成毎に、それに含まれる前記各構成要素が、前記要件に沿って具体化されているかどうかを判定し、判定の結果に基づいて、当該構成に含まれる前記各構成要素に与えるべき報酬を算出し、
前記構成毎に、当該構成と、当該構成について算出された、前記各構成要素に与えるべき報酬とを、前記学習データとして生成する、
付記11に記載のプログラム。
【0330】
(付記13)
前記構成要素学習ステップにおいて、
特定の構成要素と、それを具体化するのに必要となる別の構成要素と、の関係性を表す依存関係に基づいて、依存関係がない構成要素及び依存関係にある構成要素について学習が完了した構成要素の順に学習が行われるように、カリキュラムを生成し、
生成した前記カリキュラムに従って、前記学習モデルに対する機械学習を実行する、
付記11に記載のプログラム。
【0331】
(付記14)
前記コンピュータに、
前記構成評価ステップで出力する前記各構成要素の前記評価値に基づいて、前記コンピュータシステムの設計空間において探索対象となる構成を決定し、決定した前記構成を用いて、前記コンピュータシステムのシステム構成を設計する、設計ステップを更に実行させる、
付記11に記載のプログラム。
【0332】
(付記15)
前記コンピュータに、
前記構成評価ステップで出力する前記各構成要素の前記評価値に基づいて、具体化の対象となる構成要素を決定し、決定した構成要素を具体化することで得られる構成のみを生成する、絞り込みステップを更に実行させ、
前記設計ステップにおいて、前記探索対象となる構成を追加する場合に、前記絞り込みステップが生成した前記構成のみ追加し、
前記構成要素学習ステップにおいて、前記コンピュータシステムの設計の試行において、前記コンピュータシステムの設計空間において探索対象となる構成を決定し、決定した前記構成を用いて、前記コンピュータシステムのシステム構成の設計を試行し、前記探索対象となる構成を追加する場合に、前記絞り込みステップで生成した前記構成のみ追加する、
ことを特徴とする付記14に記載のプログラム。
【産業上の利用可能性】
【0333】
本発明は、例えばITシステムの設計工程などの知的作業の、効率的な手順の獲得を目的とした強化学習に好適に適用可能である。
【符号の説明】
【0334】
1 システム構成評価装置
11 構成評価部
111 構成要素評価部
112 構成総合評価部
12 構成要素学習部
121 学習工程制御部
122 設計試行部
123 具体化成功判定部
124 報酬生成部
125 学習データ生成部
126 機械学習部
2 システム構成評価装置
21 構成評価部
22 構成要素学習部
221 学習工程制御部
227 カリキュラム生成部
3 システム構成評価装置
31 構成評価部
32 構成要素学習部
33 設計部
4 システム構成評価装置
41 構成評価部
42 構成要素学習部
422 設計試行部
43 設計部
44 絞り込み部
510 コンピュータ
511 CPU
512 メインメモリ
513 記憶装置
514 入力インターフェイス
515 表示コントローラ
516 データリーダ/ライタ
517 通信インターフェイス
518 入力機器
519 ディスプレイ装置
520 記録媒体
521 バス