(57)【要約】  圧縮リカレントニューラルネットワーク(RNN)を実装するための、コンピュータストレージ媒体において符号化されるコンピュータプログラムを含む方法、システム、および装置。システムのうちの1つは、圧縮RNNを含み、圧縮RNNは、複数のリカレント層を含み、リカレント層はそれぞれ、それぞれのリカレント重み行列およびそれぞれの層間重み行列を有し、リカレント層のうちの少なくとも1つは、圧縮され、それにより、圧縮層のそれぞれのリカレント重み行列が、第1の圧縮重み行列および射影行列によって定義され、圧縮層のそれぞれの層間重み行列が、第2の圧縮重み行列および射影行列によって定義される。圧縮により、より効率的にデータを処理し、より少ないデータストレージを使用する性能を含むいくつかの技術的な利点が提供され得る。
2019509539.tif 000002
【特許請求の範囲】
【請求項１】
1つまたは複数のコンピュータによって実装される圧縮リカレントニューラルネットワーク(RNN)を含むシステムであって、
前記圧縮RNNが、複数のリカレント層を含み、
前記RNNの前記複数のリカレント層がそれぞれ、複数の時間ステップの時間ステップごとに、前記時間ステップについてのそれぞれの層入力を受信し、前記時間ステップについての前記層入力を処理して、前記時間ステップについてのそれぞれの層出力を生成するように構成され、
前記複数のリカレント層のそれぞれが、それぞれのリカレント重み行列Wh、およびそれぞれの層間重み行列Wxを有し、
前記複数のリカレント層のうちの少なくとも1つが圧縮され、それにより、前記圧縮された層のそれぞれのリカレント重み行列
【数１】
2019509539.tif 000041
が、第1の圧縮重み行列
【数２】
2019509539.tif 000042
および射影行列Plによって定義され、前記圧縮された層のそれぞれの層間重み行列
【数３】
2019509539.tif 000043
が、第2の圧縮重み行列
【数４】
2019509539.tif 000044
および前記射影行列Plによって定義される、
システム。
【請求項２】
前記複数のリカレント層がそれぞれ、時間ステップごとに、
前記層に対する現在の入力に、前の層についての層間重み行列を適用し、
前記層に対するリカレント入力に、前記層についてのリカレント重み行列を適用する
ことによって、前記時間ステップについての前記それぞれの層出力を生成する
ように構成されている、請求項1に記載のシステム。
【請求項３】
圧縮される前記複数のリカレント層のうちの前記少なくとも1つが、時間ステップごとに、
前記層に対するそれぞれのリカレント入力に、前記第1の圧縮重み行列および前記射影行列を適用することによって、部分的に、前記時間ステップについての前記それぞれの層出力を生成する
ように構成されている、請求項1または2に記載のシステム。
【請求項４】
前記それぞれのリカレント重み行列が、前記第1の圧縮重み行列と前記射影行列との積によって定義され、
前記それぞれの層間重み行列が、前記第2の圧縮重み行列と前記射影行列との積によって定義される、請求項1から3のいずれか一項に記載のシステム。
【請求項５】
前記RNNが、音響モデルである、請求項1から4のいずれか一項に記載のシステム。
【請求項６】
前記RNNが、音声認識モデルである、請求項1から4のいずれか一項に記載のシステム。
【請求項７】
前記RNNが、前記RNNの未圧縮バージョンの少なくとも68%圧縮である、請求項1から6のいずれか一項に記載のシステム。
【請求項８】
前記RNNのワード誤り率が、前記RNNの未圧縮バージョンのワード誤り率の5%内である、請求項7に記載のシステム。
【請求項９】
リカレントニューラルネットワーク(RNN)を圧縮するための方法であって、
前記RNNが、1つまたは複数のコンピュータによって実装され、複数のリカレント層を含み、
前記RNNの前記複数のリカレント層がそれぞれ、複数の時間ステップの時間ステップごとに、前記時間ステップについてのそれぞれの層入力を受信し、前記層入力を処理して、前記時間ステップについてのそれぞれの層出力を生成するように構成され、
各リカレント層が、それぞれのリカレント重み行列Wh、およびそれぞれの層間重み行列Wxを有し、
前記方法が、前記複数のリカレント層のうちの1つについて、
第1の圧縮重み行列
【数５】
2019509539.tif 000045
および射影行列Plを生成するステップであって、前記第1の圧縮重み行列と前記射影行列との積が、前記複数のリカレント層のうちの1つの前記リカレント重み行列を近似する、ステップと、
第2の圧縮重み行列
【数６】
2019509539.tif 000046
を前記第1の圧縮重み行列
【数７】
2019509539.tif 000047
および前記射影行列Plに基づいて生成するステップであって、前記第2の圧縮重み行列と前記射影行列との積が、前記複数のリカレント層のうちの1つの前記層間重み行列を近似する、ステップと
を含む、方法。
【請求項１０】
前記複数のリカレント層のうちの前記1つについて、
前記それぞれのリカレント重み行列を前記第1の圧縮重み行列と前記射影行列との積に置き換えるステップと、
前記それぞれの層間重み行列を前記第2の圧縮重み行列と前記射影行列との積に置き換えるステップと
をさらに含む、請求項9に記載の方法。
【請求項１１】
前記それぞれのランクZhおよびPが、前記Whのランクよりも小さい、請求項9または10に記載の方法。
【請求項１２】
前記それぞれのランクZxおよびPが、前記Wxのランクよりも小さい、請求項9から11のいずれか一項に記載の方法。
【請求項１３】
前記第2の圧縮重み行列Zxを生成するステップが、前記射影行列を反転するステップ、および前記反転された射影行列に前記層間重み行列を乗算するステップを含む、請求項9から12のいずれか一項に記載の方法。
【請求項１４】
特異値分解(SVD)圧縮技法を用いて、前記第1の圧縮重み行列Zhおよび前記射影行列Pを生成する、請求項9から13のいずれか一項に記載の方法。
【請求項１５】
前記複数の層のうちの前記1つが、l番目の層であり、前記l番目の層についての前記出力が、
【数８】
2019509539.tif 000048
によって表され、ただし、
【数９】
2019509539.tif 000049
が、時間tにおける前記l番目の層の隠れ層活性化出力を表し、
【数１０】
2019509539.tif 000050
が、前の(l-1)番目からの層間重み行列を表し、層blが、l番目の層バイアスベクトルを表し、σ(・)が、非線形活性化関数を示す、請求項9から14のいずれか一項に記載の方法。
【請求項１６】
前記RNNが、長短期メモリ(LSTM)RNNである、請求項9から15のいずれか一項に記載の方法。
【請求項１７】
前記第1の圧縮重み行列Zh、前記射影行列P、および前記第2の圧縮重み行列Zxを生成する前に、前記RNNを訓練するステップと、
前記第1の圧縮重み行列Zh、前記射影行列P、および前記第2の圧縮重み行列Zxを生成した後に、前記RNNを再訓練するステップと
をさらに含む、請求項9から16のいずれか一項に記載の方法。
【請求項１８】
前記RNNが、音響モデルである、請求項9から17のいずれか一項に記載の方法。
【請求項１９】
前記RNNが、音声認識モデルである、請求項9から17のいずれか一項に記載の方法。
【請求項２０】
1つまたは複数のコンピュータと、命令を記憶した1つまたは複数のストレージデバイスとを備えるシステムであって、前記命令は、前記1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに、請求項10から19のいずれか一項に記載のそれぞれの方法の動作を実行させるように動作可能である、システム。
【請求項２１】
命令により符号化される非一時的コンピュータストレージ媒体であって、前記命令は、1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに、請求項10から19のいずれか一項に記載のそれぞれの方法の動作を実行させるように動作可能である、非一時的コンピュータストレージ媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、ニューラルネットワークアーキテクチャおよびニューラルネットワークの圧縮に関する。
【背景技術】
【０００２】
ニューラルネットワークは、非線形ユニットの1つまたは複数の層を利用して、受信された入力についての出力を予測する機械学習モデルである。一部のニューラルネットワークは、出力層に加えて1つまたは複数の隠れ層を含む。各隠れ層の出力は、ネットワークの中の次の層、すなわち、次の隠れ層または出力層への入力として使用される。ネットワークの各層は、それぞれのパラメータセットの現在の値に従って、受信された入力から出力を生成する。一部のニューラルネットワーク、たとえば、時系列問題またはシーケンスツーシーケンス学習(リカレントニューラルネットワーク(recurrent neural network: RNN))について設計されているものは、リカレントループを組み込んでおり、このリカレントループにより、可変の隠れ状態の形態にあるメモリは、データ入力間の層内に持続することが可能になる。RNNの変形形態、長短期メモリ(long short-term memory: LSTM)ニューラルネットワークは、データ入力間のデータの持続性を制御するために、各層内に複数のゲートを含んでいる。一部のニューラルネットワーク、たとえば、時系列問題またはシーケンスツーシーケンス学習について設計されているものは、リカレントループを組み込んでおり、このリカレントループにより、可変の隠れ状態の形態にあるメモリは、データ入力間の層内に持続することが可能になる。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】H. SAK、A. SENIOR、およびF. BEAUFAYS、「LONG SHORT-TERM MEMORY RECURRENT NEURAL NETWORK ARCHITECTURES FOR LARGE SCALE ACOUSTIC MODELING」、PROC. OF INTERSPEECH、2014、PP. 338〜342
【発明の概要】
【課題を解決するための手段】
【０００４】
本明細書は、リカレントニューラルネットワークアーキテクチャに関する技術について説明する。概して、リカレントニューラルネットワークは、圧縮される少なくとも1つのリカレントニューラルネットワーク層を含む。具体的には、圧縮リカレント層についてのリカレント重み行列と層間重み行列とが、共通の射影行列を用いて一緒に圧縮される。
【０００５】
1つまたは複数のコンピュータのシステムが特定の動作または行為を行うように構成されているということは、システムがその上に、動作に際してシステムに動作または行為を行わせるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せをインストールしていることを意味する。1つまたは複数のコンピュータプログラムが特定の動作または行為を行うように構成されているということは、1つまたは複数のプログラムが、データ処理装置によって実行されたときに装置に動作または行為を行わせる命令を含んでいることを意味する。
【０００６】
本明細書において説明される主題は、次の利点のうちの1つまたは複数を実現するために特定の諸実施形態において実装され得る。リカレントニューラルネットワークの中のリカレント層のうちの1つまたは複数の重み行列を圧縮することによって、リカレントニューラルネットワークは、より効率的にデータを処理し、より少ないデータストレージを使用することができるように構成されている。具体的には、1つまたは複数の圧縮リカレント層を有するリカレントニューラルネットワークは、圧縮リカレント層の圧縮重み行列が未圧縮リカレントニューラルネットワークの中の対応する層の重み行列よりも少ないパラメータを有することにより、より少ないデータストレージを使用し、より高速に入力を処理することができると同時に、フルサイズの、たとえば未圧縮リカレントニューラルネットワークに匹敵する性能を達成するように効果的に訓練され得る。実際、圧縮リカレントニューラルネットワークは計算フットプリントがより小さいので、未圧縮ネットワークがモバイルデバイスにおいて動作することができない場合ですら、圧縮ネットワークは、限定されたストレージおよび処理パワーを有するモバイルデバイスにおいてリアルタイムに入力を処理するように効果的に実装でき得る。
【０００７】
本明細書の主題の1つまたは複数の実施形態の詳細については、添付の図面および下記の説明に記載される。主題の他の特徴、態様、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【０００８】
【図１】一例示的なニューラルネットワークシステムを示す図である。
【図２】リカレントニューラルネットワークを圧縮するための一例示的な方法の流れ図である。
【図３】特定のリカレント層についての層間重み行列とリカレント重み行列とを圧縮するための一例示的な方法の流れ図である。
【発明を実施するための形態】
【０００９】
様々な図面の中の同様の参照番号および表示は、同様の要素を示す。
【００１０】
図1は、例示的なニューラルネットワークシステム100を示している。ニューラルネットワークシステム100は、1つまたは複数の場所の中の1つまたは複数のコンピュータ上のコンピュータプログラムとして実装されるシステムの一例であり、ここで、後述のシステム、構成要素、および技法が実装される。
【００１１】
ニューラルネットワークシステム100は、複数の時間ステップの時間ステップごとにそれぞれのニューラルネットワーク入力を受信し時間ステップごとにそれぞれのニューラルネットワーク出力を生成する機械学習システムである。つまり、複数の時間ステップの時間ステップごとに、ニューラルネットワークシステム100は、ニューラルネットワーク入力を受信し、ニューラルネットワーク入力を処理して、ニューラルネットワーク出力を生成する。たとえば、所与の時間ステップtにおいて、ニューラルネットワークシステム100は、ニューラルネットワーク入力102を受信し、ニューラルネットワーク出力142を生成することができる。
【００１２】
ニューラルネットワークシステム100は、生成されたニューラルネットワーク出力を出力データレポジトリに記憶すること、または他の何らかの当座の目的に使用するためにニューラルネットワーク出力を提供することができる。
【００１３】
ニューラルネットワークシステム100は、任意の種類のデジタルデータ入力を受信し、その入力に基づいて、任意の種類のスコアまたは分類出力を生成するように構成され得る。
【００１４】
たとえば、ニューラルネットワークシステム100への入力が、画像、または画像から抽出されたフィーチャである場合、所与の画像についてニューラルネットワークシステム100によって生成される出力は、1組のオブジェクトカテゴリそれぞれについてのスコアとすることができ、各スコアは、画像がカテゴリに属するオブジェクトの画像を含んでいることの推定尤度(estimated likelihood)を表す。
【００１５】
別の例として、ニューラルネットワークシステム100への入力が、Internetリソース(たとえば、ウェブページ)、ドキュメント、またはドキュメントの一部分、あるいはInternetリソース、ドキュメント、またはドキュメントの一部分から抽出されるフィーチャである場合、所与のInternetリソース、ドキュメント、またはドキュメントの一部分についてニューラルネットワークシステム100によって生成される出力は、1組のトピックそれぞれについてのスコアとすることができ、各スコアは、Internetリソース、ドキュメント、またはドキュメント部分がトピックに関することの推定尤度を表す。
【００１６】
別の例として、ニューラルネットワークシステム100への入力が、ユーザについての個人向け推薦のフィーチャ、たとえば、推薦についてコンテキストを特徴付けるフィーチャ、たとえば、ユーザがとった以前の行為を特徴付けるフィーチャである場合、ニューラルネットワークシステム100によって生成される出力は、1組のコンテンツ品目それぞれについてのスコアとすることができ、各スコアは、ユーザがコンテンツ品目の推薦を受けることに好意的に応答することになることの推定尤度を表す。これらの例のうちのいくつかにおいては、ニューラルネットワークシステム100は、ユーザにコンテンツ推薦を行う強化学習システムの一部である。
【００１７】
別の例として、ニューラルネットワークシステム100への入力が、1つの言語におけるテキストである場合、ニューラルネットワークシステム100によって生成される出力は、別の言語における1組のテキスト片それぞれについてのスコアとすることができ、各スコアは、他の言語におけるテキスト片が入力テキストの他の言語への適切な変換であることの推定尤度を表す。
【００１８】
別の例として、ニューラルネットワークシステム100への入力が、音声発話のフィーチャである場合、ニューラルネットワークシステム100によって生成される出力は、1組のテキスト片それぞれについてのスコアとすることができ、各スコアは、テキスト片が、発話についての正確な転写であることの推定尤度を表す。
【００１９】
別の例として、ニューラルネットワークシステム100への入力が、画像である場合、ニューラルネットワークシステム100によって生成される出力は、1組のテキスト片それぞれについてのスコアとすることができ、各スコアは、テキスト片が入力画像の中に存在するテキストであることの推定尤度を表す。
【００２０】
具体的には、ニューラルネットワークシステム100は、リカレントニューラルネットワーク110を含み、このリカレントニューラルネットワーク110は、ひいては、複数のリカレント層、すなわち、少なくとも1つの圧縮リカレント層l 120とリカレント層l+1 130とを含む。リカレントニューラルネットワーク110は、時間ステップごとに、時間ステップにおいてニューラルネットワーク入力を受信し、ニューラルネットワーク入力を処理して、時間ステップにおいてニューラルネットワーク出力を生成するように構成されている。
【００２１】
圧縮リカレント層120およびリカレント層130に加えて、リカレントニューラルネットワーク110は、1つまたは複数の他の構成要素、たとえば他のリカレント層、およびリカレントでない他のニューラルネットワーク層などを含んでもよい。
【００２２】
たとえば、リカレントニューラルネットワーク110は、互いに順番にスタックするように構成された圧縮リカレント層120およびリカレント層130を含む複数のリカレント層と、時間ステップごとに、スタックの中の最高位のリカレント層から、任意選択的に、スタックの中の他のリカレント層から層出力を受信し、層出力を処理して、時間ステップにおいてニューラルネットワーク出力142を生成する出力層とを含むディープリカレントネットワークとすることができる。
【００２３】
圧縮リカレント層120は、時間ステップごとに、現在の層入力(current layer input)122を受信し、現在の層入力122、リカレント層120の現在の層状態、およびリカレント層120の現在の層出力を処理して新規層出力126を生成し、現在の層状態を更新して新規層状態124を生成するように構成されている。
【００２４】
リカレントニューラルネットワーク110の構成によっては、現在の層入力122は、ニューラルネットワーク入力102であっても、またはリカレントニューラルネットワーク110の異なる構成要素によって生成される出力であってもよい。
【００２５】
加えて、第1のステップ後の各時間ステップの場合、現在の層状態は、先行する時間ステップにおいて生成される新規層状態である。第1の時間ステップの場合、現在の層状態は、所定の初期層状態とすることができる。
【００２６】
リカレント層130は、時間ステップごとに、新規層出力126を受信し、新規層出力126、およびリカレント層130の現在の層状態を処理して新規層出力136を生成し、現在の層状態を更新して新規層状態134を生成するように構成されている。
【００２７】
リカレントニューラルネットワーク110の構成によっては、新規層出力126は、リカレントニューラルネットワーク110の中の別のリカレント層への入力として、または異なるタイプのニューラルネットワーク構成要素、たとえば出力層への、もしくは異なるタイプのニューラルネットワーク層への入力として提供されることも、あるいはリカレントニューラルネットワーク110のニューラルネットワーク出力142として提供されることもある。
【００２８】
リカレントニューラルネットワーク110の中の各リカレント層は、2つの対応する重み行列、すなわち、リカレント重み行列および層間重み行列を有する。概して、所与の時間ステップにおける処理中、所与のリカレント層についてのリカレント重み行列は、先行する時間ステップにおいてリカレント層によって生成される層出力に適用され、層間重み行列は、所与の時間ステップにおいてリカレント層によって生成される層出力に適用される。したがって、所与のリカレント層についてのリカレント重み行列は、概して、所与のリカレント層によって適用されることになり、層間重み行列は、概して、時間ステップにおいて所与のリカレント層によって生成される層出力を受信する次の層、たとえば、スタックの中の所与の層の上の次の層によって適用されることになる。
【００２９】
いくつかの実装形態においては、リカレントニューラルネットワーク110は、標準リカレントニューラルネットワークであり、そのため、各リカレント層の状態もまた、リカレント層の層出力として使用される。つまり、所与の時間ステップについての層の更新された状態もまた、その所与の時間ステップの層についての層出力として使用される。したがって、新規層出力136は、新規層状態134と同じであり、新規層出力126は、新規層状態124と同じである。
【００３０】
これらの実装形態においては、圧縮リカレント層120またはリカレント層130のいずれも圧縮されていないのであれば、圧縮リカレント層120は、時間ステップtにおいて、次を満たす層出力
【００３１】
【数１】
2019509539.tif 000003
【００３２】
126(および新規層状態124)を生成するように構成されていることになる:
【００３３】
【数２】
2019509539.tif 000004
【００３４】
ただし、
【００３５】
【数３】
2019509539.tif 000005
【００３６】
は、リカレントニューラルネットワーク110の中の層120の前の層についての層間重み行列であり、
【００３７】
【数４】
2019509539.tif 000006
【００３８】
は、層120の前の層の層出力であり、
【００３９】
【数５】
2019509539.tif 000007
【００４０】
は、リカレント層120の未圧縮バージョンについてのリカレント重み行列であり、
【００４１】
【数６】
2019509539.tif 000008
【００４２】
は、現在の層状態(および先行する時間ステップからの層出力)であり、blは、層120についてのバイアスベクトルであり、σ(・)は、非線形活性化関数を示す。
【００４３】
リカレント層130は、時間ステップtにおいて、次を満たす層出力
【００４４】
【数７】
2019509539.tif 000009
【００４５】
136(および新規層状態134)を生成するように構成されていることになる:
【００４６】
【数８】
2019509539.tif 000010
【００４７】
ただし、
【００４８】
【数９】
2019509539.tif 000011
【００４９】
は、層120の未圧縮バージョンについての層間重み行列であり、
【００５０】
【数１０】
2019509539.tif 000012
【００５１】
は、リカレント層120の層出力126であり、
【００５２】
【数１１】
2019509539.tif 000013
【００５３】
は、リカレント層130についてのリカレント重み行列であり、
【００５４】
【数１２】
2019509539.tif 000014
【００５５】
は、リカレント層130についての現在の層状態(および先行する時間ステップからの層出力)であり、bl+1は、リカレント層130についてのバイアスベクトルであり、σ(・)は、非線形活性化関数を示す。
【００５６】
しかしながら、少なくとも圧縮リカレント層120は圧縮されているので、圧縮リカレント層120についての層間重み行列およびリカレント重み行列は、修正されている。
【００５７】
具体的には、圧縮リカレント層は、リカレント行列および層間行列がそれぞれ、それぞれのより低いランクの近似値に置き換えられているリカレント層である。つまり、圧縮リカレント層についてのリカレント重み行列は、リカレント重み行列よりも低いランクを有する行列に置き換えられており、層間重み行列は、層間重み行列よりも低いランクを有する行列に置き換えられている。その際、リカレント重み行列および層間重み行列におけるパラメータの数は、削減されている。
【００５８】
具体的には、本明細書において説明される圧縮スキームを用いて、圧縮リカレント層120は、圧縮リカレント層120のリカレント重み行列
【００５９】
【数１３】
2019509539.tif 000015
【００６０】
および層間重み行列
【００６１】
【数１４】
2019509539.tif 000016
【００６２】
をそれぞれの第1のおよび第2の圧縮重み行列
【００６３】
【数１５】
2019509539.tif 000017
【００６４】
および
【００６５】
【数１６】
2019509539.tif 000018
【００６６】
、ならびに対応する射影行列Plに置き換えることによって圧縮されている。特に、リカレント重み行列
【００６７】
【数１７】
2019509539.tif 000019
【００６８】
と、層間重み行列
【００６９】
【数１８】
2019509539.tif 000020
【００７０】
とは、射影行列を決定することによって一緒に圧縮され、それにより、
【００７１】
【数１９】
2019509539.tif 000021
【００７２】
は、
【００７３】
【数２０】
2019509539.tif 000022
【００７４】
によって定義され、
【００７５】
【数２１】
2019509539.tif 000023
【００７６】
は、
【００７７】
【数２２】
2019509539.tif 000024
【００７８】
によって定義される。第1のおよび第2の圧縮重み行列ならびに射影行列はそれぞれ、層間重み行列およびリカレント重み行列のランクよりも低いランクを有する。リカレント層を圧縮してパラメータの数を削減し、高性能を維持するための技法については、図3を参照してより詳細に後述する。
【００７９】
したがって、圧縮後、リカレントニューラルネットワーク110が標準リカレントニューラルネットワークである場合には、圧縮リカレント層120によって生成される層出力は、
【００８０】
【数２３】
2019509539.tif 000025
【００８１】
を満たし、リカレント層130によって生成される層出力は、
【００８２】
【数２４】
2019509539.tif 000026
【００８３】
を満たす。
【００８４】
いくつかの他の実装形態においては、リカレントニューラルネットワーク110の中のリカレント層は、長短期メモリ(LSTM)層であり、所与のLSTM層の状態とLSTM層の層出力は、異なる。層出力を生成するために、所与のLSTM層が複数のゲートを現在の層入力および現在の層状態に適用して新規層出力を生成し、現在の層状態を更新して新規層状態を生成する。したがって、層出力生成の一部として、LSTMは、概して、現在の層入力と現在の層状態との両方に複数の異なる重み行列を適用することになる。LSTM層の演算については、H. Sak、A. Senior、およびF. Beaufays、「Long short-term memory recurrent neural network architectures for large scale acoustic modeling」、Proc. of Interspeech、2014、pp. 338〜342において、より詳細に記載されている。
【００８５】
リカレント層がLSTM層である場合、所与のLSTM層についてのリカレント重み行列は、所与のLSTM層が現在の層状態に適用する重み行列の垂直連結(vertical concatenation)であると見なすことができる。所与のLSTM層についての層間重み行列は、次のLSTM層が所与のLSTM層によって生成される層出力に適用する重み行列の垂直連結であると見なすことができる。
【００８６】
図1の例においては、圧縮リカレント層120しか圧縮されていないが、いくつかの場合においては、リカレントニューラルネットワーク110の中の複数のリカレント層またはさらにはリカレント層のすべてがそれぞれ、図3を参照して後述するように圧縮され得る。
【００８７】
いくつかの実装形態においては、リカレント重み行列と層間重み行列とを一緒に圧縮して、射影行列が、本明細書に説明するようにリカレント重み行列および層間重み行列にわたって共有されると、重み行列のより効率的なパラメータ化が可能になり得る。リカレントニューラルネットワーク110が音声認識モデルであるいくつかの実装形態においては、上述の技法は、少なくとも68%がリカレントニューラルネットワーク110を圧縮するために使用され、未圧縮モデルの5%内のワード誤り率を達成し得る。
【００８８】
図2は、リカレントニューラルネットワークを圧縮するための一例示的な方法200の流れ図である。便宜上、方法200については、1つまたは複数の場所に置かれている1つまたは複数のコンピュータのシステムによって行われるように説明する。たとえば、ニューラルネットワークシステム、たとえば、本明細書に従って適切にプログラミングされた図1のニューラルネットワークシステム100は、方法200を行うことができる。
【００８９】
システムは、訓練データに関して未圧縮リカレントニューラルネットワークを訓練して(ステップ202)、未圧縮リカレントニューラルネットワークの層の重み行列におけるパラメータの訓練値を決定する。たとえば、システムは、図1のリカレントニューラルネットワーク110を、ネットワークの中のリカレント層がいずれも圧縮されないうちに訓練することができる。システムは、従来のリカレントニューラルネットワーク訓練技法、たとえば、経時的バックプロパゲーション(backpropagation)による確率的勾配降下法を用いて、未圧縮リカレントニューラルネットワークを訓練することができる。
【００９０】
システムは、リカレントニューラルネットワークの中のリカレント層のうちの1つまたは複数を圧縮する(ステップ204)。具体的には、圧縮すべきリカレント層ごとに、システムは、第1の圧縮重み行列
【００９１】
【数２５】
2019509539.tif 000027
【００９２】
および射影行列Plを生成し、それにより、第1の圧縮重み行列と射影行列との積は、リカレント層のリカレント重み行列
【００９３】
【数２６】
2019509539.tif 000028
【００９４】
を近似し、第2の圧縮重み行列
【００９５】
【数２７】
2019509539.tif 000029
【００９６】
を第1の圧縮重み行列
【００９７】
【数２８】
2019509539.tif 000030
【００９８】
および射影行列Plに基づいて生成し、それにより、第2の圧縮重み行列と射影行列との積は、リカレント層の層間重み行列を近似する。特定のリカレント層の圧縮については、図3を参照してより詳細に後述する。所与の層の圧縮は、層のリカレント重み行列および層間重み行列にのみ依存しており、すなわち、他のいずれの層の行列にも依存していないので、システムは、リカレントニューラルネットワークの中の単一のリカレント層、複数のリカレント層、またはリカレント層のすべてを圧縮することができる。
【００９９】
システムは、圧縮重み行列を用いてリカレントニューラルネットワークを再構成する(ステップ206)。つまり、圧縮されたリカレント層ごとに、システムは、層についてのリカレント重み行列を第1の圧縮重み行列と射影行列との積に、ならびに層についての層間重み行列を第2の圧縮重み行列と射影行列との積に置き換える。第1の圧縮重み行列と射影行列との積は、リカレント重み行列よりも低いランクであり、第2の圧縮重み行列と射影行列との積は、層の層間重み行列よりも低いランクであるので、行列は、未圧縮ニューラルネットワークの中のそれらの対応する行列よりも少ないパラメータを含む。
【０１００】
任意選択的には、リカレントニューラルネットワークを再構成した後、システムは、追加の訓練データに関して再構成されたニューラルネットワークを訓練することによって圧縮ニューラルネットワークの性能を微調整して、射影行列および圧縮重み行列のランクを維持する、すなわち、射影行列および圧縮重み行列のランクを強制的に上げずに、パラメータの訓練値をさらに調節することができる。
【０１０１】
システムは、ニューラルネットワーク入力を処理するのに効果的に使用され得る訓練されたニューラルネットワーク、すなわち、訓練されたリカレントニューラルネットワークをインスタンス化する際に使用するために再構成されたニューラルネットワークの重み行列を記憶する(ステップ208)。いくつかの場合においては、重み行列の記憶に加えて、またはその代わりに、システムは、訓練されたリカレントニューラルネットワークを実装する際に使用するために、重み行列と、ニューラルネットワークの構成を定義する他のデータとを別のシステムに送信することができる。たとえば、システムは、構成データをモバイルデバイスに送信して、圧縮リカレントニューラルネットワークをモバイルデバイスにおいて実装することを可能にし得る。
【０１０２】
図3は、特定のリカレント層についての層間重み行列とリカレント重み行列とを圧縮するための一例示的な方法300の流れ図である。便宜上、方法300については、1つまたは複数の場所に置かれている1つまたは複数のコンピュータのシステムによって行われるように説明する。たとえば、ニューラルネットワークシステム、たとえば、本明細書に従って適切にプログラミングされた図1のニューラルネットワークシステム100は、方法300を行うことができる。
【０１０３】
システムは、特定のリカレント層についてのリカレント重み行列Whの特異値分解(singular value decomposition: SVD)を決定する(ステップ302)。リカレント重み行列の特異値分解は、行列Whの、第1のユニタリ行列U、矩形対角行列Σ、および第2のユニタリ行列Vへの分解である。具体的には、SVDは、
Wh=UΣVT
を満たす。
【０１０４】
システムは、知られているSVD分解技法を用いて、リカレント重み行列のSVDを決定することができる。たとえば、システムは、まず、リカレント重み行列を二重対角行列に縮小し、次いで、反復法、たとえば、QRアルゴリズムの変形形態を用いて、二重対角行列のSVDを計算することができる。
【０１０５】
システムは、SVDを切り詰めて、第1の圧縮重み行列
【０１０６】
【数２９】
2019509539.tif 000031
【０１０７】
および射影行列Plを生成する(ステップ304)。具体的には、システムは、(i)矩形対角行列Σにトップ、すなわち最高のl値を保ち、残りの値をゼロに設定すること、(ii)各特異ベクトル、すなわち、第1のユニタリ行列Uの列にトップl値を保ち、残りの値をゼロに設定すること、および(iii)各特異ベクトル、すなわち、第2のユニタリ行列Vの列にトップl値を保ち、残りの値をゼロに設定することによって、SVDを切り詰める。
【０１０８】
概して、lは、重み行列の次元よりも小さい、リカレント層に適用される圧縮の程度を制御するように構成されている値である。つまり、lの値が小さければ小さいほど、適用される圧縮の程度は高くなる。
【０１０９】
いくつかの実装形態においては、lは、所定の値である。
【０１１０】
いくつかの他の実装形態においては、システムは、lを決定し、それにより、切り詰められたSVDは、最大でもSVD演算における被説明分散の所定の閾値比τを保つ。具体的には、システムは、lを(i)矩形対角行列Σにおけるトップ、すなわち、最高のl値の2乗の和と、(ii)矩形対角行列Σにおける値すべての2乗の和との比率が、τ未満でありながらも、最も大きい値であるように設定することができる。
【０１１１】
これらの実装形態においては、システムが、リカレントニューラルネットワーク内の複数のリカレント層を圧縮している場合、値lは、可能性として複数の層間で異なることになり、すなわち、異なるlは、異なる行列のSVDについて上記の基準を満たすことになるからである。
【０１１２】
一旦、システムがSVDを切り詰めて、切り詰められた第1のユニタリ行列
【０１１３】
【数３０】
2019509539.tif 000032
【０１１４】
、切り詰められた矩形対角行列
【０１１５】
【数３１】
2019509539.tif 000033
【０１１６】
、および切り詰められた第2のユニタリ行列
【０１１７】
【数３２】
2019509539.tif 000034
【０１１８】
を生成すると、システムは、第1の圧縮重み行列
【０１１９】
【数３３】
2019509539.tif 000035
【０１２０】
を
【０１２１】
【数３４】
2019509539.tif 000036
【０１２２】
と設定し、射影行列Plを
【０１２３】
【数３５】
2019509539.tif 000037
【０１２４】
と設定することができる。
【０１２５】
システムは、第2の圧縮重み行列
【０１２６】
【数３６】
2019509539.tif 000038
【０１２７】
を第1の圧縮重み行列
【０１２８】
【数３７】
2019509539.tif 000039
【０１２９】
および射影行列Plから決定する(ステップ306)。具体的には、システムは、次の最小2乗問題:
【０１３０】
【数３８】
2019509539.tif 000040
【０１３１】
を解くことによって第2の圧縮重み行列を決定し、ただし、||X||Fは、行列Xのフロベニウスノルムを示す。
【０１３２】
本明細書において説明される主題および機能動作の諸実施形態は、本明細書に開示されている構造体およびそれらの構造的均等物を含む、デジタル電子回路において、有形具現化コンピュータソフトウェアまたはファームウェアにおいて、コンピュータハードウェアにおいて、あるいはそれらのうちの1つまたは複数の組合せにおいて実装され得る。本明細書において説明される主題の諸実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置によって実行される、またはデータ処理装置の動作を制御する、有形の非一時的プログラムキャリアにおいて符号化されるコンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。代替として、または加えて、プログラム命令は、データ処理装置によって実行されるのに適切な受信装置に送信される情報を符号化するために生成される人工的に生成された伝搬信号、たとえば、機械生成の電気、光学、または電磁信号において符号化され得る。コンピュータストレージ媒体は、機械可読ストレージデバイス、機械可読ストレージ基板、ランダムもしくはシリアルアクセスメモリデバイス、またはそれらのうちの1つもしくは複数の組合せとすることができる。
【０１３３】
「データ処理装置(data processing apparatus)」という用語は、データ処理ハードウェアを示し、例として、プログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。装置はまた、専用論理回路機構、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)とすることも、またはこれをさらに含むこともできる。装置は、任意選択的に、ハードウェアに加えて、コンピュータプログラムについての実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらのうちの1つもしくは複数の組合せを構成するコードを含むことができる。
【０１３４】
(プログラム、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプト、もしくはコードとも呼ばれ、または記載されることもある)コンピュータプログラムは、コンパイル型もしくは解釈型言語、または宣言型もしくは手続き型言語を含むプログラミング言語の任意の形態で記述され得、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、もしくはコンピューティング環境における使用に適している他のユニットを含む任意の形態で配置され得る。コンピュータプログラムは、ファイルシステムの中のファイルに対応することができるが、対応する必要はない。プログラムは、他のプログラムまたはデータ、たとえばマークアップ言語ドキュメントに記憶されている1つまたは複数のスクリプトを保持するファイルの一部分の中に、問題のプログラムに専用の単一のファイルの中に、あるいは複数の協調ファイル、たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの一部分を記憶するファイルの中に記憶され得る。コンピュータプログラムは、1つのコンピュータあるいは、1つのサイトに置かれている、または複数のサイトにわたって分散され、通信ネットワークによって相互接続されている複数のコンピュータにおいて実行されるように配置され得る。
【０１３５】
本明細書において説明される方法および論理流れ図は、1つまたは複数のコンピュータプログラムを実行して、入力データを操作し、出力を生成することによって機能を果たす1つまたは複数のプログラマブルコンピュータによって行われ得る。方法および論理流れ図はまた、専用論理回路機構、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって行われることも、あるいは装置がまた、この専用論理回路機構として実装されることもある。
【０１３６】
コンピュータプログラムの実行に適しているコンピュータは、例として、汎用もしくは専用のマイクロプロセッサ、またはその両方、あるいは他の任意の種類の中央処理装置に基づき得る。概して、中央処理装置は、読取り専用メモリもしくはランダムアクセスメモリ、またはその両方から命令およびデータを受信することになる。コンピュータの必須要素は、命令を行う、または実行するための中央処理装置、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。概して、コンピュータはまた、データを記憶するための1つまたは複数のマスストレージデバイス、たとえば、磁気、磁気光学ディスク、または光学ディスクを含み、あるいはこれらの間でデータを送信もしくは受信する、またはその両方を行うために、これらに動作可能に結合されることになる。しかしながら、コンピュータは、そのようなデバイスを有する必要はない。その上、コンピュータは、別のデバイス、たとえば、いくつか例を挙げると、モバイル電話、パーソナルデジタルアシスタント(personal digital assistant: PDA)、モバイルオーディオまたはビデオプレイヤ、ゲームコンソール、全地球測位システム(Global Positioning System: GPS)受信機、またはポータブルストレージデバイス、たとえば、ユニバーサルシリアルバス(universal serial bus: USB)フラッシュドライブに埋込み可能である。
【０１３７】
コンピュータプログラム命令およびデータを記憶するのに適したコンピュータ可読媒体はすべて、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリ        デバイス;磁気ディスク、たとえば内部ハードディスクもしくはリムーバブルディスク;磁気光学ディスク;ならびにCD-ROMおよびDVD-ROMディスクを含む、不揮発性メモリ、媒体、およびメモリデバイスの形態を含む。プロセッサおよびメモリは、専用論理回路機構によって補足可能、またはその専用論理回路機構の中に組込み可能である。
【０１３８】
ユーザとの対話を可能にするために、本明細書において説明されている主題の諸実施形態は、情報をユーザに表示するためのディスプレイデバイス、たとえば、CRT(ブラウン管(cathode ray tube))またはLCD(液晶ディスプレイ(liquid crystal display))モニタ、およびユーザが入力をコンピュータに与えることができるキーボードおよびポインティングデバイス、たとえばマウスまたはトラックボールを有するコンピュータにおいて実装され得る。他の種類のデバイスが、同様にユーザとの対話を可能にするために使用されてもよく、たとえば、ユーザに提供されるフィードバックは、感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックの任意の形態であってよく、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態で受け取ることができる。加えて、コンピュータは、ユーザが使用するデバイスとドキュメントを送受信することによって、たとえば、ウェブブラウザから受信した要求に応答して、ユーザのクライアントデバイスにおけるウェブブラウザにウェブページを送信することによって、ユーザと対話することができる。
【０１３９】
本明細書において説明される主題の諸実施形態は、バックエンド構成要素を、たとえばデータサーバとして含む、またはミドルウェア構成要素、たとえばアプリケーションサーバを含む、またはフロントエンド構成要素、たとえばグラフィカルユーザインターフェースもしくはユーザが本明細書において説明される主題の一実装形態と対話することができるウェブブラウザを有するクライアントコンピュータを含むコンピューティングシステム、あるいは1つまたは複数のそのようなバックエンド、ミドルウェア、もしくはフロントエンド構成要素の任意の組合せにおいて実装され得る。システムの構成要素は、デジタルデータ通信、たとえば、通信ネットワークの任意の形態または媒体によって相互接続され得る。通信ネットワークの例には、ローカルエリアネットワーク(「LAN」)および広域ネットワーク(「WAN」)、たとえばInternetが含まれる。
【０１４０】
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは、概して、互いにリモートであり、典型的には、通信ネットワークを介して対話する。クライアントとサーバとの関係性は、それぞれのコンピュータにおいて動作し、互いにクライアント/サーバ関係性を有するコンピュータプログラムにより生まれる。
【０１４１】
本明細書は、多くの具体的な実装形態詳細を含んでいるが、これらは、いかなる発明の範囲についてもまたは特許請求され得る範囲についても限定と見なすべきでなく、特定の発明の特定の実施形態に固有であり得る特徴の説明と見なすべきである。別個の実施形態の文脈で本明細書において説明されている特定の特徴はまた、単一の実施形態における組合せで実装されてもよい。逆に、単一の実施形態の文脈で説明されている様々な特徴もまた、複数の実施形態において別個に、または任意の適切な副組合せで実装されてもよい。その上、特徴については、ある種の組合せにおける行為として上述され、したがって最初に特許請求され得るが、特許請求された組合せからの1つまたは複数の特徴は、いくつかの場合においては、組合せから削除され得、特許請求された組合せは、副組合せまたは副組合せの変形形態を対象とすることができる。
【０１４２】
同様に、動作は、図面においては特定の順序で示されているが、これは、所望の結果を達成するために、そのような動作が図示の特定の順序もしくは連続的な順序で行われる必要がある、または例示の動作がすべて行われる必要があると理解すべきではない。特定の状況においては、マルチタスクの並列処理が有利である場合もある。その上、上述の諸実施形態における様々なシステムモジュールおよび構成要素の分離は、すべての実施形態においてそのような分離が必要であると理解すべきではなく、所望のプログラムコンポーネントおよびシステムが、概して、単一のソフトウェア製品に一緒に一体化され、または複数のソフトウェア製品にパッケージ化され得ることを理解すべきである。
【０１４３】
主題の具体的な実施形態について説明してきた。他の実施形態は、次の特許請求の範囲の範囲内にある。たとえば、特許請求の範囲に列挙された行為は、異なる順序で行うことができ、依然として所望の結果を達成することができる。1つの例として、添付の図に示されている方法には、所望の結果を達成するために、必ずしも、図示の特定の順序または連続的な順序が必要なわけではない。特定の実装形態においては、マルチタスクの並列処理が有利な場合もある。
【符号の説明】
【０１４４】
100  ニューラルネットワークシステム
102  ニューラルネットワーク入力
110  リカレントニューラルネットワーク
120  圧縮リカレント層
122  現在の層入力
124  新規層状態
126  新規層出力
130  リカレント層
134  新規層状態
136  新規層出力
142  ニューラルネットワーク出力
200  方法
300  方法
【図１】
2019509539.tif 000051
【図２】
2019509539.tif 000052
【図３】
2019509539.tif 000053
【国際調査報告】
2019509539.tif 000054