(57)【要約】  複数の層を有するニューラルネットワークを最適化する方法の一例は、ニューラルネットワークを実現する推論プラットフォームの回路についてのアーキテクチャ制約を取得するステップ（３０２）と、ニューラルネットワークを訓練プラットフォーム上で訓練して、複数の層についてのネットワークパラメータおよび特徴マップを生成するステップ（３０４）と、アーキテクチャ制約に基づいて、ネットワークパラメータ、特徴マップ、またはそれら両方を制約するステップ（３０６）とを含む。
2020531968.tif 000002
【特許請求の範囲】
【請求項１】
複数の層を有するニューラルネットワークを最適化する方法であって、
前記ニューラルネットワークを実現する推論プラットフォームの回路についてのアーキテクチャ制約を取得するステップと、
前記ニューラルネットワークを訓練プラットフォーム上で訓練して、前記複数の層についてのネットワークパラメータおよび特徴マップを生成するステップと、
前記アーキテクチャ制約に基づいて、前記ネットワークパラメータ、前記特徴マップ、または前記ネットワークパラメータと前記特徴マップとの両方を制約するステップとを備える、方法。
【請求項２】
前記アーキテクチャ制約は、複数の制約を含み、前記制約するステップは、前記複数の制約のうちの少なくとも１つを使用して実行される、請求項１に記載の方法。
【請求項３】
前記制約するステップは、前記ニューラルネットワークについて所望の正確性を達成する最大数の前記複数の制約を使用して実行される、請求項２に記載の方法。
【請求項４】
前記制約するステップは、前記ニューラルネットワークを訓練するステップ中に実行される、請求項１に記載の方法。
【請求項５】
前記制約するステップは、前記ニューラルネットワークを訓練するステップに続いて実行される、請求項１に記載の方法。
【請求項６】
制約されたネットワークパラメータ、制約された特徴マップ、または制約されたネットワークパラメータと制約された特徴マップとの両方を使用して前記ニューラルネットワークを前記訓練プラットフォーム上で再訓練して、新たなネットワークパラメータを生成するステップをさらに備える、請求項５に記載の方法。
【請求項７】
前記アーキテクチャ制約は、前記推論プラットフォームの前記回路の計算機能に基づく１つ以上の制約を含む、請求項１に記載の方法。
【請求項８】
前記計算機能は、前記推論プラットフォームの積和演算回路の構造と、データ幅制約とを含む、請求項７に記載の方法。
【請求項９】
コンピューティングシステムであって、
ニューラルネットワークを訓練するためのハードウェアプラットフォームを備え、前記ハードウェアプラットフォームは、少なくとも１つのプロセッサと、メモリと、訓練プラットフォームとを含み、前記コンピューティングシステムはさらに、
前記ハードウェアプラットフォーム上で実行されるソフトウェアプラットフォームを備え、前記ソフトウェアプラットフォームは、前記少なくとも１つのプロセッサによって複数の機能を実行するように実行可能な、前記メモリに格納されたプログラムコードを含み、前記複数の機能は、
前記ニューラルネットワークを実現する推論プラットフォームの回路についてのアーキテクチャ制約を取得する機能と、
前記ニューラルネットワークを前記訓練プラットフォーム上で訓練して、前記複数の層についてのネットワークパラメータおよび特徴マップを生成する機能と、
前記アーキテクチャ制約に基づいて、前記ネットワークパラメータ、前記特徴マップ、または前記ネットワークパラメータと前記特徴マップとの両方を制約する機能とを含む、コンピューティングシステム。
【請求項１０】
前記アーキテクチャ制約は、複数の制約を含み、前記プログラムコードは、前記複数の制約のうちの少なくとも１つを使用して前記制約する機能を実行するように実行可能である、請求項９に記載のコンピューティングシステム。
【請求項１１】
前記プログラムコードは、前記ニューラルネットワークを訓練する機能中に前記制約する機能を実行するように実行可能である、請求項９に記載のコンピューティングシステム。
【請求項１２】
プログラムコードは、前記ニューラルネットワークを訓練する機能に続いて前記制約する機能を実行するように実行可能である、請求項９に記載のコンピューティングシステム。
【請求項１３】
前記プログラムコードは、制約されたネットワークパラメータ、制約された特徴マップ、または制約されたネットワークパラメータと制約された特徴マップとの両方を使用して前記ニューラルネットワークを前記訓練プラットフォーム上で再訓練して、新たなネットワークパラメータを生成する機能を実行するように実行可能である、請求項１２に記載のコンピューティングシステム。
【請求項１４】
前記アーキテクチャ制約は、前記推論プラットフォームの前記回路の計算機能に基づく１つ以上の制約を含む、請求項９に記載のコンピューティングシステム。
【請求項１５】
前記計算機能は、前記推論プラットフォームの積和演算回路の構造と、データ幅制約とを含む、請求項１４に記載のコンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
技術分野
本開示の例は、一般にニューラルネットワークに関し、特にニューラルネットワークの、アーキテクチャに最適化された訓練に関する。
【背景技術】
【０００２】
背景
機械学習は、コンピューティングシステムを明確にプログラムすることなく動作させるように仕向ける技術である。伝統的な機械学習は、Ｋ平均法、線形回帰およびロジスティック回帰、確率的勾配降下法、関連付けルール学習などを含むさまざまなクラスタ化および分類手法を含む。ディープラーニングは、機械学習における新たな領域である。ディープラーニングは、非線形処理ユニットの複数の層を特徴抽出および変換に使用する一種の機械学習アルゴリズムである。ディープラーニングアルゴリズムは、教師なし（たとえば、パターン分析）である場合もあれば、教師あり（たとえば、分類）である場合もある。ディープラーニングアルゴリズムは、人工ニューラルネットワーク（ＡＮＮ）（ここでは「ニューラルネットワーク」と称される）の層を使用して実現することができる。
【０００３】
一般に、ニューラルネットワークは、グラフ状に接続されたノード（すなわち、「ニューロン」）の集合である。ニューラルネットワークにおけるノードは、重み付けされた入力の和を計算して、この和に任意のバイアスを加算する。ノードの出力は、最終合計の関数（「活性化関数」と称される）である。活性化関数の例としては、シグモイド関数、双曲線正接（ｔａｎｈ）関数、正規化線形ユニット（ＲｅＬＵ）関数および恒等関数が挙げられる。ニューラルネットワークモデルは、しばしば、特定のトポロジを規定するノードの層、ならびに対応する重みおよびバイアスで構成されている。これらの重みおよびバイアスは、ネットワークパラメータと称される。
【０００４】
一般に、ニューラルネットワークは、入力層および出力層を含み、入力層と出力層との間に１つ以上の隠れ層を任意に含み得る。ディープラーニングアプリケーションにおいて使用されるニューラルネットワークは、典型的には多くの隠れ層を含んでおり、このことがディープニューラルネットワーク（ＤＮＮ）という用語を生じさせる。ニューラルネットワークの層は、密に接続される（たとえば、層内の各ノードが前の層内の全てのノードに完全に接続される）場合もあれば、疎らに接続される（たとえば、層内の各ノードが前の層内のノードの一部のみに接続される）場合もある。畳み込みニューラルネットワーク（ＣＮＮ）は、畳み込み層と称される１つ以上の疎らに接続された層を含むタイプのＤＮＮである。ＣＮＮは、画像または映像データの処理に適している。他のタイプのＤＮＮは、音声およびテキストデータの処理に適した回帰型ニューラルネットワーク（ＲＮＮ）を含む。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
いずれのトポロジまたはタイプのニューラルネットワークも、ネットワークを特定のタスクに適合させるために全ての層にわたってネットワークパラメータの正確な値を必要とする。特定のタスクについて所望の正確性をもたらすネットワークパラメータセットを決定するために教師あり訓練手順を使用することができる。訓練は、ネットワークの順方向の経路を介して訓練データセットを実行し（順伝播）、ネットワークの逆方向の経路を介して重みを更新して（逆伝播）、予測誤差を補償することを含む。次いで、訓練されたニューラルネットワークは、入力データセット上で特定のタスクを実行する（推論と称される）ようにデプロイされる。ニューラルネットワークの訓練に使用されるコンピューティングプラットフォーム（訓練プラットフォーム）は、推論に使用されるコンピューティングプラットフォーム（推論プラットフォーム）よりも高性能であることが多い。しかし、推論プラットフォームは、訓練プラットフォームよりも電力効率がよいことが多い。特にそれほど高性能でない推論プラットフォームを使用する場合には、ニューラルネットワークの推論の計算強度を低下させることが望ましい。
【課題を解決するための手段】
【０００６】
概要
ニューラルネットワークの、アーキテクチャに最適化された訓練のための技術について説明する。一例において、複数の層を有するニューラルネットワークを最適化する方法は、上記ニューラルネットワークを実現する推論プラットフォームの回路についてのアーキテクチャ制約を取得するステップと、上記ニューラルネットワークを訓練プラットフォーム上で訓練して、上記複数の層についてのネットワークパラメータおよび特徴マップを生成するステップと、上記アーキテクチャ制約に基づいて、上記ネットワークパラメータ、上記特徴マップ、またはそれら両方を制約するステップとを含む。
【０００７】
いくつかの実施形態において、上記アーキテクチャ制約は、複数の制約を含んでもよく、上記制約するステップは、上記複数の制約のうちの少なくとも１つを使用して実行されてもよい。
【０００８】
いくつかの実施形態において、上記制約するステップは、上記ニューラルネットワークについて所望の正確性を達成する最大数の上記複数の制約を使用して実行されてもよい。
【０００９】
いくつかの実施形態において、上記制約するステップは、上記ニューラルネットワークを訓練するステップ中に実行されてもよい。
【００１０】
いくつかの実施形態において、上記制約するステップは、上記ニューラルネットワークを訓練するステップに続いて実行されてもよい。
【００１１】
いくつかの実施形態において、上記方法は、制約されたネットワークパラメータ、制約された特徴マップ、または制約されたネットワークパラメータと制約された特徴マップとの両方を使用して上記ニューラルネットワークを上記訓練プラットフォーム上で再訓練して、新たなネットワークパラメータを生成するステップをさらに含んでもよい。
【００１２】
いくつかの実施形態において、上記アーキテクチャ制約は、上記推論プラットフォームの上記回路の計算機能に基づく１つ以上の制約を含んでもよい。
【００１３】
いくつかの実施形態において、上記計算機能は、上記推論プラットフォームの積和演算回路の構造と、データ幅制約とを含んでもよい。
【００１４】
別の例において、コンピューティングシステムは、ニューラルネットワークのための訓練プラットフォームを含み、上記訓練プラットフォームは、ハードウェア部分とソフトウェア部分とを含み、上記ハードウェア部分は、少なくとも１つのプロセッサと、メモリとを含み、上記ソフトウェア部分は、上記少なくとも１つのプロセッサによって複数の機能を実行するように実行可能な、上記メモリに格納されたプログラムコードを含み、上記複数の機能は、上記ニューラルネットワークを実現する推論プラットフォームの回路についてのアーキテクチャ制約を取得する機能と、上記ニューラルネットワークを上記訓練プラットフォーム上で訓練して、上記複数の層についてのネットワークパラメータおよび特徴マップを生成する機能と、上記アーキテクチャ制約に基づいて、上記ネットワークパラメータ、上記特徴マップ、またはそれら両方を制約する機能とを含む。
【００１５】
いくつかの実施形態において、上記アーキテクチャ制約は、複数の制約を含んでもよく、上記プログラムコードは、上記複数の制約のうちの少なくとも１つを使用して上記制約する機能を実行するように実行可能であってもよい。
【００１６】
いくつかの実施形態において、上記プログラムコードは、上記ニューラルネットワークについて所望の正確性を達成する最大数の上記複数の制約を使用して上記制約する機能を実行するように実行可能であってもよい。
【００１７】
いくつかの実施形態において、上記プログラムコードは、上記ニューラルネットワークを訓練する機能中に上記制約する機能を実行するように実行可能であってもよい。
【００１８】
いくつかの実施形態において、上記プログラムコードは、上記ニューラルネットワークを訓練する機能に続いて上記制約する機能を実行するように実行可能であってもよい。
【００１９】
いくつかの実施形態において、上記プログラムコードは、制約されたネットワークパラメータ、制約された特徴マップ、または制約されたネットワークパラメータと制約された特徴マップとの両方を使用して上記ニューラルネットワークを上記訓練プラットフォーム上で再訓練して、新たなネットワークパラメータを生成する機能を実行するように実行可能であってもよい。
【００２０】
いくつかの実施形態において、上記アーキテクチャ制約は、上記推論プラットフォームの上記回路の計算機能に基づく１つ以上の制約を含んでもよい。
【００２１】
いくつかの実施形態において、上記計算機能は、上記推論プラットフォームの積和演算回路の構造と、データ幅制約とを含んでもよい。
【００２２】
別の例において、プロセッサによって実行されたときに上記プロセッサに、複数の層を有するニューラルネットワークを最適化する方法を実行させる命令が格納された非一時的なコンピュータ読取可能媒体であって、上記方法は、上記ニューラルネットワークを実現する推論プラットフォームの回路についてのアーキテクチャ制約を取得するステップと、上記ニューラルネットワークを訓練プラットフォーム上で訓練して、上記複数の層についてのネットワークパラメータおよび特徴マップを生成するステップと、上記アーキテクチャ制約に基づいて、上記ネットワークパラメータ、上記特徴マップ、またはそれら両方を制約するステップとを備える。
【００２３】
いくつかの実施形態において、上記アーキテクチャ制約は、複数の制約を含んでもよく、上記制約するステップは、上記複数の制約のうちの少なくとも１つを使用して実行されてもよい。
【００２４】
いくつかの実施形態において、上記アーキテクチャ制約は、上記推論プラットフォームの上記回路の計算機能に基づく１つ以上の制約を含んでもよい。
【００２５】
いくつかの実施形態において、上記計算機能は、上記推論プラットフォームの積和演算回路の構造と、データ幅制約とを含んでもよい。
【００２６】
図面の簡単な説明
これらのおよび他の局面は、以下の詳細な説明を参照して理解することができる。
【００２７】
上記の特徴を詳細に理解できるように、上で簡単に要約した説明のさらに詳細な説明を、例示的な実現例を参照することによって行ってもよく、例示的な実現例のうちのいくつかは、添付の図面に示されている。しかし、添付の図面は、典型的な例示的な実現例を示しているに過ぎないため、その範囲を限定するものと考えられるべきではない、ということに留意されたい。
【図面の簡単な説明】
【００２８】
【図１】一例に係るニューラルネットワークを訓練して実現するためのシステムを示すブロック図である。
【図２】一例に係るコンピューティングシステムを示すブロック図である。
【図３】複数の層を有するニューラルネットワークを最適化する方法を示すフロー図である。
【図４】計算エンジンの一例を示すブロック図である。
【図５】一例に係るプログラマブル集積回路（ＩＣ）を示すブロック図である。
【図６】図５のプログラマブルＩＣのシステム・オン・チップ（ＳｏＣ）実現例を示すブロック図である。
【図７】図５のプログラマブルＩＣのフィールドプログラマブルゲートアレイ（ＦＰＧＡ）実現例を示す。
【発明を実施するための形態】
【００２９】
理解を容易にするために、可能であれば、同一の参照番号を使用して、図面に共通する同一の要素を示した。一例の要素を他の例に有益に組み込むことができると考えられる。
【００３０】
詳細な説明
図面を参照して、さまざまな特徴について以下で説明する。図面は、一定の縮尺で描かれている場合もあればそうでない場合もあり、同様の構造または機能の要素は、図面全体を通して同様の参照番号によって表わされる、ということに留意されたい。図面は、特徴の説明を容易にすることを意図しているに過ぎない、ということに留意されたい。図面は、クレームされている発明の網羅的な説明として意図されるものではなく、クレームされている発明の範囲に対する限定として意図されるものでもない。また、図示例は、示されている全ての局面または利点を有していなくてもよい。特定の例に関連して記載される局面または利点は、必ずしも当該例に限定されるものではなく、たとえそのように図示されていなくても、またはたとえそのように明白に記載されていなくても、その他の例で実施することができる。
【００３１】
ニューラルネットワークの、アーキテクチャに最適化された訓練のための技術について説明する。一例において、複数の層を有するニューラルネットワークは、ニューラルネットワークを実現する推論プラットフォームの回路についてのアーキテクチャ制約を取得することによって最適化される。推論プラットフォームは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）などのプログラマブル集積回路（ＩＣ）であってもよい。ＦＰＧＡなどのプログラマブルＩＣにおける回路は、プログラマブルロジック（たとえば、コンフィギュラブルロジックブロック）と、デジタル信号プロセッサ（ＤＳＰ）ブロックなどの専用のブロックとを含む。アーキテクチャ制約は、推論プラットフォーム回路のいくらかの特徴、要素、制限などを指定する。ニューラルネットワークは、訓練プラットフォーム上で訓練されて、複数の層についてのネットワークパラメータ（たとえば、重みおよびバイアス）および特徴マップ（たとえば、活性化）を生成する。ネットワークパラメータ、特徴マップ、またはそれら両方は、アーキテクチャ制約に基づいて制約される。本明細書に記載されている技術は、訓練フェーズ中にニューラルネットワークにおいてネットワークパラメータおよび／または特徴マップに対する制約を実施することによって、推論プラットフォームの特定のアーキテクチャ側面を利用して、推論段階中の推論プラットフォームの最適な（たとえば、最も効率的な）使用を保証する。たとえば、訓練中にニューラルネットワークの重みを適切に制約することにより、ＦＰＧＡのＤＳＰブロックにおける前置加算器の使用が可能になり、それによって、推論プラットフォームとして使用された場合のＦＰＧＡの計算容量が十分に利用される。推論プラットフォームのアーキテクチャ制約に基づいてネットワークパラメータおよび／または特徴マップを最適化するこれらのおよびさらなる局面について、図面に関連付けて以下で説明する。
【００３２】
図１は、一例に係るニューラルネットワークを訓練して実現するためのシステム１００を示すブロック図である。システム１００は、訓練プラットフォーム１０２と、推論プラットフォーム１０４とを含む。訓練プラットフォーム１０２は、特定のタスク（たとえば、画像分類、物体検出など）についてニューラルネットワーク１０６を訓練するように構成されたハードウェアおよびソフトウェアを備える。推論プラットフォーム１０４は、当該特定のタスクを実行するようにニューラルネットワーク１０６を実現するように構成されたハードウェアおよび／またはソフトウェアを含む。訓練プラットフォーム１０２および推論プラットフォーム１０４の例については、以下で説明する。
【００３３】
動作時、ユーザは、特定のトポロジ１０８を有するニューラルネットワーク１０６を指定する。トポロジ１０８は、一般に、ニューロンの配列を含む。たとえば、トポロジ１０８は、複数のニューロンの層を含んでもよい。これらの層は、一般に、入力層と、出力層と、ゼロ個以上の隠れ層とを含む。各ニューロンは、複数の入力と、出力とを含む。各ニューロンの複数の入力は、複数の重みに関連付けられる。各ニューロンは、その出力に関連付けられたバイアスをさらに含む。ニューラルネットワーク１０６の重みおよびバイアスは、ネットワークパラメータと称される。所与の層について、そのニューロンの入力は、入力特徴マップと称され、そのニューロンの出力は、出力特徴マップと称される。入力特徴マップおよび出力特徴マップは、一般に「特徴マップ」と称される。
【００３４】
訓練プラットフォーム１０２は、訓練データセット１１０および初期ネットワークパラメータ１１３を受ける。訓練データセット１１０は、ニューラルネットワーク１０６を訓練して、訓練されたネットワークパラメータ１１４を生成するためのデータを含む。たとえば、ニューラルネットワーク１０６が画像を分類するように構成される場合、訓練データセット１１０は、予め分類された画像のセットであってもよい。初期ネットワークパラメータ１１３は、ニューラルネットワーク１０６のネットワークパラメータのための初期値を含む。一例では、訓練プラットフォーム１０２は、推論アーキテクチャ制約１１２（「アーキテクチャ制約」と総称され、１つ以上の制約を含む）を受けるための入力も含む。推論アーキテクチャ制約１１２は、推論プラットフォーム１０４のハードウェア（たとえば、回路）に関連付けられた１つ以上の制約を含む。推論アーキテクチャ制約の例については、以下でさらに説明する。一般に、推論アーキテクチャ制約１１２は、推論プラットフォーム１０４のハードウェアのいくらかの特徴、要素、制限などを指定する。推論アーキテクチャ制約１１２は、訓練プロセス中にネットワークパラメータおよび／または特徴マップを制約するのに使用される。一例では、推論アーキテクチャ制約１１２は、訓練プロセス中にネットワークパラメータおよび／または特徴マップを制約するのに使用されてもよい。別の例では、推論アーキテクチャ制約は、訓練プロセス後にネットワークパラメータおよび／または特徴マップを制約するのに使用されてもよい。いずれの例でも、訓練されたネットワークパラメータ１１４は、推論アーキテクチャ制約１１２によって制約される。同様に、トポロジ１０８は、制約された特徴マップ（たとえば、トポロジ１０８における１つ以上の層への制約された活性化入力）で実現され得る。
【００３５】
推論プラットフォーム１０４は、訓練されたネットワークパラメータ１１４および入力データセット１１６を受ける。入力データセット１１６は、ニューラルネットワーク１０６によって処理されるデータを含む。たとえば、ニューラルネットワークが画像を分類するように構成される場合、入力データセット１１６は、分類対象の画像を含んでもよい。推論プラットフォーム１０４は、結果データセット１１８を生成する。たとえば、画像分類スキームでは、結果データセット１１８は、入力データセット１１６における画像の分類を含む。訓練されたネットワークパラメータ１１４が推論プラットフォーム１０４のアーキテクチャ制約に基づいて制約されているので、ニューラルネットワーク１０６は、推論アーキテクチャ制約１１２によって取り込まれた推論プラットフォームの特徴、要素および制限を活用して、当該推論プラットフォームによって効率的に実現可能である。
【００３６】
図２は、一例に係るコンピューティングシステム（「コンピュータ２００」）を示すブロック図である。コンピュータ２００は、ハードウェアプラットフォーム２０２上で実行されるソフトウェアプラットフォーム２０４を含む。ハードウェアプラットフォーム２０２は、中央処理装置（ＣＰＵ）２０６と、システムメモリ２０８と、ストレージデバイス２１０と、サポート回路２１１と、訓練プラットフォーム２１２と、ハードウェアアクセラレータ２１４とを含む。ソフトウェアプラットフォーム２０４は、オペレーティングシステム（ＯＳ）２３０と、ドライバ２３２と、ライブラリ２３４と、アプリケーション２３６とを含む。
【００３７】
ＣＰＵ２０６は、ｘ８６ベースのプロセッサ、ＡＲＭ（登録商標）ベースのプロセッサなどのいかなるタイプの汎用中央処理装置（ＣＰＵ）であってもよい。ＣＰＵ２０６は、１つ以上のコアと、関連付けられた回路（たとえば、キャッシュメモリ、メモリ管理ユニット（ＭＭＵ）、割り込みコントローラなど）とを含み得る。ＣＰＵ２０６は、本明細書に記載されている１つ以上の動作を実行し、システムメモリ２０８および／またはストレージデバイス２１０に格納され得るプログラムコードを実行するように構成される。サポート回路２１１は、ＣＰＵ２０６、システムメモリ２０８、ストレージデバイス２１０、訓練プラットフォーム２１２、ハードウェアアクセラレータ２１４またはその他の周辺装置の間のデータフローをＣＰＵ２０６と協働して管理するさまざまなデバイスを含む。たとえば、サポート回路２１１は、チップセット（たとえば、ノースブリッジ、サウスブリッジ、プラットフォームホストコントローラなど）、電圧レギュレータ、ファームウェア（たとえば、ＢＩＯＳ）などを含んでもよい。いくつかの例では、ＣＰＵ２０６は、チップセット（たとえば、ノースブリッジ、サウスブリッジなど）の機能のうちの全てまたはかなりの部分を吸収するシステム・イン・パッケージ（ＳｉＰ）、システム・オン・チップ（ＳｏＣ）などであってもよい。
【００３８】
システムメモリ２０８は、実行可能な命令およびデータなどの情報を格納して検索することを可能にするデバイスである。システムメモリ２０８は、たとえば、ダブルデータレート（ＤＤＲ）ダイナミックＲＡＭ（ＤＲＡＭ）などの１つ以上のランダムアクセスメモリ（ＲＡＭ）モジュールを含み得る。システムメモリ２０８は、ソフトウェアプラットフォーム２０４を実現するための、ＣＰＵ２０６によって処理されて実行されるデータ２２６およびプログラムコード（「コード２２８」）を格納することができる。ストレージデバイス２１０は、ローカルストレージデバイス（たとえば、１つ以上のハードディスク、フラッシュメモリモジュール、ソリッドステートディスクおよび光ディスク）、および／または、コンピュータ２００が１つ以上のネットワークデータストレージシステムと通信することを可能にするストレージインターフェイスを含む。ハードウェアプラットフォーム２０２は、グラフィックスカード、ユニバーサルシリアルバス（ＵＳＢ）インターフェイスなどの、コンピューティングシステムのさまざまな他の従来のデバイスおよび周辺装置を含み得る。
【００３９】
訓練プラットフォーム２１２は、プロセッサ、メモリ、入力／出力（ＩＯ）回路などを含み得るハードウェア２１６を含む。一例では、ハードウェア２１６は、グラフィックス処理ユニット（ＧＰＵ）および関連付けられたサポート回路を含む。別の例では、ハードウェア２１６は、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルＩＣなどを、関連付けられたサポート回路とともに含んでもよい。一例では、訓練プラットフォーム２１２は、ハードウェアアクセラレータ２１４よりも高性能であるが、ハードウェアアクセラレータ２１４よりも多くのエネルギも消費する。訓練プラットフォーム２１２は、ニューラルネットワークの訓練に使用することができる。
【００４０】
ハードウェアアクセラレータ１２２は、ＩＣ２２０と、メモリ２２４とを含む。ＩＣ２２０は、計算エンジン２２２を含む。一例では、ＩＣ２２０は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）またはＦＰＧＡを内部に有するシステム・オン・チップ（ＳｏＣ）などのプログラマブルＩＣである。計算エンジン２２２は、ＩＣ２２０にプログラムすることができる。別の例では、ＩＣ２２０はＡＳＩＣなどであり、計算エンジン２２２がその中の専用回路である。ハードウェアアクセラレータ２１４は、ニューラルネットワークのための推論プラットフォームで使用することができる。
【００４１】
ＯＳ２３０は、Ｌｉｎｕｘ（登録商標）、マイクロソフトウィンドウズ（登録商標）、Ｍａｃ  ＯＳ（登録商標）などの、当該技術分野において公知のいずれのコモディティオペレーティングシステムであってもよい。ドライバ２３２およびライブラリ２３４は、訓練プラットフォーム２１２およびハードウェアアクセラレータ２１４に対してその指令および制御のためにアプリケーションプログラミングインターフェイス（ＡＰＩ）を提供するソフトウェアを備える。アプリケーション２３６は、訓練プラットフォーム２１２上でニューラルネットワークを訓練して、ハードウェアアクセラレータ２１４上でニューラルネットワークを実現するソフトウェアを含む。アプリケーション２３６は、ドライバ２３２およびライブラリ２３４を介して訓練プラットフォーム２１２およびハードウェアアクセラレータ２１４と通信する。
【００４２】
図３は、複数の層を有するニューラルネットワークを最適化する方法３００を示すフロー図である。方法３００は、上記のコンピュータ２００上で実行されるアプリケーション２３６によって実行することができる。この方法は、ステップ３０２から開始し、ステップ３０２において、アプリケーション２３６は、ニューラルネットワークを実現する推論プラットフォームの回路についてのアーキテクチャ制約を取得する。たとえば、アプリケーション２３６は、ハードウェアアクセラレータ２１４内のＩＣ２２０における計算エンジン２２２のアーキテクチャ制約を取得することができる。
【００４３】
ステップ３０４において、アプリケーション２３６は、１回以上の繰り返しにわたってニューラルネットワークを訓練プラットフォーム上で訓練して、ネットワークパラメータを生成する。たとえば、アプリケーション２３６は、ハードウェア２１６を使用してニューラルネットワークを訓練プラットフォーム２１２上で訓練してもよい。確率的勾配降下法などの学習アルゴリズムと組み合わせられたバックプロパゲーションなどのさまざまな訓練アルゴリズムを使用することができる。このような訓練アルゴリズムでは、アプリケーション２３６は、訓練データセットを入力する。各訓練データ（たとえば、入力画像）について、アプリケーション２３６は、訓練データをニューラルネットワークを介して順方向に送って、出力結果を生成する。アプリケーション２３６は、出力誤差を計算し、この誤差を逆伝播し、使用される学習アルゴリズム（たとえば、勾配降下法）に従ってネットワークパラメータを更新する。一般に、更新後のネットワークパラメータに対する制約はない。しかし、この例では、ステップ３０６において、アプリケーション２３６は、推論プラットフォームのアーキテクチャ制約に基づいてネットワークパラメータおよび／または特徴マップを制約する。
【００４４】
一例では、アプリケーション２３６は、訓練アルゴリズム中（たとえば、バックプロパゲーションの各繰り返し後）にネットワークパラメータおよび／または特徴マップを制約する。別の例では、アプリケーション２３６は、訓練アルゴリズムの完了後に（たとえば、訓練アルゴリズムにおける最後のステップとして）ネットワークパラメータおよび／または特徴マップを制約する。このような例では、アプリケーション２３６は、制約されたネットワークパラメータおよび／または制約された特徴マップを使用してニューラルネットワークを訓練プラットフォーム上で再訓練して（たとえば、別の繰り返しを実行して）、新たなネットワークパラメータを生成する。アプリケーション２３６は、複数の繰り返しにわたってこのプロセスを繰り返すことができる。
【００４５】
一例では、アプリケーション２３６は、ニューラルネットワークについて所望の正確性を達成する最大数のアーキテクチャ制約を使用してネットワークパラメータおよび／または特徴マップを制約する。たとえば、アプリケーション２３６は、１つ以上のアーキテクチャ制約を使用して第１の訓練パスを実行して、ネットワークパラメータおよび／または特徴マップを制約してもよい。アプリケーション２３６は、訓練されたネットワークの結果として生じる正確性を求めることができる。ユーザが正確性の増加を望む場合には、アプリケーション２３６は、前のアーキテクチャ制約および１つ以上の追加のアーキテクチャ制約を使用して第２の訓練パスを実行することができる。このプロセスは、所望の正確性が達成されるまで繰り返され得る。
【００４６】
アーキテクチャ制約は、推論プラットフォーム上へのニューラルネットワークの最適なマッピングを保証するために利用可能な推論プラットフォームのアーキテクチャ特性を表す。このようなアーキテクチャ特性は、特定の計算能力、データの好ましいビット幅および／またはネットワークパラメータなどを含む。アーキテクチャ制約の例については、以下で説明する。
【００４７】
図４は、計算エンジン２２２の一例を示すブロック図である。計算エンジン２２２は、入力回路４０２と、乗算器入力回路４０４と、前置加算器４０６と、乗算器４０８と、累算器４１０と、出力回路４１２とを含む。入力回路４０２は、４つの入力Ａ、Ｂ、ＣおよびＤを含む。入力回路４０２は、入力Ａ...Ｄをバッファリングするためのレジスタと、これらの入力を乗算器入力回路４０４および前置加算器４０６の間で方向付けるためのマルチプレクサとを含む。乗算器入力回路４０４は、入力回路４０２の出力および前置加算器４０６の出力をバッファリングするためのレジスタを含む。累算器４１０は、乗算器４０８の出力を累算する。出力回路４１２は、累算器４１０の出力をバッファリングする。この例では、入力回路４０２および乗算器入力回路４０４は、計算エンジン２２２が（Ａ＋Ｄ）×Ｂを実行できるように構成されるものとする。
【００４８】
一例では、図４に示される計算エンジン２２２の計算能力を利用するためのアーキテクチャ制約は、上記の訓練プロセスにおいて使用することができる。すなわち、訓練中に使用されるアーキテクチャ制約は、推論プラットフォーム回路の計算機能に基づく１つ以上の制約を含み得る。一例では、計算機能は、推論プラットフォームの積和演算回路の構造（たとえば、演算論理装置（ＡＬＵ）の能力）と、レジスタビット幅、バス／ダイレクトメモリアクセス（ＤＭＡ）ビット幅、メモリビット幅などに起因するデータ幅制約とを含む。とりわけ、さまざまなタイプのニューラルネットワークの層における多くの演算は、特徴マップ値の加重和を伴う。
【００４９】
【数１】
2020531968.tif 000003
【００５０】
ここで、ｆｉ，ｋは、特徴マップ値であり、ｗｋは、重み値である。図４に示されるように、計算エンジン２２２は、（たとえば、入力Ｂとの）乗算を適用する前に２つの値（たとえば、入力ＡおよびＤ）を加算することができる前置加算器４０６を含み得る。前置加算器４０６は、２つの特徴マップ値に適用される重みが同じであるか、または互いに逆である場合にのみ利用することができる。すなわち、ｆｉ，ｋおよびｆｉ，ｌでは、ｗｋ=ｗｌまたはｗｋ=−ｗｌである。
【００５１】
図４の計算エンジン２２２の例では、制約された重み（ＣＷ）が入力Ｂに提供される。特徴マップ値ｆｉ，ｋが入力Ａに提供される。特徴マップ値ｆｉ，ｌが入力Ｄに提供される。前置加算器４０６が加算または減算のいずれかを実行できるので、ｗｌとｗｋとの間の数学的関係は、恒等または負である。このｗｋとｗｌとの間の数学的関係は、訓練中に実施可能なアーキテクチャ制約になる。結果として生じる重みセットは、いくつかがペアで事前に加算されて、必要な計算エンジン２２２の数を減少させることができるという特性を有する。たとえば、ｗｋ×ｆｉ，ｋ＋ｗｌ×ｆｉ，ｌは、２回の乗算演算を必要とするが、ｗｋ=ｗｌの場合、演算はｗｋ×（ｆｉ，ｋ＋ｆｉ，ｌ）（すなわち、１回だけの事前加算演算および１回だけの乗算演算）になる。
【００５２】
図４の例では、入力Ａ...Ｄは、単一のデジタル値として記載されている。別の例では、同様の計算エンジンがベクトルプロセッサとして機能し、入力は値のベクトルであり、計算要素はこれらのベクトルを処理する。このようなベクトル計算要素は、図４に示される計算エンジン２２２と構造的に同様であり得る。
【００５３】
別の例では、計算精度を利用するためのアーキテクチャ制約が使用されてもよい。累算器４１０の出力ビット幅は４８ビットであるものとする。さらに、ニューラルネットワークは３×３×３８４の畳み込みカーネルを含むものとする。その結果、３６ビットを乗算結果のために残して、１２ビットを累算に取っておく必要がある。乗算結果（すなわち、乗算器４０８の出力）は３２ビットに制約されるとする。その場合、重みおよび特徴マップ値に対して１６ビットの制約を課すことにより、単一の計算エンジン２２２上で完全な３×３×３８４の畳み込みカーネルを実行できることが確実になる。なお、特徴マップ値および重みに対する制約は、互いに対して相対的である。したがって、重みに対して１４ビットの制約を課し、特徴マップ値に対して１８ビットの制約を課す（または、その逆）ことにより、同じ結果が達成される。他の例では、重みに対して特徴マップ値を制約するために他のビット幅値を使用することができる。
【００５４】
図５は、一例に係るプログラマブルＩＣ１を示すブロック図である。プログラマブルＩＣ１は、図２におけるＩＣ２２０として使用することができる。プログラマブルＩＣ１は、プログラマブルロジック３と、コンフィギュレーションロジック２５と、コンフィギュレーションメモリ２６とを含む。プログラマブルＩＣ１は、不揮発性メモリ２７、ＤＲＡＭ２８および他の回路２９などの外部回路に結合され得る。プログラマブルロジック３は、ロジックセル３０と、サポート回路３１と、プログラマブルインターコネクト３２とを含む。ロジックセル３０は、複数の入力の一般的なロジック機能を実現するように構成され得る回路を含む。サポート回路３１は、トランシーバ、入力／出力ブロック、デジタル信号プロセッサ、メモリなどの専用回路を含む。ロジックセルとサポート回路３１とは、プログラマブルインターコネクト３２を使用して相互接続することができる。ロジックセル３０をプログラムし、サポート回路３１のパラメータを設定し、プログラマブルインターコネクト３２をプログラムするための情報は、コンフィギュレーションロジック２５によってコンフィギュレーションメモリ２６に格納される。コンフィギュレーションロジック２５は、不揮発性メモリ２７またはその他のソース（たとえば、ＤＲＡＭ２８または他の回路２９）からコンフィギュレーションデータを取得することができる。いくつかの例では、プログラマブルＩＣ１は、処理システム２を含む。処理システム２は、マイクロプロセッサ、メモリ、サポート回路、ＩＯ回路などを含み得る。
【００５５】
図６は、一例に係るプログラマブルＩＣ１のシステム・オン・チップ（ＳｏＣ）実現例を示すブロック図である。この例では、プログラマブルＩＣ１は、処理システム２と、プログラマブルロジック３とを含む。処理システム２は、リアルタイム処理ユニット（ＲＰＵ）４、アプリケーション処理ユニット（ＡＰＵ）５、グラフィックス処理ユニット（ＧＰＵ）６、コンフィギュレーションおよびセキュリティユニット（ＣＳＵ）１２、プラットフォーム管理ユニット（ＰＭＵ）１２２などのさまざまな処理ユニットを含む。処理システム２は、オンチップメモリ（ＯＣＭ）１４、トランシーバ７、周辺装置８、インターコネクト１６、ＤＭＡ回路９、メモリコントローラ１０、周辺装置１５および多重化ＩＯ（ＭＩＯ）回路１３などのさまざまなサポート回路も含む。処理ユニットおよびサポート回路は、インターコネクト１６によって相互接続される。ＰＬ３もインターコネクト１６に結合される。トランシーバ７は、外部ピン２４に結合される。ＰＬ３は、外部ピン２３に結合される。メモリコントローラ１０は、外部ピン２２に結合される。ＭＩＯ１３は、外部ピン２０に結合される。ＰＳ２は、全体として外部ピン２１に結合される。ＡＰＵ５は、ＣＰＵ１７、メモリ１８およびサポート回路１９を含み得る。
【００５６】
ＰＳ２を参照して、処理ユニットの各々は、１つ以上の中央処理装置（ＣＰＵ）と、メモリ、割り込みコントローラ、ダイレクトメモリアクセス（ＤＭＡ）コントローラ、メモリ管理ユニット（ＭＭＵ）、浮動小数点ユニット（ＦＰＵ）などの関連付けられた回路とを含む。インターコネクト１６は、さまざまなスイッチ、バス、通信リンクなどを含む。これらは、処理ユニット同士を相互接続し、ＰＳ２内の他の構成要素を処理ユニットに相互接続するように構成されている。
【００５７】
ＯＣＭ１４は、ＰＳ２全体に分布され得る１つ以上のＲＡＭモジュールを含む。たとえば、ＯＣＭ１４は、バッテリバックアップ式のＲＡＭ（ＢＢＲＡＭ）、密結合メモリ（ＴＣＭ）などを含んでもよい。メモリコントローラ１０は、外部ＤＲＡＭにアクセスするためのＤＲＡＭインターフェイスを含み得る。周辺装置８，１５は、ＰＳ２にインターフェイスを提供する１つ以上の構成要素を含み得る。たとえば、周辺装置１３２は、グラフィックス処理ユニット（ＧＰＵ）、ディスプレイインターフェイス（たとえば、ディスプレイポート、高解像度マルチメディアインターフェイス（ＨＤＭＩ（登録商標））ポートなど）、ユニバーサルシリアルバス（ＵＳＢ）ポート、イーサネット（登録商標）ポート、汎用非同期トランシーバ（ＵＡＲＴ）ポート、シリアル・ペリフェラル・インターフェイス（ＳＰＩ）ポート、汎用ＩＯ（ＧＰＩＯ）ポート、シリアル・アドバンスト・テクノロジ・アタッチメント（ＳＡＴＡ）ポート、ＰＣIｅポートなどを含んでもよい。周辺装置１５は、ＭＩＯ１３に結合され得る。周辺装置８は、トランシーバ７に結合され得る。トランシーバ７は、シリアライザ／デシリアライザ（ＳＥＲＤＥＳ）回路、ＭＧＴなどを含み得る。
【００５８】
図７は、多数の異なるプログラマブルタイルを含むプログラマブルＩＣ１のフィールドプログラマブルゲートアレイ（ＦＰＧＡ）実現例を示し、これらのプログラマブルタイルは、トランシーバ３７、コンフィギュラブルロジックブロック（「ＣＬＢ」）３３、ランダムアクセスメモリブロック（「ＢＲＡＭ」）３４、入力／出力ブロック（「ＩＯＢ」）３６、コンフィギュレーションおよびクロッキングロジック（「ＣＯＮＦＩＧ／ＣＬＯＣＫＳ」）４２、デジタル信号処理ブロック（「ＤＳＰ」）３５、特殊入力／出力ブロック（「Ｉ／Ｏ」）４１（たとえば、コンフィギュレーションポートおよびクロックポート）、および他のプログラマブルロジック３９（デジタルクロックマネージャ、アナログデジタル変換器、システムモニタリングロジックなど）を含む。ＦＰＧＡは、ＰＣＩｅインターフェイス４０、アナログデジタル変換器（ＡＤＣ）３８なども含み得る。
【００５９】
いくつかのＦＰＧＡでは、各プログラマブルタイルは、図７の上部に含まれる例によって示されるように、同一のタイル内のプログラマブルロジック要素の入力および出力端子４８への接続を有する少なくとも１つのプログラマブル相互接続要素（「ＩＮＴ」）４３を含み得る。各プログラマブル相互接続要素４３は、同一のタイルまたは他のタイルにおける隣接するプログラマブル相互接続要素の相互接続セグメント４９への接続も含み得る。各プログラマブル相互接続要素４３は、ロジックブロック（図示せず）間に一般的なルーティングリソースの相互接続セグメント５０への接続も含み得る。一般的なルーティングリソースは、相互接続セグメント（たとえば、相互接続セグメント５０）のトラックを備えるロジックブロック（図示せず）と相互接続セグメントを接続するためのスイッチブロック（図示せず）との間にルーティングチャネルを含み得る。一般的なルーティングリソースの相互接続セグメント（たとえば、相互接続セグメント５０）は、１つ以上のロジックブロックにまたがっていてもよい。プログラマブル相互接続要素４３は、一般的なルーティングリソースとともに、示されているＦＰＧＡのためのプログラマブル相互接続構造（「プログラマブルインターコネクト」）を実現する。
【００６０】
例示的な実現例では、ＣＬＢ３３は、ユーザロジックに単一のプログラマブル相互接続要素（「ＩＮＴ」）４３を加えた構成を実現するようにプログラム可能なコンフィギュラブルロジック要素（「ＣＬＥ」）４４を含み得る。ＢＲＡＭ３４は、１つ以上のプログラマブル相互接続要素に加えて、ＢＲＡＭロジック要素（「ＢＲＬ」）４５を含み得る。典型的には、タイルに含まれる相互接続要素の数は、タイルの高さに左右される。示されている例では、ＢＲＡＭタイルは、５個のＣＬＢと同じ高さを有するが、他の数（たとえば、４個）も使用されてもよい。ＤＳＰタイル３５は、適切な数のプログラマブル相互接続要素に加えて、ＤＳＰロジック要素（「ＤＳＰＬ」）４６を含み得る。ＩＯＢ３６は、たとえば、プログラマブル相互接続要素４３の１つのインスタンスに加えて、入力／出力ロジック要素（「ＩＯＬ」）４７の２つのインスタンスを含み得る。当業者に明らかであるように、たとえばＩ／Ｏロジック要素４７に接続された実際のＩ／Ｏパッドは、典型的には、入力／出力ロジック要素４７の領域に限定されるものではない。
【００６１】
示されている例では、（図７に示される）ダイの中央付近の水平領域は、コンフィギュレーション、クロックおよび他の制御ロジックに使用される。この水平領域または列から延在する垂直な列５１は、ＦＰＧＡの幅にわたってクロックおよびコンフィギュレーション信号を分布させるのに使用される。
【００６２】
図７に示されるアーキテクチャを利用するいくつかのＦＰＧＡは、ＦＰＧＡの大部分を構成する規則的な列状構造を破壊するさらなるロジックブロックを含む。さらなるロジックブロックは、プログラマブルブロックおよび／または専用ロジックであってもよい。
【００６３】
なお、図７は、例示的なＦＰＧＡアーキテクチャを示すよう意図されているに過ぎない。たとえば、一行におけるロジックブロックの数、行の相対幅、行の数および順序、行に含まれるロジックブロックのタイプ、ロジックブロックの相対サイズ、ならびに図７の上部に含まれる相互接続／ロジック実現例は、純粋に例示である。たとえば、実際のＦＰＧＡでは、ユーザロジックの効率的な実現を容易にするために、典型的には、ＣＬＢが現れるところはどこでもＣＬＢの２つ以上の隣接する行が含まれるが、隣接するＣＬＢ行の数は、ＦＰＧＡの全体サイズによって変わる。
【００６４】
ニューラルネットワークの、アーキテクチャに最適化された訓練のための技術について説明してきた。一例において、複数の層を有するニューラルネットワークを最適化する方法は、上記ニューラルネットワークを実現する推論プラットフォームの回路についてのアーキテクチャ制約を取得するステップと、上記ニューラルネットワークを訓練プラットフォーム上で訓練して、上記複数の層についてのネットワークパラメータおよび特徴マップを生成するステップと、上記アーキテクチャ制約に基づいて、上記ネットワークパラメータ、上記特徴マップ、または上記ネットワークパラメータと上記特徴マップとの両方を制約するステップとを含む。一例において、上記アーキテクチャ制約は、複数の制約を含み、上記複数の制約のうちの少なくとも１つは、訓練中に制約として使用される。一例において、訓練は、上記ニューラルネットワークについて所望の正確性を達成する最大数の上記複数のアーキテクチャ制約を使用して実行される。一例において、ネットワークパラメータおよび／または特徴マップは、上記ニューラルネットワークの訓練中に制約される。一例において、ネットワークパラメータおよび／または特徴マップは、上記ニューラルネットワークの訓練後に制約される。このような例では、上記ニューラルネットワークは、上記制約されたネットワークパラメータおよび／または制約された特徴マップを使用して再訓練され得る。一例において、上記アーキテクチャ制約は、上記推論プラットフォームの上記回路の計算機能に基づく１つ以上の制約を含む。一例において、上記計算機能は、上記推論プラットフォームの積和演算回路の構造（たとえば、演算論理装置（ＡＬＵ）の能力）と、レジスタビット幅、バス／ダイレクトメモリアクセス（ＤＭＡ）ビット幅、メモリビット幅などに起因するデータ幅制約とを含む。
【００６５】
本明細書に記載されている技術は、訓練フェーズ中にニューラルネットワークを最適化することによってニューラルネットワークのための推論プラットフォームに対する高い計算／メモリ要求に対処する。ネットワークパラメータおよび／または特徴マップは、推論フェーズ中に推論プラットフォームとの理想的な整合を保証するように推論プラットフォームアーキテクチャに基づいて最適化される。従来のニューラルネットワーク訓練技術は、訓練中は推論プラットフォームのアーキテクチャ側面を考慮に入れない。本明細書に記載されている技術を利用することによって、ニューラルネットワークを実現するための推論プラットフォームの機能が向上する。
【００６６】
本明細書に記載されているさまざまな例は、コンピュータシステムに格納されたデータを必要とする、さまざまなコンピュータによって実現される動作を利用し得る。たとえば、これらの動作は、物理量の物理的操作を必要とし得て、必ずしもそうとは限らないが、通常は、これらの量は、電気信号または磁気信号の形態をとってもよく、それらまたはそれらの表現は、格納されたり、転送されたり、組み合わせられたり、比較されたり、または操作されたりすることができる。さらに、このような操作は、しばしば、生成、識別、判断または比較などの用語で称される。本明細書に記載されている技術の１つ以上の例の一部を構成する、本明細書に記載されているいかなる動作も、有用な機械動作であり得る。また、技術の１つ以上の例は、これらの動作を実行するためのデバイスまたは装置にも関する。この装置は、特定の要求される目的に合わせて特別に構築されてもよく、またはコンピュータに格納されたコンピュータプログラムによって選択的に作動または構成される汎用コンピュータであってもよい。特に、さまざまな汎用機械は、本明細書における教示に従って書かれたコンピュータプログラムとともに使用されてもよく、または要求される動作を実行するようにより特殊化された装置を構築する方が都合がよい場合もある。本明細書に記載されているさまざまな例は、手持ち式のデバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラマブル大衆消費電子製品、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピューティングシステム構成で実施されてもよい。
【００６７】
本明細書に記載されている技術の１つ以上の例は、１つ以上のコンピュータ読取可能媒体において具体化される１つ以上のコンピュータプログラムとしてまたは１つ以上のコンピュータプログラムモジュールとして実現されてもよい。コンピュータ読取可能媒体という用語は、データを格納することができ、その後データをコンピュータシステムに入力することができる任意のデータストレージデバイスを指し、コンピュータ読取可能媒体は、コンピュータによって読取ることができるようにコンピュータプログラムを具体化するための任意の既存のまたは後に開発される技術に基づいてもよい。コンピュータ読取可能媒体の例としては、ハードドライブ、ネットワーク接続型ストレージ（ＮＡＳ）、リードオンリメモリ、ランダムアクセスメモリ（たとえば、フラッシュメモリデバイス）、ＣＤ（コンパクトディスク）（ＣＤ−ＲＯＭ、ＣＤ−ＲまたはＣＤ−ＲＷ）、ＤＶＤ（デジタル多用途ディスク）、磁気テープ、ならびに他の光学式および非光学式データストレージデバイスが挙げられる。また、コンピュータ読取可能媒体は、コンピュータ読取可能コードが分布された態様で格納されて実行されるようにネットワーク結合型コンピュータシステムにわたって分布されてもよい。
【００６８】
上記は具体例に向けられているが、その基本的範囲から逸脱することなく他のおよびさらなる例が考案されてもよく、その範囲は、以下の特許請求の範囲によって決定される。
【図１】
2020531968.tif 000004
【図２】
2020531968.tif 000005
【図３】
2020531968.tif 000006
【図４】
2020531968.tif 000007
【図５】
2020531968.tif 000008
【図６】
2020531968.tif 000009
【図７】
2020531968.tif 000010
【手続補正書】
【提出日】令和1年8月30日(2019.8.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の層を有するニューラルネットワークを訓練するコンピュータによって実現される方法であって、
前記ニューラルネットワークを実現する推論プラットフォームの回路についてのアーキテクチャ制約を取得するステップを備え、前記アーキテクチャ制約は、前記推論プラットフォームの前記回路の構造に基づき、前記方法はさらに、
前記アーキテクチャ制約を使用して前記ニューラルネットワークを訓練プラットフォーム上で訓練して、前記複数の層についてのネットワークパラメータおよび特徴マップを生成するステップと、
前記アーキテクチャ制約に基づいて、前記ネットワークパラメータ、前記特徴マップ、または前記ネットワークパラメータと前記特徴マップとの両方を制約するステップとを備える、方法。
【請求項２】
前記アーキテクチャ制約は、複数の制約を含み、前記制約するステップは、前記複数の制約のうちの少なくとも１つを使用して実行される、請求項１に記載の方法。
【請求項３】
前記制約するステップは、前記ニューラルネットワークについて所望の正確性を達成する最大数の前記複数の制約を使用して実行される、請求項２に記載の方法。
【請求項４】
前記制約するステップは、前記ニューラルネットワークを訓練するステップ中に実行される、請求項１に記載の方法。
【請求項５】
前記制約するステップは、前記ニューラルネットワークを訓練するステップに続いて実行される、請求項１に記載の方法。
【請求項６】
制約されたネットワークパラメータ、制約された特徴マップ、または制約されたネットワークパラメータと制約された特徴マップとの両方を使用して前記ニューラルネットワークを前記訓練プラットフォーム上で再訓練して、新たなネットワークパラメータを生成するステップをさらに備える、請求項５に記載の方法。
【請求項７】
コンピューティングシステムであって、
少なくとも１つのプロセッサと、メモリと、訓練プラットフォームとを含むハードウェアプラットフォームと、
前記ハードウェアプラットフォーム上で実行されるソフトウェアプラットフォームとを備え、前記ソフトウェアプラットフォームは、前記少なくとも１つのプロセッサによって複数の機能を実行するように実行可能な、前記メモリに格納されたプログラムコードを含み、前記複数の機能は、
ニューラルネットワークを実現する推論プラットフォームの回路についてのアーキテクチャ制約を取得する機能を含み、前記アーキテクチャ制約は、前記推論プラットフォームの前記回路の構造に基づき、前記複数の機能はさらに、
前記アーキテクチャ制約を使用して前記ニューラルネットワークを前記ハードウェアプラットフォームの前記訓練プラットフォームで訓練して、前記複数の層についてのネットワークパラメータおよび特徴マップを生成する機能と、
前記アーキテクチャ制約に基づいて、前記ネットワークパラメータ、前記特徴マップ、または前記ネットワークパラメータと前記特徴マップとの両方を制約する機能とを含む、コンピューティングシステム。
【請求項８】
前記アーキテクチャ制約は、複数の制約を含み、前記プログラムコードは、前記複数の制約のうちの少なくとも１つを使用して前記制約する機能を実行するように実行可能である、請求項７に記載のコンピューティングシステム。
【請求項９】
前記プログラムコードは、前記ニューラルネットワークを訓練する機能中に前記制約する機能を実行するように実行可能である、請求項７に記載のコンピューティングシステム。
【請求項１０】
プログラムコードは、前記ニューラルネットワークを訓練する機能に続いて前記制約する機能を実行するように実行可能である、請求項７に記載のコンピューティングシステム。
【請求項１１】
前記プログラムコードは、制約されたネットワークパラメータ、制約された特徴マップ、または制約されたネットワークパラメータと制約された特徴マップとの両方を使用して前記ニューラルネットワークを前記訓練プラットフォーム上で再訓練して、新たなネットワークパラメータを生成する機能を実行するように実行可能である、請求項１０に記載のコンピューティングシステム。
【請求項１２】
前記アーキテクチャ制約は、前記推論プラットフォームの前記回路の計算機能に基づく１つ以上の制約を含む、請求項１に記載の方法。
【請求項１３】
前記計算機能は、前記推論プラットフォームの積和演算回路の構造と、データ幅制約とを含む、請求項１２に記載の方法。
【請求項１４】
前記アーキテクチャ制約は、前記推論プラットフォームの前記回路の計算機能に基づく１つ以上の制約を含む、請求項７に記載のコンピューティングシステム。
【請求項１５】
前記計算機能は、前記推論プラットフォームの積和演算回路の構造と、データ幅制約とを含む、請求項１４に記載のコンピューティングシステム。
【国際調査報告】
2020531968.tif 000011
2020531968.tif 000012
2020531968.tif 000013