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

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

▶ ヴィアナイ システムズ, インコーポレイテッドの特許一覧

特許7233600ニューラルネットワークアーキテクチャを指定するプログラムコードを定義及び実行する技術
<>
  • 特許-ニューラルネットワークアーキテクチャを指定するプログラムコードを定義及び実行する技術 図1
  • 特許-ニューラルネットワークアーキテクチャを指定するプログラムコードを定義及び実行する技術 図2
  • 特許-ニューラルネットワークアーキテクチャを指定するプログラムコードを定義及び実行する技術 図3
  • 特許-ニューラルネットワークアーキテクチャを指定するプログラムコードを定義及び実行する技術 図4
  • 特許-ニューラルネットワークアーキテクチャを指定するプログラムコードを定義及び実行する技術 図5A
  • 特許-ニューラルネットワークアーキテクチャを指定するプログラムコードを定義及び実行する技術 図5B
  • 特許-ニューラルネットワークアーキテクチャを指定するプログラムコードを定義及び実行する技術 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-02-24
(45)【発行日】2023-03-06
(54)【発明の名称】ニューラルネットワークアーキテクチャを指定するプログラムコードを定義及び実行する技術
(51)【国際特許分類】
   G06F 8/41 20180101AFI20230227BHJP
   G06F 8/30 20180101ALI20230227BHJP
   G06N 3/08 20230101ALI20230227BHJP
   G06N 20/00 20190101ALI20230227BHJP
【FI】
G06F8/41 170
G06F8/30
G06N3/08
G06N20/00
【請求項の数】 20
(21)【出願番号】P 2022502038
(86)(22)【出願日】2020-07-06
(65)【公表番号】
(43)【公表日】2022-09-20
(86)【国際出願番号】 US2020040929
(87)【国際公開番号】W WO2021007178
(87)【国際公開日】2021-01-14
【審査請求日】2022-02-02
(31)【優先権主張番号】16/505,525
(32)【優先日】2019-07-08
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】519266524
【氏名又は名称】ヴィアナイ システムズ, インコーポレイテッド
(74)【代理人】
【識別番号】100073184
【弁理士】
【氏名又は名称】柳田 征史
(74)【代理人】
【識別番号】100175042
【弁理士】
【氏名又は名称】高橋 秀明
(72)【発明者】
【氏名】インダー シッカ,ヴィシャール
(72)【発明者】
【氏名】アメラン,ダニエル ジェイムズ
【審査官】山本 俊介
(56)【参考文献】
【文献】特開平8-166934(JP,A)
【文献】国際公開第2019/102984(WO,A1)
【文献】特開2018-14060(JP,A)
【文献】米国特許出願公開第2018/0314945(US,A1)
【文献】特開平1-180636(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/30- 8/54
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
実行可能ニューラルネットワークを生成するコンピュータにより実行される方法であって、
ニューラルネットワークの1つ以上の層を定義する複数の数式を指定するソースコードを受信することと、
前記複数の数式に含まれる第1の数式に対して1つ以上のコンパイル演算を実行することであって、前記1つ以上のコンパイル演算は、前記第1の数式に含まれる第1の変数が代入されていないと判定することと、前記第1の変数が代入されていないことに基づいて、前記ニューラルネットワークが訓練されると前記第1の変数が学習されると判定することと、を含む、前記実行することと、
実行されると、前記第1の変数についての値を生成させる、前記第1の数式に対応するコンパイル済みコードを生成することと、
を備えた、前記コンピュータにより実行される方法。
【請求項2】
前記第1の変数は、前記第1の数式の第1の部分において指定され、
前記1つ以上の演算は、前記第1の数式の第2の部分に基づいて前記第1の数式をインスタンス化することを含む、請求項1に記載のコンピュータにより実行される方法。
【請求項3】
前記第1の変数が代入されていないと判定することは、前記第1の数式がインスタンス化された後、前記第1の変数についての対応する値が代入されていたかどうかを判定することを含む、請求項2に記載のコンピュータにより実行される方法。
【請求項4】
前記第1の変数が訓練の間に学習されると判定することは、前記1つ以上の層に含まれる第1の層の特性に更に基づいている、請求項1に記載のコンピュータにより実行される方法。
【請求項5】
前記第1の層の前記特性は、前記1つ以上の層に含まれる第2の層の出力への前記第1の層の入力の代入を含み、
前記第1の層の前記入力は、前記第1の変数と関連付けられている、請求項4に記載のコンピュータにより実行される方法。
【請求項6】
学習済み変数ユーザインタフェースにおいて前記第1の変数を表示することを更に備えた、請求項1に記載のコンピュータにより実行される方法。
【請求項7】
前記コンパイル済みコードを実行する前に、前記学習済み変数ユーザインタフェースを介して、前記第1の変数が訓練の間に学習されることを確認する確認入力を受信することを更に備えた、請求項6に記載のコンピュータにより実行される方法。
【請求項8】
前記第1の変数についての前記値を判定するために、前記ニューラルネットワークの訓練段階において前記コンパイル済みコードを実行することを更に備えた、請求項1に記載のコンピュータにより実行される方法。
【請求項9】
前記ソースコードは、前記1つ以上の層に含まれる第1の層と第2の層との間の関係を識別する、請求項1に記載のコンピュータにより実行される方法。
【請求項10】
ウェブブラウザアプリケーション内で前記ソースコードへの更新を受信することと、
前記ウェブブラウザの実行フレームワーク内で前記更新されたソースコードを再コンパイルすることと、
を更に備えた、請求項1に記載のコンピュータにより実行される方法。
【請求項11】
命令を記憶したコンピュータ可読媒体であって、前記命令は、プロセッサによって実行されると、
ニューラルネットワークの1つ以上の層を定義する複数の数式を指定するソースコードを受信するステップと、
前記複数の数式に含まれる第1の数式に対して1つ以上のコンパイル演算を実行するステップであって、前記1つ以上のコンパイル演算は、前記第1の数式に含まれる第1の変数が代入されていないと判定することと、前記第1の変数が代入されていないことに基づいて、前記ニューラルネットワークが訓練されると前記第1の変数が学習されると判定することと、を含む、前記実行するステップと、
実行されると、前記第1の変数についての値を生成させる、前記第1の数式に対応するコンパイル済みコードを生成するステップと、
を実行することによって、前記プロセッサに実行可能ニューラルネットワークを生成させる、前記コンピュータ可読媒体。
【請求項12】
前記第1の変数は、前記第1の数式の第1の部分において指定され、
前記1つ以上の演算は、前記第1の数式の第2の部分に基づいて前記第1の数式をインスタンス化することを含む、請求項11に記載のコンピュータ可読媒体。
【請求項13】
前記第1の変数が代入されていないと判定することは、前記第1の数式がインスタンス化された後、前記第1の変数についての対応する値が代入されていたかどうかを判定することを含む、請求項12に記載のコンピュータ可読媒体。
【請求項14】
前記前記第1の変数が訓練の間に学習されると判定することは、前記1つ以上の層に含まれる第1の層の特性に更に基づいている、請求項11に記載のコンピュータ可読媒体。
【請求項15】
前記第1の層の前記特性は、前記1つ以上の層に含まれる第2の層の出力への前記第1の層の入力の代入を含み、
前記第1の層の前記入力は、前記第1の変数と関連付けられている、請求項14に記載のコンピュータ可読媒体。
【請求項16】
学習済み変数ユーザインタフェースにおいて前記第1の変数を表示することを更に備えた、請求項11に記載のコンピュータ可読媒体。
【請求項17】
前記コンパイル済みコードを実行する前に、前記学習済み変数ユーザインタフェースを介して、前記第1の変数が訓練の間に学習されることを確認する確認入力を受信するステップを更に備えた、請求項16に記載のコンピュータ可読媒体。
【請求項18】
前記第1の変数についての前記値を判定するために、前記ニューラルネットワークの訓練段階において前記コンパイル済みコードを実行することを更に備えた、請求項11に記載のコンピュータ可読媒体。
【請求項19】
前記コンパイル済みコードを生成することは、前記第1の数式を機械実行可能コードにコンパイルすることを含む、請求項11に記載のコンピュータ可読媒体。
【請求項20】
ソフトウェアアプリケーションを記憶したメモリと、
プロセッサと、
を備えるシステムであって、前記プロセッサは、前記ソフトウェアアプリケーションを実行すると、
ニューラルネットワークの1つ以上の層を定義する複数の数式を指定するソースコードを受信するステップと、
前記複数の数式に含まれる第1の数式に対して1つ以上のコンパイル演算を実行するステップであって、前記1つ以上のコンパイル演算は、前記第1の数式に含まれる第1の変数が代入されていないと判定することと、前記第1の変数が代入されていないことに基づいて、前記ニューラルネットワークが訓練されると前記第1の変数が学習されると判定することと、を含む、前記実行するステップと、
実行されると、前記第1の変数についての値を生成させる、前記第1の数式に対応するコンパイル済みコードを生成するステップと、
を実行するように構成されている、前記システム。
【発明の詳細な説明】
【関連出願への相互参照】
【0001】
本出願は、本明細書で参照することによって以下に組み込まれる、2019年7月8日に出願された米国特許出願第16/505,525号の利益を主張する。
【技術分野】
【0002】
本開示の実施形態は概して、コンピュータサイエンス及び人工知能に関し、特に、ニューラルネットワークアーキテクチャを指定するプログラムコードを定義及び実行する技術に関する。
【背景技術】
【0003】
高精度で広範囲のタスクを実行するためにニューラルネットワークを訓練することができる。したがって、人工知能の分野においてニューラルネットワークが広く適合されてきている。ニューラルネットワークは、様々な範囲のネットワークアーキテクチャを有することがある。より複雑なシナリオでは、ニューラルネットワークについてのネットワークアーキテクチャは、異なる層の中での入り組んだ結合のトポロジを有する多くの異なるタイプの層を含むことがある。例えば、いくつかのニューラルネットワークは、10個以上の層を有することがあり、各々の層は、数百または数千のニューロンを含むことがあり、数百または数千の個々の結合を介して1つ以上の他の層に連結されることがある。
【0004】
ニューラルネットワークの開発工程の間、設計者は、特定のタイプの問題に対処するニューラルネットワークアーキテクチャを作成するよう、プログラムコードを書き込む。設計者は次いで、訓練データと、訓練データを処理するときにニューラルネットワークが生成するべきターゲット出力とを使用して、ニューラルネットワークを訓練する。例えば、設計者は、画像のセットに示された風景のタイプを示すラベルに従って様々な風景を表示する画像のセットに基づいて、ニューラルネットワークを訓練することがある。
【0005】
ニューラルネットワークについてのプログラムコードを書き込むとき、設計者は、ニューラルネットワーク設計及び全体的なコーディング工程を促進する様々なツールを公開する1つ以上のプログラミングライブラリに依存することが多い。それらのタイプのプログラミングライブラリを使用する1つの欠点は、プログラミングライブラリを使用するために、1つ以上の複雑なソフトウェアスタックがインストール及び実行される必要があることが通常であることである。例えば、ニューラルネットワークを定義するために、ニューラルネットワークを定義、訓練、及び/または実行するときにそれらのライブラリによって公開された機能性の多くが使用されないときでさえ、開発者は、いくつかのライブラリをインストールする必要があることがあり、各々のライブラリは、数千のコードのラインを有する。更に、それらの複雑なソフトウェアスタックは、理解及び習得することが困難である。結果として、熟練したニューラルネットワーク開発者のプールは、関連する複雑なソフトウェアスタックを使用することにおける必要レベルの専門知識を達成した小数の組の開発者に限定される。更に、複雑なソフトウェアスタックは、一般的な事項として、典型的には、適切な実行のための相当な計算リソース及びメモリリソースを必要とする。結果として、ニューラルネットワーク開発者のプールは、それらの計算要件及びメモリ要件を満たすより洗練されたハードウェアへのアクセスを有する者に更に制限される。
【0006】
ニューラルネットワークを設計するときに従来のプログラミングライブラリを使用する別の欠点は、概して、それらのプログラミングライブラリによって、設計者が、制限された数のニューラルネットワークの特徴しか制御することが許されないことである。特に、プログラミングライブラリは典型的には、厳格であり、定義することができるニューラルネットワーク層のタイプ及びパラメータに制限を課す、層定義関数を含む。例えば、いくつかの従来のプログラミングライブラリは、設計者に、訓練段階の間にニューラルネットワークの所与の層内のどの変数が学習されるかを明確に指定することを求めるか、または訓練段階の間に層の重みパラメータのみが訓練されることを許容するハードコードされたルールを持っている。それらのタイプの制約は、ニューラルネットワークを設計するとき、開発者が創造的になること、及び広範囲の構成を探索することが可能になることを妨げる。
【0007】
従来のプログラミングライブラリを使用する代わりとして、設計者は、Python、C、C++、またはJavaなどの従来型プログラミング言語を使用して、ニューラルネットワークについてのコードを書き込み得る。しかしながら、従来型プログラミング言語のフレームワークは、ニューラルネットワークアーキテクチャの核心におけるもののように、数学に基づく演算を容易に定義及び実装するために良好に適合されていない。結果として、設計者は典型的には、ニューラルネットワーク内の各々の層がどのように動作するかを定義し、様々な層が共にどのように連結されるかを指定し、異なる層によって実行される様々な演算を画す、大量の複雑なコードを書き込む必要がある。更に、ニューラルネットワークについてのコードがコンパイルされるとき、訓練段階の間に学習される変数が代入されていない。コンパイル時間の間に代入されていない変数に直面するとき、従来型プログラミング言語についての従来のコンパイラは、誤りを生じさせる。それらのタイプの誤りに対処するために、開発者は、代入されていない変数に乱数値を代入する必要があり、それは、訓練段階に生来のバイアスを導入することがあり、訓練工程及び訓練されたニューラルネットワークの精度に悪影響を及ぼすことがある。
【0008】
上述したことが示すように、本分野において必要とされるのは、ニューラルネットワークを定義する、より効率的な技術である。
【発明の概要】
【0009】
様々な実施形態は、実行可能ニューラルネットワークを生成するコンピュータにより実行される方法を含む。方法は、ニューラルネットワークの1つ以上の層を定義する複数の数式を指定するソースコードを受信することと、第1の数式に含まれる第1の変数が代入されていないと判定することと、第1の変数が代入されていないことに基づいて、ニューラルネットワークが訓練されると第1の変数が学習されると判定することと、を含む、複数の数式に含まれる第1の数式に対して1つ以上のコンパイル演算を実行することと、実行されると、第1の変数についての値を生成させる、第1の数式に対応するコンパイル済みコードを生成することと、を含む。
【0010】
従来技術に対する開示される技術の少なくとも1つの技術的利点は、設計者ユーザが大量のプログラムコードを書き込むこと、または設計者ユーザが大量のプログラムコードと相互作用することなく、開示されるAI設計アプリケーションが複雑なニューラルネットワークアーキテクチャを生成することができることである。従来技術に対する開示される技術の別の技術的利点は、開示されるAI設計アプリケーションによって、設計者が、ニューラルネットワークアーキテクチャのいずれかの特徴または態様を制御することが可能になることである。特に、ニューラルネットワークの設計者は、ニューラルネットワークを一連の数学的演算として定義し、数学的演算の仕様に対して完全な制御を有する。更に、AI設計アプリケーションは、ハードコーディングルールなしに、または設計者がそれらの変数を明確に識別する必要なく、ニューラルネットワークアーキテクチャ内のどの変数が訓練工程の間に学習されることになるかを自動で識別する。したがって、AI設計アプリケーションによって、設計者が開発することが可能になり、ニューラルネットワークがどのように動作するかのより良好な理解が可能になる。
【0011】
上述したことが様々な実施形態の特徴を記載した様式を詳細に理解することができるように、その一部が添付図面において示される、様々な実施形態を参照することによって、上記に簡潔に要約された発明的概念のより多くの特定の説明を得ることができる。しかしながら、添付図面が発明的概念の典型的な実施形態のみを示し、したがって、範囲を限定すると考えられず、他に等しい効果的な実施形態が存在することに留意されよう。
【図面の簡単な説明】
【0012】
図1】様々な実施形態の1つ以上の態様を実装するように構成されたシステムを示す。
図2】様々な実施形態に従った、図1のAI設計アプリケーションのより詳細な例示である。
図3】様々な実施形態に従った、図2のネットワークジェネレータのより詳細な例示である。
図4】様々な実施形態に従った、図3のコンパイラエンジン及び合成エンジンのより詳細な例示である。
図5A】様々な実施形態に従った、図3のネットワーク生成GUIがニューラルネットワークの生成をどのように促進するかを示すスクリーンショットである。
図5B】様々な実施形態に従った、図3のネットワーク生成GUIがニューラルネットワークの生成をどのように促進するかを示すスクリーンショットである。
図6】様々な実施形態に従った、数学に基づくプログラミング言語においてニューラルネットワークを定義及びコンパイルする方法ステップのフローチャートである。
【発明を実施するための形態】
【0013】
以下の説明では、様々な実施形態のより完全な理解を提供するために、多数の特定の詳細が示される。しかしながら、それらの特定の詳細のうちの1つ以上なしに、発明的概念を実施することができることが当業者によって明らかである。
【0014】
上述したように、ディープニューラルネットワークは、多数の層及び入り組んだ結合トポロジを含む複雑なネットワークアーキテクチャを有することがある。結果として、ディープニューラルネットワークは、設計者が生成するのに困難であることがある。更に、ディープニューラルネットワークが生成されると、ディープニューラルネットワークと関連付けられたネットワークアーキテクチャの複雑さは、設計者が分析及び理解するのに困難であることがある。ディープニューラルネットワークを分析及び理解する能力が制限されていることにより、設計者は更に、ディープニューラルネットワークが意図したタスクをどの程度良好に実行するかを評価する困難性を有することがある。最終的に、ディープニューラルネットワークがどのように動作するかの明確な理解がないと、設計者は、ディープニューラルネットワークの演算を容易に特徴付けることができず、または他者にその演算を容易に説明することができない。
【0015】
それらの問題に対処するために、様々な実施形態は、ユーザにニューラルネットワークを生成、分析、評価、及び記述するための様々なツールを公開する人工知能(AI)設計アプリケーションを含む。AI設計アプリケーションは、ネットワークアーキテクチャのグラフィカル描写とのユーザ対話に基づいてニューラルネットワークを定義する、プログラムコードを生成及び/または更新するネットワークジェネレータを含む。ネットワークジェネレータによって、ユーザが、数学に基づくプログラミング言語においてニューラルネットワークを定義することが可能になる。数学に基づくプログラミング言語を使用して作成されたソースコードのコンパイルは、ニューラルネットワークアーキテクチャの効率的な開発を可能にするいくつかの特徴を含む。AI設計アプリケーションはまた、試験入力に応答して、層レベル、ニューロンレベル、及び重みレベルにおいてニューラルネットワークの振る舞いを分析するネットワークアナライザを含む。AI設計アプリケーションは更に、訓練データのサンプルの範囲にわたってニューラルネットワークの包括的な評価を実行するネットワークエバリュエータを含む。最終的に、AI設計アプリケーションは、自然言語においてニューラルネットワークの振る舞いを明確にし、ルールのセットに従ってその振る舞いを制約するネットワーク記述子を含む。
【0016】
従来技術に対する開示される技術の少なくとも1つの技術的利点は、設計者ユーザが大量のプログラムコードを書き込むこと、または設計者ユーザが大量のプログラムコードと相互作用することなく、開示されるAI設計アプリケーションが複雑なニューラルネットワークアーキテクチャを生成することができることである。多くの場合、開示されるAI設計アプリケーションを使用してニューラルネットワークアーキテクチャを生成するときに必要なプログラムコードの量は、従来のプログラミング技術を使用してニューラルネットワークアーキテクチャを生成するよりも1桁少ない。従来技術に対する開示される技術の別の技術的利点は、開示されるAI設計アプリケーションによって、設計者が、ニューラルネットワークアーキテクチャのいずれかの特徴または態様を制御することが可能になることである。特に、ニューラルネットワークの設計者は、ニューラルネットワークを一連の数学的演算として定義し、数学的演算の仕様に対して完全な制御を有する。更に、AI設計アプリケーションは、ハードコーディングルールなしに、または設計者がそれらの変数を明確に識別する必要なく、ニューラルネットワークアーキテクチャ内のどの変数が訓練工程の間に学習されることになるかを自動で識別する。したがって、AI設計アプリケーションによって、設計者が開発することが可能になり、ニューラルネットワークがどのように動作するかのより良好な理解が可能になる。
【0017】
システム概要
図1は、様々な実施形態の1つ以上の態様を実装するように構成されたシステムを示す。図示されるように、システム100は、ネットワーク150を介して共に結合されたクライアント110及びサーバ130を含む。クライアント110またはサーバ130は、デスクトップコンピュータ、ラップトップコンピュータ、モバイルデバイス、コンピューティングデバイスの仮想インスタンス、並びに分散コンピュータシステム及び/またはクラウド方式コンピュータシステムなどを含む、いずれかの技術的に実現可能なタイプのコンピュータシステムであってもよい。ネットワーク150は、とりわけ、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、ワールドワイドウェブ、またはインターネットを含む、いずれかの技術的に実現可能な相互接続された通信リンクのセットであってもよい。クライアント110及びサーバ130は、ネットワーク150を介して通信するように構成される。
【0018】
更に図示されるように、クライアント110は、共に結合された、プロセッサ112、入力/出力(I/O)デバイス114、及びメモリ116を含む。プロセッサ112は、データを処理し、ソフトウェアアプリケーションを実行するように構成されたいずれかの技術的に実現可能なハードウェアユニットのセットを含む。例えば、プロセッサ112は、1つ以上の中央処理装置(CPU)、1つ以上のグラフィックプロセシングユニット(GPU)、及び/または1つ以上の並列プロセシングユニット(PPU)を含んでもよい。I/Oデバイス114は、例えば、とりわけ、ディスプレイデバイス、キーボード、及びタッチスクリーンを含む、入力演算及び/または出力演算を実行するように構成されたいずれかの技術的に実現可能なデバイスのセットを含む。
【0019】
メモリ116は、ハードディスク、ランダムアクセスメモリ(RAM)モジュール、及びリードオンリメモリ(ROM)など、データ及びソフトウェアアプリケーションを記憶するように構成されたいずれかの技術的に実現可能な記憶媒体を含む。メモリ116は、データベース118(0)、人工知能(AI)設計アプリケーション120(0)、AIモデル122(0)、及びグラフィカルユーザインタフェース(GUI)124(0)を含む。データベース118(0)は、様々なタイプのデータを記憶するファイルシステム及び/またはデータ記憶アプリケーションである。AI設計アプリケーション120(0)は、プロセッサ112によって実行されると、1つ以上のAIモデルを生成、分析、評価、及び記述するようサーバ130上で実行する対応するソフトウェアアプリケーションと相互動作するソフトウェアアプリケーションである。AIモデル122(0)は、汎用人工知能用演算または特殊化人工知能用演算を実行するように構成された1つ以上の人工ニューラルネットワークを含む。GUI124(0)は、ユーザがAI設計アプリケーション120(0)とインタフェース接続することを可能にする。
【0020】
サーバ130は、共に結合された、プロセッサ132、I/Oデバイス134、及びメモリ136を含む。プロセッサ132は、1つ以上のCPU、1つ以上のGPU、及び/または1つ以上のPPUなど、データを処理し、ソフトウェアアプリケーションを実行するように構成されたいずれかの技術的に実現可能なハードウェアユニットのセットを含む。I/Oデバイス134は、とりわけ、ディスプレイデバイス、キーボード、またはタッチスクリーンなど、入力演算及び/または出力演算を実行するように構成されたいずれかの技術的に実現可能なデバイスのセットを含む。
【0021】
メモリ136は、例えば、ハードディスク、RAMモジュール、及びROMなど、データ及びソフトウェアアプリケーションを記憶するように構成されたいずれかの技術的に実現可能な記憶媒体を含む。メモリ136は、データベース118(1)、AI設計アプリケーション120(1)、AIモデル122(1)、及びGUI124(1)を含む。データベース118(1)は、データベース118(1)と同様に、様々なタイプのデータを記憶するファイルシステム及び/またはデータ記憶アプリケーションである。設計アプリケーション120(1)は、プロセッサ132によって実行されると、1つ以上のAIモデルを生成、分析、評価、及び記述するようAI設計アプリケーション120(0)と相互動作するソフトウェアアプリケーションである。AIモデル122(1)は、汎用人工知能用演算または特殊化人工知能用演算を実行するように構成された1つ以上の人工ニューラルネットワークを含む。GUI124(1)はユーザがAI設計アプリケーション120(1)とインタフェース接続することを可能にする。
【0022】
一般的な事項として、データベース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と総称される。
【0023】
演算では、AI設計アプリケーション120は、GUI124を介して受信されたユーザ入力に基づいて、AIモデル122を生成する。GUI124は、他の演算の中で、ユーザが、AIモデル122を作成及び編集し、AIモデル122の機能性を探索し、訓練データに対してAIモデル122を評価し、AIモデル122の実行及び/または演算を記述及び/または制約する様々なデータを生成することを可能にする設計及び分析ツールを公開する。上記演算を実行するAI設計アプリケーション120内の様々なモジュールは、図2と共に以下でより詳細に説明される。
【0024】
図2は、様々な実施形態に従った、図1のAI設計アプリケーション120のより詳細な例示である。図示されるように、AI設計アプリケーション120は、ネットワークジェネレータ200、ネットワークアナライザ210、ネットワークエバリュエータ220、及びネットワーク記述子230を含む。また図示されるように、AIモデル122は、1つ以上のエージェント240を含み、GUI124は、ネットワーク生成GUI202、ネットワーク分析GUI212、ネットワーク評価GUI222、及びネットワーク記述GUI232を含む。
【0025】
演算では、ネットワークジェネレータ200は、AIモデル122内のエージェント240を設計及び結合するためのツールをユーザに提供するよう、ネットワーク生成GUI202をレンダリングする。所与のエージェント240は、様々なAI用タスクを実行するニューラルネットワーク242を含んでもよい。所与のエージェント240はまた、汎用タスクを実行する他のタイプの機能的要素を含んでもよい。ネットワークジェネレータ200は、訓練データ250に基づいて、特定のエージェント240に含まれるニューラルネットワーク242を訓練する。訓練データ250は、ニューラルネットワークを訓練するためのいずれかの技術的に実現可能なタイプのデータを含んでもよい。例えば、訓練データ250は、Modified National Institute of Standards and Technology(MNIST)ディジットの訓練セットを含んでもよい。
【0026】
訓練が完了したとき、ネットワークアナライザ210は、所与のエージェント240内のニューラルネットワークがどのように動作するかを分析及び理解するためのツールをユーザに提供するよう、ネットワーク分析GUI212をレンダリングする。特に、ネットワークアナライザ210は、他の演算の中で、ネットワーク分析GUI212に、所与のニューラルネットワーク242内で様々な結合及び重みを表示させ、様々な入力への所与のニューラルネットワーク242の応答をシミュレートさせる。
【0027】
加えて、ネットワークエバリュエータ220は、訓練データ250に対して所与のニューラルネットワーク242を評価するためのツールをユーザに提供するよう、ネットワーク評価GUI222をレンダリングする。より具体的には、ネットワークエバリュエータ220は、ネットワーク評価GUI222を介して、訓練データ250の特定の部分を示すユーザ入力を受信する。ネットワークエバリュエータ220は次いで、所与のニューラルネットワーク242が訓練データ250のその部分にどのように応答するかをシミュレートする。ネットワークエバリュエータ220はまた、ネットワーク評価GUI222に、訓練データ250の特定の部分をフィルタリングさせ、訓練データ250の特定の部分は、所与のニューラルネットワーク242に、特定のタイプの出力を生成させる。
【0028】
上記と共に、ネットワーク記述子230は、エージェント240と関連付けられた所与のニューラルネットワーク242を分析し、ユーザにニューラルネットワーク242の動作を説明する自然言語表現を生成する。ネットワーク記述子230はまた、ニューラルネットワーク242が訓練データ250をどのように解釈するかに関連する様々な「コモンセンス」ファクトをユーザに提供することができる。ネットワーク記述子230は、ネットワーク記述GUI232を介して、ユーザにこのデータを出力する。加えて、ネットワーク記述子230は、ネットワーク記述GUI232を介して、ユーザからルールに基づく表現を取得することができ、次いで、それらの表現に基づいて、ネットワーク振る舞いを制約することができる。更に、ネットワーク記述子230は、ネットワークの実行の様々な態様を定量化するメトリックを生成することができ、次いで、ネットワーク記述GUI232を介して、ユーザにそれらのメトリックを表示することができる。
【0029】
図1~2を全体的に参照して、AI設計アプリケーション120は有利なことに、ニューラルネットワーク振る舞いを生成、分析、評価、及び記述するための様々なツールをユーザに提供する。開示される技術は、全体的にネットワーク訓練及びユーザからの後続の演算を難読化する、ニューラルネットワークを生成する従来のアプローチとは異なる。
【0030】
図3は、様々な実施形態に従った、図1のネットワークジェネレータのより詳細な例示である。図示されるように、ネットワークジェネレータ200は、コンパイラエンジン300、合成エンジン310、訓練エンジン320、及び視覚化エンジン330を含む。
【0031】
演算では、視覚化エンジン330は、ネットワーク生成GUI202を生成し、ネットワーク生成GUI202を介して、ユーザからエージェント定義340を取得する。コンパイラエンジン300は、コンパイル済みコード302を生成するよう、所与のエージェント定義340に含まれるプログラムコードをコンパイルする。コンパイラエンジン300は、C、C++、Python及び関連するフレームワーク、並びにJavaScript及び関連するフレームワークなどを含む、いずれかの技術的に実現可能なプログラミング言語を構文解析、コンパイル、及び/または解釈するように構成される。合成エンジン310は、コンパイル済みコード302及びそのコードがどのように実行するかに影響を及ぼす1つ以上のパラメータに基づいて、初期ネットワーク312を生成する。初期ネットワーク312は訓練されておらず、高精度で1つ以上の意図した演算を実行しないことがある。
【0032】
訓練エンジン320は、訓練済みネットワーク322を生成するよう、訓練データ250に基づいて初期ネットワーク312を訓練する。訓練済みネットワーク322は、初期ネットワーク312よりも高精度で1つ以上の意図した演算を実行することができる。訓練エンジン320は、バックプロパゲーション及び最急降下法などを含む、いずれかの技術的に実現可能なタイプの訓練演算を実行してもよい。視覚化エンジン330は、エージェント定義340を介して定義されたネットワークアーキテクチャをグラフィカルに表すと共に、訓練済みネットワーク322の様々な実行属性を示すよう、上記演算と共にネットワーク生成GUI202を更新する。
【0033】
ニューラルネットワークエージェントの数学に基づくプログラミング及び実行
上記に議論されたように、ニューラルネットワークアーキテクチャを定義及び実行するために、開発者は典型的には、習得することが困難であり、下位層ネットワークアーキテクチャの詳細の多くを難解化することが多い面倒なツール及びライブラリを使用する。結果として、ニューラルネットワークは、様々なツール及びライブラリにおいて専門知識を有する小数の組の開発者のみによって作成されることがある。更に、ネットワークアーキテクチャの下位層の詳細がツール及びライブラリのフレームワーク内で深く入れ子にされることを理由に、開発者は、アーキテクチャがどのように機能するか、またはアーキテクチャをどのように変更もしくは改善するかを理解しないことがある。ニューラルネットワーク定義パラダイムにおけるそれらの不備及び他の不備に対処するために、ニューラルネットワークアーキテクチャを定義するための数学に基づくプログラミング及び実行フレームワークがここで議論される。
【0034】
様々な実施形態では、数学に基づくプログラミング言語におけるニューラルネットワークエージェント定義のためのソースコードは、リンクされた数式のパイプラインである。いずれの中間ライブラリも必要とすることなくソースコードが機械コードにコンパイルされ、機械コードは、訓練可能且つ実行可能なニューラルネットワークを表す。ニューラルネットワークアーキテクチャが一連の数式としてソースコードにおいて定義されるために、数学に基づくプログラミング言語は、いくつかの構築ブロックを公開する。それらは、ニューラルネットワークの層を指定するための層表記、ニューラルネットワークまたは2つ以上のニューラルネットワークの2つ以上の層の間のリンクを規定するためのリンク表記、変数のソースを指定するための変数代入表記(=)、並びに合計(+)、除算(/)、総和(Σ)、開括弧及び閉じ括弧(())、行列定義、セットメンバーシップ(∈)などの様々な数学的演算表記を含む。
【0035】
ニューラルネットワークの各々の層は、上記に議論された構築ブロックを使用して、1つ以上の数式として数学に基づくプログラミング言語において定義される。例えば、数式のセットを含む以下のソースコードを使用して、畳み込み層が定義されてもよい。
【数1】
【0036】
上記例では、ソースコードの第1のラインは、ソースコードの後続ラインが入力X及び出力Yを有する畳み込み(CONVOLUTION)演算に関連することを示す。ソースコードの後続ラインは、出力Yを生成するよう入力Xに対して実行される数学的演算を定義する数式の連続を含む。各々の数式は、右辺部分及び左辺部分を含む。右辺部分は、左辺部分によって指定された数学演算が評価されるときに判定された値を指定する。例えば、上記に示された数式「c=s(i-1)-z+t」では、「c」は、右辺部分であり、「s(i-1)-z+t」が評価されるときに生成された値に変数cが代入されることを指定する。
【0037】
ニューラルネットワークエージェントのソースコードに含まれる変数の値は、ニューラルネットワークがインスタンス化されるときに代入されるか、またはニューラルネットワークの訓練の間に学習されるかのいずれかである。他のニューラルネットワーク定義パラダイムとは異なり、数学に基づくプログラミング言語を使用して定義されたニューラルネットワークエージェントの開発者は、訓練の間に学習されることになる変数(本明細書で「学習済み変数」と称される)に対する制御を有する。更に、訓練の間に学習されることになる変数は、ニューラルネットワークがインスタンス化されるときでさえ、初期化されないままであることがある(すなわち、値または値のソースを代入していない)。コンパイルの間にそれらの学習済み変数を取り扱い、ニューラルネットワークを訓練するための技術が図4~6と共に以下で詳細に議論される。
【0038】
図4は、様々な実施形態に従った、図3のコンパイラエンジン300及び合成エンジン310のより詳細な例示である。図示されるように、コンパイラエンジン300は、構文木ジェネレータ406、インスタンシエータ408、及びコンパイル済みコード302を含む。合成エンジン310は、ネットワークビルダ412及び学習済み変数410を含む初期ネットワーク312を含む。
【0039】
コンパイラエンジン300及び合成エンジン310の演算は、所与のエージェント定義402と共に説明される。エージェント定義402のソースコードは、多層仕様を含み、各々の層仕様は、数学に基づくプログラミング言語を使用して定義された1つ以上の数式404(個々に数式404と称される)を含む。上記に議論されたように、各々の数式404は、左辺部分によって指定された数学演算が評価されるときに判定された値を指定する右辺部分を含む。各々のグループがニューラルネットワークアーキテクチャの異なる層に対応するように、数式404がグループ化されてもよい。エージェント定義402のソースコードは、数式404の異なるグループの間のリンクを指定する。
【0040】
コンパイラエンジン300は、エージェント定義402のソースコードをコンパイル済みコード302にコンパイルする。コンパイル済みコード302を生成するために、コンパイラエンジン300は、構文木ジェネレータ406及びインスタンシエータ408を含む。構文木ジェネレータ406は、エージェント定義402のソースコードを構文解析し、ソースコードの抽象構文木(AST)表現を生成する。様々な実施形態では、AST表現は、ノードの木構造を含み、定数及び変数は、演算子またはステートメントを含む親ノードへの子ノードである。ASTは、ソースコードの構文構造をカプセル化し、すなわち、ソースコード内に含まれるステートメント、数式、変数、及びそれらの間の関係をカプセル化する。
【0041】
インスタンシエータ408は、コンパイル済みコード302を生成するよう、ASTを処理する。演算では、インスタンシエータ408は、ASTに対して意味解析を実行し、コードの中間表現を生成し、最適化を実行し、コンパイル済みコード302を含む機械コードを生成する。意味解析のために。インスタンシエータ408は、意味正確性についてソースコードを検査する。様々な実施形態では、意味検査は、ASTに含まれる変数及びタイプが適切に宣言されているかどうか、並びに演算子及びオブジェクトのタイプが一致することを判定する。意味解析を実行するために、インスタンシエータ408はソースコードに含まれる所与のオブジェクトまたは関数タイプのインスタンスの全てをインスタンス化する。更に、インスタンシエータ408は、ソースコードに対して意味検査を実行するために作成及び使用される、全ての命名されたオブジェクト-クラス、変数、及び関数を表すシンボルテーブルを生成する。
【0042】
インスタンシエータ408は、変数の値がソースコードにおいて識別されたソースに代入されるかどうかを判定するよう、シンボルテーブル内の変数ごとにマッピング演算を実行する。インスタンシエータ408は、潜在的な学習済み変数として代入されたソースを有しない変数、すなわち、訓練工程の間に学習されることになる変数をフラグ付けする。様々な実施形態では、それらの変数は、変数が学習済み変数であることを示す特殊タイプを有しない。更に、ソースコードは、変数が学習済み変数であることを明確に示さない。インスタンシエータ408は、ソースに代入されないそれらの変数のおかげで学習されることになる潜在的な変数としてそれらの変数を自動で識別する。よって、インスタンシエータ408は、従来型コンパイラ及びインタプリタとは異なって動作し、それは、変数が代入されず、宣言されず、または他に定義されないことを許容せず、コンパイル工程の間に誤りを生じさせない。
【0043】
インスタンシエータ408は、合成エンジン310に、コンパイル済みコード302及び潜在的な学習済み変数のリストを送信する。上記に議論されたように、合成エンジン310は、コンパイル済みコード302及びそのコンパイル済みコード302がどのように実行するかに影響を及ぼす1つ以上のパラメータに基づいて、初期ネットワーク312を生成する。特に、ネットワークビルダ412は、ニューラルネットワークアーキテクチャの異なる層を判定し、所与の層の出力が1つ以上の後続の層の入力にどのようにリンクされるかを判定するよう、コンパイル済みコード302の構造を分析する。様々な実施形態では、ネットワークビルダ412はまた、例えば、ユーザ入力を介して、コンパイル済みコードに含まれる特定の変数についての値を受信する。
【0044】
ネットワークビルダ412に含まれる学習済み変数識別子414は、初期ネットワーク312内の学習済み変数410を識別する。演算では、学習済み変数識別子414は、ネットワークビルダ412によって判定されたニューラルネットワークアーキテクチャの層の構造に鑑みてインスタンシエータ408から受信された潜在的な学習済み変数のリストと、ネットワークビルダ412によって受信された変数についてのいずれかの値とを分析する。潜在的な学習済み変数の各々について、学習済み変数識別子414は、ニューラルネットワークアーキテクチャの所与の層内の潜在的な学習済み変数のソースがニューラルネットワークアーキテクチャの前の層からの出力であるかどうかを判定する。そのようなソースが存在する場合、潜在的な学習済み変数は、ニューラルネットワークの訓練の間に学習されることになる変数ではない。同様に、学習済み変数識別子414は、潜在的な学習済み変数についての値がネットワークビルダ412に明確に提供されていたかどうかを判定する。そのような値が提供されていた場合、潜在的な学習済み変数は、ニューラルネットワークの訓練の間に学習されることになる変数ではない。そのようにして、学習済み変数識別子414は、潜在的な学習済み変数が本当に訓練の間に学習されることになる変数であるかどうかを判定するよう、潜在的な学習済み変数の各々を処理する。潜在的な学習済み変数の全てが処理されると、学習済み変数識別子414は、それに対してソースが判定されていない潜在的な学習済み変数のいずれかを識別する。それらの変数は、初期ネットワーク312の学習済み変数410を構成する。
【0045】
様々な実施形態では、学習済み変数識別子414は、ネットワーク生成GUI202に、学習済み変数識別子414によって識別された学習済み変数410を表示させる。学習済み変数410は次いで、ニューラルネットワークアーキテクチャの開発者など、GUI202のユーザによって確認またはそうでなければ修正されてもよい。
【0046】
上記に議論されたように、訓練エンジン320は、訓練済みネットワーク322を生成するよう、訓練データ250に基づいて初期ネットワーク312を訓練する。訓練済みネットワーク322は、訓練工程の間に学習される学習済み変数410についての値を含む。訓練済みネットワーク322は、初期ネットワーク312よりも高い精度で1つ以上の意図した演算を実行することができる。訓練エンジン320は、バックプロパゲーション及び最急降下法などを含む、いずれかの技術的に実現可能なタイプの訓練演算を実行してもよい。
【0047】
図5Aは、様々な実施形態に従った、図3のネットワーク生成GUIがニューラルネットワークの生成をどのように促進するかを示すスクリーンショットである。図示されるように、GUIパネル500は、モデル定義パネル502、ハイパーパラメータパネル504、及び学習済み変数パネル508を含む。GUIパネル500は、ネットワーク生成GUI202内に存在する。
【0048】
モデル定義パネル502は、ユーザからネットワークアーキテクチャのソースコードを取得するテキストフィールドである。例えば、モデル定義パネル502は、ニューラルネットワークアーキテクチャの異なる層を定義する一連の数式を含むソースコードを受信してもよい。1つの実施形態では、モデル定義パネル502は、ネットワークの一部を公開し、とりわけ、モジュールインポートなど、ユーザによって編集される必要がない他の部分を省略する。
【0049】
示される例では、モデル定義パネル502は、ニューラルネットワークの定義、ExampleNetを含む。定義の第3のラインに示されるように、ExampleNetは、10個の層のパイプライン:C1、N、P2、C3、N、P4、C5、C6、C7、F8、F9、及びS10を含む。10個の層の各々は、「ここで(where)」句の後のラインにおいて定義される。例えば、C1はConvolution層として定義され、P2はMaxPooling層として定義され、F8はFullyConnected層として定義され、S10はSoftmax層として定義される。それらのタイプの層、Convolution、MaxPooling、FullyConnected、及びSoftmaxの各々は、ソースコードに含まれる一連の数式と関連付けられる。
【0050】
図5Bは、ExampleNetのネットワークアーキテクチャにおいて使用されるタイプの層の各々と関連付けられた数式を含むモデル定義パネル502の別の部分を示すスクリーンショットである。それらの数式内で、いくつかの変数が明確に代入されると共に、他の変数は、代入されない学習済み変数である。特に、Convolution、FullyConnected、及びSoftmaxについての数式内の変数W及びbは、訓練の間に学習されることになる代入されていない変数である。図5Bに示されるように、それらの学習済み変数を含む数式は、それらの変数が学習されることになることのいずれの明確な識別をも有さない。代わりに、それらの学習済み変数は、標準的な数学的表記を使用して指定される。
【0051】
図4と共に上記に議論された技術を使用して、コンパイラエンジン300及び合成エンジン310は、モデル定義パネル502に含まれるExampleNetについてのコードをコンパイルするときに学習済み変数を識別する。ExampleNetのケースでは、Convolution、FullyConnected、及びSoftmaxについての数式内の変数W及びbが代入されていない変数であることを理由に、コンパイラエンジン300及び合成エンジン310は、学習済み変数として、C1、C3、C5、C6、C7、F8、F9、及びS10の各々内の変数W及びbを識別する。図5Aを再度参照して、学習済み変数パネル508は、ExampleNetについて識別された学習済み変数を表示する。ユーザは、例えば、追加的な学習済み変数を追加し、及び/または1つ以上の識別された学習済み変数を削除することによって、学習済み変数を編集するよう、学習済み変数パネル508と対話することができる。
【0052】
ハイパーパラメータパネル504は、ニューラルネットワークがどのように訓練されるかに影響を及ぼす様々なハイパーパラメータを受信するテキストフィールドである。例えば、ハイパーパラメータパネル504は、ユーザから、いくつかの訓練エポック及び/または学習率を受信してもよい。
【0053】
ネットワークジェネレータ200は、ユーザから取得されたネットワークアーキテクチャの記述に基づいて、図2に示されたニューラルネットワークなどのニューラルネットワークを生成するよう、図3~4と共に上記に説明された技術を実装する。ネットワークジェネレータ200はまた、ネットワークアーキテクチャ506を含むよう、GUIパネル500を更新する。ネットワークアーキテクチャ506は、ニューラルネットワーク内の層のタイプ及び配列、並びにニューラルネットワークと関連付けられたいずれかの他のトポロジ情報をグラフィカルに表す。示される例では、ネットワークアーキテクチャ506は、ExampleNetの10個の層の各々の視覚表現を含む。
【0054】
ネットワークジェネレータ200は、ネットワークアーキテクチャ506とのユーザ対話に基づいて、モデル定義パネル502において定義された下位層ニューラルネットワーク242を動的に修正するように構成される。例えば、ネットワークジェネレータ200は、ネットワークアーキテクチャ506の特定の部分が修正されるべきことを示すユーザ入力を受信してもよい。それに応答して、ネットワークジェネレータ200は、下位層ニューラルネットワークを修正し、また、対応する形式においてモデル定義パネル502に含まれる定義を更新する。加えて、ネットワークジェネレータ200は、モデル定義パネル502とのユーザ対話に基づいて、ネットワークアーキテクチャ506を動的に修正するように構成される。例えば、GUIパネル500は、モデル定義パネル502において示された記述への1つ以上の変更を示す入力を受信してもよい。それに応答して、ネットワークジェネレータ200は、下位層ニューラルネットワークを修正し、また、変更を反映するよう、ネットワークアーキテクチャ506を更新する。様々な実施形態では、ネットワークジェネレータ200は、モデル定義パネル502におけるいずれかの修正がウェブブラウザインタフェースを介して受信されるように、ウェブブラウザアプリケーション内で動作する。修正された記述は、ウェブブラウザの実行フレームワーク内で再コンパイルされる。
【0055】
ネットワークジェネレータ200は、エージェント240に含まれるニューラルネットワーク242を作成及び修正するために、ネットワーク生成GUI202を介して上記技術を実装することができる。ネットワークジェネレータ200はまた、前に言及されたように、汎用演算を実行する他のタイプのエージェントを定義することができる。
【0056】
上記技術は、多数のエージェント240を含む潜在的に複雑なAIモデル122に統合されたニューラルネットワークを作成及び更新するための便利な機構をユーザに提供する。更に、それらの技術は、ユーザが、対応するネットワークアーキテクチャのグラフィカル描写との率直な対話を介して、所与のエージェント240を定義するプログラムコードを修正することを可能にする。ネットワークジェネレータ200は、ネットワーク生成GUI202を介して行われたユーザ対話に基づいて、上記に説明された様々な演算を実行する。開示される技術は、従来技術により一般的に発見されるように、情報が隠蔽されたままであることを許容するのではなく、ユーザにネットワーク情報を公開するニューラルネットワークを設計し、ニューラルネットワークと対話するための便利なツールをユーザに提供する。
【0057】
図6は、様々な実施形態に従った、数学に基づくプログラミング言語においてニューラルネットワークを定義及びコンパイルする方法ステップのフローチャートである。図1~5のシステムと共に方法ステップが説明されるが、当業者は、いずれかの順序において方法ステップを実行するように構成されたいずれかのシステムが、本実施形態の範囲内に収まることを理解するであろう。
【0058】
図示されるように、方法600は、ステップ602において開始し、ステップ602では、コンパイラエンジン300は、複数の数式を含むニューラルネットワーク定義についてのソースコードを受信する。ソースコードは、多層仕様を含み、各々の層仕様は、数学に基づくプログラミング言語を使用して定義された1つ以上の数式を含む。上記に議論されたように、各々の数式は、左辺部分によって指定された数学的評価に代入される変数を指定する右辺部分を含む。各々のグループがニューラルネットワークアーキテクチャの異なる層に対応するように、数式がグループ化されてもよい。
【0059】
ステップ604において、コンパイラエンジン300は、ソースコードの構文木表現に基づいて、ニューラルネットワークをコンパイルする。構文木表現は、ソースコードの構文構造、すなわち、ソースコード内に含まれるステートメント、数式、変数、及びそれらの間の関係をカプセル化する。演算では、コンパイラエンジン300は、構文木表現に対して意味解析を実行し、コードの中間表現を生成し、最適化を実行し、コンパイル済みコード302を含む機械コードを生成する。意味解析のために、コンパイラエンジン300は、意味正確性についてソースコードを検査する。様々な実施形態では、コンパイラエンジン300は、ソースコードに含まれる変数の各々を識別するシンボルテーブルを生成する。
【0060】
ステップ606において、コンパイラエンジン300は、ソースコード内の代入されていない変数に基づいて、ニューラルネットワークの訓練の間に学習されることになる潜在的な変数を識別する。様々な実施形態では、コンパイラエンジン300は、変数の値がソースコード内のソースに代入されるかどうかを判定するよう、シンボルテーブル内の変数ごとにマッピング演算を実行する。コンパイラエンジンは、潜在的な学習済み変数として代入されたソースを有しない変数、すなわち、訓練工程の間に学習される必要がある変数をフラグ付けする。様々な実施形態では、それらの変数は、変数が学習済み変数であることを示す特殊タイプを有しない。更に、ソースコードは、変数が学習済み変数であることを明確に示さない。
【0061】
ステップ608において、合成エンジン310は、ニューラルネットワークの1つ以上の特性を判定する。上記に議論されたように、合成エンジン310は、コンパイル済みコード及びコンパイル済みコード302がどのように実行するかに影響を及ぼす1つ以上のパラメータに基づいて、初期ネットワーク312を生成する。特に、合成エンジンは、ニューラルネットワークアーキテクチャの異なる層を判定し、所与の層の出力が1つ以上の後続の層の入力にどのようにリンクされるかを判定するよう、コンパイル済みコード302の構造を分析する。様々な実施形態では、合成エンジン310はまた、例えば、ユーザ入力を介して、コンパイル済みコード含まれる特定の変数についての値を受信してもよい。
【0062】
ステップ610において、合成エンジン310は、ステップ606において識別された潜在的な学習済み変数及びステップ608において判定されたニューラルネットワークの特性に基づいて、ニューラルネットワークについての学習済み変数のリストを識別する。演算では、合成エンジン310は、ニューラルネットワークアーキテクチャの層の構造に鑑みて受信された潜在的な学習済み変数及び合成エンジン310によって受信された変数についてのいずれかの値を分析する。潜在的な学習済み変数の各々について、合成エンジン310は、ニューラルネットワークアーキテクチャの所与の層内の潜在的な学習済み変数のソースがニューラルネットワークアーキテクチャの前の層からの出力であるかどうかを判定する。そのようなソースが存在する場合、潜在的な学習済み変数は、ニューラルネットワークの訓練の間に学習されることになる変数ではない。同様に、合成エンジン310は、潜在的な学習済み変数についての値が明確に提供されていたかどうかを判定する。そのような値が提供されていた場合、潜在的な学習済み変数は、ニューラルネットワークの訓練の間に学習されることになる変数ではない。そのようにして、合成エンジン310は、潜在的な学習済み変数が本当に訓練の間に学習されることになる変数であるかどうかを判定するよう、潜在的な学習済み変数の各々を処理する。潜在的な学習済み変数の全てが処理されると、合成エンジン310は、それに対してソースが判定されていない潜在的な学習済み変数のいずれかを識別する。それらの変数は、ステップ610において生成された学習済み変数のリストを構成する。
【0063】
ステップ612において、訓練エンジン320は、学習されることになる変数のリストについての値を判定するよう、訓練データに基づいてニューラルネットワークを訓練する。訓練エンジン320は、バックプロパゲーション及び最急降下法などを含む、いずれかの技術的に実現可能なタイプの訓練演算を実行してもよい。
【0064】
一般的な事項として、ニューラルネットワークを生成及び修正するための上記に説明された技術は、ユーザが、従来のアプローチが可能にするよりもはるかに高速にニューラルネットワークを設計及び修正することを可能にする。とりわけ、ネットワークジェネレータ200は、ネットワーク生成と関連付けられた複雑なタスクを実行するための単純且つ直感的なツールを提供する。加えて、ネットワークジェネレータ200は、ネットワークアーキテクチャに行われた修正が対応するエージェント定義に再度シームレスに伝播されることを便利に可能にする。ネットワークが説明された方式において訓練されると、ネットワークアナライザ210は、ネットワーク機能性を分析するための様々な技術を実行する。
【0065】
要するに、ニューラルネットワークを生成、分析、評価、及び記述するための様々なツールをユーザに公開する人工知能(AI)設計アプリケーションである。AI設計アプリケーションは、ネットワークアーキテクチャのグラフィカル描写とのユーザ対話に基づいて、ニューラルネットワークを定義するプログラムコードを生成及び/または更新するネットワークジェネレータを含む。ネットワークジェネレータによって、開発者が、複雑なソフトウェアスタックの必要性なしに直接コンパイルすることができる数式のパイプラインを使用して、ニューラルネットワークアーキテクチャを定義することが可能になる。コンパイル工程は、訓練工程の間に学習されることになる変数が、ニューラルネットワークがインスタンス化されるときに代入されないままであることを許容する。特に、コンパイラは、訓練工程の間に判定される値を有する変数として、そのような代入されていない変数を識別する。AI設計アプリケーションはまた、試験入力に応答して、層レベル、ニューロンレベル、及び重みレベルにおいてニューラルネットワークの振る舞いを分析するネットワークアナライザを含む。AI設計アプリケーションは更に、訓練データのサンプルの範囲にわたってニューラルネットワークの包括的な評価を実行するネットワークエバリュエータを含む。最終的に、AI設計アプリケーションは、自然言語においてニューラルネットワークの振る舞いを明確にし、ルールのセットに従ってその振る舞いを制約するネットワーク記述子を含む。
【0066】
従来技術に対する開示される技術の少なくとも1つの技術的利点は、設計者ユーザが大量のプログラムコードを書き込むこと、または設計者ユーザが大量のプログラムコードと相互作用することなく、開示されるAI設計アプリケーションが複雑なニューラルネットワークアーキテクチャを生成することができることである。従来技術に対する開示される技術の別の技術的利点は、開示されるAI設計アプリケーションによって、設計者が、ニューラルネットワークアーキテクチャのいずれかの特徴または態様を制御することが可能になることである。特に、ニューラルネットワークの設計者は、ニューラルネットワークを一連の数学的演算として定義し、数学的演算の仕様に対して完全な制御を有する。更に、AI設計アプリケーションは、ハードコーディングルールなしに、または設計者がそれらの変数を明確に識別する必要なく、ニューラルネットワークアーキテクチャ内のどの変数が訓練工程の間に学習されることになるかを自動で識別する。したがって、AI設計アプリケーションによって、設計者が開発することが可能になり、ニューラルネットワークがどのように動作するかについてより良好な理解が可能になる。
【0067】
1.いくつかの実施形態は、実行可能ニューラルネットワークを生成するコンピュータにより実行される方法を含み、方法は、ニューラルネットワークの1つ以上の層を定義する複数の数式を指定するソースコードを受信することと、前記複数の数式に含まれる第1の数式に対して1つ以上のコンパイル演算を実行することであって、前記1つ以上のコンパイル演算は、前記第1の数式に含まれる第1の変数が代入されていないと判定することと、前記第1の変数が代入されていないことに基づいて、前記ニューラルネットワークが訓練されると前記第1の変数が学習されると判定することと、を含む、前記実行することと、実行されると、前記第1の変数についての値を生成させる、前記第1の数式に対応するコンパイル済みコードを生成することと、を備える。
【0068】
2.前記第1の変数は、前記第1の数式の第1の部分において指定され、前記1つ以上の演算は、前記第1の数式の第2の部分に基づいて前記第1の数式をインスタンス化することを含む、条項1に記載のコンピュータにより実行される方法。
【0069】
3.前記第1の変数が代入されていないと判定することは、前記第1の数式がインスタンス化された後、前記第1の変数についての対応する値が代入されていたかどうかを判定することを含む、条項1~2のいずれかに記載のコンピュータにより実行される方法。
【0070】
4.前記第1の変数が訓練の間に学習されると判定することは、前記1つ以上の層に含まれる第1の層の特性に更に基づいている、条項1~3のいずれかに記載のコンピュータにより実行される方法。
【0071】
5.前記第1の層の前記特性は、前記1つ以上の層に含まれる第2の層の出力への前記第1の層の入力の代入を含み、前記第1の層の前記入力は、前記第1の変数と関連付けられている、条項1~4のいずれかに記載のコンピュータにより実行される方法。
【0072】
6.学習済み変数ユーザインタフェースにおいて前記第1の変数を表示することを更に備えた、条項1~5のいずれかに記載のコンピュータにより実行される方法。
【0073】
7.前記コンパイル済みコードを実行する前に、前記学習済み変数ユーザインタフェースを介して、前記第1の変数が訓練の間に学習されることを確認する確認入力を受信することを更に備えた、条項1~6のいずれかに記載のコンピュータにより実行される方法。
【0074】
8.前記第1の変数についての前記値を判定するために、前記ニューラルネットワークの訓練段階において前記コンパイル済みコードを実行することを更に備えた、条項1~7のいずれかに記載のコンピュータにより実行される方法。
【0075】
9.前記ソースコードは、前記1つ以上の層に含まれる第1の層と第2の層との間の関係を識別する、条項1~8のいずれかに記載のコンピュータにより実行される方法。
【0076】
10.ウェブブラウザアプリケーション内で前記ソースコードへの更新を受信することと、前記ウェブブラウザの実行フレームワーク内で前記更新されたソースコードを再コンパイルすることと、を更に備えた、条項1~9のいずれかに記載のコンピュータにより実行される方法。
【0077】
11.命令を記憶したコンピュータ可読媒体であって、前記命令は、プロセッサによって実行されると、ニューラルネットワークの1つ以上の層を定義する複数の数式を指定するソースコードを受信するステップと、前記複数の数式に含まれる第1の数式に対して1つ以上のコンパイル演算を実行するステップであって、前記1つ以上のコンパイル演算は、前記第1の数式に含まれる第1の変数が代入されていないと判定することと、前記第1の変数が代入されていないことに基づいて、前記ニューラルネットワークが訓練されると前記第1の変数が学習されると判定することと、を含む、前記実行するステップと、実行されると、前記第1の変数についての値を生成させる、前記第1の数式に対応するコンパイル済みコードを生成するステップと、を実行することによって、前記プロセッサに実行可能ニューラルネットワークを生成させる、前記コンピュータ可読媒体。
【0078】
12.前記第1の変数は、前記第1の数式の第1の部分において指定され、前記1つ以上の演算は、前記第1の数式の第2の部分に基づいて前記第1の数式をインスタンス化することを含む、条項11に記載のコンピュータ可読媒体。
【0079】
13.前記第1の変数が代入されていないと判定することは、前記第1の数式がインスタンス化された後、前記第1の変数についての対応する値が代入されていたかどうかを判定することを含む、条項11~12のいずれかに記載のコンピュータ可読媒体。
【0080】
14.前記第1の変数が訓練の間に学習されると判定することは、前記1つ以上の層に含まれる第1の層の特性に更に基づいている、条項11~13のいずれかに記載のコンピュータ可読媒体。
【0081】
15.前記第1の層の前記特性は、前記1つ以上の層に含まれる第2の層の出力への前記第1の層の入力の代入を含み、前記第1の層の前記入力は、前記第1の変数と関連付けられている、条項11~14のいずれかに記載のコンピュータ可読媒体。
【0082】
16.学習済み変数ユーザインタフェースにおいて前記第1の変数を表示することを更に備えた、条項11~15のいずれかに記載のコンピュータ可読媒体。
【0083】
17.前記コンパイル済みコードを実行する前に、前記学習済み変数ユーザインタフェースを介して、前記第1の変数が訓練の間に学習されることを確認する確認入力を受信するステップを更に備えた、条項11~16のいずれかに記載のコンピュータ可読媒体。
【0084】
18.前記第1の変数についての前記値を判定するために、前記ニューラルネットワークの訓練段階において前記コンパイル済みコードを実行することを更に備えた、条項11~17のいずれかに記載のコンピュータ可読媒体。
【0085】
19.前記コンパイル済みコードを生成することは、前記第1の数式を機械実行可能コードにコンパイルすることを含む、条項11~18のいずれかに記載のコンピュータ可読媒体。
【0086】
20.いくつかの実施形態は、ソフトウェアアプリケーションを記憶したメモリと、プロセッサと、を備えるシステムであって、前記プロセッサは、前記ソフトウェアアプリケーションを実行するとき、ニューラルネットワークの1つ以上の層を定義する複数の数式を指定するソースコードを受信するステップと、前記複数の数式に含まれる第1の数式に対して1つ以上のコンパイル演算を実行するステップであって、前記1つ以上のコンパイル演算は、前記第1の数式に含まれる第1の変数が代入されていないと判定することと、前記第1の変数が代入されていないことに基づいて、前記ニューラルネットワークが訓練されると前記第1の変数が学習されると判定することと、を含む、前記実行するステップと、実行されると、前記第1の変数についての値を生成させる、前記第1の数式に対応するコンパイル済みコードを生成するステップと、を実行するように構成されている、前記システムを含む。
【0087】
いずれかの形式にある、特許請求の範囲のいずれかに記載された請求項の要素のいずれか及び/または本出願において説明されたいずれかの要素のいずれか及び全ての組み合わせは、本発明及び保護の考慮される範囲に内に収まる。
【0088】
様々な実施形態の説明は、例示の目的で提示されているが、包括的に、または開示される実施形態に限定されることが意図されていない。多くの修正及び変形例は、説明される実施形態の範囲及び主旨から逸脱することなく当業者には明白である。
【0089】
本実施形態の態様は、システム、方法、またはコンピュータプログラム製品として具体化されてもよい。したがって、本開示の態様は、本明細書で「モジュール」、「システム」、または「コンピュータ」と全体的に称されてもよい、全体的なハードウェアの実施形態、全体的なソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、またはソフトウェアの態様及びハードウェアの態様を組み合わせた実施形態の形式を取ってもよい。更に、本開示の態様は、そこで具体化されたコンピュータ可読プログラムコードを有する1つ以上のコンピュータ可読媒体(複数可)において具体化されたコンピュータプログラム製品の形式を取ってもよい。
【0090】
1つ以上のコンピュータ可読媒体(複数可)のいずれかの組み合わせが利用されてもよい。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体であってもよい。コンピュータ可読記憶媒体は、例えば、それに限定されないが、電子、磁気、光、電磁気、赤外線、もしくは半導体のシステム、装置、もしくはデバイス、または任意のいずれかの好適な組み合わせであってもよい。コンピュータ可読記憶媒体のより多くの具体例(非網羅的なリスト)は、1つ以上の通信回線を有する電気的接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能PROM(EPROMまたはフラッシュメモリ)、光ファイバ、コンパクトディスクリードオンリメモリ(CD-ROM)、光学記憶装置、磁気記憶装置、または前述のいずれかの適切な組み合わせを含む。本文書の文脈において、コンピュータ可読記憶媒体は、命令実行システム、装置、もしくはデバイスによる使用のために、またはそれらと接続してプログラムを含むまたは記憶することができる任意の有形媒体であってもよい。
【0091】
本開示の態様は、本方法の実施形態に従った方法、装置(システム)、及びコンピュータプログラム製品のフローチャート図及び/またはブロック図を参照して上記に説明されている。フローチャート図及び/またはブロック図の各ブロック、及びフローチャート図及び/またはブロック図のブロックの組み合わせは、コンピュータプログラム命令によって実施できることが理解されよう。それらのコンピュータプログラム命令は、汎用コンピュータ、特殊目的コンピュータ、またはマシンを製造するための他のプログラム可能データ処理装置のプロセッサに提供されてもよい。命令は、コンピュータもしくは他のプログラム可能データ処理装置のプロセッサを介して実行されるとき、フローチャート及び/またはブロック図のブロックもしくはブロック(複数可)において指定された機能/動作の実行を可能にする。そのようなプロセッサは、それに限定されないが、汎用プロセッサ、特殊目的プロセッサ、特定用途プロセッサ、またはフィールドプログラマブルゲートアレイであってもよい。
【0092】
図における図のフローチャート及びブロック図は、本開示の様々な実施形態に従ったシステム、方法、装置、及びコンピュータプログラム製品の可能である実施態様のアーキテクチャ、機能、及び動作を示す。この点で、フローチャートまたはブロック図の各ブロックは、規定された論理機能(複数可)を実行するための1つ以上の実行可能命令を含むモジュール、セグメント、またはコードの一部を表すことができる。また、いくつかの代替実施態様では、ブロックで留意される機能は、図で留意される順序とは違う順序で起こり得ることを留意されよう。例えば、連続して示される2つのブロックは、実際に、実質的に同時に実行され得る、または、ブロックは、時々、含有される機能に応じて、逆の順序で実行されてもよい。また、ブロック図及び/またはフローチャート図の各ブロック、及びブロック図及び/またはフローチャート図のブロックの組み合わせは、所定の機能もしくは行為を行う特殊目的ハードウェアベースシステム、または特殊目的ハードウェア及びコンピュータ命令の組み合わせによって実施され得ることを留意されよう。
【0093】
先述したことは、本開示の実施形態を対象としているが、その基本的な範囲から逸脱することなく、本開示の他の実施形態及び更なる実施形態が考案されてもよく、その範囲は、以下の特許請求の範囲によって決定される。
図1
図2
図3
図4
図5A
図5B
図6