(57)【特許請求の範囲】
【請求項１】
プロセッサのマイクロアーキテクチャの記述に基づき、メモリのレベルに関連付けられた値を取得するステップと、
ＲＮＮアーキテクチャの階層の最下位レベルから最上位レベルの各レベルを前記プロセッサのマイクロアーキテクチャに関連付けて、当該各レベルをメモリ容量、プロセッサコア数、帯域幅、計算帯域幅および遅延のうちの少なくとも２つで記述するステップと、
ニューロンを、前記ＲＮＮアーキテクチャのＲＮＮ層におけるロジックユニットをそれぞれ表すモジュールにグループ化するステップと、
前記モジュールがメモリ容量、プロセッサコア数、帯域幅、計算帯域幅および遅延のうちの前記少なくとも２つに関連する前記ＲＮＮアーキテクチャの所定条件を満たすように、前記モジュール間の結合を配置するステップと、を含む
リカレントニューラルネットワーク（ＲＮＮ）アーキテクチャを計算装置のプロセッサのマイクロアーキテクチャにマッピングすることにより前記計算装置の計算性能を向上させる方法。
【請求項２】
前記結合を配置するステップには、前記所定条件をバランシングするために前記モジュール間の双方向結合を削除するステップを含む請求項１に記載の方法。
【請求項３】
プロセッサメモリの各レベルに対して、前記所定条件はニューロンを表すパラメータが前記プロセッサメモリの容量に適合することを含む請求項１に記載の方法。
【請求項４】
プロセッサメモリの各レベルに対して、前記所定条件はモジュール間の結合に関連する同期コストが前記ニューロンを評価する計算コストに等しいことを含む請求項１に記載の方法。
【請求項５】
プロセッサメモリの各レベルに対して、前記所定条件はモジュール内の結合およびモジュール間の結合に関連する帯域幅コストと遅延コストとのうちの少なくとも一方が前記ニューロンを評価する計算コストに等しいことを含む請求項１に記載の方法。
【請求項６】
前記結合を配置するステップには、次の時間ステップにおいて１つのモジュールの出力をほかのモジュールの入力のサブセットに結合することにより、疎結合を形成して通信帯域幅を減少させ、そしてオンチップメモリにロードされた前記モジュールのすべての重みをすべての時間ステップで再使用可能になるステップを含む
請求項１に記載の方法。
【請求項７】
時間遅延に応じてモジュール間の結合を更新するステップをさらに含み、前記時間遅延によって、モジュール間の通信帯域幅および同期のうちの少なくとも一方を改善するためにニューロンが同期を実行しなければならない時間を増加する
請求項１に記載の方法。
【請求項８】
同一層において、
時系列入力を、独立した連続時間セグメントに分け、前記独立した連続時間セグメントが前記ＲＮＮの第１部分により処理され、各時間セグメントに対して中間結果を生成するステップと、
前記中間結果に対して前記ＲＮＮの第２部分を実行するステップと、
処理された中間結果を使用して入力データのサブセクションに対して前記ＲＮＮの第３部分を実行するステップと、をさらに含む
請求項１に記載の方法。
【請求項９】
第１のＲＮＮ層における高速モジュールの単一ニューロンを第２のＲＮＮ層における低速モジュールの単一ニューロンに結合するステップと、
各層における各モジュールを当該層におけるほかのモジュールに結合するステップと、
モジュール間の結合を経由して前記高速モジュールを前記低速モジュールに結合するステップと、をさらに含む
請求項１に記載の方法。
【請求項１０】
計算装置のプロセッサマイクロアーキテクチャ上で動作して前記計算装置の計算性能を向上させるように構成されるリカレントニューラルネットワーク（ＲＮＮ）アーキテクチャであって、
ニューロンと、
前記ニューロンを含むモジュールと、
モジュール間の双方向結合と、を備え、
前記モジュールは、ロジックユニットを表し、プロセッサマイクロアーキテクチャの階層構造のレベルに応じて配置され、そしてプロセッサを含む個別計算リソースの階層構造を模擬し、それにより階層構造の各レベルは、プロセッサメモリの少なくとも１つのレベルに関連付けられ、且つ第１のＲＮＮ層および第２のＲＮＮ層を含み、前記階層構造の各レベルは記憶容量、プロセッサコア数、メモリ帯域幅、計算帯域幅およびメモリ遅延のうちの少なくとも２つで記述され、
前記モジュール間の双方向結合によって、前記第１のＲＮＮ層と前記第２のＲＮＮ層とが通信でき、それにより、記憶容量、プロセッサコア数、帯域幅、計算帯域幅および遅延のうちの前記少なくとも２つに関連する前記ＲＮＮアーキテクチャの所定条件を満たす
ＲＮＮアーキテクチャ。
【請求項１１】
モジュール間の同期頻度と結合性の量が前記プロセッサのマルチバルク同期並列（ＭＢＳＰ）パラメータに基づいて設定され、それにより、ＲＮＮアーキテクチャが計算、通信および同期動作のうちの少なくとも２つを実行することに必要な時間をバランシングする
請求項１０に記載のＲＮＮアーキテクチャ。
【請求項１２】
階層構造の同一レベルにおいて、減少した速度で前記モジュール間の結合を更新してデータ交換の量を減少させることにより、モジュールの出力を低頻度で次のモジュールの入力として伝送する
請求項１１に記載のＲＮＮアーキテクチャ。
【請求項１３】
前記出力の伝送は所定数の時間ステップだけ遅延され、それによりモジュール間の結合は前記所定数の時間ステップで適用される
請求項１２に記載のＲＮＮアーキテクチャ。
【請求項１４】
連続時間セグメントにおけるモジュールが相互に通信しないことにより、時間ステップ間に伝送されたデータの頻度および量を減少させ、そして通信時間を減少させ、並列動作数を増加させる
請求項１１に記載のＲＮＮアーキテクチャ。
【請求項１５】
高速モジュールをさらに備え、前記高速モジュールの結合が低速モジュールの結合よりも頻繁に更新され、前記高速モジュールが並列動作し、前記低速モジュールを経由して相互に通信して高速モジュール間の通信を増加させる
請求項１０に記載のＲＮＮアーキテクチャ。
【請求項１６】
前記高速モジュールは、前記低速モジュールより内部の結合が密集されており、入力データの独立したサブセットを処理する
請求項１５に記載のＲＮＮアーキテクチャ。
【請求項１７】
前記高速モジュールと前記低速モジュールは、選択的に置換モジュールを経由して通信し、前記置換モジュールは、前記高速モジュールの計算出力の順序を再設定することにより、高速モジュールにおけるニューロンの出力を、低速モジュールにおけるニューロンの出力にマッピングし、そして２つの層におけるモジュール間の通信パターンを変更する
請求項１５に記載のＲＮＮアーキテクチャ。
【請求項１８】
１つの層における入力シーケンスから変換された出力シーケンスを別の層の入力シーケンスとして使用することにより、層をスタックして前記ＲＮＮアーキテクチャの階層を拡張して、相対的により複雑な関数にモデリングする
請求項１０に記載のＲＮＮアーキテクチャ。
【請求項１９】
プロセッサのマイクロアーキテクチャの記述を基礎とした、メモリレベルに関連付けられた値に基づき、ＲＮＮアーキテクチャの階層構造の最下位レベルから最上位レベルの各レベルを前記プロセッサのマイクロアーキテクチャに関連付け、当該各レベルを記憶容量、プロセッサコア数、帯域幅、計算帯域幅および遅延のうちの少なくとも２つで記述するステップと、
ニューロンを、前記ＲＮＮアーキテクチャのＲＮＮ層におけるロジックユニットをそれぞれ表すモジュールにグループ化するステップと、
前記モジュールがメモリ容量、プロセッサコア数、帯域幅、計算帯域幅および遅延のうちの前記少なくとも２つに関連する前記ＲＮＮアーキテクチャの所定条件を満たすように、前記モジュール間の結合を配置するステップと、を含む
計算装置のプロセッサのマイクロアーキテクチャ上でリカレントニューラルネットワーク（ＲＮＮ）アーキテクチャを動作させて前記計算装置の計算性能を向上させる方法。
【請求項２０】
前記結合を配置するステップには、前記所定条件をバランシングするためにモジュール間の双方向結合を削除するステップを含む
請求項１９に記載の方法。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
本願は、３５  Ｕ．Ｓ．Ｃ．  §１１９（ｅ）に基づき、２０１５年１２月１１日に提出された、発明者がグレゴリー・ディアモス（Ｇｒｅｇｏｒｙ  Ｄｉａｍｏｓ）、アワニー・アヌーン（Ａｗｎｉ  Ｈａｎｎｕｎ）、ブライアン・カタンツァーロ（Ｂｒｙａｎ  Ｃａｔａｎｚａｒｏ））、ダリオ・アモデイ（Ｄａｒｉｏ  Ａｍｏｄｅｉ）、エーリヒ・エルソン（Ｅｒｉｃｈ  Ｅｌｓｅｎ）、ジェシー・エンゲル（Ｊｅｓｓｅ  Ｅｎｇｅｌ）およびシュバブラタ・セングプタ（Ｓｈｕｂｈａｂｒａｔａ  Ｓｅｎｇｕｐｔａ）、名称が「マルチコア最適化リカレントニューラルネットワーク用のシステムおよび方法（Ｓｙｓｔｅｍｓ  ａｎｄ  Ｍｅｔｈｏｄｓ  ｆｏｒ  ａ  Ｍｕｌｔｉ−Ｃｏｒｅ  Ｏｐｔｉｍｉｚｅｄ  Ｒｅｃｕｒｒｅｎｔ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ）」という、同時係属中の本発明の譲受人に譲渡された米国特許出願第６２／２６６，５１５号の優先権を主張し、そのすべての内容を援用によって本明細書に組み込む。
【技術分野】
【０００２】
本発明は、コンピュータ処理に関し、より具体的には、同期および通信のコストを削減することにより、計算効率を向上させるシステム、装置、および方法に関する。
【背景技術】
【０００３】
リカレントニューラルネットワーク（ＲＮＮ）は、人工ニューラルネットワークの一種であり、所定の時間ステップにおけるユニットコレクションの出力が次の時間ステップにおける同一ユニットの入力にフィードされることにより、ネットワークに経時的な永続的記憶という概念を与えるものである。ＲＮＮの計算構造によって、時系列データの変換を要求するような、複雑なシーケンスツーシーケンスのマッピング問題を解決できるネットワークを形成する。例えば、音声認識へのアプリでは、記録されたオーディオ波形をアナログ領域から当該オーディオデータのテキスト表現にマッピングする変換が挙げられる。
【０００４】
しかしながら、ＣＭＯＳ技術の発展、およびＲＮＮアーキテクチャが小独立ブロック（ｓｍａｌｌ  ｉｎｄｅｐｅｎｄｅｎｔ  ｐｉｅｃｅ）で大タスクの複数の部分を同時に実行して並列性を利用する能力によって算術演算のスループットを増加させるが、従来のＲＮＮでは、依然として同期コストおよび通信コストの増加のような重大な欠点がある。
【０００５】
具体的には、コンピュータの基本的な物理的制約によって、ＲＮＮニューロンのオールツーオール（ａｌｌ−ｔｏ−ａｌｌ）結合は、比較的大量の通信帯域幅が要求されている。また、結合は、時系列における連続時間ステップで計算ユニット（ニューロン）間に確立される場合、高価な同期動作を実行せざるを得ない。ＲＮＮの各ユニットがすべての入力を読み取ってすべての出力に書き込むことにより、ユニットがコンピュータの処理ユニットにマッピングされる場合、データは、有限の時間に複数のコンピュータを通過しなければならない。しかしながら、このようなユニット間の通信は、連続時間ステップにおける結合の実行速度の低下、およびデータの伝送できる時間間隔の増加につながるため、実際にユニット間を移動するデータの量にかかわらず、通信遅延が発生してしまう。従って、１つのニューロンの出力から別のニューロンの入力までの通信間に経過する許容期間を増加させて既存の遅延（レイテンシ）要件を緩和させ、それにより、データ通信ステップ間に複数の時間ステップの発生を可能にすることが望まれている。
【０００６】
また、従来のＲＮＮアーキテクチャには、同期動作に起因する時間制約の問題以外、単一ユニットが最初の場所に位置するコンピュータを経由して相互に通信せざるを得ないという事実に根差している他の制約がある。このような通信は、コンピュータが所定期間内に隣接するニューロン間で通信可能な最大総データ量によって制約される。
【０００７】
一般的な設計方法は、主にＲＮＮのアルゴリズムプロパティ、例えば、長い時間スケールにおけるデータ記憶能力、または複数の時間スケールにおける信号処理能力を向上することに着目している。これらの方法は、通常、同期コストおよび計算コストの削減によるＲＮＮ計算効率の向上に言及されていない。
【０００８】
従って、現代の汎用プロセッサにマッピングする際に計算効率を向上させ、最終的に性能を向上させるために、簡単な全結合ＲＮＮで提供される正確なシリーズツーシリーズ変換を利用すると共に、ＲＮＮにより実行される同期量および通信量を減少させる構造と方法が望まれている。
【発明の概要】
【課題を解決するための手段】
【０００９】
前記プロセッサのマイクロアーキテクチャの記述に基づき、メモリのレベルに関連付けられた値を取得するステップと、ＲＮＮアーキテクチャの階層の最下位レベルから最上位レベルの各レベルを前記プロセッサのマイクロアーキテクチャに関連付けて、メモリ容量、プロセッサコア数、帯域幅、計算帯域幅および遅延のうちの少なくとも２つで記述するステップと、ニューロンを、前記ＲＮＮアーキテクチャのＲＮＮ層におけるロジックユニットをそれぞれ表すモジュールにグループ化するステップと、前記モジュールがメモリ容量、プロセッサコア数、帯域幅、計算帯域幅および遅延のうちの前記少なくとも２つに関連する前記ＲＮＮアーキテクチャの所定条件を満たすように、前記モジュール間の結合を配置するステップと、を含むリカレントニューラルネットワーク（ＲＮＮ）アーキテクチャを計算装置のプロセッサのマイクロアーキテクチャにマッピングすることにより前記計算装置の計算性能を向上させる方法。
【００１０】
計算装置のプロセッサマイクロアーキテクチャ上で動作して前記計算装置の計算性能を向上させるように構成されるリカレントニューラルネットワーク（ＲＮＮ）アーキテクチャであって、ニューロンと、前記ニューロンを含むモジュールと、モジュール間の双方向結合と、を備え、前記モジュールは、ロジックユニットを表し、プロセッサマイクロアーキテクチャの階層構造のレベルに応じて配置され、そしてプロセッサを含む個別計算リソースの階層構造を模擬し、それにより階層構造の各レベルは、プロセッサメモリの少なくとも１つのレベルに関連付けられ、且つ第１のＲＮＮ層および第２のＲＮＮ層を含み、前記階層構造の各レベルは記憶容量、プロセッサコア数、メモリ帯域幅、計算帯域幅およびメモリ遅延のうちの少なくとも２つで記述され、前記モジュール間の双方向結合によって、前記第１のＲＮＮ層と前記第２のＲＮＮ層とが通信でき、それにより、記憶容量、プロセッサコア数、帯域幅、計算帯域幅および遅延のうちの前記少なくとも２つに関連する前記ＲＮＮアーキテクチャの所定条件を満たすＲＮＮアーキテクチャ。
【００１１】
プロセッサのマイクロアーキテクチャの記述を基礎とした、メモリレベルに関連付けられた値に基づき、ＲＮＮアーキテクチャの階層構造の最下位レベルから最上位レベルの各レベルを前記プロセッサマイクロアーキテクチャに関連付け、記憶容量、プロセッサコア数、帯域幅、計算帯域幅および遅延のうちの少なくとも２つで記述するステップと、ニューロンを、前記ＲＮＮアーキテクチャのＲＮＮ層におけるロジックユニットをそれぞれ表すモジュールにグループ化するステップと、前記モジュールがメモリ容量、プロセッサコア数、帯域幅、計算帯域幅および遅延のうちの前記少なくとも２つに関連する前記ＲＮＮアーキテクチャの所定条件を満たすように、前記モジュール間の結合を配置するステップと、を含む計算装置のプロセッサのマイクロアーキテクチャ上でリカレントニューラルネットワーク（ＲＮＮ）アーキテクチャを動作させて前記計算装置の計算性能を向上させる方法。
【図面の簡単な説明】
【００１２】
図面に示される本発明の実施形態を参照する。これらの図面は、限定的なものではなく、例示的なものだけである。これらの実施形態を参照して本発明を概略的に説明したが、本発明はこれらの特定の実施形態に限定されるものではない。図面に示されている構成要素は、必ずしも一定の縮尺で描かれていない。
【００１３】
【図１】本発明の様々な実施形態に係る、計算効率の向上を図るためにＲＮＮを備えた計算システムの簡略ブロック図を示す。
【図２Ａ】一般的な全結合ベースラインＲＮＮ層のアーキテクチャを示す。
【図２Ｂ】時系列において高速モジュールおよび低速モジュールを使用した一般的なＲＮＮ層アーキテクチャにおけるモジュール間の結合性を示す。
【図２Ｃ】マルチバルク同期並列（ＭＢＳＰ）機械モデルの階層の単一レベルを示す。
【図２Ｄ】最下位レベルの階層ＭＢＳＰモジュールの例を示す。
【図３Ａ】本発明の様々な実施形態に係る、ＲＮＮの階層の第２のレベルにおける２つのＭＢＳＰモジュール間の相互結合性を示す。
【図３Ｂ】本発明の様々な実施形態に係る、例示的なプロセッサ用のＭＢＳＰ機械モデル階層を示す。
【図３Ｃ】本発明の様々な実施形態に係る、効率的なＲＮＮ層アーキテクチャを形成するプロセスのフローチャートを示す。
【図３Ｄ】本発明の様々な実施形態に係る、ＲＮＮの所定条件をバランシングするプロセスのフローチャートを示す。
【図４】本発明の様々な実施形態に係る、特定のプロセッサ上で実行されたＲＮＮのモジュールの階層のレベルの概念を示す。
【図５】本発明の様々な実施形態に係る、高速モジュールおよび低速モジュールに分割されたＲＮＮを示す。
【図６】本発明の様々な実施形態に係る結合性の並列プレフィックスパターンを示す。
【図７】本発明の様々な実施形態に係る、遅延および帯域幅要求を最小化するとともにグローバル通信を可能にする別の方法を示す。
【発明を実施するための形態】
【００１４】
以下、本発明をよく理解するために、その詳細を説明する。なお、当業者は、これらの詳細なしに本発明を実施できることが明らかである。当業者は、後述する本発明の実施形態を様々な方式、様々な手段で実行できると理解できる。当業者は、さらに、本発明の適用可能な他の分野としてもほかの変更、使用や実施形態のいずれも本発明の範囲に属すると理解できる。従って、後述する実施形態は、本発明の具体的な実施形態についての説明であり、本発明を明確化するためのものである。
【００１５】
本明細書では、「一実施形態」または「実施形態」は、実施形態を参照して説明される具体的な特徴、構造、特性または機能が本発明の少なくとも１つの実施形態に含まれることを表す。語句「一実施形態では」、「実施形態では」等は、本明細書の様々な場所に現れるが、必ずしも同一実施形態ではない。
【００１６】
また、図面に示される構成要素間、または方法ステップ間の結合は、直接に影響を受ける結合に限定されない。一方、本発明の教示を逸脱せずに、図面に示される構成要素間、または方法ステップ間の結合は、中間構成要素、または中間方法ステップを追加するように変更されてもよく、ほかの方式によって変更されてもよい。本明細書では、用語「アーキテクチャ」と「ネットワークアーキテクチャ」とは、ＲＮＮ層のニューロン間の結合性の特定パターンである。「グローバル通信」とは、遅延および帯域幅要求を最小化するとともに、ニューロンがネットワークにおけるすべてのほかのニューロンとを通信する能力である。
【００１７】
図１は、本発明の様々な実施形態に係る、計算効率の向上を図るためにＲＮＮを備えた計算システムの簡略ブロック図を示す。なお、システム１０００に対して示される機能は、情報処理システムの様々な実施形態をサポートできるが、情報処理システムは異なる形態で構成されてもよく、異なる構成要素を備えてもよいと理解できる。図１に示すように、システム１０００は、計算リソースを提供し、コンピュータを制御する中央処理ユニット（ＣＰＵ）１００１を備える。ＣＰＵ１００１は、マイクロプロセッサ等を備えてもよく、グラフィックプロセッサ（ＧＰＵ）１０１７および／または数学計算用の浮動小数点コプロセッサを備えてもよい。システム１０００は、ランダムアクセスメモリ（ＲＡＭ）、または読み出し専用メモリ（ＲＯＭ）のシステムメモリ１００２をさらに備えてもよい。
【００１８】
図１に示すように、複数のコントローラおよび周辺装置をさらに提供してもよい。入力コントローラ１００３は、様々な入力装置１００４へのインターフェースを示し、例えば、キーボード、マウスまたはスタイラスが挙げられる。スキャナ１００６と通信するスキャナコントローラ１００５をさらに備えてもよい。システム１０００は、記憶媒体（例えば、磁気テープや磁気ディスク）、または光学媒体（オペレーティングシステム、ユーティリティまたはアプリケーション用の命令のプログラムを記録することに用いられ、前記プログラムは、本発明の各態様を実施するプログラムの実施形態を含んでもよい）を含む１つまたは複数の記憶装置１００８に結合される記憶コントローラ１００７を備えてもよい。本発明では、記憶装置１００８は、さらに、処理されたデータまたは処理対象データを記憶することに用いられる。システム１０００は、表示装置１０１１にインターフェースを提供する表示コントローラ１００９をさらに備えてもよく、表示装置１０１１は、陰極線管（ＣＲＴ）ディスプレイ、薄膜トランジスタ（ＴＦＴ）ディスプレイ、またはほかのタイプのディスプレイであってもよい。計算システム１０００は、プリンター１０１３と通信するプリンターコントローラ１０１２をさらに備えてもよい。通信コントローラ１０１４が１つまたは複数の通信装置１０１５に結合可能であることにより、システム１０００は、様々なネットワーク（インターネット、イーサネット（登録商標）クラウド、ＦＣｏＥ／ＤＣＢクラウド、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、ストレージエリアネットワーク（ＳＡＮ））のうちのいずれかのネットワーク、または任意の適切な電磁搬送波信号（赤外線信号を含む））を介して遠隔装置に結合される。
【００１９】
例示されたシステムでは、すべての主要な構成要素は、１つ以上の物理バスを示すバス１０１６に結合されてもよい。しかしながら、各種のシステム構成要素は、物理的に相互に近接してもよく、近接しなくてもよい。例えば、入力データおよび／または出力データは、１つの物理位置から別の物理位置へ遠隔に伝送されてもよい。また、発明の様々な態様を実施するプログラムは、ネットワークを介して遠隔位置（例えば、サーバ）からアクセスされてもよい。このようなデータおよび／またはプログラムは、複数種の機械可読媒体のいずれかによって伝送されてもよく、機械可読媒体は、ハードディスク、フロッピーディスクおよびテープのような磁気媒体と、ＣＤ−ＲＯＭ、ホログラフィック装置のような光学媒体と、磁気光学媒体と、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、フラッシュメモリ装置、ＲＯＭおよびＲＡＭ装置のようなプログラムコードを記憶したり、記憶して実行したりするように具体的に配置されるハードウェア装置とを備えるが、それらに限定されない。
【００２０】
本発明の実施形態は、１つまたは複数のプロセッサまたは処理ユニットにステップを実行させる命令を使用して１つまたは複数の非一時的なコンピュータ可読媒体でコーディングしてもよい。なお、当該１つまたは複数の非一時的なコンピュータ可読媒体は、揮発性メモリおよび不揮発性メモリを備えるべきである。なお、ハードウェアの実施形態またはソフトウェア／ハードウェアの実施形態を含む代替的な実施形態も可能である。ハードウェアで実施される機能は、ＡＳＩＣ、プログラマブルアレイ、デジタル信号処理回路等で実現されてもよい。従って、いずれかの請求項における用語「手段」は、ソフトウェアの実施形態とハードウェアの実施形態との両方を含むことを意味する。同様に、本明細書で使用される用語「コンピュータ可読媒体またはメディア」は、命令プログラムを実施するソフトウェアおよび／またはハードウェアあるいはそれらの組み合わせを含む。これらの想到された代替的な実施形態を利用して、図面およびその説明によって、当業者がプログラムコード（すなわち、ソフトウェア）を作成しおよび／または回路（すなわち、ハードウェア）を製造して必要な処理を実行することに必要な機能情報を提供すると理解すべきである。
【００２１】
なお、本発明の実施形態は、さらに、各種のコンピュータが実施する動作を実行するためのコンピュータコードを有する非一時的な物理的コンピュータ可読媒体を有するコンピュータ製品に関してもよい。媒体およびコンピュータコードは、本発明の目的のために専門に設計して構成される媒体およびコンピュータコードであってもよく、当業者が公知または使用可能な媒体およびコンピュータコードであってもよい。物理的コンピュータ可読媒体の例は、ハードディスク、フロッピーディスクおよびテープのような磁気媒体と、ＣＤ−ＲＯＭ、ホログラフィック装置のような光学媒体と、磁気光学媒体と、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、フラッシュメモリ装置、ＲＯＭおよびＲＡＭ装置のようなプログラムコードを記憶したり記憶して実行したりするように具体的に配置されるハードウェア装置とを備えるが、それらに限定されない。コンピュータコードの例は、マシンコード（例えばコンパイラで生じたコード）およびコンピュータがインタプリタで実行可能なさらに高いレベルのコードを含むファイルを含有する。本発明の実施形態は、処理装置が実行するプログラムモジュールにおける機械実行可能命令として部分的に、または完全に実施されてもよい。プログラムモジュールの例は、ベース、プログラム、ルーチン、オブジェクト、構成要素およびデータ構造を含む。分散型コンピューティング環境において、プログラムモジュールは、ローカル、遠隔または両方の機器に物理的に位置してもよい。
【００２２】
当業者は、計算システムもプログラミング言語も本発明の実施に対して重要ではないと理解できる。当業者は、さらに、複数の上記構成要素が物理的に、および／または機能的にサブモジュールに分割されてもよく、物理的および／または機能的に組み合わせられてもよいと理解できる。
【００２３】
人工ニューラルネットワークにおけるニューロンは、Ｎ次元入力列ベクトルｘを処理し、関数ｆ（ＷＴ  ｘ）を出力する計算ユニットである（式中、ＷはＮ次元入力行ベクトルであり、ｆ（実際範囲および定義域の関数）は活性化関数と呼ばれる）。一般的な活性化関数としてｓｉｇｍｏｉｄ関数、補正線形関数、およびｔａｎｈ関数が挙げられる。ニューラルネットワークは、複数の「ニューロン」を含むことにより、所定の「ニューロン」の入力がネットワークへの入力であってもよく、別のニューロンの出力であってもよい。ニューロン間の結合性の特定パターンは、当該ネットワークの「アーキテクチャ」と呼ばれる。
【００２４】
ネットワークアーキテクチャとして全結合層のスタックが一般的に使用されている。全結合層は、Ｎ個の入力値を受信し、Ｎ個の入力値のそれぞれが全結合層のＭ個のニューロンのそれぞれに直接結合され、各ニューロンに対して１つずつＭ個の出力値を生成する。
【００２５】
ソフトウェアで実施される場合、およびプロセッサで実行される場合、これらのニューラルネットワークアーキテクチャは、常に各層に対する浮動小数点数の二次元行列（重み行列、またはＷと呼ばれる）で表され、ここで、一方の次元は層におけるニューロンを表し、他方の次元は当該層への入力を表す。次に、ネットワークの入力と出力は、密な一次元ベクトル（ｄｅｎｓｅ  ｓｉｎｇｌｅ−ｄｉｍｅｎｓｉｏｎａｌ  ｖｅｃｔｏｒ）で表される。それにより、ネットワークは、一連の行列−ベクトル積として評価でき、各層あたりに１つであり、次に各層に活性化関数を応用する。行列−ベクトルおよび行列−行列積演算を提供する、高度にチューニングされた密線形代数ライブラリがほとんどの汎用プロセッサに容易に適用できるため、この方法の実現方式は簡単で効果的である。
【００２６】
当該演算を現代の汎用プロセッサにマッピングする際の主要コストは、各層に重み行列Ｗをロードすることである。それは、現代の汎用プロセッサが記憶帯域幅より高い演算帯域幅を有するからである。当該コストは、複数のネットワーク入力に割り当てられ、通常、「バッチング」と呼ばれる。バッチングによって複数の入力ベクトルをより大きな行列に効率的にパッケージすることにより、行列−ベクトル積ではなく、行列−行列積を使用してネットワークを評価することが可能になる。十分なバッチサイズを確保するために、当該演算は、プロセッサの記憶帯域幅ではなく、その浮動小数点演算帯域幅の制約を受ける可能性がある。
【００２７】
全結合層を有するリカレントニューラルネットワークは、正常全結合層を開始とし、現在の時間ステップにおける各ニューロンの出力から次の時間ステップにおけるすべてのほかのニューロンへの追加結合を使用してこれらの正常全結合層を強化する。
【００２８】
単一入力シーケンスｘと対応する出力シーケンスｙに、訓練集合Ｘ＝｛（ｘ（１）；ｙ（１））；（ｘ（２）；ｙ（２））、．．．｝からサンプリングされると仮定する。各入力シーケンスｘ（ｉ）は長さＴ（ｉ）の時系列であり、その中で、各タイムスライスは専用特徴（例えば、オーディオサンプル）のベクトルであり、ｘ（ｉ）ｔ、ｔ＝０、．．．、Ｔ（ｉ）−１である。
【００２９】
フォワード・イン・タイム（ｆｏｒｗａｒｄ−ｉｎ−ｔｉｍｅ）ｈｌリカレント層活性化は、
【数１】
0006348561.tif 000002
として計算され、
関数ｆは、
【数２】
0006348561.tif 000003
として標準リカレント演算されてもよい。
ただし、Ｗｌは入力非表示重み行列、Ｕｌはリカレント重み行列、ｂｌはバイアス項である。
【００３０】
ＲＮＮの実現方式は、通常、時間ステップごとに、計算を２つの段階に分ける。第１の段階（Ｗｌｈｌ−１ｔ）において、各時間ステップにおける各ニューロンの出力への貢献は、当該時間ステップにおけるニューロン入力を使用して計算される。フィードフォワード（ｆｅｅｄ−ｆｏｒｗａｒｄ）ネットワークのように、第１の段階では、層におけるすべてのニューロンの入力重みを密な二次元行列として表し、各時間ステップにおける層への入力を一次元密ベクトルとして表す。一般的な最適化は、時間次元を展開し、複数の一次元入力ベクトルとともにパッケージして単一二次元行列とすることである。重み行列がすべての時間ステップで共有されるため、実現可能である。
【００３１】
第２の段階（Ｕｌｈｌｔ−１）において、所定の時間ステップにおける層ニューロンの出力と次の時間ステップにおける層ニューロンの入力との結合は、二次元行列で表われ、リカレント重み行列と呼ばれる。この場合に、次の時間ステップの出力が現在の時間ステップの出力に決められるため、各時間ステップの順序に応じて処理し、従って行列−ベクトル積を使用して当該演算を実行し、次に活性化関数を応用することとする。
【００３２】
図２Ａは一般的な全結合ベースラインＲＮＮ層アーキテクチャを示す。１１８〜１２４と記すブロックは、入力データの集合を含むベクトルを表し、入力データとして、特定時間に測定した電気信号、例えば、時間ｔ＝０秒の時にサンプリングしたオーディオ波形信号の振幅データが挙げられる。各ベクトル１１８〜１２４は、個別値１１６を含み、入力時系列１０２中の各ベクトル１１８〜１２４をサンプリング時間に関連付ける時間スケールに配置される。なお、サンプル間の時間間隔が等しくなくてもよく、ベクトル中の値が変換値に等しくてもよい。
【００３３】
入力ベクトル１１８〜１２４と同様に、出力ベクトル１３６〜１３８中のデータは出力時系列１０４中に配置される。出力ベクトル１３６〜１３８は複数のサンプルの出力データの集合を含む。出力ベクトル１３６中の各個別値１３４は、入力データベクトル１１８〜１２４からの少なくとも１つの入力値に関連付けられた文字に対応する。各文字１３４は、測定されたオーディオ信号から取得された値１１６に対応付けられた予測値を表す。例えば、ベクトル１３６中の値１３４は例えば文字「ｂ」を表してもよい。各文字は、確率として解釈される値、例えば０．２が割り当てられてもよい。ここで、ＲＮＮ  １５０は、出力ベクトル１３６に関連付けられた時間ステップで出力された文字のうちの一つの文字が確率２０％で文字「ｂ」であると予測する。
【００３４】
中間層１０６における計算は、変換を許容する線形および非線形ネットワーク構成要素の機能構造によって実行されてもよい。線形変換は行列１０８で表され、行列１０８はさらに層１０６中の等価図形を表す。例えば、図２Ａに示される行列１０８は行列の形態でネットワークパラメータを記憶し、行列１０８中の行は単一ニューロンを表し、列は単一ニューロンを出入りする結合を表す。層１０６および１０８のそれぞれの機能を時間ステップごとに繰り返して、ＲＮＮ  １００全体を定義する。
【００３５】
図２Ａに示される中間層１０６は、入力値１４５を含むモジュール１４０、非線形変換モジュール１４８および線形変換モジュール１５２（例えば、加算モジュール）を備える。モジュール１４０は、入力値１４５に結合され且つ線形および／または非線形変換を許容する出力値１４６を生成する単一ニューロン１４２のサブグループを含む。
【００３６】
動作の際には、ＲＮＮ  １５０におけるすべてのニューロンが相互に通信する。ニューロン１４２に結合される１つまたは複数の入力値１４５が出力値１４６を生成し、特定の点１５６でニューロン１４２自体に結合してもよい。それは、ニューロン１４２はそれ自体に戻るループを有してもよいからである。当該ループは要素１４２〜１５６を含む。実施形態では、加算要素１５２により加算した後、ニューロン１４２がＲＮＮ  １５０におけるすべてのほかのニューロンに結合される。出力は、さらに後続の時間ステップの入力シーケンス１０２中のベクトル１２０に対応付けられたベクトル１２０の出力と加算する。同期動作では、後続の時間ステップでは、ニューロン１４３の出力はニューロン１４２に使用される。
【００３７】
なお、第２の段階において、計算コストは最も高い。リカレント重み行列は、各時間ステップを再使用しても、時間ステップ間のシーケンシャル依存性が時間ステップ間の明確な同期に関わり、且つ行列が大きすぎてオンチップメモリにマッチングしにくい場合、各時間ステップでメモリからリカレント重み行列をリロードする。
【００３８】
マルチバルク同期並列（ＭＢＳＰ）抽象機械モデルは、プロセッサの特性を記述するための高レベルの性能モデルであり、限られた記憶容量および計算リソースを有する複数のプロセッサコアの物理的実体およびプロセッサコア数につれて増加する通信コストおよび同期コストを配慮する。これらのコストは、プロセッサコアの物理的特性およびプロセッサコア間の物理的距離に由来するものである。
【００３９】
ＭＢＳＰモデルは任意数のレベルに適応する階層モデルである。各レベルにおいて、モデルは、オンチップメモリ容量とキャッシュ容量の点からプロセッサコア集合を説明する。具体的には、記憶量の物理的な限界は、固定量の時間内に物理的プロセッサコアから取得でき、各コア用のメモリの物理領域と、より多くのコア間の基本的なトレードオフにより、メモリ階層への要求を形成する。ＭＢＳＰモデル中の階層における各レベルは、１）サブ構成要素／コアの数、２）通信帯域幅、３）同期コスト、および４）キャッシュ／メモリサイズの４つのパラメータで記述される。
【００４０】
特定問題用の最適ＭＢＳＰアルゴリズムは、ｉ）並列計算動作、ｉｉ）並列通信コスト、およびｉｉｉ）定数乗算因子への同期コストの点においても最適である。計算上で密行列乗算に等価し、且つＭＢＳＯ最適アルゴリズムを密行列乗算に直接適用できるため、ＭＢＳＰモデルをＲＮＮの第１の段階に直接適用できる。しかしながら、第２の段階では難しくなる。一連の行列−ベクトル乗算を使用した直接アルゴリズムは、並列計算動作に対して最適である。しかしながら、リカレント重み行列がＭＢＳＰ階層の特定レベルでメモリにマッチングしないと、計算コストを影響する通信動作によって階層の下位レベルからアクセスしなければならない。同様に、時間ステップ間のシーケンシャル依存性と、ニューロン間のオールツーオール結合性との共同作用で、各時間ステップ間、すべてのプロセッサ間でグローバル同期動作を行う。通信コストが計算コストより８０倍程度高くグローバル同期コストが計算コストより６百万倍程度高い現代のプロセッサは、通信コストまたは同期コストが主要コストであり、プロセッサの利用可能な計算リソースがほとんど十分に利用されていないと予測できる。現代のプロセッサ（例えば、図１に示されるＣＰＵまたはＧＰＵ）では、通信動作と同期動作のスループットが算術演算のスループットよりほぼ低いため、頻繁な通信ステップとオールツーオールの同期ステップによって効率が大幅に低下してしまう。
【００４１】
データ集合の増大に伴う層サイズの継続的な増加につれて、時間ステップ間のシーケンシャル依存性によって層が次の時間ステップに移動する前、時間ステップ全体を評価することが求められるため、大型ネットワークはロード重みのコストを分散させることが不能になる。また、オンチップメモリ、特に最も高速で最も効率的なもの（例えば、Ｌ１キャッシュやレジスタ）は、通常、サイズが不十分であるため、すべての層を完全に記憶できない。
【００４２】
また、複数のサンプル計算に対する更新（「小型バッチ」と呼ばれる）（データ集合全体を使用したバッチング方法と単一サンプルを使用した純粋なランダム方法と反対である）は、以下の方式によって通信問題のうちのいくつかを緩和する。複数の入力ベクトルを組み合わせてより大きな行列を形成し、行列−ベクトル乗算ではなく行列−行列積を使用してＲＮＮ  １５０を評価し、異なる時間ステップに対応する複数の入力データ要素に同数の重みを再使用する。しかしながら、この方法の主要な欠点の１つは、処理されたすべての異なるサンプル、およびそれらの中間計算段階をバッチサイズに等しい因子で記憶しなければならないことにより、現代のプロセッサで高効率を実現するには大きなバッチサイズ（例えば、１２８〜２５６）を要求するため、ＲＮＮ  １００を評価するメモリ要求が大幅に増加してしまうことである。もう１つの主要な欠陥は、ＲＮＮ  １００訓練のみに有用であり、訓練終了後、使用しないことである。また、小型バッチ方法は、更新速度ではなく、各回の更新作業量のみを増加させるため、モデル訓練時間を改善できない。
【００４３】
一言すれば、ＲＮＮに要求されるオールツーオール結合性によって、それらを評価することに必要な帯域幅および遅延が増加されてしまう。従って、公知のＲＮＮ設計固有の同期遅延および帯域幅の制限を受けずに、ＲＮＮアーキテクチャがシーケンス−シーケンス変換を提供できる方法および構造が望まれている。
【００４４】
図２Ｂは、時系列において高速モジュールおよび低速モジュールを使用した一般的なＲＮＮ層アーキテクチャにおけるモジュール間の結合性を示す。図２Ａのベースラインネットワーク１５０に示すように、図２Ｂのネットワーク２００は、単一ニューロンを含むモジュールの概念を使用する。ネットワーク２００は、高速モジュール２５４〜２６０の単一層２５２および低速モジュール２０４〜２０６の２つ以上の層２０２を含む。動作の際には、それぞれ適切な結合２２０および２７０を介して、ネットワーク２００の高速モジュール２５４〜２６０が相互に通信し、低速モジュール２０４〜２０６が相互に通信する。高速層２５２中の高速モジュール２５４〜２６０と低速層２０２中の低速モジュール２０４〜２０６との通信が頻繁ではない。また、このような通信は、低速層２０２から高速層２５２への単方向通信２２２のみに限られる。換言すれば、高速層２５２中の高速モジュール２５４〜２６０は、低速層２０２中の低速モジュール２０４〜２０６にフィードされない。
【００４５】
なお、前記設計は、ネットワーク２００が複数の解像度で信号を処理できることを主な目的とする。この目的は、ネットワーク２００の構造における通信モデルのタイプ、例えば全結合モデル（例えば、図２Ａに示されるベースラインモデル）が特定タイプの関数によりよく類似することに基づいたものである。オーディオ応用では、例えば、入力オーディオデータの周波数成分が通常異なる速度で変化し高速に変化した成分と低速に変化した成分を生成する場合、ネットワーク２００のマッピング関数のほうは、当該関数によりモデリングされる下位層サンプリングプロセスを自然に模擬できる可能性がある。
【００４６】
図２Ｃはマルチバルク同期並列（ＭＢＳＰ）機械モデルの階層の単一レベルにおけるモジュールを示す。図２Ｄは６つの時間ステップにわたって展開した最下位レベルの階層ＭＢＳＰモジュールの例を示す。各モジュールは４つのニューロンを含む。
【００４７】
図２Ｃでは、モジュール２８２における階層のレベルは、関連付けられた遅延および帯域幅を有するメモリ、および６つのサブレベルを含む。最後のサブレベルは図２Ｃの右側に拡大図で示される。各モジュール２８２はＭ（ｍ，ｎ）（ｍは階層のレベル（最下位から最上位）であり、ｎは階層の特定レベルにおけるモジュールのインデクス番号である）で表される。モジュール２８２は人工ニューラルネットワークユニットの全結合集合を含む。ユニットは簡単な線形閾値ユニットであってもよく、さらに複雑なユニット、例えば、長期短期記憶（ＬＳＴＭ）ユニットまたは閾値リカレントユニット（ＧＲＵ）であってもよい。
【００４８】
本発明の実施形態に係るＭＢＳＰ−ＲＮＮは、モジュールの階層を含んでもよい。階層の最下位レベルにおいて、ＭＢＳＰ−ＲＮＮモジュールは簡単なＲＮＮ層であってもよい。階層のすべてのほかのレベルにおいて、モジュールは、ＭＢＳＰ−ＲＮＮ層の例として再帰的に定義される。図３Ａは本発明の複数の実施形態に係る、ＲＮＮ階層の第２のレベルにおける２つのＭＢＳＰモジュール間の相互結合性を示す。ネットワーク３００は単一ニューロン３０３を含み、単一ニューロン３０３は戦略的にグループ化され且つサブグループまたはロジックモジュール（例えば、３０４）では結合され、データはサブグループまたはロジックモジュールに分割される。実施形態では、ネットワーク３００は、高速モジュールや遠隔モジュール（例えば、３１０〜３１２）の１つまたは複数の層３５２、および低速モジュールやローカルモジュール（例えば、３０４〜３０８）の１つまたは複数の層３０２を含む。実施形態では、層３０２における各モジュールが層３０２におけるすべてのほかのモジュールに結合される。同様に、実施形態では、層３５２における各モジュールが層３５２におけるすべてのほかのモジュールに結合される。また、任意数のモジュールは、モジュール間の結合を示す結合３３０を介して通信できるように結合されてもよい。
【００４９】
動作の際には、階層の特定レベルにおいて、モジュールが疎に結合され、低頻度で更新され、時間遅延につれて更新するようにしてもよい。実施形態では、疎結合３３２は、所定モジュールの出力をほかのモジュールの入力のみに結合するサブセットとして設計される。例えば、階層の特定レベルが４つのモジュールを含むと、各モジュールが、すべてのほかのモジュールではなく、その２つの最も近い隣接モジュールに結合される。疎結合によって、モジュールに要求される通信帯域幅を低減させる。モジュールに記憶される重み数を減少させることにより、モジュールのオンチップメモリの要求を低減させるようにしてもよい。
【００５０】
実施形態では、ネットワーク３００は３である時間遅延（ｔｄ）を有し、モジュール間の結合３３０が前へ３つの時間ステップにスキップすることを意味する。時間遅延の結合が各時間ステップでデータを送信するが、前記データが別の複数の時間ステップ内に宛先に到達する必要がない。換言すれば、出力が次のモジュールの入力に到達する前に、Ｄ個の時間ステップだけ遅延する。この時間遅延によってニューロンの同期実行時間が長くなり、時間遅延結合に沿った同期総数を減少させる。
【００５１】
実施形態では、ＭＢＳＰ−ＲＮＮの第１のレベル用の活性化は、階層のＭ個のレベルおよび各レベルのＮ個のモジュールで式（３）として表現されてもよい。
【数３】
0006348561.tif 000004
ただし、Ｗｌｈｌ−１ｔ，ｎ＋ｂｌｎは、前の層からの正常フィードフォワード貢献であり、Ｕｌ０，ｎ，ｎｈｌｔ−１，Ｍ−１，ｎは、単一モジュールの貢献であり、当該モジュール自体の前の時間ステップからの出力のみを入力として使用する。
【００５２】
階層の各連続レベルの活性化への貢献は、式（４）として表現される。
【数４】
0006348561.tif 000005
ただし、ｈｌｔ，ｍ−１，ｎは、式３からの貢献であり、残りの項目は、階層の当該レベルにおけるほかのモジュールの貢献の和である。ｓｕｍ，ｎ，ｊ（ｔ，ｘ）は、一対のモジュール間の結合性であり、ｓｕｍ，ｎ，ｊ（ｔ，ｘ）は、低速更新結合用の選択関数
【数５】
0006348561.tif 000006
であり、
なお、Ｕｌｍ，ｎ，ｊにおけるいくつかの項目は、モジュールｎとｊの疎の結合性を実現するために、ゼロに強制的に設定される。
【００５３】
階層の最上位レベルにおける各モジュールの完全活性化は、式（５）として表現されてもよい。
【数６】
0006348561.tif 000007
最後、階層の最上位レベルにおける各モジュールの連結のすべての層の完全活性化は、
【数７】
0006348561.tif 000008
として表現される。
【００５４】
図３ＡにおけるＲＮＮ  ３００は、２である低速更新因子を有することにより、モジュール間の結合３７０が一時間ステップのみおきに適用される。関数Ｓ（ｘ）３７２は、疎なモジュール間結合性を表し、例えば、遠隔モジュール３５２におけるニューロン３１１の出力がローカルモジュール３０２におけるニューロンのサブセットのみに結合される。低速更新結合は正常結合低より低い頻度でサンプリングする。低速更新は疎な結合性（結合を完全に省略する）と各時間ステップ後に更新した規則的結合との折衷と見なすことができる。
【００５５】
実施形態では、入力シーケンスから変換した出力シーケンスは、次の層（図示せず）の入力シーケンスとして使用する。このように、任意数の層をスタックして階層のステージまたはレベルのスタックを生成することができ、それにより、ＲＮＮ  ３００は、さらに複雑な関数にモデリングすることができる。サブグループ３０４内（例えば、階層の最下位層の位置に位置する）のニューロン３０３は、規則的な層におけるニューロンと同様な機能を実行できる。
【００５６】
なお、図３Ａに示されるＲＮＮ  ３００の要素の数とサイズ（例えば、ニューロンの数、結合、および結合間の時間ステップ）は、パラメータであり、限定的なものではないと理解できるだろう。任意数の要素をＲＮＮ  ３００に追加したり、ＲＮＮ  ３００から削除したりすることができ、例えば、動作前および動作期間にネットワークサイズを変更する。また、非線形機能の異なる組合せは異なるタイプの応用に適用できる。
【００５７】
実施形態では、通信の間隔時間が増加し通信データ量が減少するという特性を維持するとともに、２つ以上のモジュールは、階層のさらに高いレベルに関連付けられた、個別モジュール３０４のユニットより大きいユニットを形成することができる。実際に、ＲＮＮ  ３００はプロセッサを構成する個別計算リソースの構造を模擬することが求められる。
【００５８】
実施形態では、ＲＮＮ  ３００はターゲットプロセッサまたはプロセッサファミリーで実行されるように設計される。ターゲットプロセッサに対して、実施形態では、ＲＮＮ  ３００は、パラメータ（サブモジュールまたはプロセッサコア、通信帯域幅、同期コスト、およびキャッシュ／メモリ容量）セットリストが設定され、各パラメータセットは、図２Ｃと類似するプロセッサメモリ階層のレベルを表す。しかしながら、任意数のレベルまたはサブレベルを選択できると理解できるだろう。プロセッサについての当該説明によれば、実施形態では、階層の最下位レベルを開始とし最上位レベルまで動作する場合、単一ニューロンの集合がロジックモジュールに分けられ、以下の制約のうちの１つまたは複数を満たすようにモジュール間の結合を削除する。
【００５９】
・所定モジュールに対して選択したニューロンを表すパラメータはメモリ階層の当該レベルのキャッシュ／メモリ容量に完全に適合し、例えば、キャッシュ／メモリ容量がモジュールサイズを決定する。
【００６０】
・モジュール内の結合とモジュール間の結合を実行することに必要な通信コストは、評価モジュールのニューロンの計算コストにほぼ等しい。帯域幅が結合数を決定することによりモジュール間の結合数を減少させる。単一ニューロンは、モジュールの最下位層と見なすことができる。
【００６１】
・モジュール間の結合を実行することに必要な同期コストは、評価モジュールのニューロンの計算コストにほぼ等しい。
【００６２】
遅延は、データがモジュール間の結合を介して送信される時間に対する、データが受信される時間の遅延量として定義できる。モジュール間の結合を介した通信データの時間遅延を増加させることにより、所要の同期動作数を減少させることができる。ローカル通信は各時間ステップで行われるが、グローバル通信は遅延して行われてもよい。これらの変更によりＲＮＮの計算、通信、同期およびメモリ容量要求をバランシングし、あるリソースに顕著な支障が生じることがなく、それにより帯域幅を向上させ、あまり厳しくない遅延要求を実現できる。
【００６３】
実施形態では、複数の時間ステップにＭＢＳＰ−ＲＮＮ重みパラメータを再使用することにより制約をバランシングすることにより、オフチップメモリ（例えば、ＤＲＡＭ）から重みを繰り返してロードすることを回避し、同期およびオフチップメモリのアクセスを減少させ、浮動小数点演算に比べて、コストが遥かに高い。なお、実際の実現方式では、要求量の重み再使用を実現するように２つ以上の戦略を組み合わせてもよく、計算動作と通信動作との間でＲＮＮの評価のバランスを実現する。
【００６４】
実施形態では、各時間ステップにおいて、対応する結合を介して、高速モジュール（例えば、ＲＮＮ  ３００の３１０〜３１２）のすべての結合が相互に通信し、且つ低速モジュール（例えば、３０４〜３０８）のすべての結合が相互に通信する。実施形態では、高速層３５２の高速モジュール（例えば、３１０〜３１２）と低速層３０２の低速モジュール（例えば、３０４〜３０８）とのモジュール間の通信３３０が頻繁ではないため、データ交換が減少する。
【００６５】
なお、モジュール間の通信３３０は、単方向通信に限定されるものではなく、各層３０２、３５２間の双方向通信も可能である。実施形態では、階層の最下位レベルにおいて、モジュール（例えば、３０４〜３１２）が単一ＲＮＮ層を形成し、各モジュール３０４〜３１２が人工ニューラルネットワークユニットの全結合集合を含む。ユニットは簡単線形閾値ユニットであってもよく、さらに複雑なユニット、例えば、ＬＳＴＭユニットまたはＧＲＵであってもよい。実施形態では、階層のすべてのほかのレベルにおいて、モジュールは簡単ＲＮＮ層の例として再帰的に定義できる。実施形態では、階層の特定レベルにおいて、モジュール（例えば、３０４〜３１２）は、疎に結合され、低頻度で更新され、時間遅延につれて更新する。
【００６６】
実施形態では、階層の特定レベル内におけるモジュール（例えば、モジュール３１０）の出力は、すべてのほかのモジュールではなくほかのモジュール（ここで、３１０および３０８）の入力のサブセットのみに結合される。従って、疎結合を形成することにより、所要の通信帯域幅を減少させる。また、いくつかの結合を完全に省略することにより、疎結合性がモジュールに記憶される必要のある重み数を減少してモジュール３０４〜３１２に要求されるオンチップメモリを減少させる。実施形態では、ＲＮＮ  ３００は、各時間ステップ後に更新した正常ＲＮＮ結合より低い頻度でサンプリングできる低速更新結合（例えば、３２０〜３２２）を含む。
【００６７】
図６を参照してより詳細に説明するように、特定の実施形態では、階層の特定レベルにおいて、モジュールの次の時間ステップにおけるほかのモジュールの入力に出力されない。代替的には、出力が低頻度で送信され（Ｐ個の時間ステップごとに１回）、次のモジュールの入力に到達する前にＤ個の時間ステップだけ遅延する。モジュール間の時間遅延の結合性によって、モジュール間の同期動作と将来の時間ステップにおける計算とのオーバーラップを許容する。
【００６８】
実施形態では、単一グローバルバリア多層構造がマルチレベルの後に位置しているが、ＲＮＮサイズは、当該モジュールのすべての重みがオンチップメモリ（例えば、レジスタ、Ｌ２キャッシュやＬ３キャッシュ）に適合するように設定される。それにより、重みが１回のみロードされ、次にすべての時間ステップに再使用される。実施形態では、各時間ステップの後、プロセッサコアにおけるすべての交換出力が活性化して同期する。モジュール数、モジュール間の結合性の量および同期の頻度はプロセッサのＭＢＳＰパラメータに応じて設定できる。従って、ＭＢＳＰ−ＲＮＮが計算動作、通信動作および同期動作を実行することに必要な時間がほぼバランシングされる。このアーキテクチャは所定層で最大パラメータ数の制約が存在するが、実施形態では、複数の層をスタックしてさらに大きなネットワークを形成することにより、制約が克服される。層を垂直または水平にスタックすることにより、ネットワーク深さおよびパラメータ数をトレードオフする。
【００６９】
実施形態では、疎な時間遅延のＭＢＳＰ−ＲＮＮアーキテクチャは、相対的に完全な階層を使用して単一層における任意数のパラメータをサポートする。このアーキテクチャは、図３Ａに示されるアーキテクチャと類似する。実施形態では、階層の第１のレベル（例えば、最下位レベル）は、ＲＮＮモジュールをプロセッサコア（例えば、スレッド）に直接マッチングし、後続のレベルをメモリ階層のほかのレベル（例えば、レジスタ、Ｌ２キャッシュ、Ｌ３キャッシュ、ＤＲＡＭ、分散型共有メモリ等）にマッチングし、オンチップメモリのすべてのレベルが対応するメモリ要素にマッチングするまで繰り返し、それによりすべてのネットワークパラメータを記憶できる。実施形態では、メモリレベルは別のプロセッサ（例えば、オフチッププロセッサ）を含むように拡張してもよく、前記別のプロセッサは相互に通信でき、および／または異なる特性を有する異なるタイプのメモリ（例えば、ディスク）と通信できる。
【００７０】
実施形態では、フィードフォワード層ＲＮＮアーキテクチャにより分けられたＭＢＳＰは２つの層を含む。第１の層は複数の並列モジュール、例えば図２Ｄに示すモジュールを含む。各モジュールは層入力の（必ずしも互いに素ではない）サブセットで動作してもよい。モジュールはターゲットプロセッサ用のＭＢＳＰ階層に基づきそれらの隣接するモジュールと通信することにより、動作に限界があることを維持する。実施形態では、第１の層用のすべての重みがオンチップメモリに適合する必要がないため、当該層におけるパラメータ数を制限しない。しかしながら、多くのパラメータを有するネットワークは少ないパラメータを有するネットワークより低頻度のモジュール間の通信を実行する可能性がある。実施形態では、第２の層は純粋なフィードフォワード層であり、第１の層で実行された変換の逆変換に対応する、第１のＭＢＳＰ−ＲＮＮ層からのモジュールのサブセットの出力を処理し、例えば、異なるサイズまたは次元を有する中間表現を生成し、逆変換処理によって第１の層の元のフォーマットを生成する。明らかなように、第１の層におけるモジュールは、入力されたサブセットを処理し、第２の層は第１の層で強力に結合していないモジュールの結果を組み合わせる。
【００７１】
なお、本明細書の開示するモジュール間の結合をグループ化し削除する戦略は、再帰的に応用でき（例えば、プロセッサの１つのセクションにマッピングするＲＮＮのパーティションに応用し、さらにプロセッサの１つのサブセクションにマッピングするＲＮＮのサブパーティションに応用する）、それとともに、階層の各層におけるモジュールの基礎構造を維持すると理解できるだろう。
【００７２】
図３Ｂは本発明の様々な実施形態に係る、例示的なプロセッサ用のＭＢＳＰ機械モデル階層を示す。図３Ａに述べましたように、ＭＢＳＰ機械モデルにおける階層の各レベルは、ターゲットプロセッサを表すパラメータ、または属性（プロセッサコア数、通信帯域幅、同期遅延およびメモリ容量を含む）の集合のリストを利用して説明する。具体的なプロセッサの詳細は、プロセッサの操作マニュアルまたはデータシートから取得できる。
【００７３】
図３Ｂの例では、階層３５２〜３５６の各レベルは、遅延３６２および帯域幅３６４に関連付けられたメモリ容量３６０、およびサブレベルまたは計算ユニット３６８の集合を含む。図３Ｂの例示的な符号ＧＰＵ、コアおよびスレッドは、３つの異なる階層のレベル３５２〜３５６で生成した要素を表し、レベル３５２〜３５６は例示的なプロセッサ用のプロセッサ要素３７２〜３７６のメモリ階層３７０における３つの異なるレベル（例えば、レベル１〜３）に対応する。説明した例では、ＧＰＵはサブレベルコア３５４および最下位サブレベルスレッド３５６を含む最上位サブ３５２を表す。メモリ容量３６０はバイトで示されてもよい。プロセッサコアの計算能力は１秒あたりの浮動小数点演算で表されるパラメータであり、対応する計算回路の計算速度３６８（例えば、各スレッド２  ＧＦＬＯＰＳ／ｓ）としてもよいが、ほかの単位または尺度も可能である。通信帯域幅３６４はＧＢ／ｓで表され、１レベル（例えば、スレッドレベル３５６）ではメモリにアクセスできる時の同期遅延３６２はナノ秒で表されてもよい。
【００７４】
図３Ｂの例では、プロセッサ３７２は２４個の個別コア３７４を含むターゲットプロセッサを表し、各個別コア３７４はさらに１２８個の個別スレッド３７６を含む。実施形態では、階層のレベルまたはサブセット３５２〜３５６の数はターゲットプロセッサのメモリレベルに応じて選択される。実施形態では、このプロセッサについての説明に基づき、階層の最下位レベル３５６から最上位レベル３５２は各レベルに規則的に適用される。
【００７５】
各ニューロンがある量の記憶と計算を要求する際に、例えばメモリ容量３６０に応じてニューロンを表すパラメータを選択してもよく、それにより各ニューロンのサイズおよびメモリ３７２〜３７６に適合するニューロン数を決定する。通信コストはメモリにおけるすべてのニューロンにアクセスすることに必要なコストであり、モジュール間のモジュール結合から読み取ることができる。実施形態では、ニューロン間の通信コストは帯域幅および遅延により決定される。帯域幅３６４は特定のメモリ３７２〜３７６が計算ユニットによりアクセス可能な最大速度の尺度である。帯域幅（すなわち、アクセス速度）により定義されたメモリの総量は、メモリアクセスに必要な時間総量である。実施形態では、この時間は計算の実行に必要な時間総量に等しい。実施形態では、通信コストは計算コストと比較し、計算コストにほぼ等しく設計される。計算コストは、計算速度から決定され、時間により正規化され、その方法について、すべてのニューロンの数を各ニューロンコストと乗算して計算速度を除算するとともに、単位を正規化する（例えば、秒に正規化する）。
【００７６】
ＭＢＳＰモデルに基づき、スレッドグリッド３７８における各スレッド３７６は、ＲＮＮにおけるすべてのニューロンのいくつかのサブセットを含む層３５６と見なすことができる。実施形態では、スレッドレベル３５６におけるニューロンのモジュールがスレッド３７６にマッピングすることにより、異なるモジュールが異なるスレッド３７６にマッピングする。グリッド３７８におけるスレッド３７６が別々に動作してメモリに記憶された任意のデータにアクセスする際に、ニューロンはモジュール内の結合を介してスレッド３７６内で通信し、グリッド３７８における異なるスレッドにアクセスするニューロンがモジュール間の結合を構成する。前者の場合、最下位レベル３５６に対して、遅延値が６ｎｓであり、後者の場合、スレッド３７６が共同動作する際に、遅延値がプロセッサ３７２の階層における次のより上位レベル（ここで、コアレベル３５４）の遅延値、すなわち、３０ｎｓである。
【００７７】
１２８個のスレッド３７６あたりに１個のコア３７２を有し、帯域幅が１２８個のスレッド３７６間で共有される場合、帯域幅情報（すなわち、モジュール内の結合に対して、１６ＧＢ／ｓであり、モジュール間の結合に対して１２８ＧＢ／ｓである）とともに使用して通信時間を決定するようにしてもよい。
【００７８】
実施形態では、ニューロンを表すパラメータの数は削除により減少し、すなわち、ニューロン間の結合の一部を削除することにより、パラメータをバランシングする。実施形態では、モジュール間の結合は図３Ａを参照して説明した制約のうちの１つまたは複数を満たすように削除される。実施形態では、削除はメモリを満充填し各規則との遵守性を検査することを含み、必要に応じて（すなわち、多すぎるニューロンまたはニューロン間の結合があれば）、結合を削除する。残りのニューロンおよび結合は、ターゲットプロセッサ３７２の性能最適化設定（例えば、行列形式）の最終数量を構成する。
【００７９】
当業者は、プロセッサ要素３７２〜３７６の値が例示的なプロセッサに応じて割り当てられると理解できるだろう。同様に、ターゲットプロセッサ３７２用の値は、例示的なものであるため、ほかのプロセッサとプロセッサ要素は異なる値を有してもよい。
【００８０】
当業者は、さらに、行列計算方法が後続でスループットのような性能特性の強化に適用できると理解できるだろう。
【００８１】
図３Ｃは、本発明の様々な実施形態に係る、効率的なＲＮＮ層アーキテクチャを形成するプロセスのフローチャートを示す。プロセス３８０は、１つまたは複数のターゲットプロセッサで実行されたＭＢＳＰモデルを設計するステップ３８２から開始する。ステップ３８４では、実施形態において、最下位のプロセッサメモリ階層から最上位のプロセッサメモリ階層まで、ニューロンをロジックモジュールにグループ化する。
【００８２】
ステップ３８６では、ニューロンをモジュール間で結合し、それにより例えばＲＮＮの所定条件をバランシングする。例示的な条件として、ＲＮＮの計算要求、通信要求、同期要求およびメモリ容量要求が挙げられる。バランシング結果は、例えば図５〜７を参照して説明した様々な方法でニューロン間の結合を削除（すなわち、除去）する。
【００８３】
最終的に、ステップ３８８では、バランシングプロセスで削除されていない残りの結合を含む削除済みのＲＮＮを１つまたは複数のターゲットプロセッサで実行する。
【００８４】
図３Ｄは、本発明の様々な実施形態に係る、ＲＮＮの所定条件をバランシングするプロセスのフローチャートを示す。プロセス３９０のステップ３９２では、メモリ階層の特定レベルに対して、所定プロセッサに応じて選択されたニューロンを表すパラメータ数がキャッシュまたはメモリ容量に適合するように結合を配置する。
【００８５】
ステップ３９４では、モジュール間の結合を実行することに必要な同期コストがニューロンの評価に必要な計算コストにほぼ等しいように結合を配置する。
【００８６】
ステップ３９６では、モジュール間の結合とモジュール内の結合を実行することに必要な通信コストがニューロンの評価に必要なコストにほぼ等しく、遅延要求および帯域幅要求を低減させるように結合を配置する。
【００８７】
実施形態では、ニューロン数を係数して各ニューロンのコストと乗算し、その結果をＲＮＮモデルにおけるある閾値（例えば、計算コスト）と比較する。パラメータ閾値を超えると、閾値以下になるまで、ニューロン数を減少させる。実施形態では、すべての条件を満たすまで、閾値のそれぞれと各レベル（例えば、図３Ｂに示されるすべてのレベル）に対してこのプロセス繰り返す。例えば、まずニューロン数を適合させ、続いて通信コスト、同期コストおよび遅延を適合させる。後続の適合プロセスがＲＮＮモデルにおけるニューロン数の増加を招くことがないため、何の不都合もなく、任意の順序を選択できる。当業者は、各条件を等式に書かれる変数として定義してもよいとる理解できるだろう。
【００８８】
図４は、本発明の様々な実施形態に係る、特定のプロセッサ上で実行されたＲＮＮのモジュールの階層のレベルの概念を示す。ＲＮＮ  ４００は、チップ設計者が回路素子を含む１種のタイプの物理的装置（例えば、あるタイプのメモリ）を同一タイプのほかの装置に密接したパーティションに位置決めすることを目的とするということを利用して、オンチップに位置する個別回路の間でメモリ階層を形成する。プロセッサのパーティション内における近傍回路は計算機能を実行するユニット（例えば、加算器または乗算器）およびキャッシュとメモリ装置を構成してもよい。
【００８９】
実施形態では、ＲＮＮ  ４００は物理的装置のメモリ階層のレベルに基づいて形成される階層のレベルを含み、ＲＮＮ  ４００は、当該物理的装置上で動作するように設計される。例えば、階層の第１のレベルは、階層の最下位層を表すモジュール４０２および４０４から構成されてもよく、各モジュールは１組のニューロンを含む。次のより高いレベル、すなわち第２のレベルは、２つのモジュール４０２および４０４をグループ化する別のモジュール４１０から構成されてもよい。モジュール４１０の当該第２のレベルは物理的装置（例えば、２つ以上のパーティションがアクセスされる１組の共有メモリ装置）の階層の第２のレベルに対応してもよい。第３のレベルは物理的装置の階層の別のレベルに対応してもよく、例えば、プロセッサのすべてのパーティションがより大きなタイプのメモリ装置のレベルに結合される。第４のレベルは、物理的装置の階層のさらに別のレベルに対応してもよく、例えば、パーティションがより多くのメモリを提供する別の１組の装置のレベルに結合される。好ましくは、ニューロン間の結合性の階層におけるレベルの数が物理的装置の階層におけるレベルの数に正確にマッチングする。しかしながら、それを限定するものではない。階層のレベルが任意の特定の数に限定されるものではないと理解できるだろう。
【００９０】
実施形態では、モジュール４０２は異なる時間ステップでその自体と通信する。モジュール４０２と４０４の内部通信（例えば、４０２から４０４へ）の量は、モジュール４１０と４２０間の通信より高い帯域幅を有する。
【００９１】
実施形態では、階層の任意の特定レベルにおいて、図３Ａを参照して説明した制約は、以下のルールとして用いられる。１）プロセッサの利用可能メモリリソースに応じたモジュールのサイズの選択、２）プロセッサの容量（すなわち、各時間ステップで送信可能なデータ量）に基づくモジュール間の通信のデータ量、および３）プロセッサの異なる構成要素間の同期遅延に関連付けられたコスト、すなわち、１つのモジュールからもう１つのモジュールに送信されるデータ間に生じる時間ギャップ、プロセッサの一つの部分からもう１つの部分にメッセージを送信することにかかる時間。ルールを順守することにより、階層モジュールはさらに長い遅延に耐えられ、ＲＮＮ  ４００はさらに厳しい遅延要求で動作できる。また、階層モジュールは通信量を減少させほかの層における帯域幅を増加させる。
【００９２】
図５は、本発明の様々な実施形態に係る、高速モジュールおよび低速モジュールに分割されたＲＮＮを示す。異なる頻度で更新されたモジュール間の結合を有することに加えて、実施形態では、モジュールを高速モジュール５５４〜５７６と低速モジュール５０４〜５１０に分割することにより、グローバル通信要求を低減させる。低速モジュール５０４〜５１０は、高速モジュール５０２〜５５２より低い速度で更新され、高速モジュール５０２〜５５２は、高頻度でより多くのデータを使用して更新される。実施形態では、図５に示すように、これらのモジュールは高速モジュールを含む第１の層５０２および低速モジュールを含む第２の層５５２内に配置される。実施形態では、２つ以上の高速モジュール５５４〜５７６は並列動作し、１つの高速モジュールからもう１つの高速モジュールへの通信路径の唯一方式が低速モジュール５０４〜５１０のうちのいずれかを経由することであるように結合される。
【００９３】
実施形態では、高速モジュール５５４〜５７６は頻繁に更新された結合により密に内部で結合されるが、次に高速モジュール５７２〜５７６ではなく、低速モジュール５０４〜５１０のみに結合される。低速モジュール５０４〜５１０は、内部で結合され、ほかの高速モジュールに結合され、すべての結合が高速モジュール５５４〜５７６より低い速度で更新される。明らかなように、低速モジュール５０４〜５１０は高速モジュール５５４〜５７６間の高レベル通信を許容し、高速モジュール５５４〜５７６は入力データのほぼ独立したサブセットを処理する。
【００９４】
実施形態では、高速モジュール５５４〜５７６は内部通信しかできないが、低速モジュール５０４〜５１０は高速モジュール５５４〜５７６間の通信を協調する。実施形態では、例示的なソース高速モジュール５５４と例示的な宛先高速モジュール５６０との通信を確立するために、周期的な間隔において、まず高速モジュール５５４から低速モジュール５０６への通信を確立する。別のステップでは、低速モジュール５０６から宛先高速モジュール５６０への通信を確立する。
【００９５】
図６は、本発明の様々な実施形態に係る結合性の並列プレフィックスパターンを示す。ネットワーク６００は、さらに高速モジュールおよび低速モジュールの２つのタイプを含む。実施形態では、図６に示されるように、ＲＮＮの通信要求と同期要求を低減させるために、入力シーケンシャルデータ時間ステップは、独立した連続サブセクションに分けられ、それらのそれぞれをＲＮＮにより処理して各サブセクションに対して中間結果を生成する。次に、別のＲＮＮは（より小さい）中間結果に基づいて動作し、最終的に処理された中間結果を別の入力として使用し、さらに別のＲＮＮは、入力データのサブセクション上で再び動作する。概念上、各サブセクションにおける時系列情報は、第１のステップにより圧縮した中間表現に減少する。各サブセクションからの情報を第２のステップにより効率的に組み合わせることができる。最終的に、独立したサブセクションは、すべての時間ステップからの組み合わせたコンテキスト情報を使用して処理してもよい。当該形式は、プレフィックスツリーの形式からインスピレーションを得たものである。
【００９６】
図６では、層をセグメント化するのではなく、ネットワーク６００における通信に対して独立した時系列入力６６２〜６７２を生成する入力時系列６６０を時間セグメント６８０〜６８４に分ける。実施形態では、ネットワーク６００の特定モジュール（例えば、モジュール６４２とモジュール６４４）が入力時系列６６０の時間セグメント（例えば、時間セグメント６８０）内に相互に通信するが、ネットワーク６００のほかのモジュール（例えば、モジュール６４４およびモジュール６４６）が時間セグメント（例えば、時間セグメント６８０と６８２の間）間に相互通信しないことにより、頻度を低減させ、さらに時間ステップ間の通信データ量を減少させ、通信時間を減少させる。より多くの動作を同時に並列に実行することにより、遅延のすべての潜在的な悪影響を解消する。
【００９７】
図７は、本発明の様々な実施形態に係る、遅延および帯域幅要求を最小化するとともにグローバル通信を可能にする別の方法を示す。ネットワーク７００は、第１の層７０２におけるサブモジュール７１０〜７１６と、鏡像の第２の層７６０におけるサブモジュール７６２〜７６８、置換モジュール７５０、入力層（図示せず）、および出力層７９０を備える。
【００９８】
動作の際には、層７０２におけるモジュール７１０〜７１６と、層７６０におけるモジュール７６２〜７６８は、選択的に置換モジュール７５２を経由して通信する。実施形態では、モジュール７１０〜７１６は、モジュール７６２〜７６８に対して独立してより高い速度で動作する。各モジュール７１０は、時系列の第１の時間ステップに、例えば４個の出力を生成して、層７０２におけるすべてのモジュール７１０〜７１６が各時間ステップに合計１６個の出力７３０を生成する。当該通信は、プロセッサの異なるローカル部分において第１のパス（ｐａｓｓ）で実行されてもよい。すべての出力７３０を取得した後、時間ステップ間の第２のパスでは、モジュール７１０〜７１６のすべての計算した利用可能な出力７３０の順序を乱し、次に１：１でモジュール７６２〜７６８の入力にコピーする。
【００９９】
実施形態では、置換モジュール７５２は、出力を選択して混合することによりこれらの１６個の出力の順序を再設定する。例えば、モジュール７１０におけるニューロン０、１、２および３の出力７３０がモジュール７７０の出力７８０（例えば、１２、１３、８および９）にマッピングされ、それにより２つの層７０２および７６０におけるモジュール間の通信パターンを変更する。置換モジュール７５０は、任意数の出力を自由に選択して再設定することができると理解できるだろう。実施形態では、第１のパスのプロセスは、すべての時系列に関わらないことにより、すべての出力７３０をプロセッサのマッピング開始前に取得する必要がない。
【０１００】
なお、実施形態では、ほかまたは追加の要素を考慮してもよい。以下、ＭＢＳＰ−ＲＮＮを設計する時に考慮する追加の要素を例示する。
【０１０１】
ＭＢＳＰ−ＲＮＮ層への入力活性化は、モジュール間に均等に分割されることにより、各入力が階層の任意のレベルで単一モジュールにより処理される。
【０１０２】
ＭＢＳＰ−ＲＮＮ層は、システムにおけるプロセッサコアを完全にサブスクライブしたり、過度にサブスクライブしたりすることに十分なモジュールを有するべきである。それにより、層が十分な並列タスクを有することを確保し、したがってすべてのプロセッサリソースが利用される。
【０１０３】
関連結合用の重みをプロセッサメモリ階層の対応するレベルに記憶できないことを回避するために、階層の任意のレベルにおけるＭＢＳＰ−ＲＮＮモジュールは、多すぎる記憶を使用しないことにすべきである。
【０１０４】
階層のより低いレベルにおけるニューロンをより密に結合すべきで、遅延なしに高頻度で結合を更新すべきである。階層に沿って上へ進行するほど、ニューロンがより疎に結合され、増加した遅延および低頻度で結合が更新される。階層のレベルの正確な数および結合性、時間遅延と更新頻度は、ＲＮＮをマッピングする宛先のプロセッサのＭＢＳＰパラメータを使用して決定される。具体的には、計算コスト、通信コストおよび同期コストがほぼ等しくするように値を選択すべきである。
【０１０５】
ＲＮＮの主要なオンチップメモリの要件は、各結合用の重みパラメータである。ネットワークの計算構成要素と通信構成要素との評価をバランシングするために、オフチップメモリからロードされた各重みパラメータを複数回再使用すべきである。重みパラメータを再使用するための３つの基本的な戦略は、時間に応じたバッチング、サンプルに応じたバッチングおよび結合に応じたバッチングを含む。
【０１０６】
低頻度または時間遅延だけでモジュールの出力をほかのモジュールに送信する能力は、複数の時間ステップにおいて、当該モジュールに関連付けられた重みをメモリからリロードせずに処理されることを許容する。具体的には、ＲＮＮが階層の当該レベルにおいて多すぎるモジュールを含んでオンチップメモリに適合しない場合であっても、同期間の時間ステップ（各時間ステップより低い頻度で発生する）は、重みをリロードせずに特定モジュールにより処理できる。同期点に到達したまで、１つのモジュールが評価されることができ、同期点では、プロセッサが別のモジュールに切り替えられることができる。同様な効果は、時間遅延後に同期した結合に適用される。１つのモジュールは、現在の時間ステップから次の日時（ｔｉｍｅ−ｄａｙ）へ進行でき、当該次の日時では、プロセッサが別のモジュールに切り替え、当該別のモジュールを同一範囲の時間ステップで評価する。
【０１０７】
重みパラメータを再使用する別の戦略は、複数の独立した入力シーケンスに対して同一の時間ステップを同時に評価することである。多くの最適化アルゴリズムがある程度の入力に応じたバッチングを要求するため、当該方法は、ＲＮＮの訓練に特に効果的である。しかしながら、前記方法は、特定の場合に利用不能な複数の入力シーケンスを利用可能なものとして仮定するため、当該戦略は、訓練されたネットワークを使用してタスクをリアルタイムに実行する時に効果が弱い。例えば、携帯装置上で音声認識を実行するニューラルネットワークは、通常、単一ユーザーが話すことをサポートする。
【０１０８】
最後に、畳み込みニューラルネットワーク層と類似するように、複数の結合に同一重みパラメータを再使用することができる。この場合に、モジュールは同一重みを共有するすべての異なるほかのモジュールからの複数の入力を有してもよい。また、所定数の結合をサポートするモジュールのメモリ使用量を減少させ、各重みが各時間ステップにモジュールに使用される回数を増加させる。
【０１０９】
当業者は、本明細書の例および実施形態が例示的なものであり、本発明の範囲を限定するものではないと理解できるだろう。本明細書に基づき当業者が容易に想到できる本発明へのすべての置換、強化、均等物、組合せまたは改良は、本発明の趣旨および範囲内に属する。
【図１】
0006348561.tif 000009
【図２Ａ】
0006348561.tif 000010
【図２Ｂ】
0006348561.tif 000011
【図２Ｃ】
0006348561.tif 000012
【図２Ｄ】
0006348561.tif 000013
【図３Ａ】
0006348561.tif 000014
【図３Ｂ】
0006348561.tif 000015
【図３Ｃ】
0006348561.tif 000016
【図３Ｄ】
0006348561.tif 000017
【図４】
0006348561.tif 000018
【図５】
0006348561.tif 000019
【図６】
0006348561.tif 000020
【図７】
0006348561.tif 000021