IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特表2023-552552テスト・スイート生成のための強化学習方法、システム
<>
  • 特表-テスト・スイート生成のための強化学習方法、システム 図1
  • 特表-テスト・スイート生成のための強化学習方法、システム 図2A
  • 特表-テスト・スイート生成のための強化学習方法、システム 図2B
  • 特表-テスト・スイート生成のための強化学習方法、システム 図3
  • 特表-テスト・スイート生成のための強化学習方法、システム 図4
  • 特表-テスト・スイート生成のための強化学習方法、システム 図5
  • 特表-テスト・スイート生成のための強化学習方法、システム 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-12-18
(54)【発明の名称】テスト・スイート生成のための強化学習方法、システム
(51)【国際特許分類】
   G06N 3/086 20230101AFI20231211BHJP
【FI】
G06N3/086
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023534078
(86)(22)【出願日】2021-10-28
(85)【翻訳文提出日】2023-06-04
(86)【国際出願番号】 CN2021126862
(87)【国際公開番号】W WO2022127393
(87)【国際公開日】2022-06-23
(31)【優先権主張番号】17/121,796
(32)【優先日】2020-12-15
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】100091568
【弁理士】
【氏名又は名称】市位 嘉宏
(72)【発明者】
【氏名】ヒックス、アンドリュー シー エム
(72)【発明者】
【氏名】ファーマン、デボラ エー
(72)【発明者】
【氏名】コフーン、マイケル テレンス
(72)【発明者】
【氏名】ギルデイン、マイケル イー
(57)【要約】
本発明の態様は、ニューラル・ネットワークの第1のアレイの一部の各ニューラル・ネットワークを突然変異させることを含み、ニューラル・ネットワークの第1のアレイの各ニューラル・ネットワークは、コンピューティング・インフラストラクチャをテストするためのテスト・ケースの各シーケンスを選択するように構成される。ニューラル・ネットワークの第2のアレイの各ニューラル・ネットワークに、コンピューティング・インフラストラクチャをテストするためのテスト・ケースの各シーケンスを選択させる。第1のアレイの一部の突然変異ニューラル・ネットワークとニューラル・ネットワークの第2のアレイのニューラル・ネットワークの間で交差演算を実行することによって、子ニューラル・ネットワークを生成し、子ニューラル・ネットワークは、コンピューティング・インフラストラクチャをテストするためのテスト・ケースの新しいシーケンスを生成する。
【特許請求の範囲】
【請求項1】
プロセッサによって、ニューラル・ネットワークの第1のアレイの一部の各ニューラル・ネットワークを突然変異させることであって、ニューラル・ネットワークの前記第1のアレイの各ニューラル・ネットワークが、コンピューティング・インフラストラクチャをテストするためのテスト・ケースの各シーケンスを選択するように構成される、前記突然変異させることと、
前記プロセッサによって、ニューラル・ネットワークの第2のアレイの各ニューラル・ネットワークに、前記コンピューティング・インフラストラクチャをテストするためのテスト・ケースの各シーケンスを選択させることと、
前記プロセッサによって、前記第1のアレイの前記一部の突然変異ニューラル・ネットワークとニューラル・ネットワークの前記第2のアレイのニューラル・ネットワークの間で交差演算を実行することによって、子ニューラル・ネットワークを生成することであって、前記子ニューラル・ネットワークが、前記コンピューティング・インフラストラクチャをテストするためのテスト・ケースの新しいシーケンスを生成する、前記生成することとを含む、コンピュータ実装方法。
【請求項2】
ニューラル・ネットワークの前記第1のアレイの各ニューラル・ネットワークに関連付けられた各重みおよびバイアスの一部をランダム化することによって、ニューラル・ネットワークの前記第1のアレイの各ニューラル・ネットワークを初期化することをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
ニューラル・ネットワークの前記第1のアレイのニューラル・ネットワークごとに各適応度スコアを計算することと、
ニューラル・ネットワークの前記第1のアレイの各ニューラル・ネットワークの前記各適応度スコアに基づいて前記第1のアレイの前記一部を選択することとをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項4】
ニューラル・ネットワークの前記第2のアレイのニューラル・ネットワークごとに各適応度スコアを計算することと、
ニューラル・ネットワークの前記第2のアレイの各ニューラル・ネットワークの前記各適応度スコアに基づいて前記第2のアレイのニューラル・ネットワークの一部を選択することとをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記第1のアレイの各ニューラル・ネットワークがニューラル・ネットワークの第1のクラスに属し、前記第2のアレイの各ニューラル・ネットワークがニューラル・ネットワークの第2のクラスに属し、ニューラル・ネットワークの前記第2のクラスがニューラル・ネットワークの前記第1のクラスと異なる、請求項1に記載のコンピュータ実装方法。
【請求項6】
ニューラル・ネットワークの前記第1のアレイの前記一部の各ニューラル・ネットワークを突然変異させることが、各ニューラル・ネットワークの各活性化関数を活性化関数の第1の種類から活性化関数の第2の種類に変更することを含む、請求項1に記載のコンピュータ実装方法。
【請求項7】
前記子ニューラル・ネットワークが、前記第1のアレイの前記一部の前記突然変異ニューラル・ネットワークからのノード、およびニューラル・ネットワークの前記第2のアレイの前記ニューラル・ネットワークからのノードを含む、請求項1に記載のコンピュータ実装方法。
【請求項8】
コンピュータ可読命令を含んでいるメモリと、
前記コンピュータ可読命令を実行するための1つまたは複数のプロセッサとを備えているシステムであって、前記コンピュータ可読命令が、前記1つまたは複数のプロセッサを制御して、
ニューラル・ネットワークの第1のアレイの一部の各ニューラル・ネットワークを突然変異させることであって、ニューラル・ネットワークの前記第1のアレイの各ニューラル・ネットワークが、コンピューティング・インフラストラクチャをテストするためのテスト・ケースの各シーケンスを選択するように構成される、前記突然変異させることと、
ニューラル・ネットワークの第2のアレイの各ニューラル・ネットワークに、前記コンピューティング・インフラストラクチャをテストするためのテスト・ケースの各シーケンスを選択させることと、
前記第1のアレイの前記一部の突然変異ニューラル・ネットワークとニューラル・ネットワークの前記第2のアレイのニューラル・ネットワークの間で交差演算を実行することによって、子ニューラル・ネットワークを生成することであって、前記子ニューラル・ネットワークが、前記コンピューティング・インフラストラクチャをテストするためのテスト・ケースの新しいシーケンスを生成する、前記生成することとを含む動作を実行する、システム。
【請求項9】
前記動作が、ニューラル・ネットワークの前記第1のアレイの各ニューラル・ネットワークに関連付けられた各重みおよびバイアスの一部をランダム化することによって、ニューラル・ネットワークの前記第1のアレイの各ニューラル・ネットワークを初期化することをさらに含む、請求項8に記載のシステム。
【請求項10】
前記動作が、
ニューラル・ネットワークの前記第1のアレイのニューラル・ネットワークごとに各適応度スコアを計算することと、
ニューラル・ネットワークの前記第1のアレイの各ニューラル・ネットワークの前記各適応度スコアに基づいて前記第1のアレイの前記一部を選択することとをさらに含む、請求項8に記載のシステム。
【請求項11】
前記動作が、
ニューラル・ネットワークの前記第2のアレイのニューラル・ネットワークごとに各適応度スコアを計算することと、
ニューラル・ネットワークの前記第2のアレイの各ニューラル・ネットワークの前記各適応度スコアに基づいて前記第2のアレイのニューラル・ネットワークの一部を選択することとをさらに含む、請求項8に記載のシステム。
【請求項12】
前記第1のアレイの各ニューラル・ネットワークがニューラル・ネットワークの第1のクラスに属し、前記第2のアレイの各ニューラル・ネットワークがニューラル・ネットワークの第2のクラスに属し、ニューラル・ネットワークの前記第2のクラスがニューラル・ネットワークの前記第1のクラスと異なる、請求項8に記載のシステム。
【請求項13】
ニューラル・ネットワークの前記第1のアレイの前記一部の各ニューラル・ネットワークを突然変異させることが、各ニューラル・ネットワークの各活性化関数を活性化関数の第1の種類から活性化関数の第2の種類に変更することを含む、請求項8に記載のシステム。
【請求項14】
前記子ニューラル・ネットワークが、前記第1のアレイの前記一部の前記突然変異ニューラル・ネットワークからのノード、およびニューラル・ネットワークの前記第2のアレイの前記ニューラル・ネットワークからのノードを含む、請求項8に記載のシステム。
【請求項15】
プログラム命令が具現化されているコンピュータ可読ストレージ媒体を備えているコンピュータ・プログラム製品であって、前記プログラム命令が、プロセッサによって実行可能であり、前記プロセッサに、
ニューラル・ネットワークの第1のアレイの一部の各ニューラル・ネットワークを突然変異させることであって、ニューラル・ネットワークの前記第1のアレイの各ニューラル・ネットワークが、コンピューティング・インフラストラクチャをテストするためのテスト・ケースの各シーケンスを選択するように構成される、前記突然変異させることと、
ニューラル・ネットワークの第2のアレイの各ニューラル・ネットワークに、前記コンピューティング・インフラストラクチャをテストするためのテスト・ケースの各シーケンスを選択させることと、
前記第1のアレイの前記一部の突然変異ニューラル・ネットワークとニューラル・ネットワークの前記第2のアレイのニューラル・ネットワークの間で交差演算を実行することによって、子ニューラル・ネットワークを生成することであって、前記子ニューラル・ネットワークが、前記コンピューティング・インフラストラクチャをテストするためのテスト・ケースの新しいシーケンスを生成する、前記生成することとを含む動作を実行させる、コンピュータ・プログラム製品。
【請求項16】
前記動作が、ニューラル・ネットワークの前記第1のアレイの各ニューラル・ネットワークに関連付けられた各重みおよびバイアスの一部をランダム化することによって、ニューラル・ネットワークの前記第1のアレイの各ニューラル・ネットワークを初期化することをさらに含む、請求項15に記載のコンピュータ・プログラム製品。
【請求項17】
前記動作が、
ニューラル・ネットワークの前記第1のアレイのニューラル・ネットワークごとに各適応度スコアを計算することと、
ニューラル・ネットワークの前記第1のアレイの各ニューラル・ネットワークの前記各適応度スコアに基づいて前記第1のアレイの前記一部を選択することとをさらに含む、請求項15に記載のコンピュータ・プログラム製品。
【請求項18】
前記動作が、
ニューラル・ネットワークの前記第2のアレイのニューラル・ネットワークごとに各適応度スコアを計算することと、
ニューラル・ネットワークの前記第2のアレイの各ニューラル・ネットワークの前記各適応度スコアに基づいて前記第2のアレイのニューラル・ネットワークの一部を選択することとをさらに含む、請求項15に記載のコンピュータ・プログラム製品。
【請求項19】
前記第1のアレイの各ニューラル・ネットワークがニューラル・ネットワークの第1のクラスに属し、前記第2のアレイの各ニューラル・ネットワークがニューラル・ネットワークの第2のクラスに属し、ニューラル・ネットワークの前記第2のクラスがニューラル・ネットワークの前記第1のクラスと異なる、請求項15に記載のコンピュータ・プログラム製品。
【請求項20】
ニューラル・ネットワークの前記第1のアレイの前記一部の各ニューラル・ネットワークを突然変異させることが、各ニューラル・ネットワークの各活性化関数を活性化関数の第1の種類から活性化関数の第2の種類に変更することを含む、請求項15に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、プログラム可能なコンピューティング・システムに関連しており、より詳細には、テスト・スイート生成のための強化学習を組み込むように構成されたプログラム可能なコンピューティング・システムに関連している。
【背景技術】
【0002】
テスト・エンジニアは、コンピューティング・システムのテストを実行して、システムのハードウェアおよびソフトウェアの機能を検証する。一般に、テスト・エンジニアは、コンピューティング・システムのコンポーネントが何らかの技術仕様または機能仕様に従って適切に機能するかどうかを検証するために、コンピューティング・システムにテスト・プロトコルを受けさせる。テスト・エンジニアは、ハードウェアおよびソフトウェアの仕様から、システムの期待される能力および制限を学習する。テスト・エンジニアは、仕様に基づいて、目標信号応答をもたらすように、システムに固有のテスト・ケースを設計する。テスト・エンジニアは、実際の受信信号応答に基づいて、システムが期待される能力および制限の境界内で機能するかどうかを判定する。
【発明の概要】
【0003】
本発明の実施形態は、セーフ・コードの強化学習を対象にする。非限定的な例示的コンピュータ実装方法は、ニューラル・ネットワークの第1のアレイの一部の各ニューラル・ネットワークを突然変異させることを含み、ニューラル・ネットワークの第1のアレイの各ニューラル・ネットワークは、コンピューティング・インフラストラクチャをテストするためのテスト・ケースの各シーケンスを選択するように構成される。ニューラル・ネットワークの第2のアレイの各ニューラル・ネットワークに、コンピューティング・インフラストラクチャをテストするためのテスト・ケースの各シーケンスを選択させる。第1のアレイの一部の突然変異ニューラル・ネットワーク(mutated neural network)とニューラル・ネットワークの第2のアレイのニューラル・ネットワークの間で交差演算を実行することによって、子ニューラル・ネットワークを生成し、子ニューラル・ネットワークは、コンピューティング・インフラストラクチャをテストするためのテスト・ケースの新しいシーケンスを生成する。
【0004】
本発明の他の実施形態は、コンピュータ・システムおよびコンピュータ・プログラム製品において、前述の方法の特徴を実装する。
【0005】
その他の技術的特徴および利点が、本発明の技術によって実現される。本発明の実施形態および態様は、本明細書において詳細に説明され、請求される対象の一部と見なされる。さらによく理解するために、詳細な説明および図面を参照すること。
【0006】
本明細書に記載された排他的権利の詳細は、本明細書の最後にある特許請求の範囲において具体的に指摘され、明確に請求される。本発明の実施形態の前述およびその他の特徴と長所は、添付の図面と併せて行われる以下の詳細な説明から明らかになる。
【図面の簡単な説明】
【0007】
図1】本発明の1つまたは複数の実施形態に従って、テスト用のニューラル・ネットワーク生成のためのシステムのコンポーネントのブロック図を示す図である。
図2A】本発明の1つまたは複数の実施形態に従って、ニューラル・ネットワークを示す図である。
図2B】本発明の1つまたは複数の実施形態に従って、突然変異ニューラル・ネットワークを示す図である。
図3】本発明の1つまたは複数の実施形態に従って、テスト用のニューラル・ネットワークの生成のためのプロセスのフロー図を示す図である。
図4】本発明の1つまたは複数の実施形態に従って、クラウド・コンピューティング環境を示す図である。
図5】本発明の1つまたは複数の実施形態に従って、抽象モデル・レイヤを示す図である。
図6】本発明の1つまたは複数の実施形態を実装することにおいて使用するためのコンピュータ・システムのブロック図を示す図である。
【発明を実施するための形態】
【0008】
本明細書において示された図は、例示である。本発明の思想から逸脱することなく、本明細書に記載された図または動作の多くの変形が存在することが可能である。例えば、動作は異なる順序で実行されることが可能であり、または動作は追加、削除、もしくは変更されることが可能である。また、「結合される」という用語およびその変形は、2つの要素間に通信経路が存在することを表しており、それらの要素間に要素/接続が介在しない要素間の直接的接続を意味していない。これらのすべての変形は、本明細書の一部であると見なされる。
【0009】
本発明の1つまたは複数の実施形態は、コンピュータ・インフラストラクチャをテストするためのテスト・ケースの最適なシーケンスを選択するように設計されたニューラル・ネットワークを生成するコンピュータ実装方法、コンピューティング・システム、およびコンピュータ・プログラム製品を提供する。
【0010】
テスト・エンジニアは、コンピューティング・システムのさまざまな側面をテストするためのテスト・ケースを開発する。各テスト・ケースは、コンピューティング・システムのある側面をテストするために使用される変数または条件のセットである。テスト・ケースは、コンピューティング・システムの種々の機能を駆動して、システムに信号応答を生成させる。次に、エンジニアは、異なるテスト・ケースをテスト・スイートに一緒にグループ化する。各テスト・スイートは、コンピューティング・システムの特定の側面をテストするように設計されたテスト・ケースのシーケンスを含む。エンジニアは、コンピューティング・システムに対してテスト・スイートを実行し、信号応答を分析する。しかし、エンジニアは、テスト・ケースおよびテスト・スイートを開発するために時間およびリソースを使い果たさなければならない。さらに、エンジニアの判断は、習慣、またはテスト・ケースもしくはコンピューティング・システムの理解の欠如によって鈍らされる可能性がある。これが、コンピューティング・システムを十分に検証しないテスト・ケースの不十分なシーケンスにつながる可能性がある。
【0011】
本発明の1つまたは複数の実施形態は、突然変異ニューラル・ネットワークを結合して、最適なテスト・スイートを決定する新しいニューラル・ネットワークを作成するためのコンピュータ実装方法、コンピューティング・システム、およびコンピュータ・プログラム製品を提供することによって、上記の欠点のうちの1つまたは複数に対処する。ニューラル・ネットワークのうちのどれが、テスト・スイートにとって最も良いテスト・ケースの選択を生成するかを決定するために、ニューラル・ネットワークの第1のアレイが導入されて分析される。第1のアレイの各ニューラル・ネットワークは、同じニューラル・ネットワークのクラスからのものである。第1のアレイからの最も良いニューラル・ネットワークは、遺伝的アルゴリズムを使用して突然変異させられる。突然変異ニューラル・ネットワークのうちのどれが、テスト・スイートにとって最も良いテスト・ケースの選択を生成するかを決定するために、突然変異ニューラル・ネットワークが分析される。ニューラル・ネットワークのうちのどれが、テスト・スイートにとって最も良いテスト・ケースの選択を生成するかを決定するために、ニューラル・ネットワークの第2のアレイが導入されて分析される。第2のアレイからのニューラル・ネットワークは、第1のアレイと異なるニューラル・ネットワークのクラスからのものである。遺伝的アルゴリズムを使用して、最も性能の良い突然変異ニューラル・ネットワークおよび第2のアレイからのニューラル・ネットワークが結合され、テスト・スイートにとって最も良いテスト・ケースの選択を生成するための新しいニューラル・ネットワークを形成する。
【0012】
ここで図1を参照すると、本発明の1つまたは複数の実施形態に従って、テスト・スイートを生成するためのシステム100が概して示されている。システム100は、テストを必要としているコンピューティング・インフラストラクチャ112をテストするためのテスト・ケースを決定するために使用されるニューラル・ネットワークのアレイを管理するためのニューラル・ネットワーク・ユニット102を含んでいる。システム100は、各ニューラル・ネットワークの適応度を評価するための適応度ユニット104をさらに含んでいる。システム100は、適応度ユニット104の適応度評価に基づいてニューラル・ネットワークの新しいアレイを繁殖させるためのニューラル・ネットワーク繁殖ユニット(network breeding unit)106をさらに含んでいる。システム100は、静的テストまたは動的テストのためのテスト・ケースを含んでいるテスト・ケース・データベース108とさらに動作可能に通信する。システム100は、テストを必要としているコンピューティング・インフラストラクチャ112のテストを実行するテスト・ユニット110とさらに動作可能に通信する。図6で説明されている処理システム600を介してシステム100が実装されるということが、理解されるべきである。
【0013】
ニューラル・ネットワーク・ユニット102は、ニューラル・ネットワーク・アレイの反復を管理する。ニューラル・ネットワークの各アレイは、同じクラスからのニューラル・ネットワークを含む。例えば、各ニューラル・ネットワークは、同一の数のノード、入力層、隠れ層、および出力層を含むフィードフォワード・ニューラル・ネットワークであることができる。他の反復では、第1のアレイのクラスは、ラジアル・バイアス・ネットワーク(RBN:radial bias network)、長短期記憶(LSTM:long/shortterm memory)ネットワーク、深層畳み込みネットワーク(DCN:deep convolutionalnetwork)、または他の適切なネットワークを含む。異なるニューラル・ネットワークのクラスは、ノード層の機能およびノード間の接続に関して、トポロジーにおいて異なる。
【0014】
ニューラル・ネットワーク・ユニット102は、テスト・ケースのシーケンスを選択するように、第1のアレイの各ニューラル・ネットワークを初期化する。初期化は、各ニューラル・ネットワークに関連付けられた重みおよびバイアスのランダム化を含む。第1のアレイの各ニューラル・ネットワークは、テスト・ケース・データベース108に含まれている各テスト・ケースの特徴を入力として受信する。第1のアレイの各ニューラル・ネットワークは、テストを必要としているコンピューティング・インフラストラクチャ112の特定の側面に関するテスト・パラメータも入力として受信する。テストを必要としているコンピューティング・インフラストラクチャ112は、データを処理、分析、および格納するために使用されるすべての物理的リソースおよび仮想的リソースを含む。各ニューラル・ネットワークは、入力をモデルに適用し、次にモデルは、テストを必要としているコンピューティング・インフラストラクチャ112をテストするためのテスト・スイート用のテスト・ケースのシーケンスを出力する。
【0015】
本発明の1つまたは複数の実施形態に従って、各ニューラル・ネットワークは、一連の相互接続されたノード(ニューロン)で構成されている。第1のニューロンと第2のニューロンの間の各接続は、2つの接続されたニューロン間の関係の強度を示す重みに関連付けられる。各ニューロンは、ニューロンの出力を決定する活性化関数に関連付けられる。各活性化関数は、定数値であるバイアスに関連付けられる。第1のニューロンの出力値が、重みによって変更され、第2のニューロンに送信される。第2のニューロンが、この値を受信し、第2のニューロンに関連付けられた活性化関数の入力として使用する。第2のニューロンは、活性化関数を解き、バイアスを追加し、値をニューロンのその後の層に出力する。各ニューラル・ネットワークの重みおよびバイアスがランダム化されているため、各ニューラル・ネットワークは、テスト・スイートを形成するためのテスト・ケースの異なるセットを予測するよう動作可能である。
【0016】
適応度ユニット104は、適応度関数を各ニューラル・ネットワークに適用して、ニューラル・ネットワークが、テストを必要としているコンピューティング・インフラストラクチャ112をテストするためのテスト・ケースのシーケンスの最適解を予測したかどうかを評価する。適応度ユニット104は、テストを必要としているコンピューティング・インフラストラクチャ112の特徴、能力、制限、または機能ごとに各適応度関数を適用するよう動作可能である。適応度ユニット104は、ニューラル・ネットワークによって予測されたテスト・ケースのシーケンスを受け取り、このシーケンスを入力として適応度関数に適用する。適応度関数は、このシーケンスに対する信号応答を、テストを必要としているコンピューティング・インフラストラクチャ112からさらに受信する。シーケンスおよび信号応答に基づいて、適応度関数は、シーケンスが特定の特徴、能力、制限、または機能をテストすることに向かってどの程度「適応している」かに関して、出力適応度スコアを生成する。例えば、テスト・ユニット110は、テストを必要としているコンピューティング・インフラストラクチャ112の2つ以上のハードウェア・コンポーネントが一致しないかどうかをテストする。一致しないコンポーネントは、多くの場合、処理ボトルネックをもたらすため、シーケンスによって生成された競合に関連するイベントの数に関してシーケンスを比較するために、適応度関数が使用される。適応度関数のスコアは、予測されたしきい値数と比較して、どの程度近い競合に関連するイベントの実際の数が発生したかに、一部分において基づく。
【0017】
適応度ユニット104は、第1のアレイから最高の性能のニューラル・ネットワークを選択する。適応度ユニット104は、最高の性能のニューラル・ネットワークを決定するために、さまざまな基準を使用する。本発明の一部の実施形態では、適応度ユニット104は、ニューラル・ネットワークの最高のしきい値百分位数を選択する。例えば、適応度ユニット104は、90番目以上の百分位数である適応度スコアを有するニューラル・ネットワークを選択する。本発明の他の実施形態では、適応度ユニット104は、最高のスコアを有するしきい値数のニューラル・ネットワークを選択する。例えば、適応度ユニット104は、30個の最高のスコアを有する30個のニューラル・ネットワークを選択する。適応度ユニット104による選択に応答して、ニューラル・ネットワーク・ユニット102は、ニューラル・ネットワークの第1のアレイから、残りのニューラル・ネットワークを除去する。
【0018】
ニューラル・ネットワーク繁殖ユニット106は、適応度ユニット104によって選択されたニューラル・ネットワークを受信し、遺伝的アルゴリズムを使用することによってニューラル・ネットワークを突然変異させる。ニューラル・ネットワーク繁殖ユニット106は、遺伝的アルゴリズムを使用して、各ニューラル・ネットワークに関連付けられた重み、バイアスに加えて、ニューラル・ネットワークのトポロジーを変更する。ニューラル・ネットワークをトレーニングするために、コスト/目的関数および逆伝搬を介する変更を使用する代わりに、遺伝的アルゴリズムが使用される。本発明の一部の実施形態では、重みおよびバイアスは、選択されたニューラル・ネットワークのうちの2つを組にし、重みのうちの1つまたは複数およびバイアスのうちの1つまたは複数を交換することによって変更される。本発明の他の実施形態では、ニューラル・ネットワーク繁殖ユニット106は、重みおよびバイアスをランダムに変更する。ニューラル・ネットワーク繁殖ユニット106は、ノードをニューラル・ネットワークに追加すること、またはニューラル・ネットワークから取り去ることによってトポロジーを変更する。ノードを追加するために、ニューラル・ネットワーク繁殖ユニット106は、2つのノード間の接続を無効にする。次に、ニューラル・ネットワーク繁殖ユニット106は、2つの無効化されたノード間に新しいノードを追加する。その後、ニューラル・ネットワーク繁殖ユニット106は、新しいノードと2つの無効化されたノードの間に接続を追加する。ニューラル・ネットワーク繁殖ユニット106は、2つの接続されたノード間の既存の接続を無効にするか、またはノードを別のノードに追加して接続することもできる。
【0019】
本発明の一部の実施形態では、ニューラル・ネットワーク繁殖ユニット106は、遺伝子型およびネットワーク表現型を含むように、各ニューラル・ネットワーク・アーキテクチャを考慮する。遺伝子型は、ノード遺伝子セットおよび接続された遺伝子セットを含む。ノード遺伝子セットは、ノードごとのエントリを含み、各エントリは、ノードごとの識別子、およびノードが入力ノード(センサ)であるか、隠れノードであるか、または出力ノードであるかの記述を含む。接続された遺伝子セットは、接続されたノードのセットごとのエントリを含む。接続は、直接接続および間接接続を含む。各エントリは、2つの接続されたノードの識別情報、ノード間の重み値、接続が有効化されているか、または無効化されているかの指示、および接続を識別する一意のイノベーション番号(innovation number)を含む。イノベーション番号は、ニューラル・ネットワークの各進化的変化のインデックスを作成する。例えば、ニューラル・ネットワークが、隠れ層ノード2に接続された入力ノード1を含み、隠れ層ノード2が出力ノード3に接続されていると仮定する。ノード遺伝子セットは、3つのノードのための3つのエントリを含む。接続された遺伝子セットは、ノード1とノード2の間の直接接続、ノード2とノード3の間の直接接続、およびノード1とノード3の間の間接接続のための3つのエントリを含む。間接接続は、無効化された接続の形態である。ネットワーク表現型は、3つのノード間の関係のすべてを、例えば、有向グラフとして表す。
【0020】
さらなる説明として、前述のニューラル・ネットワークは、第3のノードに接続されているが、他のノードに接続されていない第4の入力層ノードを含むことができる。本発明の1つまたは複数の実施形態に従って、ニューラル・ネットワーク繁殖ユニット106は、第4のノードを第3のノードに接続することができる。次に、ニューラル・ネットワーク繁殖ユニット106は、エントリを接続されたノードのセットに追加し、新しいエントリに一意のイノベーション番号を割り当てる。ニューラル・ネットワーク繁殖ユニット106は、追加の接続を反映するようにネットワーク表現型も更新する。別の事例では、ニューラル・ネットワーク繁殖ユニット106は、2つの無効化されたノード間に新しいノードを接続することができる。次に、ニューラル・ネットワーク繁殖ユニット106は、一意のイノベーション番号と共に、直接接続および間接接続を反映するために、接続された遺伝子セットを追加する。上と同じ説明を使用して、ニューラル・ネットワーク繁殖ユニット106は、ノード1とノード2の間の接続を無効にする。次に、ニューラル・ネットワーク繁殖ユニット106は、ノード1とノード2の間に新しいノード5を接続する。その後、ニューラル・ネットワーク繁殖ユニット106は、一意のイノベーション番号と共に、ノード1とノード5の間の接続、およびノード5とノード2の間の接続を反映するために、接続された遺伝子セットを追加する。一意のイノベーション番号は、2つのニューラル・ネットワーク間の交差プロセス中に使用される。ニューラル・ネットワーク繁殖ユニット106は、しきい値数の突然変異ニューラル・ネットワークが生成されるまで、選択されたニューラル・ネットワークをこの方法で突然変異させ続ける。本発明の一部の実施形態では、突然変異ニューラル・ネットワークのしきい値数は、ニューラル・ネットワークの第1のアレイのニューラル・ネットワークの数と同じである。
【0021】
本発明の1つまたは複数の実施形態に従って、ニューラル・ネットワーク・ユニット102は、各突然変異ニューラル・ネットワークを初期化する。各突然変異ニューラル・ネットワークは、テスト・ケース・データベース108に含まれている各テスト・ケースの特徴を入力として受信する。各突然変異ニューラル・ネットワークは、テストを必要としているコンピューティング・インフラストラクチャ112の特定の側面に関するテスト・パラメータも入力として受信する。各突然変異ニューラル・ネットワークは、特徴をモデルの入力として使用し、モデルは、テストを必要としているコンピューティング・インフラストラクチャ112の側面をテストするためのテスト・スイート用のテスト・ケースのシーケンスを出力する。適応度ユニット104は、適応度関数を各突然変異ニューラル・ネットワークに適用して、突然変異ニューラル・ネットワークが、テスト・ケースのシーケンスの最適解を予測したかどうかを評価する。次に、適応度ユニット104は、最高の性能の突然変異ニューラル・ネットワークを選択する。
【0022】
ニューラル・ネットワーク・ユニット102は、ニューラル・ネットワークの第2のアレイの各ニューラル・ネットワークを初期化する。第2のアレイの各ニューラル・ネットワークは、第1のアレイと異なるニューラル・ネットワークのクラスである。例えば、第1のアレイがフィードフォワード・ニューラル・ネットワークで構成された場合、第2のアレイはラジアル・バイアス・ネットワークで構成される。したがって、第1のアレイおよび突然変異ニューラル・ネットワーは、同じクラスから生じたため、同じ種のニューラル・ネットワークであるが、第2のアレイは、異なるクラスからのものであり、したがって異なる種である。本発明の一部の実施形態では、第2のアレイは、第1のアレイと同じ数のニューラル・ネットワークを含む。第2のアレイの各ニューラル・ネットワークは、テスト・ケース・データベース108に含まれている各テスト・ケースの特徴を入力として受信する。第2のアレイの各ニューラル・ネットワークは、テストを必要としているコンピューティング・インフラストラクチャ112の特定の側面に関するテスト・パラメータも入力として受信する。各ニューラル・ネットワークは、入力をモデルに適用し、モデルは、テストを必要としているコンピューティング・インフラストラクチャ112の側面をテストするためのテスト・スイート用のテスト・ケースのシーケンスを出力する。適応度ユニット104は、適応度関数を第2のアレイの各ニューラル・ネットワークに適用して、突然変異ニューラル・ネットワークが、テストを必要としているコンピューティング・インフラストラクチャ112をテストするためのテスト・ケースのシーケンスの最適解を予測したかどうかを評価する。次に、適応度ユニット104は、第2のアレイから最高の性能のニューラル・ネットワークを選択する。
【0023】
ニューラル・ネットワーク繁殖ユニット106は、交差関数を実行して、突然変異ニューラル・ネットワークからの最高の性能のニューラル・ネットワークおよびニューラル・ネットワークの第2のアレイを結合することによって、新しいニューラル・ネットワークを繁殖させる。交差関数は、突然変異ニューラル・ネットワークからの親ニューラル・ネットワークおよび第2のアレイの親ニューラル・ネットワークを受け取り、子ニューラル・ネットワークを繁殖させる。ニューラル・ネットワーク繁殖ユニット106は、2つのニューラル・ネットワークの適応度スコアを比較する。ニューラル・ネットワーク繁殖ユニット106は、逆伝搬によって、スコアがより高いニューラル・ネットワークの接続されたノードのどのシーケンスがテスト・スイートのシーケンスの予測につながったかを決定する。ニューラル・ネットワーク繁殖ユニット106は、スコアがより低いニューラル・ネットワークの接続されたノードのどのシーケンスがテスト・スイートのシーケンスの予測につながったかも決定する。シーケンスを形成する接続は、接続された遺伝子セットによって表され、一意のイノベーション番号によって識別される接続である。次に、ニューラル・ネットワーク繁殖ユニット106は、スコアがより高いニューラル・ネットワークおよびスコアがより低いニューラル・ネットワークの接続されたノードのシーケンスを、子ニューラル・ネットワークに追加する。このプロセスは、各ニューラル・ネットワークが子ニューラル・ネットワークに対して親である場合に完了する。
【0024】
本発明の一部の実施形態では、ニューラル・ネットワーク繁殖ユニット106は、異なるトポロジーを有する2つの互いに素なニューラル・ネットワークに対して交差関数を実行する。その場合、第1のニューラル・ネットワークおよび第2のニューラル・ネットワークは、異なる数の層またはノードを含んでよい。例えば、第1のニューラル・ネットワークは3つの隠れ層を含んでよく、一方、第2のニューラル・ネットワークは4つの隠れ層を含んでよい。第1のニューラル・ネットワークは、第2のニューラル・ネットワークと異なって接続されたノードを含むこともできる。例えば、第1のニューラル・ネットワークは、4つのノードの隠れ層の2つのノードに接続された入力ノード(例えば、センサ)を含み、一方、第2のニューラル・ネットワークは、4つのノードの隠れ層の4つのノードに接続された入力ノード(例えば、センサ)を含む。このような状況では、ニューラル・ネットワーク繁殖ユニット106は、ニューラル・ネットワーク内の経路の係数に基づいて、第2のニューラル・ネットワークに対する第1のニューラル・ネットワークの1対1のマッピングを可能にするために、重複するノードを生成する。ニューラル・ネットワーク繁殖ユニット106は、テスト・ケース選択に最も寄与するコア・ノードを、経路(接続されたノードのシーケンス)に沿って識別することができる。例えば、図2Aおよび図2Bは、破線を通る経路を示しており、コア・ノードは、破線の経路によって接続されたノードである。ニューラル・ネットワーク繁殖ユニット106は、コア・ノードを識別するために、種々の方法を使用することができる。本発明の一部の実施形態では、ニューラル・ネットワーク繁殖ユニット106は、逆伝搬アルゴリズムに基づいてコア・ノードを識別することができる。次に、ニューラル・ネットワーク繁殖ユニット106は、第1のニューラル・ネットワークのコア・ノードを第2のニューラル・ネットワークのコア・ノードと掛け合わせて、2つのニューラル・ネットワークを形成することができる。これらの2つのニューラル・ネットワークは、第1のプライム・ニューラル・ネットワーク(prime neural network)および第2のプライム・ニューラル・ネットワークと呼ばれ得る。第1のニューラル・ネットワークおよび第2のニューラル・ネットワークのノードの数は、それぞれ係数値である。第1のニューラル・ネットワークおよび第2のニューラル・ネットワークに追加された追加のノードが第1のプライム・ニューラル・ネットワークを形成し、第2のプライム・ニューラル・ネットワークは重複するノードである。次に、ニューラル・ネットワーク繁殖ユニット106は、共通の(同じ)ノードを識別し、共通していない(異なる)ノードにランダム化を導入することによって、第1のプライム・ニューラル・ネットワークおよび第2のプライム・ニューラル・ネットワークから各子ニューラル・ネットワークを繁殖させる。各子ニューラル・ネットワークは、各親ニューラル・ネットワークの係数分の1に減らされる。
【0025】
子ニューラル・ネットワークは、一緒にニューラル・ネットワークの第3のアレイを形成する。第3のアレイの各子ニューラル・ネットワークは、テスト・スイートを形成するためのテスト・ケースのシーケンスに関して予測するために、ニューラル・ネットワーク・ユニット102によって初期化される。適応度ユニット104は、適応度関数を各子ニューラル・ネットワークに適用して、子ニューラル・ネットワークが、テストを必要としているコンピューティング・インフラストラクチャ112をテストするためのテスト・ケースのシーケンスの最適解を予測したかどうかを評価する。次に、適応度ユニット104は、最高の性能の子ニューラル・ネットワークを選択する。
【0026】
このプロセスは繰り返されることが可能であり、その場合、終了条件が満たされるまで、異なるクラスのニューラル・ネットワークの新しいアレイが導入される。適応度関数を使用してニューラル・ネットワークの新しいアレイが評価される。最高の性能のニューラル・ネットワークが選択され、前のアレイの最高の性能のニューラル・ネットワークと結合される。本発明の一部の実施形態では、終了条件は、ニューラル・ネットワークが平均しきい値適応度スコアを達成していることである。本発明の他の実施形態では、終了関数は、さらなる突然変異および交差の減少する戻り値の認識である。その場合、終了は、1つのアレイからその後のアレイへの適応度スコアの平均増加がしきい値増加値より少ないことに基づく。例えば、5番目のアレイの平均適応度スコアがxであり、6番目のアレイの平均適応度スコアがyであり、y-xがしきい値増加値zより少ない場合、終了条件に達している。
【0027】
テスト・ケース・データベース108は、複数のテスト・ケースを含む。各テスト・ケースは、単体テスト、機能テスト、システム・テスト、または統合テストに使用される変数または条件のセットである。例えば、システム100が、サーバでのメモリ・リークをテストするためのテスト・スイートを生成している場合、テスト・ケースは、メモリ負荷の高いビデオ・ゲームの初期化を含む。他の例では、システム100は、メモリ使用量または入出力スループットなどの、他の側面に関する他のテスト・スイートを生成することができる。各テスト・ケースは、テストを必要としているコンピューティング・インフラストラクチャ112をテストするために使用されるテスト・ケースのシーケンスを含むテスト・スイートの構成要素である。各テスト・ケースは、テストを必要としているコンピューティング・インフラストラクチャ112が合格したか、または失敗したかを判定するための基準をさらに含む。例えば、メモリ・リークに関する基準は、100バイトのデータの誤った割り当てが正常であり、したがって合格であり、一方、1メガバイトのデータの誤った割り当てが不具合を構成するということを指示する。本明細書において使用されるとき、シーケンスは、必ずしもテスト・ケースの時系列を示さず、特定のテスト・ケースの組み合わせを示す。一部の実施形態では、シーケンスは、テストを必要としているコンピューティング・インフラストラクチャ112に適用されるテスト・ケースの時間的順序を含む。他の実施形態では、シーケンスは、テストを必要としているコンピューティング・インフラストラクチャ112に適用されるテスト・ケースの特定のセットを含む。
【0028】
本明細書において使用されるとき、「ニューラル・ネットワーク」および「機械学習」という語句は、データから学習する電子システムの機能を広く表す。機械学習システム、エンジン、またはモジュールは、現在は不明である入力と出力の間の機能的関係を学習するために、外部クラウド環境(例えば、クラウド・コンピューティング環境50)などにおいてトレーニングされる機械学習アルゴリズムを含むことができる。1つまたは複数の実施形態では、機械学習機能は、現在は不明である機能を実行するようにトレーニングされる能力を有するニューラル・ネットワークを使用して実装され得る。機械学習および認知科学では、ニューラル・ネットワークは、動物および特に脳の生物学的ニューラル・ネットワークから着想を得た、一群の統計学習モデルである。ニューラル・ネットワークは、多数の入力に依存するシステムおよび機能を推定または近似するために使用され得る。
【0029】
ニューラル・ネットワークは、シミュレートされた「ニューロン」として機能し、電子信号の形態で互いに「メッセージ」を交換する相互接続されたプロセッサ要素のいわゆる「神経形態学的」システムとして、具現化され得る。生物学的ニューロン間でメッセージを伝達するシナプス神経伝達物質接続のいわゆる「可塑性」と同様に、シミュレートされたニューロン間で電子メッセージを伝達するニューラル・ネットワーク内の接続には、特定の接続の強さまたは弱さに対応する数値的重みが提供される。トレーニング中に、これらの重みは、経験に基づいて調整されることが可能であり、ニューラル・ネットワークを入力に適応可能にし、学習可能にする。これらの入力ニューロンの活性化は、ネットワークの設計者によって決定された機能によって重み付けされて変換された後に、「隠れ」ニューロンと呼ばれることが多い他の下流のニューロンに渡される。このプロセスが、出力ニューロンが活性化されるまで繰り返される。活性化された出力ニューロンは、どの文字が読み取られたかを決定する。
【0030】
図2Aを参照すると、本発明の実施形態に従って、第1のニューラル・ネットワーク200の図が示されている。第1のニューラル・ネットワーク200は、3つのノードを含む入力層202、4つのノードを含む隠れ層204、および4つのノードを含む出力層206を含む。図に示されているように、どのノードがテスト・スイートに含まれている選択されたテスト・ケースに最も向かって寄与したかを示すために、ノードが破線によって接続されている。例えば、入力ノード208、隠れ層ノード210、および出力層ノード212が、テスト・ケース2を選択することに最も寄与した。ニューラル・ネットワークは、テスト・ケース・データベース108と通信する。本発明の一部の実施形態では、第1のニューラル・ネットワーク200は、テスト・ケースのシーケンスに関して予測した後に、テスト・ケース・データベース108内の各選択されたテスト・ケースに、選択を反映するように注釈を付ける。
【0031】
図2Bを参照すると、本発明の実施形態に従って、第2のニューラル・ネットワーク250が示されている。第2のニューラル・ネットワーク250を生成するために、第1のニューラル・ネットワーク200が突然変異させられている。図に示されているように、隠れ層ノード210が隠れ層ノード214に突然変異させられており、出力層ノード216が出力層ノード218に突然変異させられており、出力層ノード220が出力層ノード222に突然変異させられている。本発明の一部の実施形態では、各ノードに関連付けられた活性化関数を変更することによって、第1のニューラル・ネットワーク200からの3つのノード210、216、218が突然変異させられる。本発明の他の実施形態では、各ノードに関連付けられたバイアス値を変更することによって、第1のニューラル・ネットワーク200からの3つのノード210、216、218が突然変異させられる。本発明のさらに他の実施形態では、各ノードに関連付けられた活性化関数およびバイアス値を変更することによって、第1のニューラル・ネットワーク200からの3つのノード210、216、218が突然変異させられる。
【0032】
図3を参照すると、本発明の1つまたは複数の実施形態に従って、テスト用のニューラル・ネットワークの生成のためのプロセスのフロー図300が示されている。図3に示されている処理のすべてまたは一部が、図1のシステム100などのコンピュータ・システムによって実行されるということが、理解されるべきである。ブロック302で、ニューラル・ネットワーク・ユニット102が、ニューラル・ネットワークの第1のアレイを初期化する。初期化は、各ニューラル・ネットワークの重みおよびバイアスの値のランダム化を含む。ニューラル・ネットワークの第1のアレイの各ニューラル・ネットワークは、同じニューラル・ネットワークのクラスである。例えば、各ニューラル・ネットワークはフィードフォワード・ニューラル・ネットワークである。ニューラル・ネットワーク・ユニット102は、各ニューラル・ネットワークに、テスト・ケースを入力として受信して、テスト・ケースのシーケンスを出力し、テストを必要としているコンピューティング・インフラストラクチャ112の側面に関するテスト・スイートを形成させる。各テスト・スイートがテスト・ユニット110に送信され、テスト・ユニット110は、テスト・ケースを使用して、テストを必要としているコンピューティング・インフラストラクチャ112の側面をテストする。
【0033】
ブロック304で、適応度ユニット104が、第1のアレイの各ニューラル・ネットワークの性能を評価する。適応度ユニット104は、テスト・スイートごとに、テストを必要としているコンピューティング・インフラストラクチャ112から各信号応答を受信する。各ニューラル・ネットワークはテスト・ケースのシーケンスを選択しており、したがって、各ニューラル・ネットワークが各信号応答に関連付けられる。適応度ユニット104は、適応度関数を適用して、テスト・スイートの選択されたテスト・ケースが最適解にどの程度近いかを決定する。適応度ユニット104は、適応度関数によって生成されたスコアをしきい値スコアと比較する。適応度ユニット104は、しきい値スコアまでのニューラル・ネットワークの適応度スコアの距離に基づいて、各ニューラル・ネットワークの性能を評価する。適応度ユニット104は、第1のアレイのニューラル・ネットワークの最高の性能の部分をさらに選択する。一部の実施形態では、この選択は、ニューラル・ネットワークがしきい値百分位数より大きい適応度スコアを達成することに基づく。他の実施形態では、この選択は、ニューラル・ネットワークがしきい値適応度スコアより大きい適応度スコアを有することに基づく。
【0034】
ブロック306で、ニューラル・ネットワーク繁殖ユニット106が、遺伝的アルゴリズムを使用して、第1のアレイの最高の性能の部分を突然変異させる。ニューラル・ネットワーク繁殖ユニット106は、種々の変更によって突然変異を実行する。1つの選択肢は、さまざまなノードおよびノード接続に関連付けられた重みおよびバイアスを変更することである。別の選択肢は、ノード間の接続を無効にすること、または1つまたは複数のノードをニューラル・ネットワークに追加することである。別の選択肢は、ニューラル・ネットワーク繁殖ユニット106が、ノードに関連付けられた活性化関数を変更することである。例えば、ニューラル・ネットワーク繁殖ユニット106は、線形活性化関数を非線形活性化関数に変更する。ニューラル・ネットワーク繁殖ユニット106が突然変異ニューラル・ネットワークの生成を完了した後に、ニューラル・ネットワーク・ユニット102は、各ニューラル・ネットワークに、テスト・ケースの特徴を入力として受信して、テスト・ケースのシーケンスを出力し、テストを必要としているコンピューティング・インフラストラクチャ112の側面に関するテスト・スイートを形成させる。
【0035】
ブロック308で、適応度ユニット104が、各突然変異ニューラル・ネットワークの性能を評価する。適応度ユニット104は、テスト・スイートごとに、テストを必要としているコンピューティング・インフラストラクチャ112から各信号応答を受信する。適応度ユニット104が、適応度関数を使用して各突然変異ニューラル・ネットワークの性能を評価する。同様に、適応度ユニット104は、突然変異ニューラル・ネットワークごとに適応度スコアを計算する。適応度ユニット104は、適応度スコアを使用して、突然変異ニューラル・ネットワークの最高の性能の部分を選択する。
【0036】
ブロック310で、ニューラル・ネットワーク・ユニット102が、ニューラル・ネットワークの第2のアレイを初期化する。ニューラル・ネットワークの第2のアレイは、ニューラル・ネットワークの第1のアレイと異なるニューラル・ネットワークのクラスである。ニューラル・ネットワーク・ユニット102は、第2のアレイの各ニューラル・ネットワークに、テスト・ケースの特徴を入力として受信して、テスト・ケースのシーケンスを出力し、テストを必要としているコンピューティング・インフラストラクチャ112の側面に関するテスト・スイートを形成させる。テストを必要としているコンピューティング・インフラストラクチャ112に対してテストを実行するために、各テスト・スイートがテスト・ユニット110に送信される。
【0037】
ブロック312で、適応度ユニット104が、第2のアレイの各ニューラル・ネットワークの性能を評価する。適応度ユニット104は、テスト・スイートごとに、テストを必要としているコンピューティング・インフラストラクチャ112から各信号応答を受信する。適応度ユニット308は、適応度関数を使用して、第2のアレイの各ニューラル・ネットワークの性能を評価する。同様に、適応度ユニット104は、第3のアレイのニューラル・ネットワークごとに適応度スコアを計算する。適応度ユニット104は、適応度スコアを使用して、第2のアレイのニューラル・ネットワークの最高の性能の部分を選択する。
【0038】
ブロック314で、ニューラル・ネットワーク繁殖ユニット106は、最高の性能の突然変異ニューラル・ネットワークと第2のアレイの最高の性能のニューラル・ネットワークの間で交差を実行する。突然変異ニューラル・ネットワークの最高の性能のノードを第2のアレイのニューラル・ネットワークの最高の性能のノードと結合することによって、交差が実行される。このプロセスは、最高の性能の突然変異ニューラル・ネットワークの各々が第2のアレイの別の最高の性能のニューラル・ネットワークと組にされるまで繰り返される。交差によって作成された子ニューラル・ネットワークは、アレイの各々の最良の特徴を具現化する。
【0039】
本明細書では、関連する図面を参照して、本発明のさまざまな実施形態が説明される。本発明の範囲を逸脱することなく、本発明の代替の実施形態が考案され得る。以下の説明および図面において、要素間のさまざまな接続および位置関係(例えば、上、下、隣接など)が示される。それらの接続または位置関係あるいはその両方は、特に規定されない限り、直接的または間接的であることができ、本発明はこの点において限定するよう意図されていない。したがって、実体の結合は、直接的結合または間接的結合を指すことができ、実体間の位置関係は、直接的位置関係または間接的位置関係であることができる。さらに、本明細書に記載されたさまざまな作業および工程段階は、本明細書に詳細に記載されない追加の段階または機能を含むさらに包括的な手順または工程に組み込まれ得る。
【0040】
本開示にはクラウド・コンピューティングに関する詳細な説明が含まれているが、本明細書において示された教示の実装は、クラウド・コンピューティング環境に限定されないと理解されるべきである。本発明の実施形態は、現在既知であるか、または今後開発される任意のその他の種類のコンピューティング環境と組み合わせて実装できる。
【0041】
クラウド・コンピューティングは、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント・モデルを含んでよい。
【0042】
特徴は、次のとおりである。
【0043】
オンデマンドのセルフ・サービス:クラウドの利用者は、サーバの時間およびネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
【0044】
幅広いネットワーク・アクセス:能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促進する。
【0045】
リソース・プール:プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供され、種々の物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象レベルでは、場所(例えば、国、州、またはデータセンター)を指定できる場合がある。
【0046】
迅速な順応性:能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、無制限のように見え、任意の量をいつでも購入できる。
【0047】
測定されるサービス:クラウド・システムは、計測機能を活用することによって、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント)に適したある抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用状況は、監視、制御、および報告されることが可能であり、利用されるサービスのプロバイダと利用者の両方に透明性を提供する。
【0048】
サービス・モデルは、次のとおりである。
【0049】
SaaS(Software as a Service):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションを利用することである。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定は例外の可能性はあるが、管理することも制御することもない。
【0050】
PaaS(Platform as a Service):利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
【0051】
IaaS(Infrastructure as a Service):利用者に提供される能力は、処理、ストレージ、ネットワーク、およびその他の基本的な計算リソースをプロビジョニングすることであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、デプロイされたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御できる。
【0052】
デプロイメント・モデルは、次のとおりである。
【0053】
プライベート・クラウド:このクラウド・インフラストラクチャは、組織のためにのみ運用される。この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【0054】
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティをサポートする。これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【0055】
パブリック・クラウド:このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
【0056】
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト)によって固有の実体を残したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の組成である。
【0057】
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0058】
ここで図4を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示されているように、クラウド・コンピューティング環境50は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス(例えば、パーソナル・デジタル・アシスタント(PDA:personal digital assistant)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組み合わせなど)が通信できる1つまたは複数のクラウド・コンピューティング・ノード10を含む。ノード10は、互いに通信し得る。ノード10は、1つまたは複数のネットワーク内で、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、もしくはハイブリッド・クラウド、またはこれらの組み合わせなどに、物理的または仮想的にグループ化され得る(図示されていない)。これによって、クラウド・コンピューティング環境50は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはSaaS、あるいはその組み合わせを提供できる。図4に示されたコンピューティング・デバイス54A~Nの種類は、例示のみが意図されており、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続(例えば、Webブラウザを使用した接続)あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
【0059】
ここで図5を参照すると、クラウド・コンピューティング環境50(図4)によって提供される機能的抽象レイヤのセットが示されている。図5に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
【0060】
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(Reduced Instruction Set Computer)アーキテクチャベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーク・コンポーネント66が挙げられる。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0061】
仮想化レイヤ70は、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75などの仮想的実体を提供できる抽象レイヤを備える。
【0062】
一例を挙げると、管理レイヤ80は、以下で説明される機能を提供し得る。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよびその他のリソースの動的調達を行う。計測および価格設定82は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびそれらのリソースの利用に対する請求書またはインボイスの送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでよい。セキュリティは、クラウドの利用者およびタスクのID検証を行うとともに、データおよびその他のリソースの保護を行う。ユーザ・ポータル83は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理84は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当てと管理を行う。サービス水準合意(SLA:Service Level Agreement)計画および実行85は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、SLAに従って行う。
【0063】
ワークロード・レイヤ90は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供されるワークロードおよび機能の例としては、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想化93、データ解析処理94、トランザクション処理95、およびテスト・ケース・シーケンスの選択のためのニューラル・ネットワークの生成96が挙げられる。
【0064】
図6に示されているように、コンピュータ・システム600は、1つまたは複数の中央処理装置(CPU:central processing units)601a、601b、601cなど(集合的または一般的に、プロセッサ601と呼ばれる)を含む。プロセッサ601は、シングルコア・プロセッサ、マルチコア・プロセッサ、コンピューティング・クラスタ、または任意の数の他の構成であることができる。プロセッサ601は、処理回路とも呼ばれ、システム・バス602を介してシステム・メモリ603および種々の他のコンポーネントに結合される。システム・メモリ603は、読み取り専用メモリ(ROM:read only memory)604およびランダム・アクセス・メモリ(RAM:randomaccess memory)605を含むことができる。ROM604は、システム・バス602に結合され、コンピュータ・システム600の特定の基本機能を制御する基本入出力システム(BIOS:basic input/output system)を含んでよい。RAMは、プロセッサ601で使用するためにシステム・バス602に結合された読み取り書き込みメモリである。システム・メモリ603は、動作中の前述の命令の動作のための一時的メモリ空間を提供する。システム・メモリ603は、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ、フラッシュ・メモリ、または任意の他の適切なメモリ・システムを含むことができる。
【0065】
コンピュータ・システム600は、システム・バス602に結合された入出力(I/O:input/output)アダプタ606および通信アダプタ607を備えている。I/Oアダプタ606は、ハード・ディスク608または任意の他の類似するコンポーネントあるいはその両方と通信する小型コンピュータ・システム・インターフェイス(SCSI:small computer system interface)アダプタであってよい。I/Oアダプタ606およびハード・ディスク608は、本明細書では、マス・ストレージ610と総称される。
【0066】
コンピュータ・システム600上で実行するためのソフトウェア611は、マス・ストレージ610に格納され得る。マス・ストレージ610は、プロセッサ601によって読み取り可能な有形のストレージ媒体の例であり、ソフトウェア611は、プロセッサ601による実行のための命令として格納され、コンピュータ・システム600に、さまざまな図に関して本明細書において以下で説明されているように動作させる。本明細書では、コンピュータ・プログラム製品およびそのような命令の実行の例がさらに詳細に説明される。通信アダプタ607は、システム・バス602を、外部のネットワークであってよいネットワーク612と相互接続し、コンピュータ・システム600が他のそのようなシステムと通信できるようにする。1つの実施形態では、システム・メモリ603およびマス・ストレージ610の一部は、図6に示された種々のコンポーネントの機能を調整するために、IBM Corporationのz/OSまたはAIXオペレーティング・システムなどの、任意の適切なオペレーティング・システムであってよいオペレーティング・システムを集合的に格納する。
【0067】
ディスプレイ・アダプタ615およびインターフェイス・アダプタ616を介してシステム・バス602に接続されているように、その他の入出力デバイスが示されている。1つの実施形態では、アダプタ606、607、615、および616は、1つまたは複数のI/Oバスに接続されてよく、I/Oバスは、中間バス・ブリッジ(図示されていない)を介してシステム・バス602に接続される。ディスプレイ619(例えば、画面または表示モニタ)は、ディスプレイ・アダプタ615によってシステム・バス602に接続され、ディスプレイ・アダプタ615は、グラフィックス重視のアプリケーションおよびビデオ・コントローラの性能を向上するために、グラフィック・コントローラを含んでよい。キーボード621、マウス622、スピーカ623などは、インターフェイス・アダプタ616を介してシステム・バス602に相互接続されることが可能であり、例えばインターフェイス・アダプタ616は、複数のデバイス・アダプタを単一の集積回路に統合するスーパーI/Oチップを含んでよい。ハード・ディスク・コントローラ、ネットワーク・アダプタ、およびグラフィックス・アダプタなどの周辺機器を接続するのに適したI/Oバスは、典型的には、PCI(Peripheral Component Interconnect)などの一般的なプロトコルを含む。したがって、図6で構成されているように、コンピュータ・システム600は、プロセッサ601の形態での処理能力と、システム・メモリ603およびマス・ストレージ610を含んでいるストレージ能力と、キーボード621およびマウス622などの入力手段と、スピーカ623およびディスプレイ619を含んでいる出力能力とを含む。
【0068】
一部の実施形態では、通信アダプタ607は、特に、インターネット、小型コンピュータ・システム・インターフェイスなどの任意の適切なインターフェイスまたはプロトコルを使用して、データを送信することができる。ネットワーク612は、特に、セルラー・ネットワーク、無線ネットワーク、広域ネットワーク(WAN:wide area network)、ローカル・エリア・ネットワーク(LAN:localarea network)、またはインターネットであってよい。外部コンピューティング・デバイスは、ネットワーク612を介してコンピュータ・システム600に接続し得る。一部の例では、外部コンピューティング・デバイスは、外部Webサーバまたはクラウド・コンピューティング・ノードであってよい。
【0069】
図6のブロック図は、コンピュータ・システム600が図6に示されたコンポーネントのすべてを含むことになるということを示すよう意図されていないということが、理解されるべきである。むしろ、コンピュータ・システム600は、図6に示されていない任意の適切なより少ないコンポーネントまたは追加のコンポーネント(例えば、追加のメモリ・コンポーネント、組み込まれたコントローラ、モジュール、追加のネットワーク・インターフェイスなど)を含むことができる。さらに、コンピュータ・システム600に関して本明細書に記載された実施形態は、任意の適切な論理を使用して実装されてよく、論理は、本明細書で参照されるとき、さまざまな実施形態において、任意の適切なハードウェア(例えば、特に、プロセッサ、組み込みコントローラ、または特定用途向け集積回路)、ソフトウェア(例えば、特に、アプリケーション)、ファームウェア、またはハードウェア、ソフトウェア、およびファームウェアの任意の適切な組み合わせを含むことができる。
【0070】
本明細書では、関連する図面を参照して、本発明のさまざまな実施形態が説明される。本発明の範囲から逸脱することなく、本発明の代替の実施形態が考案され得る。以下の説明および図面において、要素間のさまざまな接続および位置関係(例えば、上、下、隣接など)が示される。それらの接続または位置関係あるいはその両方は、特に規定されない限り、直接的または間接的であることができ、本発明はこの点において限定するよう意図されていない。したがって、各実体の結合は、直接的結合または間接的結合を指すことができ、各実体間の位置関係は、直接的位置関係または間接的位置関係であることができる。さらに、本明細書に記載されたさまざまな作業および工程段階は、本明細書に詳細に記載されない追加の段階または機能を含んでいるさらに包括的な手順または工程に組み込まれ得る。
【0071】
本明細書に記載された方法のうちの1つまたは複数は、データ信号上で論理機能を実装するための論理ゲートを含んでいる個別の論理回路、適切な組み合わせ論理ゲートを含んでいる特定用途向け集積回路(ASIC:application specific integrated circuit)、プログラマブル・ゲート・アレイ(PGA:programmable gate array)、フィールド・プログラマブル・ゲート・アレイ(FPGA:field programmable gate array)などの、それぞれ従来技術においてよく知られている、技術のいずれかまたは組み合わせを使用して実装され得る。
【0072】
簡潔さの目的で、本発明の態様の作成および使用に関連する従来技術は、本明細書に詳細に記載されることもあれば、記載されないこともある。具体的には、本明細書に記載されたさまざまな技術的特徴を実装するためのコンピューティング・システムおよび特定のコンピュータ・プログラムのさまざまな態様は、よく知られている。したがって、簡潔さのために、多くの従来の実装に関する詳細は、本明細書では、既知のシステムまたは工程あるいはその両方の詳細を提供することなく、簡潔にのみ述べられるか、または全体的に省略される。
【0073】
一部の実施形態では、さまざまな機能または動作は、特定の位置で、または1つまたは複数の装置もしくはシステムの動作に関連して、あるいはその両方で行われ得る。一部の実施形態では、特定の機能または動作の一部は、第1のデバイスまたは位置で実行されることが可能であり、機能または動作の残りの部分は、1つまたは複数の追加のデバイスまたは位置で実行され得る。
【0074】
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、制限することを意図していない。本明細書において使用されるとき、単数形「a」、「an」、および「the」は、特に文脈上明示的に示されない限り、複数形も含むことが意図されている。「備える」または「備えている」あるいはその両方の用語は、本明細書で使用される場合、記載された機能、整数、ステップ、動作、要素、またはコンポーネント、あるいはその組み合わせの存在を明示するが、1つまたは複数のその他の機能、整数、ステップ、動作、要素、コンポーネント、またはこれらのグループ、あるいはその組み合わせの存在または追加を除外していないということが、さらに理解されるであろう。
【0075】
下の特許請求におけるすべての手段またはステップおよび機能要素の対応する構造、材料、動作、および等価なものは、具体的に請求されるその他の請求された要素と組み合わせて機能を実行するための任意の構造、材料、または動作を含むことが意図されている。本開示は、例示および説明の目的で提示されているが、網羅的であることは意図されておらず、開示された形態に限定されない。本開示の範囲から逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかである。本開示の原理および実際的な適用を最も適切に説明するため、およびその他の当業者が、企図されている特定の用途に適しているようなさまざまな変更を伴う多様な実施形態に関して、本開示を理解できるようにするために、実施形態が選択されて説明された。
【0076】
本明細書において示された図は、例示である。本開示の思想から逸脱することなく、本明細書に記載された図またはステップ(または動作)の多くの変形が存在することが可能である。例えば、動作は異なる順序で実行されることが可能であり、あるいは動作は追加、削除、または変更されることが可能である。また、「結合される」という用語は、2つの要素間に信号経路が存在することを表しており、それらの要素間に要素/接続が介在しない要素間の直接的接続を意味していない。これらすべての変形は、本開示の一部であると見なされる。
【0077】
以下の定義および略称が、特許請求の範囲および本明細書の解釈に使用される。本明細書において使用されているように、「備える」、「備えている」、「含む」、「含んでいる」、「有する」、「有している」、「含有する」、「含有している」という用語、またはこれらの任意のその他の変形は、非排他的包含をカバーするよう意図されている。例えば、要素のリストを含んでいる組成、混合、工程、方法、製品、または装置は、それらの要素のみに必ずしも限定されず、明示されていないか、またはそのような組成、混合、工程、方法、製品、または装置に固有の、その他の要素を含むことができる。
【0078】
さらに、「例示的」という用語は、本明細書では「例、事例、または実例としての役割を果たす」ことを意味するために使用される。「例示的」として本明細書に記載された実施形態または設計は、必ずしも他の実施形態または設計よりも好ましいか、または有利であると解釈されるべきではない。「少なくとも1つ」および「1つまたは複数」という用語は、1以上の任意の整数(すなわち、1、2、3、4など)を含んでいると理解される。「複数」という用語は、2以上の任意の整数(すなわち、2、3、4、5など)を含んでいると理解される。「接続」という用語は、間接的「接続」および直接的「接続」の両方を含むことができる。
【0079】
「約」、「実質的に」、「近似的に」、およびこれらの変形の用語は、本願書の出願時に使用できる機器に基づいて、特定の量の測定に関連付けられた誤差の程度を含むよう意図されている。例えば、「約」は、特定の値の±8%または5%、あるいは2%の範囲を含むことができる。
【0080】
本発明は、任意の可能な統合の技術的詳細レベルで、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読ストレージ媒体を含んでよい。
【0081】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・フロッピー(R)・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル・バーサタイル・ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、命令が記録されているパンチカードまたは溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を介して伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
【0082】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
【0083】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいは、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードのいずれかであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide areanetwork)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル・ロジック回路、フィールドプログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行し得る。
【0084】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装されるということが理解されるであろう。
【0085】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図のブロックあるいはその両方のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図のブロックあるいはその両方のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
【0086】
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図のブロックあるいはその両方のブロックに指定される機能/動作を実施するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、その他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成するその他のデバイス上で実行させる。
【0087】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表す。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生し得る。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行され得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
【0088】
本発明のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、または開示された実施形態に限られない。説明された実施形態の範囲を逸脱することのない多くの変更および変形が、当業者にとって明らかである。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書に記載された実施形態を理解できるようにするために選択されている。
図1
図2A
図2B
図3
図4
図5
図6
【国際調査報告】