(57)【要約】  ニューラルネットワークなど、機械学習ネットワークを圧縮することが、圧縮されたネットワークを生成するために、ニューラルネットワーク中の１つの層を圧縮された層と交換することを含む。圧縮されたネットワークは、（１つまたは複数の）圧縮された層における重み値を更新することによって微調整され得る。
2018506785.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットワークを圧縮する方法であって、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換することと、
前記圧縮されたネットワークの圧縮された層の間に非線形性を挿入することと、
前記圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整することと
を備える、方法。
【請求項２】
非線形性を前記挿入することが、前記圧縮された層のニューロンに非線形活性化関数を適用することを備える、請求項１に記載の方法。
【請求項３】
前記非線形活性化関数が、整流関数、絶対値関数、双曲線正接関数、またはシグモイド関数である、請求項２に記載の方法。
【請求項４】
前記微調整することが、前記圧縮されたニューラルネットワーク中の前記重み値を更新することによって実行される、請求項１に記載の方法。
【請求項５】
前記微調整することが、前記圧縮された層のサブセットのうちの少なくとも１つにおける重み値、または圧縮されていない層のサブセットにおける重み値を更新することを備える、請求項４に記載の方法。
【請求項６】
前記微調整することが、トレーニング例を使用して実行され、前記トレーニング例が、圧縮されていないネットワークをトレーニングするために使用される例の第１のセット、または例の新しいセットのうちの少なくとも１つを備える、請求項４に記載の方法。
【請求項７】
より深層のニューラルネットワークを初期化するための方法として、圧縮と、非線形層の挿入と、前記微調整することとを繰り返し適用することによって、前記ニューラルネットワークを初期化すること
をさらに備える、請求項１に記載の方法。
【請求項８】
ニューラルネットワークを圧縮する方法であって、
組み合わせられた、複数の圧縮された層の受容野サイズが、圧縮されていない層の受容野に一致するように、圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を前記圧縮された層と交換することと、
少なくとも１つの圧縮された層における重み値を更新することによって、前記圧縮されたネットワークを微調整することと
を備える、方法。
【請求項９】
圧縮されていない層のカーネルサイズが、前記受容野サイズに等しい、請求項８に記載の方法。
【請求項１０】
前記交換することは、プロパティ（ｋ1x−１）＋（ｋ2x−１）＋・・・＝（ｋx−１）および（ｋ1y−１）＋（ｋ2y−１）＋・・・＝（ｋy−１）が満たされる前記圧縮されたネットワークを生成するために、カーネルサイズｋx×ｋyを有する前記ニューラルネットワーク中の少なくとも１つの層を、前記カーネルサイズｋ1x×ｋ1y，ｋ2x×ｋ2y．．．ｋLx×ｋLyをもつ同じタイプの複数の圧縮された層と交換することを備える、請求項８に記載の方法。
【請求項１１】
前記カーネルサイズｋx×ｋyをもつ畳み込み層が、それぞれ前記カーネルサイズ１×１、ｋx×ｋy、および１×１をもつ３つの畳み込み層と交換される、請求項１０に記載の方法。
【請求項１２】
ニューラルネットワークを圧縮する方法であって、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換することと、
交互最小化プロセスを適用することによって、圧縮された層の重み行列を決定することと
を備える、方法。
【請求項１３】
前記圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整することをさらに備える、請求項１２に記載の方法。
【請求項１４】
前記微調整することが、前記圧縮された層のサブセット、または圧縮されていない層のサブセットのうちの少なくとも１つにおける重み値を更新すること含む、請求項１３に記載の方法。
【請求項１５】
前記微調整することが、複数の段において実行され、そこにおいて、第１の段では、前記微調整することが、圧縮された層のサブセットに対して実行され、第２の段では、前記微調整することが、圧縮された層と圧縮されていない層とのサブセットに対して実行される、請求項１３に記載の方法。
【請求項１６】
ニューラルネットワークを圧縮するための装置であって、
メモリと、
前記メモリに結合された少なくとも１つのプロセッサと
を備え、前記少なくとも１つのプロセッサが、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換することと、
前記圧縮されたネットワークの圧縮された層の間に非線形性を挿入することと、
少なくとも１つの圧縮された層における重み値を更新することによって、前記圧縮されたネットワークを微調整することと
を行うように構成された、装置。
【請求項１７】
前記少なくとも１つのプロセッサが、前記圧縮された層のニューロンに非線形活性化関数を適用することによって、非線形性を挿入するようにさらに構成された、請求項１６に記載の装置。
【請求項１８】
前記非線形活性化関数が、整流関数、絶対値関数、双曲線正接関数、またはシグモイド関数である、請求項１７に記載の装置。
【請求項１９】
前記少なくとも１つのプロセッサが、前記圧縮されたニューラルネットワーク中の前記重み値を更新することによって、前記微調整を実行するようにさらに構成された、請求項１６に記載の装置。
【請求項２０】
前記少なくとも１つのプロセッサが、圧縮された層のサブセットのうちの少なくとも１つにおける重み値、または圧縮されていない層のサブセットにおける重み値を更新することによって、前記微調整することを実行するようにさらに構成された、請求項１９に記載の装置。
【請求項２１】
前記少なくとも１つのプロセッサが、トレーニング例を使用することによって、前記微調整することを実行するようにさらに構成され、前記トレーニング例が、圧縮されていないネットワークをトレーニングするために使用される例の第１のセット、または例の新しいセットのうちの少なくとも１つを備える、請求項１９に記載の装置。
【請求項２２】
前記少なくとも１つのプロセッサが、より深層のニューラルネットワークを初期化するための方法として、圧縮と、非線形層の挿入と、前記微調整することとを繰り返し適用することによって、前記ニューラルネットワークを初期化するようにさらに構成された、請求項１６に記載の装置。
【請求項２３】
ニューラルネットワークを圧縮するための装置であって、
メモリと、
前記メモリに結合された少なくとも１つのプロセッサと
を備え、前記少なくとも１つのプロセッサが、
組み合わせられた、複数の圧縮された層の受容野サイズが、圧縮されていない層の受容野サイズに一致するように、圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を前記圧縮された層（layers）と交換することと、
圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整することと
を行うように構成された、装置。
【請求項２４】
圧縮されていない層のカーネルサイズが、前記受容野サイズに等しい、請求項２３に記載の装置。
【請求項２５】
前記少なくとも１つのプロセッサが、プロパティ（ｋ1x−１）＋（ｋ2x−１）＋・・・＝（ｋx−１）および（ｋ1y−１）＋（ｋ2y−１）＋・・・＝（ｋy−１）が満たされる前記圧縮されたネットワークを生成するために、カーネルサイズｋx×ｋyを有する前記ニューラルネットワーク中の少なくとも１つの層を、前記カーネルサイズｋ1x×ｋ1y，ｋ2x×ｋ2y．．．ｋLx×ｋLyをもつ同じタイプの複数の圧縮された層と交換するようにさらに構成された、請求項２３に記載の装置。
【請求項２６】
前記カーネルサイズｋx×ｋyをもつ畳み込み層が、それぞれ前記カーネルサイズ１×１、ｋx×ｋy、および１×１をもつ３つの畳み込み層と交換される、請求項２５に記載の装置。
【請求項２７】
ニューラルネットワークを圧縮するための装置であって、
メモリと、
前記メモリに結合された少なくとも１つのプロセッサと
を備え、前記少なくとも１つのプロセッサが、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換することと、
交互最小化プロセスを適用することによって、圧縮された層の重み行列を決定することと
を行うように構成された、装置。
【請求項２８】
前記少なくとも１つのプロセッサが、前記圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整するようにさらに構成された、請求項２７に記載の装置。
【請求項２９】
前記少なくとも１つのプロセッサが、前記圧縮された層のサブセット、または圧縮されていない層のサブセットのうちの少なくとも１つにおける重み値を更新することによって、前記微調整することを実行するように構成された、請求項２８に記載の装置。
【請求項３０】
前記少なくとも１つのプロセッサが、複数の段において前記微調整することを実行するようにさらに構成され、そこにおいて、第１の段では、前記微調整することが、圧縮された層のサブセットに対して実行され、第２の段では、前記微調整することが、圧縮された層と圧縮されていない層とのサブセットに対して実行される、請求項２８に記載の装置。
【請求項３１】
ニューラルネットワークを圧縮するための装置であって、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換するための手段と、
前記圧縮されたネットワークの圧縮された層の間に非線形性を挿入するための手段と、
前記圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整するための手段と
を備える、装置。
【請求項３２】
ニューラルネットワークを圧縮するための装置であって、
組み合わせられた、複数の圧縮された層の受容野サイズが、圧縮されていない層の受容野に一致するように、圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を前記圧縮された層と交換するための手段と、
少なくとも１つの圧縮された層における重み値を更新することによって、前記圧縮されたネットワークを微調整するための手段と
を備える、装置。
【請求項３３】
ニューラルネットワークを圧縮するための装置であって、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換するための手段と、
交互最小化プロセスを適用することによって、圧縮された層の重み行列を決定するための手段と
を備える、装置。
【請求項３４】
ニューラルネットワークを圧縮するためのプログラムコードをその上に符号化した非一時的コンピュータ可読媒体であって、前記プログラムコードが、プロセッサによって実行され、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換するためのプログラムコードと、
前記圧縮されたネットワークの圧縮された層の間に非線形性を挿入するためのプログラムコードと、
少なくとも１つの圧縮された層における重み値を更新することによって、前記圧縮されたネットワークを微調整するためのプログラムコードと
を備える、非一時的コンピュータ可読媒体。
【請求項３５】
ニューラルネットワークを圧縮するためのプログラムコードをその上に符号化した非一時的コンピュータ可読媒体であって、前記プログラムコードが、プロセッサによって実行され、
組み合わせられた、複数の圧縮された層の受容野サイズが、圧縮されていない層の受容野サイズに一致するように、圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を前記圧縮された層と交換するためのプログラムコードと、
圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整するためのプログラムコードと
を備える、非一時的コンピュータ可読媒体。
【請求項３６】
ニューラルネットワークを圧縮するためのプログラムコードをその上に符号化した非一時的コンピュータ可読媒体であって、前記プログラムコードが、プロセッサによって実行され、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換するためのプログラムコードと、
交互最小化プロセスを適用することによって、圧縮された層の重み行列を決定するためのプログラムコードと
を備える、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
[0001]本出願は、その開示全体が参照により本明細書に明確に組み込まれる、２０１５年１月２２日に出願された、「MODEL COMPRESSION AND FINE-TUNING」と題する米国仮特許出願第６２／１０６，６０８号の利益を主張する。
【０００２】
[0002]本開示のいくつかの態様は、一般にニューラルシステムエンジニアリングに関し、より詳細には、ニューラルネットワークを圧縮するためのシステムおよび方法に関する。
【背景技術】
【０００３】
[0003]人工ニューロン（たとえば、ニューロンモデル）の相互結合されたグループを備え得る人工ニューラルネットワークは、計算デバイスであるか、または計算デバイスによって実行されるべき方法を表す。
【０００４】
[0004]畳み込み（convolutional）ニューラルネットワークは、フィードフォワード人工ニューラルネットワークのタイプである。畳み込みニューラルネットワークは、各々が受容野を有し、入力空間を集合的にタイリングする（tile）ニューロンの集合を含み得る。畳み込みニューラルネットワーク（ＣＮＮ）は多数の適用例を有する。特に、ＣＮＮは、パターン認識および分類の領域内で広く使用されている。
【０００５】
[0005]深層信念ネットワーク（deep belief networks）および深層畳み込みネットワークなど、深層学習アーキテクチャは、層状（layered）ニューラルネットワークアーキテクチャであり、ニューロンの第１の層の出力はニューロンの第２の層への入力になり、ニューロンの第２の層の出力はニューロンの第３の層になり、ニューロンの第３の層に入力し、以下同様である。深層ニューラルネットワークは、特徴の階層（hierarchy）を認識するようにトレーニングされ（trained）得、したがって、それらはオブジェクト認識適用例においてますます使用されている。畳み込みニューラルネットワークのように、これらの深層学習アーキテクチャにおける計算は、１つまたは複数の計算チェーンにおいて構成され得る処理ノードの集団（population）にわたって分散され得る。これらの多層アーキテクチャは、一度に１つの層をトレーニングされ得、バックプロパゲーション（back propagation）を使用して微調整され得る。
【０００６】
[0006]他のモデルも、オブジェクト認識のために利用可能である。たとえば、サポートベクターマシン（ＳＶＭ）は、分類のために適用され得る学習ツールである。サポートベクターマシンは、データをカテゴリー分類する分離超平面（separating hyperplane）（たとえば、決定境界（decision boundary））を含む。超平面は、教師あり（supervised）学習によって定義される。所望の超平面は、トレーニングデータのマージンを増加させる。言い換えれば、超平面は、トレーニング例（training examples）との最大の（greatest）最小距離を有するべきである。
【０００７】
[0007]これらのソリューションは、いくつかの分類ベンチマーク上で優れた結果を達成するが、それらの計算複雑さは極めて高いことがある。さらに、モデルのトレーニングが難しいことがある。
【発明の概要】
【０００８】
[0008]一態様では、ニューラルネットワークなど、機械学習ネットワークを圧縮する（compressing）方法が開示される。本方法は、圧縮されたニューラルネットワークを生成する（produce）ために、ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換すること（replacing）を含む。本方法はまた、圧縮されたネットワークの圧縮された層の間に非線形性（nonlinearity）を挿入すること（inserting）を含む。さらに、本方法は、圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、圧縮されたネットワークを微調整することを含む。
【０００９】
[0009]別の態様は、ニューラルネットワークなど、機械学習ネットワークを圧縮するための装置を開示する。本装置は、圧縮されたニューラルネットワークを生成するために、ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換するための手段を含む。本装置はまた、圧縮されたネットワークの圧縮された層の間に非線形性を挿入するための手段を含む。さらに、本装置は、圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、圧縮されたネットワークを微調整するための手段を含む。
【００１０】
[0010]別の態様は、ニューラルネットワークなど、機械学習ネットワークを圧縮するための装置を開示する。本装置は、メモリと、メモリに結合された少なくとも１つのプロセッサとを含む。（１つまたは複数の）プロセッサは、圧縮されたニューラルネットワークを生成するために、ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換するように構成される。（１つまたは複数の）プロセッサはまた、圧縮されたネットワークの圧縮された層の間に非線形性を挿入するように構成される。さらに、（１つまたは複数の）プロセッサはまた、圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、圧縮されたネットワークを微調整するように構成される。
【００１１】
[0011]別の態様は、非一時的コンピュータ可読媒体を開示する。コンピュータ可読媒体は、ニューラルネットワークなど、機械学習ネットワークを圧縮するためのその上に記録された非一時的プログラムコードを有する。プログラムコードは、（１つまたは複数の）プロセッサによって実行されたとき、（１つまたは複数の）プロセッサに、圧縮されたニューラルネットワークを生成するために、ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換させる。プログラムコードはまた、（１つまたは複数の）プロセッサに、圧縮されたネットワークの圧縮された層（layers）の間に非線形性を挿入させる。さらに、プログラムコードはまた、（１つまたは複数の）プロセッサに、圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、圧縮されたネットワークを微調整させる。
【００１２】
[0012]別の態様では、ニューラルネットワークなど、機械学習ネットワークを圧縮するための方法が開示される。本方法は、組み合わせられた、複数の圧縮された層の受容野サイズ（receptive field size）が、圧縮されていない層の受容野に一致するように、圧縮されたニューラルネットワークを生成するために、ニューラルネットワーク中の少なくとも１つの層を圧縮された層と交換することを含む。本方法はまた、圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、圧縮されたネットワークを微調整することを含む。
【００１３】
[0013]別の態様は、ニューラルネットワークなど、機械学習ネットワークを圧縮するための装置を開示する。本装置は、組み合わせられた、複数の圧縮された層の受容野サイズが、圧縮されていない層の受容野に一致するように、圧縮されたニューラルネットワークを生成するために、ニューラルネットワーク中の少なくとも１つの層を圧縮された層と交換するための手段を含む。本装置はまた、圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、圧縮されたネットワークを微調整するための手段を含む。
【００１４】
[0014]別の態様は、ニューラルネットワークなど、機械学習ネットワークを圧縮するための装置を開示する。本装置は、メモリと、メモリに結合された少なくとも１つのプロセッサとを含む。（１つまたは複数の）プロセッサは、組み合わせられた、複数の圧縮された層の受容野サイズが、圧縮されていない層の受容野に一致するように、圧縮されたニューラルネットワークを生成するために、ニューラルネットワーク中の少なくとも１つの層を圧縮された層と交換するように構成される。（１つまたは複数の）プロセッサはまた、圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、圧縮されたネットワークを微調整するように構成される。
【００１５】
[0015]別の態様は、非一時的コンピュータ可読媒体を開示する。コンピュータ可読媒体は、ニューラルネットワークなど、機械学習ネットワークを圧縮するための非一時的プログラムコードをその上に記録する。プログラムコードは、（１つまたは複数の）プロセッサによって実行されたとき、（１つまたは複数の）プロセッサに、組み合わせられた、複数の圧縮された層の受容野サイズが、圧縮されていない層の受容野に一致するように、圧縮されたニューラルネットワークを生成するために、ニューラルネットワーク中の少なくとも１つの層を圧縮された層と交換させる。プログラムコードはまた、（１つまたは複数の）プロセッサに、圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、圧縮されたネットワークを微調整させる。
【００１６】
[0016]別の態様では、ニューラルネットワークなど、機械学習ネットワークを圧縮する方法が開示される。本方法は、圧縮されたニューラルネットワークを生成するために、ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換することを含む。本方法はまた、交互最小化プロセス（alternating minimization process）を適用することによって、圧縮された層の重み行列を決定することを含む。
【００１７】
[0017]別の態様は、ニューラルネットワークなど、機械学習ネットワークを圧縮するための装置を開示する。本装置は、圧縮されたニューラルネットワークを生成するために、ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換するための手段を含む。本装置はまた、交互最小化プロセスを適用することによって、圧縮された層の重み行列を決定するための手段を含む。
【００１８】
[0018]別の態様は、ニューラルネットワークなど、機械学習ネットワークを圧縮するための装置を開示する。本装置は、メモリと、メモリに結合された少なくとも１つのプロセッサとを含む。（１つまたは複数の）プロセッサは、圧縮されたニューラルネットワークを生成するために、ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換するように構成される。（１つまたは複数の）プロセッサはまた、交互最小化プロセスを適用することによって、圧縮された層の重み行列を決定するように構成される。
【００１９】
[0019]別の態様は、非一時的コンピュータ可読媒体を開示する。コンピュータ可読媒体は、ニューラルネットワークなど、機械学習ネットワークを圧縮するためのプログラムコードをその上に記録する。プログラムコードは、（１つまたは複数の）プロセッサによって実行されたとき、（１つまたは複数の）プロセッサに、圧縮されたニューラルネットワークを生成するために、ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換させる。プログラムコードはまた、（１つまたは複数の）プロセッサに、交互最小化プロセスを適用することによって、圧縮された層の重み行列を決定させる。
【００２０】
[0020]本開示の追加の特徴および利点が、以下で説明される。本開示は、本開示の同じ目的を実行するための他の構造を変更または設計するための基礎として容易に利用され得ることを、当業者は諒解されたい。また、そのような等価な構成が、添付の特許請求の範囲に記載の本開示の教示から逸脱しないことを、当業者は了解されたい。さらなる目的および利点とともに、本開示の編成と動作の方法の両方に関して、本開示を特徴づけると考えられる新規の特徴は、添付の図に関連して以下の説明を検討するとより良く理解されよう。ただし、図の各々は、例示および説明のみの目的で与えられたものであり、本開示の限界を定めるものではないことを明確に理解されたい。
【００２１】
[0021]本開示の特徴、特性、および利点は、全体を通じて同様の参照符号が同様のものを指す図面とともに、以下に記載される発明を実施するための形態を読めばより明らかになろう。
【図面の簡単な説明】
【００２２】
【図１】[0022]本開示のいくつかの態様による、汎用プロセッサを含むシステムオンチップ（ＳＯＣ）を使用してニューラルネットワークを設計する例示的な実装形態を示す図。
【図２】[0023]本開示の態様による、システムの例示的な実装形態を示す図。
【図３Ａ】[0024]本開示の態様による、ニューラルネットワークを示す図。
【図３Ｂ】[0025]本開示の態様による、例示的な深層畳み込みネットワーク（ＤＣＮ）を示すブロック図。
【図４Ａ】[0026]本開示の態様による、人工知能（ＡＩ）機能をモジュール化し得る例示的なソフトウェアアーキテクチャを示すブロック図。
【図４Ｂ】[0027]本開示の態様による、スマートフォン上のＡＩアプリケーションのランタイム動作を示すブロック図。
【図５Ａ】[0028]本開示の態様による、全結合層を示すブロック図。
【図５Ｂ】本開示の態様による、圧縮された全結合層を示すブロック図。
【図６Ａ】本開示の態様による、全結合層を示すブロック図。
【図６Ｂ】本開示の態様による、圧縮された全結合層を示すブロック図。
【図７】[0029]本開示の態様による、例示的な畳み込み層を示すブロック図。
【図８Ａ】[0030]本開示の態様による、畳み込み層の例示的な圧縮を示す図。
【図８Ｂ】本開示の態様による、畳み込み層の例示的な圧縮を示す図。
【図９Ａ】本開示の態様による、畳み込み層の例示的な圧縮を示す図。
【図９Ｂ】本開示の態様による、畳み込み層の例示的な圧縮を示す図。
【図１０】[0031]本開示の態様による、ニューラルネットワークを圧縮するための方法を示す流れ図。
【図１１】本開示の態様による、ニューラルネットワークを圧縮するための方法を示す流れ図。
【図１２】本開示の態様による、ニューラルネットワークを圧縮するための方法を示す流れ図。
【図１３】本開示の態様による、ニューラルネットワークを圧縮するための方法を示す流れ図。
【発明を実施するための形態】
【００２３】
[0032]添付の図面に関して以下に記載される発明を実施するための形態は、様々な構成を説明するものであり、本明細書で説明される概念が実施され得る構成のみを表すものではない。発明を実施するための形態は、様々な概念の完全な理解を与えるための具体的な詳細を含む。ただし、これらの概念はこれらの具体的な詳細なしに実施され得ることが当業者には明らかであろう。いくつかの事例では、そのような概念を不明瞭にしないように、よく知られている構造および構成要素がブロック図の形式で示される。
【００２４】
[0033]これらの教示に基づいて、本開示の範囲は、本開示の他の態様とは無関係に実装されるにせよ、本開示の他の態様と組み合わせて実装されるにせよ、本開示のいかなる態様をもカバーするものであることを、当業者なら諒解されたい。たとえば、記載された態様をいくつ使用しても、装置は実装され得るか、または方法は実施され得る。さらに、本開示の範囲は、記載された本開示の様々な態様に加えてまたはそれらの態様以外に、他の構造、機能、または構造および機能を使用して実施されるそのような装置または方法をカバーするものとする。開示される本開示のいずれの態様も、請求項の１つまたは複数の要素によって実施され得ることを理解されたい。
【００２５】
[0034]「例示的」という単語は、本明細書では「例、事例、または例示の働きをすること」を意味するために使用される。「例示的」として本明細書で説明されるいかなる態様も、必ずしも他の態様よりも好適または有利であると解釈されるべきであるとは限らない。
【００２６】
[0035]本明細書では特定の態様が説明されるが、これらの態様の多くの変形および置換は本開示の範囲内に入る。好適な態様のいくつかの利益および利点が説明されるが、本開示の範囲は特定の利益、使用、または目的に限定されるものではない。むしろ、本開示の態様は、様々な技術、システム構成、ネットワーク、およびプロトコルに広く適用可能であるものとし、それらのいくつかが、例として、図および好適な態様についての以下の説明において示される。発明を実施するための形態および図面は、本開示を限定するものではなく説明するものにすぎず、本開示の範囲は添付の特許請求の範囲およびそれの均等物によって定義される。
モデル圧縮および微調整
[0036]深層ニューラルネットワークは、画像／ビデオ分類、音声認識、顔認識など、いくつかの人工知能タスクにおける最新技術（the state of the art）を実行する。ニューラルネットワークモデルは、トレーニング例の大きいデータベースからトレーニングされ、一般に、より大きいモデルはより良い性能を達成する傾向がある。スマートフォンなどのモバイルデバイス、ロボット、および車上でこれらのニューラルネットワークモデルを展開するために、計算複雑さ、メモリフットプリント、および電力消費をできる限り低減するか、または最小化する（minimize）ことが望ましい。これらはまた、１日当たり何百万もの画像／ビデオを処理するデータセンターなど、クラウド適用例のための所望のプロパティである。
【００２７】
[0037]本開示の態様は、ニューラルネットワークモデルを圧縮する方法を対象とする。圧縮されたモデルは、著しく少ない数のパラメータを有し、したがって、より小さいメモリフットプリントを有する。さらに、圧縮されたモデルは、著しく少ない動作を有し、したがって、より速い推論ランタイムをもたらす。
【００２８】
[0038]畳み込みニューラルネットワークモデルは、層のシーケンスに分割され得る。各層は、ネットワーク中の１つまたは複数の先行する層から受信された入力を変換し得、ネットワークの後続の（subsequent）層に供給され得る出力を生成し得る。たとえば、畳み込みニューラルネットワークは、全結合層と、畳み込み層と、局所結合層と、他の層とを含み得る。異なる層の各々は、異なるタイプの変換を実行し得る。
【００２９】
[0039]本開示の態様によれば、全結合層、畳み込み層、および局所結合層が圧縮され得る。これらの層のすべてが入力値に線形変換を適用し得、ここで、線形変換は重み値によってパラメータ化される。重み値は、２次元行列またはより高次元のテンソルとして表され得る。線形変換構造は、異なる層タイプについて異なり得る。
【００３０】
[0040]いくつかの態様では、層を同じタイプの複数の層と交換することによって、層が圧縮され得る。たとえば、畳み込み層は、それを複数の畳み込み層と交換することによって圧縮され得、全結合層は、それを複数の全結合層と交換することによって圧縮され得る。圧縮された層におけるニューロンは、恒等活性化関数（identity activation function）で構成され得る。１つの層が複数の圧縮された層と交換され得るが、すべての圧縮された層の合計の複雑さ（およびメモリフットプリント）は、単一の圧縮されていない層のそれよりも小さくなり得る。
【００３１】
[0041]しかしながら、モデル圧縮は、ニューラルネットワークの性能の低下（drop）を犠牲にして成り立つことがあり得る。たとえば、ニューラルネットワークが分類問題のために使用される場合、分類精度は圧縮により低下し得る。より高い圧縮は、精度のより大きな低下を生じるので、精度のこの低下は、圧縮の程度を制限する。精度の低下をなくす（combat）ために、いくつかの態様では、圧縮されたモデルは、トレーニング例を使用して微調整され得る。圧縮されたモデルの微調整は、精度の低下を回復し（recapture）得、これにより、分類精度のあまりに大きい低下なしに、圧縮が改善され得る。圧縮されたモデルの微調整は、層ごとに行われ得る。
【００３２】
[0042]したがって、本開示の態様は、ニューラルネットワークの層がより多くのそのような層と交換される圧縮技法を提供する。したがって、得られた（resulting）圧縮されたモデルは、別の畳み込みニューラルネットワークモデルである。圧縮されたモデルを実装するための新しいおよび明示的技法の開発が回避され得るので、これは大きな利点である。すなわち、何らかのニューラルネットワークライブラリが、元の圧縮されていないモデルに適合する場合、それは、圧縮されたモデルにも適合するであろう。さらに、得られた圧縮されたモデルは畳み込みニューラルネットワークであるので、微調整を特定の層に限定するのではなく、フルスタック微調整（たとえば、バックプロパゲーション）が実行され得る。
【００３３】
[0043]ニューラルネットワークはいくつかの層でできている。各層は、１つまたは複数の前の層からの活性化ベクトルを入力として取り、組み合わせられた入力ベクトルに線形／非線形変換を適用し、後続の層によって使用されるべき活性化ベクトルを出力する。いくつかの層は重みを用いてパラメータ化されるが、いくつかの層は重みを用いてパラメータ化されない。本開示の態様は、重み層、すなわち、１）全結合層、２）畳み込み層、および３）局所結合層に関係する。すべての３つの層は、線形変換を行うが、出力ニューロンがどのように入力ニューロンに結合されるかにおいて異なる。
【００３４】
[0044]図１に、本開示のいくつかの態様による、上述の、汎用プロセッサ（ＣＰＵ）またはマルチコア汎用プロセッサ（ＣＰＵ）１０２を含み得るシステムオンチップ（ＳＯＣ）１００を使用してニューラルネットワークを圧縮することの、例示的な実装形態を示す。変数（たとえば、ニューラル信号およびシナプス荷重）、計算デバイスに関連するシステムパラメータ（たとえば、重みをもつニューラルネットワーク）、遅延、周波数ビン情報、およびタスク情報が、ニューラル処理ユニット（ＮＰＵ）１０８に関連するメモリブロックに記憶されるか、ＣＰＵ１０２に関連するメモリブロックに記憶されるか、グラフィックス処理ユニット（ＧＰＵ）１０４に関連するメモリブロックに記憶されるか、デジタル信号プロセッサ（ＤＳＰ）１０６に関連するメモリブロックに記憶されるか、専用メモリブロック１１８に記憶され得るか、または複数のブロックにわたって分散され得る。汎用プロセッサ１０２において実行される命令が、ＣＰＵ１０２に関連するプログラムメモリからロードされ得るか、または専用メモリブロック１１８からロードされ得る。
【００３５】
[0045]ＳＯＣ１００はまた、ＧＰＵ１０４、ＤＳＰ１０６など、特定の機能に適合された追加の処理ブロックと、第４世代ロングタームエボリューション（４Ｇ  ＬＴＥ（登録商標））接続性、無認可Ｗｉ−Ｆｉ（登録商標）接続性、ＵＳＢ接続性、Ｂｌｕｅｔｏｏｔｈ（登録商標）接続性などを含み得る接続性ブロック１１０と、たとえば、ジェスチャーを検出および認識し得るマルチメディアプロセッサ１１２とを含み得る。一実装形態では、ＮＰＵは、ＣＰＵ、ＤＳＰ、および／またはＧＰＵにおいて実装される。ＳＯＣ１００はまた、センサープロセッサ１１４、画像信号プロセッサ（ＩＳＰ）、および／または全地球測位システムを含み得るナビゲーション１２０を含み得る。
【００３６】
[0046]ＳＯＣはＡＲＭ命令セットに基づき得る。本開示の一態様では、汎用プロセッサ１０２にロードされた命令は、圧縮されたネットワークを生成するために、ニューラルネットワークなど、機械学習ネットワーク中の少なくとも１つの層を複数の圧縮された層と交換すること、圧縮されたネットワークの圧縮された層の間に非線形性を挿入すること、および／または圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、圧縮されたネットワークを微調整するためのコードを備え得る。
【００３７】
[0047]本開示の別の態様では、汎用プロセッサ１０２にロードされた命令は、組み合わせられた、複数の圧縮された層の受容野サイズが、圧縮されていない層の受容野に一致するように、圧縮されたネットワークを生成するために、ニューラルネットワークなど、機械学習ネットワーク中の少なくとも１つの層を圧縮された層と交換するためのコードを備え得る。圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、圧縮されたネットワークを微調整するためのコードもあり得る。
【００３８】
[0048]本開示のまた別の態様では、汎用プロセッサ１０２にロードされた命令は、圧縮されたネットワークを生成するために、ニューラルネットワークなど、機械学習ネットワーク中の少なくとも１つの層を複数の圧縮された層と交換するためのコードを備え得る。交互最小化プロセスを適用することによって、圧縮された層の重み行列を決定するためのコードもあり得る。
【００３９】
[0049]図２に、本開示のいくつかの態様による、システム２００の例示的な実装形態を示す。図２に示されているように、システム２００は、本明細書で説明される方法の様々な動作を実行し得る複数のローカル処理ユニット２０２を有し得る。各ローカル処理ユニット２０２は、ローカル状態メモリ２０４と、ニューラルネットワークのパラメータを記憶し得るローカルパラメータメモリ２０６とを備え得る。さらに、ローカル処理ユニット２０２は、ローカルモデルプログラムを記憶するためのローカル（ニューロン）モデルプログラム（ＬＭＰ）メモリ２０８と、ローカル学習プログラムを記憶するためのローカル学習プログラム（ＬＬＰ）メモリ２１０と、ローカル接続メモリ２１２とを有し得る。さらに、図２に示されているように、各ローカル処理ユニット２０２は、ローカル処理ユニットのローカルメモリのための構成を与えるための構成プロセッサユニット２１４、およびローカル処理ユニット２０２間のルーティングを与えるルーティング接続処理ユニット２１６とインターフェースし得る。
【００４０】
[0050]深層学習アーキテクチャは、各層において連続的により高い抽象（abstraction）レベルで入力を表現するように学習し、それにより、入力データの有用な特徴表現を蓄積する（building up）ことによって、オブジェクト認識タスクを実行し得る。このようにして、深層学習は、旧来の機械学習の主要なボトルネックに対処する。深層学習の出現（advent）より前に、オブジェクト認識問題に対する機械学習手法は、場合によっては浅い分類器（shallow classifier）と組み合わせて、人的に設計された（engineered）特徴に大きく依拠していることがある。浅い分類器は、たとえば、入力がどのクラスに属するかを予測するために、特徴ベクトル成分の重み付き和がしきい値と比較され得る２クラス線形分類器であり得る。人的に設計された特徴は、領域の専門知識（domain expertise）をもつ技術者によって特定の問題領域に適合された（tailored）テンプレートまたはカーネルであり得る。対照的に、深層学習アーキテクチャは、人間の技術者が設計し得るものと同様であるが、トレーニングを通して特徴を表現するように学習し得る。さらに、深層ネットワークは、人間が考慮していないことがある新しいタイプの特徴を表現し、認識するように学習し得る。
【００４１】
[0051]深層学習アーキテクチャは特徴の階層（hierarchy）を学習し得る。たとえば、視覚データが提示された場合、第１の層は、エッジなど、入力ストリーム中の単純な特徴を認識するように学習し得る。聴覚データが提示された場合、第１の層は、特定の周波数におけるスペクトル電力を認識するように学習し得る。第１の層の出力を入力として取る第２の層は、視覚データの場合の単純な形状、または聴覚データの場合の音の組合せなど、特徴の組合せを認識するように学習し得る。上位層は、視覚データ中の複雑な形状、または聴覚データ中の単語を表現するように学習し得る。さらに上位の層は、共通の視覚オブジェクトまたは発話フレーズ（spoken phrases）を認識するように学習し得る。
【００４２】
[0052]深層学習アーキテクチャは、自然階層構造を有する問題に適用されたとき、特にうまく機能し（perform）得る。たとえば、原動機付き車両の分類は、ホイール、フロントガラス、および他の特徴を認識するための第１の学習から恩恵を受け得る。これらの特徴は、車、トラック、および飛行機を認識するために、異なる方法で、上位層において組み合わせられ得る。
【００４３】
[0053]ニューラルネットワークは、様々な結合性パターンを用いて設計され得る。フィードフォワードネットワークでは、情報が下位層から上位層に受け渡され（passed）、所与の層における各ニューロンは、上位層におけるニューロンに通信する。上記で説明されたように、フィードフォワードネットワークの連続する層において、階層表現が蓄積され得る。ニューラルネットワークはまた、リカレントまたは（トップダウンとも呼ばれる）フィードバック結合を有し得る。リカレント結合では、所与の層におけるニューロンからの出力は、同じ層における別のニューロンに通信される。リカレントアーキテクチャは、ニューラルネットワークに順次配信される入力データチャンク（chunks）のうちの２つ以上にわたるパターンを認識するのに役立ち得る。所与の層におけるニューロンから下位層におけるニューロンへの結合は、フィードバック（またはトップダウン）結合と呼ばれる。高レベルの概念の認識が、入力の特定の低レベルの特徴を弁別すること（discriminating）を助け得るとき、多くのフィードバック結合をもつネットワークが役立ち得る。
【００４４】
[0054]図３Ａを参照すると、ニューラルネットワークの層間の結合は全結合３０２または局所結合３０４であり得る。全結合ネットワーク３０２では、第１の層におけるニューロンは、第２の層における各ニューロンが第１の層におけるあらゆるニューロンから入力を受信するように、それの出力を第２の層におけるあらゆるニューロンに通信し得る。代替的に、局所結合ネットワーク３０４では、第１の層におけるニューロンは、第２の層における限られた数のニューロンに結合され得る。畳み込みネットワーク３０６は、局所結合であり得、第２の層における各ニューロンのための入力に関連する結合強度が共有されるようにさらに構成される（たとえば、３０８）。より一般的には、ネットワークの局所結合層は、層における各ニューロンが同じまたは同様の結合性パターンを有するように構成されるが、異なる値を有し得る結合強度で構成され得る（たとえば、３１０、３１２、３１４、および３１６）。局所結合の結合性パターンは、所与の領域中の上位層ニューロンが、ネットワークへの総入力のうちの制限された部分のプロパティにトレーニングを通して調整された（tuned）入力を受信し得るので、上位層において空間的に別個の受容野を生じ得る。
【００４５】
[0055]局所結合ニューラルネットワークは、入力の空間ロケーションが有意味である問題に好適で（well suited）あり得る。たとえば、車載カメラからの視覚特徴を認識するように設計されたネットワーク３００は、画像の下側部分対上側部分とのそれらの関連付けに依存して、異なるプロパティをもつ上位層ニューロンを発達させ（develop）得る。画像の下側部分に関連するニューロンは、たとえば、車線区分線を認識するように学習し得るが、画像の上側部分に関連するニューロンは、交通信号、交通標識などを認識するように学習し得る。
【００４６】
[0056]ＤＣＮは、教師あり学習を用いてトレーニングされ得る。トレーニング中に、ＤＣＮは、速度制限標識のクロップされた画像など、画像３２６を提示され得、次いで、出力３２２を生成するために、「フォワードパス」が計算され得る。出力３２２は、「標識」、「６０」、および「１００」など、特徴に対応する値のベクトルであり得る。ネットワーク設計者は、ＤＣＮが、出力特徴ベクトルにおけるニューロンのうちのいくつか、たとえば、トレーニングされたネットワーク３００のための出力３２２に示されているように「標識」および「６０」に対応するニューロンについて、高いスコアを出力することを希望し（want）得る。トレーニングの前に、ＤＣＮによって生成された出力は不正確である可能性があり、したがって、実際の出力とターゲット出力との間で誤差が計算され得る。次いで、ＤＣＮの重みは、ＤＣＮの出力スコアがターゲットとより密接に整合される（closely aligned）ように調節され得る。
【００４７】
[0057]重みを調節するために、学習アルゴリズムは、重みのための勾配ベクトルを計算し得る。勾配は、重みがわずかに調節された場合に、誤差が増加または減少する量を示し得る。最上層において、勾配は、最後から２番目の（penultimate）層における活性化されたニューロンと出力層におけるニューロンとを結合する重みの値に直接対応し得る。下位層では、勾配は、重みの値と、上位層の計算された誤差勾配とに依存し得る。次いで、重みは、誤差を低減するように調節され得る。重みを調節するこの様式は、それがニューラルネットワークを通して「バックワードパス」を伴うので、「バックプロパゲーション」と呼ばれることがある。
【００４８】
[0058]実際には、重みの誤差勾配は、計算された勾配が真の誤差勾配を近似するように、少数の例にわたって計算され得る。この近似方法は、確率的勾配降下（stochastic gradient descent）と呼ばれることがある。システム全体の達成可能な誤差レートが減少しなくなるまで、または誤差レートがターゲットレベルに達するまで、確率的勾配降下が繰り返され得る。
【００４９】
[0059]学習の後に、ＤＣＮは新しい画像３２６を提示され得、ネットワークを通したフォワードパスは、ＤＣＮの推論または予測と見なされ得る出力３２２をもたらし得る。
【００５０】
[0060]深層信念ネットワーク（ＤＢＮ：deep belief network）は、隠れノードの複数の層を備える確率モデルである。ＤＢＮは、トレーニングデータセットの階層表現を抽出するために使用され得る。ＤＢＮは、制限ボルツマンマシン（ＲＢＭ：Restricted Boltzmann Machine）の層を積層することによって取得され得る。ＲＢＭは、入力のセットにわたる確率分布を学習することができる人工ニューラルネットワークのタイプである。ＲＢＭは、各入力がカテゴリー分類される（to which）クラスに関する情報の不在下で確率分布を学習することができるので、ＲＢＭは、教師なし学習においてしばしば使用される。ハイブリッド教師なしおよび教師ありパラダイムを使用して、ＤＢＮの下部（bottom）ＲＢＭは、教師なし様式でトレーニングされ得、特徴抽出器として働き得、上部（top）ＲＢＭは、（前の層からの入力とターゲットクラスとの同時分布（joint distribution）上で）教師あり様式でトレーニングされ得、分類器として働き（serve）得る。
【００５１】
[0061]深層畳み込みネットワーク（ＤＣＮ）は、追加のプーリング層および正規化層で構成された、畳み込みネットワークのネットワークである。ＤＣＮは、多くのタスクに関して最先端の性能を達成している。ＤＣＮは、入力と出力ターゲットの両方が、多くの標本（exemplars）について知られており、勾配降下方法の使用によってネットワークの重みを変更する（modify）ために使用される、教師あり学習を使用してトレーニングされ得る。
【００５２】
[0062]ＤＣＮは、フィードフォワードネットワークであり得る。さらに、上記で説明されたように、ＤＣＮの第１の層におけるニューロンから次の上位層におけるニューロンのグループへの結合は、第１の層におけるニューロンにわたって共有される。ＤＣＮのフィードフォワードおよび共有結合は、高速処理のために活用され（exploited）得る。ＤＣＮの計算負担（burden）は、たとえば、リカレントまたはフィードバック結合を備える同様のサイズのニューラルネットワークのそれよりもはるかに少ないことがある。
【００５３】
[0063]畳み込みネットワークの各層の処理は、空間的に不変のテンプレートまたは基底投射（basis projection）と見なされ得る。入力が、カラー画像の赤色、緑色、および青色チャネルなど、複数のチャネルに最初に分解された場合、その入力に関してトレーニングされた畳み込みネットワークは、画像の軸に沿った２つの空間次元と、色情報をキャプチャする第３の次元とをもつ、３次元であると見なされ得る。畳み込み結合の出力は、後続の層３１８および３２０において特徴マップを形成すると考えられ得、特徴マップ（たとえば、３２０）の各要素が、前の層（たとえば、３１８）における様々な（a range of）ニューロンから、および複数のチャネルの各々から入力を受信し得る。特徴マップにおける値は、整流（rectification）、ｍａｘ（０，ｘ）など、非線形性を用いてさらに処理され得る。隣接するニューロンからの値は、さらにプールされ得、これは、ダウンサンプリングに対応し、さらなる局所不変性と次元削減（reduction）とを与え得る。白色化に対応する正規化はまた、特徴マップにおけるニューロン間のラテラル抑制によって（through）適用され得る。
【００５４】
[0064]深層学習アーキテクチャの性能は、より多くのラベリングされたデータポイントが利用可能となるにつれて、または計算能力が増加するにつれて、向上し得る。現代の深層ニューラルネットワークは、ほんの１５年前に一般的な研究者にとって利用可能であったものより数千倍も大きいコンピューティングリソースを用いて、ルーチン的にトレーニングされる。新しいアーキテクチャおよびトレーニングパラダイムが、深層学習の性能をさらに高め得る。整流された線形ユニット（rectified linear unit）は、勾配消失（vanishing gradients）として知られるトレーニング問題を低減し得る。新しいトレーニング技法は、過学習（over-fitting）を低減し、したがって、より大きいモデルがより良い汎化を達成することを可能にし得る。カプセル化技法は、所与の受容野においてデータを抽出し、全体的性能をさらに高め得る。
【００５５】
[0065]図３Ｂは、例示的な深層畳み込みネットワーク３５０を示すブロック図である。深層畳み込みネットワーク３５０は、結合性および重み共有に基づく、複数の異なるタイプの層を含み得る。図３Ｂに示されているように、例示的な深層畳み込みネットワーク３５０は、複数の畳み込みブロック（たとえば、Ｃ１およびＣ２）を含む。畳み込みブロックの各々は、畳み込み層と、正規化層（ＬＮｏｒｍ）と、プーリング層とで構成され得る。畳み込み層は、１つまたは複数の畳み込みフィルタを含み得、これは、特徴マップを生成するために入力データに適用され得る。２つの畳み込みブロックのみが示されているが、本開示はそのように限定しておらず、代わりに、設計選好に従って、任意の数の畳み込みブロックが深層畳み込みネットワーク３５０中に含まれ得る。正規化層は、畳み込みフィルタの出力を正規化するために使用され得る。たとえば、正規化層は、白色化またはラテラル抑制を行い（provide）得る。プーリング層は、局所不変性および次元削減のために、空間にわたってダウンサンプリングアグリゲーションを行い得る。
【００５６】
[0066]たとえば、深層畳み込みネットワークの並列フィルタバンクは、高性能および低電力消費を達成するために、随意にＡＲＭ命令セットに基づいて、ＳＯＣ１００のＣＰＵ１０２またはＧＰＵ１０４にロードされ得る。代替実施形態では、並列フィルタバンクは、ＳＯＣ１００のＤＳＰ１０６またはＩＳＰ１１６にロードされ得る。さらに、ＤＣＮは、センサー１１４およびナビゲーション１２０に専用の処理ブロックなど、ＳＯＣ上に存在し得る他の処理ブロックにアクセスし得る。
【００５７】
[0067]深層畳み込みネットワーク３５０はまた、１つまたは複数の全結合層（たとえば、ＦＣ１およびＦＣ２）を含み得る。深層畳み込みネットワーク３５０は、ロジスティック回帰（ＬＲ）層をさらに含み得る。深層畳み込みネットワーク３５０の各層の間には、更新されるべき重み（図示せず）がある。各層の出力は、第１の畳み込みブロックＣ１において供給された入力データ（たとえば、画像、オーディオ、ビデオ、センサーデータおよび／または他の入力データ）から階層特徴表現を学習するために、深層畳み込みネットワーク３５０中の後続の（succeeding）層の入力として働き得る。
【００５８】
[0068]図４Ａは、人工知能（ＡＩ）機能をモジュール化し得る例示的なソフトウェアアーキテクチャ４００を示すブロック図である。アーキテクチャを使用して、ＳＯＣ４２０の様々な処理ブロック（たとえば、ＣＰＵ４２２、ＤＳＰ４２４、ＧＰＵ４２６および／またはＮＰＵ４２８）に、アプリケーション４０２のランタイム動作中に計算をサポートすることを実行させ得るアプリケーション４０２が設計され得る。
【００５９】
[0069]ＡＩアプリケーション４０２は、たとえば、デバイスが現在動作するロケーションを示すシーンの検出および認識を与え得る、ユーザ空間４０４において定義されている機能を呼び出すように構成され得る。ＡＩアプリケーション４０２は、たとえば、認識されたシーンがオフィス、講堂、レストラン、または湖などの屋外環境であるかどうかに応じて別様に、マイクロフォンおよびカメラを構成し得る。ＡＩアプリケーション４０２は、現在のシーンの推定を与えるために、ＳｃｅｎｅＤｅｔｅｃｔアプリケーションプログラミングインターフェース（ＡＰＩ）４０６において定義されているライブラリに関連するコンパイルされたプログラムコードへの要求を行い得る。この要求は、たとえば、ビデオおよび測位データに基づくシーン推定を与えるように構成された深層ニューラルネットワークの出力に最終的に依拠し得る。
【００６０】
[0070]さらに、ランタイムフレームワークのコンパイルされたコードであり得るランタイムエンジン４０８が、ＡＩアプリケーション４０２にとってアクセス可能であり得る。ＡＩアプリケーション４０２は、たとえば、ランタイムエンジンに、特定の時間間隔における、またはアプリケーションのユーザインターフェースによって検出されたイベントによってトリガされた、シーン推定を要求させ得る。シーンを推定させられたとき、ランタイムエンジンは、次に（in turn）、ＳＯＣ４２０上で実行している、Ｌｉｎｕｘ（登録商標）カーネル４１２など、オペレーティングシステム４１０に信号を送り得る。オペレーティングシステム４１０は、ＣＰＵ４２２、ＤＳＰ４２４、ＧＰＵ４２６、ＮＰＵ４２８、またはそれらの何らかの組合せ上で、計算を実行させ得る。ＣＰＵ４２２は、オペレーティングシステムによって直接アクセスされ得、他の処理ブロックは、ＤＳＰ４２４のための、ＧＰＵ４２６のための、またはＮＰＵ４２８のためのドライバ４１４〜４１８など、ドライバを通してアクセスされ得る。例示的な例では、深層ニューラルネットワークは、ＣＰＵ４２２およびＧＰＵ４２６など、処理ブロックの組合せ上で動作するように構成され得るか、または存在する場合、ＮＰＵ４２８上で動作させられ得る。
【００６１】
[0071]図４Ｂは、スマートフォン４５２上のＡＩアプリケーションのランタイム動作４５０を示すブロック図である。ＡＩアプリケーションは、画像４５６のフォーマットを変換し、次いで画像４５８をクロップおよび／またはリサイズするように（たとえば、ＪＡＶＡ（登録商標）プログラミング言語を使用して）構成され得る前処理モジュール４５４を含み得る。次いで、前処理された画像は、視覚入力に基づいてシーンを検出および分類するように（たとえば、Ｃプログラミング言語を使用して）構成され得るＳｃｅｎｅＤｅｔｅｃｔバックエンドエンジン４６２を含んでいる分類アプリケーション４６０に通信され得る。ＳｃｅｎｅＤｅｔｅｃｔバックエンドエンジン４６２は、スケーリング４６６およびクロッピング４６８によって、画像をさらに前処理４６４するように構成され得る。たとえば、画像は、得られた画像が２２４ピクセル×２２４ピクセルであるように、スケーリングされ、クロップされ得る。これらの次元は、ニューラルネットワークの入力次元にマッピングし得る。ニューラルネットワークは、ＳＯＣ１００の様々な処理ブロックに、深層ニューラルネットワークを用いて画像ピクセルをさらに処理させるように、深層ニューラルネットワークブロック４７０によって構成され得る。次いで、深層ニューラルネットワークの結果は、しきい値処理４７２され、分類アプリケーション４６０中の指数平滑化ブロック４７４を通され得る。次いで、平滑化された結果は、スマートフォン４５２の設定および／またはディスプレイの変更を生じ得る。
【００６２】
[0072]一構成では、ニューラルネットワークなど、機械学習モデルは、ネットワーク中の１つまたは複数の層を交換すること、圧縮されたネットワークの圧縮された層の間に非線形性を挿入すること、および／または圧縮されたネットワークを微調整することを行うために構成される。モデルは、交換手段と、挿入手段と、調整手段とを含む。一態様では、交換手段、挿入手段、および／または調整手段は、具陳された機能を実行するように構成された、汎用プロセッサ１０２、汎用プロセッサ１０２に関連するプログラムメモリ、メモリブロック１１８、ローカル処理ユニット２０２、およびまたはルーティング接続処理ユニット２１６であり得る。別の構成では、上述の手段は、上述の手段によって具陳された機能を実行するように構成された任意のモジュールまたは任意の装置であり得る。
【００６３】
[0073]別の構成では、ニューラルネットワークなど、機械学習モデルは、組み合わせられた、複数の圧縮された層の受容野サイズが、圧縮されていない層の受容野に一致するように、圧縮されたネットワークを生成するために、ネットワーク中の１つまたは複数の層を圧縮された層と交換するために構成される。モデルはまた、圧縮された層のうちの１つまたは複数における重み値を更新することによって、圧縮されたネットワークを微調整するために構成される。モデルは、交換手段と、調整手段とを含む。一態様では、交換手段、および／または調整手段は、具陳された機能を実行するように構成された、汎用プロセッサ１０２、汎用プロセッサ１０２に関連するプログラムメモリ、メモリブロック１１８、ローカル処理ユニット２０２、およびまたはルーティング接続処理ユニット２１６であり得る。別の構成では、上述の手段は、上述の手段によって具陳された機能を実行するように構成された任意のモジュールまたは任意の装置であり得る。
【００６４】
[0074]また別の構成では、ニューラルネットワークなど、機械学習モデルは、ネットワーク中の１つまたは複数の層を交換すること、および／または交互最小化プロセスを適用することによって、圧縮された層の重み行列を決定することを行うために構成される。モデルは、交換手段と、決定手段とを含む。一態様では、交換手段、および／または決定手段は、具陳された機能を実行するように構成された、汎用プロセッサ１０２、汎用プロセッサ１０２に関連するプログラムメモリ、メモリブロック１１８、ローカル処理ユニット２０２、およびまたはルーティング接続処理ユニット２１６であり得る。別の構成では、上述の手段は、上述の手段によって具陳された機能を実行するように構成された任意のモジュールまたは任意の装置であり得る。
【００６５】
[0075]本開示のいくつかの態様によれば、各ローカル処理ユニット２０２は、ネットワークの所望の１つまたは複数の機能的特徴に基づいてネットワークのパラメータを決定し、決定されたパラメータがさらに適合、調整および更新されるように、１つまたは複数の機能的特徴を所望の機能的特徴のほうへ発達させるように構成され得る。
全結合層の圧縮
[0076]図５Ａ〜図５Ｂは、本開示の態様による、全結合層と圧縮された全結合層とを示すブロック図である。図５Ａに示されているように、全結合層（ｆｃ）５００の出力ニューロン５０４の各々は、全部対全部の様式でシナプスを介して入力ニューロン５０２の各々に結合される（説明しやすいように、全部対全部の結合のサブセットが示されている）。ｆｃ層は、ｎ個の入力ニューロンと、ｍ個の出力ニューロンとを有する。ｉ番目の入力ニューロンをｊ番目の出力ニューロンに結合するシナプスの重みは、ｗijによって示される。ｎ個の入力ニューロンとｍ個の出力ニューロンとを結合するシナプスの重みのすべてが、行列Ｗを使用してまとめて表され得る。出力活性化ベクトルｙは、入力活性化ベクトルｘに重み行列Ｗを乗算し、バイアスベクトルｂを加算することによって取得され得る。
【００６６】
[0077]図５Ｂに、例示的な圧縮された全結合層５５０を示す。図５Ｂに示されているように、単一の全結合層は、２つの全結合層と交換される。すなわち、図５Ａの「ｆｃ」と称する全結合層は、図５Ｂに示されている２つの全結合層「ｆｃ１」および「ｆｃ２」と交換される。１つの追加の全結合層のみが示されているが、本開示はそのように限定されず、全結合層ｆｃを圧縮するために、追加の全結合層が使用され得る。たとえば、図６Ａ〜図６Ｂに、全結合層と、３つの全結合層をもつ圧縮された全結合層とを示す。図６Ａ〜図６Ｂに示されているように、圧縮されていない全結合層「ｆｃ」は、３つの全結合層「ｆｃ１」、「ｆｃ２」および「ｆｃ３」と交換される。中間層におけるニューロンの数ｒ1およびｒ2は、それらが達成する圧縮と、得られた圧縮されたネットワークの性能とに基づいて決定され得る。
【００６７】
[0078]圧縮を用いる利点は、圧縮の前および後のパラメータの総数を比較することによって理解され得る。圧縮の前のパラメータの数は、重み行列Ｗ中の要素の数ｎｍ＋バイアスベクトルに等しくなり得、バイアスベクトルはｍに等しい。したがって、圧縮の前のパラメータの総数はｎｍ＋ｍに等しい。しかしながら、図５Ｂ中の圧縮の後のパラメータの数は、層「ｆｃ１」および「ｆｃ２」におけるパラメータの数の和に等しくなり、これはｎｒ＋ｒｍに等しい。ｒの値に応じて、パラメータの数の著しい低減が達成され得る。
【００６８】
[0079]圧縮されたネットワークによって達成される有効変換は、以下によって与えられる。
【００６９】
【数１】
2018506785.tif 000003
【００７０】
上式で、Ｗ1およびＷ2は、それぞれ、圧縮された全結合層ｆｃ１およびｆｃ２のための重み行列である。
【００７１】
[0080]圧縮された層の重み行列は、有効変換が、以下のような元の全結合層ｆｃによって達成される変換の密接した近似であるように決定され得る。
【００７２】
【数２】
2018506785.tif 000004
【００７３】
[0081]重み行列Ｗ1およびＷ2は、近似誤差を低減するように選定され得、これは以下によって与えられる。
【００７４】
【数３】
2018506785.tif 000005
【００７５】
したがって、圧縮された層ｆｃ１およびｆｃ２によって達成される式１の有効変換は、式２において指定された元の全結合層の変換を密接に近似する。
【００７６】
[0082]同様に、図６Ｂ中の圧縮の後のパラメータの数は、ｎｒ1＋ｒ1ｒ2＋ｒ2ｍ＋ｍに等しい。この場合も、ｒ1およびｒ2の値に応じて、パラメータの数の著しい低減が達成され得る。
【００７７】
[0083]図６Ｂに示されている圧縮されたネットワーク中の圧縮された層「ｆｃ１」、「ｆｃ２」、および「ｆｃ３」によって達成される有効変換は、ｙ＝Ｗ3Ｗ2Ｗ1ｘ＋ｂである。重み行列Ｗ1、Ｗ2およびＷ3は、有効変換が、（図６Ａに示されている）元の「ｆｃ」層によって達成される変換ｙ＝Ｗｘ＋ｂの近似であるように決定され得る。
【００７８】
[0084]圧縮された層の重み行列を決定するための１つの方法は、特異値分解（ＳＶＤ）を繰り返し適用することである。ＳＶＤは、Ｗのランク近似を計算するために使用され得、それから重み行列Ｗ1およびＷ2が決定され得る。
【００７９】
[0085]圧縮された層の重み行列Ｗ1およびＷ2を決定するための別の方法は、交互最小化プロセスを適用することによるものである。交互最小化プロセスに従って、行列がランダム値で初期化され（initialized）、圧縮された行列は、式３の目的関数を低減または最小化し、それにより近似を改善するために、最小２乗法を使用して１つずつ交互に更新される。
【００８０】
[0086]いくつかの態様では、重み行列は、圧縮されたネットワークをトレーニングすることによって決定され得る。たとえば、圧縮されていない層のための入力および出力は、トレーニング例のセットについて記録され得る。次いで、たとえば、圧縮されていない層に対応する出力を生成するために圧縮された層を初期化するために、勾配降下が使用され得る。
【００８１】
[0087]圧縮されたネットワークは元のネットワークの近似であるので、圧縮されたネットワークのエンドツーエンドの挙動は、元のネットワークと比較してわずかに、または著しく異なることがある。その結果、新しい圧縮されたネットワークは、ネットワークが達成するように設計されたタスクについて、元のネットワークと同様に機能しないことがある。性能の低下をなくすために、圧縮されたネットワークの重みを微調整および変更することが実行され得る。たとえば、圧縮された層のすべてを通してのバックプロパゲーションが、重みを変更するために適用され得る。代替的に、層のサブセットを通してのバックプロパゲーションが実行され得るか、または出力から入力へとモデル全体にわたって、圧縮された層と圧縮されていない層の両方を通してのバックプロパゲーションが実行され得る。いくつかのトレーニング例を用いてニューラルネットワークを教えることによって、微調整が行われ得る。利用可能性に応じて、元のネットワークをトレーニングするための同じトレーニング例、またはトレーニング例の異なるセット、または古いおよび新しいトレーニング例のサブセットのいずれかが採用され得る。
【００８２】
[0088]微調整中に、新しい圧縮された層のみを微調整すること、または（フルスタック微調整と呼ばれることがある）すべての層を一緒に微調整すること、または圧縮された層および圧縮されていない層のサブセットを微調整することを選定し得る。たとえば図５Ｂおよび図６Ｂに示されている圧縮された層は、それぞれ図５Ａおよび図６Ａに示されている全結合層タイプの別のインスタンスである。したがって、圧縮された層をトレーニングすること、または圧縮されたネットワークを使用して推論（inference）を実行することのいずれのための新しい技法の設計または実装が、回避され得る。代わりに、元のネットワークのために利用可能な任意のトレーニングおよび推論プラットフォームが、再利用され得る。
畳み込み層の圧縮
[0089]ニューラルネットワークの畳み込み層も圧縮され得る。畳み込み層を圧縮するための手法は、いくつかの点で、全結合層について上記で説明された手法と同様である。たとえば、全結合層の場合のように、圧縮された畳み込み層の重み行列は、圧縮された層によって達成される有効変換が、元の圧縮されていない畳み込み層によって達成される変換の良好な近似であるように選択され得る。しかしながら、全結合層と畳み込み層との間のアーキテクチャの違いにより、ある程度の違いがある。
【００８３】
[0090]図７は、本開示の態様による、例示的な畳み込み層を示すブロック図である。畳み込み層は、ｎ個の入力マップをｍ個の出力マップに結合する。各マップは、画像の空間次元、またはオーディオ信号中の時間周波数次元などのいずれかに対応するニューロンのセット（たとえば、２次元（２Ｄ）グリッドまたは３Ｄマップ）を備え得る。たとえば、いくつかの態様では、ニューロンのセットは、ビデオデータまたはボクセルデータ（たとえば、磁気共鳴イメージング（ＭＲＩ）走査）に対応し得る。畳み込み層は、ｉ番目の入力マップＸiに畳み込みカーネルＷijを適用し、その結果をｊ番目の出力マップＹjに加算し、ここで、インデックスｉは１からｎに及び、インデックスｊは１からｍに及ぶ。言い換えれば、ｊ番目の出力マップＹjは、次のように表され得る。
【００８４】
【数４】
2018506785.tif 000006
【００８５】
[0091]図８Ａ〜図８Ｂに、本開示の態様による、畳み込み層の例示的な圧縮を示す。図８Ａ〜図８Ｂを参照すると、「ｃｏｎｖ」と称する畳み込み層は、２つの畳み込み層「ｃｏｎｖ１」および「ｃｏｎｖ２」と交換される。
【００８６】
[0092]全結合層に関して上記で示されたように、圧縮された層（交換層）の数は、図８Ｂに示されている２つに限定されず、設計選好に従って、任意の数の圧縮された層が代わりに使用され得る。たとえば、図９Ａ〜図９Ｂに、「ｃｏｎｖ」層が３つの畳み込み層「ｃｏｎｖ１」、「ｃｏｎｖ２」および「ｃｏｎｖ３」と交換される例示的な圧縮を示す。その場合（図９Ｂ）、中間層におけるマップの数ｒ1およびｒ2は、達成される圧縮と、得られた圧縮されたネットワークの性能とに基づいて決定され得る。
２つの畳み込み層との交換
[0093]図８Ｂに示されている圧縮されたネットワーク中の圧縮された層「ｃｏｎｖ１」および「ｃｏｎｖ２」によって一緒に達成される有効変換は、次のように表され得る。
【００８７】
【数５】
2018506785.tif 000007
【００８８】
上式で、Ｂｊはバイアス項であり、Ｚkはニューロンの追加された層の活性化ベクトルであり、この例ではｒ1＝ｒである。本質的に、元のネットワーク中の「ｃｏｎｖ」層の重み行列Ｗijは、「ｃｏｎｖ１」層の重み行列
【００８９】
【数６】
2018506785.tif 000008
【００９０】
および「ｃｏｎｖ２」層の重み行列
【００９１】
【数７】
2018506785.tif 000009
【００９２】
によって、圧縮されたネットワーク中で次のように近似される。
【００９３】
【数８】
2018506785.tif 000010
【００９４】
[0094]圧縮された畳み込み層（式５）の有効変換が元の畳み込み層の変換の密接した近似であることを確実にするために、圧縮された層の重み行列は、次のように指定される近似誤差を低減または最小化するように選定され得る。
【００９５】
【数９】
2018506785.tif 000011
【００９６】
[0095]この場合も、ＳＶＤ方法、交互最小化プロセスなどが、式７の目的関数を低減または最小化する圧縮された層の重み行列を決定するために使用され得る。圧縮された畳み込み層のカーネルサイズ
[0096]式７において言及された近似誤差が意味をなすために、行列Ｗijは、行列
【００９７】
【数１０】
2018506785.tif 000012
【００９８】
と同じ次元を有するべきである。この目的で、圧縮された畳み込み層「ｃｏｎｖ１」および「ｃｏｎｖ２」のカーネルサイズは、適宜に選定され得る。たとえば、ｋx×ｋyが圧縮されていない「ｃｏｎｖ」層のカーネルサイズを示す場合、圧縮された畳み込み層「ｃｏｎｖ１」および「ｃｏｎｖ２」のカーネルサイズは、以下を満たすように選定され得る。
【００９９】
【数１１】
2018506785.tif 000013
【０１００】
上式で、ｋ1x×ｋ1yは「ｃｏｎｖ１」層のカーネルサイズを表し、ｋ2x×ｋ2yは「ｃｏｎｖ２」層のカーネルサイズを表す。
【０１０１】
[0097]したがって、カーネルサイズｋx×ｋyをもつ畳み込み層は、それぞれカーネルサイズｋx×ｋyおよび１×１をもつ２つの畳み込み層と交換され得るか、または、その逆も同様である。
【０１０２】
[0098]さらに、いくつかの態様では、カーネルサイズｋx×ｋyをもつ畳み込み層は、それぞれカーネルサイズ１×１、ｋx×ｋy、および１×１をもつ３つの畳み込み層と交換され得る。
【０１０３】
[0099]いくつかの態様では、圧縮された畳み込み層、「ｃｏｎｖ１」および「ｃｏｎｖ２」のそれぞれのカーネルサイズｋ1およびｋ2は、以下を満たすように選定され得る。
【０１０４】
【数１２】
2018506785.tif 000014
【０１０５】
上式で、ｋは圧縮されていない畳み込み層「ｃｏｎｖ」のカーネルサイズである。以下の表１は、異なる可能なカーネルサイズｋ1およびｋ2の例を与え、ここで、圧縮されていない畳み込み層「ｃｏｎｖ」のカーネルサイズはｋ＝５である。
【０１０６】
【表１】
2018506785.tif 000015
【０１０７】
複数の畳み込み層との交換
[00100]畳み込み層はまた、３つ以上の畳み込み層と交換され得る。説明しやすいように、Ｌ個の畳み込み層が、１つの畳み込み層を交換するために使用されると仮定する。次いで、ｌ番目の層の重み値Ｗlが、以下の目的関数を低減または最小化するように選定される。
【０１０８】
【数１３】
2018506785.tif 000016
【０１０９】
上式で、変数ｒlはｌ番目の層の出力マップの数を示す。この場合も、目的関数が意味をなすために、ｌ番目の層のカーネルサイズｋlx×ｋlyは、以下を満たすように選定され得る。
【０１１０】
【数１４】
2018506785.tif 000017
【０１１１】
[00101]したがって、いくつかの態様では、プロパティ（ｋ1x−１）＋（ｋ2x−１）＋・・・＝（ｋx−１）および（ｋ1y−１）＋（ｋ2y−１）＋・・・＝（ｋy−１）が満たされるように、カーネルサイズｋ1x×ｋ1y、ｋ2x×ｋ2yなどをもつ複数の畳み込み層と交換されるカーネルサイズｋx×ｋyをもつ畳み込み層。
交互最小化プロセス
[00102]特殊な場合には、圧縮された畳み込み層のうちの１つが１×１のカーネルサイズを有し、他の圧縮された層が圧縮されていない層と同じカーネルサイズを有する場合、ＳＶＤ方法が、たとえば、式７および式１０において示された、目的関数を最適化する圧縮された重み行列を決定するために使用され得る。一態様では、この特殊な場合は、（ｋ1x×ｋ1y＝１×１およびｋ2x×ｋ2y＝ｋx×ｋy）または（ｋ1x×ｋ1y＝ｋx×ｋyおよびｋ2x×ｋ2y＝１×１）のいずれかに対応する。
【０１１２】
[00103]一般的な場合には、いずれの圧縮された層も１×１のカーネルサイズを有しない場合、交互最小化方法が、式７および式１０を最適化する圧縮された重み行列を決定するために使用され得る。交互最小化方法は、以下のステップを含む。
【０１１３】
（１）「ｃｏｎｖ１」層の重み行列
【０１１４】
【数１５】
2018506785.tif 000018
【０１１５】
および「ｃｏｎｖ２」層の重み行列
【０１１６】
【数１６】
2018506785.tif 000019
【０１１７】
をランダム値で初期化する
（２）交互に（in an alternating fashion）各圧縮された層の重みについて解く：
（ａ）「ｃｏｎｖ２」層重みを固定し、式７を最小化する「ｃｏｎｖ１」層重みについて解く。
【０１１８】
（ｂ）「ｃｏｎｖ１」層重みを固定し、式７を最小化する「ｃｏｎｖ２」層重みについて解く。
【０１１９】
（３）収束まで、または所定の数の反復の間、ステップ２を繰り返す。
【０１２０】
[00104]ステップ２ａおよび２ｂは、標準最小２乗プロセスを使用して閉形式で解かれ得る。
【０１２１】
[00105]圧縮された重みが、ＳＶＤ方法または交互最小化方法を使用して決定された後、圧縮されたネットワークは、分類性能の損失をある程度まで回復するために微調整され得ることに留意されたい。
局所結合層の圧縮
[00106]畳み込み層では、同じ畳み込みカーネルが入力画像マップ全体にわたって適用されるが、局所結合層では、異なる重み値が異なる空間ロケーションにおいて適用される。したがって、畳み込み層のために説明された圧縮手法は、異なる空間ロケーションにおいて圧縮方法（上記の式４〜式１１参照）を適用することによって、局所結合層に同様に適用され得る。
設計パラメータの選択
[00107]圧縮に関与する設計パラメータ（たとえば、全結合層の場合の中間ニューロンの数、畳み込み層の場合の出力マップの数およびカーネルサイズ）のうちのいくつかは、たとえば、圧縮されたネットワークの達成される圧縮および対応する機能的性能を経験的に測定することによって選定され得る。
【０１２２】
[00108]一例では、中間層におけるニューロンの数ｒは、パラメータ掃引を使用して選択され得る。ｒの値は、１６きざみで、１６からｍｉｎ（ｎ，ｍ）まで掃引され得る。各値について、検証データセットに関する圧縮されたネットワークの分類精度が決定され得る。分類精度の低下が許容できる（たとえば、しきい値を下回る）、ｒの最も低い値が選択され得る。
【０１２３】
[00109]いくつかの態様では、「貪欲探索（greedy search）」方法が、設計パラメータを決定するために使用され得る。たとえば、圧縮について最も見込みがあることを示す層（たとえば、多くの計算を用いる層）のうちの１つまたは複数が、圧縮され得る。その後、圧縮のための追加の層が、選択的に圧縮され得る。
【０１２４】
[00110]いくつかの態様では、良好な設計パラメータは、各層を個々に圧縮することによって決定され得る。たとえば、機能的性能がしきい値を下回らないように、各層が最大限に圧縮され得る。次いで、各層について個々に学習されたこれらの設計パラメータは、ネットワーク中の複数の層を一緒に圧縮するために使用され得る。複数の層を一緒に圧縮した後に、ネットワークは、機能的性能の低下を回復するために、圧縮された層および圧縮されていない層における重み値を更新することによって微調整され得る。
【０１２５】
[00111]いくつかの態様では、圧縮されたネットワークは、決定されたパラメータ値（たとえば、ｒ）ごとに微調整され得るか、または最終的に選択されたパラメータ値のみについて微調整され得る。以下の擬似コードは、圧縮パラメータを選択するための例示的なヒューリスティックを提供する。
【０１２６】
各全結合層について：
ｍａｘ＿ｒａｎｋ＝ｍｉｎ（ｎ，ｍ）
ｆｏｒ  ｒ＝１：ｍａｘ＿ｒａｎｋ
選択された全結合層を圧縮する（他の層は圧縮されていないままにする）
分類精度を決定する
精度の低下がしきい値を下回るような最も低いｒを選定する
対応する選定されたｒ値を使用して、すべての全結合層を圧縮する
圧縮されたネットワークを微調整する。
圧縮された層の間への非線形層の挿入
[00112]層を複数の層と交換した後に、圧縮された層におけるニューロンは、恒等活性化を用いて構成され得る。しかしながら、ネットワークの表現能力を改善するために、非線形層が圧縮された層の間に追加され得る。さらに、非線形層を追加することによって、より高い機能的性能が達成され得る。
【０１２７】
[00113]例示的な一態様では、整流関数非線形性（rectifier nonlinearity）が挿入され得る。この例では、次の層にそれらを受け渡す前に、ｍａｘ（０，ｘ）非線形性を使用して、圧縮された層の出力活性化にしきい値が適用され得る。いくつかの態様では、整流関数非線形性は、整流された線形ユニット（ＲｅＬＵ）であり得る。ａｂｓ（ｘ）、ｓｉｇｍｏｉｄ（ｘ）、および双曲線正接（ｔａｎｈ（ｘ））などを含む他の種類の非線形性も、使用され得る。
【０１２８】
[00114]いくつかの態様では、ニューラルネットワークが圧縮され得、非線形層が挿入され得、および／または微調整が適用され得る。たとえば、９×９の畳み込み層をもつニューラルネットワークが、（たとえば、トレーニング例の第１のセットを使用して）トレーニングされ得る。次いで、９×９の畳み込み層は圧縮され、それを２つの５×５の畳み込み層と交換し得る。非線形層が、２つの５×５の畳み込み層の間に追加され得る。微調整が実行され得る。次いで、いくつかの態様では、ネットワークは、５×５の畳み込み層の各々を２つの３×３の畳み込み層と交換することによって、さらに圧縮され得る。さらに、非線形層が、３×３の畳み込み層の各々の間に追加され得る。
【０１２９】
[00115]次いで、追加の微調整および圧縮が、所望の性能が取得されるまで繰り返され得る。上記の例では、元のネットワークと比較して、最終的な圧縮されたネットワークは、１つの９×９の畳み込み層の代わりに、間に非線形層をもつ４つの３×３の畳み込み層を有する。３つの追加の畳み込み層および非線形層をもつ、より深層のネットワークは、より良い機能的性能を達成し得る。
【０１３０】
[00116]図１０に、ニューラルネットワークを圧縮するための方法１０００を示す。ブロック１００２において、プロセスは、圧縮されたネットワークを生成するために、ニューラルネットワーク中の１つまたは複数の層を複数の圧縮された層と交換する。いくつかの態様では、圧縮された層は、最初の圧縮されていないネットワーク中の層と同じタイプのものである。たとえば、全結合層が複数の全結合層によって交換され得、畳み込み層が複数の畳み込み層によって交換され得る。同様に、局所結合層が複数の局所結合層によって交換され得る。
【０１３１】
[00117]ブロック１００４において、プロセスは、圧縮されたネットワークの圧縮された層の間に非線形性を挿入する。いくつかの態様では、プロセスは、圧縮された層のニューロンに非線形活性化関数を適用することによって、非線形性を挿入する。非線形活性化関数は、整流関数（rectifier）、絶対値関数、双曲線正接関数、シグモイド関数、または他の非線形活性化関数を備え得る。
【０１３２】
[00118]さらに、ブロック１００６において、プロセスは、層のうちの少なくとも１つにおける重み値を更新することによって、圧縮されたネットワークを微調整する。微調整は、バックプロパゲーションまたは他の標準プロセスを使用して実行され得る。微調整は、圧縮されたニューラルネットワーク中のすべての重み値を更新することによって、あるいは圧縮された層のサブセット、圧縮されていない層のサブセット、または両方の混合（mix）を更新することによって、実行され得る。微調整は、トレーニング例を使用して実行され得る。トレーニング例は、元のニューラルネットワークを教えるために使用されたものと同じであり得るか、あるいは例の新しいセット、または両方の混合を備え得る。
【０１３３】
[00119]いくつかの態様では、トレーニング例は、たとえば、写真のギャラリーを含む、スマートフォンまたは他のモバイルデバイスからのデータを備え得る。
【０１３４】
[00120]いくつかの態様では、プロセスは、より深層のニューラルネットワークを初期化するための方法として、圧縮と、非線形層の挿入と、微調整することとを繰り返し適用することによって、ニューラルネットワークを初期化することをさらに含む。
【０１３５】
[00121]図１１に、ニューラルネットワークを圧縮するための方法１１００を示す。ブロック１１０２において、プロセスは、組み合わせられた、複数の圧縮された層の受容野サイズが、圧縮されていない層の受容野に一致するように、圧縮されたネットワークを生成するために、ニューラルネットワーク中の少なくとも１つの層を圧縮された層と交換する。いくつかの態様では、圧縮されていない層のカーネルサイズは、受容野サイズに等しい。
【０１３６】
[00122]さらに、ブロック１１０４において、プロセスは、圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、圧縮されたネットワークを微調整する。
【０１３７】
[00123]図１２に、ニューラルネットワークを圧縮するための方法１２００を示す。ブロック１２０２において、プロセスは、圧縮されたネットワークを生成するために、ニューラルネットワーク中の１つまたは複数の層を複数の圧縮された層と交換する。いくつかの態様では、圧縮された層は、最初の圧縮されていないネットワーク中の層と同じタイプのものである。たとえば、全結合層が複数の全結合層によって交換され得、畳み込み層が複数の畳み込み層によって交換され得る。同様に、局所結合層が複数の局所結合層によって交換され得る。
【０１３８】
[00124]さらに、ブロック１２０４において、プロセスは、交互最小化プロセスを適用することによって、複数の圧縮された層の重み行列を決定する。
【０１３９】
[00125]いくつかの態様では、プロセスはまた、圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、圧縮されたネットワークを微調整する。微調整は、圧縮されたニューラルネットワーク中のすべての重み値を更新することによって、あるいは圧縮された層のサブセット、圧縮されていない層のサブセット、または両方の混合を更新することによって、実行され得る。微調整は、トレーニング例を使用して実行され得る。トレーニング例は、元のニューラルネットワークを教えるために使用されたものと同じであり得るか、あるいは例の新しいセット、または両方の混合を備え得る。
【０１４０】
[00126]微調整は、単一の段（stage）で実行され得るか、または複数の段で実行され得る。たとえば、微調整が複数の段で実行されるとき、第１の段では、微調整は、圧縮された層のサブセットのみに対して実行される。次いで、第２の段では、微調整は、圧縮された層および圧縮されていない層のサブセットに対して実行される。
【０１４１】
[00127]図１３に、本開示の態様による、ニューラルネットワークを圧縮するための方法１３００を示す。ブロック１３０２において、プロセスは、複数の次元に沿って、ニューラルネットワークなど、機械学習ネットワークを特徴づける。いくつかの態様では、ニューラルネットワークのタスク性能（Ｐ）が特徴づけられ得る。ニューラルネットワークがオブジェクト分類器である場合、タスク性能は、テストセットに関して（on a testing set）正しく分類されたオブジェクトの割合であり得る。メモリフットプリント（Ｍ）および／または推論時間（Ｔ）も特徴づけられ得る。たとえば、メモリフットプリントは、ニューラルネットワークの重みおよび他のモデルパラメータのメモリストレージ要件に対応し得る。推論時間（Ｔ）は、新しいオブジェクトがニューラルネットワークに提示された後に、新しいオブジェクトの分類中に経過した時間であり得る。
【０１４２】
[00128]ブロック１３０４において、プロセスは、圧縮されたネットワークを生成するために、ニューラルネットワーク中の１つまたは複数の層を複数の圧縮された層と交換する。いくつかの態様では、圧縮された層は、最初の圧縮されていないネットワーク中の層と同じタイプのものであり得る。たとえば、全結合層が複数の全結合層によって交換され得、畳み込み層が複数の畳み込み層によって交換され得る。同様に、局所結合層が複数の局所結合層によって交換され得る。例示的な構成では、プロセスは、第３の層のサイズが第１の層のサイズに等しくなるように、ニューラルネットワークの第１の層を第２および第３の層と交換する。このように指定された第３の層を用いて、圧縮されたニューラルネットワークの第３の層の出力は、第１の層の出力を模倣し得る。プロセスは、第２および第３の層を含む圧縮されたニューラルネットワークの組み合わせられたメモリフットプリントが、圧縮されていないニューラルネットワークのメモリフットプリント（Ｍ）よりも小さくなるように、第２の層のサイズ、これは（ｒ）で示され得る、をさらに指定し得る。代替的に、またはメモリフットプリントの低減に加えて、第２の層のサイズは、圧縮されたニューラルネットワークの推論時間が圧縮されていないニューラルネットワークの推論時間（Ｔ）よりも小さくなるように、選定され得る。
【０１４３】
[00129]ブロック１３０６において、プロセスは、ニューラルネットワークの交換層のパラメータを初期化する。例示的な一構成では、圧縮されたニューラルネットワークの第２の層に投影する重み行列（Ｗ１）、および圧縮されたニューラルネットワークの第２の層から第３の層に投影する重み行列（Ｗ２）は、ランダム値に初期化され得る。いくつかの態様では、重みパラメータの初期化は、交互最小化プロセスを伴い得る。いくつかの態様では、パラメータの初期化は、特異値分解を伴い得る。方法の追加の態様によれば、重みの初期設定は、重みがさらなる変更を受け得るので、初期化と呼ばれることがある。
【０１４４】
[00130]ブロック１３０８において、プロセスは、圧縮されたネットワークの圧縮された層の間に非線形性を挿入する。たとえば、プロセスは、圧縮されたニューラルネットワークの第２の層において非線形性を挿入し得る。いくつかの態様では、プロセスは、圧縮された層のニューロンに非線形活性化関数を適用することによって、非線形性を挿入する。非線形活性化関数は、整流関数、絶対値関数、双曲線正接関数、シグモイド関数、または他の非線形活性化関数を備え得る。
【０１４５】
[00131]ブロック１３１０において、プロセスは、層のうちの１つまたは複数における重み値を更新することによって、圧縮されたネットワークを微調整する。微調整は、バックプロパゲーションまたは他の標準プロセスを使用して実行され得る。微調整は、圧縮されたニューラルネットワーク中のすべての重み値を更新することによって、あるいは圧縮された層のサブセット、圧縮されていない層のサブセット、または両方の混合を更新することによって、実行され得る。微調整は、トレーニング例を使用して実行され得る。トレーニング例は、元のニューラルネットワークを教えるために使用されたものと同じであり得るか、あるいは例の新しいセット、または両方の混合を備え得る。例示的な構成では、微調整は、圧縮されたニューラルネットワークの第２および第３の層に対して実行され得る。次に、ブロック１３１２において、ニューラルネットワーク中の重みのすべてが、より高いレベルのタスク性能が達成され得るように、調節され得る。
【０１４６】
[00132]微調整された、圧縮されたニューラルネットワークは、たとえば、タスク性能（Ｐ）を含むいくつかの次元に沿って、特徴づけられ得る。圧縮されたニューラルネットワークについてのタスク性能が、許容できるしきい値を上回る場合、プロセスは終了し得る。圧縮されたニューラルネットワークについてのタスク性能が、許容できるしきい値を下回る場合、ブロック１３１６において、圧縮されたニューラルネットワーク中の層のサイズであり得る（ｒ）の値（１３１４：いいえ）は増加され得る。そうでない場合（１３１４：はい）、ブロック１３１８において、プロセスは終了する。（ｒ）の新しい値は、メモリフットプリント（Ｍ）および／または推論時間（Ｔ）が、圧縮されていないニューラルネットワークのそれよりも小さくなるように、選定され得る。パラメータを初期化し、非線形性を挿入し、微調整し、性能を特徴づけるステップは、許容できるタスク性能に達するまで、繰り返され得る。
【０１４７】
[00133]方法１３００は、圧縮された層のサイズ（ｒ）が、許容できるタスク性能が取得されるまで、小さい値からより大きい値に増加させられ得るプロセスを示すが、本開示はそのように限定しない。本開示の態様によれば、（ｒ）の値は、圧縮されたニューラルネットワークのタスク性能が、許容できるタスク性能を取得する可能性があるように、最初に控えめに（conservatively）選定され得る。したがって、方法は、メモリフットプリントまたは推論時間の利点が実現され得るように、圧縮されていないニューラルネットワークの代わりに使用され得る圧縮されたニューラルネットワークを生成し得る。次いで、方法は、許容できるタスク性能が取得され得なくなるまで、そのようなますます小さい（ｒ）の値を演算し続け得る。このようにして、方法は、方法の実行の過程にわたって増加する圧縮レベルを与え得る。
【０１４８】
[00134]上記で説明された方法の様々な動作は、対応する機能を実行することが可能な任意の好適な手段によって実行され得る。それらの手段は、限定はしないが、回路、特定用途向け集積回路（ＡＳＩＣ）、またはプロセッサを含む、様々な（１つまたは複数の）ハードウェアおよび／またはソフトウェア構成要素および／またはモジュールを含み得る。概して、図に示されている動作がある場合、それらの動作は、同様の番号をもつ対応するカウンターパートのミーンズプラスファンクション構成要素を有し得る。
【０１４９】
[00135]本明細書で使用される「決定すること」という用語は、多種多様なアクションを包含する。たとえば、「決定すること」は、計算すること（calculating）、計算すること（computing）、処理すること、導出すること、調査すること、ルックアップすること（たとえば、テーブル、データベースまたは別のデータ構造においてルックアップすること）、確認することなどを含み得る。さらに、「決定すること」は、受信すること（たとえば、情報を受信すること）、アクセスすること（たとえば、メモリ中のデータにアクセスすること）などを含み得る。さらに、「決定すること」は、解決すること、選択すること、選定すること、確立することなどを含み得る。
【０１５０】
[00136]本明細書で使用される、項目のリスト「のうちの少なくとも１つ」を指す句は、単一のメンバーを含む、それらの項目の任意の組合せを指す。一例として、「ａ、ｂ、またはｃのうちの少なくとも１つ」は、ａ、ｂ、ｃ、ａ−ｂ、ａ−ｃ、ｂ−ｃ、およびａ−ｂ−ｃを包含するものとする。
【０１５１】
[00137]本開示に関連して説明された様々な例示的な論理ブロック、モジュールおよび回路は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ信号（ＦＰＧＡ）または他のプログラマブル論理デバイス（ＰＬＤ）、個別ゲートまたはトランジスタ論理、個別ハードウェア構成要素、あるいは本明細書で説明された機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の市販のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、ＤＳＰとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、ＤＳＰコアと連携する１つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実装され得る。
【０１５２】
[00138]本開示に関連して説明された方法またはアルゴリズムのステップは、ハードウェアで直接実施されるか、プロセッサによって実行されるソフトウェアモジュールで実施されるか、またはその２つの組合せで実施され得る。ソフトウェアモジュールは、当技術分野で知られている任意の形態の記憶媒体中に常駐し得る。使用され得る記憶媒体のいくつかの例としては、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、フラッシュメモリ、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭ）、電気消去可能プログラマブル読取り専用メモリ（ＥＥＰＲＯＭ（登録商標））、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ−ＲＯＭなどがある。ソフトウェアモジュールは、単一の命令、または多数の命令を備え得、いくつかの異なるコードセグメント上で、異なるプログラム間で、および複数の記憶媒体にわたって分散され得る。記憶媒体は、プロセッサがその記憶媒体から情報を読み取ることができ、その記憶媒体に情報を書き込むことができるように、プロセッサに結合され得る。代替として、記憶媒体はプロセッサと一体であり得る。
【０１５３】
[00139]本明細書で開示された方法は、説明された方法を達成するための１つまたは複数のステップまたはアクションを備える。本方法のステップおよび／またはアクションは、特許請求の範囲から逸脱することなく、互いに交換され得る。言い換えれば、ステップまたはアクションの特定の順序が指定されない限り、特定のステップおよび／またはアクションの順序および／または使用は特許請求の範囲から逸脱することなく変更され得る。
【０１５４】
[00140]説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ハードウェアで実装される場合、例示的なハードウェア構成はデバイス中に処理システムを備え得る。処理システムは、バスアーキテクチャを用いて実装され得る。バスは、処理システムの特定の適用例および全体的な設計制約に応じて、任意の数の相互接続バスおよびブリッジを含み得る。バスは、プロセッサと、機械可読媒体と、バスインターフェースとを含む様々な回路を互いにリンクし得る。バスインターフェースは、ネットワークアダプタを、特に、バスを介して処理システムに接続するために使用され得る。ネットワークアダプタは、信号処理機能を実装するために使用され得る。いくつかの態様では、ユーザインターフェース（たとえば、キーパッド、ディスプレイ、マウス、ジョイスティックなど）もバスに接続され得る。バスはまた、タイミングソース、周辺機器、電圧調整器、電力管理回路など、様々な他の回路をリンクし得るが、それらは当技術分野でよく知られており、したがってこれ以上説明されない。
【０１５５】
[00141]プロセッサは、機械可読媒体に記憶されたソフトウェアの実行を含む、バスおよび一般的な処理を管理することを担当し得る。プロセッサは、１つまたは複数の汎用および／または専用プロセッサを用いて実装され得る。例としては、マイクロプロセッサ、マイクロコントローラ、ＤＳＰプロセッサ、およびソフトウェアを実行することができる他の回路がある。ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語などの名称にかかわらず、命令、データ、またはそれらの任意の組合せを意味すると広く解釈されたい。機械可読媒体は、例として、ランダムアクセスメモリ（ＲＡＭ）、フラッシュメモリ、読取り専用メモリ（ＲＯＭ）、プログラマブル読取り専用メモリ（ＰＲＯＭ）、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭ）、電気消去可能プログラマブル読取り専用メモリ（ＥＥＰＲＯＭ）、レジスタ、磁気ディスク、光ディスク、ハードドライブ、または他の好適な記憶媒体、あるいはそれらの任意の組合せを含み得る。機械可読媒体はコンピュータプログラム製品において実施され得る。コンピュータプログラム製品はパッケージング材料を備え得る。
【０１５６】
[00142]ハードウェア実装形態では、機械可読媒体は、プロセッサとは別個の処理システムの一部であり得る。しかしながら、当業者なら容易に理解するように、機械可読媒体またはその任意の部分は処理システムの外部にあり得る。例として、機械可読媒体は、すべてバスインターフェースを介してプロセッサによってアクセスされ得る、伝送線路、データによって変調された搬送波、および／またはデバイスとは別個のコンピュータ製品を含み得る。代替的に、または追加として、機械可読媒体またはその任意の部分は、キャッシュおよび／または汎用レジスタファイルがそうであり得るように、プロセッサに統合され得る。局所構成要素など、説明された様々な構成要素は、特定のロケーションを有するものとして説明され得るが、それらはまた、分散コンピューティングシステムの一部として構成されているいくつかの構成要素など、様々な方法で構成され得る。
【０１５７】
[00143]処理システムは、すべて外部バスアーキテクチャを介して他のサポート回路と互いにリンクされる、プロセッサ機能を提供する１つまたは複数のマイクロプロセッサと、機械可読媒体の少なくとも一部を提供する外部メモリとをもつ汎用処理システムとして構成され得る。代替的に、処理システムは、本明細書で説明されたニューロンモデルとニューラルシステムのモデルとを実装するための１つまたは複数の神経形態学的プロセッサを備え得る。別の代替として、処理システムは、プロセッサをもつ特定用途向け集積回路（ＡＳＩＣ）と、バスインターフェースと、ユーザインターフェースと、サポート回路と、単一のチップに統合された機械可読媒体の少なくとも一部分とを用いて、あるいは１つまたは複数のフィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラマブル論理デバイス（ＰＬＤ）、コントローラ、状態機械、ゲート論理、個別ハードウェア構成要素、もしくは他の好適な回路、または本開示全体にわたって説明された様々な機能を実行することができる回路の任意の組合せを用いて、実装され得る。当業者は、特定の適用例と、全体的なシステムに課される全体的な設計制約とに応じて、どのようにしたら処理システムについて説明された機能を最も良く実装し得るかを理解されよう。
【０１５８】
[00144]機械可読媒体はいくつかのソフトウェアモジュールを備え得る。ソフトウェアモジュールは、プロセッサによって実行されたときに、処理システムに様々な機能を実行させる命令を含む。ソフトウェアモジュールは、送信モジュールと受信モジュールとを含み得る。各ソフトウェアモジュールは、単一の記憶デバイス中に常駐するか、または複数の記憶デバイスにわたって分散され得る。例として、トリガイベントが発生したとき、ソフトウェアモジュールがハードドライブからＲＡＭにロードされ得る。ソフトウェアモジュールの実行中、プロセッサは、アクセス速度を高めるために、命令のいくつかをキャッシュにロードし得る。次いで、１つまたは複数のキャッシュラインが、プロセッサによる実行のために汎用レジスタファイルにロードされ得る。以下でソフトウェアモジュールの機能に言及する場合、そのような機能は、そのソフトウェアモジュールからの命令を実行したときにプロセッサによって実装されることが理解されよう。さらに、本開示の態様が、そのような態様を実装するプロセッサ、コンピュータ、機械、または他のシステムの機能に改善を生じることを諒解されたい。
【０１５９】
[00145]ソフトウェアで実装される場合、機能は、１つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され得る。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む、コンピュータ記憶媒体と通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは命令またはデータ構造の形態の所望のプログラムコードを搬送または記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。さらに、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線（ＩＲ）、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使用されるディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザーディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）、およびＢｌｕ−ｒａｙ（登録商標）ディスク（disc）を含み、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザーで光学的に再生する。したがって、いくつかの態様では、コンピュータ可読媒体は非一時的コンピュータ可読媒体（たとえば、有形媒体）を備え得る。さらに、他の態様では、コンピュータ可読媒体は一時的コンピュータ可読媒体（たとえば、信号）を備え得る。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【０１６０】
[00146]したがって、いくつかの態様は、本明細書で提示された動作を実行するためのコンピュータプログラム製品を備え得る。たとえば、そのようなコンピュータプログラム製品は、本明細書で説明された動作を実行するために１つまたは複数のプロセッサによって実行可能である命令をその上に記憶した（および／または符号化した）コンピュータ可読媒体を備え得る。いくつかの態様では、コンピュータプログラム製品はパッケージング材料を含み得る。
【０１６１】
[00147]さらに、本明細書で説明された方法および技法を実行するためのモジュールおよび／または他の適切な手段は、適用可能な場合にユーザ端末および／または基地局によってダウンロードされ、および／または他の方法で取得され得ることを諒解されたい。たとえば、そのようなデバイスは、本明細書で説明された方法を実行するための手段の転送を可能にするためにサーバに結合され得る。代替的に、本明細書で説明された様々な方法は、ユーザ端末および／または基地局が記憶手段（たとえば、ＲＡＭ、ＲＯＭ、コンパクトディスク（ＣＤ）またはフロッピーディスクなどの物理記憶媒体など）をデバイスに結合するかまたは与えると様々な方法を得ることができるように、記憶手段によって提供され得る。その上、本明細書で説明された方法および技法をデバイスに提供するための任意の他の好適な技法が利用され得る。
【０１６２】
[00148]特許請求の範囲は、上記で示された厳密な構成および構成要素に限定されないことを理解されたい。上記で説明された方法および装置の構成、動作および詳細において、特許請求の範囲から逸脱することなく、様々な改変、変更および変形が行われ得る。
【図１】
2018506785.tif 000020
【図２】
2018506785.tif 000021
【図３Ａ】
2018506785.tif 000022
【図３Ｂ】
2018506785.tif 000023
【図４Ａ】
2018506785.tif 000024
【図４Ｂ】
2018506785.tif 000025
【図５Ａ】
2018506785.tif 000026
【図５Ｂ】
2018506785.tif 000027
【図６Ａ】
2018506785.tif 000028
【図６Ｂ】
2018506785.tif 000029
【図７】
2018506785.tif 000030
【図８Ａ】
2018506785.tif 000031
【図８Ｂ】
2018506785.tif 000032
【図９Ａ】
2018506785.tif 000033
【図９Ｂ】
2018506785.tif 000034
【図１０】
2018506785.tif 000035
【図１１】
2018506785.tif 000036
【図１２】
2018506785.tif 000037
【図１３】
2018506785.tif 000038
【手続補正書】
【提出日】平成29年10月4日(2017.10.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ニューラルネットワークを圧縮するコンピュータ実装の方法であって、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換することと、
前記圧縮されたネットワークの圧縮された層の間に非線形性を挿入することと、
前記圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整することと
を備える、方法。
【請求項２】
非線形性を前記挿入することが、前記圧縮された層のニューロンに非線形活性化関数を適用することを備える、請求項１に記載の方法。
【請求項３】
前記非線形活性化関数が、整流関数、絶対値関数、双曲線正接関数、またはシグモイド関数である、請求項２に記載の方法。
【請求項４】
前記微調整することが、前記圧縮された層のサブセットのうちの少なくとも１つにおける重み値、または圧縮されていない層のサブセットにおける重み値を更新することを備える、請求項１に記載の方法。
【請求項５】
前記微調整することが、トレーニング例を使用して実行され、前記トレーニング例が、圧縮されていないネットワークをトレーニングするために使用される例の第１のセット、または例の新しいセットのうちの少なくとも１つを備える、請求項１に記載の方法。
【請求項６】
より深層のニューラルネットワークを初期化するための方法として、圧縮と、非線形層の挿入と、前記微調整することとを繰り返し適用することによって、前記ニューラルネットワークを初期化すること
をさらに備える、請求項１に記載の方法。
【請求項７】
ニューラルネットワークを圧縮するコンピュータ実装の方法であって、
組み合わせられた、複数の圧縮された層の受容野サイズが、圧縮されていない層の受容野サイズに一致するように、圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を前記圧縮された層と交換することと、
前記圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整することと
を備える、方法。
【請求項８】
圧縮されていない層のカーネルサイズが、前記受容野サイズに等しい、請求項７に記載の方法。
【請求項９】
前記交換することは、プロパティ（ｋ1x−１）＋（ｋ2x−１）＋・・・＝（ｋx−１）および（ｋ1y−１）＋（ｋ2y−１）＋・・・＝（ｋy−１）が満たされる前記圧縮されたネットワークを生成するために、カーネルサイズｋx×ｋyを有する前記ニューラルネットワーク中の少なくとも１つの層を、前記カーネルサイズｋ1x×ｋ1y，ｋ2x×ｋ2y．．．ｋLx×ｋLyをもつ同じタイプの複数の圧縮された層と交換することを備える、請求項７に記載の方法。
【請求項１０】
前記カーネルサイズｋx×ｋyをもつ畳み込み層が、それぞれ前記カーネルサイズ１×１、ｋx×ｋy、および１×１をもつ３つの畳み込み層と交換される、請求項９に記載の方法。
【請求項１１】
ニューラルネットワークを圧縮するコンピュータ実装の方法であって、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換することと、
重み行列の重み値に交互最小化プロセスを適用することによって、圧縮された層の前記重み行列を決定することと
を備える、方法。
【請求項１２】
前記圧縮された層のうちの少なくとも１つのための前記重み行列の前記重み値を更新することによって、前記圧縮されたネットワークを微調整することをさらに備える、請求項１１に記載の方法。
【請求項１３】
前記微調整することが、前記圧縮された層のサブセット、または圧縮されていない層のサブセットのうちの少なくとも１つにおける前記重み値を更新すること含む、請求項１２に記載の方法。
【請求項１４】
前記微調整することが、複数の段において実行され、そこにおいて、第１の段では、前記微調整することが、圧縮された層のサブセットに対して実行され、第２の段では、前記微調整することが、圧縮された層と圧縮されていない層とのサブセットに対して実行される、請求項１２に記載の方法。
【請求項１５】
ニューラルネットワークを圧縮するための装置であって、
メモリと、
前記メモリに結合された少なくとも１つのプロセッサと
を備え、前記少なくとも１つのプロセッサが、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換することと、
前記圧縮されたネットワークの圧縮された層の間に非線形性を挿入することと、
前記圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整することと
を行うように構成された、装置。
【請求項１６】
前記少なくとも１つのプロセッサが、前記圧縮された層のニューロンに非線形活性化関数を適用することによって、非線形性を挿入するようにさらに構成された、請求項１５に記載の装置。
【請求項１７】
前記非線形活性化関数が、整流関数、絶対値関数、双曲線正接関数、またはシグモイド関数である、請求項１６に記載の装置。
【請求項１８】
前記少なくとも１つのプロセッサが、圧縮された層のサブセットのうちの少なくとも１つにおける重み値、または圧縮されていない層のサブセットにおける重み値を更新することによって、前記微調整することを実行するようにさらに構成された、請求項１５に記載の装置。
【請求項１９】
前記少なくとも１つのプロセッサが、トレーニング例を使用することによって、前記微調整することを実行するようにさらに構成され、前記トレーニング例が、圧縮されていないネットワークをトレーニングするために使用される例の第１のセット、または例の新しいセットのうちの少なくとも１つを備える、請求項１５に記載の装置。
【請求項２０】
前記少なくとも１つのプロセッサが、より深層のニューラルネットワークを初期化するための方法として、圧縮と、非線形層の挿入と、前記微調整することとを繰り返し適用することによって、前記ニューラルネットワークを初期化するようにさらに構成された、請求項１５に記載の装置。
【請求項２１】
ニューラルネットワークを圧縮するための装置であって、
メモリと、
前記メモリに結合された少なくとも１つのプロセッサと
を備え、前記少なくとも１つのプロセッサが、
組み合わせられた、複数の圧縮された層の受容野サイズが、圧縮されていない層の受容野サイズに一致するように、圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を前記圧縮された層と交換することと、
前記圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整することと
を行うように構成された、装置。
【請求項２２】
圧縮されていない層のカーネルサイズが、前記受容野サイズに等しい、請求項２１に記載の装置。
【請求項２３】
前記少なくとも１つのプロセッサが、プロパティ（ｋ1x−１）＋（ｋ2x−１）＋・・・＝（ｋx−１）および（ｋ1y−１）＋（ｋ2y−１）＋・・・＝（ｋy−１）が満たされる前記圧縮されたネットワークを生成するために、カーネルサイズｋx×ｋyを有する前記ニューラルネットワーク中の少なくとも１つの層を、前記カーネルサイズｋ1x×ｋ1y，ｋ2x×ｋ2y．．．ｋLx×ｋLyをもつ同じタイプの複数の圧縮された層と交換するようにさらに構成された、請求項２１に記載の装置。
【請求項２４】
前記カーネルサイズｋx×ｋyをもつ畳み込み層が、それぞれ前記カーネルサイズ１×１、ｋx×ｋy、および１×１をもつ３つの畳み込み層と交換される、請求項２３に記載の装置。
【請求項２５】
ニューラルネットワークを圧縮するための装置であって、
メモリと、
前記メモリに結合された少なくとも１つのプロセッサと
を備え、前記少なくとも１つのプロセッサが、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換することと、
重み行列の重み値に交互最小化プロセスを適用することによって、圧縮された層の前記重み行列を決定することと
を行うように構成された、装置。
【請求項２６】
前記少なくとも１つのプロセッサが、前記圧縮された層のうちの少なくとも１つのための前記重み行列の前記重み値を更新することによって、前記圧縮されたネットワークを微調整するようにさらに構成された、請求項２５に記載の装置。
【請求項２７】
前記少なくとも１つのプロセッサが、前記圧縮された層のサブセット、または圧縮されていない層のサブセットのうちの少なくとも１つにおける前記重み値を更新することによって、前記微調整することを実行するように構成された、請求項２６に記載の装置。
【請求項２８】
前記少なくとも１つのプロセッサが、複数の段において前記微調整することを実行するようにさらに構成され、そこにおいて、第１の段では、前記微調整することが、圧縮された層のサブセットに対して実行され、第２の段では、前記微調整することが、圧縮された層と圧縮されていない層とのサブセットに対して実行される、請求項２６に記載の装置。
【請求項２９】
ニューラルネットワークを圧縮するための装置であって、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換するための手段と、
前記圧縮されたネットワークの圧縮された層の間に非線形性を挿入するための手段と、
前記圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整するための手段と
を備える、装置。
【請求項３０】
ニューラルネットワークを圧縮するための装置であって、
組み合わせられた、複数の圧縮された層の受容野サイズが、圧縮されていない層の受容野サイズに一致するように、圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を前記圧縮された層と交換するための手段と、
前記圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整するための手段と
を備える、装置。
【請求項３１】
ニューラルネットワークを圧縮するための装置であって、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換するための手段と、
重み行列の重み値に交互最小化プロセスを適用することによって、圧縮された層の前記重み行列を決定するための手段と
を備える、装置。
【請求項３２】
ニューラルネットワークを圧縮するためのプログラムコードをその上に符号化した非一時的コンピュータ可読媒体であって、前記プログラムコードが、プロセッサによって実行され、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換するためのプログラムコードと、
前記圧縮されたネットワークの圧縮された層の間に非線形性を挿入するためのプログラムコードと、
前記圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整するためのプログラムコードと
を備える、非一時的コンピュータ可読媒体。
【請求項３３】
ニューラルネットワークを圧縮するためのプログラムコードをその上に符号化した非一時的コンピュータ可読媒体であって、前記プログラムコードが、プロセッサによって実行され、
組み合わせられた、複数の圧縮された層の受容野サイズが、圧縮されていない層の受容野サイズに一致するように、圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を前記圧縮された層と交換するためのプログラムコードと、
前記圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整するためのプログラムコードと
を備える、非一時的コンピュータ可読媒体。
【請求項３４】
ニューラルネットワークを圧縮するためのプログラムコードをその上に符号化した非一時的コンピュータ可読媒体であって、前記プログラムコードが、プロセッサによって実行され、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換するためのプログラムコードと、
重み行列の重み値に交互最小化プロセスを適用することによって、圧縮された層の前記重み行列を決定するためのプログラムコードと
を備える、非一時的コンピュータ可読媒体。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１６２
【補正方法】変更
【補正の内容】
【０１６２】
[00148]特許請求の範囲は、上記で示された厳密な構成および構成要素に限定されないことを理解されたい。上記で説明された方法および装置の構成、動作および詳細において、特許請求の範囲から逸脱することなく、様々な改変、変更および変形が行われ得る。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
ニューラルネットワークを圧縮する方法であって、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換することと、
前記圧縮されたネットワークの圧縮された層の間に非線形性を挿入することと、
前記圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整することと
を備える、方法。
［Ｃ２］
非線形性を前記挿入することが、前記圧縮された層のニューロンに非線形活性化関数を適用することを備える、Ｃ１に記載の方法。
［Ｃ３］
前記非線形活性化関数が、整流関数、絶対値関数、双曲線正接関数、またはシグモイド関数である、Ｃ２に記載の方法。
［Ｃ４］
前記微調整することが、前記圧縮されたニューラルネットワーク中の前記重み値を更新することによって実行される、Ｃ１に記載の方法。
［Ｃ５］
前記微調整することが、前記圧縮された層のサブセットのうちの少なくとも１つにおける重み値、または圧縮されていない層のサブセットにおける重み値を更新することを備える、Ｃ４に記載の方法。
［Ｃ６］
前記微調整することが、トレーニング例を使用して実行され、前記トレーニング例が、圧縮されていないネットワークをトレーニングするために使用される例の第１のセット、または例の新しいセットのうちの少なくとも１つを備える、Ｃ４に記載の方法。
［Ｃ７］
より深層のニューラルネットワークを初期化するための方法として、圧縮と、非線形層の挿入と、前記微調整することとを繰り返し適用することによって、前記ニューラルネットワークを初期化すること
をさらに備える、Ｃ１に記載の方法。
［Ｃ８］
ニューラルネットワークを圧縮する方法であって、
組み合わせられた、複数の圧縮された層の受容野サイズが、圧縮されていない層の受容野に一致するように、圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を前記圧縮された層と交換することと、
少なくとも１つの圧縮された層における重み値を更新することによって、前記圧縮されたネットワークを微調整することと
を備える、方法。
［Ｃ９］
圧縮されていない層のカーネルサイズが、前記受容野サイズに等しい、Ｃ８に記載の方法。
［Ｃ１０］
前記交換することは、プロパティ（ｋ1x−１）＋（ｋ2x−１）＋・・・＝（ｋx−１）および（ｋ1y−１）＋（ｋ2y−１）＋・・・＝（ｋy−１）が満たされる前記圧縮されたネットワークを生成するために、カーネルサイズｋx×ｋyを有する前記ニューラルネットワーク中の少なくとも１つの層を、前記カーネルサイズｋ1x×ｋ1y，ｋ2x×ｋ2y．．．ｋLx×ｋLyをもつ同じタイプの複数の圧縮された層と交換することを備える、Ｃ８に記載の方法。
［Ｃ１１］
前記カーネルサイズｋx×ｋyをもつ畳み込み層が、それぞれ前記カーネルサイズ１×１、ｋx×ｋy、および１×１をもつ３つの畳み込み層と交換される、Ｃ１０に記載の方法。
［Ｃ１２］
ニューラルネットワークを圧縮する方法であって、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換することと、
交互最小化プロセスを適用することによって、圧縮された層の重み行列を決定することと
を備える、方法。
［Ｃ１３］
前記圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整することをさらに備える、Ｃ１２に記載の方法。
［Ｃ１４］
前記微調整することが、前記圧縮された層のサブセット、または圧縮されていない層のサブセットのうちの少なくとも１つにおける重み値を更新すること含む、Ｃ１３に記載の方法。
［Ｃ１５］
前記微調整することが、複数の段において実行され、そこにおいて、第１の段では、前記微調整することが、圧縮された層のサブセットに対して実行され、第２の段では、前記微調整することが、圧縮された層と圧縮されていない層とのサブセットに対して実行される、Ｃ１３に記載の方法。
［Ｃ１６］
ニューラルネットワークを圧縮するための装置であって、
メモリと、
前記メモリに結合された少なくとも１つのプロセッサと
を備え、前記少なくとも１つのプロセッサが、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換することと、
前記圧縮されたネットワークの圧縮された層の間に非線形性を挿入することと、
少なくとも１つの圧縮された層における重み値を更新することによって、前記圧縮されたネットワークを微調整することと
を行うように構成された、装置。
［Ｃ１７］
前記少なくとも１つのプロセッサが、前記圧縮された層のニューロンに非線形活性化関数を適用することによって、非線形性を挿入するようにさらに構成された、Ｃ１６に記載の装置。
［Ｃ１８］
前記非線形活性化関数が、整流関数、絶対値関数、双曲線正接関数、またはシグモイド関数である、Ｃ１７に記載の装置。
［Ｃ１９］
前記少なくとも１つのプロセッサが、前記圧縮されたニューラルネットワーク中の前記重み値を更新することによって、前記微調整を実行するようにさらに構成された、Ｃ１６に記載の装置。
［Ｃ２０］
前記少なくとも１つのプロセッサが、圧縮された層のサブセットのうちの少なくとも１つにおける重み値、または圧縮されていない層のサブセットにおける重み値を更新することによって、前記微調整することを実行するようにさらに構成された、Ｃ１９に記載の装置。
［Ｃ２１］
前記少なくとも１つのプロセッサが、トレーニング例を使用することによって、前記微調整することを実行するようにさらに構成され、前記トレーニング例が、圧縮されていないネットワークをトレーニングするために使用される例の第１のセット、または例の新しいセットのうちの少なくとも１つを備える、Ｃ１９に記載の装置。
［Ｃ２２］
前記少なくとも１つのプロセッサが、より深層のニューラルネットワークを初期化するための方法として、圧縮と、非線形層の挿入と、前記微調整することとを繰り返し適用することによって、前記ニューラルネットワークを初期化するようにさらに構成された、Ｃ１６に記載の装置。
［Ｃ２３］
ニューラルネットワークを圧縮するための装置であって、
メモリと、
前記メモリに結合された少なくとも１つのプロセッサと
を備え、前記少なくとも１つのプロセッサが、
組み合わせられた、複数の圧縮された層の受容野サイズが、圧縮されていない層の受容野サイズに一致するように、圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を前記圧縮された層（layers）と交換することと、
圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整することと
を行うように構成された、装置。
［Ｃ２４］
圧縮されていない層のカーネルサイズが、前記受容野サイズに等しい、Ｃ２３に記載の装置。
［Ｃ２５］
前記少なくとも１つのプロセッサが、プロパティ（ｋ1x−１）＋（ｋ2x−１）＋・・・＝（ｋx−１）および（ｋ1y−１）＋（ｋ2y−１）＋・・・＝（ｋy−１）が満たされる前記圧縮されたネットワークを生成するために、カーネルサイズｋx×ｋyを有する前記ニューラルネットワーク中の少なくとも１つの層を、前記カーネルサイズｋ1x×ｋ1y，ｋ2x×ｋ2y．．．ｋLx×ｋLyをもつ同じタイプの複数の圧縮された層と交換するようにさらに構成された、Ｃ２３に記載の装置。
［Ｃ２６］
前記カーネルサイズｋx×ｋyをもつ畳み込み層が、それぞれ前記カーネルサイズ１×１、ｋx×ｋy、および１×１をもつ３つの畳み込み層と交換される、Ｃ２５に記載の装置。
［Ｃ２７］
ニューラルネットワークを圧縮するための装置であって、
メモリと、
前記メモリに結合された少なくとも１つのプロセッサと
を備え、前記少なくとも１つのプロセッサが、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換することと、
交互最小化プロセスを適用することによって、圧縮された層の重み行列を決定することと
を行うように構成された、装置。
［Ｃ２８］
前記少なくとも１つのプロセッサが、前記圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整するようにさらに構成された、Ｃ２７に記載の装置。
［Ｃ２９］
前記少なくとも１つのプロセッサが、前記圧縮された層のサブセット、または圧縮されていない層のサブセットのうちの少なくとも１つにおける重み値を更新することによって、前記微調整することを実行するように構成された、Ｃ２８に記載の装置。
［Ｃ３０］
前記少なくとも１つのプロセッサが、複数の段において前記微調整することを実行するようにさらに構成され、そこにおいて、第１の段では、前記微調整することが、圧縮された層のサブセットに対して実行され、第２の段では、前記微調整することが、圧縮された層と圧縮されていない層とのサブセットに対して実行される、Ｃ２８に記載の装置。
［Ｃ３１］
ニューラルネットワークを圧縮するための装置であって、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換するための手段と、
前記圧縮されたネットワークの圧縮された層の間に非線形性を挿入するための手段と、  前記圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整するための手段と
を備える、装置。
［Ｃ３２］
ニューラルネットワークを圧縮するための装置であって、
組み合わせられた、複数の圧縮された層の受容野サイズが、圧縮されていない層の受容野に一致するように、圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を前記圧縮された層と交換するための手段と、
少なくとも１つの圧縮された層における重み値を更新することによって、前記圧縮されたネットワークを微調整するための手段と
を備える、装置。
［Ｃ３３］
ニューラルネットワークを圧縮するための装置であって、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換するための手段と、
交互最小化プロセスを適用することによって、圧縮された層の重み行列を決定するための手段と
を備える、装置。
［Ｃ３４］
ニューラルネットワークを圧縮するためのプログラムコードをその上に符号化した非一時的コンピュータ可読媒体であって、前記プログラムコードが、プロセッサによって実行され、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換するためのプログラムコードと、
前記圧縮されたネットワークの圧縮された層の間に非線形性を挿入するためのプログラムコードと、
少なくとも１つの圧縮された層における重み値を更新することによって、前記圧縮されたネットワークを微調整するためのプログラムコードと
を備える、非一時的コンピュータ可読媒体。
［Ｃ３５］
ニューラルネットワークを圧縮するためのプログラムコードをその上に符号化した非一時的コンピュータ可読媒体であって、前記プログラムコードが、プロセッサによって実行され、
組み合わせられた、複数の圧縮された層の受容野サイズが、圧縮されていない層の受容野サイズに一致するように、圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を前記圧縮された層と交換するためのプログラムコードと、
圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整するためのプログラムコードと
を備える、非一時的コンピュータ可読媒体。
［Ｃ３６］
ニューラルネットワークを圧縮するためのプログラムコードをその上に符号化した非一時的コンピュータ可読媒体であって、前記プログラムコードが、プロセッサによって実行され、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の少なくとも１つの層を複数の圧縮された層と交換するためのプログラムコードと、
交互最小化プロセスを適用することによって、圧縮された層の重み行列を決定するためのプログラムコードと
を備える、非一時的コンピュータ可読媒体。
【手続補正書】
【提出日】平成29年10月5日(2017.10.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ニューラルネットワークを圧縮するコンピュータ実装の方法であって、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の圧縮されていない層を複数の圧縮された層と交換することと、ここにおいて、前記複数の圧縮された層の各々は、前記圧縮されていない層と同じタイプである、
前記圧縮されたネットワークの圧縮された層の間に非線形性を挿入することと、
前記圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整することと
を備える、方法。
【請求項２】
非線形性を前記挿入することが、前記圧縮された層のニューロンに非線形活性化関数を適用することを備える、請求項１に記載の方法。
【請求項３】
前記非線形活性化関数が、整流関数、絶対値関数、双曲線正接関数、またはシグモイド関数である、請求項２に記載の方法。
【請求項４】
前記微調整することが、前記圧縮された層のサブセットのうちの少なくとも１つにおける重み値、または圧縮されていない層のサブセットにおける重み値を更新することを備える、請求項１に記載の方法。
【請求項５】
前記微調整することが、トレーニング例を使用して実行され、前記トレーニング例が、圧縮されていないネットワークをトレーニングするために使用される例の第１のセット、または例の新しいセットのうちの少なくとも１つを備える、請求項１に記載の方法。
【請求項６】
より深層のニューラルネットワークを初期化するための方法として、圧縮と、非線形層の挿入と、前記微調整することとを繰り返し適用することによって、前記ニューラルネットワークを初期化すること
をさらに備える、請求項１に記載の方法。
【請求項７】
ニューラルネットワークを圧縮するコンピュータ実装の方法であって、
組み合わせられた、複数の圧縮された層の受容野サイズが、圧縮されていない層の受容野サイズに一致するように、圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の前記圧縮されていない層を前記圧縮された層と交換することと、ここにおいて、前記複数の圧縮された層の各々は、前記圧縮されていない層と同じタイプである、
前記圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整することと
を備える、方法。
【請求項８】
前記圧縮されていない層のカーネルサイズが、前記受容野サイズに等しい、請求項７に記載の方法。
【請求項９】
前記交換することは、プロパティ（ｋ1x−１）＋（ｋ2x−１）＋・・・＝（ｋx−１）および（ｋ1y−１）＋（ｋ2y−１）＋・・・＝（ｋy−１）が満たされる前記圧縮されたネットワークを生成するために、カーネルサイズｋx×ｋyを有する前記ニューラルネットワーク中の少なくとも１つの層を、前記カーネルサイズｋ1x×ｋ1y，ｋ2x×ｋ2y．．．ｋLx×ｋLyをもつ同じタイプの複数の圧縮された層と交換することを備える、請求項７に記載の方法。
【請求項１０】
前記カーネルサイズｋx×ｋyをもつ畳み込み層が、それぞれ前記カーネルサイズ１×１、ｋx×ｋy、および１×１をもつ３つの畳み込み層と交換される、請求項９に記載の方法。
【請求項１１】
ニューラルネットワークを圧縮するコンピュータ実装の方法であって、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の圧縮されていない層を複数の圧縮された層と交換することと、ここにおいて、前記複数の圧縮された層の各々は、前記圧縮されていない層と同じタイプである、
重み行列の重み値に交互最小化プロセスを適用することによって、圧縮された層の前記重み行列を決定することと
を備える、方法。
【請求項１２】
前記圧縮された層のうちの少なくとも１つのための前記重み行列の前記重み値を更新することによって、前記圧縮されたネットワークを微調整することをさらに備える、請求項１１に記載の方法。
【請求項１３】
前記微調整することが、前記圧縮された層のサブセット、または圧縮されていない層のサブセットのうちの少なくとも１つにおける前記重み値を更新すること含む、請求項１２に記載の方法。
【請求項１４】
前記微調整することが、複数の段において実行され、そこにおいて、第１の段では、前記微調整することが、圧縮された層のサブセットに対して実行され、第２の段では、前記微調整することが、圧縮された層と圧縮されていない層とのサブセットに対して実行される、請求項１２に記載の方法。
【請求項１５】
ニューラルネットワークを圧縮するための装置であって、
メモリと、
前記メモリに結合された少なくとも１つのプロセッサと
を備え、前記少なくとも１つのプロセッサが、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の圧縮されていない層を複数の圧縮された層と交換することと、ここにおいて、前記複数の圧縮された層の各々は、前記圧縮されていない層と同じタイプである、
前記圧縮されたネットワークの圧縮された層の間に非線形性を挿入することと、
前記圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整することと
を行うように構成された、装置。
【請求項１６】
前記少なくとも１つのプロセッサが、前記圧縮された層のニューロンに非線形活性化関数を適用することによって、非線形性を挿入するようにさらに構成された、請求項１５に記載の装置。
【請求項１７】
前記非線形活性化関数が、整流関数、絶対値関数、双曲線正接関数、またはシグモイド関数である、請求項１６に記載の装置。
【請求項１８】
前記少なくとも１つのプロセッサが、圧縮された層のサブセットのうちの少なくとも１つにおける重み値、または圧縮されていない層のサブセットにおける重み値を更新することによって、前記微調整することを実行するようにさらに構成された、請求項１５に記載の装置。
【請求項１９】
前記少なくとも１つのプロセッサが、トレーニング例を使用することによって、前記微調整することを実行するようにさらに構成され、前記トレーニング例が、圧縮されていないネットワークをトレーニングするために使用される例の第１のセット、または例の新しいセットのうちの少なくとも１つを備える、請求項１５に記載の装置。
【請求項２０】
前記少なくとも１つのプロセッサが、より深層のニューラルネットワークを初期化するための方法として、圧縮と、非線形層の挿入と、前記微調整することとを繰り返し適用することによって、前記ニューラルネットワークを初期化するようにさらに構成された、請求項１５に記載の装置。
【請求項２１】
ニューラルネットワークを圧縮するための装置であって、
メモリと、
前記メモリに結合された少なくとも１つのプロセッサと
を備え、前記少なくとも１つのプロセッサが、
組み合わせられた、複数の圧縮された層の受容野サイズが、圧縮されていない層の受容野サイズに一致するように、圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の前記圧縮されていない層を前記圧縮された層と交換することと、ここにおいて、前記複数の圧縮された層の各々は、前記圧縮されていない層と同じタイプである、
前記圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整することと
を行うように構成された、装置。
【請求項２２】
前記圧縮されていない層のカーネルサイズが、前記受容野サイズに等しい、請求項２１に記載の装置。
【請求項２３】
前記少なくとも１つのプロセッサが、プロパティ（ｋ1x−１）＋（ｋ2x−１）＋・・・＝（ｋx−１）および（ｋ1y−１）＋（ｋ2y−１）＋・・・＝（ｋy−１）が満たされる前記圧縮されたネットワークを生成するために、カーネルサイズｋx×ｋyを有する前記ニューラルネットワーク中の少なくとも１つの層を、前記カーネルサイズｋ1x×ｋ1y，ｋ2x×ｋ2y．．．ｋLx×ｋLyをもつ同じタイプの複数の圧縮された層と交換するようにさらに構成された、請求項２１に記載の装置。
【請求項２４】
前記カーネルサイズｋx×ｋyをもつ畳み込み層が、それぞれ前記カーネルサイズ１×１、ｋx×ｋy、および１×１をもつ３つの畳み込み層と交換される、請求項２３に記載の装置。
【請求項２５】
ニューラルネットワークを圧縮するための装置であって、
メモリと、
前記メモリに結合された少なくとも１つのプロセッサと
を備え、前記少なくとも１つのプロセッサが、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の圧縮されていない層を複数の圧縮された層と交換することと、ここにおいて、前記複数の圧縮された層の各々は、前記圧縮されていない層と同じタイプである、
重み行列の重み値に交互最小化プロセスを適用することによって、圧縮された層の前記重み行列を決定することと
を行うように構成された、装置。
【請求項２６】
前記少なくとも１つのプロセッサが、前記圧縮された層のうちの少なくとも１つのための前記重み行列の前記重み値を更新することによって、前記圧縮されたネットワークを微調整するようにさらに構成された、請求項２５に記載の装置。
【請求項２７】
前記少なくとも１つのプロセッサが、前記圧縮された層のサブセット、または圧縮されていない層のサブセットのうちの少なくとも１つにおける前記重み値を更新することによって、前記微調整することを実行するように構成された、請求項２６に記載の装置。
【請求項２８】
前記少なくとも１つのプロセッサが、複数の段において前記微調整することを実行するようにさらに構成され、そこにおいて、第１の段では、前記微調整することが、圧縮された層のサブセットに対して実行され、第２の段では、前記微調整することが、圧縮された層と圧縮されていない層とのサブセットに対して実行される、請求項２６に記載の装置。
【請求項２９】
ニューラルネットワークを圧縮するための装置であって、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の圧縮されていない層を複数の圧縮された層と交換するための手段と、ここにおいて、前記複数の圧縮された層の各々は、前記圧縮されていない層と同じタイプである、
前記圧縮されたネットワークの圧縮された層の間に非線形性を挿入するための手段と、
前記圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整するための手段と
を備える、装置。
【請求項３０】
ニューラルネットワークを圧縮するための装置であって、
組み合わせられた、複数の圧縮された層の受容野サイズが、圧縮されていない層の受容野サイズに一致するように、圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の前記圧縮されていない層を前記圧縮された層と交換するための手段と、ここにおいて、前記複数の圧縮された層の各々は、前記圧縮されていない層と同じタイプである、
前記圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整するための手段と
を備える、装置。
【請求項３１】
ニューラルネットワークを圧縮するための装置であって、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の圧縮されていない層を複数の圧縮された層と交換するための手段と、ここにおいて、前記複数の圧縮された層の各々は、前記圧縮されていない層と同じタイプである、
重み行列の重み値に交互最小化プロセスを適用することによって、圧縮された層の前記重み行列を決定するための手段と
を備える、装置。
【請求項３２】
ニューラルネットワークを圧縮するためのプログラムコードをその上に符号化した非一時的コンピュータ可読媒体であって、前記プログラムコードが、プロセッサによって実行され、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の圧縮されていない層を複数の圧縮された層と交換するためのプログラムコードと、ここにおいて、前記複数の圧縮された層の各々は、前記圧縮されていない層と同じタイプである、
前記圧縮されたネットワークの圧縮された層の間に非線形性を挿入するためのプログラムコードと、
前記圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整するためのプログラムコードと
を備える、非一時的コンピュータ可読媒体。
【請求項３３】
ニューラルネットワークを圧縮するためのプログラムコードをその上に符号化した非一時的コンピュータ可読媒体であって、前記プログラムコードが、プロセッサによって実行され、
組み合わせられた、複数の圧縮された層の受容野サイズが、圧縮されていない層の受容野サイズに一致するように、圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の前記圧縮されていない層を前記圧縮された層と交換するためのプログラムコードと、ここにおいて、前記複数の圧縮された層の各々は、前記圧縮されていない層と同じタイプである、
前記圧縮された層のうちの少なくとも１つにおける重み値を更新することによって、前記圧縮されたネットワークを微調整するためのプログラムコードと
を備える、非一時的コンピュータ可読媒体。
【請求項３４】
ニューラルネットワークを圧縮するためのプログラムコードをその上に符号化した非一時的コンピュータ可読媒体であって、前記プログラムコードが、プロセッサによって実行され、
圧縮されたニューラルネットワークを生成するために、前記ニューラルネットワーク中の圧縮されていない層を複数の圧縮された層と交換するためのプログラムコードと、ここにおいて、前記複数の圧縮された層の各々は、前記圧縮されていない層と同じタイプである、
重み行列の重み値に交互最小化プロセスを適用することによって、圧縮された層の前記重み行列を決定するためのプログラムコードと
を備える、非一時的コンピュータ可読媒体。
【国際調査報告】
2018506785.tif 000039
2018506785.tif 000040
2018506785.tif 000041