以下の説明では、多様な実施形態のより徹底した理解をもたらすために多数の具体的な詳細を説明する。しかし、本発明がこれらの具体的な詳細の1つまたは複数がなくとも発明の概念が実施され得ることは、当業者には明らかであろう。
上記のように、ディープニューラルネットワークは、多数の層と複雑な接続トポロジを含む複雑なネットワークアーキテクチャを有することができる。その結果、ディープニューラルネットワークは設計者が生成するのが難しい場合がある。さらに、ディープニューラルネットワークが生成されると、ディープニューラルネットワークに関連するネットワークアーキテクチャの複雑さは、設計者が分析及び理解するのが困難になる可能性がある。ディープニューラルネットワークを分析及び理解できることが限られているため、設計者は、ディープニューラルネットワークが目的のタスクをどの程度うまく実行しているかを評価するのがさらに困難になる可能性がある。最後に、ディープニューラルネットワークがどのように動作するかを明確に理解していないため、設計者はディープニューラルネットワークの動作を簡単に特徴付けたり、その動作を他者に説明したりすることはできない。
これらの問題に対処するために、様々な実施形態は、ニューラルネットワークを生成、分析、評価、及び記述するための様々なツールを使用者に明示する人工知能(AI)の設計アプリケーションを含む。AIの設計アプリケーションには、ネットワークアーキテクチャのグラフィカルな描写とユーザとのインタラクションに基づいてニューラルネットワークを定めるプログラムコードを生成及び/または更新するネットワークジェネレータが含まれている。また、AIの設計アプリケーションには、テスト入力に応じて、層のレベル、ニューロンのレベル、及び重みのレベルでニューラルネットワークの挙動を分析するネットワークアナライザも含まれている。AIの設計アプリケーションには、訓練データのサンプルの範囲全体でニューラルネットワークの包括的な評価を実行するネットワーク評価器がさらに含まれている。最後に、AIの設計アプリケーションには、ニューラルネットワークの挙動を自然言語でアーティキュレートし、ルールのセットに従ってその挙動を制約するネットワーク記述子が含まれている。
従来技術と比較した開示された技術の少なくとも1つの技術的な利点は、開示されたAIの設計アプリケーションが、設計者であるユーザが大量のプログラムコードを書いたり対話したりすることを必要とせずに、複雑なニューラルネットワークアーキテクチャを生成できることである。従来技術と比較した開示された技術の別の技術的な利点は、開示されたAIの設計アプリケーションが、所与のニューラルネットワークアーキテクチャの個々のコンポーネントの基礎となる動作及び機能に関する詳細な情報を設計者に提供するということである。したがって、AIの設計アプリケーションは、設計者が開発することを可能にし、ニューラルネットワークがどのように動作するかのさらなる理解を可能にする。従来技術と比較した開示された技術の別の技術的な利点は、開示されたAIの設計アプリケーションが、訓練段階中に所与のニューラルネットワークがどのように動作するかについて詳細な分析を実行し、それによって、ニューラルネットワークが特定の入力に基づいて特定の出力を生成する理由を設計者がよりよく理解できるようにするということである。従来技術と比較した開示された技術のさらに別の技術的な利点は、開示されたAIの設計アプリケーションが、所与のニューラルネットワークがどのように動作及び機能するかを特徴付ける自然言語の記述を自動的に生成することである。特に、これらの説明は、ニューラルネットワークの動作を設計者に説明するのに役立ち、設計者がニューラルネットワークの機能特性を他者にアーティキュレート及び説明できるようにする。これらの技術的な利点は、従来技術のアプローチに対する1つまたは複数の技術的進歩を表している。
システムの概要
図1は、様々な実施形態の1つ以上の態様を実装するように構成されているシステムを示す。示されるように、システム100は、ネットワーク150を介して互いに結合されたクライアント110及びサーバ130を含む。クライアント110またはサーバ130は、デスクトップコンピュータ、ラップトップコンピュータ、モバイルデバイス、コンピューティングデバイスの仮想化されたインスタンス、分散型及び/またはクラウドベースのコンピュータシステムなどを含む、技術的に実現可能な任意のタイプのコンピュータシステムであり得る。ネットワーク150は、とりわけ、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、ワールドワイドウェブ、またはインターネットを含む、技術的に実現可能な相互接続された通信リンクの任意のセットであり得る。クライアント110及びサーバ130は、ネットワーク150を介して通信するように構成される。
さらに示されるように、クライアント110は、互いに結合されたプロセッサ112、入力/出力(I/O)デバイス114、及びメモリ116を含む。プロセッサ112は、データを処理し、ソフトウェアアプリケーションを実行するように構成された技術的に実行可能な任意のハードウェアユニットのセットを含む。例えば、プロセッサ112は、1つまたは複数の中央処理装置(CPU)、1つまたは複数のグラフィックス処理装置(GPU)、及び/または1つまたは複数の並列処理装置(PPU)を含むことができる。I/Oデバイス114は、例えば、とりわけ、ディスプレイデバイス、キーボード、及びタッチスクリーンを含む、入力及び/または出力の操作を実行するように構成された任意の技術的に実行可能なデバイスのセットを含む。
メモリ116は、例えば、ハードディスク、ランダムアクセスメモリ(RAM)モジュール、及び読み取り専用メモリ(ROM)などの、データ及びソフトウェアアプリケーションを記憶するように構成された、任意の技術的に実現可能な記憶媒体を含む。メモリ116は、データベース118(0)、人工知能(AIの)設計アプリケーション120(0)、AIモデル122(0)、及びグラフィカルユーザインターフェイス(GUI)124(0)を含む。データベース118(0)は、様々なタイプのデータを格納するファイルシステム及び/またはデータストレージアプリケーションである。AIの設計アプリケーション120(0)は、プロセッサ112によって実行されるとき、サーバ130で実行される対応するソフトウェアアプリケーションと相互運用して、1つまたは複数のAIモデルを生成、分析、評価、及び記述するソフトウェアアプリケーションである。AIモデル122(0)には、汎用または特殊な人工知能指向の操作を実行するように構成された1つ以上の人工のニューラルネットワークが含まれている。GUI124(0)により、ユーザはAIの設計アプリケーション120(0)とインターフェイスすることができるようになる。
サーバ130は、互いに結合されたプロセッサ132、I/Oデバイス134、及びメモリ136を含む。プロセッサ132は、データを処理し、ソフトウェアアプリケーションを実行するように構成された、任意の技術的に実現可能なハードウェアユニットのセット、例えば1つまたは複数のCPU、1つまたは複数のGPU、及び/または1つまたは複数のPPUを含む。I/Oデバイス134は、例えば、とりわけ、ディスプレイデバイス、キーボード、及びタッチスクリーンを含む、入力及び/または出力の操作を実行するように構成された任意の技術的に実行可能なデバイスのセットを含む。
メモリ136は、例えば、ハードディスク、RAMモジュール、及びROMなどの、データ及びソフトウェアアプリケーションを記憶するように構成された、任意の技術的に実現可能な記憶媒体を含む。メモリ136は、データベース118(1)、AIの設計アプリケーション120(1)、AIモデル122(1)、及びGUI124(1)を含む。データベース118(1)は、データベース118(1)と同様に、様々なタイプのデータを格納するファイルシステム及び/またはデータストレージアプリケーションである。AIの設計アプリケーション120(1)は、プロセッサ132によって実行されるとき、AIの設計アプリケーション120(0)と相互運用して、1つまたは複数のAIモデルを生成、分析、評価、及び記述するソフトウェアアプリケーションである。AIモデル122(1)には、汎用または特殊な人工知能指向の操作を実行するように構成された1つ以上の人工のニューラルネットワークが含まれている。GUI124(1)により、ユーザはAIの設計アプリケーション120(1)とインターフェイスすることができるようになる。
一般的な問題として、データベース118(0)と118(1)は、分散ストレージエンティティの別々の部分を表す。したがって、簡単にするために、データベース118(0)及び118(1)は、本明細書ではまとめてデータベース118と呼ばれる。同様に、AIの設計アプリケーション120(0)及び120(1)は、本明細書で説明される本発明の操作のいずれか及びすべてを実行するように構成される分散ソフトウェアエンティティの別個の部分を表す。したがって、AIの設計アプリケーション120(0)及び120(1)は、以下、まとめてAIの設計アプリケーション120と呼ばれる。AIモデル122(0)及び122(1)も同様に、1つ以上のニューラルネットワークを含む分散AIモデルを表す。したがって、AIモデル122(0)及び122(1)は、本明細書ではまとめてAIモデル122と呼ばれる。GUI124(0)及び124(1)は、同様に、1つまたは複数のGUIの分散部分を表す。GUI124(0)及び124(1)は、本明細書ではまとめてGUI124と呼ばれる。
動作中、AIの設計アプリケーション120は、GUI124を介して受信されたユーザの入力に基づいて、AIモデル122を生成する。GUI124は、他の操作の中でも、ユーザがAIモデル122を作成及び編集し、AIモデル122の機能を調査し、訓練データに関連してAIモデル122を評価し、AIモデル122のパフォーマンス及び/または動作を説明及び/または制約する様々なデータを生成できるようにする設計及び分析ツールを明示する。上記の動作を実行するAIの設計アプリケーション120内の様々なモジュールは、図2と併せて以下でより詳細に説明される。
図2は、様々な実施形態による、図1のAIの設計アプリケーションのより詳細な図である。示されるように、AIの設計アプリケーション120は、ネットワークジェネレータ200、ネットワークアナライザ210、ネットワーク評価器220、及びネットワーク記述子230を含む。また示されるように、AIモデル122は、1つまたは複数のエージェント240を含み、GUI124は、ネットワーク生成GUI202、ネットワーク分析GUI212、ネットワーク評価GUI222、及びネットワーク記述GUI232を含む。
動作中、ネットワークジェネレータ200は、ネットワーク生成GUI202をレンダリングして、AIモデル122内のエージェント240を設計及び接続するためのツールをユーザに提供する。所与のエージェント240は、様々なAI指向タスクを実行するニューラルネットワーク242を含み得る。所与のエージェント240はまた、一般的なタスクを実行する他のタイプの機能的な要素を含み得る。ネットワークジェネレータ200は、訓練データ250に基づいて、特定のエージェント240に含まれるニューラルネットワーク242を訓練する。訓練データ250は、ニューラルネットワークを訓練するための任意の技術的に実行可能なタイプのデータを含むことができる。例えば、訓練データ250には、Modified National Institute of Standards and Technology(MNIST)の数字訓練セットを含めることができる。ネットワークジェネレータ200及びネットワーク生成GUI202は、図3~7と併せて以下でより詳細に説明される。
訓練が完了すると、ネットワークアナライザ210は、ネットワーク分析GUI212をレンダリングして、所与のエージェント240内のニューラルネットワークがどのように動作するかを分析及び理解するためのツールをユーザに提供する。特に、ネットワークアナライザ210は、ネットワーク分析GUI212に、所与のニューラルネットワーク242内の様々な接続及び重みを表示させ、他の動作の中でもとりわけ、様々な入力に対する所与のニューラルネットワーク242の応答をシミュレートさせる。ネットワークアナライザ210及びネットワーク分析GUI212は、図8~15Bと併せて以下でより詳細に説明される。
さらに、ネットワーク評価器220は、ネットワーク評価GUI222をレンダリングして、訓練データ250に関連して所与のニューラルネットワーク242を評価するためのツールをユーザに提供する。より具体的には、ネットワーク評価器220は、訓練データ250の特定の部分を示すネットワーク評価GUI222を介してユーザの入力を受け取る。次に、ネットワーク評価器220は、所与のニューラルネットワーク242が訓練データ250の該当部分にどのように応答するかをシミュレートする。ネットワーク評価器220はまた、ネットワーク評価GUI222に、所与のニューラルネットワーク242に特定のタイプの出力を生成させる訓練データ250の特定の部分をフィルタリングさせることができる。ネットワーク評価器220及びネットワーク評価GUI222は、図16~27Bと併せて以下でより詳細に説明される。
上記と併せて、ネットワーク記述子230は、エージェント240に関連付けられた所与のニューラルネットワーク242を分析し、ニューラルネットワーク242のパフォーマンスをユーザに説明する自然言語表現を生成する。ネットワーク記述子230はまた、ニューラルネットワーク242が訓練データ250をどのように解釈するかに関連する様々な「常識」の事実をユーザに提供することができる。ネットワーク記述子230は、ネットワーク記述GUI232を介してこのデータをユーザに出力する。さらに、ネットワーク記述子230は、ネットワーク記述GUI232を介してユーザからルールベースの式を取得し、次にこれらの式に基づいてネットワークの挙動を制約することができる。さらに、ネットワーク記述子230は、ネットワークのパフォーマンスの様々な側面を定量化するメトリックを生成し、次いで、ネットワーク記述GUI232を介してこれらのメトリックをユーザに表示することができる。ネットワーク記述子230及びネットワーク記述子GUI232は、図38~38Bと併せて以下でより詳細に説明される。
図1~2を概ね参照すると、AIの設計アプリケーション120は、ニューラルネットワークの挙動を生成、分析、評価、及び記述するための様々なツールを有利にユーザに提供する。開示された技術は、一般にネットワーク訓練及びその後のユーザからの操作を難読化するニューラルネットワークを生成する従来のアプローチとは異なる。
ニューラルネットワークの生成と変更
図3~7は、訓練データ250に基づいてニューラルネットワーク242を生成し、続いてそのニューラルネットワークを変更するときに、図2のネットワークジェネレータ200によって実装される様々な技術を示している。本明細書でより詳細に説明するように、ネットワークジェネレータ200は、ニューラルネットワークの生成及び変更を容易にするために、ネットワーク生成GUI202を生成する。
図3は、様々な実施形態による、図1のAIのネットワークジェネレータのより詳細な図解である。示されるように、ネットワークジェネレータ200は、コンパイラエンジン300、合成エンジン310、訓練エンジン320、及び視覚化エンジン330を含む。
動作中、視覚化エンジン330は、ネットワーク生成GUI202を生成し、ネットワーク生成GUI202を介してユーザからエージェント定義340を取得する。コンパイラエンジン200は、所与のエージェント定義340に含まれるプログラムコードをコンパイルして、コンパイルされたコード302を生成する。コンパイラエンジン200は、C、C++、Python及び関連するフレームワーク、JavaScript、及び関連するフレームワークなど、任意の技術的に実現可能なプログラミング言語を解析、コンパイル、及び/または解釈するように構成されている。合成エンジン310は、コンパイルされたコード302と、当該のコードの実行方法に影響を与える1つ以上のパラメータに基づいて、初期ネットワーク312を生成する。初期ネットワーク312は訓練されず、高精度で1つまたは複数の意図された動作を実行しない可能性がある。
訓練エンジン330は、訓練データ250に基づいて初期ネットワーク312を訓練して、訓練されたネットワーク322を生成する。訓練されたネットワーク322は、初期ネットワーク312よりも高い精度で1つまたは複数の意図された操作を実行することができる。訓練エンジン330は、逆伝播、最急降下法などを含む、技術的に実行可能な任意のタイプの訓練動作を実行することができる。視覚化エンジン330は、上記の動作と併せてネットワーク生成GUI202を更新して、エージェント定義340を介して定義されたネットワークアーキテクチャをグラフィカルに描写し、訓練されたネットワーク322の様々なパフォーマンス属性を例示する。図4~6は、ネットワーク生成GUI202の様々な例示的なスクリーンショットを示している。
図4は、様々な実施形態による、図2のネットワーク生成GUIがどのようにニューラルネットワークの生成を促すかを示すスクリーンショットである。示されるように、GUIパネル400は、モデル定義パネル410、ハイパーパラメータパネル420、及び説明パネル430を含む。GUIパネル400は、ネットワーク生成GUI202内にある。
モデル定義パネル410は、ユーザからネットワークアーキテクチャの説明を取得するテキストフィールドである。例えば、モデル定義パネル410は、ニューラルネットワークに関連付けられた1つまたは複数の層と、それらの層がどのように互いに結合されるかを定義するプログラムコードを受け取ることができる。あるいは、モデル定義パネル410は、ニューラルネットワークアーキテクチャを数学的に記述した数学的表記を受け取ることができる。一実施形態では、モデル定義パネル410は、ネットワークの一部を明示し、とりわけ、モジュールのインポートなど、ユーザが編集する必要のない他の部分を省略している。ハイパーパラメータパネル420は、ニューラルネットワークがどのように訓練されるかに影響を与える様々なハイパーパラメータを受け取るテキストフィールドである。例えば、ハイパーパラメータパネル420は、ユーザからいくつかの訓練エポック及び/または学習レートを受け取ることができる。説明パネル430は、モデル定義パネル410のコンテンツに少なくとも部分的に基づいて、ネットワークジェネレータ200によって自動的に生成されるニューラルネットワークの自然言語の説明を含む。
ネットワークジェネレータ200は、ユーザから取得したネットワークアーキテクチャの記述に基づいて、図2に示しているもののような、ニューラルネットワークを生成するための、図3と併せて上述した技術を実装する。ネットワークジェネレータ200はまた、ネットワークアーキテクチャ440を含むようにGUIパネル400を更新する。ネットワークアーキテクチャ440は、ニューラルネットワークの層のタイプ及び配置、ならびにニューラルネットワークに関連する他の任意のトポロジ情報をグラフィカルに描写する。示される例では、ネットワークアーキテクチャ440は、入力層442、2つの畳み込み層442及び446、最大プーリング層448、ドロップアウト層450、及び活性化層452を含む。
ネットワークジェネレータ300は、ネットワークアーキテクチャ440とのユーザの対話に基づいて、モデル定義パネル410で定義された基礎となるニューラルネットワーク242を、動的に変更するように構成される。例えば、ネットワークジェネレータ300は、ネットワークアーキテクチャ440の特定の部分が変更されるべきであることを示すユーザの入力を受け取ることができる。それに応じて、ネットワークジェネレータ300は、基礎となるニューラルネットワークを変更し、また、対応する方法でモデル定義パネル410に含まれる定義を更新する。さらに、ネットワークジェネレータ300は、モデル定義パネル410とのユーザの対話に基づいてネットワークアーキテクチャ440を動的に変更するように構成される。例えば、GUIパネル400は、モデル定義パネル410に記載された説明に対する1つまたは複数の変更を示す入力を受け取ることができる。それに応じて、ネットワークジェネレータ300は、基礎となるニューラルネットワークを変更し、また、変更を反映するようにネットワークアーキテクチャ440を更新する。
ネットワークジェネレータ300は、エージェント240に含まれるニューラルネットワーク242を作成及び変更するために、ネットワーク生成GUI302を介して上記の技術を実装することができる。ネットワークジェネレータ300はまた、前述のように、一般的な動作を実行する他のタイプのエージェントを定義することができる。ネットワーク生成GUI302を介して、ネットワークジェネレータ300は、図5と併せて以下でより詳細に説明されるように、特定のAIモデル122を実装するエージェント240の構成を取得する。
図5は、様々な他の実施形態による、図2のネットワーク生成GUIがどのようにAIモデルの生成を促すかを示すスクリーンショットである。示されるように、GUIパネル500は、エージェントパネル510、設計領域520、及び訓練データパネル530を含む。GUIパネル500は、ネットワーク生成GUI202に含まれている。この例に関連して説明したAIモデルは、自動車の写真に基づいてナンバープレートの情報を決定することに関連する様々な動作を実行する。
エージェントパネル510は、エージェント240(0)(「車を見つける」)、エージェント240(1)(「ナンバープレートを見つける」)、エージェント240(2)(「ナンバープレートを読む」)、及びエージェント240(3)(「登録の検索」)を含む、特定のタスクを実行する利用可能なエージェント240のリストを含む。エージェント240(0)から240(2)は、一般に、画像処理とタグ付け動作を実行するニューラルネットワークベースのエージェントである。対照的に、エージェント240(3)には、特定のナンバープレートに関連付けられた登録情報を取得するために外部サーバとインターフェイスするプログラムコードが含まれている。
ネットワーク生成GUI202とのユーザの対話に基づいて、ネットワークジェネレータ200は、エージェントパネル510から選択された様々なエージェント240を配置して、設計領域520内にAIモデル122を生成する。この例では、AIモデル122は、ニューラルネットワーク242とその他の機能ユニットのコレクションであり、訓練が完了すると、自動車の写真を分析してナンバープレートの番号を抽出し、次いでそれらのナンバープレートの番号に関連付けられた登録情報を取得できる。動作中、エージェント240(0)は、入力画像内で車または他の自動車を見つける。エージェント240(1)は、これらの車やその他の自動車に関連付けられているナンバープレートを特定する。エージェント240(2)は、特定されたナンバープレートからテキストを抽出する。エージェント240(3)は、抽出されたナンバープレートの番号の登録情報を取得するためにサーバにクエリを実行する。
ネットワークジェネレータ200は、訓練データ250に基づいて、AIモデル122(0)内でニューラルネットワークベースのエージェント240を訓練する。例示的な訓練データは、訓練データパネル530内に表示される。示されるように、訓練データパネル530は、自動車の様々なサンプルの写真を描写している。一実施形態では、訓練プロセスを容易にするために、各自動車のナンバープレートにラベルを付けることができる。
ネットワークジェネレータ200は、ユーザの入力に応答して、エージェント240のいずれかに関連する基礎となるデータを明示することができる。例えば、エージェント240(3)のユーザの選択に応答して、ネットワークジェネレータ200は、前述の方法で登録情報を取得するためにサーバにクエリをするプログラムコードを表示することができる。ネットワークジェネレータ200は、当該のプログラムコードへの変更を受け取り、次いでそれに応じてAIモデル122を更新することができる。ニューラルネットワークベースのエージェント240のユーザの選択に応答して、ネットワークジェネレータ200は、図6と併せて以下に説明する様々なGUI要素を介して、基礎となるニューラルネットワーク242を含む、当該のエージェントに関連する基礎となるデータを明示する。
図6は、様々な実施形態による、図5のエージェントの1つに関連する様々な基礎となるデータのスクリーンショットである。示されるように、図5のGUIパネル500は、GUIパネル500の他のGUI要素の上に重ね合わされるウィンドウ600を含む。ウィンドウ600には、選択したエージェントに関連付けられた様々な基礎となるデータが含まれている。示されている例では、エージェント250(2)が選択されている(「ナンバープレートを読み取る」)。
ウィンドウ600は、エージェント250(2)を定義するプログラムコードを含むモデル定義パネル610、関連するニューラルネットワークを訓練するときに使用される様々なハイパーパラメータを定義するハイパーパラメータパネル620、及び当該のニューラルネットワークの様々な属性を記述する記述パネル630を含む。ウィンドウ600はまた、ネットワークアーキテクチャ640を含む。図4と併せて上述したのと同様の方法で、ネットワークジェネレータ200は、ネットワークアーキテクチャ640とのユーザの対話に基づいて、モデル定義ウィンドウ610に示されるモデル定義を更新することができる。例えば、ネットワークアーキテクチャ640の層が除去されるべきであることを示すユーザ入力に応答して、ネットワークジェネレータ200は、モデル定義の対応する部分を削除することができる。
図3~6を概ね参照すると、上記の技術は、多数のエージェント240を含む潜在的に複雑なAIモデル122に統合されるニューラルネットワークを生成及び更新するための便利なメカニズムをユーザに提供する。さらに、これらの技術により、ユーザは、対応するネットワークアーキテクチャのグラフィカルな描写との直接的な対話を介して、所与のエージェント240を定義するプログラムコードを変更することができる。ネットワークジェネレータ200は、ネットワーク生成GUI202を介して行われるユーザの対話に基づいて、上記の様々な操作を実行する。開示された技術は、従来技術のテクニックで一般的に見られるように、情報を隠したままにするのではなく、ネットワーク情報をユーザに明示するニューラルネットワークを設計及び相互作用するための便利なツールをユーザに提供する。ネットワークジェネレータ200の動作は、図7と併せて以下でより詳細に説明される。
図7は、様々な実施形態による、グラフィカルユーザインターフェイスを介してニューラルネットワークを生成及び変更するための方法ステップのフローの図である。方法ステップは、図1~6のシステムと併せて説明されるが、当業者は、任意の順序で方法ステップを実行するように構成された任意のシステムが、本実施形態の範囲内にあることを理解する。
示されるように、方法700は、ステップ702で始まり、それにおいて図3の設計ジェネレータ200は、エージェントのセット及び訓練データのセットを描写するための設計生成GUI202を生成する。特定のエージェントには、ニューラルネットワーク指向の操作を実行するニューラルネットワーク、または実行時に任意の技術的に実行可能な動作を実行するプログラムコードが含まれる場合がある。設計生成GUI202はまた、AIモデル122を生成するためにエージェントを互いに配置及び結合することができる設計領域を含む。
ステップ704において、ネットワークジェネレータ200は、ネットワーク生成GUI202を介してAIモデルを形成するエージェント240の構成を受信する。互いに結合されると、特定のエージェントの出力を別のエージェントへの入力として提供でき、それにより処理ステージのパイプラインが形成される。一実施形態では、設計生成GUI202は、ユーザが、エージェントを設計領域内の異なる場所にドラッグアンドドロップし、エージェントの出力と入力との間の接続をドラッグすることを可能にし得る。
ステップ706で、設計ジェネレータ200は、設計生成GUI202とのユーザの対話を介してエージェントの定義を受信する。エージェントの定義には通常、実行時にAIモデルの包括的な動作に関連する1つ以上の動作を実行するプログラムコードが含まれる。本明細書で論じられるエージェントの定義は、訓練データに基づいて訓練される必要があるニューラルネットワーク242を定義する。場合によっては、エージェントの定義は、説明したように、実行時に特定の動作を実行する特定の関数を定義できる。
ステップ708で、ネットワークジェネレータ200は、ステップ706で受信したエージェントの定義をコンパイルして、コンパイルされたコードを生成する。コンパイルされたコードは、ニューラルネットワーク242の様々な層及びそれらの層間の様々な接続を実装する。コンパイルされたコードは通常、AIモデルが実行される特定のコンピュータシステムに関連付けられた、基礎となるハードウェアを対象としている。
ステップ710で、ネットワークジェネレータ200は、コンパイルされたコードを合成して、ネットワークの初期バージョンを生成する。そうすることで、ネットワークジェネレータ200は、構成パラメータ及び訓練パラメータを含む1つまたは複数の入力パラメータを用いてコンパイルされたコードを実行して、ネットワークのインスタンスをインスタンス化する。ネットワークの初期バージョンが訓練されておらず、訓練が完了するまで推論動作を正確には実行できない場合がある。
ステップ712で、ネットワークジェネレータ200は、訓練データに基づいてネットワークの初期バージョンを訓練して、訓練されたバージョンのネットワークを生成する。訓練データには通常、ネットワークが処理するデータのサンプルが含まれ、ネットワークが生成するべき正しい出力を示すラベルが含まれ得る。ネットワークジェネレータ200は、バックプロパゲーション、勾配降下、または訓練に対する他のいずれかの技術的に実行可能なアプローチを使用してネットワークを訓練することができる。
ステップ714で、ネットワークジェネレータ200は、設計生成GUI202を更新して、ユーザが選択したエージェント240に関連する基礎となるデータを明示する。例えば、設計ジェネレータ200は、とりわけ、モデル定義パネル及びハイパーパラメータパネルを含むウィンドウを生成することができ、それを介して、ユーザは、エージェント240に関連付けられたニューラルネットワーク242を変更することができる。ウィンドウには、ユーザが対話してニューラルネットワークに変更を適用できるネットワークアーキテクチャのグラフィック描写をさらに含めることができる。この特定の例は、図6と併せて上述されている。
ステップ716で、ネットワークジェネレータ200は、設計生成GUI202とのユーザの対話を介してネットワークアーキテクチャへの変更を受け取る。例えば、ユーザは、ネットワーク生成GUI202に示されているネットワークアーキテクチャの層を選択し、次にその層をネットワークアーキテクチャから削除することができる。別の例では、ユーザはネットワークアーキテクチャの一部を選択してから、ネットワークアーキテクチャのその部分に関連付けられた1つまたは複数のパラメータを変更できる。
ステップ718で、ネットワークジェネレータ200は、ステップ716で受信されたネットワークアーキテクチャへの変更に基づいて、エージェントの定義を更新及び再度コンパイルする。例えば、ユーザが設計生成GUI202との対話を介してネットワークアーキテクチャの層を削除する場合、ネットワークジェネレータ200は、エージェントの定義を更新して、その層を定義するコードの1つまたは複数の対応する行を削除することができる。
一般的な問題として、ニューラルネットワークを生成及び変更するための上記の技術により、ユーザは、従来のアプローチが可能にするよりもはるかに高速にニューラルネットワークを設計及び変更することができる。とりわけ、ネットワークジェネレータ200は、ネットワークの生成に関連する複雑なタスクを実行するための単純で直感的なツールを提供する。さらに、ネットワークジェネレータ200は、ニューラルネットワークアーキテクチャに加えられた変更を、対応するエージェントの定義にシームレスに伝播して戻すことを、便利にも可能にする。ネットワークが説明された方法で訓練されると、ネットワークアナライザ210は、図8~15Bと併せて以下でより詳細に説明されるように、ネットワーク機能を分析するための様々な技術を実行する。
ニューラルネットワークのコンポーネントの検査と分析
図8~15Bは、訓練データ250に基づいて訓練されたニューラルネットワークを分析するときに、図2のネットワークアナライザ210によって実装される様々な技術を示している。本明細書でより詳細に説明するように、ネットワークアナライザ210は、ニューラルネットワークの分析及び検査を容易にするために、ネットワーク分析GUI212を生成する。
図8は、様々な実施形態による、図2のネットワークジェネレータのより詳細な図解である。示されるように、ネットワーク分析エンジン210は、推論エンジン800、近似エンジン810、言語エンジン820、及び視覚化エンジン830を含む。
動作中、推論エンジン800は、エージェント240及びテスト入力804を用いて推論動作を実行することによって、活性化データ802を生成する。特に、推論エンジンは、エージェント240に関連付けられたニューラルネットワーク242にテスト入力804を提供し、次に、テスト入力804に対するそのニューラルネットワークの応答を決定する。活性化データ802は、ニューラルネットワークの特定の層に関連する応答の確率分布を示す。推論エンジン800は、ネットワーク分析GUI212への後続的な組み込みのために、活性化データ802を視覚化エンジン830に送信する。推論エンジン800はまた、活性化データ802を近似エンジン810及び言語エンジン820に送信する。
近似エンジン810は、訓練データ250と併せて活性化データ802を分析して、訓練サンプル812を生成する。訓練サンプル812は、ニューラルネットワーク242に、活性化データ802と実質的に同様の活性化データを生成させる訓練データ250のサブセットを含む。所与の活性化データと活性化データ802との間の数値の差が差の値の閾値よりも小さい場合、所与の活性化データは、活性化データ802と「実質的に類似している」と見なされ得る。一実施形態では、訓練データ250は、訓練中に以前に記録された各サンプルに関連する活性化レベルを含み得る。別の実施形態では、近似エンジン810は、推論エンジン800に各サンプルで推論動作を実行させることによって、各サンプルの活性化レベルを生成する。近似エンジン810は、訓練サンプル812を視覚化エンジン830に送信して、その後、ネットワーク分析GUI212に組み込む。
言語エンジン820は、記述822を生成するために、活性化データ802を処理する。記述822は、テスト入力804に関連するニューラルネットワーク242の動作の様々な高レベルの特性を反映する自然言語表現である。例えば、記述822は、活性化データ802が、テスト入力804が特定のカテゴリに分類されるべきであることを強く示唆していることを示し得る。言語エンジン820は、異なる活性化レベルに対応する特定の単語をテンプレートの式に取り込むことによって、自然言語記述を生成することができる。例えば、特定のテンプレートは「{副詞}は{値}である可能性が高い」という形式をとることができる。言語エンジン820は、活性化データ802に応じて、「副詞」フィールドに異なる副詞を入力することができる。言語エンジン820はまた、活性化データ802を生成するときにニューラルネットワーク242によって出力される値を示すために「値」フィールドにデータを入力することができる。言語エンジン820は、記述822を視覚化エンジン830に送信して、その後、ネットワーク分析GUI212に組み込む。
視覚化エンジン830は、テスト入力804及びエージェント240の選択を含む、ユーザから様々な情報を取得するために、ネットワーク分析GUI212を生成する。例えば、ネットワーク分析GUI212は、ニューラルネットワーク242へのテスト入力804として提供されるべきであるユーザの入力を受け取ることができる。あるいは、ネットワーク分析GUI212は、ユーザの入力に基づいて、訓練データ250の特定の部分がテスト入力804としてニューラルネットワーク242に提供されるべきであると決定することができる。視覚化エンジン830はまた、ネットワーク分析GUI212を更新して、活性化データ802、訓練サンプル812、及び記述822を含む、上で議論された様々なデータを組み込む。視覚化エンジン830はまた、図9~14に関連して以下でより詳細に説明されるように、ユーザがニューラルネットワーク242のより深い構造を検査することを可能にする他の様々なデータを、ネットワーク分析GUI212に取り込むことができる。
図9は、様々な実施形態による、図2のネットワーク分析GUIがどのようにニューラルネットワークの生成を促すかを示すスクリーンショットである。示されるように、GUIパネル900は、図8に関連して上で論じられた様々なデータに一般に関連する様々なGUI要素を含む。特に、入力要素902は、推論エンジン800がテスト入力804を受け取るためのグラフィックフィールドである。セレクタ904は、推論エンジン800がエージェント240の選択を受け取るための選択フィールドである。グラフ要素906は、活性化データ802を表示するグラフィックフィールドである。テキスト要素908は、記述822を表示するテキストフィールドである。グリッド要素910は、構成可能なセル及び寸法を有するグリッド内に訓練サンプル812を表示するグラフィックフィールドである。
また示されるように、GUIパネル900は、ニューラルネットワーク242に関連する様々なデータ、及びテストデータ804に対するニューラルネットワーク242のパフォーマンスを描写する他のGUI要素を含む。具体的には、層要素920は、ニューラルネットワーク242の異なる層を示し、特定の層の選択を受け取るように構成される。メタデータ要素930は、選択された層を説明するメタデータを示す。重み要素940は、重みのグリッド932を含む。グリッド932の各行は、選択した層の特定のニューロンに対応し、各列は特定の出力に対応する。指定された重みは、対応する重みの値を反映する視覚属性で表示される。示されている例では、暗い重みは明るい重みよりも高い重みの値を備えている。重み要素940は、選択された重みが活性化データ802を生成するためのテスト入力804の変換にどのように関与するかをユーザが理解するのを補助するために、選択された重みの自然言語記述を表示するように構成される。活性化パネル950は、選択された層に関連する活性化レベル952を示す。場合によっては、層の選択に応じて、活性化レベル952は、活性化データ802に類似し得る。
ネットワークアナライザ210は、ニューラルネットワーク242の機能をユーザに明示し、ユーザがニューラルネットワーク242が様々な状況下でどのように動作するかに関する直感を構築するのを促すために、ネットワーク分析GUI212と併せて上記のGUI要素を生成する。このアプローチは、説明した方法で個々の層、重み、またはニューロンを検査できない従来の手法とは異なる。したがって、ネットワークアナライザ210は、高精度のニューラルネットワークの迅速な展開を容易にする強力なツールをユーザに提供する。これらの手法は、図10~14と併せて以下でより詳細に説明するように、エージェントベースのAIモデルのより広いコンテキストにも適用できる。
図10は、様々な実施形態による、図2のネットワーク分析GUIがどのようにエージェントの基礎となる機能を明示するかを示すスクリーンショットである。示されているように、ウィンドウ1000は図5のGUIパネル500に投影される。ウィンドウ1000は、エージェント240(2)の基本的な機能(「ナンバープレートを読み取る」)を明示する。ウィンドウ1000は、ネットワーク分析GUI212に含まれている。
ネットワークアナライザ210は、エージェント240(2)のユーザの選択に応答して、ウィンドウ1000を含むように、ネットワーク分析GUI212を更新する。ウィンドウ1000は、ネットワークアーキテクチャ1010、重み1020、重みメタデータ1022、入力活性化1030、及び出力活性化1032を含む。ネットワークアーキテクチャ1010は、選択されたエージェント240(2)に関連付けられたニューラルネットワーク242を定義する様々な層及び層間の接続のグラフィカルな描写である。ネットワークアーキテクチャ1010は、図4のネットワークアーキテクチャ410が生成される方法と類似して生成される。
ネットワークアナライザ210は、ウィンドウ1000内に重み1020を生成して、ネットワークアーキテクチャ1010の隣接する層を接続する重みに関連する重みの値の分布を示す。ネットワークアナライザ210は、異なる接続のユーザの選択に応じて、異なる重みを表示することができる。ネットワークアナライザ210は、対応する重みの値に依存する、色または陰影などの特定の視覚的属性を有するセルとしてそれぞれの重みを表示する。示されている例では、暗い重みは明るい重みよりも大きな値を備えている。ネットワークアナライザ210はまた、重みメタデータ1022を生成して、重み1020の様々な属性を表現する。これは、それらの重みの形状、最小の重みの値、関連するバイアスの形状、そのバイアスに含まれる最小値、及びニューラルネットワークに関連付けられた重みの他のいずれかの技術的に実現可能な属性を含む。この方法で重みを表示すると、図9の重み要素940と併せて上で説明したのと同様の方法で、ニューラルネットワークの特定のセルが様々な出力をどのように優先するかに関する情報がユーザに提供される。
ネットワークアナライザ210はまた、ウィンドウ1000に、入力活性化1030及び出力活性化1032を表示させて、ユーザが選択した入力に応答して、ニューラルネットワークのユーザに選択された層が、いかに動作するかを示す。特に、入力活性化1030は、ニューラルネットワークが訓練データの選択されたサンプルを処理するときの選択された層への入力の接続の活性化レベルを示す、色または陰影などの特定の視覚的属性で表示される個々のセルを含む。さらに、出力活性化1032には、選択した層からの出力の接続の活性化レベルを示す視覚的属性で表示される個々のセルが含まれる。この方法で活性化を表示すると、いかに層が入力を出力に変換するかがユーザに示され、ニューラルネットワークが特定の決定を行う(または行わない)理由をユーザが理解するのに役立ち得る。
図9~10と併せて上記した手法は、ネットワークレベルの機能、重みのレベルの機能、ニューロンレベルの機能などを含む、いくつかの深さのレベルで、ニューラルネットワークの機能を明示するために、有利にも適用することができる。ネットワーク分析GUI212を介して、ネットワークアナライザ210は、従来のアプローチでは利用できないニューラルネットワークの機能的詳細をユーザが利用できるようにする。図11~14は、上記の手法を適用してニューラルネットワークの動作を検査及び理解できる追加の状況を示している。
図11は、様々な実施形態による、図2のネットワーク分析GUIが、テスト入力を処理するためのエージェントのセットをどのように明示するかを示すスクリーンショットである。示されるように、GUIパネル1100は、ツールパネル1110、訓練データパネル1120、及びテスト入力1122を含む。示されている例では、訓練データパネル1120は、とりわけ、住所データを含む様々なデータを抽出するために処理される必要があるインボイスのセットを含む。テスト入力1122は、訓練データパネル1120からユーザによって選択されたサンプルのインボイスである。ツールパネル1110は、テスト入力1122を分析するために適用することができる異なるエージェント250のリストを含む。示されているように、ツールパネル1110は、エージェント250(5)(「テキストを認識する」)、エージェント250(6)(「アドレスを認識する」)、エージェント250(7)(「形状を選択する」)、エージェント250(8)(「言語を翻訳する」)、及びエージェント250(9)(「フィールドを抽出する」)を含む。ネットワークアナライザ210がこれらのエージェントをどのように適用できるかの様々な例を以下に説明する。
図12は、様々な実施形態による、図2のネットワーク分析GUIがどのようにテスト入力を処理するようエージェントを適用するかを示すスクリーンショットである。示されるように、エージェント250(5)(「テキストを認識する」)のユーザの選択に基づいて、ネットワークアナライザ210は、GUIパネル1100を更新して、領域1200、1210、1220、1230、及び1240を含むテキストを含むテスト入力1122の領域を強調する。この方法でテキストが識別されると、以下でより詳細に説明するように、追加のエージェントを適用して追加の処理タスクを実行できる。
図13は、様々な実施形態による、図2のネットワーク分析GUIがどのようにテスト入力を処理するよう別のエージェントを適用するかを示すスクリーンショットである。示されるように、エージェント250(6)(「アドレスを認識する」)のユーザの選択に基づいて、ネットワークアナライザ210は、GUIパネル1100を更新して、領域1300などのアドレスを含むテスト入力1122の領域を強調する。GUIパネル1100はまた、対応する領域がアドレスを含む信頼水準を表示する。一実施形態では、信頼水準は、エージェント250(6)に含まれるニューラルネットワーク242の所与の層に関連する活性化レベルの差から導き出すことができる。以下でより詳細に説明するように、1つまたは複数のアドレスが識別された後、別のエージェントを適用してアドレスデータを抽出できる。
図14は、様々な他の実施形態による、図2のネットワーク分析GUIがどのように異なるエージェントをテスト入力に適用するかを示すスクリーンショットである。示されるように、エージェント250(9)(「フィールドを抽出する」)のユーザの選択に基づいて、ネットワークアナライザ210は、テスト入力1122の領域1300からアドレスを抽出し、そのアドレスを出力ファイル1400にロードする。示されている例では、出力ファイル1400は、宛先アドレスフィールドに入力する必要がある船荷証券である。
図11~14を概ね参照すると、上記の例は、設計分析GUI212が、いかにユーザが実際の入力データで様々なエージェント240をテストすることを可能にして、それらのエージェントの適切な機能を検証するかを示している。所与のエージェント240が期待通りに動作しない状況下で、設計分析GUI212は、図9~10と併せて上記した技法を介して、ユーザが所与のエージェント内のニューラルネットワーク242を分析するのを促す。設計分析GUI212を介してユーザと対話するときに設計アナライザ210によって実行される様々な操作が、図15A~15Bと併せて以下でより詳細に説明される。
図15A~15Bは、様々な実施形態による、グラフィカルユーザインターフェイスを介してニューラルネットワークを分析するための方法ステップのフローの図を示す。方法ステップは、図1~2及び8~14のシステムと併せて説明されるが、当業者は、任意の順序で方法ステップを実行するように構成された任意のシステムが、本実施形態の範囲内にあることを理解する。
図15Aに示されるように、方法1500は、ステップ1502で開始し、それにおいて、ネットワークアナライザ210は、エージェントに関連する基礎となるデータを描写するためにネットワーク分析GUI212を生成する。エージェントには、様々な動作を実行するように訓練されたニューラルネットワークが含まれている。ネットワーク分析GUI212は、とりわけ、ネットワークアーキテクチャを含む、ニューラルネットワークに関連する様々なデータを描写する。
ステップ1504で、ネットワークアナライザ210は、エージェントに関連付けられたニューラルネットワークに適用するためのテスト入力を受信する。例えば、ネットワークアナライザ210は、図9に示す手書きの数字など、テスト入力を説明するユーザの入力を受け取ることができる。あるいは、ネットワークアナライザ210は、訓練データ250から訓練サンプルのユーザの選択を受け取ることができる。ネットワークアナライザ210は、一般に、ネットワーク分析GUI212との1つまたは複数のユーザの対話に基づいてテスト入力を受け取る。
ステップ1506で、ネットワークアナライザ210は、ステップ1508で受けたテスト入力に基づいてニューラルネットワークで推論動作を実行して、活性化データを生成する。活性化データは、例えば、ニューラルネットワークの特定の層に関連する活性化レベルであり得る。活性化データは、場合によっては、ニューラルネットワークがテスト入力に割り当てるように構成された分類のセットに関連付けられた確率分布を示し得る。ステップ1508で、ネットワークアナライザ210は、ネットワーク分析GUI212を更新して、活性化データを描写する。
ステップ1510で、ネットワークアナライザ210は、ステップ1506で生成された活性化データを処理して、ニューラルネットワークのパフォーマンスの記述を生成する。ネットワークアナライザ210によって生成された記述は、テスト入力に応答してニューラルネットワークの少なくとも1つの機能的または行動的側面を特徴付ける自然言語表現である。例えば、説明は、活性化データが、ニューラルネットワークがテスト入力を正しく分類できる可能性が高いことを示し得る。ネットワークアナライザは、様々な活性化レベルと様々なニューラルネットワーク出力に対応する様々な語が入力された式テンプレートに基づいて説明を生成できる。ステップ1512で、ネットワークアナライザ210は、説明を描写するためにネットワーク分析GUI212を更新する。
ステップ1514で、ステップ1508で生成された活性化データに基づいて、ネットワークアナライザ210は、ニューラルネットワークを訓練するために以前に使用された訓練データを処理して、テスト入力に類似する訓練サンプルを識別する。例えば、ネットワークアナライザ210は、各訓練サンプルをニューラルネットワークに入力してサンプル活性化データを生成し、次にサンプル活性化データをステップ1508で生成されたものと比較することができる。サンプル活性化データと活性化データとの間の数値の差が閾値よりも小さい場合、ネットワークアナライザ210は、訓練サンプルがテスト入力に類似していると判断する。ニューラルネットワークに精通している者は、活性化データに複数の活性化レベルを含めることができ、活性化データの比較には対応する活性化レベルの比較が含まれることを認識する。ステップ1516で、ネットワークアナライザ210は、訓練サンプルを描写するためにネットワーク分析GUI212を更新する。方法1500は図15Bに続く。
ステップ1518で、ネットワークアナライザ210は、ユーザ対話ネットワーク分析GUI212に基づいて、ニューラルネットワークに関連付けられた重みの値のセットを決定する。例えば、ネットワークアナライザ210は、ネットワーク分析GUI212を介してニューラルネットワークの特定の層のユーザの選択を受け取ることができる。次に、ネットワークアナライザ210は、層に関連する重みの値のセットを抽出することができる。重みの値のセットは、どのニューロンがどの出力に様々な程度で寄与するかを示す。ステップ1520で、ネットワークアナライザ210は、重みの値のセットを描写するためにネットワーク分析GUIを更新する。特に、ネットワークアナライザ210は、重みの値のセットを表すためにセルのグリッドを生成し、各セルは、対応する重みの値を表す1つまたは複数の視覚的属性と共に表示される。
ステップ1522で、ネットワーク分析GUI212は、テスト入力に関連付けられた入力に応答して、ニューラルネットワークの選択された層の出力を決定する。例えば、ネットワークアナライザ210は、選択された層に入力をする1つまたは複数のニューロンに関連する1つまたは複数の活性化レベルを決定し、次に、選択された層からの出力を提供する1つまたは複数のニューロンに関連する1つまたは複数の活性化レベルを決定することができる。ステップ1524で、ネットワークアナライザ210は、ネットワーク分析GUIを更新して、入力活性化レベル及び出力活性化レベルを描写する。そうすることで、ネットワークアナライザ210は、ネットワークアナライザ212にセルの異なるグリッドを表示させ、それにおいて各セルは、対応する活性化レベルを表す視覚的属性で表示される。
ネットワークアナライザ210は、ニューラルネットワークの内部の動作に関する詳細な情報をユーザに提供するために、方法1500を実行する。この情報により、ユーザは、パフォーマンスを向上させるためにニューラルネットワークを変更する方法について、情報に基づいた決定を下すことができる。ニューラルネットワークは、図3~7と併せて上記した方法で、ネットワークジェネレータ200を介して変更することができる。ネットワーク評価器220は、図16~27Bと併せて以下でより詳細に説明されるように、訓練データに関連してニューラルネットワークを評価するための追加のツールを提供する。
ニューラルネットワークの訓練に使用されるデータセットの調査と分析
図16~27Bは、ニューラルネットワークを訓練するために使用される訓練データに関連してニューラルネットワークを評価するときに、図2のネットワーク評価器220によって実装される様々な技術を示している。本明細書でより詳細に説明するように、ネットワーク評価器220は、ニューラルネットワークの挙動に基づいて訓練データを探索するのを容易にするために、ネットワーク評価GUI222を生成する。
図16は、様々な実施形態による、図2のネットワーク評価器のより詳細な図解である。示されるように、ネットワーク評価器220は、活性化エンジン1600、信頼性エンジン1610、ソートエンジン1620、顕著性エンジン1630、及び視覚化エンジン1640を含む。
動作中、活性化エンジン1600は、エージェント240及び訓練データ250を受信し、次いで、訓練データ250に含まれるすべてのサンプルにわたってニューラルネットワーク242を用いて推論動作を実行して、活性化データ1602を生成する。活性化データ1602は、訓練データ250の各サンプルについてニューラルネットワーク242によって生成された1セットの活性化レベルを含む。与えられた1セットの活性化レベルは、ニューラルネットワークが訓練データ250のサンプルに割り当てることができる1セットのカテゴリに関連付けられた確率分布を示す。活性化エンジン1600は、図8の推論エンジン800と同様に動作する。活性化エンジン1600は、訓練データ250と活性化データ1602を、ネットワーク評価GUI222へ組み込むべく、信頼性エンジン1610、ソートエンジン1620、顕著性エンジン1630、及び視覚化エンジン1640に送信する。
信頼性エンジン1610は、活性化データ1602に示される各サンプルに関連する活性化レベルに基づいて、信頼性データ1612を生成する。信頼性データ1612は、ニューラルネットワーク242がそれらのサンプルを分類することができる精度を反映する、サンプルごとに異なる信頼性の値を含む。所与のサンプル及び対応する活性化レベルについて、信頼性エンジン1610は、最大の活性化レベル(カテゴリニューラルネットワーク242に対応するものがサンプルに適用される)と、1つまたは複数の他の活性化レベル(カテゴリニューラルネットワーク242に対応するものは適用されない)との間の差を決定する。したがって、所与のサンプルに割り当てられた信頼性の値は、ニューラルネットワーク242がサンプルにカテゴリを割り当てる相対的な強さを示す。ニューラルネットワーク242がサンプルに誤ったカテゴリを割り当てる状況では、サンプルは「信頼性過多」とラベル付けされ得、ニューラルネットワーク242がサンプルの誤ったカテゴリを強く示していることを示す。信頼性エンジン1610は、信頼性データ1612を、ネットワーク評価GUI222に組み込むために、ソートエンジン1620ならびに視覚化エンジン1640に送信する。
ソートエンジン1620は、活性化データ1602、信頼性データ1612、及びネットワーク評価GUI222を介して受信されたユーザ入力に基づいて、様々な方法で訓練データ250のサンプルをソートする。特に、ソートエンジン1620は、活性化データ1602に含まれる同様の活性化レベルに関連付けられた訓練データ250のサンプルを互いにグループ化する。ソートエンジン1620が、活性化レベルの類似性を反映する相対的な位置で、2次元のマップにサンプルのグループを配置する。ソートエンジン1620はまた、信頼性データ1612に含まれる対応する信頼性の値に基づいて、訓練データ250のサンプルをフィルタリングする。ソートエンジン1620は、これらの様々なソートの動作を実行するときにソートされたサンプル1622を生成し、ネットワーク評価GUI222に組み込むために、ソートされたサンプル1622を視覚化エンジン1640に送信する。
顕著性エンジン1630は、訓練データ250を処理して、訓練データ250の任意の所与のサンプルについて、そのサンプルの異なる部分がニューラルネットワーク242の出力に影響を与える程度を決定する。所与のサンプルを処理するとき、顕著性エンジン1630は、サンプルの1つまたは複数の部分に異なる変更を適用して、そのサンプルの異なるバージョンを生成する。次に、顕著性エンジン1630は、ニューラルネットワーク242に、サンプルの異なるバージョンに基づいて別個の活性化レベルを生成させる。顕著性エンジン1630は、サンプルの異なるバージョンにわたる活性化レベルを比較して、サンプルの1つまたは複数の部分への変更がそれらの活性化レベルの変動を引き起こしたかどうかを判定する。次に、顕著性エンジン1630は、サンプルの様々な部分がニューラルネットワーク242の出力に影響を与える程度を視覚的に示す顕著性マップを生成する。顕著性エンジン1630は、訓練データ250のすべてのサンプルにわたってこのアプローチを実行して、顕著性データ1632を生成する。顕著性エンジン1630は、顕著性データ1632を視覚化エンジン1640に送信して、ネットワーク評価GUI222に組み込む。
視覚化エンジン1640は、訓練データ250、活性化データ1602、信頼性データ1612、ソートされたサンプル1622、及び顕著性データ1632を受信し、このデータに基づいてネットワーク評価GUI222を生成及び/または更新する。ネットワーク評価GUI222は、図17~27Bと併せて以下でより詳細に説明されるように、ユーザがその訓練データを処理するときにニューラルネットワーク242がどのように動作するかに関連して訓練データ250を探索することができるインタラクティブツールを明示する。
図17は、様々な実施形態による、図2のネットワーク評価GUIがどのように訓練データの探索を容易にするかを示すスクリーンショットである。示されるように、GUIパネル1700は、サンプルマップ1710、サンプルビュー1730、活性化ディスプレイ1740、コード入力1750、及びフィルタセレクタ1760を含む。GUIパネル1700は、ネットワーク評価GUI222に含まれている。GUIパネル1700の様々な要素は、前述のMNIST数字訓練セットに見られるものなど、手書きの数字を描写する画像のサンプルを含む例示的な訓練データ250に関連して説明される。
ネットワーク評価器220は、図16と併せて上記のソートエンジン1610を介してサンプルマップ1710を生成する。ネットワーク評価器220は、サンプルごとにサンプルマップ1710内に異なる位置を生成する。任意の2つのサンプルの相対的な位置は、通常、2つのサンプルの類似性を反映している。したがって、サンプルマップ1710の近接する位置に関連するサンプルは概ね類似しており、サンプルマップ1710の離れた位置にあるサンプルは概ね異なる。ネットワーク評価器220は、異なるサンプルの活性化レベルを比較し、次にサンプルマップ1710の同様の領域内に同様の活性化レベルであるサンプルを配置し、サンプルマップ1710の異なる領域に異なる活性化レベルであるサンプルを配置することによって、サンプルマップ1710を生成することができる。ネットワーク評価器220はまた、訓練データ250のサンプルを直接比較して、それらのサンプルを配置することができる。一実施形態では、サンプルマップ1710は、t分布型確率的近傍埋め込み法(t-SNE)のマップであり得る。
サンプルマップ1710は、サンプルのクラスタ1712、1714、1716、1718、及び1720を含む。各クラスタは、一般に、ニューラルネットワーク242の特定の出力に対応する。そのため、特定のクラスタに関連付けられたサンプルに対応する活性化レベルは、互いに概ね類似している。さらに、本明細書で説明される例では、所与のクラスタは、一般に、特定の手書きの数字を描写するサンプルを含む。サンプルは、サンプルマップ1710において、ドットまたは十字のいずれかとして表されている。十字で表されたサンプルは、前述の方法で「信頼性過多」とラベル付けされる。
サンプルビュー1730は、サンプルマップ1710を介して選択されたサンプル1732のグラフィック描写を表示する。示されるように、カーソル1702がクラスタ1712内の位置上に配置されると、サンプルビュー1730は、その位置に関連付けられたサンプル1732のグラフィック描写を表示する。この場合、「4」が表示される。活性化ディスプレイ1740は、サンプル1732に関連する活性化レベル1742を示している。活性化レベル1742は、活性化データ1602に含まれ、図16と併せて上記の方法で活性化エンジン1600を介して生成される。活性化レベル1742は、ニューラルネットワーク242がサンプル1732が「4」を描写していることを強く表示していることを示している。図18に示すように、カーソル1702がサンプルマップ1710内で移動されると、ネットワーク評価器220は、サンプルビュー1730及び活性化ディスプレイ1740を更新する。
図18は、様々な実施形態による、図2のネットワーク評価GUIが、どのようにサンプルマップを介して入力を受けるかを示すスクリーンショットである。示されるように、カーソル1702がクラスタ1714内の位置上に配置されると、サンプルビュー1730は、その位置に関連付けられたサンプル1832のグラフィック描写を表示する。この場合、「3」が表示される。活性化ディスプレイ1740は、サンプル1832に関連する活性化レベル1842を示し、これは、ニューラルネットワーク242が、サンプル1832が「3」を示す中程度の表示を呈することを示す。
図17及び18の両方を概ね参照すると、コード入力1750は、ユーザがサンプルマップ1710を処理及びフィルタリングするためのプログラムコードを書くことができるテキストフィールドである。示されているサンプルコードにより、ネットワークアナライザ220は、サンプルマップ1710を生成するときに、サンプルの各クラスタに異なる色を割り当てる。コード入力1750は、ネットワーク評価器220によって生成されたプログラムコードを事前に入力することができる。フィルタセレクタ1760は、サンプルマップ1710に適用する特定のフィルタを示すユーザの入力を受け取る入力要素である。各フィルタは、一般に、実行されると、サンプルマップ1710を変更するプログラムコードの一部に対応する。フィルタセレクタ1760を介して所与のフィルタを選択すると、ネットワーク評価器220は、コード入力1750にそのフィルタに対応するプログラムコードの部分を入力し、それにより、ユーザがそのプログラムコードをカスタマイズ及び実行できるようにする。ネットワーク評価器220がサンプルマップ1710をどのように変更できるかの様々な例を、図19~21と併せて以下に説明する。
図19は、様々な実施形態による、図2のネットワーク評価GUIが、高い信頼性の値が割り当てられた訓練データのサンプルをどのように表示するかを示すスクリーンショットである。示されるように、「高信頼性」フィルタのユーザの選択に応答して、ネットワーク評価器220は、高い信頼性の値が割り当てられたサンプルに対応する位置を表示するのみであるようにサンプルマップ1710を更新する。ネットワーク評価器220は、図16と併せて上記の信頼性エンジン1610を介してサンプルに信頼性の値を割り当てる。前に説明したように、特定のサンプルに割り当てられた信頼性の値は、サンプルに関連付けられた最高の活性化レベルと1つ以上の他の活性化レベルとの差を表す。
示されている例では、カーソル1702は、「2」を示すサンプル1932に関連付けられたクラスタ1716内の位置にある。活性化レベル1942は、サンプル1932が「2」を描写していることをニューラルネットワーク242が極めて強く表示していることを示している。ニューラルネットワーク242は他のいずれかの重要な表示を呈さないので、サンプル1932には高い信頼性の値が割り当てられ、したがって、サンプルマップ1710が論じられた方法でフィルタリングされるときに示される。
コード入力1750は、ネットワークアナライザ220を介して実行されるプログラムコードを含み、信頼性の高い値を有するサンプルを識別し、次にそれらのサンプルを表示するのみであるように、サンプルマップ1710を更新する。ネットワークアナライザ220は、コード入力1750に示されるコードへの変更を受信し、次に、変更されたコードを実行して、サンプルマップ1710を更新することができる。例えば、ネットワークアナライザ220は、信頼性の値の閾値への変更を受信し、次いで、サンプルマップ1710に、変更された信頼性レベルの閾値を超える信頼性の値であるサンプルを表示させることができる。ネットワークアナライザ220は、図20~21と併せて以下に説明するように、他のフィルタでサンプルをフィルタリングすることもできる。
図20は、様々な実施形態による、図2のネットワーク評価GUIが、低い信頼性の値が割り当てられた訓練データのサンプルをどのように表示するかを示すスクリーンショットである。示されるように、「低信頼性」フィルタのユーザの選択に応答して、ネットワーク評価器220は、低い信頼性の値が割り当てられたサンプルに対応する位置を表示するのみであるようにサンプルマップ1710を更新する。また、示されるように、カーソル1702は、「5」を示すサンプル2032に関連するクラスタ1718内の位置にある。活性化レベル2042は、ニューラルネットワーク242が、サンプル2032が「5」を表すという弱い表示を呈し、サンプル2032が「2」を表すという弱い表示を呈することを示す。どちらの表示も他方を大きく上回っていないため、サンプル2032は、低い信頼性の値が割り当てられ、そのためサンプルマップ1710が前述の方法でフィルタリングされたときに表示される。
図21は、様々な実施形態による、図2のネットワーク評価GUIが、信頼性過多とラベル付けされた訓練データのサンプルをどのように表示するかを示すスクリーンショットである。示されるように、「信頼性過多」フィルタのユーザの選択に応答して、ネットワーク評価器220は、「信頼性過多」とラベル付けされたサンプルに対応する位置を表示するのみであるように、サンプルマップ1710を更新する。これらのサンプルは、負の信頼性の値の可能性がある。また、示されるように、カーソル1702は、「3」を示すサンプル2132に関連するクラスタ1714内の位置にある。活性化レベル2142は、ニューラルネットワーク242が、サンプル2132が「2」を表すという強い表示を呈し、サンプル2132が「3」を表すという弱い表示を呈することを示す。ニューラルネットワーク242は、サンプル2132に対して誤った出力を呈するので、サンプル2132は、「信頼性過多」とラベル付けされ、したがって、サンプルマップ1710が議論された方法でフィルタリングされるときに示される。
一般的な問題として、ネットワーク評価器220は、図17~21に関連して論じられた例示的な訓練データを超えて、技術的に実行可能な訓練データのセット250に基づいて、上記の評価技術を実行することができる。図22~27は、ネットワーク評価器220が、別の例示的な訓練データのセットに対して、他の評価技法をどのように実行するかを示している。
図22は、様々な実施形態による、図2のネットワーク評価GUIが、選択されたニューラルネットワーク出力を促進する訓練データのサンプルをどのように表示するかを示すスクリーンショットである。示されているように、図10のウィンドウ1000の更新されたバージョンは、入力活性化1030及び出力活性化1032を含み、明確にするためにウィンドウ1000の他の要素は省略されている。前に論じたように、出力活性化1032は、訓練データパネル530に含まれる訓練データ250のサンプルを処理するときに、ニューラルネットワークの選択された層の出力に対応するセルのグリッドを含む。
出力活性化1032内でセル2200を選択すると、ネットワーク評価器220は、訓練データ250内の特定のサンプルを強調し、セル2200に高い出力をもたらす。示されるように、ネットワーク評価器220は、サンプル2202及び2204を強調し、ニューラルネットワーク224がサンプル2202及び2204を処理するときに、セル2200が上昇した出力をもたらすことを示す。この技術の利点は、ユーザが、ニューラルネットワーク224の特定の層内のニューロンが、訓練データ250に含まれる異なるタイプのサンプルにどのように応答するかについての洞察を得ることができることである。ネットワーク評価器220はまた、選択されたセルに基づいて訓練データ250をソートすることができ、これは、図23と併せて以下でより詳細に説明される。
図23は、様々な実施形態による、ニューラルネットワーク出力に基づいてソートされた訓練データのサンプルを図2のネットワーク評価GUIがどのように表示するかを示すスクリーンショットである。示されるように、セル2200のユーザの選択に応答して、ネットワーク評価器220は、訓練データ250をソートして、セル2200に関連するニューロンの活性化を促進するサンプルを訓練データパネル530の左側に配置し、訓練データパネル530の右側のセル2200に関連するニューロンの活性化を促進しないサンプルを配置する。
さらに、ネットワーク評価器220は、グラフ2302を含む活性化パネル2300を生成する。グラフ2302は、ソートされた訓練データの異なる部分が、セル2200に関連するニューロンの活性化をどれほど強く促進するかを示している。例えば、グラフ2302は、サンプル2202及び2204よりも高いレベルを有するが、ニューロンの活性化をより少ない程度に促進するサンプルと共に、左から右に向かって先細りになっている。ネットワーク評価器220は、図24~25に関連して以下でより詳細に説明されるように、複数のニューロンの出力に関連する式に関連して、図22~23と併せて上述した技法を実行することができる。
図24は、様々な実施形態による、図2のネットワーク評価GUIが、特定の活性化の基準を満たす訓練データのサンプルをどのように表示するかを示すスクリーンショットである。示されるように、式入力2400は、訓練データ250に含まれるサンプルがテストされる条件式を含む。特に、所与の訓練サンプルについて、ネットワーク評価器220は、ニューラルネットワーク224が所与の訓練サンプルを処理するときに、式に含まれる各ニューロンの活性化レベルを決定する。次に、ネットワーク評価器220は、決定された活性化レベルに基づいて式を評価して、真/偽の値を出力する。ネットワーク評価器220は、条件式が論理的に真であると評価される特定のサンプルを強調する。示されている例では、式はサンプル2402及び2404について肯定的に評価されるので、ネットワーク評価器220はそれらのサンプルを強調する。ネットワーク評価器220はまた、図25と併せて以下に説明するように、ユーザが生成した式に基づいて訓練データ250のサンプルをソートすることができる。
図25は、様々な実施形態による、式に基づいてソートされた訓練データのサンプルを図2のネットワーク評価GUIがどのように表示するかを示すスクリーンショットである。示されるように、式入力2400は、訓練データ250に含まれるサンプルがソートされることに基づく数式を含む。所与の訓練サンプルについて、ネットワーク評価器220は、ニューラルネットワーク224が所与の訓練サンプルを処理するときに、式に含まれる各ニューロンの活性化レベルを決定する。次に、ネットワーク評価器220は、決定された活性化レベルに基づいて式を評価して、真/偽の値を出力する。次に、ネットワーク評価器220は、各サンプルに関連付けられた出力値に基づいて訓練データ250をソートする。示されている例では、サンプル2402及び2404は、上昇した出力値に関連付けられているので、ネットワーク評価器220は、これらのサンプルを訓練データパネル530の左側にソートする。ネットワーク評価器220はまた、訓練データ250の対応するサンプルに関連する出力レベルを示すために、活性化パネル2300内にグラフ2502を生成する。
図22~25を概ね参照すると、ネットワーク評価器220は、図16に関連して前述したソートエンジン1620を介して、開示されたソート技術を実行する。図16の顕著性エンジン1630は、図26と併せて以下でより詳細に説明されるように、訓練データサンプルの特定の部分がニューラルネットワーク224の出力に影響を与えることを決定するための追加の技術を実行する。
図26は、様々な実施形態による、図2のネットワーク評価GUIが訓練サンプルの関連部分をどのように表示するかを示すスクリーンショットである。示されるように、顕著性ディスプレイ2600は、選択されたサンプル2604の顕著性マップ2602を含む。顕著性マップ2602は、サンプル2604に応答してニューラルネットワーク224の出力の変化に影響を与えるサンプル2604の特定の部分を示す。ネットワーク評価器220は、サンプル2604を用いて感度分析を実行することによって顕著性マップ2602を生成する。そうすることで、ネットワーク評価器220は、サンプル2604のわずかに変更されたバージョンを生成し、次に、それらのわずかに変更されたバージョンに対して、ニューラルネットワーク224の出力がどのように変化するかを決定する。次に、ネットワーク評価器220は、サンプル2604の各部分に感度の値を割り当て、その部分がニューラルネットワーク224の出力に影響を与える程度を示す。示されている例では、サンプル2604に示されている自動車の前部は、自動車の前部への変更がニューラルネットワーク224の出力の変更につながることを示すために陰影が付けられている。
図16~26を概ね参照すると、開示された技術は、ニューラルネットワークが訓練されることに基づく訓練データに関してニューラルネットワークを評価するための一連のツールをユーザに提供する。当業者は、開示された技術が、ニューラルネットワークを訓練するために使用される訓練データを超えて、任意のデータセットに基づいてニューラルネットワークを評価するために適用され得ることを理解するであろう。これまでに説明されたネットワーク評価器220によって実行される技術は、図27A~27Bと併せて以下により詳細に説明される。
図27A~27Bは、様々な実施形態による、グラフィカルユーザインターフェイスを介した訓練データのセットに関連するニューラルネットワークを評価するための方法ステップのフローの図を示す。方法ステップは、図1~2及び16~26のシステムと併せて説明されるが、当業者は、任意の順序で方法ステップを実行するように構成された任意のシステムが、本実施形態の範囲内にあることを理解する。
図27Aに示されるように、方法2700は、ステップ2702で開始し、この場合、ネットワーク評価器220は、ニューラルネットワークを訓練するために使用される訓練データのサンプルを取得する。様々な実施形態において、ネットワーク評価器220はまた、検証のセット内に含まれるサンプルなど、ニューラルネットワークを訓練するために使用されない訓練データのサンプルを取得することができる。ネットワーク評価器220は、得られた訓練データに関連してニューラルネットワークを評価するための様々な技術を実行する。
ステップ2704で、ネットワーク評価器220は、各サンプルの活性化レベルを含むサンプルの活性化データを生成する。例えば、ネットワーク評価器220は、各サンプルをニューラルネットワークに入力し、次に、最後から2番目の層などのニューラルネットワークの特定の層の出力を記録することができる。特定の訓練サンプルの活性化レベルのセットは、ニューラルネットワークが関連するサンプルの可能な各出力をどの程度強く示すかを指定する。
ステップ2706で、ネットワーク評価器220は、対応する活性化レベルのセットに基づいて、各サンプルの信頼性の値を生成する。所与のサンプル及び対応する活性化レベルについて、ネットワーク評価器220は、最大の活性化レベルと1つまたは複数の他の活性化レベルとの間の差を決定する。概念的には、特定のサンプルに割り当てられた信頼性の値は、ニューラルネットワークがサンプルをソートする相対的な強度を示す。
ステップ2708で、ネットワーク評価器220は、ステップ2704で生成された活性化レベルに基づいてサンプルをグループ化する。例えば、ネットワーク評価器220は、2つのサンプルに関連する活性化レベルを比較し、そのサンプルのペアに差の値を割り当てることができる。次に、ネットワーク評価器220は、相互の差の値が低いサンプルを、特定のグループに集めることができる。活性化レベルの2つのセットを比較するとき、ネットワーク評価器220は、一般に、同じ分類に関連する活性化レベルを比較する。
ステップ2710で、ネットワーク評価器220は、サンプルのグループ、活性化レベル、及び信頼性の値を表示するためのネットワーク評価GUI222を生成する。そうすることで、ネットワーク評価器220は、ネットワーク評価GUI222に、ステップ2708で生成されたサンプルのグループを示すサンプルマップを表示させる。例示的なサンプルマップを図17に示す。ネットワーク評価器220はまた、ネットワーク評価GUI222に、ステップ2704で生成された活性化レベル、及びいくつかの実施形態では、ステップ2706で生成された信頼性の値を表示させる。
ステップ2712で、ネットワーク評価器220は、訓練データのサンプルに関連するデータの表示をフィルタリングするために使用されるべきフィルトレーション基準の選択を受信する。与えられたフィルトレーション基準は、例えば、高い信頼性の値が割り当てられたサンプルのみが表示されるべきであることを示すことができる。選択されたフィルトレーション基準に応答して、ステップ2714で、ネットワーク評価器220は、ネットワーク評価GUI222を更新して、割り当てられた信頼性の値及びステップ2712で受け取ったフィルトレーション基準に基づいてサンプルの1つまたは複数のグループを変更する。特に、ネットワーク評価器220は、ネットワーク評価GUI222に、フィルトレーション基準を満たすサンプルに関連するデータを表示させるのみである。方法2700は図27Bに続く。
ステップ2716で、ネットワーク評価器220は、ニューラルネットワークに関連付けられた出力ニューロンの選択を受け取る。出力ニューロンは、ニューラルネットワークの任意の層に存在できる。実際には、ネットワーク評価器220は、ユーザから所与の層の選択を受け取り、次に、ネットワーク評価器220は、その層に関連する特定の出力の選択を受け取る。
ステップ2718で、ネットワーク評価器220は、ステップ2704で生成された活性化レベルに基づいて、及び選択されたニューロンの活性化レベルに基づいて、訓練データのサンプルをソートする。特に、ネットワーク評価器220は、サンプルに関連付けられた活性化レベルが、選択されたニューロンに関連付けられた活性化レベルと、どれだけ密接に整合するかに関してサンプルをランク付けし、それによって、選択されたニューロンの活性化を強く促進する特定のサンプルを示す。ステップ2720で、ネットワーク評価器220は、ネットワーク評価GUI222を更新して、ソートされたサンプルを表示する。そうすることで、ネットワーク評価器220は、各サンプルが、選択されたニューロンの活性化を促進する程度を示すグラフを生成することができる。
ステップ2722で、ネットワーク評価器220は、ニューロンのセットの活性化レベルに関連する式を受け取る。式は、真または偽と評価される条件式、または数値と評価される数式の場合がある。ネットワーク評価器220は、各サンプルに応答してニューラルネットワークによって生成された活性化レベルに基づいて式を評価する。ネットワーク評価器220は、その評価の結果を対応するサンプルに割り当てる。
ステップ2724で、ネットワーク評価器220は、式の評価に基づいて訓練データのサンプルをソートする。例えば、ネットワーク評価器220は、式が真であると評価される特定のサンプルを識別することができる。ステップ2726で、ネットワーク評価器220は、ネットワーク評価GUI222を更新して、ソートされたサンプルを表示する。そうすることで、ネットワーク評価器220は、各サンプルの式を評価した結果を示すグラフを生成することができる。
ステップ2728で、ネットワーク評価器220は、ニューラルネットワークの出力に影響を与える選択されたサンプルの領域を示す顕著性マップを生成する。ネットワーク評価器220は、サンプルを用いて感度分析を実行することによって顕著性マップを生成する。特に、ネットワーク評価器220は、各サンプルのわずかに変更されたバージョンを生成し、次に、それらのわずかに変更されたバージョンに対して、ニューラルネットワークの出力がどのように変化するかを決定する。ステップ2730で、ネットワーク評価器220は、ネットワーク評価GUI222を更新して、顕著性マップを表示する。
図16~27Bを概ね参照すると、ネットワーク評価器220は、訓練データに対してニューラルネットワークがどのように動作するかを分析及び評価するための技術を有利にも呈し、それにより、ユーザがニューラルネットワークの動作を改善する方法について洞察及び直感を得ることができる。さらに、ネットワーク評価GUI222は、ニューラルネットワークが訓練データにどのように応答するかに基づいてユーザが訓練データを分析及び探索することを促進し、それによってその直感通りに進めるのを支援する。図2と併せて上述したネットワーク記述子230は、図28~38Bと併せて以下でより詳細に説明するように、パフォーマンスニューラルネットワークを記述及び制約するために適用できる追加の機能を実行する。
ニューラルネットワークの挙動のアーティキュレートと制約
図28~38Bは、ニューラルネットワークの挙動を分析するときに図2のネットワーク記述子230によって実装される様々な技術を示している。本明細書でより詳細に説明するように、ネットワーク記述子230は、ニューラルネットワークの挙動を記述した様々なデータを表現し、ユーザ入力に基づいてその挙動を制約するために、ネットワーク記述GUI232を生成する。
図28は、様々な実施形態による、図2のネットワーク記述子のより詳細な図解である。示されるように、ネットワーク記述子230は、ルールエンジン2800、アーティキュレーションエンジン2810、パフォーマンスエンジン2820、及び視覚化エンジン2830を含む。
動作中、ルールエンジン2802は、訓練データ250を処理するときにニューラルネットワーク242内のニューロンのセットの挙動を分析し、ニューラルネットワーク242の出力を変更するためのルール2802を生成する。例えば、ルール2802に含まれる所与のルールは、ニューラルネットワーク242の所与の層に含まれる所与のニューロンが特定の値を出力するとき、ニューラルネットワーク242の出力が不正確であり、代替出力に置き換えられるべきであることを示すことができる。ルールエンジン2802は、ニューラルネットワーク242が誤った出力を生成するときに発生するニューロン活動の特定のパターンを識別することによって、訓練データ250を処理するときにニューラルネットワーク242のパフォーマンスに基づいて自動的にルールを生成することができる。ルールエンジン2802は、これらの特定のパターンを「特殊なケース」としてラベル付けし、これらの特殊なケースの代替出力を生成する。ルールエンジン2802はまた、ニューラルネットワーク242に適用または統合されるべき特定のルールを示すネットワーク記述GUI232を介してユーザの入力を受け取ることができる。ルールエンジン2800はまた、変更のためにネットワーク記述GUI232を介してルール2802をユーザに明示することができる。ルールエンジン2800は、ネットワーク記述GUI232に組み込むために、ルール2802を視覚化エンジン2830に送信する。ルールエンジン2802の動作は、図29と併せて以下でより詳細に説明される。
アーティキュレーションエンジン2810は、訓練データ250を処理するときに挙動ニューラルネットワーク242を分析し、自然言語表現を介してニューラルネットワーク242の様々な特性を説明するアーティキュレートされた知識2812を生成する。例えば、アーティキュレーションエンジン2810は、訓練データ250のサンプルの範囲にわたってニューラルネットワーク242の精度を分析し、次に、ニューラルネットワークが最も正確に分類できる特定のタイプのサンプルを示す自然言語表現を生成することができる。アーティキュレーションエンジン2810はまた、知識ベース2850に記憶されたデータに基づいて、アーティキュレートされた知識2812を生成することができる。知識ベース2850は、アーティキュレーションエンジン2810が訓練データ250の特定のサンプルを処理するときにニューラルネットワーク242の様々な挙動にマッピングするという論理的事実(logical fact)を含む。例えば、ニューラルネットワーク242が訓練データ250のサンプルを、ドアを含む車を表すものとして分類するとする。アーティキュレーションエンジン2810は、車の側面にドアがあることを示す知識ベース2850から論理的事実を抽出することができる。この論理的事実に基づいて、アーティキュレーションエンジン2810は、訓練データ250のサンプルが車の側面を描写していることを示すアーティキュレートされた知識2812を生成することができる。アーティキュレーションエンジン2810は、アーティキュレートされた知識2812を視覚化エンジン2830に送信して、ネットワーク記述GUI232に組み込む。アーティキュレーションエンジン2810の動作は、図30~31と併せて以下でより詳細に説明される。
パフォーマンスエンジン2820は、訓練中及びその後に推論動作を実行するときにニューラルネットワーク242のパフォーマンスを分析し、ニューラルネットワーク242のパフォーマンスを定量化するパフォーマンスデータ2822を生成する。特に、パフォーマンスデータ2822は、ニューラルネットワーク242が様々なレベルの精度にどれだけ速く収束するか、ニューラルネットワーク242が異なる入力をどれだけ速く分類できるか、及びニューラルネットワーク242の各層が実行中にどれだけのメモリを消費するかを示す。パフォーマンスエンジン2820はまた、ニューラルネットワーク242の代替バージョンを生成し、これらの代替バージョンの比較分析を実行することができる。パフォーマンスエンジン2820は、ネットワーク記述GUI232に組み込むために、パフォーマンスデータ2822を視覚化エンジン2830に送信する。パフォーマンスエンジン2822の動作は、図32~37と併せて以下でより詳細に説明される。
視覚化エンジン2830は、ルール2802、アーティキュレートされた知識2812、及びパフォーマンスデータ2822を受け取り、このデータに基づいてネットワーク記述GUI232を生成及び/または更新する。ネットワーク記述GUI232は、図29~37と併せて以下により詳細に記載されるように、ユーザがルール2802を生成及び/または変更し、アーティキュレートされた知識2812を閲覧し、パフォーマンス2822を生成し、ニューラルネットワーク242の代替バージョンを分析することができる対話型ツールを明示する。
図29は、様々な実施形態による、図2のネットワーク記述GUIが、様々な状況下でニューラルネットワークの挙動の制約をどのように促進するかを示すスクリーンショットである。示されるように、ルール入力2900は、ニューラルネットワーク242が変更された出力データを生成すべき状況を指定するルール2902を含む。特に、ルール2902には、活性化データが特殊なケースと見なされる場合、出力データ2910の代わりに特殊なケースの出力データ2912を出力するべきであることを示すプログラムコードが含まれている。活性化データは、例えば、ニューラルネットワーク242の1つまたは複数の層内の1つまたは複数のニューロンの出力、またはそれらの出力に基づいて所与の値に評価される式を含むことができる。ニューラルネットワーク242が推論動作を実行するとき、特別な場合の状況を識別し、それに応じてニューラルネットワーク242の出力を変更するために、ルール2902に関連付けられたプログラムコードが実行される。
ネットワーク記述子230は、誤った出力を生成するときにニューラルネットワーク242の活性化パターンを分析し、次にそれらの活性化パターンを正しい出力にマッピングすることによって、ルール2902のプログラムコードを自動的に生成することができる。ネットワーク記述子230はまた、ルール入力2900を介してユーザからルール2902を定義するプログラムコードを受信することができる。ネットワーク記述子はまた、ネットワークの挙動を制約するルールを生成するだけでなく、図30~31と併せて以下で詳しく説明するように、ネットワークの挙動を記述する式を生成することもできる。
図30は、様々な実施形態による、図2のネットワーク記述GUIがニューラルネットワークの挙動をどのようにアーティキュレートするかを示すスクリーンショットである。示されるように、アーティキュレーションパネル3000は、語彙3002、定義3004、常識的な事実(common sense fact)3006、及び派生的事実3008を含む。アーティキュレーションパネル3000は、ネットワーク記述GUI232に含まれている。
ネットワーク記述子230は、知識ベース2850から語彙3002、定義3004、及び常識的な事実3006を取得する。語彙3002には、車に関連する様々な用語が含まれている。定義3004は、車に関連する用語の定義を含む。常識的な事実3006には、一般的に適用可能な論理的事実、及び自動車に特に適用可能な他の論理的事実が含まれる。ネットワーク記述子230は、訓練データ250のサンプルを分析するとき、ニューラルネットワーク242の挙動に基づいて派生的事実3008を生成する。本明細書で説明する例では、訓練データ250のサンプルは、セグメンテーションパネル3010、3012、3014、及び3016に示されているように、車の画像である。
セグメンテーションパネル3010、3012、3014、及び3016は、訓練データ250のサンプルに基づいてニューラルネットワーク242が生成する様々なセグメンテーションマップを示している。セグメンテーションパネル3010は、車に関連するサンプルの領域を示す。セグメンテーションパネル3012は、車のホイールに関連するサンプルの領域を示す。セグメンテーションパネル3014は、車の後部に関連するサンプルの領域を示す。セグメンテーションパネル3016は、車の後部のナンバープレートに関連するサンプルの領域を示す。
ネットワーク記述子230は、訓練データ250のサンプルのために生成されたセグメンテーションマップに基づいて常識的な事実3006を論理的に組み合わせることによって、派生的事実3008を生成する。ネットワーク記述子230は、図31と併せて以下に説明するように、ユーザの入力に応答して各派生的事実3008を生成するために使用される論理プロセスを明らかにすることができる。
図31は、様々な実施形態による、図2のネットワーク記述GUIが派生的事実を表現するかを示すスクリーンショットである。示されるように、アーティキュレーションパネル3000は、訓練データ250のサンプル内の車が向こう側を向いていることを判定するためにネットワーク記述子230が実施する論理ステップを概説する説明3100を含む。特に、ネットワーク記述子230は、セグメンテーションパネル3014に示されるように、ニューラルネットワーク242が訓練データ250のサンプルにおいてトランクを識別したと決定する。ネットワーク記述子230はまた、ほとんどの車が後部にトランクを有することから、車の後部が見えると判定する。ネットワーク記述子230はまた、常識的な事実3006に示されているように、何かの後部が見えるとき、その物は反対側を向いていると判定する。これらの様々な事実に基づいて、ネットワーク記述子230は、サンプルに示されている車が反対側を向いていると結論付ける。
図30~31を概ね参照すると、ネットワーク記述子230は、異なる入力を処理するときにニューラルネットワーク242がどのように実行するかを特徴付ける自然言語の記載及び説明を有利に提供する。これらの説明に基づいて、ユーザは、ニューラルネットワーク242がどのように実行するか、及びニューラルネットワーク242が様々なタスクに対して適切に動作するかどうかについてのより理解を深めることができる。ネットワーク記述子230はまた、図32~37と併せて以下でより詳細に説明されるように、訓練及び推論中にニューラルネットワーク242がどのように実行するかを定量化するパフォーマンスデータを生成する。
図32は、様々な実施形態による、図2のネットワーク記述GUIが、ニューラルネットワークの訓練に関連するパフォーマンスデータをどのように描写するかを示すスクリーンショットである。示されるように、パフォーマンスパネル3200は、図28のニューラルネットワーク242に関連付けられたネットワークアーキテクチャ3202と、精度グラフ3210とを含む。ネットワークアーキテクチャ3202は、前述のように、ユーザの入力に応答してニューラルネットワーク242の基礎となる定義を変更するように構成される対話型GUI要素である。精度グラフ3210は、訓練中にニューラルネットワーク242の精度が時間と共にどのように変化するかを表すプロット3212を含む。示されるように、ニューラルネットワーク242が実行する精度は、訓練の処置の間、時間と共に改善される。ネットワーク記述子230は、ニューラルネットワーク242を評価する際にユーザを支援するためにパフォーマンスパネル330を生成し、また、以下でより詳細に説明される他のタイプのパフォーマンスパネルを生成する。
図33は、様々な他の実施形態による、図2のネットワーク記述GUIが、ニューラルネットワークの訓練に関連する他のパフォーマンスデータをどのように描写するかを示すスクリーンショットである。示されるように、パフォーマンスパネル3300は、図28のニューラルネットワーク242に関連するネットワークアーキテクチャ3302と、推論グラフ3310とを含む。推論グラフ3310は、訓練データの異なるサンプルを分類するために必要な推論時間を示すプロット3312を含む。示されるように、ニューラルネットワーク242は、異なるサンプル3320を処理するために異なる長さの時間を必要とする。
図32~33を概ね参照すると、ネットワーク記述子230は、動作中のニューラルネットワーク242のパフォーマンスを説明するために、これらの図と併せて説明されるパフォーマンスデータを生成する。ネットワーク記述子230はまた、以下でより詳細に説明されるように、ニューラルネットワーク242が実行されるときに消費される計算リソースの量を示すデータをキャプチャする。
図34は、様々な他の実施形態による、図2のネットワーク記述GUIが、ニューラルネットワークの実行時に消費されたメモリの量をどのように表示するかを示すスクリーンショットである。示されるように、リソースパネル3400は、ネットワークアーキテクチャ3402及びメモリチャート3410を含む。メモリチャート3410は、ネットワークアーキテクチャ3402に規定されている各層の実行中に消費されるメモリの量を示す棒グラフである。第2の畳み込み層は144キロバイトで最も多くのメモリを消費する。メモリチャート3410はまた、ニューラルネットワーク242が実行されるときに消費されるメモリの総量を示すことができる。
ネットワーク記述子230は、図32~34と併せて上記した様々なパネルを生成して、ニューラルネットワーク242がどのように動作するかについての貴重な洞察をユーザに提供する。この情報に基づいて、ユーザは、ニューラルネットワーク242を変更する必要があるかどうかを判定することができる。ネットワーク記述子230は、図35~37と併せて以下に説明するように、ユーザがニューラルネットワーク242の代替バージョンを生成及びテストすることを可能にする追加のパネルを生成する。
図35は、様々な実施形態による、図2のネットワーク記述GUIがいかに所与のニューラルネットワークの異なったバージョンを表現するかを示すスクリーンショットである。示されるように、変更パネル3500は、ユーザが代替ネットワークアーキテクチャを生成するために対話することができるネットワークアーキテクチャ3502を含む。例えば、ユーザは、変更要素3504と対話して、ネットワークアーキテクチャ3502に含まれる所与の層のサイズを増減することができる。代替バージョンパネル3510及び3520は、ネットワークアーキテクチャ3502へのユーザの変更に基づいて生成される代替ネットワークアーキテクチャ3512及び3522をそれぞれ示している。ネットワーク記述子230は、以下でより詳細に説明されるように、これらの異なるバージョンのニューラルネットワーク242との比較分析を実行して、追加のパフォーマンスデータを生成することができる。
図36は、様々な実施形態による、所与のニューラルネットワークの異なるバージョンに関連する比較パフォーマンスデータを図2のネットワーク記述GUIがどのように表示するかを示すスクリーンショットである。示されるように、比較パフォーマンスパネル3600は、代替ネットワークアーキテクチャ3512及び3522、ならびに精度グラフ3610を含む。精度グラフ3610は、訓練中のニューラルネットワーク242の異なるバージョンの精度を表すプロット3612及び3622を含む。プロット3612はネットワークアーキテクチャ3512に対応し、プロット3622はネットワークアーキテクチャ3522に対応する。示されているように、ネットワークアーキテクチャ3512は、ネットワークアーキテクチャ3522よりも高速で、高度の精度を達成する。ネットワーク記述子230は、以下でより詳細に説明されるように、ニューラルネットワーク242の代替バージョンを特徴付ける追加のデータをユーザに呈する。
図37は、様々な他の実施形態による、所与のニューラルネットワークの異なるバージョンに関連する他の比較パフォーマンスデータを図2のネットワーク記述GUIがどのように表示するかを示すスクリーンショットである。示されるように、比較パネル3700は、代替ネットワークアーキテクチャ3512及び3522、ならびにそれらのネットワークアーキテクチャに対応する比較パネル3712及び3722を含む。比較パネル3712及び3722は、それぞれのネットワークアーキテクチャに関連する様々なパフォーマンスデータを伝達し、それにより、ユーザは、ニューラルネットワーク242に加えられた変更がパフォーマンスを増加させるか減少させるかを評価することを可能にする。
図32~37を概ね参照すると、ネットワーク記述子230は、これらの図に関連して説明される様々なパネルでネットワーク記述GUI232を生成及び/または更新して、ニューラルネットワーク242を改善することでユーザを支援することができる有益なデータをユーザに呈する。有利なことに、ネットワーク記述GUI232を介して明示される様々なツールは、ユーザがニューラルネットワークを生成及び変更することができる便利なメカニズムを生じる。
ネットワーク記述子230は、一般に、ニューラルネットワークの挙動の様々な側面を記述し、ニューラルネットワークの挙動を特徴付けて定量化し、特定の状況下でニューラルネットワークの挙動を制約するための広範囲の動作を生じさせる。ネットワーク記述子230の動作は、図38A~38Bと併せて以下でより詳細に説明される。
図38A~38Bは、様々な実施形態による、グラフィカルユーザインターフェイスを介してニューラルネットワークの挙動をアーティキュレートし、制約するための方法ステップのフローの図を示している。方法ステップは、図1~2及び28~37のシステムと併せて説明されるが、当業者は、任意の順序で方法ステップを実行するように構成された任意のシステムが、本実施形態の範囲内にあることを理解する。
図38Aに示されるように、方法3800は、ステップ3802で始まり、図2のネットワーク記述子230は、ニューラルネットワークを訓練するために使用される訓練データのサンプルを取得する。訓練データのサンプルには、例えば、手書きの数字の画像のセット、自動車の画像のセット、音声ファイルのセットなどを含む、技術的に実現可能な任意のデータセットを含めることができる。
ステップ3804で、ネットワーク記述子230は、訓練データ内のサンプルの活性化データを生成する。例えば、ネットワーク記述子230は、ニューラルネットワークに訓練データのサンプルを用いて推論動作を実行させて、そのサンプルの分類を生成することができる。次に、ネットワーク記述子230は、ニューラルネットワークの所与の層に関連するニューロンのセットの出力を分析して、活性化データを生成することができる。
ステップ3806で、ネットワーク記述子230は、訓練データのサンプルに応答してニューラルネットワークの出力を決定する。例えば、ネットワーク記述子230は、ニューラルネットワークが訓練データのサンプルに割り当てる分類を決定することができる。出力は必ずしも正しいとは限らない。しかし、ネットワーク記述子230は、ステップ3804で生成された活性化データに基づいて誤った出力を変更するようにニューラルネットワークの出力を変更することができる。
ステップ3808で、ネットワーク記述子230は、活性化データに基づいてニューラルネットワークの出力を変更するルールを生成する。ニューラルネットワークが活性化データと一致する活性化パターンを示す状況では、ルールが適用され、ニューラルネットワークに変更された出力が生成される。図29には、ニューラルネットワークの出力を変更するために適用できるルールの例が含まれている。ネットワーク記述子230は、ニューラルネットワークの挙動を制約するために上記のステップを実装する。ネットワーク記述子230はまた、ニューラルネットワークの挙動をアーティキュレートするために以下のステップを実施する。
ステップ3810で、ネットワーク記述子230は、ニューラルネットワークを訓練するために使用される訓練データに関連するドメイン事実(domain fact)のセットを決定する。ドメイン事実のセットは、訓練データに特に適用できる論理的事実を含むナレッジベースから導出できる。例えば、自動車に関連する一連のドメイン事実は、ほとんどの車に4つのホイールがあること、または車の後部に通常トランクがあることを示し得る。
ステップ3812で、ネットワーク記述子230は、一般知識的事実(general knowledge fact)のセットを決定する。一般知識的事実のセットは、様々な状況に関連する可能性のある一般的に適用可能な事実を含む知識ベースから導き出すことができる。例えば、ネットワーク記述子230は、何かの後部が見える場合、その物は見ている者の反対側を向いていることを示す一般知識的事実を決定することができる。
ステップ3814で、ネットワーク記述子230は、ドメイン事実のセットを一般知識的事実のセットと比較して、1つまたは複数の派生的事実を生成する。例えば、ネットワーク記述子230は、特定のサンプルが、車のトランクが見えるために反対側を向いている自動車を含むことを示す派生的事実を生成することができ、一般知識的事実は、何かの後部が見えるとき、その何かは向こう側を向いているということを示す。ネットワーク記述子230は、自動車に関連するもの以外にも、技術的に実行可能な任意のタイプの訓練データにこのアプローチを適用することができる。ステップ3816で、ネットワーク記述子230は、ネットワーク記述GUI232を更新して、ドメイン事実のセット、一般知識的事実のセット、及び1つまたは複数の派生的事実を表示する。方法3800は図38Bに続く。
ステップ3818で、ネットワーク記述子230は、1つまたは複数の異なるバージョンのニューラルネットワークを生成する。例えば、ネットワーク記述子230は、ニューラルネットワークに関連付けられたネットワークアーキテクチャのグラフィカルな描写を介して、ニューラルネットワークの所与の層に対するユーザの変更を受け取ることができる。このようにして、ネットワーク記述子230は、ニューラルネットワークのパフォーマンスを改善する変化を識別するために、ユーザがニューラルネットワークのバリエーションを生成及びテストすることを可能にする。
ステップ3820で、ネットワーク記述子230は、ニューラルネットワークの各バージョンのパフォーマンスデータを生成する。ニューラルネットワークの特定のバージョンについて、パフォーマンスデータは、訓練中にニューラルネットワークの精度がどのように変化するか、ニューラルネットワークが訓練データの様々なサンプルについて推論動作を実行するために必要な時間、ニューラルネットワークの各層が消費するメモリの量、及びニューラルネットワークのフォーマンスを特徴付けるその他のデータを示すことができる。また、図32~37と併せて既に例として説明されているように、ステップ3822で、ネットワーク記述子230は、ネットワーク記述GUI232を更新して、パフォーマンスデータを表示する。
上記の技術を介して、ネットワーク記述子330は、ニューラルネットワークの挙動を特徴付ける自然言語記述をアーティキュレートし、その挙動を制約してニューラルネットワークの精度を高めることができる。したがって、これらの手法により、ユーザはニューラルネットワークがどのように動作するかをより深く理解し、その理解を他者に伝え、必要に応じてニューラルネットワークの出力を変更することができる。
要約すると、ニューラルネットワークを生成、分析、評価、及び記述するための様々なツールをユーザに明示する人工知能(AI)設計アプリケーションである。AIの設計アプリケーションには、ネットワークアーキテクチャのグラフィカルな描写で、ユーザの操作に基づいてニューラルネットワークを定義するプログラムコードを生成及び/または更新するネットワークジェネレータが含まれている。また、AIの設計アプリケーションには、テスト入力に応じて、層のレベル、ニューロンのレベル、及び重みレベルでニューラルネットワークの挙動を分析するネットワークアナライザも含まれている。AIの設計アプリケーションには、訓練データのサンプルの範囲全体でニューラルネットワークの包括的な評価を実行するネットワーク評価器がさらに含まれている。最後に、AIの設計アプリケーションには、ニューラルネットワークの挙動を自然言語でアーティキュレートし、ルールのセットに従ってその挙動を制約するネットワーク記述子が含まれている。
従来技術と比較した開示された技術の少なくとも1つの技術的な利点は、開示されたAIの設計アプリケーションが、設計者であるユーザが大量のプログラムコードを書いたり対話したりすることを必要とせずに、複雑なニューラルネットワークアーキテクチャを生成できることである。従来技術と比較した開示された技術の別の技術的な利点は、開示されたAIの設計アプリケーションが、所与のニューラルネットワークアーキテクチャの個々のコンポーネントの基礎となる動作及び機能に関する詳細な情報を設計者に提供するということである。したがって、AIの設計アプリケーションは、設計者が開発することを可能にし、ニューラルネットワークがどのように動作するかのさらなる理解を可能にする。従来技術と比較した開示された技術の別の技術的な利点は、開示されたAIの設計アプリケーションが、訓練段階中に所与のニューラルネットワークがどのように動作するかについて詳細な分析を実行し、それによって、ニューラルネットワークが特定の入力に基づいて特定の出力を生成する理由を設計者がよりよく理解できるようにするということである。従来技術と比較した開示された技術のさらに別の技術的な利点は、開示されたAIの設計アプリケーションが、所与のニューラルネットワークがどのように動作及び機能するかを特徴付ける自然言語の記述を自動的に生成することである。特に、これらの説明は、ニューラルネットワークの動作を設計者に説明するのに役立ち、設計者がニューラルネットワークの機能特性を他者にアーティキュレート及び説明できるようにする。これらの技術的な利点は、従来技術のアプローチに対する1つまたは複数の技術的進歩を表している。
1.いくつかの実施形態は、ニューラルネットワークの挙動を制約するためのコンピュータ実装方法であって、前記ニューラルネットワークに、第1の訓練データに基づいて第1の推論操作を実行させて、第1の出力を生成させること、前記第1の訓練データに関連付けられた第1のターゲット出力に基づいて、前記第1の出力に対応する第1のルールを生成すること、第2の推論操作を実行するときに前記ニューラルネットワークが前記第1の出力を生成することを判定すること、及び前記ニューラルネットワークが第1の入力の受信に応答して前記第1の出力を出力するのを防ぎ、代わりに、前記ニューラルネットワークが前記第1の入力の受信に応答して前記第1のターゲット出力を出力するようにする前記第1のルールを実行することを含む、前記方法を含む。
2.前記第1の出力と前記第1のターゲット出力との間の比較に基づいて、前記第1の出力が不正確であると判定することをさらに含む、条項1のコンピュータ実装方法。
3.前記第1のルールに関連付けられたプログラムコードを表示するためグラフィカルユーザインターフェイスを生成すること、第2のルールを生成するために前記グラフィカルユーザインターフェイスを介して前記プログラムコードへの少なくとも1つの変更を受信すること、前記ニューラルネットワークが第1の入力の受信に応答して前記第1の出力を出力するのを防ぎ、代わりに、前記ニューラルネットワークが前記第1の入力の受信に応答して異なる出力を出力するようにする前記第2のルールを実行することをさらに含む、条項1~2のいずれかのコンピュータ実装方法。
4.知識ベースから、前記第1の訓練データに関連する語彙用語のセットを抽出すること、及び語彙用語の前記セットを表示するためのグラフィカルユーザインターフェイスを生成すること、をさらに含む、条項1~3のいずれかのコンピュータ実装方法。
5.知識ベースから、前記第1の訓練データの1つ以上の論理属性を示すドメイン事実のセットを抽出すること、及び前記ドメイン事実のセットを表示するためのグラフィカルユーザインターフェイスを生成すること、をさらに含む、条項1~4項のいずれかのコンピュータ実装方法。
6.前記ドメイン事実のセット及び前記第1の出力に基づいて派生的事実を生成することをさらに含み、前記派生的事実は、前記第1の推論動作を実行するときに前記ニューラルネットワークの機能的属性を特徴付ける、条項1~5のいずれかのコンピュータ実装方法。
7.グラフィカルユーザインターフェイスを介して表示するための前記ニューラルネットワークのアーキテクチャ表現を生成すること、及び前記グラフィカルユーザインターフェイスを介して受信した入力に基づいて、前記ニューラルネットワークの複数の異なるバージョンを生成すること、をさらに含む、条項1~6のいずれかのコンピュータ実装方法。
8.前記ニューラルネットワークの少なくとも1つのバージョンのパフォーマンスデータを生成することであって、前記パフォーマンスデータが、訓練フェーズ中の前記ニューラルネットワークの前記少なくとも1つのバージョンの1つ以上のパフォーマンス特性を特徴付ける、前記生成すること、及び前記パフォーマンスデータを表示するために前記グラフィカルユーザインターフェイスを更新すること、をさらに含む、請求項1~7のいずれかのコンピュータ実装方法。
9.前記パフォーマンスデータは、前記ニューラルネットワークの前記少なくとも1つのバージョンが、動作中に1つまたは複数の出力を生成する精度を示す、条項1~8のいずれかのコンピュータ実装方法。
10.前記パフォーマンスデータは、前記ニューラルネットワークの前記少なくとも1つのバージョンが1つまたは複数の出力を生成するのに要する時間の長さを示す、条項1~9のいずれかのコンピュータ実装方法。
11.いくつかの実施形態は、プロセッサによって実行されるとき、前記プロセッサに、ニューラルネットワークの挙動を、制約させるプログラム命令を格納する非一時的なコンピュータ可読媒体であって、前記プロセッサは、第1の訓練データに関連付けられた第1のターゲット出力に基づいて第1の出力に対応する第1のルールを生成するステップであって、前記第1の出力は、前記第1の訓練データを使用して前記ニューラルネットワークによって実行される第1の推論操作から生じる、前記生成するステップ、第2の推論操作を実行するときに前記ニューラルネットワークが前記第1の出力を生成することを判定するステップ、及び前記ニューラルネットワークが第1の入力の受信に応答して前記第1の出力を出力するのを防ぎ、代わりに、前記ニューラルネットワークが前記第1の入力の受信に応答して前記第1のターゲット出力を出力するようにする前記第1のルールを実行するステップを実行する、前記非一時的なコンピュータ可読媒体を含む。
12.前記第1の出力と前記第1のターゲット出力との間の比較に基づいて、前記第1の出力が不正確であると判定するステップをさらに含む、条項11の非一時的なコンピュータ可読媒体。
13.前記第1のルールに関連付けられたプログラムコードを表示するためグラフィカルユーザインターフェイスを生成するステップ、第2のルールを生成するために前記グラフィカルユーザインターフェイスを介して前記プログラムコードへの少なくとも1つの変更を受信するステップ、及び前記ニューラルネットワークが第1の入力の受信に応答して前記第1の出力を出力するのを防ぎ、代わりに、前記ニューラルネットワークが前記第1の入力の受信に応答して異なる出力を出力するようにする前記第2のルールを実行するステップをさらに含む、条項11~12のいずれかの非一時的なコンピュータ可読媒体。
14.知識ベースから、前記第1の訓練データに関連する語彙用語のセットを抽出するステップ、及び語彙用語の前記セットを表示するためのグラフィカルユーザインターフェイスを生成するステップをさらに含む、条項11~13のいずれかの非一時的なコンピュータ可読媒体。
15.知識ベースから、前記第1の訓練データの1つ以上の論理属性を示すドメイン事実のセットを抽出するステップ、及び前記ドメイン事実のセットを表示するためのグラフィカルユーザインターフェイスを生成するステップをさらに含む、条項11~14のいずれかの非一時的なコンピュータ可読媒体。
16.前記ドメイン事実のセット及び前記第1の出力に基づいて派生的事実を生成するステップをさらに含み、前記派生的事実は、前記第1の推論操作を介して処理される訓練データの第1のサンプルの少なくとも1つの属性を示す、条項11~15のいずれかの非一時的なコンピュータ可読媒体。
17.前記ニューラルネットワークの少なくとも1つのバージョンのパフォーマンスデータを生成するステップであって、前記パフォーマンスデータが、訓練フェーズ中の前記ニューラルネットワークの前記少なくとも1つのバージョンの1つ以上のパフォーマンス特性を特徴付ける、前記生成するステップ、及び前記パフォーマンスデータを表示するために前記グラフィカルユーザインターフェイスを更新するステップをさらに含む、条項11~16のいずれかの非一時的なコンピュータ可読媒体。
18.前記パフォーマンスデータは、前記ニューラルネットワークの前記少なくとも1つのバージョンが、動作の間に1つまたは複数の出力を生成するときに消費するメモリの量を示す、条項11~17のいずれかの非一時的なコンピュータ可読媒体。
19.前記パフォーマンスデータは、前記ニューラルネットワークの前記少なくとも1つのバージョンに含まれるニューラルネットワーク層が動作の間に1つまたは複数の出力を処理するときに消費するメモリの量を示す、条項11~18のいずれかの非一時的なコンピュータ可読媒体。
20.いくつかの実施形態は、ソフトウェアアプリケーションを格納するメモリと、プロセッサであって、前記ソフトウェアアプリケーションを実行するときに、ニューラルネットワークに、第1の訓練データに基づいて第1の推論操作を実行させて、第1の出力を生成させるステップ、前記第1の訓練データに関連付けられた第1のターゲット出力に基づいて、前記第1の出力に対応する第1のルールを生成するステップ、第2の推論操作を実行するときに前記ニューラルネットワークが前記第1の出力を生成することを判定するステップ、及び前記ニューラルネットワークが前記第1の入力の受信に応答して前記第1の出力を出力するのを防ぎ、代わりに、前記ニューラルネットワークが前記第1の入力の受信に応答して前記第1のターゲット出力を出力するようにする前記第1のルールを実行するステップを実行するよう構成されるプロセッサとを備えるシステムを含む。
請求項のいずれかに記載された請求項の要素のいずれか及び/または本願に記載の任意の要素の任意のすべての組み合わせが、任意の方法で、本発明及び保護の企図された範囲内に入る。
様々な実施形態の説明は、例証の目的で提示されているが、包括的に、または開示される実施形態に限定されることが意図されていない。多くの変更及び変形例は、説明される実施形態の範囲及び主旨から逸脱するものではないということが当業者に明白である。
本実施形態の態様は、システム、方法、またはコンピュータプログラム製品として具体化され得る。したがって、本開示の態様は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、またはすべてが包括的に「モジュール」、「システム」、もしくは「コンピュータ」と称され得るソフトウェア及びハードウェアの態様を組み合わせる実施形態の形態をとり得る。さらに、本開示の態様は、コンピュータ可読プログラムコードが組み込まれた1つまたは複数のコンピュータ可読媒体(複数可)に組み込まれたコンピュータプログラム製品の形態をとることができる。
1つ以上のコンピュータ可読媒体(複数可)の任意の組み合わせを利用し得る。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であり得る。コンピュータ可読記憶媒体は、例えば、限定ではないが、電子、磁気、光、電磁気、赤外線、もしくは半導体のシステム、装置、もしくはデバイス、または任意の前述の好適な組み合わせであり得る。コンピュータ可読記憶媒体のより多くの具体例は、1つ以上の通信回線を有する電気的接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、消去可能PROM(EPROMまたはフラッシュメモリ)、光ファイバ、コンパクトディスク読み取り専用メモリ(CD-ROM)、光記憶デバイス、磁気記憶デバイス、または前述の任意の好適な組み合わせを含むであろう。本文書の文脈において、コンピュータ可読記憶媒体は、命令実行システム、装置、もしくはデバイスによる使用のために、またはそれらと接続してプログラムを含むまたは記憶することができる任意の有形媒体であり得る。
本開示の態様は、本開示の実施形態に従った方法、装置(システム)、及びコンピュータプログラム製品のフローチャート図及び/またはブロック図を参照して上で説明されている。フローチャート図及び/またはブロック図の各ブロック、及びフローチャート図及び/またはブロック図のブロックの組み合わせは、コンピュータプログラム命令によって実施できることが理解される。これらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されて、機械を製造することができる。命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行されると、フローチャート及び/またはブロック図のブロックまたは複数のブロックで指定された機能/作動の実施を可能にする。係るプロセッサは、限定ではなく、汎用プロセッサ、専用プロセッサ、特定用途向けプロセッサ、またはフィールドプログラム可能ゲートアレイであり得る。
図のフローチャート及びブロック図は、本開示の様々な実施形態に従ったシステム、方法、装置、及びコンピュータプログラム製品の可能である実施態様のアーキテクチャ、機能、及び動作を示す。この点で、フローチャートまたはブロック図の各ブロックは、規定された論理機能(複数可)を実装するための1つ以上の実行可能命令を含むモジュール、セグメント、またはコードの一部を表し得る。また、いくつかの代替実施態様では、ブロックで留意される機能は、図で留意される順序とは違う順序で起こり得ることを留意されたい。例えば、連続して示される2つのブロックは、実際に、実質的に同時に実行され得る、または、ブロックは、時々、含有される機能に応じて、逆の順序で実行され得る。また、ブロック図及び/またはフローチャート図の各ブロック、及びブロック図及び/またはフローチャート図のブロックの組み合わせは、規定の機能もしくは行為、または特殊目的ハードウェア及びコンピュータ命令の組み合わせを行う特殊目的ハードウェアベースシステムによって実施され得ることを留意されたい。
上記は本開示の実施形態を対象としているが、本開示の他の及びさらなる実施形態は、その基本的な範囲から逸脱することなく考案することができ、その範囲は、以下の特許請求の範囲によって決定される。