(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-28
(54)【発明の名称】人工知能モデル学習のイントロスペクション
(51)【国際特許分類】
G06N 20/00 20190101AFI20241018BHJP
G06N 3/082 20230101ALI20241018BHJP
【FI】
G06N20/00
G06N3/082
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024519748
(86)(22)【出願日】2022-10-18
(85)【翻訳文提出日】2024-03-29
(86)【国際出願番号】 CN2022125878
(87)【国際公開番号】W WO2023066237
(87)【国際公開日】2023-04-27
(32)【優先日】2021-10-21
(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)【復代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】スネジャ、サヒル
(72)【発明者】
【氏名】ジュアン、ユファン
(72)【発明者】
【氏名】ジェン、ユンフイ
(72)【発明者】
【氏名】モラリ、アレッサンドロ
(72)【発明者】
【氏名】ラレド、ジム アライン
(57)【要約】
AIモデルイントロスペクションに関する技術が提供される。例えば、本明細書に記載の1つ又は複数の実施形態は、コンピュータ実行可能コンポーネントを格納し得るメモリを含むことが可能なシステムを有することができる。システムはまた、メモリに動作可能に結合され、メモリに格納されたコンピュータ実行可能コンポーネントを実行することが可能なプロセッサを備えることができる。コンピュータ実行可能コンポーネントは、コード理解タスクのための人工知能モデルの学習挙動を、異なるコード複雑度分布を有する複数のテストデータサブセットに関して人工知能モデルの出力を比較することにより解析することが可能なモデルイントロスペクションコンポーネントを備えることができる。
【特許請求の範囲】
【請求項1】
コンピュータ実行可能コンポーネントを格納したメモリ;及び
前記メモリに動作可能に結合され、前記メモリに格納された前記コンピュータ実行可能コンポーネントを実行するプロセッサ
を備え、前記コンピュータ実行可能コンポーネントが、
コード理解タスクのための人工知能モデルの学習挙動を、異なるコード複雑度分布を有する複数のテストデータサブセットに関して人工知能モデルの出力を比較することにより解析するモデルイントロスペクションコンポーネントを有する、システム。
【請求項2】
テストデータセットに含まれた複数のコードサンプルについて、コード複雑度メトリックを抽出する抽出コンポーネント;及び
前記人工知能モデルの前記出力を評価する性能メトリックに基づき前記複数のコードサンプルをグループ分けすることにより、前記複数のテストデータサブセットを生成するテストデータサブセットコンポーネント
をさらに備える、請求項1に記載のシステム。
【請求項3】
前記複数のコードサンプルが、ソースコードサンプルである、請求項2に記載のシステム。
【請求項4】
前記コード複雑度メトリックに基づき、前記複数のテストデータサブセット内の前記複数のコードサンプルの分布を判断する分布コンポーネント
をさらに備える、請求項2に記載のシステム。
【請求項5】
前記複数のテストデータサブセットからの第1のテストデータサブセットに関連付けられたコードサンプルの第1の分布を、前記複数のテストデータサブセットからの第2のテストデータサブセットに関連付けられたコードサンプルの第2の分布と比較する比較コンポーネント
をさらに備える、請求項4に記載のシステム。
【請求項6】
コンピュータ実行可能コンポーネントを格納したメモリ;及び
前記メモリに動作可能に結合され、前記メモリに格納された前記コンピュータ実行可能コンポーネントを実行するプロセッサ
を備え、前記コンピュータ実行可能コンポーネントが
コード理解タスクのための人工知能モデルの学習挙動を、異なるコード複雑度分布を有する複数のテストデータサブセットに対する前記人工知能モデルの性能に基づき推論するモデルイントロスペクションコンポーネントを有する、システム。
【請求項7】
テストデータセットに含まれた複数のコードサンプルについて、コード複雑度メトリックを抽出する抽出コンポーネント;及び
前記人工知能モデルの前記性能を評価する性能メトリックに基づき前記複数のコードサンプルをグループ分けすることにより、前記複数のテストデータサブセットを生成するテストデータサブセットコンポーネント
をさらに備える、請求項6に記載のシステム。
【請求項8】
前記複数のコードサンプルが、ソースコードサンプルである、請求項7に記載のシステム。
【請求項9】
前記コード複雑度メトリックに基づき、前記複数のテストデータサブセット内の前記複数のコードサンプルの分布を判断する分布コンポーネント
をさらに備える、請求項7に記載のシステム。
【請求項10】
前記複数のテストデータサブセットからの第1のテストデータサブセットに関連付けられたコードサンプルの第1の分布を、前記複数のテストデータサブセットからの第2のテストデータサブセットに関連付けられたコードサンプルの第2の分布と比較する比較コンポーネント
をさらに備える、請求項9に記載のシステム。
【請求項11】
プロセッサに動作可能に結合されたシステムによって、コード理解タスクのための人工知能モデルの学習挙動を、異なるコード複雑度分布を有する複数のテストデータサブセットに関して人工知能モデルの出力を比較することにより解析する段階
を備える、コンピュータ実装方法。
【請求項12】
テストデータセットに含まれた複数のコードサンプルついて、コード複雑度メトリックを前記システムによって抽出する段階;及び
前記人工知能モデルの前記出力を評価する性能メトリックに基づき前記複数のコードサンプルをグループ分けすることにより、前記複数のテストデータサブセットを前記システムによって生成する段階
をさらに備える、請求項11に記載のコンピュータ実装方法。
【請求項13】
前記複数のコードサンプルが、ソースコードサンプルである、請求項12に記載のコンピュータ実装方法。
【請求項14】
前記コード複雑度メトリックに基づき、前記複数のテストデータサブセット内の前記複数のコードサンプルの分布を、前記システムによって判断する段階
をさらに備える、請求項12に記載のコンピュータ実装方法。
【請求項15】
前記複数のテストデータサブセットからの第1のテストデータサブセットに関連付けられたコードサンプルの第1の分布を、前記複数のテストデータサブセットからの第2のテストデータサブセットに関連付けられたコードサンプルの第2の分布と、前記システムによって比較する段階
をさらに備える、請求項14に記載のコンピュータ実装方法。
【請求項16】
プロセッサに動作可能に結合されたシステムによって、コード理解タスクのための人工知能モデルの学習挙動を、異なるコード複雑度分布を有する複数のテストデータサブセットに対する前記人工知能モデルの性能に基づき推論する段階
を備える、コンピュータ実装方法。
【請求項17】
テストデータセットに含まれた複数のコードサンプルついて、コード複雑度メトリックを前記システムによって抽出する段階;及び
前記人工知能モデルの前記性能を評価する性能メトリックに基づき前記複数のコードサンプルをグループ分けすることにより、前記複数のテストデータサブセットを前記システムによって生成する段階
をさらに備える、請求項16に記載のコンピュータ実装方法。
【請求項18】
前記複数のコードサンプルが、ソースコードサンプルである、請求項17に記載のコンピュータ実装方法。
【請求項19】
前記コード複雑度メトリックに基づき、前記複数のテストデータサブセット内の前記複数のコードサンプルの分布を、前記システムによって判断する段階
をさらに備える、請求項17に記載のコンピュータ実装方法。
【請求項20】
前記複数のテストデータサブセットからの第1のテストデータサブセットに関連付けられたコードサンプルの第1の分布を、前記複数のテストデータサブセットからの第2のテストデータサブセットに関連付けられたコードサンプルの第2の分布と、前記システムによって比較する段階
をさらに備える、請求項19に記載のコンピュータ実装方法。
【請求項21】
コード複雑度駆動型のモデルイントロスペクションのためのコンピュータプログラム製品であって、前記コンピュータプログラム製品は、それにより具現化されるプログラム命令を有するコンピュータ可読記憶媒体を備え、前記プログラム命令は、プロセッサに
コード理解タスクのための人工知能モデルの学習挙動を、異なるコード複雑度分布を有する複数のテストデータサブセットに関して人工知能モデルの出力を比較することにより、前記プロセッサによって解析させる
ように、前記プロセッサによって実行可能である、コンピュータプログラム製品。
【請求項22】
前記プログラム命令は、前記プロセッサにさらに、
テストデータセットに含まれた複数のコードサンプルついて、コード複雑度メトリックを前記プロセッサによって抽出させ;
前記人工知能モデルの前記出力を評価する性能メトリックに基づき前記複数のコードサンプルをグループ分けすることにより、前記複数のテストデータサブセットを前記プロセッサによって生成させる
請求項21に記載のコンピュータプログラム製品。
【請求項23】
前記複数のコードサンプルが、ソースコードサンプルである、請求項22に記載のコンピュータプログラム製品。
【請求項24】
前記プログラム命令は、前記プロセッサにさらに、
前記コード複雑度メトリックに基づき、前記複数のテストデータサブセット内の前記複数のコードサンプルの分布を、前記プロセッサによって判断させる、請求項23に記載のコンピュータプログラム製品。
【請求項25】
前記プログラム命令は、前記プロセッサにさらに、
前記複数のテストデータサブセットからの第1のテストデータサブセットに関連付けられたコードサンプルの第1の分布を、前記複数のテストデータサブセットからの第2のテストデータサブセットに関連付けられたコードサンプルの第2の分布と、前記プロセッサによって比較させる、請求項24に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、人工知能モデルの学習挙動のイントロスペクション、及びより具体的には、訓練済み人工知能(「AI」)モデルの出力を、異なるコード複雑度のサンプルを有するテストデータと比較することにより、そのAIモデルの学習挙動を解析することに関する。
【0002】
AIモデルは、様々なソースコード理解タスク、例えば、欠陥検出、コード要約、コード完了、バグ修正、関数及び変数のネーミング、コード推奨、ソフトウェア開発ワークフローなどにおいて利用される。しかしながら、ソースコード理解タスクのためにAIモデルを訓練することは、データ重複バイアス、ラベリング品質、低ロバストネス及び/又は汎化、(例えば、データセットサイズの制限に起因する)モデルの過剰適合、(例えば、異なるクラスに属するサンプル計数同士のミスマッチに起因する)クラスの不均衡などを含め、様々な信頼性の懸念に直面することがある。例えば、AIモデルの性能品質は、ソースコードのタスク関連の側面をモデルが学習しているかどうかによって影響されることがある。さらに、AIモデルの学習挙動の理解は、典型的には、モデルのソフトウェアアーキテクチャを解析することに焦点を当てることがある。そうして、典型的な手法は、モデルの内部動作へのアクセス、及び/又はモデルの内部動作の深い主題知識を必要とすることがある。さらに、典型的なイントロスペクションの手法は、AIモデルの学習挙動における信号認識の解析を無視することがある。また、既存のモデル性能メトリックは、AIモデルが訓練される基となるデータセットの側面を考慮することを無視することがある。
【発明の概要】
【0003】
以下では、本発明の1つ又は複数の実施形態の基本的な理解を提供するために概要が提示される。この概要は、重要な又は必須の要素を特定すること、又は特定の実施形態のいかなる範囲又は特許請求の範囲のいかなる範囲も定めることを意図するものではない。その唯一の目的は、後に提示されるより詳細な説明への前置きとして簡略化された形態で概念を提示することである。本明細書に記載の1つ又は複数の実施形態において、AIモデルの学習挙動に関する1つ又は複数のインサイトを推論することができるシステム、コンピュータ実装方法、装置、及び/又はコンピュータプログラム製品が説明される。
【0004】
一実施形態によれば、システムが提供される。システムは、コンピュータ実行可能コンポーネントを格納することができるメモリを備えることができる。システムは、メモリに動作可能に結合され、メモリに格納されたコンピュータ実行可能コンポーネントを実行するプロセッサも備えることができる。コンピュータ実行可能コンポーネントは、コード理解タスクのための人工知能モデルの学習挙動を、異なるコード複雑度分布を有する複数のテストデータサブセットに関して人工知能モデルの出力を比較することにより解析することが可能なモデルイントロスペクションコンポーネントを備えることができる。そのようなシステムの利点は、AIモデルによって解析されるサンプルのコード複雑度が、AIモデルの性能にどのように影響し得るかを特定することであり得る。
【0005】
いくつかの例において、システムは、テストデータセットに含まれた複数のコードサンプルのコード複雑度メトリックを抽出することが可能な抽出コンポーネントも備えることができる。そのようなシステムの利点は、サンプルにおいてコード複雑度の1つ又は複数の側面を特徴付けるために、様々なコード複雑度メトリックを用いることであり得る。
【0006】
別の実施形態によれば、システムが提供される。システムは、コンピュータ実行可能コンポーネントを格納することができるメモリを備えることができる。システムは、メモリに動作可能に結合され、メモリに格納されたコンピュータ実行可能コンポーネントを実行するプロセッサも備えることができる。コンピュータ実行可能コンポーネントは、コード理解タスクのための人工知能モデルの学習挙動を、異なるコード複雑度分布を有する複数のテストデータサブセットに対する人工知能モデルの性能に基づき推論することが可能なモデルイントロスペクションコンポーネントを備えることができる。そのようなシステムの利点は、データセット駆動型の観点で、AIモデルをイントロスペクトできることであり得る。
【0007】
いくつかの例において、システムは、前記人工知能モデルの前記性能を評価する性能メトリックに基づき複数のコードサンプルをグループ分けすることにより、前記複数のテストデータサブセットを生成することが可能なテストデータサブセットコンポーネントも備えることができる。そのようなシステムの利点は、1つ又は複数の標的とする性能メトリックに基づく、AIモデルイントロスペクションの調整とすることができる。
【0008】
一実施形態によれば、コンピュータ実装方法が提供される。
コンピュータ実装方法は、プロセッサに動作可能に結合されたシステムによって、コード理解タスクのための人工知能モデルの学習挙動を、異なるコード複雑度分布を有する複数のテストデータサブセットに関して人工知能モデルの出力を比較することにより解析する段階を備えることができる。そのようなコンピュータ実装方法の利点は、AIモデルが訓練中にタスク関連信号を学習したかどうかの解析とすることができる。
【0009】
いくつかの例において、コンピュータ実装方法は、コード複雑度メトリックに基づき、複数のテストデータサブセット内の複数のコードサンプルの分布を、前記システムによって判断する段階を備えることができる。そのようなコンピュータ実装方法の利点は、AIモデルの複数の性能結果にわたるコード複雑度に関するサンプル母集団の解析とすることができる。
【0010】
別の実施形態によれば、コンピュータ実装方法が提供される。コンピュータ実装方法は、プロセッサに動作可能に結合されたシステムによって、コード理解タスクのための人工知能モデルの学習挙動を、異なるコード複雑度分布を有する複数のテストデータサブセットに対する前記人工知能モデルの性能に基づき推論する段階を備えることができる。そのようなコンピュータ実装方法の利点は、例えば、学習済みモデル論理の解読、モデル進化の促進、モデル設計空間の評価、及び/又はデータセットセグメント化に関するインサイトの発展とすることができる。
【0011】
いくつかの例において、コンピュータ実装方法は、複数のテストデータサブセットからの第1のテストデータサブセットに関連付けられたコードサンプルの第1の分布を、複数のテストデータサブセットからの第2のテストデータサブセットに関連付けられたコードサンプルの第2の分布と、前記システムによって比較する段階を備えることができる。そのようなコンピュータ実装方法の利点は、テストデータサブセット間でサンプルの分布に影響し得るサンプル側面の特定とすることができ、ここでそれぞれのテストデータサブセットは、定義されたAIモデル性能条件に関連付けられることが可能である。
【0012】
一実施形態によれば、コード複雑度駆動型のモデルイントロスペクションのためのコンピュータプログラム製品が提供される。コンピュータプログラム製品は、具現化されるプログラム命令を有するコンピュータ可読記憶媒体を含み得る。前記プログラム命令は、プロセッサに
コード理解タスクのための人工知能モデルの学習挙動を、異なるコード複雑度分布を有する複数のテストデータサブセットに関して人工知能モデルの出力を比較することにより、前記プロセッサによって解析させるように、前記プロセッサによって実行可能であり得る。そのようなコンピュータプログラム製品の利点は、AIモデルのタイプ及び/又はソースコード理解タスクに依存しないイントロスペクション手法とすることができる。
【0013】
いくつかの例において、前記プログラム命令は、前記プロセッサにさらに、テストデータセットに含まれた複数のコードサンプルついて、コード複雑度メトリックを前記プロセッサによって抽出させることができる。また、前記プログラム命令は、前記プロセッサにさらに、前記人工知能モデルの前記出力を評価する性能メトリックに基づき前記複数のコードサンプルをグループ分けすることにより、前記複数のテストデータサブセットを前記プロセッサによって生成させることができる。さらに、前記プログラム命令は、前記プロセッサにさらに、前記コード複雑度メトリックに基づき、前記複数のテストデータサブセット内の前記複数のコードサンプルの分布を、前記プロセッサによって判断させることができる。また、前記プログラム命令は、前記プロセッサにさらに、前記複数のテストデータサブセットからの第1のテストデータサブセットに関連付けられたコードサンプルの第1の分布を、前記複数のテストデータサブセットからの第2のテストデータサブセットに関連付けられたコードサンプルの第2の分布と、前記プロセッサによって比較させることができる。そのようなコンピュータプログラム製品の利点は、サンプルを予測正解率によりグループ分けして、AIモデルによって容易に理解可能なコードの側面に関してAIモデルの学習挙動を判断するための、コード複雑度メトリックの使用とすることができる。
【図面の簡単な説明】
【0014】
【
図1】本明細書に記載の1つ又は複数の実施形態による1つ又は複数のAIモデルの学習挙動をイントロスペクトすることが可能な、例示的な非限定的システムのブロック図を示す。
【0015】
【
図2】本明細書に記載の1つ又は複数の実施形態による、異なるコード複雑度を有する1つ又は複数のテストデータセットを生成することが可能な、例示的な非限定的システムのブロック図を示す。
【0016】
【
図3】本明細書に記載の1つ又は複数の実施形態による、1つ又は複数のコード複雑度メトリックに関する、テストデータサブセット内のソースコードサンプルの分布を判断することが可能な、例示的な非限定的システムのブロック図を示す。
【0017】
【
図4】本明細書に記載の1つ又は複数の実施形態による、テストデータのコード複雑度及びAIモデル予測の正解率の1つ又は複数の関係を実証することが可能な、例示的な非限定的グラフの図を示す。
【0018】
【
図5】本明細書に記載の1つ又は複数の実施形態による、ソースコードサンプルの分布を有するテストデータサブセットを、異なる量及び/又はタイプのコード複雑度と比較及び/又は対比することが可能な、例示的な非限定的システムのブロック図を示す。
【0019】
【
図6】本明細書に記載の1つ又は複数の実施形態による、1つ又は複数の訓練済みAIモデルの学習挙動に関する1つ又は複数のインサイトを推論するために実装されることが可能な、例示的な非限定的イントロスペクションスキームの図を示す。
【0020】
【
図7】本明細書に記載の1つ又は複数の実施形態による、システム、コンピュータ実装方法、及び/又はコンピュータプログラム製品が、訓練済みAIモデルの学習挙動に関する1つ又は複数のインサイトを、複数のテストデータサブセットからどのように推論できるかを実証することが可能な、例示的な非限定的グラフチェーンの図を示す。
【0021】
【
図8】本明細書に記載の1つ又は複数の実施形態による、訓練済みAIモデルの学習挙動及び/又は訓練の進化を解析するために、訓練済みAIモデルをイントロスペクトすることを容易にすることが可能な、例示的な非限定的コンピュータ実装方法のフロー図を示す。
【0022】
【
図9】本明細書に記載の1つ又は複数の実施形態による、訓練済みAIモデルの学習挙動及び/又は訓練の進化を解析するために、訓練済みAIモデルをイントロスペクトすることを容易にすることが可能な、例示的な非限定的コンピュータ実装方法のフロー図を示す。
【0023】
【
図10】本明細書に記載の1つ又は複数の実施形態による、クラウドコンピューティング環境を示す。
【0024】
【
図11】本明細書に記載の1つ又は複数の実施形態による、抽象化モデル層を示す。
【0025】
【
図12】本明細書に記載の1つ又は複数の実施形態を容易にすることが可能な、例示的な非限定的動作環境のブロック図を示す。
【発明を実施するための形態】
【0026】
以下の詳細な説明は、例示に過ぎず、実施形態、もしくは実施形態の応用形態もしくは使用、又はその組み合わせを限定することを意図するものではない。さらに、上記の背景技術セクション又は発明の概要セクション、又は発明を実施するための形態セクションにおいて提示されるいかなる表現又は示唆された情報によって制約されることも意図するものではない。
【0027】
ここで、1つ又は複数の実施形態が、図面を参照して説明されるが、図面において、同様の参照符号は、全体を通して同様の要素を指すために使用される。以下の説明では、説明の目的で、多くの特定の詳細が、1つ又は複数の実施形態のより完全な理解を提供すべく記載される。しかしながら、様々な場合では、1つ又は複数の実施形態は、これらの特定の詳細なしに実施され得ることが明らかである。
【0028】
訓練済みAIモデルのイントロスペクションの他の実装形態による問題を考慮し、本開示は、コード複雑度に基づく手法を介して、1つ又は複数のAIモデル学習挙動のイントロスペクションを可能にすることにより、これらの問題のうちの1つ又は複数に対する解決手段を作り出すために実装されることが可能である。有利には、本明細書に記載の1つ又は複数の実施形態は、データセットの観点から、訓練済みAIモデルの学習挙動をイントロスペクトして、統計的な品質測定にまさるインサイトを提供することができる。さらに、本明細書に記載の様々なイントロスペクション技術は、AIモデルのタイプ及び/又はソース理解タスクに依存しないことが可能である。
【0029】
本発明の様々な実施形態は、効率的、効果的、及び自律的な(例えば、直接的な人間の指導なしに)、1つ又は複数の訓練済みAIモデルのイントロスペクションを容易にするコンピュータ処理システム、コンピュータ実装方法、装置、及び/又はコンピュータプログラム製品を対象とすることができる。例えば、本明細書に記載の1つ又は複数の実施形態は、1つ又は複数のコードメトリック、例えば1つ又は複数のコード複雑度メトリックに基づき、訓練済みAIモデルの進化に関する1つ又は複数のインサイトを判断することができる。例えば、1つ又は複数の実施形態は、予測正解率などの性能メトリックによりグループ化されたテストデータサブセット間で、コードメトリック分布を比較することにより、1つ又は複数の訓練済みAIモデルの学習挙動インサイトを推論することができる。本明細書に記載の様々な実施形態を介して判断されることが可能なインサイトは、例えば、データセットセグメント化、学習モデル論理の解読、AIモデルの信号認識、訓練中のAIモデルの進化、及び/又はAIモデル設計空間の評価に関し得る。例えば、本明細書に記載の1つ又は複数の実施形態は、訓練済みAIモデルが正しく予測したテストデータサンプルの共通の特性と、AIモデルが誤って予測したテストデータサンプルの特性とを比較して、AIモデルが良好に学習したソースコードサンプルの側面と、改善学習の標的となり得る側面とを判断することができる。
【0030】
本明細書に記載の様々な実施形態は、ソースコード理解タスクに関して例示されている;しかしながら、アーキテクチャはそのように限定されない。例えば、本明細書に記載の1つ又は複数の実施形態は、コード理解を含む機械学習タスクを概して実行するために利用されるAIモデルを、イントロスペクトすることができる。さらに、本明細書に記載の様々な実施形態は、テストデータとしてのソースコードサンプルの使用に関して例示される;しかしながら、アーキテクチャはそのように限定されない。例えば、本明細書に記載の1つ又は複数の実施形態は、訓練済みAIモデルのイントロスペクションにおいて、バイナリコードサンプル及び/又はアセンブリコードサンプルをテストデータとして利用することができる。
【0031】
コンピュータ処理システム、コンピュータ実装方法、装置、及び/又はコンピュータプログラム製品は、高度に技術的な性質の、抽象的ではなく人間による精神活動のセットとして実行され得ない問題(例えば、1つ又は複数のAIモデルのイントロスペクション)を解決するために、ハードウェア及び/又はソフトウェアを利用する。例えば、個人又は複数の個人は、異なるコード複雑度のサンプル分布を有するテストデータサブセットの比較に基づき、訓練によるAIモデルの進化に関するインサイトを推論することはできない。また、本明細書に記載の1つ又は複数の実施形態は、実行すべき機械学習タスクに関連する信号を訓練済みAIモデルが学習したかどうかに対する1つ又は複数のインサイトを推論することにより、従来のAIモデルイントロスペクションにまさる技術的改善点を構成することができる。さらに、本明細書に記載の様々な実施形態は、1つ又は複数の訓練バリエーションが、訓練済みAIモデルの学習挙動にどのように影響を及ぼし得るかを特定することにより、従来のAIモデルイントロスペクションにまさる技術的改善点を実証することができる。
【0032】
さらに、本明細書に記載の1つ又は複数の実施形態は、1つ又は複数のAIモデルにとって、サンプルを正確に予測しやすいもの、又は正確に予測しにくいものにする訓練データサンプルの1つ又は複数の特性を特定することにより、実用的な応用形態を有することができる。別の例において、本明細書に記載の様々な実施形態は、コードサンプルのどの側面が訓練済みAIモデルによって学習されているか、又は無視されているかを解読することができる。さらに、本明細書に記載の1つ又は複数の実施形態は、1つ又は複数のAIモデルの誤予測に共通し得る1つ又は複数のサンプル特性(例えばコードの側面)を標的とすることにより、実用的な応用形態を有することができる。本明細書に記載の1つ又は複数の実施形態は、AIモデル理解の改善を追跡し、及び/又は本明細書に記載の例示的なインサイトのうちの1つ又は複数を導き出すために、複数のハイパーパラメータチューニング反復を制御することができる。
【0033】
図1は、1つ又は複数の訓練済みAIモデル124の学習挙動を解析することが可能な、例示的な非限定的システム100のブロック図を示す。本明細書に記載の他の実施形態において利用される同様の要素の繰り返しの説明は、簡潔性のために省略される。本発明の様々な実施形態におけるシステム(例えば、システム100など)、装置、又はプロセスの態様は、1つ又は複数の機械内で具現化された、例えば、1つ又は複数の機械と関連付けられた1つ又は複数のコンピュータ可読媒体において具現化された、1つ又は複数の機械実行可能コンポーネントを構成し得る。1つ又は複数の機械(例えば、コンピュータ、コンピューティングデバイス、仮想機械、これらの組み合わせなど)によって実行されると、そのようなコンポーネントは、説明される動作を機械に実行させることができる。
【0034】
図1に示してあるように、システム100は、1つ又は複数のサーバ102、1つ又は複数のネットワーク104、及び/又は1つ又は複数の入力デバイス106を備えることができる。サーバ102は、モデルイントロスペクションコンポーネント110を備えることができる。モデルイントロスペクションコンポーネント110は、通信コンポーネント112及び/又は抽出コンポーネント114をさらに備えることができる。また、サーバ102は、少なくとも1つのメモリ116を備えることが可能であるか、又は別様に関連付けられることが可能である。サーバ102は、モデルイントロスペクションコンポーネント110、及び関連コンポーネント、メモリ116、及び/又はプロセッサ120などであるが、これらに限定されない様々なコンポーネントに結合可能なシステムバス118をさらに備えることができる。
図1においてはサーバ102が示されているが、他の実施形態においては、様々なタイプの複数のデバイスが、
図1において示されている特徴に関連付けられるか、又はその特徴を含むことが可能である。さらに、サーバ102は、1つ又は複数のクラウドコンピューティング環境と通信することができる。
【0035】
1つ又は複数のネットワーク104は、限定されるものではないが、セルラネットワーク、ワイドエリアネットワーク(WAN)(例えば、インターネット)、又はローカルエリアネットワーク(LAN)を含む有線及び無線ネットワークを備えることができる。例えば、サーバ102は、限定されるものではないが、例えばセルラ、WAN、ワイヤレスフィデリティ(Wi-Fi(登録商標))、Wi-Max、WLAN、Bluetooth(登録商標)技術、及び/又はこれらの組み合わせなどを含む任意の所望の有線又は無線技術を仮想的に使用して、1つ又は複数の入力デバイス106と通信することができる(逆の場合も同じ)。さらに、示してある実施形態では、モデルイントロスペクションコンポーネント110は1つ又は複数のサーバ102上に提供され得るが、システム100のアーキテクチャはそのように限定されないことが理解されるべきである。例えば、モデルイントロスペクションコンポーネント110、又はモデルイントロスペクションコンポーネント110の1つ又は複数のコンポーネントは、別のコンピュータデバイス、例えば別のサーバデバイス、及び/又はクライアントデバイスなどに位置付けられることが可能である。
【0036】
1つ又は複数の入力デバイス106は、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、携帯電話(例えば、スマートフォン)、(例えば、プロセッサを含む)コンピュータ化されたタブレット、スマートウォッチ、キーボード、タッチスクリーン、マウス、及び/又はこれらの組み合わせなどを含むことができるが、これらに限定されるものではない1つ又は複数のコンピュータ化されたデバイスを含むことができる。1つ又は複数の入力デバイス106は、1つ又は複数のテストデータセット122、及び/又は訓練済みAIモデル124をシステム100に入力するために利用されることが可能であり、それにより上記データを(例えば直接接続を介して、及び/又は1つ又は複数のネットワーク104を介して)サーバ102と共有することができる。例えば、1つ又は複数の入力デバイス106は、データを(例えば、直接接続を介して及び/又は1つ又は複数のネットワーク104を介して)通信コンポーネント112に送信することができる。さらに、1つ又は複数の入力デバイス106は、システム100によって生成された1つ又は複数の出力をユーザに提示することが可能な1つ又は複数のディスプレイを備えることができる。例えば、1つ又は複数のディスプレイは、ブラウン管ディスプレイ(「CRT」)、発光ダイオードディスプレイ(「LED」)、電子発光ディスプレイ(「ELD」)、プラズマディスプレイパネル(「PDP」)、液晶ディスプレイ(「LCD」)、有機発光ダイオードディスプレイ(「OLED」)、及び/又はこれらの組み合わせなどを含むことができるが、これらに限定されるものではない。
【0037】
様々な実施形態において、1つ又は複数の入力デバイス106及び/又は1つ又は複数のネットワーク104は、1つ又は複数の設定及び/又はコマンドをシステム100に入力するために利用されることが可能である。例えば、本明細書に記載の様々な実施形態において、1つ又は複数の入力デバイス106は、サーバ102及び/又は関連コンポーネントを動作及び/又は操作するために利用されることが可能である。さらに、1つ又は複数の入力デバイス106は、サーバ102及び/又は関連コンポーネントによって生成された1つ又は複数の出力(例えば、ディスプレイ、データ、視覚化など)を表示するために利用されることが可能である。さらに、1つ又は複数の実施形態において、1つ又は複数の入力デバイス106は、クラウドコンピューティング環境内に備えられることが可能であり、及び/又はそのクラウドコンピューティング環境に動作可能に結合されることが可能である。
【0038】
例えば、1つ又は複数の実施形態において、1つ又は複数のテストデータセット122をシステム100に入力するために1つ又は複数の入力デバイス106が利用されることが可能であり、その1つ又は複数のテストデータセット122は、1つ又は複数のメモリ116に格納されることが可能である。さらに、モデルイントロスペクションコンポーネント110は、(例えば1つ又は複数のコード理解タスクのための)1つ又は複数の訓練済みAIモデル124の学習挙動に関する1つ又は複数のインサイトを判断するために、1つ又は複数のテストデータセット122を用いることができる。1つ又は複数の実施形態において、1つ又は複数のテストデータセット122は、ソースコードサンプル126などの1つ又は複数のコードサンプルを備えることができる。さらに、1つ又は複数のテストデータセット122は、バイナリコードサンプル及び/又はアセンブリコードサンプルなど、他のタイプのコードサンプルを備えることができる。さらに、テストデータセット122の1つ又は複数のサンプル(例えば、ソースコードサンプル126)は、例えば、元のコードデータセットから拡張されたサンプル、ランク付けされたサンプル、ランダム化されたサンプル、及び/又はそれらの組み合わせなどを含むことができる。
【0039】
1つ又は複数の実施形態において、1つ又は複数の入力デバイス106は、1つ又は複数の訓練済みAIモデル124をシステム100に入力するためも利用されることが可能であり、それらの訓練済みAIモデル124は、1つ又は複数のメモリ116に格納され、及び/又はモデルイントロスペクションコンポーネント110によって解析されることが可能である。さらに、様々な実施形態において、1つ又は複数の入力デバイス106は、訓練済みAIモデル124イントロスペクションの1つ又は複数の設定及び/又はパラメータを定義するために利用されることが可能である。例えば、1つ又は複数の入力デバイス106は、本明細書に記載の1つ又は複数の実施形態による1つ又は複数のコード複雑度メトリックを定義するために利用されることが可能である。様々な実施形態において、通信コンポーネント112は、(例えば1つ又は複数の入力デバイス106を介してシステム100に入力された)1つ又は複数の入力を、本明細書に記載の1つ又は複数の実施形態によるモデルイントロスペクションコンポーネント110の関連コンポーネントと共有することができる。
【0040】
様々な実施形態において、1つ又は複数の訓練済みAIモデル124は、1つ又は複数の機械学習タスク(例えば、ソースコード理解タスクなどのコード理解タスク)を容易にするために使用されることが可能である。1つ又は複数の実施形態において、訓練済みAIモデル124は、ニューロンの抽象バージョンに似ていることがある多数の相互接続された処理ユニットをシミュレートすることができる。例えば、処理ユニットは、(例えば、当技術分野内では一般的に「重み」と呼ばれ得る)異なる接続強さで接続された複数の層(例えば、1つ又は複数の入力層、1つ又は複数の隠れ層、及び/又は1つ又は複数の出力層)に配置されることが可能である。訓練済みAIモデル124は、1つ又は複数の訓練スキームを通して学習することができ、既知の結果を有するデータがコンピュータモデルに入力され、そのデータに関する出力が、既知の結果と比較され、及び/又はその比較に基づき、既知の結果を複製するようにコンピュータモデルの重みが自律的に調整される。モデルが訓練されるにつれ、コンピュータモデルはどんどん正確になることができる;そうして、訓練済みAIモデル124は、訓練データから学習したレッスンに基づき、未知の結果を有するデータを正確に解析して、1つ又は複数の機械学習タスクを容易にすることができる。例示的な訓練済みAIモデル124は、限定されるものではないが、パーセプトロン(「perceptron:P」)、フィードフォワード(「feed forward:FF」)、放射基底ネットワーク(「radial basis network:RBF」)、ディープフィードフォワード(「deep feed forward:DFF」)、再帰型ニューラルネットワーク(「recurrent neural network:RNN」)、長短期記憶ネットワーク(「long/short term memory:LSTM」)、ゲート付き再帰ユニット(「gated recurrent unit:GRU」)、オートエンコーダ(「auto encoder:AE」)、変分AE(「variational AE:VAE」)、デノイジングAE(「denoising AE:DAE」)、スパースAE(「sparse AE:SAE」)、マルコフ連鎖(「markov chain:MC」)、ホップフィールドネットワーク(「Hopfield network:HN」)、ボルツマンマシン(「Boltzmann machine:BM」)、ディープビリーフネットワーク(「deep belief network:DBN」)、ディープ畳み込みネットワーク(「deep convolutional network:DCN」)、逆畳み込みネットワーク(「deconvolutional network:DN」)、ディープ畳み込み逆グラフィックスネットワーク(「deep convolutional inverse graphics network:DCIGN」)、敵対的生成ネットワーク(「generative adversarial network:GAN」)、液状状態マシン(「liquid state machine:LSM」)、極端学習マシン(「extreme learning machine:ELM」)、エコーステートネットワーク(「echo state network:ESN」)、ディープ残差ネットワーク(「deep residual network:DRN」)、コーホーネンネットワーク(「kohonen network:KN」)、サポートベクターマシン(「support vector machine:SVM」)、及び/又はニューラルチューリングマシン(「neural turing machine:NTM」)を含むことができる。さらに、本明細書に記載の様々な実施形態は、クラシカルな機械学習モデルにも適用可能である。
【0041】
1つ又は複数の実施形態において、モデルイントロスペクションコンポーネント110は、1つ又は複数のテストデータセット122を利用して、1つ又は複数の性能メトリックに関するコード特性を(例えば正しく及び誤って予測されたソースコードサンプル126にわたって)比較することにより、1つ又は複数の訓練済みAIモデル124の学習挙動に関する1つ又は複数のインサイトを推論することができる。1つ又は複数のコード特性を特徴付けることが可能な例示的なメトリックは、コード複雑度メトリック128を含むことができる。本明細書において言及されるとき、「コード複雑度」という用語は、所与のコンピュータアプリケーションソースコードに固有の複雑度を指すことができる。コード複雑度は、コンピュータソフトウェアの効率に影響を及ぼし得る。例えば、コード複雑度が増大するにつれ、ソースコードサンプルが欠陥を含む確率も増大し得る。さらに、コード複雑度は、1つ又は複数のコード複雑度メトリック128によって特徴付け及び/又は数値化されることが可能である。
【0042】
様々な実施形態において、抽出コンポーネント114は、1つ又は複数のテストデータセット122の1つ又は複数の訓練データセット122から(例えば、ソースコードサンプル126から)、1つ又は複数のコード複雑度メトリック128を抽出することができる。1つ又は複数の実施形態において、コード複雑度は、1つ又は複数のコード複雑度メトリック128、及び/又は複数のコード複雑度メトリック128の関数を介して、サイクロマティック複雑度及び/又はハルステッド複雑度に関して測定されることが可能である。例えば、1つ又は複数のコード複雑度メトリック128は、限定されるものではないが、サイクロマティック複雑度メトリック、ソースコードの行数(「source lines of code:SLOC」)(例えば、ソースコード及び/又は実行可能コードの行数)、ハルステッドボリューム、保守容易性指数、結合/継承の深さ、認知的複雑度、手直し率、プログラムボリューム、プログラムの難しさの計算(例えば、ソースコードを記述又は理解する難しさ)、労力計算(例えば、コーディング時間の程度)、プログラム長さの程度、プログラム語彙の程度、クラスの数、コメント行の数、コメント行の密度、ディレクトリの数、ファイルの数、関数の数、ビュー内のプロジェクトの数、文の数、及び/又はこれらの組み合わせなどの程度とすることができる。1つ又は複数の実施形態において、1つ又は複数のコード複雑度メトリック128は、1つ又は複数のテストデータサンプル(例えば、ソースコードサンプル126)に含まれた1つ又は複数の意味的アーチファクトの関数とすることができる。アーチファクトの例は、限定されるものではないが、決定点、if条件、反復ループ、線形独立パスの数、所与のソースコードを修正するコミットの数、所与のソースコードに寄与する開発者の数、所与のソースコードに関連付けられた会話の数、及び/又はこれらの組み合わせなどを含むことができる。例えば、コード複雑度は、ソースコードサンプル126を通るパスの数に基づいて計算されることが可能である。関数の制御フローが分裂する場合、コード複雑度は増大し得る(例えば、複雑度カウンタが、分裂ごとにインクリメンタルに増大し得る)。
【0043】
様々な実施形態において、抽出コンポーネント114は、1つ又は複数のテストデータセット122に含まれたそれぞれのサンプル(例えば、ソースコードサンプル126)を解析し、サンプル(例えば、ソースコードサンプル126)から1つ又は複数のコード複雑度メトリック128を抽出して、サンプル(例えば、ソースコードサンプル126)のコード複雑度を判断することができる。例えば、抽出コンポーネント114は、ソースコードサンプル126のそれぞれから1つのタイプのコード複雑度メトリック128を抽出して、ソースコードサンプル126のコード複雑度を特徴付けることができる。別の例において、抽出コンポーネント114は、それぞれのソースコードサンプル126から複数のタイプのコード複雑度メトリック128を抽出して(例えば、ソースコードサンプル126当たり2つ又はそれより多くのコード複雑度メトリック128を抽出して)、ソースコードサンプル126のコード複雑度を特徴付けることができる。様々な実施形態において、抽出コンポーネント114は、ソースコードサンプル126から抽出された複数のコード複雑度メトリック128の関数として、ソースコードサンプル126のコード複雑度を特徴付けることができる。
【0044】
1つ又は複数のコード複雑度メトリック128を抽出するために抽出コンポーネント114によって利用される抽出方法は、抽出されるコード複雑度メトリック128に応じて異なることがある。例えば、抽出コンポーネント114は、1つ又は複数のコード複雑度メトリック128を抽出するために、Frama-Cを利用することができる。例えば、1つ又は複数のコード複雑度メトリック128は、ソースコードサンプル126の1つ又は複数の関連アーチファクトをカウントする(例えば、コードの行数をカウントする)ことにより、抽出されることが可能である。別の事例において、抽出コンポーネント114は、限定されるものではないが、サイクロマティック複雑度アナライザ(例えば、Lizardアナライザツール)、McCabe複雑度アナライザ(例えば、mccabeアナライザツール)、pycodequalアナライザツール、xenonアナライザツール、cyclocompアナライザツール、saikuroアナライザツール、cmetricsアナライザ、cscoutアナライザツール、及び/又はこれらの組み合わせなどを含む1つ又は複数のアナライザツールを利用して、1つ又は複数のコード複雑度メトリック128を抽出することができる。
【0045】
1つ又は複数の実施形態において、抽出コンポーネント114は、1つ又は複数の抽出されたコード複雑度メトリック128を、1つ又は複数の複雑度データベース130内の関連ソースコードサンプル126の識別情報とともに、1つ又は複数のメモリ116に格納することができる。例えば、1つ又は複数の複雑度データベース130は、解析されたソースコードサンプル126、及び解析されたそれぞれのソースコードサンプル126に関連付けられた、抽出されたコード複雑度メトリック128を列挙した1つ又は複数のチャート、表、及び/又はログなどを備えることができる。
【0046】
図2は、本明細書に記載の1つ又は複数の実施形態による、テストデータサブセットコンポーネント202をさらに備える例示的な非限定的システム100の図を示す。本明細書に記載の他の実施形態において利用される同様の要素の繰り返しの説明は、簡潔性のために省略される。1つ又は複数の実施形態において、モデルイントロスペクションコンポーネント110は、1つ又は複数の訓練済みAIモデル124上で、(例えば1つ又は複数の入力デバイス106を介して定義された)1つ又は複数のソースコード理解タスクを実行することができる。それにより、1つ又は複数の訓練済みAIモデル124は、ソースコード理解タスクを完了する際に、1つ又は複数の出力(例えば、予測)を生成することができる。1つ又は複数の実施形態において、訓練済みAIモデル124の出力は、1つ又は複数の入力デバイス106を介してシステム100に入力されることが可能である。
【0047】
様々な実施形態において、テストデータサブセットコンポーネント202は、訓練済みAIモデル124の1つ又は複数の出力を、例えば正解率、適合率、及び/又は再現率などの1つ又は複数の性能メトリックに関して解析することができる。例えば、テストデータサブセットコンポーネント202は、定義されたソースコード理解タスクを1つ又は複数のテストデータセット122に対して実行する際に、訓練済みAIモデル124によって生成された1つ又は複数の予測の正解率を判断することができる。例えば、それぞれのソースコードサンプル126に関連付けられた正しい出力(例えば予測)が、テストデータサブセットコンポーネント202にとって既知であることが可能であり(例えば1つ又は複数の入力デバイス106を介してシステム100に入力されることが可能であり)、ここでテストデータサブセットコンポーネント202は、既知の正しい出力を、訓練済みAIモデル124の出力と比較して、訓練済みAIモデル124の正解率をテストすることができる。
【0048】
さらに、テストデータサブセットコンポーネント202は、1つ又は複数の訓練済みAIモデル124の性能に基づき(例えば、正解率、適合率、再現率、信号認識再現率、及び/又はこれらの組み合わせなどに基づき)、テストサンプル(例えば1つ又は複数のソースコードサンプル126)を1つ又は複数のテストデータサブセット204にグループ分けすることができる。例えば、テストデータサブセットコンポーネント202は、1つ又は複数のソースコードサンプル126をグループ分けして、1つ又は複数のメモリ116に格納されることが可能な1つ又は複数のテストデータサブセット204を生成することができる。訓練済みAIモデル124の性能を正解率に関して評価するときに生成される例示的なテストデータサブセット204は、限定されるものではないが、真陽性(「true positive:TP」)サブセット、偽陰性(「false negative:FN」)サブセット、真陰性(「true negative:TN」)、偽陽性(「false positive:FP」)、及び/又はこれらの組み合わせなどを含むことができる。例えば、テストデータサブセットコンポーネント202は、1つ又は複数の訓練済みAIモデル124によって陽性であると正しく解析されたソースコードサンプル126を、TPテストデータサブセット204にグループ分けすることができる。また、テストデータサブセットコンポーネント202は、1つ又は複数の訓練済みAIモデル124によって陰性であると誤って解析されたソースコードサンプル126を、FNテストデータサブセット204にグループ分けすることができる。様々な実施形態において、テストデータサブセットコンポーネント202は、テストサンプル(例えばソースコードサンプル126)を、2つ、3つ、又はそれより多くのテストデータサブセット204にグループ分けすることができる。1つ又は複数の実施形態において、1つ又は複数の訓練済みAIモデル124を評価するためにテストデータサブセットコンポーネント202によって用いられる性能メトリックは、1つ又は複数の入力デバイス106を介して定義されることが可能であり、及び/又はソースコード理解タスクに基づくことが可能である。また、1つ又は複数の実施形態において、ソースコードサンプル126をグループ分けするためにテストデータサブセットコンポーネント202によって使用されるテストデータサブセット204の数及び/又はタイプは、1つ又は複数の入力デバイス106を介して定義されることが可能であり、及び/又はソースコード理解タスクに基づくことが可能である。
【0049】
図3は、本明細書に記載の1つ又は複数の実施形態による、分布コンポーネント302をさらに備える例示的な非限定的システム100の図を示す。本明細書に記載の他の実施形態において利用される同様の要素の繰り返しの説明は、簡潔性のために省略される。1つ又は複数の実施形態において、分布コンポーネント302は、抽出されたコード複雑度メトリック128のうちの1つ又は複数に関して、テストデータサブセット204内に含まれたテストサンプル(例えば、ソースコードサンプル126)の分布を判断することができる。
【0050】
例えば、分布コンポーネント302は、テストデータサブセット204内に含まれたソースコードサンプル126のそれぞれに関連付けられた、抽出されたコード複雑度メトリック128を特定することができる。例えば、分布コンポーネント302は、所与のテストデータサブセット204内のどのくらい多くのソースコードサンプル126が(例えば、テストデータセット122の総母集団の、及び/又はテストデータサブセット204の母集団のパーセントとして)、所与のコード複雑度メトリック128の値を有するかを判断することができる。別の事例において、分布コンポーネント302は、所与のテストデータサブセット204のソースコードサンプル126を特徴付けるコード複雑度メトリック128の値範囲を判断することができる。さらなる事例において、分布コンポーネント302は、所与のテストデータサブセット204の条件が、所与のコード複雑度メトリック128の値を有するソースコードサンプル126によって満たされる頻度を判断することができる。
【0051】
1つ又は複数の実施形態において、分布コンポーネント302は、ソースコードサンプル126の分布を表すために1つ又は複数の表示を生成することができる。例えば、1つ又は複数の表示は、限定されるものではないが、1つ又は複数のグラフ、チャート、表、テキスト、画像、動画、及び/又はこれらの組み合わせなどを含むことができる。さらに、分布コンポーネント302は、1つ又は複数の表示を、(例えば、1つ又は複数のネットワーク104を介して)1つ又は複数の入力デバイス106と共有することができる。
【0052】
図4は、テストデータサブセットコンポーネント202によって生成されたテストデータサブセット204のそれぞれのソースコードサンプル126内のコード複雑度の分布を表すために、分布コンポーネント302によって生成されることが可能な、例示的な非限定的グラフ402及び/又は404の図を示す。本明細書に記載の他の実施形態において利用される同様の要素の繰り返しの説明は、簡潔性のために省略される。
図4は、1つ又は複数のコード複雑度メトリック128に関するソースコードサンプル126の分布を表すための1つ又は複数の棒グラフを示す;しかしながら、モデルイントロスペクションコンポーネント110のアーキテクチャはそのように限定されない。例えば、
図4に示した棒グラフの形式は例示的であり、分布コンポーネント302は、コード複雑度メトリック128の分布を様々な表示形式を介して表すことができる。
【0053】
本明細書に記載の様々な実施形態の有効性を実証するために、システム100は、複数のデータセットに対する脆弱性検出のユースケースに関して利用された;しかしながら、様々な実施形態は、他のソースコード理解タスクに適用可能である。システム100の有効性を実証するために利用される例示的なテストデータセット122は、s-bAbI合成データセット(「s-bAbI」)を含む。s-bAbIテストデータセット122は、本明細書に記載の様々な実施形態の有効性を実証するために利用されることが可能である;その一方で、モデルイントロスペクションコンポーネント110の特徴は、例示的なs-bAbIテストデータセット122に限定されず、むしろ他のソースコードデータセットが解析されることが可能である。s-bAbIテストデータセット122は、非自明な制御フローを有する構文的に有効なCプログラムを含有しており、バッファオーバーフローの脆弱性に焦点を当てている。脆弱性検出タスクを目的として、データセットを作成するためにs-bAbI生成器を使用することができ、ここで「アンセーフ」タグを有するサンプルは1とラベル付けされることが可能であり、「セーフ」タグを有するサンプルは、0とラベル付けされることが可能である。さらに、1つ又は複数の実施形態において、システム100の有効性を実証するために、訓練済みグラフニューラルネットワーク(「graph neural network:GNN」)AIモデル124を利用することができる。しかしながら、モデルイントロスペクションコンポーネント110の様々な特徴は、訓練済みGNNのAIモデル124のタイプに限定されない。
【0054】
グラフ402及び/又は404は、s-bAbIテストデータセット122に対する訓練済みGNNのAIモデル124の実行から生成された2つのテストデータサブセット204にわたるソースコードサンプル126の分布に関する。例えば、訓練済みAIモデル124からのTP出力をもたらすソースコードサンプル126は、第1のテストデータサブセット204aにグループ分けされることが可能である。また、訓練済みAIモデル124からのFN出力をもたらすソースコードサンプル126は、第2のテストデータサブセット204bにグループ分けされることが可能である。グラフ402は、コード複雑度メトリック128のうちの1つ又は複数に関する第1のテストデータサブセット204aにおけるソースコードサンプル126の分布を示す。グラフ404は、同じ1つ又は複数のコード複雑度メトリック128に関する第2のテストデータサブセット204bにおけるソースコードサンプル126の分布を示す。例えば、グラフ402は、訓練済みAIモデル124によって達成されたTP発生数のうちの58.2パーセントが、難しさのコード複雑度メトリック128の値12を有すると判断されたソースコードサンプル126に関連付けられていることを示す。別の事例において、グラフ404は、訓練済みAIモデル124によって達成されたFN発生数のうちの54.7パーセントが、難しさのコード複雑度メトリック128の値16を有すると判断されたソースコードサンプル126に関連付けられていることを示す。
【0055】
図5は、本明細書に記載の1つ又は複数の実施形態による、比較コンポーネント502をさらに備える例示的な非限定的システム100の図を示す。本明細書に記載の他の実施形態において利用される同様の要素の繰り返しの説明は、簡潔性のために省略される。様々な実施形態において、比較コンポーネント502は、分布コンポーネント302によって生成されたテストサンプル(例えば、ソースコードサンプル126)の分布を、複数のテストデータサブセット204にわたって比較及び/又は対比することができる。
【0056】
1つ又は複数の実施形態において、比較コンポーネント502は、1つのテストデータサブセット204のソースコードサンプル126の分布を、1つ又は複数の他のテストデータサブセット204のソースコードサンプル126の分布と比較して、分布間の1つ又は複数の類似点及び/又は相違点の特定を容易にすることができる。例えば、比較コンポーネント502は、グラフ402に表された第1のテストデータサブセット204aのソースコードサンプル126の分布を、グラフ404によって表された第2のテストデータサブセット204bのソースコードサンプル126の分布と比較することができる。例えば、比較コンポーネント502は、ソースコードサンプル126の分布に関連付けられたコード複雑度メトリック128の値範囲を、テストデータサブセット204にわたって比較することができる。別の事例において、比較コンポーネント502は、定義済みのコード複雑度メトリック128を有するソースコードサンプル126の母集団を、テストデータサブセット204にわたって比較することができる。さらなる事例において、比較コンポーネント502は、ソースコードサンプル126の母集団を、テストデータサブセット204にわたって比較することができる。1つ又は複数の実施形態において、比較コンポーネント502によって実行される比較及び/又は対比は、1つ又は複数の入力デバイス106によって定義された1つ又は複数のパラメータ及び/又は目的に応じたものであり得る。
【0057】
様々な実施形態において、モデルイントロスペクションコンポーネント110は、1つ又は複数の訓練済みAIモデル124の学習挙動及び/又は訓練の進化に関する1つ又は複数のインサイトを、比較コンポーネント502によって実行される比較及び/又は対比に基づき生成することができる。例えば、
図4に示す例示的なソースコードサンプル126の分布に関して、比較コンポーネント502は、分布によって具現化されたコード複雑度メトリック128の値範囲を比較して、第1のテストデータサブセット204a(例えば、TP結果)に含まれたソースコードサンプル126の大部分が、14に等しいか又はそれより小さいコード複雑度メトリック128の値を有し、第2のテストデータサブセット204b(例えば、FN結果)に含まれたソースコードサンプル126の大部分が、16に等しいか又はそれより大きいコード複雑度メトリック128の値を有することを判断することができる。この比較に基づき、モデルイントロスペクションコンポーネント110は、訓練済みAIモデル124の正解率は、ソースコードサンプル126のコード複雑度に依存し得るというインサイトを判断することができる;ここで訓練済みAIモデル124は、14又はそれより小さいコード複雑度メトリック128の値を有するソースコードサンプル126に関して正確な予測を行うことができるが、16又はそれより高いコード複雑度メトリック128の値を有するソースコードサンプル126に関しては、正確さが著しく下がり得る。
【0058】
そうして、テストデータサブセット204のソースコードサンプル126の分布と組み合わされた、ソースコードサンプル126をテストデータサブセット204に分類するために使用される評価メトリックは、モデルイントロスペクションコンポーネント110によってなされた1つ又は複数の判断を通知することができる。1つ又は複数の実施形態において、モデルイントロスペクションコンポーネント110は、(例えば、分布コンポーネント302によって生成された)テストデータサブセット204の分布、及び/又は(例えば、比較コンポーネント502によって生成された)比較を解析して、例えばデータセットのセグメント化及びイントロスペクション、学習済みモデル論理の解読、信号認識の導出、コード中心モデルの進化、データセットの観点からの設計空間評価、コード中心モデルの比較、及び/又はこれらの組み合わせなどに関する多数のインサイトを判断することができる。
【0059】
例えば、テストデータサブセット204が、訓練済みAIモデル124の出力の正解率に基づき生成される場合、モデルイントロスペクションコンポーネント110は、訓練済みAIモデル124にとってどのソースコードサンプル126がより予測しやすい又はより予測しにくいかを、テストデータサブセット204の母集団に基づき判断することができる。さらに、モデルイントロスペクションコンポーネント110は、ソースコードサンプル126をより予測しやすく又は予測しにくくし得る1つ又は複数の特性を、それぞれのテストデータサブセット204内のソースコードサンプル126の分布に基づき特定することができる。例えば、イントロスペクションコンポーネント110は、比較コンポーネント502によって実行された比較に基づき、ソースコードサンプル126の分布間の1つ又は複数の共通点を特定することができる。
【0060】
別の例において、モデルイントロスペクションコンポーネント110は、訓練済みAIモデル124によって学習された信号が、所与の機械学習タスクに関連しているかどうか、又は訓練済みAIモデル124によって学習された信号が、ノイズ及び/又はデータセットバイアスを含むかどうかを判断することができる。例えば、モデルイントロスペクションコンポーネント110は、正確な結果に関連付けられたテストデータサブセット204においてソースコードサンプル126の母集団が小さいこと、及び/又は不正確な結果に関連付けられたテストデータサブセット204が、より大きいコード複雑度を有するソースコードサンプル126を含むことに基づき、訓練済みAIモデル124が、所与のタスクに関連しない信号について学習したと判断することができる。さらなる例において、モデルイントロスペクションコンポーネント110は、訓練済みAIモデル124による誤予測に共通のコード特性を特定することができる。
【0061】
さらなる例において、訓練済みAIモデル124は、異なるハイパーパラメータ設定を用いた、訓練済みAIモデル124の実行の複数回の反復にわたって、解析されることが可能である。それにより、モデルイントロスペクションコンポーネント110は、テストデータサブセット204及び実行反復にわたって、ソースコードサンプル126の分布を解析して、ハイパーパラメータ設定に関連したモデル理解を追跡することができる。さらなる例において、訓練済みAIモデル124は、ソースコードサンプル126の組成に対してそれぞれの操作及び/又は拡張をそれぞれが含む複数のテストデータセット122にわたって、モデルイントロスペクションコンポーネント110によって解析されることが可能である。さらに、訓練済みAIモデル124は、複数のテストデータセット122にわたって、モデルイントロスペクションコンポーネント110によって解析されることが可能であり、ソースコードサンプル126が訓練済みAIモデル124に導入される順序は異なる。さらなる例において、モデルイントロスペクションコンポーネント110は、同じテストデータセット122に関して複数の訓練済みAIモデル124を解析することができ、それぞれの訓練済みAIモデル124は、異なる態様で訓練されることが可能である。それにより、モデルイントロスペクションコンポーネント110は、テストデータサブセット204、テストデータセット122、様々なモデル設定、及び/又は様々なモデル訓練スキームにわたってソースコードサンプル126の分布を解析して、例えばデータ拡張、カリキュラム学習、能動的学習、敵対的訓練、及び/又はこれらの組み合わせなどのモデル改善技術を追跡することができ、及び/又はモデルにわたるタスク適性を見極めることができる。
【0062】
図6は、本明細書に記載の1つ又は複数の実施形態による、モデルイントロスペクションコンポーネント110によって実装されることが可能な、例示的な非限定的イントロスペクションスキーム600の図を示す。本明細書に記載の他の実施形態において利用される同様の要素の繰り返しの説明は、簡潔性のために省略される。
図6は、例示的なイントロスペクションスキーム600を示す;しかしながら、システム100のアーキテクチャは、
図6に示した事象の順序又は特徴の個数に限定されない。例えば、イントロスペクションスキーム600の1つ又は複数の特徴は、代替的な順序で実施されることが可能である(例えば、コード複雑度メトリック128は、テストデータサブセット204を生成する前に、又は後に、ソースコードサンプル126から抽出されることが可能である)。別の例において、2つのテストデータサブセット204が
図6に明確に示してあるが、(例えば、
図6の「・・・」によって示すように)追加のテストデータサブセット204を生成することが可能である。
【0063】
図6に示すように、1つ又は複数の訓練済みAIモデル124は、1つ又は複数のテストデータセット122を用いて、1つ又は複数の機械学習タスク(例えば、ソースコード理解タスク)を実行することができる。様々な実施形態によれば、訓練済みAIモデル124の実行は、モデルイントロスペクションコンポーネント110によって行われることが可能であり、及び/又は独立して行われることが可能であり、ここで実行の結果は、1つ又は複数の入力デバイス106を介してモデルイントロスペクションコンポーネント110に供給されることが可能である。1つ又は複数の訓練済みAIモデル124の出力に基づき、テストデータサブセットコンポーネント202は、それぞれのテストデータサブセット204に関連付けられる1つ又は複数の条件に基づき、テストデータセット122のソースコードサンプル126を複数のテストデータサブセット204にグループ分けすることができる。例えば、第1のテストデータサブセット204aに関連付けられる条件は、1つ又は複数の訓練済みAIモデル124からのTP結果に関連付けられたソースコードサンプル126を、第1のテストデータサブセット204が含むこととすることができる。別の例において、第2のテストデータサブセット204bに関連付けられる条件は、1つ又は複数の訓練済みAIモデル124からのFN結果に関連付けられたソースコードサンプル126を、第2のテストデータサブセット204が含むこととすることができる。1つ又は複数の実施形態において、複数のテストデータサブセット204に関連付けられる条件は、1つ又は複数の訓練済みAIモデル124によって実行された所与のタスクに基づき事前定義される、及び/又はテストデータサブセットコンポーネント202によって定義されることが可能である。1つ又は複数の実施形態において、複数のテストデータサブセット204に関連付けられる1つ又は複数の条件は、1つ又は複数の入力デバイス106を介して定義されることが可能である。
【0064】
さらに、抽出コンポーネント114は、複数のテストデータサブセット204に含まれたソースコードサンプル126のそれぞれから、1つ又は複数のコード複雑度メトリック128を抽出することができる。それにより、分布コンポーネント302は、抽出されたコード複雑度メトリック128のうちの1つ又は複数に関して、テストデータサブセット204内のソースコードサンプル126の1つ又は複数の分布を判断することができる。本明細書に記載の様々な実施形態によれば、分布コンポーネント302は、(例えば
図4に例示した)グラフなどの1つ又は複数の表示を生成して、ソースコードサンプル126の分布を表すことができる。さらに、比較コンポーネント502は、複数のテストデータサブセット204にわたるソースコードサンプル126の分布を比較及び/又は対比することができる。本明細書に記載の様々な実施形態によれば、モデルイントロスペクションコンポーネント110は、比較コンポーネント502によって生成された1つ又は複数の比較に基づき、1つ又は複数の訓練済みAIモデル124の学習挙動に関する1つ又は複数のインサイトを判断することができる。
【0065】
図7は、本明細書に記載の1つ又は複数の実施形態による例示的なイントロスペクションスキーム600の複数回の反復を利用することにより、モデルイントロスペクションコンポーネント110によって判断されることが可能な、1つ又は複数のインサイトを示すことができる例示的な非限定的グラフチェーン702、704の図を示す。本明細書に記載の他の実施形態において利用される同様の要素の繰り返しの説明は、簡潔性のために省略される。1つ又は複数の実施形態において、モデルイントロスペクションコンポーネント110は、異なるパラメータ設定、訓練済みAIモデル124、及び/又はテストデータセット122にわたって、イントロスペクションスキーム600の複数回の反復を実行することができる。例えば、
図7は、異なる量の拡張を有する訓練データセットでそれぞれ訓練された複数の訓練済みAIモデル124にわたって、例示的なイントロスペクションスキーム600の複数回の反復を実行したときに、モデルイントロスペクションコンポーネント110によって生成されることが可能な1つ又は複数の比較及び/又はインサイトを示す。
【0066】
例えば、モデルイントロスペクションコンポーネント110は、(例えば、予測正解率に基づき定義された)テストデータサブセット204のソースコードサンプル126の分布を、同じアーキテクチャ及び/又は設定を有するが、ベースデータセットと比較して異なる量の拡張を有するデータセットで訓練された複数の訓練済みAIモデル124にわたるコード複雑度に関して比較することにより、訓練済みAIモデル124の学習挙動を推論することができる。
図7に示してあるように、第1のイントロスペクション反復706aにおいて、モデルイントロスペクションコンポーネント110は、ベースデータセット(例えば、0%の拡張を含む)で訓練された訓練済みAIモデル124を解析することができる。その後、モデルイントロスペクションコンポーネント110は、イントロスペクションスキーム600の複数回の反復を実行することができる。例えば、モデルイントロスペクションコンポーネント110は、1%の拡張、2%の拡張、20%の拡張をそれぞれ含むデータセットで訓練された訓練済みAIモデル124に関して、第2のイントロスペクション反復706b、第3のイントロスペクション反復706c、及び/又は第4のイントロスペクション反復706dを実行することができる。
図7は、イントロスペクションスキーム600の4回の反復を示しているが、システム100のアーキテクチャはそのように限定されない。例えば、モデルイントロスペクションコンポーネント110は、4回の反復より多く又はより少なく実行されることが可能である。
【0067】
イントロスペクションスキーム600のそれぞれのイントロスペクション反復706(例えば、第1のイントロスペクション反復706a、第2のイントロスペクション反復706b、第3のイントロスペクション反復706c、及び/又は第4のイントロスペクション反復706d)について、モデルイントロスペクションコンポーネント110は、ソースコードサンプル126を含む第1のテストデータサブセット204aに関して、(例えば、グラフチェーン702に表された)再現率(信号認識)のTP結果に基づき、訓練済みAIモデル124を解析することができる。さらに、イントロスペクションスキーム600のそれぞれのイントロスペクション反復706(例えば、第1のイントロスペクション反復706a、第2のイントロスペクション反復706b、第3のイントロスペクション反復706c、及び/又は第4のイントロスペクション反復706d)について、モデルイントロスペクションコンポーネント110は、ソースコードサンプル126を含む第2のテストデータサブセット204bに関して、(例えば、グラフチェーン704に表された)再現率(信号認識)のFN結果に基づき、訓練済みAIモデル124を解析することができる。
【0068】
信号認識再現率メトリックは、モデル性能の改善を実証するために使用されることが可能である。信号認識再現率メトリックは、コード用AIモデルの信号認識を測定するために使用されることが可能である。例えば、脆弱性検出タスクの文脈において、再現率測定は、モデルが正しく予測する脆弱なサンプルの割合を測定できるが、信号認識再現率メトリックは、予測に到達するために、モデルが、これらの事例のうちのどのくらい多くについて正しい信号を捕捉するかを測定することができる。例えば、脆弱性検出の文脈において、信号認識再現率メトリックは、訓練済みAIモデル124が(例えば、タスク関連の信号を使用して)正しく予測する脆弱なサンプルの割合を測定できる。
【0069】
さらに、モデルイントロスペクションコンポーネント110は、テストデータサブセット204内のソースコードサンプル126の分布を、SLOCコード複雑度メトリック128に関して解析することができる。しかしながら、モデルイントロスペクションコンポーネント110のアーキテクチャは、
図7に示す例示的テストデータサブセット204及び/又はコード複雑度メトリック128に限定されない。例えば、モデルイントロスペクションコンポーネント110は、他の(例えば、正解率以外の評価メトリックに基づく)テストデータサブセット204、及び/又は他のコード複雑度メトリック128に関して、例示的なイントロスペクションスキーム600を実行することができる。
【0070】
複数回のイントロスペクション反復に基づき、モデルイントロスペクションコンポーネント110は、ベースデータセットで訓練された訓練済みAIモデル124が、大きいソースコードサンプル126(例えば、大きいSLOC値を有するソースコードサンプル126)を理解する際に最も大きい問題に直面し得ると判断することができる。しかしながら、モデルイントロスペクションコンポーネント110は、訓練済みAIモデル124のアーキテクチャ及び/又は設定の学習挙動の改善に、所与の拡張スキームが効果的であり得ると判断することができる。例えば、点線708及び710の比較に示してあるように、訓練済みAIモデル124のアーキテクチャ及び/又は設定を訓練するために使用される拡張の量が増大するにつれ、訓練済みAIモデル124によって正しく予測された(例えば、SLOCコード複雑度メトリック128によって定義されたように)大きいソースコードサンプル126の数が増大し、訓練済みAIモデル124によって誤予測された(例えば、SLOCコード複雑度メトリック128によって定義されたように)大きいソースコードサンプル126の数が、減少している。複数回のイントロスペクション反復706にわたって点線708及び/又は710によって表された傾向を特定することにより、モデルイントロスペクションコンポーネント110は、訓練済みAIモデル124のアーキテクチャ及び/又は設定の複数の複製の間でテストされた拡張スキームが、大きい(例えば、SLOCによって定義された)ソースコードサンプル126のモデル理解の改善をもたらし得るというインサイトを判断することができる。
【0071】
図8は、本明細書に記載の1つ又は複数の実施形態による、1つ又は複数の訓練済みAIモデル124のイントロスペクションを容易にすることが可能な、例示的な非限定的コンピュータ実装方法800の図を示す。本明細書に記載の他の実施形態において利用される同様の要素の繰り返しの説明は、簡潔性のために省略される。
【0072】
802において、コンピュータ実装方法800は、1つ又は複数のテストデータセット122に含まれた複数のコードサンプル(例えば、ソースコードサンプル126)について、1つ又は複数のコード複雑度メトリック128を、プロセッサ120に動作可能に結合されたシステム100により(例えば、抽出コンポーネント114を介して)抽出する段階を備えることができる。本明細書に記載の様々な実施形態によれば、コード複雑度メトリック128は、複数のコードサンプル(例えば、ソースコードサンプル126)のコード複雑度を特徴付けることができ、及び/又はシステム100によるその後の解析のために、1つ又は複数のメモリ116に格納されることが可能である。
【0073】
804において、コンピュータ実装方法800は、複数のコードサンプル(例えば、ソースコードサンプル126)を、訓練済みAIモデル124の出力を評価する1つ又は複数の性能メトリック(例えば、正解率メトリック)に基づきグループ分けすることにより、複数のテストデータサブセット204をシステム100により(例えば、テストデータサブセットコンポーネント202を介して)生成する段階を備えることができる。例えば、訓練済みAIモデル124は、1つ又は複数のテストデータセット122を使用して、1つ又は複数のソースコード理解タスクを完了させることができ、ここで804におけるグループ分けは、そのタスクの実行における訓練済みAIモデル124の性能に基づくことが可能である。1つ又は複数の実施形態において、タスクの実行は、システム100によって実行されることが可能であり、及び/又は訓練済みAIモデル124は独立して動作することができ、結果的に得られた出力及び/又は性能メトリックが、(例えば、1つ又は複数のネットワーク104及び/又は入力デバイス106を介して)システム100と共有されることが可能である。806において、コンピュータ実装方法800は、802において抽出されたコード複雑度メトリック128に基づき、複数のテストデータサブセット204内の複数のコードサンプル(例えば、ソースコードサンプル126)の分布を、システム100により(例えば、分布コンポーネント302を介して)判断する段階を備えることができる。例えば、
図4及び/又は
図6~
図7は、806において生成されることが可能な、例示的なソースコードサンプル126の分布を示す。
【0074】
808において、コンピュータ実装方法800は、806において生成されたコードサンプル(例えばソースコードサンプル126)の複数の分布を、システム100により(例えば、比較コンポーネント502を介して)比較する段階を備えることができる。例えば、808における比較は、異なるテストデータサブセット204、コンピュータ実装方法800の異なる反復(例えば、異なるイントロスペクション反復706)、異なる訓練済みAIモデル124、及び/又は異なるテストデータセット122に関連付けられた分布間のものであり得る。810において、コンピュータ実装方法800は、810における比較に基づき、1つ又は複数の訓練済みAIモデル124の学習挙動の1つ又は複数のインサイトを、システム100により(例えば、モデルイントロスペクションコンポーネント110を介して)推論する段階を備えることができる。
【0075】
図9は、本明細書に記載の1つ又は複数の実施形態による、1つ又は複数の訓練済みAIモデル124のイントロスペクションを、データセットの観点から容易にすることが可能な、例示的な非限定的コンピュータ実装方法900のフロー図を示す。本明細書に記載の他の実施形態において利用される同様の要素の繰り返しの説明は、簡潔性のために省略される。
【0076】
902において、コンピュータ実装方法900は、1つ又は複数のテストデータセット122に含まれた複数のコードサンプル(例えば、ソースコードサンプル126)について、1つ又は複数のコード複雑度メトリック128を、プロセッサ120に動作可能に結合されたシステム100により(例えば、抽出コンポーネント114を介して)抽出する段階を備えることができる。本明細書に記載の様々な実施形態によれば、コード複雑度メトリック128は、複数のコードサンプル(例えば、ソースコードサンプル126)のコード複雑度を特徴付けることができ、及び/又はシステム100によるその後の解析のために、1つ又は複数のメモリ116に格納されることが可能である。
【0077】
904において、コンピュータ実装方法900は、1つ又は複数のテストデータセット122に対する訓練済みAIモデル124による1つ又は複数のコード理解タスクの実行に関する出力データを、システムにより(例えば、モデルイントロスペクションコンポーネント110及び/又は通信コンポーネント112を介して)収集する段階を備えることができる。1つ又は複数の実施形態において、タスクの実行は、システム100によって実行されることが可能であり、及び/又は訓練済みAIモデル124は独立して動作することができ、結果的に得られた出力及び/又は性能メトリックが、(例えば、1つ又は複数のネットワーク104及び/又は入力デバイス106を介して)システム100と共有されることが可能である。906において、コンピュータ実装方法900は、複数のコードサンプル(例えば、ソースコードサンプル126)を、904において収集された出力データに基づきグループ分けすることにより、複数のテストデータサブセット204をシステム100により(例えば、テストデータサブセットコンポーネント202を介して)生成する段階を備えることができる。例えば、906におけるグループ分けは、タスクを実行する際の訓練済みAIモデル124の性能に基づくことが可能である。
【0078】
908において、コンピュータ実装方法900は、902において抽出されたコード複雑度メトリック128に基づき、複数のテストデータサブセット204内の複数のコードサンプル(例えば、ソースコードサンプル126)の分布を、システム100により(例えば、分布コンポーネント302を介して)判断する段階を備えることができる。例えば、
図4及び/又は
図6~
図7は、906において生成されることが可能な、例示的なソースコードサンプル126の分布を示す。910において、コンピュータ実装方法900は、第1のテストデータサブセット204aに関連付けられたコードサンプル(例えば、ソースコードサンプル126)の第1の分布と、第2のテストデータサブセット204bに関連付けられたコードサンプル(例えば、ソースコードサンプル126)の第2の分布とを、システム100により(例えば、比較コンポーネント502を介して)比較する段階を備えることができる。
【0079】
912において、コンピュータ実装方法900は、イントロスペクションのために追加の訓練済みAIモデル124が利用可能かどうかを、システム100により(例えば、モデルイントロスペクションコンポーネント110を介して)判断する段階を備えることができる。追加の訓練済みAIモデル124が利用可能な場合、コンピュータ実装方法900は、914に進むことができる。追加の訓練済みAIモデル124が利用可能でない場合、コンピュータ実装方法900は、916に進むことができる。914において、コンピュータ実装方法900は、1つ又は複数のテストデータセット122に対する別の訓練済みAIモデル124によるコード理解タスクの実行に関する出力データを、システム100により(例えば、モデルイントロスペクションコンポーネント110及び/又は通信コンポーネント112を介して)収集する段階を備えることができる。その後、コンピュータ実装方法900は、906に進むことができる。それにより、コンピュータ実装方法900は、1つ又は複数の構造的バリエーション、訓練バリエーション、及び/又は設定バリエーションをそれぞれ含み得る(例えば、
図7に例示した)複数の訓練済みAIモデル124に関して、複数回のイントロスペクション反復706を実行することができる。916において、コンピュータ実装方法900は、少なくとも910においてなされた比較に基づき、モデル学習に関する1つ又は複数のインサイトを、システム100により(例えば、モデルイントロスペクションコンポーネント110を介して)生成する段階を備えることができる。例えば、916における生成は、テストデータサブセット204間のコードサンプル(例えば、ソースコードサンプル126)の分布、及び/又はイントロスペクション反復706間のコードサンプル(例えば、ソースコードサンプル126)の傾向の1つ又は複数の特性を特定する段階を備えることができる。
【0080】
本開示は、クラウドコンピューティングに関する詳細な説明を含むが、本明細書に記載される教示内容の実装形態は、クラウドコンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在既知又は今後開発される任意の他のタイプのコンピューティング環境と併せて実装されることが可能である。
【0081】
クラウドコンピューティングは、管理の労力又はサービスのプロバイダとの対話を最小限に抑えながら迅速にプロビジョニングおよびリリースされ得る構成可能なコンピューティングリソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想機械、およびサービス)の共有プールに対する便利なオンデマンドのネットワークアクセスを可能にするためのサービス提供のモデルである。このクラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル及び少なくとも4つの展開モデルを含み得る。
【0082】
特性は以下の通りである。
【0083】
オンデマンドセルフサービス:クラウドコンシューマは、サービスプロバイダとの人的対話を要することなく、必要に応じて自動的に、サーバ時間およびネットワークストレージなどのコンピューティング能力を一方的にプロビジョニングすることができる。
【0084】
幅広いネットワークアクセス:能力は、ネットワークを介して利用可能であり、また、異種混交のシンクライアントプラットフォーム又はシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、およびPDA(登録商標))による使用を促進する標準的なメカニズムを通じてアクセスされる。
【0085】
リソースプーリング:プロバイダのコンピューティングリソースは、マルチテナントモデルを使用して複数のコンシューマにサービス提供するようにプールされており、様々な物理リソースおよび仮想リソースが需要に沿って動的に割り当ておよび再割り当てされる。コンシューマは、概して、提供されるリソースの正確な位置に対する制御又は知識を有しないが、より高い抽象化レベル(例えば、国、州、又はデータセンタ)では位置を指定することが可能であり得るという点において、ある種の位置独立性がある。
【0086】
迅速な弾力性:能力は迅速に且つ伸縮自在に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトすることも、迅速にリリースして素早くスケールインすることもできる。コンシューマにとって、多くの場合、プロビジョニングに利用可能な能力は無制限に見え、任意の時点において任意の量で購入することができる。
【0087】
計測サービス:クラウドシステムは、ある抽象化レベルでサービスのタイプ(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザアカウント)に適した計測能力を活用することにより、リソースの使用を自動的に制御および最適化する。リソース使用率は、モニタリング、制御、及び、報告され、こうすることで、用いられるサービスのプロバイダ及びコンシューマの両方に透明性を提供することができる。
【0088】
サービスモデルは以下の通りである。
【0089】
サービスとしてのソフトウェア(SaaS):コンシューマに提供される能力は、クラウドインフラストラクチャ上で実行しているプロバイダのアプリケーションを使用することである。アプリケーションには、ウェブブラウザ(例えば、ウェブベースの電子メール)などのシンクライアントインタフェースを介して、様々なクライアントデバイスからアクセス可能である。コンシューマは、ネットワーク、サーバ、オペレーティングシステム、ストレージ、又は、個々のアプリケーション能力さえも含む基礎となるクラウドインフラストラクチャを管理又は制御しないが、限定的なユーザ固有のアプリケーション構成設定は例外となる場合がある。
【0090】
サービスとしてのプラットフォーム(PaaS):コンシューマに提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、コンシューマが作成又は取得したアプリケーションをクラウドインフラストラクチャ上に展開することである。コンシューマは、ネットワーク、サーバ、オペレーティングシステム、又はストレージを含む基礎となるクラウドインフラストラクチャを管理又は制御しないが、展開されたアプリケーション及び、場合によっては、アプリケーションホスティング環境の構成を制御する。
【0091】
サービスとしてのインフラストラクチャ(IaaS):コンシューマに提供される能力は、処理、ストレージ、ネットワーク、および他の基本的なコンピューティングリソースをプロビジョニングすることであり、コンシューマは、オペレーティングシステムおよびアプリケーションを含み得る任意のソフトウェアを展開し、実行させることが可能である。コンシューマは、基礎となるクラウドインフラストラクチャを管理又は制御しないが、オペレーティングシステム、ストレージ、展開されたアプリケーションを制御し、場合によっては、選択されたネットワーキングコンポーネント(例えば、ホストファイアウォール)を限定的に制御する。
【0092】
展開モデルは以下の通りである。
【0093】
プライベートクラウド:クラウドインフラストラクチャは、組織のためだけに運用される。それは組織又はサードパーティによって管理されてよく、オンプレミス又はオフプレミスに存在してよい。
【0094】
コミュニティクラウド:クラウドインフラストラクチャは、複数の組織により共有されており、共有の関心事(例えば、ミッション、セキュリティ要件、ポリシ、および法令順守に関わる考慮事項)を有する特定のコミュニティをサポートする。コミュニティクラウドは、それらの組織又はサードパーティによって管理されてよく、オンプレミス又はオフプレミスで存在してよい。
【0095】
パブリッククラウド:クラウドインフラストラクチャは、一般大衆又は大規模な業界団体にとって利用可能になり、クラウドサービスを販売する組織により所有される。
【0096】
ハイブリッドクラウド:このクラウドインフラストラクチャは、2又はそれより多くのクラウド(プライベート、コミュニティ、又はパブリック)の複合体であり、これは、一意的なエンティティのままであるが、データおよびアプリケーションのポータビリティ(例えば、クラウド間の負荷分布のためのクラウドバースト)を可能にする標準化された技術又は独自技術によって共に結合される。
【0097】
クラウドコンピューティング環境は、ステートレス性、低結合性、モジュール性、および意味的相互運用性に焦点を当てたサービス指向型である。クラウドコンピューティングの中核には、相互接続されたノードからなるネットワークを含むインフラストラクチャが存在する。
【0098】
ここで
図10を参照すると、例示的なクラウドコンピューティング環境1000が示されている。図示してあるように、クラウドコンピューティング環境1000は、1つ又は複数のクラウドコンピューティングノード1002を備え、例えば、パーソナルデジタルアシスタント(PDA)又は携帯電話1004、デスクトップコンピュータ1006、ラップトップコンピュータ1008、及び/又は自動車コンピュータシステム1010などの、クラウドコンシューマに使用されるローカルコンピューティングデバイスが、クラウドコンピューティングノード1002を用いて通信してもよい。ノード1002は、互いに通信し得る。それらは、本明細書の上記で説明されたようなプライベートクラウド、コミュニティクラウド、パブリッククラウド、又はハイブリッドクラウド、又はこれらの組み合わせなど、1つ又は複数のネットワーク内で物理的に又は仮想的にグループ化され得る(図示しない)。これにより、クラウドコンピューティング環境1000は、インフラストラクチャ、プラットフォーム、若しくはソフトウェア、及び/又はを、クラウドコンシューマがそのためにローカルコンピューティングデバイス上にリソースを維持する必要がないサービスとして提供することが可能になる。
図10において示されているコンピューティングデバイス1004~1010のタイプは、単に例示を意図し、コンピューティングノード1002及びクラウドコンピューティング環境1000は、任意のタイプのネットワーク及び/又はネットワークアドレス指定可能接続を介して(例えば、ウェブブラウザを使用して)、任意のタイプのコンピュータ化デバイスと通信することができることが理解される。
【0099】
ここで
図11を参照すると、クラウドコンピューティング環境1000(
図10)によって提供される機能抽象化層のセットが示されている。本明細書に記載の他の実施形態において利用される同様の要素の繰り返しの説明は、簡潔性のために省略される。
図11に示されているコンポーネント、層、及び機能が例示のみを意図したものであり、本発明の実施形態がそれらに限定されないことを事前に理解されるべきである。図示のように、以下の層及び対応する機能が提供される。
【0100】
ハードウェア及びソフトウェア層1102は、ハードウェアコンポーネント及びソフトウェアコンポーネントを備える。ハードウェアコンポーネントの例は、メインフレーム1104;RISC(縮小命令セットコンピュータ)アーキテクチャベースのサーバ1106;サーバ1108;ブレードサーバ1110;ストレージデバイス1112;及び、ネットワーク及びネットワーキングコンポーネント1114を含む。いくつかの実施形態において、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア1116及びデータベースソフトウェア1118を備える。
【0101】
仮想化層1120は、仮想エンティティの次の例、すなわち、仮想サーバ1122、仮想ストレージ1124、仮想プライベートネットワークを含む仮想ネットワーク1126、仮想アプリケーション及びオペレーティングシステム1128並びに仮想クライアント1130が提供され得る抽象化層を提供する。
【0102】
1つの例において、管理層1132は、以下で説明される機能を提供してよい。リソースプロビジョニング1134は、クラウドコンピューティング環境内でタスクを実行するために用いられるコンピューティングリソース及び他のリソースの動的な調達を提供する。計測およびプライス設定1136は、クラウドコンピューティング環境内でリソースが用いられる際のコスト追跡、およびこれらのリソースの消費に対する請求又はインボイス作成を提供する。1つの例において、これらのリソースは、アプリケーションソフトウェアライセンスを含んでよい。セキュリティは、クラウドコンシューマ及びタスクについての識別情報検証、並びに、データ及び他のリソースの保護を提供する。ユーザポータル1138は、コンシューマおよびシステム管理者のために、クラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理1140は、要求されるサービスレベルが満たされるように、クラウドコンピューティングリソース割り当て及び管理を提供する。サービスレベル合意(SLA)計画及び履行1142は、SLAに従って将来の要件が予測されるクラウドコンピューティングリソースの事前手配及び調達を提供する。
【0103】
ワークロード層1144は、クラウドコンピューティング環境が用いられ得る機能の例を提供する。この層から提供され得るワークロード及び機能の例は、マッピング及びナビゲーション1146、ソフトウェア開発及びライフサイクル管理1148、仮想教室教育配信1150、データ解析処理1152、取引処理1154、及びAIモデルイントロスペクション1156を含む。本発明の様々な実施形態は、
図10及び
図11を参照して説明したクラウドコンピューティング環境を用いて、本明細書に記載の1つ又は複数の実施形態による1つ又は複数の訓練済みAIモデル124をイントロスペクトし、及び/又は1つ又は複数の訓練済みAIモデル124の学習挙動に関するインサイトを推論することができる。
【0104】
本発明は、任意の可能な技術的詳細レベルで統合化されたシステム、方法及び/又はコンピュータプログラム製品であってもよい。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(又は複数のコンピュータ可読記憶媒体)を含み得る。コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持及び格納し得る有形デバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子ストレージデバイス、磁気ストレージデバイス、光ストレージデバイス、電磁ストレージデバイス、半導体ストレージデバイス、又はこれらの任意の好適な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストは下記を含む:ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memory又はフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM:static random access memory)、ポータブルコンパクトディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリスティック、フロッピディスク、命令が記録されているパンチカード又は溝の中の隆起構などの機械的にエンコードされるデバイス、及びこれらの任意の好適な組み合わせ。コンピュータ可読記憶媒体は、本明細書において使用される場合、電波又は他の自由に伝搬する電磁波、導波路又は他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバケーブルを通過する光パルス)、又は電線を通じて伝送される電気信号といった、一時的な信号それ自体と解釈されるべきではない。
【0105】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から、それぞれのコンピューティング/処理デバイスに、又は、ネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク及び/又は無線ネットワークを介して、外部コンピュータ又は外部ストレージデバイスに、ダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ及び/又はエッジサーバを有し得る。各コンピューティング/処理デバイス内のネットワークアダプタカード又はネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
【0106】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、又は、Smalltalk(登録商標)、C++又はそれらに類するオブジェクト指向プログラミング言語など、及び、「C」プログラミング言語などの手続き型プログラミング言語又は同様のプログラミング言語を含む、1つ又は複数のプログラミング言語の任意の組み合わせで記述されたソースコード又はオブジェクトコードのいずれかであり得る。コンピュータ可読プログラム命令は、スタンドアロンのソフトウェアパッケージとして、ユーザのコンピュータ上で全体を実行すること、ユーザのコンピュータ上で一部分を実行することができ、ユーザのコンピュータ上で一部分を、リモートコンピュータ上で一部分を実行すること、又は、リモートコンピュータ又はサーバ上で全体を実行することができる。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてよく、又はその接続が、(例えば、インターネットサービスプロバイダを使用したインターネットを介して)外部コンピュータに対して行われてよい。いくつかの実施形態において、本発明の態様を実施するために、例えば、プログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)、又は、プログラマブルロジックアレイ(PLA)を含む電子回路が、コンピュータ可読プログラム命令の状態情報を用いて電子回路をパーソナライズすることで、コンピュータ可読プログラム命令を実行することができる。
【0107】
本発明の態様は、本明細書において、本発明の実施形態による方法、装置(システム)、及びコンピュータプログラム製品のフローチャート図及び/又はブロック図を参照して説明されている。フローチャート図もしくはブロック図又はその組み合わせの各ブロックと、フローチャート図もしくはブロック図又はその組み合わせのブロックの組み合わせとは、コンピュータ可読プログラム命令により実装され得ることが解るであろう。
【0108】
これらのコンピュータ可読プログラム命令は、機械を作り出すために汎用コンピュータ、専用コンピュータ、又は他のプログラマブルデータ処理装置のプロセッサに提供され得、その結果コンピュータ又は他のプログラマブルデータ処理装置のプロセッサを介して実行される命令は、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装するための手段を作成する。これらのコンピュータ可読プログラム命令はまた、コンピュータ、プログラマブルデータ処理装置及び/又は他のデバイスに特定の方式で機能するように指示できるコンピュータ可読記憶媒体内に格納され得、その結果、その中に格納された命令を有するコンピュータ可読記憶媒体は、フローチャート及び/又はブロック図の1つ又は複数のブロックで指定された機能/動作の態様を実装する命令を含む製品を備える。
【0109】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブルデータ処理装置、又は他のデバイス上へロードされて、一連の動作段階をコンピュータ、他のプログラマブル装置、又は他のデバイス上で実行させ、コンピュータ実装プロセスを作り出してもよく、その結果、コンピュータ、他のプログラマブル装置、又は他のデバイス上で実行される命令は、フローチャート及び/又はブロック図の1つ又は複数のブロックで指定された機能/動作を実装する。
【0110】
図におけるフローチャート及びブロック図は、本発明の様々な実施形態による、システム、方法、及びコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能、及び動作を図示する。これに関して、フローチャート又はブロック図における各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む命令のモジュール、セグメント、又は一部を表し得る。いくつかの代替的な実装形態において、ブロックに記されている機能は、図面に記されている順序と異なる順序で行われ得る。例えば、連続して示される2つのブロックは、実際には、実質的に同時に実行され得るか、又は、関連する機能に応じてブロックが逆の順序で実行されることもあり得る。ブロック図もしくはフローチャート図の各ブロック又はその両方、およびブロック図もしくはフローチャート図におけるブロック又はその両方の組み合わせが、指定された機能もしくは動作を実行する、又は、専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得ることにも留意されたい。
【0111】
本明細書に記載の様々な実施形態のための追加の文脈を提供すべく、
図12および以下の説明は、本明細書に記載の実施形態の様々な実施形態が実装され得る好適なコンピューティング環境1200の一般的な説明を提供することを意図している。1つ又は複数のコンピュータ上で実行され得るコンピュータ実行可能命令の一般的な文脈において実施形態が上で説明されてきたが、当業者は、実施形態がまた、他のプログラムモジュールとの組み合わせで、若しくはハードウェア及びソフトウェアの組み合わせとして、又はその両方で実装され得ることを認識するであろう。
【0112】
概して、プログラムモジュールは、特定のタスクを実行する、又は、特定の抽象データタイプを実装するルーチン、プログラム、コンポーネント、若しくはデータ構造、及び/又はなどを含む。また、当業者は、発明の方法は、これらの各々が1つ又は複数の関連付けたデバイスに動作可能に結合され得るシングルプロセッサもしくはマルチプロセッサコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、モノのインターネット(「IoT」)デバイス、分散型コンピューティングシステム、ならびに、パーソナルコンピュータ、ハンドヘルドコンピューティングデバイス、又はマイクロプロセッサベース電子機器もしくはプログラマブルコンシューマ向け電子機器などを含む他のコンピュータシステム構成を用いて実施され得ることを理解するだろう。
【0113】
本明細書における実施形態の示された実施形態は、特定のタスクが通信ネットワークを通してリンクされたリモート処理デバイスによって実行される分散型コンピューティング環境においても実施され得る。分散型コンピューティング環境では、プログラムモジュールは、ローカルおよびリモート両方のメモリストレージデバイスに位置し得る。例えば、1つ又は複数の実施形態において、コンピュータ実行可能コンポーネントは、1つ又は複数の分散型メモリユニットを含み、もしくは1つ又は複数の分散型メモリユニットで構成され、又はその両方が可能であるメモリから実行され得る。本明細書において使用される場合、「メモリ」および「メモリユニット」という用語は、置き替え可能である。さらに、本明細書に記載の1つ又は複数の実施形態は、分布された方式で、コンピュータ実行可能コンポーネントのコードを実行し得、例えば、複数のプロセッサが組み合わせて又は共同で動作して、1つ又は複数の分散型メモリユニットからコードを実行する。本明細書において使用される場合、「メモリ」という用語は、1つの位置、又は複数のメモリ、又は1つ又は複数の位置でのメモリユニットでの単一のメモリ又はメモリユニットを包含し得る。
【0114】
コンピューティングデバイスは典型的には、その2つの用語が以下のように互いに異なるように本明細書で使用される、コンピュータ可読記憶媒体、機械可読記憶媒体、及び/又は通信媒体を含み得る様々な媒体を以下の通り含む。コンピュータ可読記憶媒体又は機械可読記憶媒体は、コンピュータによってアクセスされ得、揮発性媒体および不揮発性媒体の両方、取り外し可能媒体および取り外し不能な媒体の両方を含む任意の利用可能な記憶媒体であり得る。例として、限定されないが、コンピュータ可読記憶媒体又は機械可読記憶媒体は、コンピュータ可読命令又は機械可読命令、プログラムモジュール、構造化データ又は非構造化データなどの情報の格納のための任意の方法又は技術に関連して実装され得る。
【0115】
コンピュータ可読記憶媒体は、これらに限定されるものではないが、ランダムアクセスメモリ(「RAM」)、リードオンリメモリ(「ROM」)、電気的消去可能プログラマブルリードオンリメモリ(「EEPROM」)、フラッシュメモリ又は他のメモリ技術、コンパクトディスクリードオンリメモリ(「CD-ROM」)、デジタル多用途ディスク(「DVD」)、ブルーレイディスク(「BD」)もしくは他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、ソリッドステートドライブもしくは他のソリッドステートストレージデバイス、又は所望の情報を格納するために使用され得る他の有形媒体もしくは非一時的媒体、又はその組み合わせを含み得る。これに関して、ストレージ、メモリ、又はコンピュータ可読媒体に適用される本明細書での「有形」又は「非一時的」という用語は、修飾子としてそれ自体で伝搬する一時的な信号のみを排除するものとして理解されるべきであり、それ自体で伝搬するだけの一時的な信号ではない全ての標準的なストレージ、メモリ、又はコンピュータ可読媒体に対する権利を放棄しない。
【0116】
コンピュータ可読記憶媒体は、媒体によって格納された情報に関する様々な操作のために、例えば、アクセス要求、クエリ、又は他のデータ取得プロトコルを介して、1つ又は複数のローカルコンピューティングデバイスもしくはリモートコンピューティングデバイスによってアクセスされ得る。
【0117】
通信媒体は、典型的には、コンピュータ可読命令、データ構造、プログラムモジュール、又は他の構造化又は非構造化データを、変調されたデータ信号、例えば、搬送波又は他の輸送機構などのデータ信号において具現化し、任意の情報送達又は輸送媒体を含む。「変調されたデータ信号」という用語又は信号は、その特性セットのうちの1つ又は複数を有する信号、あるいは1つ又は複数の信号内の情報をエンコードするような方式で変更された信号を指す。例として、限定されないが、通信媒体には、有線ネットワーク又は直接有線接続などの有線媒体、ならびに音波、RF、赤外線、および他の無線媒体などの無線媒体が含まれる。
【0118】
再び
図12を参照して、本明細書に記載の態様の様々な実施形態を実装するための例示的な環境1200は、コンピュータ1202、処理ユニット1204を含むコンピュータ1202、システムメモリ1206、及びシステムバス1208を含む。システムバス1208は、システムメモリ1206を含むがそれに限定されるものではないシステムコンポーネントを処理ユニット1204に結合する。処理ユニット1204は、様々な市販のプロセッサのいずれかであり得る。デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャはまた、処理ユニット1204として利用されることが可能である。
【0119】
システムバス1208は、様々な市販のバスアーキテクチャのいずれかを使用する(メモリコントローラを有すか、又は、有さない)メモリバス、ペリフェラルバス、及びローカルバスにさらに相互接続し得るいくつかのタイプのバス構造のうちのいずれかであり得る。システムメモリ1206は、ROM1210及びRAM1212を含む。基本入出力システム(「BIOS」)は、BIOSが、スタートアップの間などにコンピュータ1202内の要素同士の間で情報を転送するのに役立つ基本ルーチンを含むROM、消去可能プログラマブルリードオンリメモリ(「EPROM」)、EEPROMのような不揮発性メモリに格納され得る。RAM1212はまた、データをキャッシュするための静的RAMなどの高速RAMを含み得る。
【0120】
コンピュータ1202は、内部ハードディスクドライブ(「HDD」)1214(例えば、EIDE、SATA)、1つ又は複数の外部ストレージデバイス1216(例えば、磁気フロッピディスクドライブ(「FDD」)1216、メモリスティック又はフラッシュドライブリーダ、メモリカードリーダ、及び/又はそれらの組み合わせなど)、及び(例えば、CD-ROMディスク、DVD、BD、及び/又はそれらの組み合わせなどの読み取り及び書き込みをし得る)光ディスクドライブ1220をさらに含む。内部HDD1214がコンピュータ1202内に位置するように示されているが、内部HDD1214はまた、好適なシャシ(図示されていない)における外部使用のために構成され得る。加えて、環境1200には図示していないが、ソリッドステートドライブ(「SSD」)が、HDD1214に加えて、又は、その代わりに使用され得る。HDD1214、外部ストレージデバイス1216、および光ディスクドライブ1220は、それぞれHDDインタフェース1224、外部ストレージインタフェース1226、および光学式ドライブインタフェース1228によって、システムバス1208に接続され得る。外部ドライブ実装形態のためのインタフェース1224は、ユニバーサルシリアルバス(「USB」)、および米国電気電子学会(「IEEE」)1394インタフェース技術の少なくとも1つ又は両方を含み得る。他の外部ドライブ接続技術は、本明細書に記載の実施形態の意図の中に含まれる。
【0121】
ドライブ及びその関連するコンピュータ可読記憶媒体は、データ、データ構造、コンピュータ実行可能命令などの不揮発性ストレージを提供する。コンピュータ1202のために、ドライブおよび記憶媒体は、好適なデジタルフォーマットで任意のデータの格納に対応する。上記のコンピュータ可読記憶媒体の説明はそれぞれのタイプのストレージデバイスを参照するが、現在存在しているものでも又は将来開発されるものでもコンピュータによって可読である他のタイプの記憶媒体も例示的な動作環境において使用し得ること、およびさらに任意のそのような記憶媒体が本明細書に記載の方法を実行するためのコンピュータ実行可能命令を含み得ることが当業者によって理解されるべきである。
【0122】
オペレーティングシステム1230、1つ又は複数のアプリケーションプログラム1232、他のプログラムモジュール1234、及びプログラムデータ1236を含む、いくつかのプログラムモジュールは、ドライブ及びRAM1212に格納され得る。オペレーティングシステム、アプリケーション、モジュール、及び/又はデータの全て又は一部は、RAM1212にもキャッシュされ得る。本明細書に記載のシステムおよび方法は、様々な市販のオペレーティングシステム、又はオペレーティングシステムの組み合わせを用いて実装され得る。
【0123】
コンピュータ1202は任意選択的に、エミュレーション技術を備え得る。例えば、ハイパーバイザ(図示せず)又は他の仲介するものは、オペレーティングシステム1230のためのハードウェア環境をエミュレートでき、エミュレートされたハードウェアは、
図12に示すハードウェアとは任意選択的に異なり得る。そのような一実施形態では、オペレーティングシステム1230は、コンピュータ1202でホストされた複数の仮想機械(「VM」)の1つのVMを含み得る。さらに、オペレーティングシステム1230は、アプリケーション1232のための、Java(登録商標)ランタイム環境又は.NET Frameworkなどのランタイム環境を提供し得る。ランタイム環境は、アプリケーション1232が、ランタイム環境を含む任意のオペレーティングシステム上で実行されることを可能にする一貫性のある実行環境である。同様に、オペレーティングシステム1230は、コンテナをサポートし得、例えば、コード、ランタイム、システムツール、システムライブラリ、及びアプリケーションのための設定を含むソフトウェアの軽量、スタンドアロン、かつ実行可能なパッケージ、アプリケーション1232は、コンテナの形態であり得る。
【0124】
さらに、コンピュータ1202は、信頼できる処理モジュール(「TPM」)などのセキュリティモジュールを用いて有効にすることができる。例えば、TPMを用いると、ブートコンポーネントは、次のブートコンポーネントをロードする前に、時間的に次に来るブートコンポーネントをハッシュし、保護された値への結果の一致するのを待つ。このプロセスは、コンピュータ1202のコード実行スタックにおける任意の層で生じ得、例えば、アプリケーション実行レベル又はオペレーティングシステム(「OS」)カーネルレベルで適用され、それによって、コード実行の任意のレベルでのセキュリティを可能にし得る。
【0125】
ユーザは、1つ又は複数の有線/無線入力デバイス、例えば、キーボード1238、タッチスクリーン1240、及びマウス1242のようなポインティングデバイスを通じてコンピュータ1202にコマンド及び情報を入力し得る。他の入力デバイス(図示せず)は、マイクロフォン、赤外線(「IR」)リモコン、無線周波数(「RF」)リモコン、もしくは他のリモコン、ジョイスティック、バーチャルリアリティコントローラもしくはバーチャルリアリティヘッドセット又はその組み合わせ、ゲームパッド、スタイラスペン、カメラ、ジェスチャセンサ入力デバイス、ビジョンムーブメントセンサ入力デバイス、感情検出デバイスもしくは顔検出デバイスのような画像入力デバイス、又は指紋スキャナもしくは虹彩スキャナのような生体認証入力デバイスなどを含み得る。これら及び他の入力デバイスは、多くの場合、システムバス1208に結合することができる入力デバイスインタフェース1244を通して処理ユニット1204に接続されるが、例えばパラレルポート、IEEE1394シリアルポート、ゲームポート、USBポート、IRインタフェース、BLUETOOTH(登録商標)インタフェースなどの他のインタフェースによって接続され得る。
【0126】
モニタ1246又は他のタイプのディスプレイデバイスはまた、ビデオアダプタ1248のようなインタフェースを介してシステムバス1208に接続され得る。モニタ1246に加えて、コンピュータは典型的には、例えばスピーカ、プリンタ、及び/又はそれらの組み合わせなどの他の周辺出力デバイス(図示せず)を含む。
【0127】
コンピュータ1202は、リモートコンピュータ1250など、1つ又は複数のリモートコンピュータに対する有線通信及び/又は無線通信を介した論理接続を使用して、ネットワーク化された環境において動作し得る。リモートコンピュータ1250は、ワークステーション、サーバコンピュータ、ルータ、パーソナルコンピュータ、ポータブルコンピュータ、マイクロプロセッサベースエンタテインメント機器、ピアデバイス、又は他の一般的なネットワークノードであり得、典型的には、簡潔さのためにメモリ/ストレージデバイス1252のみが示されているが、コンピュータ1202に関して説明された多くの又は全ての要素を含む。示された論理接続は、ローカルエリアネットワーク(「LAN」)1254、もしくはより大きなネットワーク、例えば、ワイドエリアネットワーク(「WAN」)1256、又はその組み合わせへの有線/無線接続を含む。そのようなLANネットワーキング環境およびWANネットワーキング環境は、オフィスおよび企業でよく見られ、イントラネットのような企業規模のコンピュータネットワークを容易にし、これらの全ては、グローバル通信ネットワーク、例えば、インターネットに接続し得る。
【0128】
LANネットワーキング環境において使用されるとき、コンピュータ1202は、有線及び/又は無線の通信ネットワークインタフェース又はアダプタ1258を通じてローカルネットワーク1254に接続され得る。アダプタ1258は、無線モードでアダプタ1258と通信するためにそこに配設された無線アクセスポイント(「AP」)も含み得る、LAN1254への有線通信もしくは無線通信を容易にし得る。
【0129】
WANネットワーキング環境において使用されるとき、コンピュータ1202は、モデム1260を含み得るか、又はインターネットによってのような、WAN1256上の通信を確立するための他の手段を介してWAN1256上の通信サーバに接続され得る。内部又は外部であり得、有線デバイス又は無線デバイスであり得るモデム1260は、入力デバイスインタフェース1244を介してシステムバス1208に接続され得る。ネットワーク化された環境では、コンピュータ1202又はその一部に関して示されたプログラムモジュールは、リモートメモリ/ストレージデバイス1252に格納され得る。示されたネットワーク接続は例示的であり、コンピュータ同士の間の通信リンクを確立する他の手段が使用され得ることが理解されるだろう。
【0130】
LANネットワーキング環境又はWANネットワーキング環境のいずれかにおいて使用されるとき、コンピュータ1202は、上記のように、外部ストレージデバイス1216に加えて、又はその代わりに、クラウドストレージシステム又は他のネットワークベースストレージシステムにアクセスし得る。概して、コンピュータ1202とクラウドストレージシステムとの間の接続は、LAN1254又はWAN1256上で、例えば、それぞれアダプタ1258又はモデム1260によって確立され得る。コンピュータ1202を関連付けられたクラウドストレージシステムに接続すると、外部ストレージインタフェース1226は、アダプタ1258及び/又はモデム1260の補助を用いて、外部ストレージの他のタイプを管理するように、クラウドストレージシステムによって提供されたストレージを管理し得る。例えば、外部ストレージインタフェース1226は、それらのソースがコンピュータ1202に物理的に接続しているかのように、クラウドストレージソースへのアクセスを提供するように構成され得る。
【0131】
コンピュータ1202は、無線通信において動作可能に配置された任意の無線デバイス又はエンティティ、例えば、プリンタ、スキャナ、デスクトップ及び/又はポータブルコンピュータ、携帯情報端末、通信衛星、無線で検出可能なタグに関連付けられた任意の機器又はロケーション(例えば、キオスク、ニューススタンド、店舗の棚など)、及び電話と通信するように動作可能であり得る。これは、ワイヤレスフィデリティ(「Wi-Fi(登録商標)」)およびBLUETOOTH(登録商標)無線技術を含み得る。したがって、通信は、従来のネットワークと同じく事前定義された構造であってもよいし、又は単に、少なくとも2つのデバイス間のその場限りの通信であってもよい。
【0132】
上で説明されてきたものは、システム、コンピュータプログラム製品、およびコンピュータ実装方法の単なる例を含む。もちろん、本開示を説明する目的のために、コンポーネント、製品、もしくはコンピュータ実装方法、又はその組み合わせのあらゆる考えられる組み合わせを説明することは可能ではないが、当業者は、本開示のさらに多くの組み合わせおよび置換が可能であることを認識し得る。さらに、詳細な説明、特許請求の範囲、付録および図面において、「含む(includes)」、「有する(has)」、および、「所有する(possesse)」などの用語が使用される範囲で、そのような用語は、「備える(comprising)」が特許請求の範囲の移行語として利用されるときに解釈されるのと同様に、「備える(comprising)」という用語と同様の方法で包括的であることを意図している。様々な実施形態の説明は、例示のために提示されてきたが、包括的あるか、又は開示された実施形態に限定されることを意図するものではない。説明される実施形態の範囲から逸脱することなく、当業者には多くの修正及び変形が明らかとなるであろう。本明細書において使用される専門用語は、実施形態の原理、実用的な適用又は市場で見られる技術に対する技術的改善点を最適に説明し、又は、本明細書において開示される実施形態を当技術分野の他の当業者が理解することを可能にするように選択された。
【手続補正書】
【提出日】2024-05-01
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピュータ実行可能コンポーネントを格納したメモリ;及び
前記メモリに動作可能に結合され、前記メモリに格納された前記コンピュータ実行可能コンポーネントを実行するプロセッサ
を備え、前記コンピュータ実行可能コンポーネントが、
コード理解タスクのための人工知能モデルの学習挙動を、異なるコード複雑度分布を有する複数のテストデータサブセットに関して人工知能モデルの出力を比較することにより解析するモデルイントロスペクションコンポーネントを有する、システム。
【請求項2】
テストデータセットに含まれた複数のコードサンプルについて、コード複雑度メトリックを抽出する抽出コンポーネント;及び
前記人工知能モデルの前記出力を評価する性能メトリックに基づき前記複数のコードサンプルをグループ分けすることにより、前記複数のテストデータサブセットを生成するテストデータサブセットコンポーネント
をさらに備える、請求項1に記載のシステム。
【請求項3】
前記複数のコードサンプルが、ソースコードサンプルである、請求項2に記載のシステム。
【請求項4】
前記コード複雑度メトリックに基づき、前記複数のテストデータサブセット内の前記複数のコードサンプルの分布を判断する分布コンポーネント
をさらに備える、請求項2に記載のシステム。
【請求項5】
前記複数のテストデータサブセットからの第1のテストデータサブセットに関連付けられたコードサンプルの第1の分布を、前記複数のテストデータサブセットからの第2のテストデータサブセットに関連付けられたコードサンプルの第2の分布と比較する比較コンポーネント
をさらに備える、請求項4に記載のシステム。
【請求項6】
コンピュータ実行可能コンポーネントを格納したメモリ;及び
前記メモリに動作可能に結合され、前記メモリに格納された前記コンピュータ実行可能コンポーネントを実行するプロセッサ
を備え、前記コンピュータ実行可能コンポーネントが
コード理解タスクのための人工知能モデルの学習挙動を、異なるコード複雑度分布を有する複数のテストデータサブセットに対する前記人工知能モデルの性能に基づき推論するモデルイントロスペクションコンポーネントを有する、システム。
【請求項7】
テストデータセットに含まれた複数のコードサンプルについて、コード複雑度メトリックを抽出する抽出コンポーネント;及び
前記人工知能モデルの前記性能を評価する性能メトリックに基づき前記複数のコードサンプルをグループ分けすることにより、前記複数のテストデータサブセットを生成するテストデータサブセットコンポーネント
をさらに備える、請求項6に記載のシステム。
【請求項8】
前記複数のコードサンプルが、ソースコードサンプルである、請求項7に記載のシステム。
【請求項9】
前記コード複雑度メトリックに基づき、前記複数のテストデータサブセット内の前記複数のコードサンプルの分布を判断する分布コンポーネント
をさらに備える、請求項7に記載のシステム。
【請求項10】
前記複数のテストデータサブセットからの第1のテストデータサブセットに関連付けられたコードサンプルの第1の分布を、前記複数のテストデータサブセットからの第2のテストデータサブセットに関連付けられたコードサンプルの第2の分布と比較する比較コンポーネント
をさらに備える、請求項9に記載のシステム。
【請求項11】
プロセッサに動作可能に結合されたシステムによって、コード理解タスクのための人工知能モデルの学習挙動を、異なるコード複雑度分布を有する複数のテストデータサブセットに関して人工知能モデルの出力を比較することにより解析する段階
を備える、コンピュータ実装方法。
【請求項12】
テストデータセットに含まれた複数のコードサンプルついて、コード複雑度メトリックを前記システムによって抽出する段階;及び
前記人工知能モデルの前記出力を評価する性能メトリックに基づき前記複数のコードサンプルをグループ分けすることにより、前記複数のテストデータサブセットを前記システムによって生成する段階
をさらに備える、請求項11に記載のコンピュータ実装方法。
【請求項13】
前記複数のコードサンプルが、ソースコードサンプルである、請求項12に記載のコンピュータ実装方法。
【請求項14】
前記コード複雑度メトリックに基づき、前記複数のテストデータサブセット内の前記複数のコードサンプルの分布を、前記システムによって判断する段階
をさらに備える、請求項12に記載のコンピュータ実装方法。
【請求項15】
前記複数のテストデータサブセットからの第1のテストデータサブセットに関連付けられたコードサンプルの第1の分布を、前記複数のテストデータサブセットからの第2のテストデータサブセットに関連付けられたコードサンプルの第2の分布と、前記システムによって比較する段階
をさらに備える、請求項14に記載のコンピュータ実装方法。
【請求項16】
プロセッサに動作可能に結合されたシステムによって、コード理解タスクのための人工知能モデルの学習挙動を、異なるコード複雑度分布を有する複数のテストデータサブセットに対する前記人工知能モデルの性能に基づき推論する段階
を備える、コンピュータ実装方法。
【請求項17】
テストデータセットに含まれた複数のコードサンプルついて、コード複雑度メトリックを前記システムによって抽出する段階;及び
前記人工知能モデルの前記性能を評価する性能メトリックに基づき前記複数のコードサンプルをグループ分けすることにより、前記複数のテストデータサブセットを前記システムによって生成する段階
をさらに備える、請求項16に記載のコンピュータ実装方法。
【請求項18】
前記複数のコードサンプルが、ソースコードサンプルである、請求項17に記載のコンピュータ実装方法。
【請求項19】
前記コード複雑度メトリックに基づき、前記複数のテストデータサブセット内の前記複数のコードサンプルの分布を、前記システムによって判断する段階
をさらに備える、請求項17に記載のコンピュータ実装方法。
【請求項20】
前記複数のテストデータサブセットからの第1のテストデータサブセットに関連付けられたコードサンプルの第1の分布を、前記複数のテストデータサブセットからの第2のテストデータサブセットに関連付けられたコードサンプルの第2の分布と、前記システムによって比較する段階
をさらに備える、請求項19に記載のコンピュータ実装方法。
【請求項21】
コード複雑度駆動型のモデルイントロスペクションのためのコンピュータプログラ
ムであって、前記コンピュータプログラ
ムは、プログラム命令
を備え、前記プログラム命令は、プロセッサに
コード理解タスクのための人工知能モデルの学習挙動を、異なるコード複雑度分布を有する複数のテストデータサブセットに関して人工知能モデルの出力を比較することにより、前記プロセッサによって解析させる
ように、前記プロセッサによって実行可能である、コンピュータプログラ
ム。
【請求項22】
前記プログラム命令は、前記プロセッサにさらに、
テストデータセットに含まれた複数のコードサンプルついて、コード複雑度メトリックを前記プロセッサによって抽出させ;
前記人工知能モデルの前記出力を評価する性能メトリックに基づき前記複数のコードサンプルをグループ分けすることにより、前記複数のテストデータサブセットを前記プロセッサによって生成させる
請求項21に記載のコンピュータプログラ
ム。
【請求項23】
前記複数のコードサンプルが、ソースコードサンプルである、請求項22に記載のコンピュータプログラ
ム。
【請求項24】
前記プログラム命令は、前記プロセッサにさらに、
前記コード複雑度メトリックに基づき、前記複数のテストデータサブセット内の前記複数のコードサンプルの分布を、前記プロセッサによって判断させる、請求項23に記載のコンピュータプログラ
ム。
【請求項25】
前記プログラム命令は、前記プロセッサにさらに、
前記複数のテストデータサブセットからの第1のテストデータサブセットに関連付けられたコードサンプルの第1の分布を、前記複数のテストデータサブセットからの第2のテストデータサブセットに関連付けられたコードサンプルの第2の分布と、前記プロセッサによって比較させる、請求項24に記載のコンピュータプログラ
ム。
【国際調査報告】