(57)【要約】【課題】ニューラル・ネットワークを更新する方法が提供されうる。【解決手段】方法は、ニューラル・ネットワークの現在の層の演算行列についての勾配を、現在の層およびニューラル・ネットワークの少なくとも他の層の少なくとも一方のデータに基づいて計算することを含んでいてもよい。方法はまた、計算された勾配に基づいて演算行列を更新することを含んでいてもよい。さらに、方法は、更新された演算行列に基づいて現在の層のインデクシング行列を更新することをも含んでいてもよい。【選択図】図１
2018018521.tif 000002
【特許請求の範囲】
【請求項１】
ニューラル・ネットワークを更新する方法であって：
前記ニューラル・ネットワークの現在の層の演算行列についての勾配を、現在の層および前記ニューラル・ネットワークの少なくとも他の層の少なくとも一方のデータに基づいて計算する段階と；
計算された勾配に基づいて前記演算行列を更新する段階と；
更新された演算行列に基づいて現在の層のインデクシング行列を更新する段階とを含む、
方法。
【請求項２】
インデクシング行列を更新する段階が、クラスタリング方法により前記インデクシング行列を更新することを含む、請求項１記載の方法。
【請求項３】
クラスタリング方法により前記インデクシング行列を更新することが、k平均クラスタリング方法により前記インデクシング行列を更新することを含む、請求項２記載の方法。
【請求項４】
前記更新された演算行列に基づき、前記クラスタリング方法により現在の層のマッチング辞書を更新する段階をさらに含む、請求項２記載の方法。
【請求項５】
前記クラスタリング方法により現在の層のマッチング辞書を更新する段階が、前記マッチング辞書および前記インデクシング行列を実質的に同時に更新することを含む、請求項４記載の方法。
【請求項６】
前記クラスタリング方法により現在の層のマッチング辞書を更新する段階が、k平均クラスタリング方法により前記マッチング辞書を更新することを含む、請求項４記載の方法。
【請求項７】
前記演算行列についての前記勾配および前記インデクシング行列に基づいて現在の層のマッチング辞書を更新する段階をさらに含む、請求項１記載の方法。
【請求項８】
前記マッチング辞書を更新する段階が：
前記演算行列についての前記勾配を前記インデクシング行列とマッチングして前記マッチング辞書についての勾配を計算し；
前記マッチング辞書、学習レートおよび前記マッチング辞書についての前記勾配に基づいて前記マッチング辞書を更新することを含む、
請求項７記載の方法。
【請求項９】
現在の層の演算行列についての勾配を計算する段階が、現在の層の活性化アレイに基づいて前記演算行列についての勾配を計算することを含む、請求項１記載の方法。
【請求項１０】
一つまたは複数のプロセッサによって実行されたときに前記一つまたは複数のプロセッサに動作を実行させる命令を含んでいる一つまたは複数の非一時的なコンピュータ可読媒体であって、前記動作は
ニューラル・ネットワークの現在の層の演算行列についての勾配を、現在の層および前記ニューラル・ネットワークの少なくとも他の層の少なくとも一方のデータに基づいて計算する段階と；
計算された勾配に基づいて前記演算行列を更新する段階と；
更新された演算行列に基づいて現在の層のインデクシング行列を更新する段階とを含む、
コンピュータ可読媒体。
【請求項１１】
インデクシング行列を更新する段階が、クラスタリング方法により前記インデクシング行列を更新することを含む、請求項１０記載のコンピュータ可読媒体。
【請求項１２】
前記動作が、前記更新された演算行列に基づき、前記クラスタリング方法により現在の層のマッチング辞書を更新する段階をさらに含む、請求項１１記載のコンピュータ可読媒体。
【請求項１３】
前記クラスタリング方法により現在の層のマッチング辞書を更新する段階が、前記マッチング辞書および前記インデクシング行列を実質的に同時に更新することを含む、請求項１２記載のコンピュータ可読媒体。
【請求項１４】
前記動作が、前記演算行列についての前記勾配および前記インデクシング行列に基づいて現在の層のマッチング辞書を更新する段階をさらに含む、請求項１０記載のコンピュータ可読媒体。
【請求項１５】
前記マッチング辞書を更新する段階が：
前記演算行列についての前記勾配を前記インデクシング行列とマッチングして前記マッチング辞書についての勾配を計算し；
前記マッチング辞書、学習レートおよび前記マッチング辞書についての前記勾配に基づいて前記マッチング辞書を更新することを含む、
請求項１４記載のコンピュータ可読媒体。
【請求項１６】
複数の層を含むニューラル・ネットワークを更新するためのシステムであって、前記複数の層の各層は少なくとも一つの記憶装置および処理要素を含み、各処理要素は：
前記複数の層のうちの一つまたは複数の層のデータに基づいて演算行列についての勾配を計算し；
計算された勾配に基づいて前記演算行列を更新し；
更新された演算行列に基づいてインデクシング行列を更新するよう構成されている、
システム。
【請求項１７】
各処理要素がさらに、クラスタリング方法により前記インデクシング行列を更新するよう構成されている、請求項１６記載のシステム。
【請求項１８】
各処理要素がさらに、前記更新された演算行列に基づき、前記クラスタリング方法によりマッチング辞書を更新するよう構成されている、請求項１７記載のシステム。
【請求項１９】
各処理要素がさらに、前記演算行列についての前記勾配および前記インデクシング行列に基づいてマッチング辞書を更新するよう構成されている、請求項１６記載のシステム。
【請求項２０】
各処理要素がさらに：
前記演算行列についての前記勾配を前記インデクシング行列とマッチングして前記マッチング辞書についての勾配を計算し；
前記マッチング辞書、学習レートおよび前記マッチング辞書についての前記勾配に基づいて前記マッチング辞書を更新するよう構成されている、
請求項１９記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本稿で論じられる実施形態はニューラル・ネットワークに関し、より詳細には、辞書ベースの自己適応的なニューラル・ネットワークに関する。
【背景技術】
【０００２】
ニューラル・ネットワーク解析は、複数の処理層を通じて高レベルの抽象化をモデル化しようと試みる、生体のニューラル・ネットワーク〔神経網〕に想を得た解析のモデルを含みうる。しかしながら、ニューラル・ネットワーク解析は大量のコンピューティングおよび／またはネットワーク資源を消費することがある。
【０００３】
本願で特許請求される主題は何らかの欠点を解決するまたは上記のような環境でのみ動作する実施形態に限定されない。むしろ、この背景は、本稿に記載されるいくつかの実施形態が実施されうる一つの例示的な技術領域を示すために与えられているだけである。
【発明の概要】
【課題を解決するための手段】
【０００４】
本開示の一つまたは複数の実施形態は、ニューラル・ネットワークを更新する方法を含みうる。本方法は、ニューラル・ネットワークの現在の層の演算行列（operating  matrix）についての勾配を、現在の層およびニューラル・ネットワークの少なくとも他の層の少なくとも一方のデータに基づいて計算することを含んでいてもよい。さらに、本方法は、計算された勾配に基づいて演算行列を更新することを含んでいてもよい。本方法はまた、更新された演算行列に基づいて現在の層のインデクシング行列（indexing  matrix）を更新することをも含んでいてもよい。
【０００５】
実施形態の目的および利点は、少なくとも、請求項において具体的に指摘される要素、特徴および組み合わせによって、実現され、達成されるであろう。上記の概括的な記述および以下の詳細な説明はいずれも例示および説明するものであり、制約するものではない。
【図面の簡単な説明】
【０００６】
例示的実施形態について、付属の図面の使用を通じてさらに具体的かつ詳細に記述し、説明する。
【図１】本開示のある実施形態に基づくニューラル・ネットワーク・システムを示す図である。
【図２】ニューラル・ネットワーク・システムの層における辞書を更新する例を示す図である。
【図３】ニューラル・ネットワーク・システムの層におけるインデクシング行列を更新する例を描く図である。
【図４】ニューラル・ネットワーク・システムの層におけるインデクシング行列を更新するもう一つの例を示す図である。
【図５】ニューラル・ネットワーク・システムの辞書およびインデクシング行列を更新するための例示的方法のフローチャートである。
【図６】クラスタリング法によりニューラル・ネットワーク・システムの辞書およびインデクシング行列を更新する例を描く図である。
【図７】クラスタリング法によりニューラル・ネットワーク・システムの辞書およびインデクシング行列を更新する例示的方法のフローチャートである。
【図８】例示的コンピューティング装置のブロック図である。
【発明を実施するための形態】
【０００７】
「深層機械学習（deep  machine  learning）」、「深層構造化学習（deep  structured  learning）」または「階層的学習（hierarchical  learning）」とも称されることがある「深層学習（DL:  deep  learning）」は、モデル・アーキテクチャーを使ってデータにおける高レベルの抽象化をモデル化しようと試みる一組のアルゴリズムに基づく機械学習の分野である。
【０００８】
最新の現状技術の深層学習アーキテクチャーはますます大きく、深くなってきている。従来型ニューラル・ネットワーク（CNN:  conventional  neural  network）および長短期メモリ（LSTM:  long  short  term  memory）といった最も一般的なアーキテクチャーは、人間の干渉を最小にするエンドツーエンドのシステムである。しかしながら、これらのアーキテクチャーはニューラル・ネットワークの基本的な構造を変えることはほとんどできない。
【０００９】
深層ニューラル・ネットワーク（DNN:  deep  neural  network）をトレーニングすることは高価で、複数のGPUを必要とする。さらに、一般的なDLアーキテクチャーと組み合わされた一般的なDL方法は多数（数億）のパラメータを含む。しかしながら、DNNにおけるパラメータの量は冗長であることが判明している。最も一般的なDLアプリケーション・フローは、高い冗長性をもってDNNをトレーニングし、次いで該ネットワークをより小さなサイズにダウンスケーリングすることである。トレーニングにおける大きなネットワークの要求と推論における不必要な冗長性との間にコンフリクトがあり、これは計算パワーの浪費と高価な専用ハードウェアにつながる。
【００１０】
本開示での用法では、「辞書」は、あるアイテムを別のアイテムに関連付ける一つまたは複数の「エントリー」を含む任意のコンピュータ可読データを含みうる。たとえば、辞書エントリーは、単純な電子メッセージ（たとえば5ビット値）を、より複雑なデータ構造（たとえば32ビットの浮動小数点値）と関連付けてもよい。辞書は、エントリーの一つ（たとえば前記単純な電子メッセージ）によって問い合わせされてもよく、出力として、相関したエントリーを受領してもよい。たとえば、単純な電子メッセージによる問い合わせはより複雑なデータ構造の出力を生じさせることができ、より複雑なデータ構造による問い合わせは単純な電子メッセージの出力を生じさせることができる。
【００１１】
ニューラル・ネットワークのマッピングは、二つの異なる型の辞書を含んでいてもよい。一つの型の辞書は中間活性化のためであり、もう一つの型の辞書は重みのためである。中間活性化のための辞書は本稿で開示される一つまたは複数の実施形態に従って生成されてもよい。重み辞書はオフラインK平均（たとえばロイド（Lloyd）の諸アルゴリズム）によって生成されてもよい。
【００１２】
トレーニングの間のメモリの要求を低減するためのランダムな共有される重みという発想が研究されてきた。しかしながら、この発想は、ネットワークの構造を発達させることはせず、その性能は初期化に強く依存することになる。
【００１３】
本稿での用法では、用語「エポック（epoch）」は、ネットワークにより一度処理されるデータセット全体を指し、用語「反復工程（iteration）」はネットワークがある量のデータを処理するそれぞれの時を指す。一つのエポックは多くの反復工程をもつことがある。さらに、用語「マッピング（mapping）」は、インデクシング行列が辞書にマッピングされるプロセスを指す。「統計的勾配降下法（STD:  stochastic  gradient  descent）」は機械学習のための最適化方法であり、「クラスタリング法」（たとえばk平均）は入力データを受け取って代表的インデックスおよび対応する重心の集合を出力する方法である。
【００１４】
本開示は、本稿で辞書ベースの自己適応的ネットワーク（DSN:  dictionary-based,  self-adaptive  network）と称されることがあるニューラル・ネットワークに関する。さまざまな実施形態は、DSNアーキテクチャー、トレーニング・アルゴリズムおよび／またはトレーニング方式に関係することがある。さまざまな実施形態は、トレーニングにおける大きなネットワークの要求と推論におけるその不必要な冗長性との間のコンフリクトを解決することがある。向上した柔軟性により、DSNはたとえば、ニューロンを強化する、ニューロンを弱めるおよび／またはニューロンどうしを接続することを学習することがある。
【００１５】
下記でより十全に述べるように、DSNアーキテクチャーの各層は、マッピング辞書（たとえば多次元マッピング辞書）と対にされてもよい少なくとも一つのインデクシング行列を含んでいてもよい。インデクシング行列は、複数（たとえば32または64）の浮動小数点数を含みうる特定のマッピング辞書へのアドレス・インデクシング（address  indexing）を含んでいてもよい。
【００１６】
ある実施形態によれば、特定の層における辞書における各重心の勾配が、同じ特定の重心にマッピングされるインデクシング位置（indexing  positions）からの勾配を要約すること（summarizing）によって計算されてもよい。インデクシング行列は、一時的な更新された勾配行列をクラスタリングすることに基づくインデックスを対応する辞書に割り当てることによって更新されてもよい。インデクシング行列を更新するために使われるクラスタリング方法は、辞書において（距離的に）最も近い重心を選択することに基づく。
【００１７】
もう一つの実施形態によれば、インデクシング行列および辞書は、毎反復工程におけるクラスタリング方法（たとえばK平均）によって生成されてもよい。
【００１８】
本開示の実施形態について、これから付属の図面を参照して説明する。
【００１９】
図１は、本稿で「システム１００」とも称されることがあるネットワーク１００の一部のある実施形態を描いている。システム１００は、層lにおける活性化アレイal  １０２、層lにおける2Dインデクシング行列Llおよび層lにおけるマッピング辞書（1Dアレイ）Dl  １０６を含む。システム１００はさらに、活性化アレイal-2  １１２、活性化アレイal-1  １２２、活性化アレイal+1  １３２，インデクシング行列Ll-1  １１４，インデクシング行列Ll+1  １２４、マッピング辞書Dl-1  １１６およびマッピング辞書Dl+1  １２６を含んでいる。
【００２０】
アレイLおよび辞書Dは次元的に変化することができ、アレイLと辞書Dの間のマッピングはアプリケーションに基づいて変化してもよいことを注意しておく。本開示の実施形態は、多層パーセプトロン（MLP:  multi-layer  perceptron）ネットワークに限定されない。むしろ、実施形態は、RNN、CNNといった他のニューラル・ネットワークに適用可能であってもよい。
【００２１】
図１および下記の式(1)を参照するに、フィードフォワード・フェーズの間の層の出力が計算されうる。より具体的には、層lとl＋1の間のインデクシング行列から対応する辞書へのマッピングを表わす専用のマッピング関数Dj(Lj)が、次式により層l＋1についての中間活性化アレイを計算するために使われてもよい。
【数１】
2018018521.tif 000003
ここで、「i」は層l＋1におけるi番目の要素であり、「j」は活性化アレイにおける要素を表わす。
【００２２】
上記のように、ある実施形態では、特定の層における辞書における各重心の勾配は、同じ特定の重心にマッピングされるインデクシング位置からの勾配を要約することによって計算されてもよい。インデクシング行列は、クラスタリングする一時的な更新された勾配行列に基づくインデックスを現在の対応する辞書に割り当てることによって更新されてもよい。この実施形態は、本稿では「適応的な統計的勾配降下法（adaptive  stochastic  gradient  descent）」と称されることがある。
【００２３】
図２は、インデクシング行列２０４、マッピング辞書２０６、辞書勾配２３６、演算行列２４０および演算行列勾配２５０を含む現在の層についての例示的なシステム２００を示している。システム２００は、マッピング辞書２０６を更新するよう構成されてもよい。
【００２４】
辞書の逆方向勾配（backward  gradient）のために、次を計算する：
【数２】
2018018521.tif 000004
ここで、Lossはニューラル・ネットワークをトレーニングするための損失（loss）関数を表わし、δlは最終層から層lへの伝搬誤差を表わし、式(5)は辞書Dを更新するために使用されうる。
【００２５】
システム２００の考えられている動作の間、演算行列勾配２５０は一つまたは複数の層からのデータを受領してもよい。より具体的には、演算行列２５０は現在の層および／または他の層（たとえば前の層、次の層など）からのデータを受領してもよく、勾配（ΔW）が計算されてもよい。さらに、インデクシング行列２０４が演算行列２５０にマッチングされて辞書勾配２３６を生成してもよい。加えて、マッピング辞書２０６は次式に従って更新されてもよい：
【数３】
2018018521.tif 000005
ここで、newDlkは新たな辞書に関連付けられ、Dlkは現在の辞書に関連付けられ、lrdictは学習レートであり、dDlkは式(2)〜(5)において導出される辞書の勾配を表わす。
【００２６】
さらに、演算行列２４０は、マッピング辞書２０６をインデクシング行列２０４とマッチングすることによって更新されてもよい。
【００２７】
図３は、インデクシング行列３０４、マッピング辞書３０６、演算行列３４０、演算行列３５０、新たな演算行列３６０および新たなインデクシング行列３２４を含む現在の層についての例示的なシステム３００を示している。システム３００は、インデクシング行列３０４を更新するよう構成されてもよい。
【００２８】
システム３００の考えられている動作の間、演算行列３５０は一つまたは複数の層からのデータを受領してもよい。より具体的には、演算行列３５０は現在の層および／または他の層（たとえば前の層、次の層など）からのデータを受領してもよく、勾配値（ΔW）が計算されてもよい。さらに、新たな演算行列３６０が次式に従って計算されてもよい：
【数４】
2018018521.tif 000006
ここで、Wl(i,j)は演算行列３４０に関連付けられ、newWl(i,j)は新たな演算行列３６０と関連付けられ、Dlはマッピング辞書３０６に関連付けられ、lrindexは学習レートであり、dWl(i,j)は演算行列４５０に関連付けられた勾配を表わす。
【００２９】
さらに、新たなインデクシング行列３２４が、次式に従ってマッピング辞書２０６を新たな演算行列３６０とマッチングすることによって生成されてもよい：
【数５】
2018018521.tif 000007
ここで、newLi(i,j)は新たなインデクシング行列３２４に関連付けられ、Dlはマッピング辞書３０６に関連付けられ、newWl(i,j)は新たな演算行列３６０に関連付けられる。
【００３０】
下記の式(10)は順方向計算の表現である。
【数６】
2018018521.tif 000008
【００３１】
図４は、インデクシング行列４０４、マッピング辞書４０６、演算行列４４０、演算行列４５０、新たな演算行列４６０および新たなインデクシング行列４２４についての例示的な値を含む現在の層についての例示的なシステム４００を示している。システム３００（図３参照）と同様に、システム４００は、インデクシング行列（たとえばインデクシング行列４０４）を更新するよう構成されてもよい。
【００３２】
システム４００の考えられている動作の間、演算行列３５０は一つまたは複数の層からのデータを受領してもよい。より具体的には、演算行列３５０は現在の層および／または他の層（たとえば前の層、次の層など）からのデータを受領してもよく、演算行列４５０についての勾配値（ΔW）が計算されてもよい。さらに、新たな演算行列３６０が次式に従って計算されてもよい：
【数７】
2018018521.tif 000009
ここで、Wl(i,j)は演算行列４４０に関連付けられ、newWl(i,j)は新たな演算行列４６０と関連付けられ、Dlはマッピング辞書４０６に関連付けられ、lrindexは学習レートであり、dWl(i,j)は演算行列４５０に関連付けられた勾配を表わす。
【００３３】
さらに、新たなインデクシング行列４２４が、下記の式(13)に従ってマッピング辞書４０６を新たな演算行列４６０とマッチングすることによって生成されてもよい。辞書４０６を新たな演算行列４６０とマッピングするためには、辞書４０６における各重心のインデックスが新たな演算行列４６０における最も近い値に割り当てられて新たなインデクシング行列４２４を生成してもよい：
【数８】
2018018521.tif 000010
ここで、newLi(i,j)は新たなインデクシング行列４２４に関連付けられ、Dlはマッピング辞書４０６に関連付けられ、newWl(i,j)は新たな演算行列４６０に関連付けられる。
【００３４】
図５は、本開示の少なくとも一つの実施形態に基づく、ニューラル・ネットワークにある層において辞書および／またはインデクシング行列を更新する例示的方法５００のフローチャートである。方法５００はいかなる好適なシステム、装置またはデバイスによって実行されてもよい。たとえば、図１のシステム１００またはその構成要素の一つまたは複数が、方法５００に関連する動作の一つまたは複数を実行してもよい。これらおよび他の実施形態において、コンピュータ可読媒体に記憶されたプログラム命令が、方法５００の動作の一つまたは複数を実行するために実行されてもよい。
【００３５】
ブロック５０２では、ネットワークが初期化されてもよく、方法はブロック５０４に進んでもよい。たとえば、ネットワークは辞書ベースの自己適応的ネットワークを含んでいてもよい。
【００３６】
ブロック５０４では、トレーニング・データセットがシャッフルされてもよく、方法５００はブロック５０６に進んでもよい。
【００３７】
ブロック５０６では、入力が準備されてもよく、方法５００はブロック５０８に進んでもよい。たとえば、入力のデータのサブセットが処理のために選択されてもよい。
【００３８】
ブロック５０８では、各層についての活性化アレイにおける各要素についての活性化が順方向計算されてもよい。各層についての活性化アレイにおける各要素が計算された後、方法５００はブロック５１０に進んでもよい。
【００３９】
ブロック５１０では、前記ネットワークの損失および最終層の勾配が計算されてもよく、方法５００はブロック５１２に進んでもよい。
【００４０】
ブロック５１２では、各層における勾配が逆方向計算されてもよい。たとえば、各層の辞書および各層の新たな演算行列（たとえば演算行列２５０／３５０）の勾配が計算されてもよい。各層における勾配が計算された後、方法５００はブロック５１４に進んでもよい。
【００４１】
ブロック５１４では、各層についてのマッピング辞書および／またはインデクシング行列が更新されてもよい。各層についての各マッピング辞書および／またはインデクシング行列が更新された後、方法５００はブロック５１６に進んでもよい。
【００４２】
ブロック５１６では、ネットワークは有効確認されてもよく、パフォーマンスが十分であれば、方法５００はブロック５１８に進んでもよい。
【００４３】
ブロック５１８では、収束が存在するかどうかについて判定がなされてもよい。収束がある（たとえば辞書およびインデクシング行列が実質的に変化していない）と判定される場合、方法５００はブロック５２０に進んでもよい。収束がないと判定される場合には、Epoch＝Epoch＋1とし、方法５００はブロック５０４に戻ってもよい。
【００４４】
ブロック５２０では、更新された辞書および／または更新されたインデクシング行列が出力されてもよい。
【００４５】
本開示の範囲から外れることなく方法５００に修正、追加または省略がなされてもよい。たとえば、方法５００の動作は異なる順序で実装されてもよい。さらに、概説された動作およびアクションは単に例として与えられているのであって、それらの動作およびアクションのいくつかは、開示される実施形態の本質を損なうことなく、より少数の動作およびアクションに組み合わされたり、あるいは追加的な動作およびアクションに展開されたりしてもよい。
【００４６】
もう一つの実施形態では、上記のように、インデクシング行列およびマッピング辞書がクラスタリング方法（たとえばK平均クラスタリング方法）を介して生成されてもよい。
【００４７】
図６は、インデクシング行列６０４、マッピング辞書６０６、演算行列６４０、演算行列６５０、新たな演算行列６６０、新たなインデクシング行列６２４および新たな辞書６１６を含む現在の層についての例示的なシステム６００を示している。システム３００は、インデクシング行列６０４を更新するよう構成されてもよい。
【００４８】
システム６００の考えられている動作の間、演算行列６５０は一つまたは複数の層からのデータを受領してもよい。より具体的には、演算行列６５０は現在の層および／または他の層（たとえば前の層、次の層など）からのデータを受領してもよく、勾配値（ΔW）が計算されてもよい。さらに、新たな演算行列６６０が下記の式(15)に従って計算されてもよい。さらに、新たな辞書６１６および新たなインデクシング行列６２４が、下記の式(16)に従って新たな演算行列６６０に対してクラスタリング方法（たとえばk平均（k-mean）クラスタリング方法）を実行することによって計算されてもよい。インデクシング行列６０４は新たなインデクシング行列６２４によって置き換えられてもよく、辞書６０６は新たな辞書６１６によって置き換えられてもよい。
【数９】
2018018521.tif 000011
ここで、Wl(i,j)は演算行列６４０に関連付けられ、Dlはマッピング辞書６０６に関連付けられ、Li(i,j)はインデクシング行列６０４に関連付けられ、newWl(i,j)は新たな演算行列６６０に関連付けられ、newLi(i,j)は新たなインデクシング行列６２４に関連付けられ、newDlは新たな辞書６１６に関連付けられ、lrindexは学習レートであり、dWl(i,j)は演算行列４５０に関連付けられた勾配を表わす。
【００４９】
図７は、本開示の少なくとも一つの実施形態に基づく、ニューラル・ネットワークのある層における辞書および／またはインデクシング行列を更新するための例示的方法７００のフローチャートである。方法７００はいかなる好適なシステム、装置またはデバイスによって実行されてもよい。たとえば、図１のシステム１００またはその構成要素の一つまたは複数が方法７００に関連する動作の一つまたは複数を実行してもよい。これらおよび他の実施形態において、コンピュータ可読媒体に記憶されたプログラム命令が、方法７００の動作の一つまたは複数を実行するために実行されてもよい。
【００５０】
ブロック７０２では、ネットワークが初期化されてもよく、方法はブロック７０４に進んでもよい。たとえば、ネットワークは辞書ベースの自己適応的ネットワークを含んでいてもよい。
【００５１】
ブロック７０４では、トレーニング・データセットがシャッフルされてもよく、方法７００はブロック７０６に進んでもよい。
【００５２】
ブロック７０６では、入力が準備されてもよく、方法７００はブロック７０８に進んでもよい。たとえば、入力のデータのサブセットが処理のために選択されてもよい。
【００５３】
ブロック７０８では、各層についての活性化アレイにおける各要素についての活性化が順方向計算されてもよい。各層についての活性化アレイにおける各要素が計算された後、方法７００はブロック７１０に進んでもよい。
【００５４】
ブロック７１０では、前記ネットワークの損失および最終層の勾配が計算されてもよく、方法７００はブロック７１２に進んでもよい。
【００５５】
ブロック７１２では、各層についての新たな辞書および新たなインデクシング行列がクラスタリング方法により逆方向計算されてもよい。たとえば、各層についての新たな辞書および新たなインデクシング行列（たとえば新たなインデクシング行列３２４）がk平均クラスタリング方法により逆方向計算されてもよい。各層についての新たな辞書および新たなインデクシング行列が計算された後、方法７００はブロック７１４に進んでもよい。
【００５６】
ブロック７１４では、各層についてのマッピング辞書およびインデクシング行列が更新されてもよい。各層についてのマッピング辞書およびインデクシング行列が更新された後、方法５００はブロック７１６に進んでもよい。
【００５７】
ブロック７１６では、ネットワークは有効確認されてもよく、方法５００はブロック５１８に進んでもよい。
【００５８】
ブロック７１８では、収束が存在するかどうかについて判定がなされてもよい。収束がある（たとえば辞書およびインデクシング行列が実質的に変化していない）と判定される場合、方法７００はブロック７２０に進んでもよい。収束がないと判定される場合には、Epoch＝Epoch＋1とし、方法７００はブロック７０４に戻ってもよい。
【００５９】
ブロック７２０では、更新された辞書および／または更新されたインデクシング行列が出力されてもよい。
【００６０】
本開示の範囲から外れることなく方法７００に修正、追加または省略がなされてもよい。たとえば、方法７００の動作は異なる順序で実装されてもよい。さらに、概説された動作およびアクションは単に例として与えられているのであって、それらの動作およびアクションのいくつかは、開示される実施形態の本質を損なうことなく、より少数の動作およびアクションに組み合わされたり、あるいは追加的な動作およびアクションに展開されたりしてもよい。
【００６１】
図８は、本開示の少なくとも一つの実施形態に基づく、例示的なコンピューティング装置８００のブロック図である。たとえば、図１のシステム１００は、コンピューティング装置８００として実装されてもよい。コンピューティング装置８００は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、サーバー・コンピュータ、タブレット・コンピュータ、携帯電話、スマートフォン、携帯情報端末（PDA）、電子書籍リーダー装置、ネットワーク・スイッチ、ネットワーク・ルーター、ネットワーク・ハブ、他のネットワーキング装置または他の好適なコンピューティング装置を含んでいてもよい。
【００６２】
コンピューティング装置８００は、プロセッサ８１０、記憶装置８２０、メモリ８３０および通信コンポーネント８４０を含んでいてもよい。プロセッサ８１０、記憶装置８２０、メモリ８３０および／または通信コンポーネント８４０はみな、各コンポーネントが他のコンポーネントと通信しうるよう、通信上結合されていてもよい。コンピューティング装置８００は、本開示において記述される動作の任意のものを実行しうる。
【００６３】
一般に、プロセッサ８１０は、さまざまなコンピュータ・ハードウェアまたはソフトウェア・モジュールを含むいかなる好適な専用または汎用コンピュータ、コンピューティング・エンティティまたは処理装置を含んでいてもよく、いかなる適用可能なコンピュータ可読記憶媒体上に記憶された命令を実行するよう構成されていてもよい。たとえば、プロセッサ８１０はマイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ（DSP）、特定用途向け集積回路（ASIC）、フィールドプログラマブルゲートアレイ（FPGA）またはプログラム命令をインタープリットおよび／または実行するおよび／またはデータを処理するよう構成された他の任意のデジタルもしくはアナログ回路を含んでいてもよい。図８では単一のプロセッサとして示されているが、プロセッサ８１０は、本開示に記載される任意の数の動作を個々にまたは集団的に実行するよう構成された任意の数のプロセッサを含んでいてもよい。
【００６４】
いくつかの実施形態では、プロセッサ８１０は、プログラム命令をインタープリットおよび／または実行するおよび／または記憶装置８２０、メモリ８３０または記憶装置８２０とメモリ８３０に記憶されたデータを処理することを行なってもよい。いくつかの実施形態では、プロセッサ８１０は記憶装置４２０からプログラム命令を取ってきて、該プログラム命令をメモリ８３０にロードしてもよい。プログラム命令がメモリ８３０にロードされた後、プロセッサ８１０はプログラム命令を実行してもよい。
【００６５】
たとえば、いくつかの実施形態において、プロセス・チェーンの処理動作の一つまたは複数がデータ記憶８２０にプログラム命令として含められてもよい。プロセッサ８１０は、前記処理動作のうち一つまたは複数の前記プログラム命令を取ってきて、前記処理動作の前記プログラム命令をメモリ８３０にロードしてもよい。前記処理動作のプログラム命令がメモリ８３０にロードされた後、プロセッサ８１０はプログラム命令を実行してもよく、それによりコンピューティング装置８００はプログラム命令によって指令されるように、前記処理動作に関連する動作を実装しうる。
【００６６】
記憶装置８２０およびメモリ８３０は、コンピュータ実行可能な命令またはデータ構造を担持するまたは記憶するコンピュータ可読記憶媒体を含んでいてもよい。そのようなコンピュータ可読記憶媒体は、プロセッサ８１０のような汎用または特殊目的コンピュータによってアクセスされうるいかなる利用可能な媒体を含んでいてもよい。限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMまたは他の光ディスク記憶、磁気ディスク記憶または他の磁気記憶デバイス、フラッシュメモリ・デバイス（たとえば半導体メモリ・デバイス）またはコンピュータ実行可能な命令またはデータ構造の形で所望されるプログラム・コードを担持または記憶するために使用されうる、汎用または特殊目的コンピュータによってアクセスされうる他の任意の記憶媒体を含む、有体または非一時的なコンピュータ可読記憶媒体を含んでいてもよい。上記のものの組み合わせも、コンピュータ可読記憶媒体の範囲内に含まれうる。コンピュータ実行可能な命令はたとえば、プロセッサ８１０に、ある動作または動作群を実行させるよう構成された命令およびデータを含んでいてもよい。
【００６７】
いくつかの実施形態では、記憶装置８２０および／またはメモリ８３０は、深層学習システムに関連するデータを記憶してもよい。たとえば、記憶装置８２０および／またはメモリ８３０はエンコードされた活性化アドレス、エンコードされた重みアドレスおよび／または一つまたは複数の辞書を記憶してもよい。
【００６８】
通信コンポーネント８４０は、コンピューティング装置８００と別の電子装置との間の通信を許容するまたは容易にするよう構成された任意の装置、システム、コンポーネントまたはコンポーネントの集まりを含んでいてもよい。たとえば、通信コンポーネント８４０は、限定なしに、モデム、ネットワーク・カード（無線または有線）、赤外線通信装置、光通信装置、無線通信装置（たとえばアンテナ）および／またはチップセット（たとえばブルートゥース(登録商標)装置、802.6装置（たとえば都市圏ネットワーク（MAN））、Wi-Fi装置、WiMAX装置、セルラー通信設備など）および／またはその他を含んでいてもよい。通信コンポーネント８４０は、若干の例を挙げるとセルラー・ネットワーク、Wi-Fiネットワーク、MAN、光ネットワークなどのような任意のネットワークおよび／またはリモート装置を含め本開示に記載される他の任意の装置と、データが交換されることを許容しうる。
【００６９】
本開示の範囲から外れることなく、図８に修正、追加または省略がなされてもよい。たとえば、コンピューティング装置８００は、本開示において図示され、記述されているより多数または少数の要素を含んでいてもよい。たとえば、コンピューティング装置８００は、タブレットまたは携帯電話の画面のような統合された表示装置を含んでいてもよく、あるいはコンピューティング装置８００とは別個でありコンピューティング装置８００に通信上結合されているのでもよい外部モニター、プロジェクター、テレビジョンまたは他の好適な表示装置を含んでいてもよい。
【００７０】
本開示での用法では、用語「モジュール」または「コンポーネント」は、該モジュールまたはコンポーネントのアクションを実行するよう構成された特定のハードウェア実装および／またはコンピューティング・システムの汎用ハードウェア（たとえばコンピュータ可読媒体、処理装置など）に記憶および／または実行さうれるソフトウェア・オブジェクトまたはソフトウェア・ルーチンを指しうる。いくつかの実施形態では、本開示に記載される種々のコンポーネント、モジュール、エンジンおよびサービスは、（たとえば別個のスレッドとして）コンピューティング・システム上で実行されるオブジェクトまたはプロセスとして実装されてもよい。本開示に記載されるシステムおよび方法のいくつかは、一般に、（汎用ハードウェアに記憶および／または実行される）ソフトウェアで実装されるものとして記述されるが、個別のハードウェア実装またはソフトウェアと個別のハードウェア実装の組み合わせも可能であり、考えられている。本開示において、「コンピューティング装置」は、本開示で先に定義したような任意のコンピューティング・システムまたはコンピューティング・システム上で走る任意のモジュールもしくはモジュールの組み合わせでありうる。
【００７１】
本開示および特に付属の請求項（たとえば付属の請求項の本文）において使われる用語は一般に「オープン」な用語として意図されている（たとえば、用語「含む」は「含むがそれに限られない」と解釈されるべきであり、用語「もつ」は「少なくとも…をもつ」と解釈されるべきであり、用語「含む」は「含むがそれに限られない」と解釈されるべきであるなど）。
【００７２】
さらに、導入される請求項の記載の特定の数が意図される場合、そのような意図は請求項において明示的に記載される。そのような記載のない場合には、そのような意図はない。たとえば、理解の助けとして、以下の付属の請求項は、請求項の記載を導入するために「少なくとも一つの」および「一つまたは複数の」という導入句の使用を含むことがありうる。しかしながら、たとえ同じ請求項が導入句「一つまたは複数の」または「少なくとも一つの」および「a」または「an」のような不定冠詞を含むときでも、そのような句の使用は、不定冠詞「a」または「an」による請求項の記載の導入が、そのように導入された請求項の記載を含む何らかの特定の請求項を、そのような記載を一つだけ含む実施形態に限定することを含意していると解釈されるべきではない（たとえば、「a」および／または「an」は、「少なくとも一つの」または「一つまたは複数の」を意味するものと解釈されるべきである）。同じことは、請求項の記載を導入する定冠詞の使用についても成り立つ。
【００７３】
さらに、たとえ導入される請求項の記載の特定の数が明示的に記載されていたとしても、当業者は、そのような記載が、少なくともその記載された数を意味すると解釈されるべきであることを認識するであろう（たとえば、他の修飾語なしで単に「二つの記載」という記載は、少なくとも二つの記載または二つ以上の記載を意味する）。さらに、「Ａ、ＢおよびＣなどのうちの少なくとも一つ」または「Ａ、ＢおよびＣなどの一つまたは複数」に類似する慣用句が使われる事例においては、一般に、そのような構文はＡだけ、Ｂだけ、Ｃだけ、ＡおよびＢ両方、ＡおよびＣ両方、ＢおよびＣ両方またはＡ、ＢおよびＣ全部などを含むことが意図される。
【００７４】
さらに、明細書であれ請求項であれ図面であれ、二つ以上の代替的な用語を呈示するあらゆる離接的な語句は、該用語の一つを含む、該用語のいずれかを含むまたは該用語の両方を含む可能性を考えているものと理解されるべきである。たとえば、「ＡまたはＢ」という句は、「Ａ」または「Ｂ」または「ＡおよびＢ」の可能性を含むと理解されるべきである。
【００７５】
本開示において記載されるすべての例および条件付きの言辞は、本発明および発明者によって当技術分野の発展のために寄与される概念の理解において読者を助ける教育目的を意図されており、そのような特定的に挙げられる例および条件に限定することなく解釈されるものとする。本開示の実施形態について詳細に述べてきたが、本開示の精神および範囲から外れることなく、これにさまざまな変化、代替および変更をなすことができることは理解しておくべきである。
【００７６】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
ニューラル・ネットワークを更新する方法であって：
前記ニューラル・ネットワークの現在の層の演算行列についての勾配を、現在の層および前記ニューラル・ネットワークの少なくとも他の層の少なくとも一方のデータに基づいて計算する段階と；
計算された勾配に基づいて前記演算行列を更新する段階と；
更新された演算行列に基づいて現在の層のインデクシング行列を更新する段階とを含む、
方法。
（付記２）
インデクシング行列を更新する段階が、クラスタリング方法により前記インデクシング行列を更新することを含む、付記１記載の方法。
（付記３）
クラスタリング方法により前記インデクシング行列を更新することが、k平均クラスタリング方法により前記インデクシング行列を更新することを含む、付記２記載の方法。
（付記４）
前記更新された演算行列に基づき、前記クラスタリング方法により現在の層のマッチング辞書を更新する段階をさらに含む、付記２記載の方法。
（付記５）
前記クラスタリング方法により現在の層のマッチング辞書を更新する段階が、前記マッチング辞書および前記インデクシング行列を実質的に同時に更新することを含む、付記４記載の方法。
（付記６）
前記クラスタリング方法により現在の層のマッチング辞書を更新する段階が、k平均クラスタリング方法により前記マッチング辞書を更新することを含む、付記４記載の方法。
（付記７）
前記演算行列についての前記勾配および前記インデクシング行列に基づいて現在の層のマッチング辞書を更新する段階をさらに含む、付記１記載の方法。
（付記８）
前記マッチング辞書を更新する段階が：
前記演算行列についての前記勾配を前記インデクシング行列とマッチングして前記マッチング辞書についての勾配を計算し；
前記マッチング辞書、学習レートおよび前記マッチング辞書についての前記勾配に基づいて前記マッチング辞書を更新することを含む、
付記７記載の方法。
（付記９）
現在の層の演算行列についての勾配を計算する段階が、現在の層の活性化アレイに基づいて前記演算行列についての勾配を計算することを含む、付記１記載の方法。
（付記１０）
一つまたは複数のプロセッサによって実行されたときに前記一つまたは複数のプロセッサに動作を実行させる命令を含んでいる一つまたは複数の非一時的なコンピュータ可読媒体であって、前記動作は
ニューラル・ネットワークの現在の層の演算行列についての勾配を、現在の層および前記ニューラル・ネットワークの少なくとも他の層の少なくとも一方のデータに基づいて計算する段階と；
計算された勾配に基づいて前記演算行列を更新する段階と；
更新された演算行列に基づいて現在の層のインデクシング行列を更新する段階とを含む、
コンピュータ可読媒体。
（付記１１）
インデクシング行列を更新する段階が、クラスタリング方法により前記インデクシング行列を更新することを含む、付記１０記載のコンピュータ可読媒体。
（付記１２）
前記動作が、前記更新された演算行列に基づき、前記クラスタリング方法により現在の層のマッチング辞書を更新する段階をさらに含む、付記１１記載のコンピュータ可読媒体。
（付記１３）
前記クラスタリング方法により現在の層のマッチング辞書を更新する段階が、前記マッチング辞書および前記インデクシング行列を実質的に同時に更新することを含む、付記１２記載のコンピュータ可読媒体。
（付記１４）
前記動作が、前記演算行列についての前記勾配および前記インデクシング行列に基づいて現在の層のマッチング辞書を更新する段階をさらに含む、付記１０記載のコンピュータ可読媒体。
（付記１５）
前記マッチング辞書を更新する段階が：
前記演算行列についての前記勾配を前記インデクシング行列とマッチングして前記マッチング辞書についての勾配を計算し；
前記マッチング辞書、学習レートおよび前記マッチング辞書についての前記勾配に基づいて前記マッチング辞書を更新することを含む、
付記１４記載のコンピュータ可読媒体。
（付記１６）
複数の層を含むニューラル・ネットワークを更新するためのシステムであって、前記複数の層の各層は少なくとも一つの記憶装置および処理要素を含み、各処理要素は：
前記複数の層のうちの一つまたは複数の層のデータに基づいて演算行列についての勾配を計算し；
計算された勾配に基づいて前記演算行列を更新し；
更新された演算行列に基づいてインデクシング行列を更新するよう構成されている、
システム。
（付記１７）
各処理要素がさらに、クラスタリング方法により前記インデクシング行列を更新するよう構成されている、付記１６記載のシステム。
（付記１８）
各処理要素がさらに、前記更新された演算行列に基づき、前記クラスタリング方法によりマッチング辞書を更新するよう構成されている、付記１７記載のシステム。
（付記１９）
各処理要素がさらに、前記演算行列についての前記勾配および前記インデクシング行列に基づいてマッチング辞書を更新するよう構成されている、付記１６記載のシステム。
（付記２０）
各処理要素がさらに：
前記演算行列についての前記勾配を前記インデクシング行列とマッチングして前記マッチング辞書についての勾配を計算し；
前記マッチング辞書、学習レートおよび前記マッチング辞書についての前記勾配に基づいて前記マッチング辞書を更新するよう構成されている、
付記１９記載のシステム。
【符号の説明】
【００７７】
５０２  ネットワークを初期化
５０４  トレーニング・データセットをシャッフル
５０６  入力を準備
５０８  層iにおける活性化を順方向計算
５１０  ネットワークの損失および最終層の勾配を計算
５１２  層iにおける勾配を逆方向計算
５１４  すべてのDおよび／またはLを更新
５１６  DSNを有効確認
５１８  収束？
５２０  トレーニングを停止し、D、Lを出力
７０２  ネットワークを初期化
７０４  トレーニング・データセットをシャッフル
７０６  入力を準備
７０８  層iにおける活性化を順方向計算
７１０  ネットワークの損失および最終層の勾配を計算
７１２  クラスタリング法により新たなD'および新たなL'を逆方向計算
７１４  すべてのDおよびLを更新
７１６  DSNを有効確認
７１８  収束？
７２０  トレーニングを停止し、D、Lを出力
【図１】
2018018521.tif 000012
【図２】
2018018521.tif 000013
【図３】
2018018521.tif 000014
【図４】
2018018521.tif 000015
【図５】
2018018521.tif 000016
【図６】
2018018521.tif 000017
【図７】
2018018521.tif 000018
【図８】
2018018521.tif 000019