(57)【要約】  開示するのは、ディープ・ニューラル・ネットワークのための圧縮方法である。ディープ・ニューラル・ネットワークは、複数の層を含む。この方法は、入力層以外の複数の層の内少なくとも１つの層の各々に対して、その層のパラメータをパラメータ記憶空間から読み出すステップ（３１０）と、直前の層によって格納された第１特徴マップを、特徴マップ記憶空間から読み出すステップ（３２０）と、読み出したパラメータおよび第１特徴マップに基づいて、第２特徴マップを生成するステップ（３３０）と、第２特徴マップを圧縮して、第３特徴マップを得る(so as to)ステップ（３４０）と、第３特徴マップを特徴マップ記憶空間に格納するステップ（３５０）とを含む。更に、本発明は、この圧縮方法に基づくチップ、電子デバイス、および媒体にも関する。【選択図】      図３
2021535689.tif 000002
【特許請求の範囲】
【請求項１】
ディープ・ニューラル・ネットワークのための圧縮方法であって、前記ディープ・ニューラル・ネットワークが複数の層を含み、入力層を除く前記複数の層における少なくとも１つの層に対して、前記方法が、
パラメータ記憶空間から前記層のパラメータを読み出すステップと、
特徴マップ記憶空間から、直前の層によって格納された第１特徴マップを読み出すステップと、
前記読み出したパラメータおよび第１特徴マップに基づいて、第２特徴マップを生成するステップと、
前記第２特徴マップを圧縮して、第３特徴マップを得るステップと、
前記第３特徴マップを前記特徴マップ記憶空間に格納するステップと、
を含む、方法。
【請求項２】
請求項１に記載の方法において、前記第２特徴マップに対して実行される圧縮が、損失のある圧縮を含む、方法。
【請求項３】
請求項１に記載の方法において、この方法が、前記ディープ・ニューラル・ネットワークの訓練プロセスおよび前記ディープ・ニューラル・ネットワークの推論プロセスにおける順方向伝搬フェーズにおいて、使用される、方法。
【請求項４】
請求項１に記載の方法において、前記ディープ・ニューラル・ネットワークが、畳み込みニューラル・ネットワークを含み、前記畳み込みニューラル・ネットワークが、複数の畳み込み層を含み、前記方法が、前記畳み込み層の少なくとも１つに対して実行される、方法。
【請求項５】
請求項１に記載の方法において、
前記第１特徴マップが圧縮特徴マップであり、
前記読み出したパラメータおよび第１特徴マップに基づいて第２特徴マップを生成するステップが、
前記第１特徴マップを解凍するステップと、
前記読み出したパラメータおよび解凍した第１特徴マップに基づいて、前記第２特徴マップを生成するステップと、
を含む、方法。
【請求項６】
請求項１に記載の方法において、
前記パラメータ記憶空間から読み出した前記パラメータが圧縮パラメータであり、前記読み出したパラメータおよび第１特徴マップに基づいて第２特徴マップを生成するステップが、
前記読み出したパラメータを解凍するステップと、
前記解凍したパラメータおよび前記第１特徴マップに基づいて、前記第２特徴マップを生成するステップと、
を含む、方法。  
【請求項７】
請求項２に記載の方法において、前記第２特徴マップを圧縮するステップが、
前記第２特徴マップを空間ドメインから周波数ドメインに変換するステップと、
変換係数を量子化するステップと、
を含む、方法。
【請求項８】
請求項２に記載の方法において、前記第２特徴マップを圧縮するステップが、更に、
前記第２特徴マップに対して予測コーディングを実行するステップを含み、前記予測コーディングが、内部予測および／または相互予測を含む、方法。
【請求項９】
請求項２に記載の方法において、前記第２特徴マップを圧縮するステップが、前記第２特徴マップの異なる領域を異なる圧縮率で圧縮するステップを含み、前記領域の各々の圧縮率が、当該領域における関心度に依存し、第１関心度の領域の圧縮率が、第２関心度の領域の圧縮率よりも低く、前記第１関心度が、前記第２関心度よりも高い、方法。
【請求項１０】
請求項２に記載の方法において、前記第２特徴マップを圧縮するステップが、前記第２特徴マップに対して非均一量子化を実行するステップを含み、前記第２特徴マップの異なる領域が、異なる量子化刻みを有する、方法。
【請求項１１】
請求項１０に記載の方法において、前記第２特徴マップの領域の各々の量子化刻みが、領域の画像の複雑さ、前記第２特徴マップにおける領域の位置、領域の重要度、領域における特異的特徴の存在または不在、および領域における特異的特徴の数の内少なくとも１つに基づいて決定される、方法。
【請求項１２】
請求項１１に記載の方法において、特異的特徴が、前記ディープ・ニューラル・ネットワークのアプリケーション・シナリオにおいて関心のある特徴を含む、方法。
【請求項１３】
請求項１１に記載の方法において、領域における特異的特徴の存在または不在にしたがって領域の各々の量子化刻みを決定するステップが、
前記領域における前記特異的特徴の存在に応答して、第１量子化刻みを前記領域に割り当てるステップと、
前記領域における前記特異的特徴の不在に応答して、第２量子化刻みを前記領域に割り当てるステップと、
を含み、前記第１量子化刻みが、前記第２量子化刻みよりも小さい、方法。
【請求項１４】
請求項１１に記載の方法において、前記領域における前記特異的特徴の数にしたがって前記領域の各々の量子化刻みを決定するステップが、
前記領域における前記特異的特徴の数が、予め設定された閾値よりも多いことに応答して、第３量子化刻みを前記領域に割り当てるステップと、
前記領域における前記特異的特徴の数が前記所定の閾値以下であることに応答して、第４量子化刻みを前記領域に割り当てるステップと、
を含み、前記第３量子化刻みが、前記第４量子化刻みよりも小さい、方法。
【請求項１５】
請求項１に記載の方法において、前記ディープ・ニューラル・ネットワークが、物体認識のために、ビデオ・データを処理するように構成される、方法。
【請求項１６】
チップであって、
パラメータ記憶空間および特徴マップ記憶空間を含むメモリであって、前記パラメータ記憶空間が、ディープ・ニューラル・ネットワークのパラメータを格納するように構成され、前記特徴マップ記憶空間が、前記ディープ・ニューラル・ネットワークの特徴マップを格納するように構成される、メモリと、
前記メモリと協働して、請求項１〜１５までのいずれか一項に記載の方法を実行するように構成されたディープ・ニューラル・ネットワーク・エンジンと、
を備える、チップ。
【請求項１７】
請求項１６に記載のチップにおいて、前記メモリがランダム・アクセス・メモリを含む、チップ。
【請求項１８】
請求項１６に記載のチップにおいて、前記チップが、人工知能ビジョン・チップを含む、チップ。
【請求項１９】
請求項１８に記載のチップにおいて、前記チップが、更に、
画像信号を処理するように構成された画像信号処理（ＩＳＰ）ユニットと、
オーディオおよびビデオ信号をエンコードならびにデコードするように構成されたマルチメディア信号コデックと、
を含む、チップ。
【請求項２０】
電子デバイスであって、
画像および／またはビデオ・データをキャプチャするように構成された撮像センサと、
請求項１６〜１９のいずれか一項に記載のチップであって、ディープ・ニューラル・ネットワークを使用して、前記キャプチャされた画像および／またはビデオ・データを、物体の認識のために処理するように構成される、チップと、
を含む、電子デバイス。
【請求項２１】
電子デバイスであって、
プロセッサと、
プログラムを格納するメモリと、
を含み、前記プログラムが命令を含み、前記プロセッサによって前記命令が実行されると、請求項１〜１５のいずれか一項に記載の方法を前記電子デバイスに実行させる、電子デバイス。
【請求項２２】
プログラムを格納するコンピュータ読み取り可能記憶媒体であって、前記プログラムが命令を含み、プロセッサによって前記命令が実行されると、請求項１〜１５のいずれか一項に記載の方法を前記プロセッサに実行させる、コンピュータ読み取り可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ニューラル・ネットワークに関し、更に特定すれば、ディープ・ニューラル・ネットワークのための圧縮に関する。
【従来技術】
【０００２】
ディープ・ニューラル・ネットワーク（ＤＮＮ）は、人工知能技術の中核である。現在、ディープ・ニューラル・ネットワークは幅広く研究され、関心を集めており、コンピュータ・ビジョン、音声認識、ロボット、自動運転等を含む、人工知能用途の多くの分野において応用されている。
【０００３】
ディープ・ニューラル・ネットワークは、入力層、ある数の隠れ層（中間層とも呼ばれる）、および出力層を含む、複数のニューラル・ネットワーク層で構成される。現在のディープ・ニューラル・ネットワークは、通常、数千層までもの非常に多い数の層を有し、各層が多数のノードを含む。したがって、ディープ・ニューラル・ネットワーク全体では、数百万、または数千万ものパラメータを含む場合もあり、非常に大きな記憶空間およびメモリ帯域幅を必要とする。これは、記憶のコストを増大させるだけでなく、ディープ・ニューラル・ネットワークの性能にも影響する。特に、ビデオ監視および自動運転というようなリアル・タイム用途では、ディープ・ニューラル・ネットワークの記憶の問題は、その性能およびハードウェア設計において隘路となりつつある。
【発明の概要】
【課題を解決するための手段】
【０００４】
本開示の態様によれば、ディープ・ニューラル・ネットワークのための圧縮方法を提供する。ディープ・ニューラル・ネットワークは、複数の層を含む。この方法は、入力層を除く複数の層における少なくとも１つの層に対して、パラメータ記憶空間から層のパラメータを読み出すステップと、特徴マップ記憶空間から、直前の層によって格納された第１特徴マップを読み出すステップと、読み出したパラメータおよび第１特徴マップに基づいて、第２特徴マップを生成するステップと、第２特徴マップを圧縮して、第３特徴マップを得るステップと、第３特徴マップを特徴マップ記憶空間に格納するステップとを含む。
【０００５】
本開示の他の態様によれば、チップを提供する。このチップは、メモリとディープ・ニューラル・ネットワーク・エンジンとを含む。メモリは、パラメータ記憶空間および特徴マップ記憶空間を含み、パラメータ記憶空間が、ディープ・ニューラル・ネットワークのパラメータを格納するように構成され、特徴マップ記憶空間が、ディープ・ニューラル・ネットワークの特徴マップを格納するように構成される。ディープ・ニューラル・ネットワーク・エンジンは、メモリと協働して、本開示による方法を実行するように構成される。
【０００６】
本開示の他の態様によれば、電子デバイスを提供する。この電子デバイスは、撮像センサと前述のチップとを含む。撮像センサは、画像および／またはビデオ・データをキャプチャするように構成される。チップは、ディープ・ニューラル・ネットワークを使用して、物体の認識のために、キャプチャされた画像および／またはビデオ・データを処理するように構成される。
【０００７】
本開示の他の態様によれば、電子デバイスを提供する。この電子デバイスは、プロセッサと、プログラムを格納するメモリとを含む。プログラムは、命令を含み、プロセッサによって命令が実行されると、本開示による方法を電子デバイスに実行させる。
【０００８】
本開示の他の態様によれば、プログラムを格納するコンピュータ読み取り可能記憶媒体を提供する。プログラムは、命令を含み、プロセッサによって命令が実行されると、本開示による方法をプロセッサに実行させる。
【図面の簡単な説明】
【０００９】
図面は、実施形態を一例として示し、明細書の一部を形成し、明細書の書面による説明と共に、実施形態の例示的な実施態様(implementation)を説明するために使用される。図示する実施形態は、例示を目的として示されるに過ぎず、特許請求の範囲を限定するのではない。図面全体を通じて、同じ参照番号は同じエレメントを指す。
【図１】図１は、本開示の例示的な実施形態によるディープ・ニューラル・ネットワークを示す模式図である。
【図２】図２は、本開示の例示的な実施形態による畳み込みニューラル・ネットワーク（ＣＮＮ：convolutional neural network）を示す模式図である。
【図３】図３は、本開示の例示的な実施形態によるディープ・ニューラル・ネットワークのための例示的な圧縮方法を示すフローチャートである。
【図４】図４は、本開示の例示的な実施形態による特徴マップの圧縮を示す模式ブロック図である。
【図５】図５は、本開示の例示的な実施形態によるディープ・ニューラル・ネットワークの推論プロセスを示す模式図である。
【図６】図６は、本開示の例示的実施形態によるディープ・ニューラル・ネットワークの訓練プロセスを示す模式図である。
【図７】図７は、本開示の例示的実施形態によるチップを示す模式図である。
【図８】図８は、本開示の例示的実施形態による電子デバイスを示す模式図である。
【図９】図９は、本開示の例示的実施形態による他の電子デバイスを示す模式図である。
【発明を実施するための形態】
【００１０】
本開示において、別段記載がなければ、種々のエレメントについて説明する際に使用される「第１」(first)、「第２」(second)等の用語は、これらのエレメントの位置的関係、時間的関係、重要性の関係のいずれも、限定することを意図するのではなく、単にコンポーネント間で区別することを意図するに過ぎない。ある例では、第１エレメントおよび第２エレメントがエレメントの同じ実例(instance)を指す場合もあり、場合によっては、前後関係の記載に基づいて、第１エレメントおよび第２エレメントが異なる実例を指すこともある。
【００１１】
本開示において種々の例の説明に使用する用語は、単に特定の例を説明することを目的とするに過ぎず、限定することを意図しているのではない。エレメントの数が具体的に定められていない場合、コンテキストにおいて特に明示的に示されていないならば、１つ以上のエレメントがあってもよい。更に、本開示において使用する「および／または」という用語は、列挙される項目の内任意のもの、およびそれらの全ての可能な組み合わせも包含するものとする。
【００１２】
図１は、例示的なディープ・ニューラル・ネットワークを示す模式図である。ディープ・ニューラル・ネットワークは、入力層および出力層に加えて、少なくとも１つの隠れ層を含むニューラル・ネットワークである。一例として、図１に示すディープ・ニューラル・ネットワーク１００は、入力層１１０、２つの隠れ層１２０および１３０、ならびに出力層１４０を含む。各層は、数個のノード（ニューロンとも呼ぶ）１５０を含む。一例として、図１の入力層１１０は３つのノードを有し、隠れ層１２０は４つのノードを有し、隠れ層１３０は３つのノードを有し、出力層１４０は２つのノードを有する。尚、図１はディープ・ニューラル・ネットワークの単純な例に過ぎず、実際のディープ・ニューラル・ネットワークの隠れ層の数、および各層におけるノードの数は、これらの数よりもはるかに多い可能性があることは注記してしかるべきである。
【００１３】
入力層１１０は、写真の画素、オーディオの振幅サンプル、システム・ステータスのディジタル表現等のような、入力データを受け取る。このデータは、隠れ層１２０に伝搬される。隠れ層１２０における各ノードは、受け取ったデータを計算し、計算結果を次の隠れ層１３０に伝搬する。同様に、隠れ層１３０における各ノードは、受け取ったデータを計算し、計算結果を出力層１４０に伝搬する。出力層１４０は、受け取ったデータを処理し、結果、例えば、特定の物体の認識結果を出力する。
【００１４】
層間のノードは、全結合または部分結合であってもよい。全結合の場合では、現在の層（例えば、出力層１４０）におけるいずれのノードも、直前にある層（例えば、隠れ層１３０）の全てのノードに接続される。部分的結合の場合では、現在の層（例えば、出力層１４０）における１つ以上のノードが、直前にある層（例えば、隠れ層１３０）における全てのノードではなく、一部のノードのみに接続されればよい。図１に示すニューラル・ネットワークでは、全ての層が全結合される。しかしながら、ディープ・ニューラル・ネットワークにおける少なくとも一部の層は、代わりに、部分結合されてもよいことは理解できよう。
【００１５】
通常、隠れ層１２０および１３０ならびに出力層１４０における各ノードは、入力データに対して線形または非線形演算を実行する。ノード１５０が隠れ層１３０内に位置し、ノード１５０が４つの入力ｘ１、ｘ２、ｘ３、およびｘ４と出力ｙとを有すると仮定すると、
【００１６】
【数１】
2021535689.tif 000003
【００１７】
ここで、ｗｉは、ノード１５０の入力ｘｉの重み（ｉ＝１、２、３、４。あるニューラル・ネットワークでは、重みを接続とも呼ぶ。即ち、隠れ層１２０における各ノードから隠れ層１３０におけるノード１５０への接続が、対応する重みを表すために使用される）であり、ｂは、ノード１５０のバイアスであり、関数ｆ（）は、ノード１５０の活性化関数であり、通常、シグモイド関数、双曲線正接（ｔａｎｈ）関数、正規化線形単位（ＲｅＬＵ）関数、または漏洩ＲｅＬＵ関数のような、非線形関数である。尚、バイアスｂも活性化関数ｆ（）も必要でなく、一部のノードが重みｗのみを有するのでもよいことは、理解できよう。
【００１８】
ニューラル・ネットワークでは、各ノードの計算に使用される重みｗおよびバイアスｂは、通常、訓練プロセスにおける連続学習によって得られ、通常、ニューラル・ネットワークのパラメータと呼ばれる。
【００１９】
ディープ・ニューラル・ネットワークの層およびノードの数は通常非常に多いので、訓練および推論に必要とされるパラメータの数は膨大となる。例えば、入力データが１００×１００画素のサイズを有するカラー画像であるとすると、各画素は３つの値Ｒ、Ｇ、およびＢを有するので、入力層は３×１０４個のノードを有し、各ノードは１つの画素のカラー値を表す。ニューラル・ネットワークの第１隠れ層が１０００個のノードを有し、入力層に全結合されると仮定すると、第１隠れ層の計算に必要とされるパラメータ（重みｗおよびバイアスｂ）の数は、３×１０７＋１０００となる。層の数が増えるに連れて、パラメータの数もそれに応じて増える。ニューラル・ネットワークの推論プロセスまたは訓練プロセスでは、各層が対応するパラメータをメモリ（ＤＲＡＭ、ＳＲＡＭ、ＤＤＲ  ＲＡＭ、または他のランダム・アクセス・ソリッド・ステート・メモリのような、種々のランダム・アクセス・メモリまたは揮発性メモリとすればよい、グラフィクス・プロセッサのメモリ等）から読み出す必要、および／または対応するパラメータをメモリに格納する必要があるので、これはメモリの記憶容量およびメモリ帯域幅に大きな負担(pressure)をかけることになる。
【００２０】
一般的なディープ・ニューラル・ネットワークは、畳み込みニューラル・ネットワーク(convolutional neural network)であり、その隠れ層は少なくとも１つの畳み込み層を含む。従来のディープ・ニューラル・ネットワークと比較すると、畳み込みニューラル・ネットワークは、画像および音声認識ならびに他の態様において出力する結果に優れ、ネットワークによって必要とされるパラメータの数を減らすことができる。畳み込みニューラル・ネットワークの最も一般的な用途は画像認識である。以下の論述では、一例として、入力データを画像とする。しかしながら、畳み込みニューラル・ネットワークの用途は画像認識に限定されるのではないことは、当業者には当然理解されよう。
【００２１】
典型的な畳み込みニューラル・ネットワークでは、入力画像が一連の畳み込み層、随意のプーリング層(pooling layer)、および全結合層を通過した後、対応する認識結果を出力することができる。図２は、例示的な畳み込みニューラル・ネットワークを示す模式図である。尚、畳み込みニューラル・ネットワークは多くの形態を有し、図２は単純な例示的な表現に過ぎず、本開示の解決手段はこれに限定されるのではないことは注記してしかるべきである。
【００２２】
図２に示すように、畳み込みニューラル・ネットワーク２００は入力層２１０を含むことができる。入力層２１０は、画像のような入力データを受け取るために使用することができる。随意に、入力層２１０は、以後の処理をし易くするために、データに対して前処理（例えば、ディミーニング(de-meaning)、正規化、脱相関、ホワイトニング等）を実行する場合もある。一例として、図２における入力画像は、２８×２８画素の中間階調画像である。即ち、入力画像のサイズは２８×２８×１である。各画素は、図１の入力層１１０における１つのノードに相当する(equivalent)としてよい。カラー画像が入力される場合、カラー画像は３つのカラー・チャネルＲ、Ｇ、およびＢを有するので、カラー画像のサイズは２８×２８×３となる。
【００２３】
図２に示す畳み込みニューラル・ネットワーク２００は、更に、２つの畳み込み層２２０および２３０も含む。畳み込み層２２０および２３０の各々は、入力画像に対して特徴抽出を実行するために、１つ以上の畳み込みカーネル（フィルタとも呼ぶ）を使用することができる。具体的には、各畳み込みカーネルは重み行列であり、画像の特徴を抽出するために、畳み込み層に画像データ入力が畳み込まれる。異なる畳み込みカーネルが、垂直縁、水平縁、曲線、カラー、またはその他の低レベルの特徴、あるいは目、鼻、帽子、またはその他の高レベルの特徴というような、異なる画像の特徴を抽出することができる。これは、通常、畳み込み層における畳み込みカーネルの位置に依存する。このような畳み込み演算の出力を、特徴マップと呼ぶこともできる。入力層２１０については、その特徴マップは入力画像である。尚、本明細書において言及する「特徴マップ」は、画像に基づいて抽出されるデータにも、畳み込みニューラル・ネットワークにおける畳み込み層の入力および出力データにも限定されないことは注記してしかるべきである。種々のディープ・ニューラル・ネットワークにおける層の全ての入力および出力データを特徴マップと見なすことができる。
【００２４】
畳み込み層２２０は、３２個の畳み込みカーネルを有し、各畳み込みカーネルのサイズは５×５×１である。これは、入力データが中間階調画像（深度が１の）である場合である。入力層２１０の画像がカラー画像である場合、畳み込み層２２０の各畳み込みカーネルの深度は３となる。即ち、畳み込みカーネルのサイズは５×５×３となる。前述のように、畳み込みカーネルは重み行列であり、畳み込みカーネルに対応する出力特徴マップを得るために、入力画像を畳み込むことができる。更に具体的には、畳み込み層２２０では、５×５畳み込みカーネルと入力画像における５×５画素ブロックとのドット積を実行して、特徴値を得ることができる。このようなドット積が意味するのは、畳み込みカーネルにおける各重みに、対応する位置における画素を乗算し、次いで総和を実行するということである。加えて、バイアス（あるのであれば）を追加する場合もある。入力画像における５×５画素ブロックの位置は、例えば、左から右に、次いで上から下に、順次交換され（刻みを１と仮定する）、各位置における５×５画素ブロックと１と同じ畳み込みカーネルとのドット積を実行し、２４×２４特徴値で構成される特徴マップ、即ち、畳み込みカーネルの出力特徴マップを得ることができる。カラー画像の場合、入力画像の深度および畳み込みカーネルの深度は、両方共３である。畳み込みカーネルの各層に入力画像の対応する層が畳み込まれた後、その３つの畳み込み結果に対して算術和(arithmetic summation)を実行することによって、畳み込みカーネルの出力特徴マップを得ることができる。畳み込みカーネル毎に、サイズが２４×２４の特徴マップを生成することができる。畳み込み層２２０は３２個の畳み込みカーネルを有するので、サイズが２４×２４の特徴マップが合計３２通り生成され、またはサイズが２４×２４×３２の１つの特徴マップが生成される。
【００２５】
同様に、畳み込み層２３０は６４個の畳み込みカーネルを有し、各畳み込みカーネルのサイズは３×３×３２である。各畳み込みカーネルには、畳み込み層２２０によって出力された１つの特徴マップが畳み込まれ、２２×２２の特徴マップを生成する。したがって、畳み込み層２３０は、サイズが２２×２２の特徴マップを合計６４通り生成するか、またはサイズが２２×２２×６４の１つの特徴マップを生成する。
【００２６】
また、畳み込みニューラル・ネットワーク２００は、出力層として、全結合層２４０を含んでもよい。これは図１における出力層１４０と同様でよいので、ここでは繰り返さない。図２では１つの全結合層のみを示すが、複数の全結合層があってもよく、各全結合層が異なる数のノードを有してもよいことは、当業者には当然理解されよう。
【００２７】
尚、図２は畳み込みニューラル・ネットワークの単純な例示に過ぎないことは理解されてしかるべきである。実際の畳み込みニューラル・ネットワークでは、畳み込み層の数は通常それよりも多い。畳み込みカーネルを使用することによって実行される演算は、ドット積に限定されるのではなく、ディジタル信号処理において一般に使用される種々のフィルタリング処理、例えば、ガウス・フィルタ、ラプラス・フィルタ等を使用することによって実行されるもののように、もっと複雑にすることができる。また、各畳み込み層は活性化関数も含むことができる。この活性化関数は、図１を参照して先に説明した活性化関数ｆ（）と同様でよい。特徴マップ毎に、特徴マップの周辺においてゼロ・パディング処理を実行し、入力特徴マップと一致する(consistent with) 二次元サイズの出力特徴マップを作ることもできる。加えて、畳み込み層の間に、随意のプーリング層（図示せず）があってもよく、プーリング層は、画像局所相関の原理を使用して、畳み込み層によって出力された特徴マップをダウンサンプリングして、以降の層の計算量を低減する。
【００２８】
畳み込みニューラル・ネットワークのパラメータは、主に、畳み込み層および全結合層における重みであり、更にバイアスも可能である。一般的なディープ・ニューラル・ネットワークにおけるパラメータと同様、これらのパラメータは、訓練済み畳み込みニューラル・ネットワークが得られるまで、訓練と通じて連続的に最適化される。畳み込みニューラル・ネットワークの畳み込み層における異なる画素ブロックが、同じ畳み込みカーネルを共有することができ、従来のディープ・ニューラル・ネットワークと比較すると、畳み込みカーネルのサイズは特徴マップのサイズよりもはるかに小さいので（通常、パラメータ共有および局所知覚と呼ぶ）、畳み込みユーラル・ネットワークはニューラル・ネットワークのパラメータ数を効果的に削減することができる。しかしながら、畳み込みニューラル・ネットワークの層および各層における畳み込みカーネルの数が非常に多いので、畳み込みニューラル・ネットワークのパラメータは、大きな記憶容量およびメモリ帯域幅を占めることに変わりはない。
【００２９】
現在、ディープ・ニューラル・ネットワークの記憶の問題を解決するまたは軽減することを意図した研究がいくつか行われている。
１つの発想は、高帯域幅メモリ（ＨＢＭ）のような、帯域幅がもっと大きいメモリを使用することである。しかし、このやり方はコストが高く、ハードウェアの設計も非常に難しい。
【００３０】
他の発想は、ディープ・ニューラル・ネットワークを圧縮することである。１つの圧縮方法は、ニューラル・ネットワークの規模(scale)を変更することである。例えば、ニューラル・ネットワークの層の数または畳み込みカーネルの数を減らす、あるいははニューラル・ネットワークにおける重要でない接続を除去することによって、ニューラル・ネットワークを間引きする(trim)ことができる。または、行列またはテンソル分解の発想を使用して、元のネットワーク・パラメータ行列またはパラメータ・テンソルを、少数のパラメータで構築し直して、ネットワークの記憶オーバーヘッドを低減する。他の圧縮方法は、ニューラル・ネットワークのパラメータ自体を圧縮することである。例えば、６４ビット浮動小数点数の代わりに８ビットまたは１６ビット整数を使用するというように、低ビット量子化をネットワーク・パラメータに対して実行し、記憶および計算オーバーヘッドを低減することができる。あるいは、例えば、圧縮用ハフマン・コーディングを使用して、損失のない圧縮をパラメータに対して実行してもよい。しかしながら、損失のない圧縮の圧縮率は低く、通常２：１を超えないので、その効果はさほど安定しない。
【００３１】
現在のディープ・ニューラル・ネットワークのための圧縮方法の殆どは、ニューラル・ネットワークのパラメータの圧縮を中心に据えることは、学習することができる。しかしながら、本発明者は、ニューラル・ネットワークのパラメータに加えて、特徴マップのアクセスも大きな記憶容量およびメモリ帯域幅を占めることに気が付いた。具体的には、ディープ・ニューラル・ネットワークの推論および訓練プロセスにおいて、各層によって生成された特徴マップを、次の層の読み出しおよび使用のために、メモリ（ＤＲＡＭ、ＳＲＡＭ、ＤＤＲ  ＲＡＭ、または他のランダム・アクセス・ソリッド・ステート・メモリのような、種々のランダム・アクセス・メモリまたは揮発性メモリ等）に格納する必要がある。入力データが大量である場合（例えば、入力画像の解像度が高い）、特徴マップのアクセスも大量の記憶空間およびメモリ帯域幅を消費し、パラメータのアクセスよりも多いメモリ・リソースさえも消費する。これは、ニューラル・ネットワークの応用に対して、特にニューラル・ネットワークのリアル・タイム用途に対して、大きな課題となる。
【００３２】
この目的のため、本開示は、ディープ・ニューラル・ネットワークのために新たな圧縮方法を提案する。この圧縮方法は、既存のニューラル・ネットワーク圧縮技術よりも、ニューラル・ネットワークの大量データのリアル・タイム供給(application)に適している。
【００３３】
図３は、本開示の例示的実施形態によるディープ・ニューラル・ネットワークのための例示的な圧縮方法３００を示すフローチャートである。方法３００は、入力層を除いて、ディープ・ニューラル・ネットワークのいずれの層にでも実行することができる。説明の都合上、説明のための例として、ｉ番目の層を取り上げる。
【００３４】
ブロック３１０において、ｉ番目の層は、計算のためにこの層が必要とするパラメータを、パラメータ記憶空間から読み出す。これらのパラメータは、図１に関して説明した各ノードが使用する重みｗおよびバイアスｂのような、ディープ・ニューラル・ネットワークにおける任意のパラメータ、または図２に関して説明した各畳み込みカーネルの重みおよびバイアスでもよい。
【００３５】
実施形態によれば、ブロック３１０においてパラメータ記憶空間から読み出されるパラメータは、圧縮されたパラメータであってもよい。パラメータ圧縮技法(manner)は、例えば、損失のない圧縮（例えば、ハフマン・コーディング）または損失のある圧縮であってもよい。
【００３６】
ブロック３２０において、ｉ番目の層は、（ｉ−１）番目の層によって格納された第１特徴マップを特徴マップ記憶空間から読み出す。第１特徴マップは、ニューラル・ネットワークの任意の層によって出力されたデータとすることができる。例えば、第１特徴マップは、図１における入力層１１０、隠れ層１２０、または隠れ層１３０によって出力されたデータ、図２における入力層２１０、畳み込み層２２０、および畳み込み層２３０によって出力されたデータ、またはプーリング層、全結合層等によって出力されたデータであってもよい。
【００３７】
実施形態によれば、第１特徴マップは、圧縮された特徴マップであってもよい。具体的には、ｉ番目の層によって読み出された第１特徴マップが圧縮された特徴マップとなるように、（ｉ−１）番目の層によって生成された特徴マップを圧縮し、特徴マップ記憶空間に格納することができる。他の実施形態によれば、第１特徴マップは、代わりに、圧縮されていない特徴マップであってもよい。例えば、（ｉ−１）番目の層によって生成された特徴マップは圧縮されず、直接特徴マップ記憶空間に格納される。
【００３８】
ブロック３３０において、ｉ番目の層は、読み出したパラメータおよび第１特徴マップに基づいて、第２特徴マップを生成する。実施形態によれば、読み出したパラメータが圧縮されたパラメータである場合、これらのパラメータを解凍し、次いでｉ番目の層における計算において使用することができる。他の実施形態によれば、読み出した第１特徴マップが圧縮された特徴マップである場合、第１特徴マップを解凍し、次いでｉ番目の層における計算において使用することができる。（ｉ−１）番目の層の特徴マップおよび対応するパラメータに基づいてｉ番目の層によって第２特徴マップを生成する例について、図１に関して行った説明を参照することができる。この場合、各ノード１５０は、式１を使用してノードの出力を生成することができ、各層において全てのノードの出力を合計した後、このレイヤによって生成される特徴マップを得ることができる。（ｉ−１）番目の層の特徴マップおよび対応するパラメータに基づいてｉ番目の層によって第２特徴マップを生成する例について、図２に関して行った説明を参照することができる。この場合、各層の畳み込みカーネルに、直前の層の特徴マップを畳み込み、畳み込みカーネルに対応する特徴マップを生成することができる。層が複数の畳み込みカーネルを有する場合、複数の特徴マップを生成することができ、または複数の特徴マップを組み合わせて１つの高次元(high dimension)特徴マップにすることができる。尚、これらは特徴マップを生成する例に過ぎず、ブロック３３０における第２特徴マップ生成の実施態様はこれらに限定されるのではないことは理解できよう。
【００３９】
ブロック３４０において、ｉ番目の層は、ブロック３３０において生成した第２特徴マップを圧縮して、第３特徴マップを得る。第２特徴マップの圧縮は、損失のない圧縮でもよいが、更に好ましくは、損失のある圧縮でもよい。これについては、以下で更に詳しく説明する。
【００４０】
実施形態によれば、第２特徴マップを圧縮する前記ステップは、第２特徴マップの異なる領域を異なる圧縮率で圧縮するステップを含み、これらの領域の各々の圧縮率は、その領域おける関心度に依存する。一例では、関心度が高い領域の圧縮率（例えば、第１の関心度）は、関心度が低い領域（例えば、第１の関心度よりも低い第２の関心度）の圧縮率よりも低い。例えば、ニューラル・ネットワークによって処理されるオブジェクトが画像またはビデオであるとき、画像において関心のある領域（即ち、ポートレートのような関心度が高い領域）について、その領域の圧縮および解凍の後に得られる画像が、元の画像との高い類似性を有することが通常望まれ、この理由のために、情報の損失を減らすために、低い圧縮率を使用することができる。また、画像において関心がない領域（即ち、空のような、関心度が低い領域）について、この領域の圧縮および解凍後に得られる画像と元の画像との間における類似性に対する要件を下げることができ、この理由のために、高い圧縮率を使用することができる。類似性測定パラメータは、例えば、ユークリッド距離、ピーク信号対ノイズ比（ＰＳＮＲ：peak signal-to-noise ratio）、構造的類似性評価（ＳＳＩＭ：structural similarity evaluation）等でもよい。
【００４１】
ブロック３５０において、ｉ番目の層は、ブロック３４０において得られた第３特徴マップを特徴マップ記憶空間に格納する。パラメータ記憶空間および特徴マップ記憶空間は、別々のメモリに配置してもよく、または同じメモリを共有してもよい。一例として、パラメータ記憶空間および特徴マップ記憶空間に使用されるメモリは、ＤＲＡＭ、ＳＲＡＭ、ＤＤＲ  ＲＡＭ、またはその他のランダム・アクセス・ソリッド・ステート・メモリのような、高速ランダム・アクセス・メモリとするとよい。
【００４２】
方法３００は、ディープ・ニューラル・ネットワークの推論プロセスおよびディープ・ニューラル・ネットワークの訓練プロセスの双方に適用することができる。これについて、図５および図６と関連付けて後に詳しく説明する。
【００４３】
方法３００を使用することによって、ディープ・ニューラル・ネットワークの少なくとも１つの層によって生成された特徴マップを圧縮し、次いで格納することにより、特徴マップおよびこれらによって占められるメモリ帯域幅に必要とされる記憶空間を大幅に削減することができる。これは、特に、ニューラル・ネットワークのリアル・タイム用途にとって有用である。例えば、ビデオ監視のアプリケーション・シナリオ(application scenario)では、ビデオ画像における物体をリアル・タイムで認識するためにニューラル・ネットワークが使用される場合、大量のビデオ・フレームをリアル・タイムで処理する必要がある。ビデオ・データが高い解像度（例えば、３００×３００画素よりも高い解像度、またはそれよりも更に高い解像度）を有する場合、これはメモリ帯域幅に対する大きな課題となる。特徴マップを格納する前にこれを圧縮することによって、特徴マップを格納するときおよびメモリから読み出すときに占められるメモリ帯域幅を大幅に削減することができる。これはニューラル・ネットワークのリアル・タイム用途を実現するのに役に立つ。加えて、読み出された圧縮特徴マップは、計算（例えば、畳み込み）のために解凍されるので、方法３００はニューラル・ネットワークの推論の精度には殆ど影響を及ぼさない。また、方法３００は、ニューラル・ネットワークのパラメータの圧縮および対応するハードウェア設計と組み合わせて、ニューラル・ネットワークの動作を更に加速化し、メモリの電力消費を低減することができる。
【００４４】
方法３００は、あらゆるディープ・ニューラル・ネットワークに適用することができる。畳み込みニューラル・ネットワークでは、方法３００は少なくとも１つの畳み込み層に対して実行することができる。随意に、方法３００は、プーリング層および全結合層に対しても、代わりに実行することができる。畳み込みニューラル・ネットワークでは、方法３００は、全ての畳み込み層に対して実行することもでき、または選択的に一部の畳み込み層に対して方法３００を実行することもできる。通常、入力側に近い畳み込み層によって生成される特徴マップは、出力側に近い畳み込み層によって生成される特徴マップよりも大きく、より多くの記憶空間およびメモリ帯域幅を占める。したがって、好ましくは、入力側に近い１つ以上の畳み込み層に方法３００を適用することができる。
【００４５】
尚、論理的に必要でなければ、方法３００におけるステップの順序は、図示または説明した順序には限定されず、必要に応じて調節することまたは並列に実行することもでき、異なるステップにおける動作を並列にまたは交互に実行できることは注記してしかるべきである。本開示は、これに関して全く限定を強要しない。例えば、ブロック３１０およびブロック３２０を逆の順序でまたは並列に実行してもよく、本開示の実施態様には影響を及ぼさない。
【００４６】
以下では、一例として、ビデオ・データをニューラル・ネットワークへの入力として取り上げ、特徴マップの圧縮について更に詳しく説明する。特徴マップの圧縮は、（ｉ−１）番目の層、ｉ番目の層のような、ニューラル・ネットワークの任意の層、または図３に関して説明した全ての層に適用することができる。
【００４７】
図４は、本開示の例示的実施形態による特徴マップの圧縮を示す模式ブロック図である。図４に示すように、ニューラル・ネットワークにおける層によって生成された特徴マップに、予測（ブロック４１０）、変換（ブロック４２０）、量子化（ブロック４３０）、およびエントロピ・コーディング（ブロック４４０）というような処理(operation)を実行し、特徴マップにおける空間的冗長性、時間的冗長性、およびコーディング冗長性を除去することができる。図４におけるこれらの処理について、以下で１つずつ説明する。しかしながら、本開示には図４に示す処理の全てが必要という訳ではなく、必要に応じて特徴マップを圧縮するために、ブロック４１０から４４０までの内１つ以上を使用できることは理解できよう。例えば、特徴マップに対して損失のない圧縮を実行する場合、この特徴マップに量子化４３０を実行しなくてもよく、エントロピ・コーディング４４０だけをこの特徴マップに実行すればよい。他の例をあげると、特徴マップの圧縮は、変換４２０、量子化４３０、およびエントロピ・コーディング４４０のみを含めばよく、予測４１０は実行しなくてもよい。
【００４８】
ブロック４１０において、入力された特徴マップに対して予測コーディングを実行する。予測コーディングは、内部予測(intra prediction)および相互予測(inter prediction)の内一方または双方を含むことができる。フレーム内コーディングは、空間的冗長を排除するために使用することができ、フレーム間コーディングは、時間的冗長を排除するために使用することができる。特徴マップを複数のブロックに分割することができ、ブロック毎にコーディングを実行する。一例として、ＭＰＥＧ、Ｈ．２６４、およびＨ．２６５のようなビデオ規格に採用されている種々の予測コーディング技法を、ブロック４１０における特徴マップの予測コーディングに使用することができる。
【００４９】
ブロック４２０において、特徴マップを空間ドメインから周波数ドメインに変換し、信号間における相関を効果的に除去し、エネルギの殆どを低周波数領域に集中させる。この変換の結果に基づいて、高周波数領域における信号を、後続の量子化ステップにおいて破棄することができ、あるいは低周波数領域に小さい量子化刻み、そして高周波数領域には大きな量子化刻みを使用して、高い画質を維持しつつ、高い圧縮率を達成することができる。一例として、離散フーリエ変換（ＤＣＴ）、離散正弦波変換（ＤＳＴ）、Ｋ−Ｌ変換、ウェーブレット変換等のような種々の変換技術を使用して、特徴マップを変換することができる。
【００５０】
ブロック４３０において、ブロック４２０において得られた変換係数を量子化する。量子化において、多数の変換係数を近似的にあらわすために、少数の量子化値を使用することができる。元の変換係数と再現された変換係数との間には差、即ち、歪みがあるので、量子化を使用する特徴マップの圧縮は、損失のある圧縮となる。損失のない圧縮と比較すると、損失のある圧縮の方がアルゴリズムの選択肢が多く、多くの調節可能な圧縮パラメータを有し、圧縮率を制御することによって、異なる要件に適応することができる。本開示の実施形態によれば、損失のある圧縮の使用により、ニューラル・ネットワークの推論精度に対する影響が殆どなく、圧縮率向上を達成することができる。例えば、実施形態によれば、損失のある圧縮の圧縮率が１０：１よりも高いとき、ニューラル・ネットワークの推論精度は５％未満しか低下しない。加えて、訓練プロセスにおいて、層の特徴マップに対して損失のある圧縮を実行することは、層のパラメータおよび特徴マップに外乱を追加することと同等であると見なすことができ、訓練が極小値に陥るのを防止することができ、したがってニューラル・ネットワークの推論能力を高めることができる。
【００５１】
ブロック４４０において、ブロック４３０の量子化結果に対してエントロピ・コーディングを実行し、予測および変換後になおも存在する統計的冗長情報を除去する。一例として、エントロピ・コーディングは、可変長コーディング（ＶＬＣ）（例えば、ハフマン・コーディング、指数Ｇｏｌｏｍｂコード（ＥＧＣ）等）または算術コーディングを使用することができる。
【００５２】
以上、特徴マップの圧縮プロセスについて、図４と関連付けて端的に説明した。尚、これらの説明は、本開示に対する限定ではなく、単に例示的な説明に過ぎないことは、当業者には理解できよう。具体的な実施態様では、特徴マップは、ＭＰＥＧ、Ｈ．２６４、Ｈ．２６５、および他のビデオ規格に基づく圧縮方法、あるいは開発中または今後開発される種々のビデオ圧縮方法というような、種々の知られているビデオ圧縮方法を使用することによって圧縮することができる。これは、本開示において限定されない。
【００５３】
本開示の実施形態によれば、特徴マップの圧縮（例えば、図３のブロック３４０に示す第２特徴マップの圧縮）は、特徴マップの非均一な量子化を含んでもよい。実施形態によれば、特徴マップの異なる領域に異なる量子化刻み(step)を使用してもよい。各領域の量子化刻みを決定するためには、多くの要因を検討してもよい。
【００５４】
実施形態によれば、領域の量子化刻みは、領域の画像の複雑度にしたがって決定されてもよい。例えば、より多くの詳細を保持するために、画像の複雑度が高い領域には小さい量子化刻みを割り当て、画像の複雑度が低い領域には、大きな量子化刻みを割り当てる。一例では、画像の複雑度は、予め設定された閾値によって測定することができる。高い画像の複雑度とは、画像の複雑度がこの予め設定された閾値よりも高いことを意味するのでもよく、低い画像の複雑度は、画像の複雑度がこの予め設定された閾値以下であることを意味するのでもよい。
【００５５】
他の実施形態によれば、領域の量子化刻みは、特徴マップにおける領域の位置にしたがって決定されてもよい。たとえば、ビデオ監視の用途では、各ビデオ・カメラによって特別に監視される領域は、画像において比較的固定した位置を有するとして差し支えなく、この位置に対応する特徴マップ領域には、小さな量子化刻みを割り当てるとよい。
【００５６】
他の実施形態によれば、領域の量子化刻みは、領域の重要度にしたがって決定されてもよい。例えば、ビデオ画像では、画像における領域の重要度は前もって決定することができ、量子化の間に重要度の順序にしたがって、異なる量子化刻みを割り当てることができる。
【００５７】
他の実施形態によれば、領域の量子化刻みは、領域における特異的特徴の存在または不在にしたがって決定されてもよい。特異的特徴は、ニューラル・ネットワークのアプリケーション・シナリオに依存するのでもよい。実施形態によれば、特異的特徴は、アプリケーション・シナリオにおいて関心がある特徴としてもよい。例えば、セキュリティ監視では、特異的特徴は人または個人識別情報(identity)に関する特徴でもよい。交通監視では、特異的特徴は、車両の型番、ナンバー・プレート、信号等に関する特徴でもよい。サッカー試合の生放送では、特異的特徴は、選手、ボール、レフリー、ゴール等に関する特徴でもよい。一例では、特異的特徴が領域内に存在する場合、より多くの詳細を保持するために、小さい量子化刻み（例えば、第１量子化刻み）をその領域に割り当てるとよく、特異的特徴がその領域に存在しない場合、大きな量子化刻み（例えば、第１量子化刻みよりも大きい第２量子化刻み）をその領域に割り当てるとよい。
【００５８】
他の実施形態によれば、領域の量子化刻みは、領域における特異的特徴の数にしたがって決定されてもよい。一例では、領域における特異的特徴の数が多い場合（例えば、所定の閾値よりも多い）、より多くの詳細を保持するために、その領域には小さい量子化刻み（例えば、第３量子化刻み）を割り当てるとよく、領域における特異的特徴の数が少ない場合（例えば、所定の閾値以下）、大きな量子化刻み（例えば、第３量子化刻みよりも大きい第４量子化刻み）をその領域に割り当てるとよい。直前の実施形態と同様、特異的特徴は、アプリケーション・シナリオに依存するのでもよく、ここでは繰り返さない。
【００５９】
尚、以上で述べたこれらの要因は、個々にまたは組み合わせて検討できることは理解できよう。これは、本開示において限定されない。領域の特性に基づいて、異なる量子化刻みを特徴マップにおける領域に割り当てる。これは、高い圧縮率を達成できるだけでなく、用途にとって重要な特徴マップの詳細をできるだけ多く保持することもでき、これによってニューラル・ネットワークの推論精度を維持する。
【００６０】
以下に、図５および図６と関連付けて、本開示の例示的な実施形態によるニューラル・ネットワークの推論プロセスおよび訓練プロセスについて説明する。
図５は、本開示の例示的実施形態によるディープ・ニューラル・ネットワークの推論プロセスの模式図である。ニューラル・ネットワークの推論プロセスは、処理されるデータを、訓練済みのニューラル・ネットワークに入力して、推論結果を得るプロセスである。図５に示すように、ディープ・ニューラル・ネットワークは、入力層５３２、出力層５３８、および複数の隠れ層を含む。簡単にするために、図５は２つの隣接する層、即ち、ｉ番目の層および（ｉ＋１）番目の層のみを示す。これらを、それぞれ、参照番号５３４および５３６によって示す。また、図５は、パラメータ記憶空間５１０、および特徴マップ記憶空間５２０も示す。推論プロセスにおいて、ニューラル・ネットワークにおける各層は、出力層５３８が最終的な推論結果を出力するまで、順次入来するデータを処理する。層５３４および５３６における処理については、以下で一例をあげて説明する。
【００６１】
図５に示すように、ｉ番目の層５３４は、計算のために層５３４が必要とするパラメータ５１２を、パラメータ記憶空間５１０から読み出す。随意に、パラメータ５１２が圧縮されている場合、ブロック５４２においてパラメータ５１２を解凍する。また、層５３４は、（ｉ−１）番目の層に格納されている特徴マップ５２２を、特徴マップ記憶空間５２０から読み出す。随意に、特徴マップ５２２が圧縮されている場合、ブロック５５２において特徴マップ５２２を解凍する。パラメータ５１２および特徴マップ５２２の解凍バージョンに基づいて、層５３４の特徴マップを生成する。特徴マップを圧縮した後（ブロック５５４において）、特徴マップ記憶空間５２０に、層５３４によって格納された特徴マップ５２４として、特徴マップを格納する。
【００６２】
次に、（ｉ＋１）番目の層５３６は、ｉ番目の層５３４の動作と同様の動作を実行する。パラメータ５１４および特徴マップ５２４を、それぞれ、パラメータ記憶空間５１０および特徴マップ記憶空間５２０から読み出し、解凍する（ブロック５４４および５５６に示す通り）。次いで、パラメータ５１４および特徴マップ５２４の解凍バージョンに基づいて、層５３６の特徴マップを生成する。特徴マップを圧縮した後（ブロック５５８において）、特徴マップ記憶空間５２０に、次の層による使用のために層５３６によって格納された特徴マップ５２６として、特徴マップを格納する。
【００６３】
類推によって、ニューラル・ネットワークにおける後続の層は、出力層５３８が最終的な推論結果を出力するまで、以上の動作を順次実行する。尚、図５は、先に説明したように、各層のパラメータおよび特徴マップの圧縮ならびに解凍について説明するが、このような圧縮および解凍処理(operation)は、ニューラル・ネットワークにおける層の内一部のみにも実行でき、更に、代わりに、圧縮および解凍処理(operation)は、パラメータの代わりに、特徴マップのみにも実行できることは、理解されてしかるべきである。
【００６４】
図６は、本開示の例示的実施形態によるディープ・ニューラル・ネットワークの訓練プロセスの模式図である。ニューラル・ネットワークの訓練プロセスは、既知のサンプル集合に基づいて、ニューラル・ネットワークのパラメータを訓練するプロセスである。ニューラル・ネットワークの訓練プロセスは、最終的な出力結果と目標値との間の誤差が所定の閾値未満になるまで連続的に繰り返される。各繰り返しは、通常、２つのフェーズ、即ち、順方向伝搬フェーズ(forward propagation phase)および逆方向伝搬フェーズ(back propagation phase)に分割される。順方向伝搬フェーズは、推論プロセスと同様である。サンプル毎に、各層は順次計算を実行し、最終的な出力値を得る。次に、逆方向伝搬フェーズでは、出力値と目標値との間の誤差を最初に計算する。誤差が所定の閾値よりも大きい場合、逆方向伝搬のために、この誤差を出力層からニューラル・ネットワークに送信し、層の誤差を順次計算し、計算した誤差にしたがって、層のパラメータを更新する。更新したパラメータに基づいて、次の繰り返しの順方向伝搬フェーズを開始する。
【００６５】
図６では、明確にするために、破線６１０を使用して、順方向伝搬フェーズおよび逆方向伝搬フェーズを分離する。図６の上側部分に示すように、訓練プロセスの順方向伝搬フェーズは、図５におけるそれと同一であり、ここでは詳細について繰り返さない。図６の下側部分は、訓練プロセスの逆方向伝搬フェーズを示す。逆方向伝搬フェーズにおいて、順方向伝搬フェーズにおける最終的な出力結果と目標値との間の誤差を、出力層５３８から入力層５３２に順次送信する。（ｉ＋１）番目の層５３６は、（ｉ＋２）番目の層から受け取った層５３６の誤差に基づいて、更新パラメータ５１４を計算し、これをパラメータ記憶空間５１０に格納する。随意に、更新パラメータを圧縮し（ブロック６４８において）、次いでパラメータ記憶空間５１０に格納してもよい。また、層５３６は、ｉ番目の層５３４の誤差を計算し、これを層５３４に逆伝搬する。同様に、層５３４は、受け取った誤差に基づいて、更新パラメータ５１２を計算し、これをパラメータ記憶空間５１０に格納する。随意に、更新パラメータを圧縮し（ブロック６４６において）、次いでパラメータ記憶空間５１０に格納してもよい。図６の左側における大きな矢印によって示すように、逆方向伝搬フェーズが入力層５３２において終了したとき、全ての層の更新パラメータに基づいて、訓練プロセスは、次の繰り返しの順方向伝搬フェーズを開始する。
【００６６】
尚、図５および図６は、ニューラル・ネットワークの例示的な推論プロセスおよび訓練プロセスを示すに過ぎないことは、注記してしかるべきである。ニューラル・ネットワークの異なる構造に基づいて、他の対応する推論プロセスおよび訓練プロセスも使用できることは、当業者には理解できよう。
【００６７】
図７は、本開示の例示的実施形態によるチップ７００を示す模式図である。チップ７００は、メモリ７１０と、ディープ・ニューラル・ネットワーク・エンジン７２０とを含むことができる。
【００６８】
メモリ７１０は、パラメータ記憶空間および特徴マップ記憶空間を含むことができる。パラメータ記憶空間は、ディープ・ニューラル・ネットワークのパラメータを格納するために使用され、特徴マップ記憶空間は、ディープ・ニューラル・ネットワークの特徴マップを格納するために使用される。実施形態によれば、メモリ７１０は、ＤＲＡＭ、ＳＲＡＭ、ＤＤＲ  ＲＡＭ、または他のランダム・アクセス・ソリッド・ステート・メモリのような、種々のランダム・アクセス・メモリまたは揮発性メモリであってもよい。
【００６９】
ディープ・ニューラル・ネットワーク・エンジン７２０は、ディープ・ニューラル・ネットワークを、画像データのような入力データに適用し、画像検出、認識、およびパーティショニング(partitioning)というような処理を実施することができる。ディープ・ニューラル・ネットワーク・エンジン７２０は、メモリ７１０と協働して、先に説明した本開示の種々の実施形態における方法を実行することができる。実施形態によれば、ディープ・ニューラル・ネットワーク・エンジン７２０は、ハードウェアによって実装することができ、例えば、特定用途集積回路（ＡＳＩＣ）によって実装されてもよい。
【００７０】
尚、特定の要件にしたがって、ディープ・ニューラル・ネットワーク・エンジン７２０の実施態様には、種々の変形を行ってもよいことは理解されてしかるべきである。例えば、種々の変形は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはこれらの任意の組み合わせで実装することができる。例えば、ディープ・ニューラル・ネットワーク・エンジン７２０は、ＡＳＩＣの代わりに、本開示によるロジックおよびアルゴリズムを使用することによって、アセンブリ言語またはハードウェア・プログラミング言語（ＶＥＲＩＬＯＧ、ＶＨＤＬ、およびＣ＋＋のような）でハードウェア（例えば、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）および／またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含むプログラマブル・ロジック回路）をプログラミングすることによって、実装してもよい。
【００７１】
実施形態によれば、チップ７００は、人工知能（ＡＩ）ビジョン・チップでもよい。加えて、図７には示されていないが、チップ７００は、画像信号（撮像センサによって出力される信号のような）を処理するように構成された画像信号処理（ＩＳＰ）ユニット、オーディオおよびビデオ信号をエンコードならびにデコードするように構成されたマルチメディア信号コデック等のような、更に他のコンポーネントも含んでもよい。
【００７２】
図８は、本開示の例示的実施形態による電子デバイス８００を示す模式図である。電子デバイス８００は、図７に示すチップ７００と、撮像センサ８３０とを含むことができる。撮像センサ８３０は、画像および／またはビデオ・データをキャプチャするように構成することができる。実施形態によれば、電子デバイス８００は、ビデオ・カメラ、またはＡＩビジョン・チップと統合されたカメラでもよい。このような電子デバイス８００は、種々のシナリオにおいて使用することができ、例えば、セキュリティ監視における人間の顔または他の特定的な物体の自動検出および認識、自動運転における歩行者、自動車、信号機等のリアル・タイム検出および認識、物体を認識し障害物を回避する際におけるロボットの補助等において使用することができる。
【００７３】
図９は、本開示の例示的実施形態による他の電子デバイス９００を示す模式図である。電子デバイス９００は、処理および／または計算を実行するように構成された任意の機械としてもよく、限定ではないが、ワークステーション、サーバ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、パーソナル・ディジタル・アシスタント、スマートフォン、内蔵コンピュータ、またはこれらの任意の組み合わせでもよい。本開示の実施形態による前述の方法は、全体的にまたは少なくとも部分的に、電子デバイス９００あるいは同様のデバイスまたはシステムによって実行する(implement)ことができる。
【００７４】
電子デバイス９００は、バス９１０、１つ以上のプロセッサ９２０、１つ以上のメモリ９３０、１つ以上の入力デバイス９４０、および１つ以上の出力デバイス９５０を含むことができる。１つ以上のプロセッサ９２０は、任意の種類のプロセッサでよく、限定ではなく、１つ以上の汎用プロセッサ（中央処理ユニット（ＣＰＵ）のような）、および／または１つ以上の専用プロセッサ（グラフィクス処理ユニット（ＧＰＵ）のような）を含むことができる。１つ以上のメモリ９３０は、不揮発性メモリ（ディスク・ドライブ、光記憶デバイス、ソリッド・ステート・メモリ、フロッピー・ディスク、ハード・ディスク、磁気テープ、およびリード・オンリ・メモリ（ＲＯＭ）のような）、および／または揮発性メモリ（ランダム・アクセス・メモリ（ＲＡＭ）およびキャッシュ・メモリのような）を含むことができる。メモリ９３０は、本開示の実施形態による方法を実行する(implement)ためのデータおよび／またはプログラムを格納することができる。メモリ９３０に格納されるデータは、例えば、図５および図６に示したパラメータ記憶空間および特徴マップ記憶空間におけるデータである。メモリ９３０に格納されたプログラムは、プロセッサ９２０によって実行されると、電子デバイス９００に、本開示の実施形態による方法を実行させることができる。
【００７５】
入力デバイス９４０は、電子デバイス９００に情報を入力できる任意の種類のデバイスでよく、センサ（例えば、前述のような撮像センサ）、マウス、キーボード、タッチスクリーン、マイクロフォン、および／またはリモート・コントローラを含むことができるが、これらに限定されるのではない。出力デバイス９５０は、情報を出力できる任意の種類のデバイスでよく、ディスプレイ、スピーカ、ビデオ／オーディオ出力端末、バイブレータ、および／または種々の出力インターフェースを含むことができるが、これらに限定されるのではない。
【００７６】
尚、電子デバイス９００の１つ以上のコンポーネントはネットワーク上で分散されてもよいことは理解されてしかるべきである。例えば、処理の一部を１つのプロセッサによって実行し、他の処理は、この１つのプロセッサから離れた他のプロセッサによって実行することもできる。したがって、電子デバイス９００は、複数の位置で処理を実行する分散型コンピューティング・システムとして解釈することができる。
【００７７】
加えて、本開示の態様は、プログラムを格納するコンピュータ読み取り可能記憶媒体を含むこともできる。このプログラムは、命令を含み，プロセッサによって命令が実行されると、以上の方法のいずれでもこのプロセッサに実行させる。
【００７８】
本開示のいくつかの態様による例示的な方法および製品の実施形態を、以下の項目に列挙する。
１．複数の層を含むディープ・ニューラル・ネットワークのための圧縮方法であって、入力層を除く複数の層における少なくとも１つの層に対して、この方法は、パラメータ記憶空間から層のパラメータを読み出すステップと、特徴マップ記憶空間から、直前の層によって格納された第１特徴マップを読み出すステップと、読み出したパラメータおよび第１特徴マップに基づいて、第２特徴マップを生成するステップと、第２特徴マップを圧縮して、第３特徴マップを得るステップと、第３特徴マップを特徴マップ記憶空間に格納するステップとを含む。
【００７９】
２．項目１による方法において、第２特徴マップに対して実行される圧縮が、損失のある圧縮を含む。
３．項目１による方法において、この方法が、ディープ・ニューラル・ネットワークの訓練プロセスおよびディープ・ニューラル・ネットワークの推論プロセスにおける順方向伝搬フェーズにおいて、使用される。
【００８０】
４．項目１による方法において、ディープ・ニューラル・ネットワークが、畳み込みニューラル・ネットワークを含み、畳み込みニューラル・ネットワークが、複数の畳み込み層を含み、この方法が、畳み込み層の少なくとも１つに対して実行される。
【００８１】
５．項目１による方法において、第１特徴マップが圧縮特徴マップであり、読み出したパラメータおよび第１特徴マップに基づいて第２特徴マップを生成する前記ステップが、第１特徴マップを解凍するステップと、読み出したパラメータおよび解凍した第１特徴マップに基づいて、第２特徴マップを生成するステップとを含む。
【００８２】
６．項目１による方法において、パラメータ記憶空間から読み出したパラメータが圧縮パラメータであり、読み出したパラメータおよび第１特徴マップに基づいて第２特徴マップを生成する前記ステップが、読み出したパラメータを解凍するステップと、解凍したパラメータおよび第１特徴マップに基づいて、第２特徴マップを生成するステップとを含む。
【００８３】
７．項目２による方法において、第２特徴マップを圧縮する前記ステップが、第２特徴マップを空間ドメインから周波数ドメインに変換するステップと、変換係数を量子化するステップとを含む。
【００８４】
８．項目２による方法において、第２特徴マップを圧縮する前記ステップが、更に、第２特徴マップに対して予測コーディングを実行するステップを含み、予測コーディングが、内部予測および／または相互予測を含む。
【００８５】
９．項目２による方法において、第２特徴マップを圧縮する前記ステップが、第２特徴マップの異なる領域を異なる圧縮率で圧縮するステップを含み、領域の各々の圧縮率が、当該領域における関心度に依存し、第１関心度の領域の圧縮率が第２関心度の領域の圧縮率よりも低く、第１関心度が第２関心度よりも高い。
【００８６】
１０．項目２による方法において、第２特徴マップを圧縮する前記ステップが、第２特徴マップに対して非均一量子化を実行するステップを含み、第２特徴マップの異なる領域が、異なる量子化刻みを有する。
【００８７】
１１．項目１０による方法において、第２特徴マップの領域の各々の量子化刻みが、領域の画像の複雑さ、第２特徴マップにおける領域の位置、領域の重要度、領域における特異的特徴の存在または不在、および領域における特異的特徴の数、の内少なくとも１つに基づいて決定される。
【００８８】
１２．項目１１による方法において、特異的特徴が、ディープ・ニューラル・ネットワークのアプリケーション・シナリオにおいて関心のある特徴を含む。
１３．項目１１による方法において、領域における特異的特徴の存在または不在にしたがって領域の各々の量子化刻みを決定するステップが、領域における特異的特徴の存在に応答して、第１量子化刻みを領域に割り当てるステップと、領域における特異的特徴の不在に応答して、第２量子化刻みを領域に割り当てるステップとを含み、第１量子化刻みが第２量子化刻みよりも小さい。
【００８９】
１４．項目１１による方法において、領域における特異的特徴の数にしたがって領域の各々の量子化刻みを決定するステップが、領域における特異的特徴の数が、予め設定された閾値よりも多いことに応答して、第３量子化刻みを領域に割り当てるステップと、領域における特異的特徴の数が所定の閾値以下であることに応答して、第４量子化刻みを領域に割り当てるステップとを含み、第３量子化刻みが第４量子化刻みよりも小さい。
【００９０】
１５．項目１による方法において、ディープ・ニューラル・ネットワークが、物体認識のために、ビデオ・データを処理するために使用される。  
１６．チップであって、パラメータ記憶空間および特徴マップ記憶空間を含むメモリであって、パラメータ記憶空間が、ディープ・ニューラル・ネットワークのパラメータを格納するように構成され、特徴マップ記憶空間が、ディープ・ニューラル・ネットワークの特徴マップを格納するように構成される、メモリと、メモリと協働して、項目１から１５までのいずれか１つによる方法を実行するように構成されたディープ・ニューラル・ネットワーク・エンジンとを含む。
【００９１】
１７．項目１６によるチップにおいて、メモリがランダム・アクセス・メモリを含む。
１８．項目１６によるチップにおいて、チップが、人工知能ビジョン・チップを含む。
１９．項目１８によるチップにおいて、チップが、更に、画像信号を処理するように構成された画像信号処理（ＩＳＰ）ユニットと、オーディオおよびビデオ信号をエンコードならびにデコードするように構成されたマルチメディア信号コデックとを含む。
【００９２】
２０．電子デバイスであって、画像および／またはビデオ・データをキャプチャするように構成された撮像センサと、項目１６から１９のいずれか１つによるチップであって、ディープ・ニューラル・ネットワークを使用して、キャプチャされた画像および／またはビデオ・データを、物体の認識のために処理するように構成される、チップとを含む。
【００９３】
２１．電子デバイスであって、プロセッサと、プログラムを格納するメモリとを含み、プログラムが命令を含み、プロセッサによって命令が実行されると、項目１から１５のいずれか１つによる方法を電子デバイスに実行させる。
【００９４】
２２．プログラムを格納するコンピュータ読み取り可能記憶媒体であって、プログラムが命令を含み、プロセッサによって命令が実行されると、項目１から１５のいずれか１つによる方法をプロセッサに実行させる。
【００９５】
以上、本開示の実施形態または例について、図面を参照しながら説明したが、以上で説明した方法、チップ、およびデバイスは、単なる例示的な実施形態または例に過ぎず、本開示の範囲は、これらの実施形態や例によって限定されるのではなく、付与される特許請求の範囲およびその均等の範囲によってのみ定められることは、理解されてしかるべきである。実施形態または例における種々のエレメントは、省略されても、その均等なエレメントによって交換されてもよい。更に、ステップは、本開示において説明した順序とは異なる順序で実行してもよい。更に、実施形態または例における種々のエレメントは、種々の方法で組み合わされてもよい。技術が発展するに連れて、本明細書において説明した多くのエレメントが、本開示の後に現れる均等なエレメントと交換されてもよいことは重要である。
【図１】
2021535689.tif 000004
【図２】
2021535689.tif 000005
【図３】
2021535689.tif 000006
【図４】
2021535689.tif 000007
【図５】
2021535689.tif 000008
【図６】
2021535689.tif 000009
【図７】
2021535689.tif 000010
【図８】
2021535689.tif 000011
【図９】
2021535689.tif 000012
【手続補正書】
【提出日】令和3年3月25日(2021.3.25)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ニューラル・ネットワークに関し、更に特定すれば、ディープ・ニューラル・ネットワークのための圧縮に関する。
【従来技術】
【０００２】
ディープ・ニューラル・ネットワーク（ＤＮＮ）は、人工知能技術の中核である。現在、ディープ・ニューラル・ネットワークは幅広く研究され、関心を集めており、コンピュータ・ビジョン、音声認識、ロボット、自動運転等を含む、人工知能用途の多くの分野において応用されている。
【０００３】
ディープ・ニューラル・ネットワークは、入力層、ある数の隠れ層（中間層とも呼ばれる）、および出力層を含む、複数のニューラル・ネットワーク層で構成される。現在のディープ・ニューラル・ネットワークは、通常、数千層までもの非常に多い数の層を有し、各層が多数のノードを含む。したがって、ディープ・ニューラル・ネットワーク全体では、数百万、または数千万ものパラメータを含む場合もあり、非常に大きな記憶空間およびメモリ帯域幅を必要とする。これは、記憶のコストを増大させるだけでなく、ディープ・ニューラル・ネットワークの性能にも影響する。特に、ビデオ監視および自動運転というようなリアル・タイム用途では、ディープ・ニューラル・ネットワークの記憶の問題は、その性能およびハードウェア設計において隘路となりつつある。
【発明の概要】
【課題を解決するための手段】
【０００４】
本開示の態様によれば、ディープ・ニューラル・ネットワークのための圧縮方法を提供する。ディープ・ニューラル・ネットワークは、複数の層を含む。この方法は、入力層を除く複数の層における少なくとも１つの層の各々に対して、パラメータ記憶空間から層のパラメータを読み出すステップと、特徴マップ記憶空間から、直前の層によって格納された第１特徴マップを読み出すステップと、読み出したパラメータおよび第１特徴マップに基づいて、第２特徴マップを生成するステップと、第２特徴マップを圧縮して、第３特徴マップを得るステップと、第３特徴マップを特徴マップ記憶空間に格納するステップとを含む。
【０００５】
本開示の他の態様によれば、チップを提供する。このチップは、メモリとディープ・ニューラル・ネットワーク・エンジンとを含む。メモリは、パラメータ記憶空間および特徴マップ記憶空間を含み、パラメータ記憶空間が、ディープ・ニューラル・ネットワークのパラメータを格納するように構成され、特徴マップ記憶空間が、ディープ・ニューラル・ネットワークの特徴マップを格納するように構成される。ディープ・ニューラル・ネットワーク・エンジンは、メモリと協働して、本開示による方法を実行するように構成される。
【０００６】
本開示の他の態様によれば、電子デバイスを提供する。この電子デバイスは、撮像センサと前述のチップとを含む。撮像センサは、画像および／またはビデオ・データをキャプチャするように構成される。チップは、ディープ・ニューラル・ネットワークを使用して、物体の認識のために、キャプチャされた画像および／またはビデオ・データを処理するように構成される。
【０００７】
本開示の他の態様によれば、電子デバイスを提供する。この電子デバイスは、プロセッサと、プログラムを格納するメモリとを含む。プログラムは、命令を含み、プロセッサによって命令が実行されると、本開示による方法を電子デバイスに実行させる。
【０００８】
本開示の他の態様によれば、プログラムを格納するコンピュータ読み取り可能記憶媒体を提供する。プログラムは、命令を含み、プロセッサによって命令が実行されると、本開示による方法をプロセッサに実行させる。
【図面の簡単な説明】
【０００９】
図面は、実施形態を一例として示し、明細書の一部を形成し、明細書の書面による説明と共に、実施形態の例示的な実施態様(implementation)を説明するために使用される。図示する実施形態は、例示を目的として示されるに過ぎず、特許請求の範囲を限定するのではない。図面全体を通じて、同じ参照番号は同じエレメントを指す。
【図１】図１は、本開示の例示的な実施形態によるディープ・ニューラル・ネットワークを示す模式図である。
【図２】図２は、本開示の例示的な実施形態による畳み込みニューラル・ネットワーク（ＣＮＮ：convolutional neural network）を示す模式図である。
【図３】図３は、本開示の例示的な実施形態によるディープ・ニューラル・ネットワークのための例示的な圧縮方法を示すフローチャートである。
【図４】図４は、本開示の例示的な実施形態による特徴マップの圧縮を示す模式ブロック図である。
【図５】図５は、本開示の例示的な実施形態によるディープ・ニューラル・ネットワークの推論プロセスを示す模式図である。
【図６】図６は、本開示の例示的実施形態によるディープ・ニューラル・ネットワークの訓練プロセスを示す模式図である。
【図７】図７は、本開示の例示的実施形態によるチップを示す模式図である。
【図８】図８は、本開示の例示的実施形態による電子デバイスを示す模式図である。
【図９】図９は、本開示の例示的実施形態による他の電子デバイスを示す模式図である。
【発明を実施するための形態】
【００１０】
本開示において、別段記載がなければ、種々のエレメントについて説明する際に使用される「第１」(first)、「第２」(second)等の用語は、これらのエレメントの位置的関係、時間的関係、重要性の関係のいずれも、限定することを意図するのではなく、単にコンポーネント間で区別することを意図するに過ぎない。ある例では、第１エレメントおよび第２エレメントがエレメントの同じ実例(instance)を指す場合もあり、場合によっては、前後関係の記載に基づいて、第１エレメントおよび第２エレメントが異なる実例を指すこともある。
【００１１】
本開示において種々の例の説明に使用する用語は、単に特定の例を説明することを目的とするに過ぎず、限定することを意図しているのではない。エレメントの数が具体的に定められていない場合、コンテキストにおいて特に明示的に示されていないならば、１つ以上のエレメントがあってもよい。更に、本開示において使用する「および／または」という用語は、列挙される項目の内任意のもの、およびそれらの全ての可能な組み合わせも包含するものとする。
【００１２】
図１は、例示的なディープ・ニューラル・ネットワークを示す模式図である。ディープ・ニューラル・ネットワークは、入力層および出力層に加えて、少なくとも１つの隠れ層を含むニューラル・ネットワークである。一例として、図１に示すディープ・ニューラル・ネットワーク１００は、入力層１１０、２つの隠れ層１２０および１３０、ならびに出力層１４０を含む。各層は、数個のノード（ニューロンとも呼ぶ）１５０を含む。一例として、図１の入力層１１０は３つのノードを有し、隠れ層１２０は４つのノードを有し、隠れ層１３０は３つのノードを有し、出力層１４０は２つのノードを有する。尚、図１はディープ・ニューラル・ネットワークの単純な例に過ぎず、実際のディープ・ニューラル・ネットワークの隠れ層の数、および各層におけるノードの数は、これらの数よりもはるかに多い可能性があることは注記してしかるべきである。
【００１３】
入力層１１０は、写真の画素、オーディオの振幅サンプル、システム・ステータスのディジタル表現等のような、入力データを受け取る。このデータは、隠れ層１２０に伝搬される。隠れ層１２０における各ノードは、受け取ったデータを計算し、計算結果を次の隠れ層１３０に伝搬する。同様に、隠れ層１３０における各ノードは、受け取ったデータを計算し、計算結果を出力層１４０に伝搬する。出力層１４０は、受け取ったデータを処理し、結果、例えば、特定の物体の認識結果を出力する。
【００１４】
層間のノードは、全結合または部分結合であってもよい。全結合の場合では、現在の層（例えば、出力層１４０）におけるいずれのノードも、直前にある層（例えば、隠れ層１３０）の全てのノードに接続される。部分的結合の場合では、現在の層（例えば、出力層１４０）における１つ以上のノードが、直前にある層（例えば、隠れ層１３０）における全てのノードではなく、一部のノードのみに接続されればよい。図１に示すニューラル・ネットワークでは、全ての層が全結合される。しかしながら、ディープ・ニューラル・ネットワークにおける少なくとも一部の層は、代わりに、部分結合されてもよいことは理解できよう。
【００１５】
通常、隠れ層１２０および１３０ならびに出力層１４０における各ノードは、入力データに対して線形または非線形演算を実行する。ノード１５０が隠れ層１３０内に位置し、ノード１５０が４つの入力ｘ１、ｘ２、ｘ３、およびｘ４と出力ｙとを有すると仮定すると、
【００１６】
【数１】
2021535689.tif 000013
【００１７】
ここで、ｗｉは、ノード１５０の入力ｘｉの重み（ｉ＝１、２、３、４。あるニューラル・ネットワークでは、重みを接続とも呼ぶ。即ち、隠れ層１２０における各ノードから隠れ層１３０におけるノード１５０への接続が、対応する重みを表すために使用される）であり、ｂは、ノード１５０のバイアスであり、関数ｆ（）は、ノード１５０の活性化関数であり、通常、シグモイド関数、双曲線正接（ｔａｎｈ）関数、正規化線形単位（ＲｅＬＵ）関数、または漏洩ＲｅＬＵ関数のような、非線形関数である。尚、バイアスｂも活性化関数ｆ（）も必要でなく、一部のノードが重みｗのみを有するのでもよいことは、理解できよう。
【００１８】
ニューラル・ネットワークでは、各ノードの計算に使用される重みｗおよびバイアスｂは、通常、訓練プロセスにおける連続学習によって得られ、通常、ニューラル・ネットワークのパラメータと呼ばれる。
【００１９】
ディープ・ニューラル・ネットワークの層およびノードの数は通常非常に多いので、訓練および推論に必要とされるパラメータの数は膨大となる。例えば、入力データが１００×１００画素のサイズを有するカラー画像であるとすると、各画素は３つの値Ｒ、Ｇ、およびＢを有するので、入力層は３×１０４個のノードを有し、各ノードは１つの画素のカラー値を表す。ニューラル・ネットワークの第１隠れ層が１０００個のノードを有し、入力層に全結合されると仮定すると、第１隠れ層の計算に必要とされるパラメータ（重みｗおよびバイアスｂ）の数は、３×１０７＋１０００となる。層の数が増えるに連れて、パラメータの数もそれに応じて増える。ニューラル・ネットワークの推論プロセスまたは訓練プロセスでは、各層が対応するパラメータをメモリ（ＤＲＡＭ、ＳＲＡＭ、ＤＤＲ  ＲＡＭ、または他のランダム・アクセス・ソリッド・ステート・メモリのような、種々のランダム・アクセス・メモリまたは揮発性メモリとすればよい、グラフィクス・プロセッサのメモリ等）から読み出す必要、および／または対応するパラメータをメモリに格納する必要があるので、これはメモリの記憶容量およびメモリ帯域幅に大きな負担(pressure)をかけることになる。
【００２０】
一般的なディープ・ニューラル・ネットワークは、畳み込みニューラル・ネットワーク(convolutional neural network)であり、その隠れ層は少なくとも１つの畳み込み層を含む。従来のディープ・ニューラル・ネットワークと比較すると、畳み込みニューラル・ネットワークは、画像および音声認識ならびに他の態様において出力する結果に優れ、ネットワークによって必要とされるパラメータの数を減らすことができる。畳み込みニューラル・ネットワークの最も一般的な用途は画像認識である。以下の論述では、一例として、入力データを画像とする。しかしながら、畳み込みニューラル・ネットワークの用途は画像認識に限定されるのではないことは、当業者には当然理解されよう。
【００２１】
典型的な畳み込みニューラル・ネットワークでは、入力画像が一連の畳み込み層、随意のプーリング層(pooling layer)、および全結合層を通過した後、対応する認識結果を出力することができる。図２は、例示的な畳み込みニューラル・ネットワークを示す模式図である。尚、畳み込みニューラル・ネットワークは多くの形態を有し、図２は単純な例示的な表現に過ぎず、本開示の解決手段はこれに限定されるのではないことは注記してしかるべきである。
【００２２】
図２に示すように、畳み込みニューラル・ネットワーク２００は入力層２１０を含むことができる。入力層２１０は、画像のような入力データを受け取るために使用することができる。随意に、入力層２１０は、以後の処理をし易くするために、データに対して前処理（例えば、ディミーニング(de-meaning)、正規化、脱相関、ホワイトニング等）を実行する場合もある。一例として、図２における入力画像は、２８×２８画素の中間階調画像である。即ち、入力画像のサイズは２８×２８×１である。各画素は、図１の入力層１１０における１つのノードに相当する(equivalent)としてよい。カラー画像が入力される場合、カラー画像は３つのカラー・チャネルＲ、Ｇ、およびＢを有するので、カラー画像のサイズは２８×２８×３となる。
【００２３】
図２に示す畳み込みニューラル・ネットワーク２００は、更に、２つの畳み込み層２２０および２３０も含む。畳み込み層２２０および２３０の各々は、入力画像に対して特徴抽出を実行するために、１つ以上の畳み込みカーネル（フィルタとも呼ぶ）を使用することができる。具体的には、各畳み込みカーネルは重み行列であり、画像の特徴を抽出するために、畳み込み層に画像データ入力が畳み込まれる。異なる畳み込みカーネルが、垂直縁、水平縁、曲線、カラー、またはその他の低レベルの特徴、あるいは目、鼻、帽子、またはその他の高レベルの特徴というような、異なる画像の特徴を抽出することができる。これは、通常、畳み込み層における畳み込みカーネルの位置に依存する。このような畳み込み演算の出力を、特徴マップと呼ぶこともできる。入力層２１０については、その特徴マップは入力画像である。尚、本明細書において言及する「特徴マップ」は、画像に基づいて抽出されるデータにも、畳み込みニューラル・ネットワークにおける畳み込み層の入力および出力データにも限定されないことは注記してしかるべきである。種々のディープ・ニューラル・ネットワークにおける層の全ての入力および出力データを特徴マップと見なすことができる。
【００２４】
畳み込み層２２０は、３２個の畳み込みカーネルを有し、各畳み込みカーネルのサイズは５×５×１である。これは、入力データが中間階調画像（深度が１の）である場合である。入力層２１０の画像がカラー画像である場合、畳み込み層２２０の各畳み込みカーネルの深度は３となる。即ち、畳み込みカーネルのサイズは５×５×３となる。前述のように、畳み込みカーネルは重み行列であり、畳み込みカーネルに対応する出力特徴マップを得るために、入力画像を畳み込むことができる。更に具体的には、畳み込み層２２０では、５×５畳み込みカーネルと入力画像における５×５画素ブロックとのドット積を実行して、特徴値を得ることができる。このようなドット積が意味するのは、畳み込みカーネルにおける各重みに、対応する位置における画素を乗算し、次いで総和を実行するということである。加えて、バイアス（あるのであれば）を追加する場合もある。入力画像における５×５画素ブロックの位置は、例えば、左から右に、次いで上から下に、順次交換され（刻みを１と仮定する）、各位置における５×５画素ブロックと１と同じ畳み込みカーネルとのドット積を実行し、２４×２４特徴値で構成される特徴マップ、即ち、畳み込みカーネルの出力特徴マップを得ることができる。カラー画像の場合、入力画像の深度および畳み込みカーネルの深度は、両方共３である。畳み込みカーネルの各層に入力画像の対応する層が畳み込まれた後、その３つの畳み込み結果に対して算術和(arithmetic summation)を実行することによって、畳み込みカーネルの出力特徴マップを得ることができる。畳み込みカーネル毎に、サイズが２４×２４の特徴マップを生成することができる。畳み込み層２２０は３２個の畳み込みカーネルを有するので、サイズが２４×２４の特徴マップが合計３２通り生成され、またはサイズが２４×２４×３２の１つの特徴マップが生成される。
【００２５】
同様に、畳み込み層２３０は６４個の畳み込みカーネルを有し、各畳み込みカーネルのサイズは３×３×３２である。各畳み込みカーネルには、畳み込み層２２０によって出力された１つの特徴マップが畳み込まれ、２２×２２の特徴マップを生成する。したがって、畳み込み層２３０は、サイズが２２×２２の特徴マップを合計６４通り生成するか、またはサイズが２２×２２×６４の１つの特徴マップを生成する。
【００２６】
また、畳み込みニューラル・ネットワーク２００は、出力層として、全結合層２４０を含んでもよい。これは図１における出力層１４０と同様でよいので、ここでは繰り返さない。図２では１つの全結合層のみを示すが、複数の全結合層があってもよく、各全結合層が異なる数のノードを有してもよいことは、当業者には当然理解されよう。
【００２７】
尚、図２は畳み込みニューラル・ネットワークの単純な例示に過ぎないことは理解されてしかるべきである。実際の畳み込みニューラル・ネットワークでは、畳み込み層の数は通常それよりも多い。畳み込みカーネルを使用することによって実行される演算は、ドット積に限定されるのではなく、ディジタル信号処理において一般に使用される種々のフィルタリング処理、例えば、ガウス・フィルタ、ラプラス・フィルタ等を使用することによって実行されるもののように、もっと複雑にすることができる。また、各畳み込み層は活性化関数も含むことができる。この活性化関数は、図１を参照して先に説明した活性化関数ｆ（）と同様でよい。特徴マップ毎に、特徴マップの周辺においてゼロ・パディング処理を実行し、入力特徴マップと一致する(consistent with) 二次元サイズの出力特徴マップを作ることもできる。加えて、畳み込み層の間に、随意のプーリング層（図示せず）があってもよく、プーリング層は、画像局所相関の原理を使用して、畳み込み層によって出力された特徴マップをダウンサンプリングして、以降の層の計算量を低減する。
【００２８】
畳み込みニューラル・ネットワークのパラメータは、主に、畳み込み層および全結合層における重みであり、更にバイアスも可能である。一般的なディープ・ニューラル・ネットワークにおけるパラメータと同様、これらのパラメータは、訓練済み畳み込みニューラル・ネットワークが得られるまで、訓練と通じて連続的に最適化される。畳み込みニューラル・ネットワークの畳み込み層における異なる画素ブロックが、同じ畳み込みカーネルを共有することができ、従来のディープ・ニューラル・ネットワークと比較すると、畳み込みカーネルのサイズは特徴マップのサイズよりもはるかに小さいので（通常、パラメータ共有および局所知覚と呼ぶ）、畳み込みユーラル・ネットワークはニューラル・ネットワークのパラメータ数を効果的に削減することができる。しかしながら、畳み込みニューラル・ネットワークの層および各層における畳み込みカーネルの数が非常に多いので、畳み込みニューラル・ネットワークのパラメータは、大きな記憶容量およびメモリ帯域幅を占めることに変わりはない。
【００２９】
現在、ディープ・ニューラル・ネットワークの記憶の問題を解決するまたは軽減することを意図した研究がいくつか行われている。
１つの発想は、高帯域幅メモリ（ＨＢＭ）のような、帯域幅がもっと大きいメモリを使用することである。しかし、このやり方はコストが高く、ハードウェアの設計も非常に難しい。
【００３０】
他の発想は、ディープ・ニューラル・ネットワークを圧縮することである。１つの圧縮方法は、ニューラル・ネットワークの規模(scale)を変更することである。例えば、ニューラル・ネットワークの層の数または畳み込みカーネルの数を減らす、あるいははニューラル・ネットワークにおける重要でない接続を除去することによって、ニューラル・ネットワークを間引きする(trim)ことができる。または、行列またはテンソル分解の発想を使用して、元のネットワーク・パラメータ行列またはパラメータ・テンソルを、少数のパラメータで構築し直して、ネットワークの記憶オーバーヘッドを低減する。他の圧縮方法は、ニューラル・ネットワークのパラメータ自体を圧縮することである。例えば、６４ビット浮動小数点数の代わりに８ビットまたは１６ビット整数を使用するというように、低ビット量子化をネットワーク・パラメータに対して実行し、記憶および計算オーバーヘッドを低減することができる。あるいは、例えば、圧縮用ハフマン・コーディングを使用して、損失のない圧縮をパラメータに対して実行してもよい。しかしながら、損失のない圧縮の圧縮率は低く、通常２：１を超えないので、その効果はさほど安定しない。
【００３１】
現在のディープ・ニューラル・ネットワークのための圧縮方法の殆どは、ニューラル・ネットワークのパラメータの圧縮を中心に据えることは、学習することができる。しかしながら、本発明者は、ニューラル・ネットワークのパラメータに加えて、特徴マップのアクセスも大きな記憶容量およびメモリ帯域幅を占めることに気が付いた。具体的には、ディープ・ニューラル・ネットワークの推論および訓練プロセスにおいて、各層によって生成された特徴マップを、次の層の読み出しおよび使用のために、メモリ（ＤＲＡＭ、ＳＲＡＭ、ＤＤＲ  ＲＡＭ、または他のランダム・アクセス・ソリッド・ステート・メモリのような、種々のランダム・アクセス・メモリまたは揮発性メモリ等）に格納する必要がある。入力データが大量である場合（例えば、入力画像の解像度が高い）、特徴マップのアクセスも大量の記憶空間およびメモリ帯域幅を消費し、パラメータのアクセスよりも多いメモリ・リソースさえも消費する。これは、ニューラル・ネットワークの応用に対して、特にニューラル・ネットワークのリアル・タイム用途に対して、大きな課題となる。
【００３２】
この目的のため、本開示は、ディープ・ニューラル・ネットワークのために新たな圧縮方法を提案する。この圧縮方法は、既存のニューラル・ネットワーク圧縮技術よりも、ニューラル・ネットワークの大量データのリアル・タイム供給(application)に適している。
【００３３】
図３は、本開示の例示的実施形態によるディープ・ニューラル・ネットワークのための例示的な圧縮方法３００を示すフローチャートである。方法３００は、入力層を除いて、ディープ・ニューラル・ネットワークのいずれの層にでも実行することができる。説明の都合上、説明のための例として、ｉ番目の層を取り上げる。
【００３４】
ブロック３１０において、ｉ番目の層は、計算のためにこの層が必要とするパラメータを、パラメータ記憶空間から読み出す。これらのパラメータは、図１に関して説明した各ノードが使用する重みｗおよびバイアスｂのような、ディープ・ニューラル・ネットワークにおける任意のパラメータ、または図２に関して説明した各畳み込みカーネルの重みおよびバイアスでもよい。
【００３５】
実施形態によれば、ブロック３１０においてパラメータ記憶空間から読み出されるパラメータは、圧縮されたパラメータであってもよい。パラメータ圧縮技法(manner)は、例えば、損失のない圧縮（例えば、ハフマン・コーディング）または損失のある圧縮であってもよい。
【００３６】
ブロック３２０において、ｉ番目の層は、（ｉ−１）番目の層によって格納された第１特徴マップを特徴マップ記憶空間から読み出す。第１特徴マップは、ニューラル・ネットワークの任意の層によって出力されたデータとすることができる。例えば、第１特徴マップは、図１における入力層１１０、隠れ層１２０、または隠れ層１３０によって出力されたデータ、図２における入力層２１０、畳み込み層２２０、および畳み込み層２３０によって出力されたデータ、またはプーリング層、全結合層等によって出力されたデータであってもよい。
【００３７】
実施形態によれば、第１特徴マップは、圧縮された特徴マップであってもよい。具体的には、ｉ番目の層によって読み出された第１特徴マップが圧縮された特徴マップとなるように、（ｉ−１）番目の層によって生成された特徴マップを圧縮し、特徴マップ記憶空間に格納することができる。他の実施形態によれば、第１特徴マップは、代わりに、圧縮されていない特徴マップであってもよい。例えば、（ｉ−１）番目の層によって生成された特徴マップは圧縮されず、直接特徴マップ記憶空間に格納される。
【００３８】
ブロック３３０において、ｉ番目の層は、読み出したパラメータおよび第１特徴マップに基づいて、第２特徴マップを生成する。実施形態によれば、読み出したパラメータが圧縮されたパラメータである場合、これらのパラメータを解凍し、次いでｉ番目の層における計算において使用することができる。他の実施形態によれば、読み出した第１特徴マップが圧縮された特徴マップである場合、第１特徴マップを解凍し、次いでｉ番目の層における計算において使用することができる。（ｉ−１）番目の層の特徴マップおよび対応するパラメータに基づいてｉ番目の層によって第２特徴マップを生成する例について、図１に関して行った説明を参照することができる。この場合、各ノード１５０は、式１を使用してノードの出力を生成することができ、各層において全てのノードの出力を合計した後、このレイヤによって生成される特徴マップを得ることができる。（ｉ−１）番目の層の特徴マップおよび対応するパラメータに基づいてｉ番目の層によって第２特徴マップを生成する例について、図２に関して行った説明を参照することができる。この場合、各層の畳み込みカーネルに、直前の層の特徴マップを畳み込み、畳み込みカーネルに対応する特徴マップを生成することができる。層が複数の畳み込みカーネルを有する場合、複数の特徴マップを生成することができ、または複数の特徴マップを組み合わせて１つの高次元(high dimension)特徴マップにすることができる。尚、これらは特徴マップを生成する例に過ぎず、ブロック３３０における第２特徴マップ生成の実施態様はこれらに限定されるのではないことは理解できよう。
【００３９】
ブロック３４０において、ｉ番目の層は、ブロック３３０において生成した第２特徴マップを圧縮して、第３特徴マップを得る。第２特徴マップの圧縮は、損失のない圧縮でもよいが、更に好ましくは、損失のある圧縮でもよい。これについては、以下で更に詳しく説明する。
【００４０】
実施形態によれば、第２特徴マップを圧縮する前記ステップは、第２特徴マップの異なる領域を異なる圧縮率で圧縮するステップを含み、これらの領域の各々の圧縮率は、その領域おける関心度に依存する。一例では、関心度が高い領域の圧縮率（例えば、第１の関心度）は、関心度が低い領域（例えば、第１の関心度よりも低い第２の関心度）の圧縮率よりも低い。例えば、ニューラル・ネットワークによって処理されるオブジェクトが画像またはビデオであるとき、画像において関心のある領域（即ち、ポートレートのような関心度が高い領域）について、その領域の圧縮および解凍の後に得られる画像が、元の画像との高い類似性を有することが通常望まれ、この理由のために、情報の損失を減らすために、低い圧縮率を使用することができる。また、画像において関心がない領域（即ち、空のような、関心度が低い領域）について、この領域の圧縮および解凍後に得られる画像と元の画像との間における類似性に対する要件を下げることができ、この理由のために、高い圧縮率を使用することができる。類似性測定パラメータは、例えば、ユークリッド距離、ピーク信号対ノイズ比（ＰＳＮＲ：peak signal-to-noise ratio）、構造的類似性評価（ＳＳＩＭ：structural similarity evaluation）等でもよい。
【００４１】
ブロック３５０において、ｉ番目の層は、ブロック３４０において得られた第３特徴マップを特徴マップ記憶空間に格納する。パラメータ記憶空間および特徴マップ記憶空間は、別々のメモリに配置してもよく、または同じメモリを共有してもよい。一例として、パラメータ記憶空間および特徴マップ記憶空間に使用されるメモリは、ＤＲＡＭ、ＳＲＡＭ、ＤＤＲ  ＲＡＭ、またはその他のランダム・アクセス・ソリッド・ステート・メモリのような、高速ランダム・アクセス・メモリとするとよい。
【００４２】
方法３００は、ディープ・ニューラル・ネットワークの推論プロセスおよびディープ・ニューラル・ネットワークの訓練プロセスの双方に適用することができる。これについて、図５および図６と関連付けて後に詳しく説明する。
【００４３】
方法３００を使用することによって、ディープ・ニューラル・ネットワークの少なくとも１つの層によって生成された特徴マップを圧縮し、次いで格納することにより、特徴マップおよびこれらによって占められるメモリ帯域幅に必要とされる記憶空間を大幅に削減することができる。これは、特に、ニューラル・ネットワークのリアル・タイム用途にとって有用である。例えば、ビデオ監視のアプリケーション・シナリオ(application scenario)では、ビデオ画像における物体をリアル・タイムで認識するためにニューラル・ネットワークが使用される場合、大量のビデオ・フレームをリアル・タイムで処理する必要がある。ビデオ・データが高い解像度（例えば、３００×３００画素よりも高い解像度、またはそれよりも更に高い解像度）を有する場合、これはメモリ帯域幅に対する大きな課題となる。特徴マップを格納する前にこれを圧縮することによって、特徴マップを格納するときおよびメモリから読み出すときに占められるメモリ帯域幅を大幅に削減することができる。これはニューラル・ネットワークのリアル・タイム用途を実現するのに役に立つ。加えて、読み出された圧縮特徴マップは、計算（例えば、畳み込み）のために解凍されるので、方法３００はニューラル・ネットワークの推論の精度には殆ど影響を及ぼさない。また、方法３００は、ニューラル・ネットワークのパラメータの圧縮および対応するハードウェア設計と組み合わせて、ニューラル・ネットワークの動作を更に加速化し、メモリの電力消費を低減することができる。
【００４４】
方法３００は、あらゆるディープ・ニューラル・ネットワークに適用することができる。畳み込みニューラル・ネットワークでは、方法３００は少なくとも１つの畳み込み層に対して実行することができる。随意に、方法３００は、プーリング層および全結合層に対しても、代わりに実行することができる。畳み込みニューラル・ネットワークでは、方法３００は、全ての畳み込み層に対して実行することもでき、または選択的に一部の畳み込み層に対して方法３００を実行することもできる。通常、入力側に近い畳み込み層によって生成される特徴マップは、出力側に近い畳み込み層によって生成される特徴マップよりも大きく、より多くの記憶空間およびメモリ帯域幅を占める。したがって、好ましくは、入力側に近い１つ以上の畳み込み層に方法３００を適用することができる。
【００４５】
尚、論理的に必要でなければ、方法３００におけるステップの順序は、図示または説明した順序には限定されず、必要に応じて調節することまたは並列に実行することもでき、異なるステップにおける動作を並列にまたは交互に実行できることは注記してしかるべきである。本開示は、これに関して全く限定を強要しない。例えば、ブロック３１０およびブロック３２０を逆の順序でまたは並列に実行してもよく、本開示の実施態様には影響を及ぼさない。
【００４６】
以下では、一例として、ビデオ・データをニューラル・ネットワークへの入力として取り上げ、特徴マップの圧縮について更に詳しく説明する。特徴マップの圧縮は、（ｉ−１）番目の層、ｉ番目の層のような、ニューラル・ネットワークの任意の層、または図３に関して説明した全ての層に適用することができる。
【００４７】
図４は、本開示の例示的実施形態による特徴マップの圧縮を示す模式ブロック図である。図４に示すように、ニューラル・ネットワークにおける層によって生成された特徴マップに、予測（ブロック４１０）、変換（ブロック４２０）、量子化（ブロック４３０）、およびエントロピ・コーディング（ブロック４４０）というような処理(operation)を実行し、特徴マップにおける空間的冗長性、時間的冗長性、およびコーディング冗長性を除去することができる。図４におけるこれらの処理について、以下で１つずつ説明する。しかしながら、本開示には図４に示す処理の全てが必要という訳ではなく、必要に応じて特徴マップを圧縮するために、ブロック４１０から４４０までの内１つ以上を使用できることは理解できよう。例えば、特徴マップに対して損失のない圧縮を実行する場合、この特徴マップに量子化４３０を実行しなくてもよく、エントロピ・コーディング４４０だけをこの特徴マップに実行すればよい。他の例をあげると、特徴マップの圧縮は、変換４２０、量子化４３０、およびエントロピ・コーディング４４０のみを含めばよく、予測４１０は実行しなくてもよい。
【００４８】
ブロック４１０において、入力された特徴マップに対して予測コーディングを実行する。予測コーディングは、内部予測(intra prediction)および相互予測(inter prediction)の内一方または双方を含むことができる。フレーム内コーディングは、空間的冗長を排除するために使用することができ、フレーム間コーディングは、時間的冗長を排除するために使用することができる。特徴マップを複数のブロックに分割することができ、ブロック毎にコーディングを実行する。一例として、ＭＰＥＧ、Ｈ．２６４、およびＨ．２６５のようなビデオ規格に採用されている種々の予測コーディング技法を、ブロック４１０における特徴マップの予測コーディングに使用することができる。
【００４９】
ブロック４２０において、特徴マップを空間ドメインから周波数ドメインに変換し、信号間における相関を効果的に除去し、エネルギの殆どを低周波数領域に集中させる。この変換の結果に基づいて、高周波数領域における信号を、後続の量子化ステップにおいて破棄することができ、あるいは低周波数領域に小さい量子化刻み、そして高周波数領域には大きな量子化刻みを使用して、高い画質を維持しつつ、高い圧縮率を達成することができる。一例として、離散フーリエ変換（ＤＦＴ）、離散正弦波変換（ＤＳＴ）、Ｋ−Ｌ変換、ウェーブレット変換等のような種々の変換技術を使用して、特徴マップを変換することができる。
【００５０】
ブロック４３０において、ブロック４２０において得られた変換係数を量子化する。量子化において、多数の変換係数を近似的にあらわすために、少数の量子化値を使用することができる。元の変換係数と再現された変換係数との間には差、即ち、歪みがあるので、量子化を使用する特徴マップの圧縮は、損失のある圧縮となる。損失のない圧縮と比較すると、損失のある圧縮の方がアルゴリズムの選択肢が多く、多くの調節可能な圧縮パラメータを有し、圧縮率を制御することによって、異なる要件に適応することができる。本開示の実施形態によれば、損失のある圧縮の使用により、ニューラル・ネットワークの推論精度に対する影響が殆どなく、圧縮率向上を達成することができる。例えば、実施形態によれば、損失のある圧縮の圧縮率が１０：１よりも高いとき、ニューラル・ネットワークの推論精度は５％未満しか低下しない。加えて、訓練プロセスにおいて、層の特徴マップに対して損失のある圧縮を実行することは、層のパラメータおよび特徴マップに外乱を追加することと同等であると見なすことができ、訓練が極小値に陥るのを防止することができ、したがってニューラル・ネットワークの推論能力を高めることができる。
【００５１】
ブロック４４０において、ブロック４３０の量子化結果に対してエントロピ・コーディングを実行し、予測および変換後になおも存在する統計的冗長情報を除去する。一例として、エントロピ・コーディングは、可変長コーディング（ＶＬＣ）（例えば、ハフマン・コーディング、指数Ｇｏｌｏｍｂコード（ＥＧＣ）等）または算術コーディングを使用することができる。
【００５２】
以上、特徴マップの圧縮プロセスについて、図４と関連付けて端的に説明した。尚、これらの説明は、本開示に対する限定ではなく、単に例示的な説明に過ぎないことは、当業者には理解できよう。具体的な実施態様では、特徴マップは、ＭＰＥＧ、Ｈ．２６４、Ｈ．２６５、および他のビデオ規格に基づく圧縮方法、あるいは開発中または今後開発される種々のビデオ圧縮方法というような、種々の知られているビデオ圧縮方法を使用することによって圧縮することができる。これは、本開示において限定されない。
【００５３】
本開示の実施形態によれば、特徴マップの圧縮（例えば、図３のブロック３４０に示す第２特徴マップの圧縮）は、特徴マップの非均一な量子化を含んでもよい。実施形態によれば、特徴マップの異なる領域に異なる量子化刻み(step)を使用してもよい。各領域の量子化刻みを決定するためには、多くの要因を検討してもよい。
【００５４】
実施形態によれば、領域の量子化刻みは、領域の画像の複雑度にしたがって決定されてもよい。例えば、より多くの詳細を保持するために、画像の複雑度が高い領域には小さい量子化刻みを割り当て、画像の複雑度が低い領域には、大きな量子化刻みを割り当てる。一例では、画像の複雑度は、予め設定された閾値によって測定することができる。高い画像の複雑度とは、画像の複雑度がこの予め設定された閾値よりも高いことを意味するのでもよく、低い画像の複雑度は、画像の複雑度がこの予め設定された閾値以下であることを意味するのでもよい。
【００５５】
他の実施形態によれば、領域の量子化刻みは、特徴マップにおける領域の位置にしたがって決定されてもよい。たとえば、ビデオ監視の用途では、各ビデオ・カメラによって特別に監視される領域は、画像において比較的固定した位置を有するとして差し支えなく、この位置に対応する特徴マップ領域には、小さな量子化刻みを割り当てるとよい。
【００５６】
他の実施形態によれば、領域の量子化刻みは、領域の重要度にしたがって決定されてもよい。例えば、ビデオ画像では、画像における領域の重要度は前もって決定することができ、量子化の間に重要度の順序にしたがって、異なる量子化刻みを割り当てることができる。
【００５７】
他の実施形態によれば、領域の量子化刻みは、領域における特異的特徴の存在または不在にしたがって決定されてもよい。特異的特徴は、ニューラル・ネットワークのアプリケーション・シナリオに依存するのでもよい。実施形態によれば、特異的特徴は、アプリケーション・シナリオにおいて関心がある特徴としてもよい。例えば、セキュリティ監視では、特異的特徴は人または個人識別情報(identity)に関する特徴でもよい。交通監視では、特異的特徴は、車両の型番、ナンバー・プレート、信号等に関する特徴でもよい。サッカー試合の生放送では、特異的特徴は、選手、ボール、レフリー、ゴール等に関する特徴でもよい。一例では、特異的特徴が領域内に存在する場合、より多くの詳細を保持するために、小さい量子化刻み（例えば、第１量子化刻み）をその領域に割り当てるとよく、特異的特徴がその領域に存在しない場合、大きな量子化刻み（例えば、第１量子化刻みよりも大きい第２量子化刻み）をその領域に割り当てるとよい。
【００５８】
他の実施形態によれば、領域の量子化刻みは、領域における特異的特徴の数にしたがって決定されてもよい。一例では、領域における特異的特徴の数が多い場合（例えば、所定の閾値よりも多い）、より多くの詳細を保持するために、その領域には小さい量子化刻み（例えば、第３量子化刻み）を割り当てるとよく、領域における特異的特徴の数が少ない場合（例えば、所定の閾値以下）、大きな量子化刻み（例えば、第３量子化刻みよりも大きい第４量子化刻み）をその領域に割り当てるとよい。直前の実施形態と同様、特異的特徴は、アプリケーション・シナリオに依存するのでもよく、ここでは繰り返さない。
【００５９】
尚、以上で述べたこれらの要因は、個々にまたは組み合わせて検討できることは理解できよう。これは、本開示において限定されない。領域の特性に基づいて、異なる量子化刻みを特徴マップにおける領域に割り当てる。これは、高い圧縮率を達成できるだけでなく、用途にとって重要な特徴マップの詳細をできるだけ多く保持することもでき、これによってニューラル・ネットワークの推論精度を維持する。
【００６０】
以下に、図５および図６と関連付けて、本開示の例示的な実施形態によるニューラル・ネットワークの推論プロセスおよび訓練プロセスについて説明する。
図５は、本開示の例示的実施形態によるディープ・ニューラル・ネットワークの推論プロセスの模式図である。ニューラル・ネットワークの推論プロセスは、処理されるデータを、訓練済みのニューラル・ネットワークに入力して、推論結果を得るプロセスである。図５に示すように、ディープ・ニューラル・ネットワークは、入力層５３２、出力層５３８、および複数の隠れ層を含む。簡単にするために、図５は２つの隣接する層、即ち、ｉ番目の層および（ｉ＋１）番目の層のみを示す。これらを、それぞれ、参照番号５３４および５３６によって示す。また、図５は、パラメータ記憶空間５１０、および特徴マップ記憶空間５２０も示す。推論プロセスにおいて、ニューラル・ネットワークにおける各層は、出力層５３８が最終的な推論結果を出力するまで、順次入来するデータを処理する。層５３４および５３６における処理については、以下で一例をあげて説明する。
【００６１】
図５に示すように、ｉ番目の層５３４は、計算のために層５３４が必要とするパラメータ５１２を、パラメータ記憶空間５１０から読み出す。随意に、パラメータ５１２が圧縮されている場合、ブロック５４２においてパラメータ５１２を解凍する。また、層５３４は、（ｉ−１）番目の層に格納されている特徴マップ５２２を、特徴マップ記憶空間５２０から読み出す。随意に、特徴マップ５２２が圧縮されている場合、ブロック５５２において特徴マップ５２２を解凍する。パラメータ５１２および特徴マップ５２２の解凍バージョンに基づいて、層５３４の特徴マップを生成する。特徴マップを圧縮した後（ブロック５５４において）、特徴マップ記憶空間５２０に、層５３４によって格納された特徴マップ５２４として、特徴マップを格納する。
【００６２】
次に、（ｉ＋１）番目の層５３６は、ｉ番目の層５３４の動作と同様の動作を実行する。パラメータ５１４および特徴マップ５２４を、それぞれ、パラメータ記憶空間５１０および特徴マップ記憶空間５２０から読み出し、解凍する（ブロック５４４および５５６に示す通り）。次いで、パラメータ５１４および特徴マップ５２４の解凍バージョンに基づいて、層５３６の特徴マップを生成する。特徴マップを圧縮した後（ブロック５５８において）、特徴マップ記憶空間５２０に、次の層による使用のために層５３６によって格納された特徴マップ５２６として、特徴マップを格納する。
【００６３】
類推によって、ニューラル・ネットワークにおける後続の層は、出力層５３８が最終的な推論結果を出力するまで、以上の動作を順次実行する。尚、図５は、先に説明したように、各層のパラメータおよび特徴マップの圧縮ならびに解凍について説明するが、このような圧縮および解凍処理(operation)は、ニューラル・ネットワークにおける層の内一部のみにも実行でき、更に、代わりに、圧縮および解凍処理(operation)は、パラメータの代わりに、特徴マップのみにも実行できることは、理解されてしかるべきである。
【００６４】
図６は、本開示の例示的実施形態によるディープ・ニューラル・ネットワークの訓練プロセスの模式図である。ニューラル・ネットワークの訓練プロセスは、既知のサンプル集合に基づいて、ニューラル・ネットワークのパラメータを訓練するプロセスである。ニューラル・ネットワークの訓練プロセスは、最終的な出力結果と目標値との間の誤差が所定の閾値未満になるまで連続的に繰り返される。各繰り返しは、通常、２つのフェーズ、即ち、順方向伝搬フェーズ(forward propagation phase)および逆方向伝搬フェーズ(back propagation phase)に分割される。順方向伝搬フェーズは、推論プロセスと同様である。サンプル毎に、各層は順次計算を実行し、最終的な出力値を得る。次に、逆方向伝搬フェーズでは、出力値と目標値との間の誤差を最初に計算する。誤差が所定の閾値よりも大きい場合、逆方向伝搬のために、この誤差を出力層からニューラル・ネットワークに送信し、層の誤差を順次計算し、計算した誤差にしたがって、層のパラメータを更新する。更新したパラメータに基づいて、次の繰り返しの順方向伝搬フェーズを開始する。
【００６５】
図６では、明確にするために、破線６１０を使用して、順方向伝搬フェーズおよび逆方向伝搬フェーズを分離する。図６の上側部分に示すように、訓練プロセスの順方向伝搬フェーズは、図５におけるそれと同一であり、ここでは詳細について繰り返さない。図６の下側部分は、訓練プロセスの逆方向伝搬フェーズを示す。逆方向伝搬フェーズにおいて、順方向伝搬フェーズにおける最終的な出力結果と目標値との間の誤差を、出力層５３８から入力層５３２に順次送信する。（ｉ＋１）番目の層５３６は、（ｉ＋２）番目の層から受け取った層５３６の誤差に基づいて、更新パラメータ５１４を計算し、これをパラメータ記憶空間５１０に格納する。随意に、更新パラメータを圧縮し（ブロック６４８において）、次いでパラメータ記憶空間５１０に格納してもよい。また、層５３６は、ｉ番目の層５３４の誤差を計算し、これを層５３４に逆伝搬する。同様に、層５３４は、受け取った誤差に基づいて、更新パラメータ５１２を計算し、これをパラメータ記憶空間５１０に格納する。随意に、更新パラメータを圧縮し（ブロック６４６において）、次いでパラメータ記憶空間５１０に格納してもよい。図６の左側における大きな矢印によって示すように、逆方向伝搬フェーズが入力層５３２において終了したとき、全ての層の更新パラメータに基づいて、訓練プロセスは、次の繰り返しの順方向伝搬フェーズを開始する。
【００６６】
尚、図５および図６は、ニューラル・ネットワークの例示的な推論プロセスおよび訓練プロセスを示すに過ぎないことは、注記してしかるべきである。ニューラル・ネットワークの異なる構造に基づいて、他の対応する推論プロセスおよび訓練プロセスも使用できることは、当業者には理解できよう。
【００６７】
図７は、本開示の例示的実施形態によるチップ７００を示す模式図である。チップ７００は、メモリ７１０と、ディープ・ニューラル・ネットワーク・エンジン７２０とを含むことができる。
【００６８】
メモリ７１０は、パラメータ記憶空間および特徴マップ記憶空間を含むことができる。パラメータ記憶空間は、ディープ・ニューラル・ネットワークのパラメータを格納するために使用され、特徴マップ記憶空間は、ディープ・ニューラル・ネットワークの特徴マップを格納するために使用される。実施形態によれば、メモリ７１０は、ＤＲＡＭ、ＳＲＡＭ、ＤＤＲ  ＲＡＭ、または他のランダム・アクセス・ソリッド・ステート・メモリのような、種々のランダム・アクセス・メモリまたは揮発性メモリであってもよい。
【００６９】
ディープ・ニューラル・ネットワーク・エンジン７２０は、ディープ・ニューラル・ネットワークを、画像データのような入力データに適用し、画像検出、認識、およびパーティショニング(partitioning)というような処理を実施することができる。ディープ・ニューラル・ネットワーク・エンジン７２０は、メモリ７１０と協働して、先に説明した本開示の種々の実施形態における方法を実行することができる。実施形態によれば、ディープ・ニューラル・ネットワーク・エンジン７２０は、ハードウェアによって実装することができ、例えば、特定用途集積回路（ＡＳＩＣ）によって実装されてもよい。
【００７０】
尚、特定の要件にしたがって、ディープ・ニューラル・ネットワーク・エンジン７２０の実施態様には、種々の変形を行ってもよいことは理解されてしかるべきである。例えば、種々の変形は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはこれらの任意の組み合わせで実装することができる。例えば、ディープ・ニューラル・ネットワーク・エンジン７２０は、ＡＳＩＣの代わりに、本開示によるロジックおよびアルゴリズムを使用することによって、アセンブリ言語またはハードウェア・プログラミング言語（ＶＥＲＩＬＯＧ、ＶＨＤＬ、およびＣ＋＋のような）でハードウェア（例えば、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）および／またはプログラマブル・ロジック・アレイ（ＰＬＡ）を含むプログラマブル・ロジック回路）をプログラミングすることによって、実装してもよい。
【００７１】
実施形態によれば、チップ７００は、人工知能（ＡＩ）ビジョン・チップでもよい。加えて、図７には示されていないが、チップ７００は、画像信号（撮像センサによって出力される信号のような）を処理するように構成された画像信号処理（ＩＳＰ）ユニット、オーディオおよびビデオ信号をエンコードならびにデコードするように構成されたマルチメディア信号コデック等のような、更に他のコンポーネントも含んでもよい。
【００７２】
図８は、本開示の例示的実施形態による電子デバイス８００を示す模式図である。電子デバイス８００は、図７に示すチップ７００と、撮像センサ８３０とを含むことができる。撮像センサ８３０は、画像および／またはビデオ・データをキャプチャするように構成することができる。実施形態によれば、電子デバイス８００は、ビデオ・カメラ、またはＡＩビジョン・チップと統合されたカメラでもよい。このような電子デバイス８００は、種々のシナリオにおいて使用することができ、例えば、セキュリティ監視における人間の顔または他の特定的な物体の自動検出および認識、自動運転における歩行者、自動車、信号機等のリアル・タイム検出および認識、物体を認識し障害物を回避する際におけるロボットの補助等において使用することができる。
【００７３】
図９は、本開示の例示的実施形態による他の電子デバイス９００を示す模式図である。電子デバイス９００は、処理および／または計算を実行するように構成された任意の機械としてもよく、限定ではないが、ワークステーション、サーバ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、パーソナル・ディジタル・アシスタント、スマートフォン、内蔵コンピュータ、またはこれらの任意の組み合わせでもよい。本開示の実施形態による前述の方法は、全体的にまたは少なくとも部分的に、電子デバイス９００あるいは同様のデバイスまたはシステムによって実行する(implement)ことができる。
【００７４】
電子デバイス９００は、バス９１０、１つ以上のプロセッサ９２０、１つ以上のメモリ９３０、１つ以上の入力デバイス９４０、および１つ以上の出力デバイス９５０を含むことができる。１つ以上のプロセッサ９２０は、任意の種類のプロセッサでよく、限定ではなく、１つ以上の汎用プロセッサ（中央処理ユニット（ＣＰＵ）のような）、および／または１つ以上の専用プロセッサ（グラフィクス処理ユニット（ＧＰＵ）のような）を含むことができる。１つ以上のメモリ９３０は、不揮発性メモリ（ディスク・ドライブ、光記憶デバイス、ソリッド・ステート・メモリ、フロッピ・ディスク、ハード・ディスク、磁気テープ、およびリード・オンリ・メモリ（ＲＯＭ）のような）、および／または揮発性メモリ（ランダム・アクセス・メモリ（ＲＡＭ）およびキャッシュ・メモリのような）を含むことができる。メモリ９３０は、本開示の実施形態による方法を実行する(implement)ためのデータおよび／またはプログラムを格納することができる。メモリ９３０に格納されるデータは、例えば、図５および図６に示したパラメータ記憶空間および特徴マップ記憶空間におけるデータである。メモリ９３０に格納されたプログラムは、プロセッサ９２０によって実行されると、電子デバイス９００に、本開示の実施形態による方法を実行させることができる。
【００７５】
入力デバイス９４０は、電子デバイス９００に情報を入力できる任意の種類のデバイスでよく、センサ（例えば、前述のような撮像センサ）、マウス、キーボード、タッチスクリーン、マイクロフォン、および／またはリモート・コントローラを含むことができるが、これらに限定されるのではない。出力デバイス９５０は、情報を出力できる任意の種類のデバイスでよく、ディスプレイ、スピーカ、ビデオ／オーディオ出力端末、バイブレータ、および／または種々の出力インターフェースを含むことができるが、これらに限定されるのではない。
【００７６】
尚、電子デバイス９００の１つ以上のコンポーネントはネットワーク上で分散されてもよいことは理解されてしかるべきである。例えば、処理の一部を１つのプロセッサによって実行し、他の処理は、この１つのプロセッサから離れた他のプロセッサによって実行することもできる。したがって、電子デバイス９００は、複数の位置で処理を実行する分散型コンピューティング・システムとして解釈することができる。
【００７７】
加えて、本開示の態様は、プログラムを格納するコンピュータ読み取り可能記憶媒体を含むこともできる。このプログラムは、命令を含み，プロセッサによって命令が実行されると、以上の方法のいずれでもこのプロセッサに実行させる。
【００７８】
本開示のいくつかの態様による例示的な方法および製品の実施形態を、以下の項目に列挙する。
１．複数の層を含むディープ・ニューラル・ネットワークのための圧縮方法であって、入力層を除く複数の層における少なくとも１つの層の各々に対して、この方法は、パラメータ記憶空間から層のパラメータを読み出すステップと、特徴マップ記憶空間から、直前の層によって格納された第１特徴マップを読み出すステップと、読み出したパラメータおよび第１特徴マップに基づいて、第２特徴マップを生成するステップと、第２特徴マップを圧縮して、第３特徴マップを得るステップと、第３特徴マップを特徴マップ記憶空間に格納するステップとを含む。
【００７９】
２．項目１による方法において、第２特徴マップに対して実行される圧縮が、損失のある圧縮を含む。
３．項目１による方法において、この方法が、ディープ・ニューラル・ネットワークの訓練プロセスおよびディープ・ニューラル・ネットワークの推論プロセスにおける順方向伝搬フェーズにおいて、使用される。
【００８０】
４．項目１による方法において、ディープ・ニューラル・ネットワークが、畳み込みニューラル・ネットワークを含み、畳み込みニューラル・ネットワークが、複数の畳み込み層を含み、この方法が、畳み込み層の少なくとも１つに対して実行される。
【００８１】
５．項目１による方法において、第１特徴マップが圧縮特徴マップであり、読み出したパラメータおよび第１特徴マップに基づいて第２特徴マップを生成する前記ステップが、第１特徴マップを解凍するステップと、読み出したパラメータおよび解凍した第１特徴マップに基づいて、第２特徴マップを生成するステップとを含む。
【００８２】
６．項目１による方法において、パラメータ記憶空間から読み出したパラメータが圧縮パラメータであり、読み出したパラメータおよび第１特徴マップに基づいて第２特徴マップを生成する前記ステップが、読み出したパラメータを解凍するステップと、解凍したパラメータおよび第１特徴マップに基づいて、第２特徴マップを生成するステップとを含む。
【００８３】
７．項目２による方法において、第２特徴マップを圧縮する前記ステップが、第２特徴マップを空間ドメインから周波数ドメインに変換するステップと、変換係数を量子化するステップとを含む。
【００８４】
８．項目２による方法において、第２特徴マップを圧縮する前記ステップが、更に、第２特徴マップに対して予測コーディングを実行するステップを含み、予測コーディングが、内部予測および／または相互予測を含む。
【００８５】
９．項目２による方法において、第２特徴マップを圧縮する前記ステップが、第２特徴マップの異なる領域を異なる圧縮率で圧縮するステップを含み、領域の各々の圧縮率が、当該領域における関心度に依存し、第１関心度の領域の圧縮率が第２関心度の領域の圧縮率よりも低く、第１関心度が第２関心度よりも高い。
【００８６】
１０．項目２による方法において、第２特徴マップを圧縮する前記ステップが、第２特徴マップに対して非均一量子化を実行するステップを含み、第２特徴マップの異なる領域が、異なる量子化刻みを有する。
【００８７】
１１．項目１０による方法において、第２特徴マップの領域の各々の量子化刻みが、領域の画像の複雑さ、第２特徴マップにおける領域の位置、領域の重要度、領域における特異的特徴の存在または不在、および領域における特異的特徴の数、の内少なくとも１つに基づいて決定される。
【００８８】
１２．項目１１による方法において、特異的特徴が、ディープ・ニューラル・ネットワークのアプリケーション・シナリオにおいて関心のある特徴を含む。
１３．項目１１による方法において、領域における特異的特徴の存在または不在にしたがって領域の各々の量子化刻みを決定するステップが、領域における特異的特徴の存在に応答して、第１量子化刻みを領域に割り当てるステップと、領域における特異的特徴の不在に応答して、第２量子化刻みを領域に割り当てるステップとを含み、第１量子化刻みが第２量子化刻みよりも小さい。
【００８９】
１４．項目１１による方法において、領域における特異的特徴の数にしたがって領域の各々の量子化刻みを決定するステップが、領域における特異的特徴の数が、予め設定された閾値よりも多いことに応答して、第３量子化刻みを領域に割り当てるステップと、領域における特異的特徴の数が所定の閾値以下であることに応答して、第４量子化刻みを領域に割り当てるステップとを含み、第３量子化刻みが第４量子化刻みよりも小さい。
【００９０】
１５．項目１による方法において、ディープ・ニューラル・ネットワークが、物体認識のために、画像および／またはビデオ・データを処理するために使用される。  
１６．チップであって、パラメータ記憶空間および特徴マップ記憶空間を含むメモリであって、パラメータ記憶空間が、ディープ・ニューラル・ネットワークのパラメータを格納するように構成され、特徴マップ記憶空間が、ディープ・ニューラル・ネットワークの特徴マップを格納するように構成される、メモリと、メモリと協働して、項目１から１５までのいずれか１つによる方法を実行するように構成されたディープ・ニューラル・ネットワーク・エンジンとを含む。
【００９１】
１７．項目１６によるチップにおいて、メモリがランダム・アクセス・メモリを含む。
１８．項目１６によるチップにおいて、チップが、人工知能ビジョン・チップを含む。
１９．項目１８によるチップにおいて、チップが、更に、画像信号を処理するように構成された画像信号処理（ＩＳＰ）ユニットと、オーディオおよびビデオ信号をエンコードならびにデコードするように構成されたマルチメディア信号コデックとを含む。
【００９２】
２０．電子デバイスであって、画像および／またはビデオ・データをキャプチャするように構成された撮像センサと、項目１６から１９のいずれか１つによるチップであって、ディープ・ニューラル・ネットワークを使用して、キャプチャされた画像および／またはビデオ・データを、物体の認識のために処理するように構成される、チップとを含む。
【００９３】
２１．電子デバイスであって、プロセッサと、プログラムを格納するメモリとを含み、プログラムが命令を含み、プロセッサによって命令が実行されると、項目１から１５のいずれか１つによる方法を電子デバイスに実行させる。
【００９４】
２２．プログラムを格納するコンピュータ読み取り可能記憶媒体であって、プログラムが命令を含み、プロセッサによって命令が実行されると、項目１から１５のいずれか１つによる方法をプロセッサに実行させる。
【００９５】
以上、本開示の実施形態または例について、図面を参照しながら説明したが、以上で説明した方法、チップ、およびデバイスは、単なる例示的な実施形態または例に過ぎず、本開示の範囲は、これらの実施形態や例によって限定されるのではなく、付与される特許請求の範囲およびその均等の範囲によってのみ定められることは、理解されてしかるべきである。実施形態または例における種々のエレメントは、省略されても、その均等なエレメントによって交換されてもよい。更に、ステップは、本開示において説明した順序とは異なる順序で実行してもよい。更に、実施形態または例における種々のエレメントは、種々の方法で組み合わされてもよい。技術が発展するに連れて、本明細書において説明した多くのエレメントが、本開示の後に現れる均等なエレメントと交換されてもよいことは重要である。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ディープ・ニューラル・ネットワークのための圧縮方法であって、前記ディープ・ニューラル・ネットワークが複数の層を含み、入力層を除く前記複数の層における少なくとも１つの層の各々に対して、前記方法が、
パラメータ記憶空間から前記層のパラメータを読み出すステップと、
特徴マップ記憶空間から、直前の層によって格納された第１特徴マップを読み出すステップと、
前記読み出したパラメータおよび第１特徴マップに基づいて、第２特徴マップを生成するステップと、
前記第２特徴マップを圧縮して、第３特徴マップを得るステップと、
前記第３特徴マップを前記特徴マップ記憶空間に格納するステップと、
を含む、方法。
【請求項２】
請求項１に記載の方法において、前記第２特徴マップに対して実行される圧縮が、損失のある圧縮を含む、方法。
【請求項３】
請求項１または２に記載の方法において、この方法が、前記ディープ・ニューラル・ネットワークの訓練プロセスおよび前記ディープ・ニューラル・ネットワークの推論プロセスにおける順方向伝搬フェーズにおいて、使用される、方法。
【請求項４】
請求項１〜３のいずれか一項に記載の方法において、前記ディープ・ニューラル・ネットワークが、畳み込みニューラル・ネットワークを含み、前記畳み込みニューラル・ネットワークが、複数の畳み込み層を含み、前記方法が、前記複数の畳み込み層の少なくとも１つに対して実行される、方法。
【請求項５】
請求項１〜４のいずれか一項に記載の方法において、
前記第１特徴マップが圧縮特徴マップであり、
前記読み出したパラメータおよび第１特徴マップに基づいて第２特徴マップを生成するステップが、
前記第１特徴マップを解凍するステップと、
前記読み出したパラメータおよび解凍した第１特徴マップに基づいて、前記第２特徴マップを生成するステップと、
を含む、方法。
【請求項６】
請求項１〜５のいずれか一項に記載の方法において、
前記パラメータ記憶空間から読み出した前記パラメータが圧縮パラメータであり、前記読み出したパラメータおよび第１特徴マップに基づいて第２特徴マップを生成するステップが、
前記読み出したパラメータを解凍するステップと、
前記解凍したパラメータおよび前記第１特徴マップに基づいて、前記第２特徴マップを生成するステップと、
を含む、方法。  
【請求項７】
請求項２に記載の方法において、前記第２特徴マップを圧縮するステップが、
前記第２特徴マップを空間ドメインから周波数ドメインに変換するステップと、
変換係数を量子化するステップと、
を含む、方法。
【請求項８】
請求項２に記載の方法において、前記第２特徴マップを圧縮するステップが、更に、
前記第２特徴マップに対して予測コーディングを実行するステップを含み、前記予測コーディングが、内部予測および／または相互予測を含む、方法。
【請求項９】
請求項２に記載の方法において、前記第２特徴マップを圧縮するステップが、前記第２特徴マップの異なる領域を異なる圧縮率で圧縮するステップを含み、前記領域の各々の圧縮率が、当該領域における関心度に依存し、第１関心度の領域の圧縮率が、第２関心度の領域の圧縮率よりも低く、前記第１関心度が、前記第２関心度よりも高い、方法。
【請求項１０】
請求項２に記載の方法において、前記第２特徴マップを圧縮するステップが、前記第２特徴マップに対して非均一量子化を実行するステップを含み、前記第２特徴マップの異なる領域が、異なる量子化刻みを有する、方法。
【請求項１１】
請求項１０に記載の方法において、前記第２特徴マップの領域の各々の量子化刻みが、領域の画像の複雑さ、前記第２特徴マップにおける領域の位置、領域の重要度、領域における特異的特徴の存在または不在、および領域における特異的特徴の数の内少なくとも１つに基づいて決定される、方法。
【請求項１２】
請求項１１に記載の方法において、特異的特徴が、前記ディープ・ニューラル・ネットワークのアプリケーション・シナリオにおいて関心のある特徴を含む、方法。
【請求項１３】
請求項１１または１２に記載の方法において、領域における特異的特徴の存在または不在にしたがって領域の各々の量子化刻みを決定するステップが、
前記領域における前記特異的特徴の存在に応答して、第１量子化刻みを前記領域に割り当てるステップと、
前記領域における前記特異的特徴の不在に応答して、第２量子化刻みを前記領域に割り当てるステップと、
を含み、前記第１量子化刻みが、前記第２量子化刻みよりも小さい、方法。
【請求項１４】
請求項１１または１２に記載の方法において、前記領域における前記特異的特徴の数にしたがって前記領域の各々の量子化刻みを決定するステップが、
前記領域における前記特異的特徴の数が、予め設定された閾値よりも多いことに応答して、第３量子化刻みを前記領域に割り当てるステップと、
前記領域における前記特異的特徴の数が前記所定の閾値以下であることに応答して、第４量子化刻みを前記領域に割り当てるステップと、
を含み、前記第３量子化刻みが、前記第４量子化刻みよりも小さい、方法。
【請求項１５】
請求項１〜１４のいずれか一項に記載の方法において、前記ディープ・ニューラル・ネットワークが、物体認識のために、画像および／またはビデオ・データを処理するように構成される、方法。
【請求項１６】
チップであって、
パラメータ記憶空間および特徴マップ記憶空間を含むメモリであって、前記パラメータ記憶空間が、ディープ・ニューラル・ネットワークのパラメータを格納するように構成され、前記特徴マップ記憶空間が、前記ディープ・ニューラル・ネットワークの特徴マップを格納するように構成される、メモリと、
前記メモリと協働して、請求項１〜１５のいずれか一項に記載の方法を実行するように構成されたディープ・ニューラル・ネットワーク・エンジンと、
を備える、チップ。
【請求項１７】
請求項１６に記載のチップにおいて、前記チップが、人工知能ビジョン・チップを含む、チップ。
【請求項１８】
電子デバイスであって、
画像および／またはビデオ・データをキャプチャするように構成された撮像センサと、
請求項１６または１７に記載のチップであって、ディープ・ニューラル・ネットワークを使用して、前記キャプチャされた画像および／またはビデオ・データを、物体の認識のために処理するように構成される、チップと、
を含む、電子デバイス。
【請求項１９】
電子デバイスであって、
プロセッサと、
プログラムを格納するメモリと、
を含み、前記プログラムが命令を含み、前記プロセッサによって前記命令が実行されると、請求項１〜１５のいずれか一項に記載の方法を前記電子デバイスに実行させる、電子デバイス。
【請求項２０】
プログラムを格納するコンピュータ読み取り可能記憶媒体であって、前記プログラムが命令を含み、プロセッサによって前記命令が実行されると、請求項１〜１５のいずれか一項に記載の方法を前記プロセッサに実行させる、コンピュータ読み取り可能記憶媒体。
【国際調査報告】
2021535689.tif 000014
2021535689.tif 000015
2021535689.tif 000016
2021535689.tif 000017