(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-28
(45)【発行日】2024-04-05
(54)【発明の名称】活性スパース化を用いたニューラルネットワーク加速・埋め込み圧縮システム及び方法
(51)【国際特許分類】
G06N 3/082 20230101AFI20240329BHJP
G06N 3/084 20230101ALI20240329BHJP
【FI】
G06N3/082
G06N3/084
(21)【出願番号】P 2021520283
(86)(22)【出願日】2019-06-21
(86)【国際出願番号】 US2019038422
(87)【国際公開番号】W WO2019246491
(87)【国際公開日】2019-12-26
【審査請求日】2022-06-15
(32)【優先日】2019-06-20
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-06-22
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520503407
【氏名又は名称】モフェット エーアイ,インコーポレイテッド
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】ヤン,エンスー
(72)【発明者】
【氏名】ワン,ウェイ
【審査官】児玉 崇晶
(56)【参考文献】
【文献】Zhuang Liu et al.,Learning Efficient Convolutional Networks through Network Slimming,2017 IEEE International Conference on Computer Vision,2017年10月29日,pp.2755-2763
【文献】Song Han, Jeff Pool, John Tran, William J. Dally,Learning both Weights and Connections for Efficient Neural Networks,Proceedings of the 28th International Conference on Neural Information Processing Systems - Volume 1,2015年12月07日,pp.1-9
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/082
G06N 3/084
(57)【特許請求の範囲】
【請求項1】
ディープニューラルネットワーク(DNN)推論の計算コストを削減する方法であって、
(a)N個の入力サンプルと対応する予想出力とを有する特定のタスクに基づいて、損失関数を決定することであって、前記損失関数は、ディープニューラルネットワークの予測性能を測定する、ことと、
(b)ディープニューラルネットワーク計算グラフと、関連付けられたパラメータ値とを有する、最初のディープニューラルネットワークを検索することであって、前記ディープニューラルネットワークは、複数のレイヤーにモジュール化され、各レイヤーは、1つ以上の前のレイヤーの出力を入力データとして受け取り、新しい出力セットを計算する、ことと、
(c)前記入力サンプル上の前記ディープニューラルネットワークの全てのニューロンによって形成されるニューロン活性行列の活性化レベルを測定する活性化正則化器で前記損失関数を拡張することであって、これにより、前記ディープニューラルネットワークにおける活性ニューロンが最小化されるときに、活性ニューロンの数をスパース化する、ことと、
(d)活性ニューロンの数が収束するまで、前記ディープニューラルネットワークの活性ニューロンの数を繰り返しスパース化することであって、サンプルの数に等しい前記行列の第1の次元と、ニューロンの数に等しい前記行列の第2の次元と、前記ニューロン活性行列における、活性化ニューロンを示す非ゼロ値とを有する前記ニューロン活性行列にわたって、前記損失関数からの一つ以上の入力サンプルに応じて、活性ニューロンの数は、コンプレッサにより減少する、ことと、
(e)活性スパース化ディープニューラルネットワークを生成及び出力することと、
を含む方法。
【請求項2】
ディープニューラルネットワーク(DNN)推論の計算コストを削減する方法であって、
(a)特定のタスクに基づき、ディープニューラルネットワークの予測性能を測定できる損失関数を決定することと、
(b)ディープニューラルネットワーク計算グラフと、関連付けられたパラメータ値とを有する、最初のディープニューラルネットワークを検索することと、
(c)スパース化率が収束するまで、ディープニューラルネットワークの活性ニューロンの数を繰り返しスパース化することと、
(d)活性スパース化ディープニューラルネットワークを生成/出力することと、
を含み、
前記
スパース化は、元の活性化関数をスパース化誘発活性化関数の新規セットで置き換え、目的関数を形成することによって前記損失関数を増大させることを含む、方法。
【請求項3】
ディープニューラルネットワーク(DNN)推論の計算コストを削減する方法であって、
(a)特定のタスクに基づき、ディープニューラルネットワークの予測性能を測定できる損失関数を決定することと、
(b)ディープニューラルネットワーク計算グラフと、関連付けられたパラメータ値とを有する、最初のディープニューラルネットワークを検索することと、
(c)スパース化率が収束するまで、ディープニューラルネットワークの活性ニューロンの数を繰り返しスパース化することと、
(d)活性スパース化ディープニューラルネットワークを生成/出力することと、
を含み、
前記
スパース化は、前記損失関数を1つ以上の活性化正則化で拡張し、目的関数を形成することを含む、方法。
【請求項4】
前記
スパース化は、拡張された活性化正則化を伴う誤差逆伝播法によって目的関数の勾配を評価することを含む、請求項3に記載の方法。
【請求項5】
前記
スパース化は、スパース化誘発活性化関数を用いた誤差逆伝播法によって目的関数の勾配を評価することを含む、請求項3に記載の方法。
【請求項6】
前記
スパース化は、勾配に基づいてディープニューラルネットワークに関連付けられた1つ以上のパラメータを繰り返し調整することを含む、請求項4又は5に記載の方法。
【請求項7】
前記
スパース化は、スパース性率の変化が所定の閾値より小さくなるか否かをチェックして、ディープニューラルネットワークが収束する否かを判定することを含む、請求項6に記載の方法。
【請求項8】
前記特定のタスクはトレーニングデータセットを含む、請求項
2又は3に記載の方法。
【請求項9】
最後のレイヤーにおけるディープニューラルネットワークの活性ニューロンの数を減少させ、ディープニューラルネットワークにより生成されたベクトルの圧縮表現を得る、請求項
2又は3に記載の方法。
【請求項10】
活性化コンプレッサであって、
複数のニューロンの活性化値を計算し、予測を計算するように構成されたネットワークモデルであって、前記ネットワークモデルは、ディープニューラルネットワーク(DNN)をパラメータ化する変数の集合を含み、前記ディープニューラルネットワークは複数のレイヤーにモジュール化され、各レイヤーは、1つ以上の前のレイヤーの出力を入力データとして受け取り、新しい出力セットを計算する、ネットワークモデルと、
前記ネットワークモデルに通信可能に連結され、予測とグラウンドトルス解答との不一致を測定する最初の罰則値を計算するように構成された損失関数モジュールと、
前記ネットワークモデルに通信可能に連結され、前記ネットワークモデルにおける活性ニューロンの数をスパース化できるニューロンを最小化することにより、前記ネットワークモデルのニューロン全ての活性化レベルを測定する第2の罰則値を計算するように構成された、活性化正則化器と、
前記ネットワークモデルに通信可能に連結され、複数のデータソースからディープニューラルネットワークの入力データを取得するパイプラインを含む、データ読み取りモジュールと、
前記損失関数モジュール及び前記活性化正則化器に通信可能に連結され、前記ネットワークモデルの変数集合の値を調整し、前記損失関数モジュールと前記活性化正則化器の目的関数を減少させるように構成されたオプティマイザと、を含む、活性化コンプレッサ。
【請求項11】
前記ニューロンは、各レイヤーの1つ以上の出力を含む、請求項10に記載の活性化コンプレッサ。
【請求項12】
前記予測は、
最後のレイヤーの1つ以上の出力を含む、請求項10に記載の活性化コンプレッサ。
【請求項13】
前記損失関数モジュールは、前記予測に対して罰則値の導関数を計算する、請求項10に記載の活性化コンプレッサ。
【請求項14】
前記損失関数モジュールは、下記タスク依存性損失関数表現を含み、
【請求項15】
前記活性化正則化器は、前記
ディープニューラルネットワークにおける活性ニューロンの数をスパース化できるニューロンを最小化することにより、前記
ディープニューラルネットワークのニューロン全ての活性化レベルを測定する
導関数を計算する、請求項10に記載の活性化コンプレッサ。
【請求項16】
前記活性化正則化器は、前記活性化の値を直接正則化する、請求項10に記載の活性化コンプレッサ。
【請求項17】
前記活性化正則化器は、
下記の式で表されるように、活性化の値を直接正則化し、
【請求項18】
前記活性化正則化器は、各レイヤーの活性化のスパース化レベルを制御する複数のパラメータを正則化する、請求項10に記載の活性化コンプレッサ。
【請求項19】
前記活性化正則化器は、活性化のスパース化レベルを制御するパラメータを有する活性化関数と一緒に使用され、前記活性化関数は、
のように表され、最大値を持つ
top
r
要素のみを保ち、残りが零になることを抑制する、請求項18に記載の活性化コンプレッサ。
【請求項20】
前記データ読み取りモジュールは、複数のデータソースから前記ディープニューラルネットワークの入力データを取得するためのパイプラインを含み、前記パイプラインには、少なくとも1つのトリミング、サブサンプリング、アップサンプリング、バッチ処理、ホワイトニング、正規化が含まれる、請求項18に記載の活性化コンプレッサ。
【請求項21】
前記
オプティマイザは、前記損失関数と前記活性化正則化器を含む目的関数を減少させるために、前記ネットワークモデル内の変数の値を調整するように構成される、請求項18に記載の活性化コンプレッサ。
【請求項22】
前記入力データは、画像、音声、ビデオ、テキストのうち少なくとも1つである、請求項18に記載の活性化コンプレッサ。
【請求項23】
ディープニューラルネットワーク(DNN)の効率的な計算方法であって、
(a)複数のニューロンの活性化値を計算し、予測を計算するネットワークモデルであって、前記ネットワークモデルはディープニューラルネットワーク(DNN)をパラメータ化する変数の集合を含み、前記ディープニューラルネットワークは複数のレイヤーにモジュール化され、各レイヤーは、1つ以上の前の層の出力を入力データとして受け取り、新しい出力セットを計算する、ネットワークモデルを用意することと、
(b)ネットワークモデルとデータリーダを介した誤差逆伝播法による目的関数の勾配を評価することと、
(c)オプティマイザにより、前記ネットワークモデルにおける変数集合の値を調整して目的関数を減少させることで、前記勾配に基づいてDNNパラメータを更新することと、
(d)オプティマイザにより、目的の変化又は勾配の度が、所定の閾値に対して十分に小さいか否かを判定し、目的が収束したことを示すことと、を含み、
前記目的が収束していない場合は、ステップ(b)と(c)を繰り返し、
前記目的が収束すると、スパース化されたディープニューラルネットワークで出力を生成する、方法。
【請求項24】
【請求項25】
前記
勾配を評価することは、前記
ネットワークモデルに前処理パイプラインによって提供された入力データを用いて、全てのレイヤー{X
(j)}
j=1…J(462)の活性化値を計算するように要求することを含む、請求項24に記載の方法。
【請求項26】
【請求項27】
前記
DNNパラメータを更新することは、前記ネットワークモデルに、入力前処理パイプラインから前記ネットワークモデルに提供された入力データを用いて、予測(出力)レイヤーX
(J)の値を計算し、前記損失関数モジュールに対するラベルを補正するように要求することを含む、請求項26に記載の方法。
【請求項28】
前記入力データは、画像、音声、ビデオ、テキストのうち少なくとも1つである、請求項23に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般的には人工知能に関し、より具体的には、ディープニューラルネットワークのニューロンの活性化と、演算の数を減らした、高速化計算方法に関する。
【背景技術】
【0002】
本願は、本願に援用されている、2019年6月20日付で出願された米国特許出願第16/446,938号「活性スパース化を用いたニューラルネットワーク加速・埋め込み圧縮システム及び方法」と、2018年6月22日付で出願された米国特許出願第62/688,891号「活性スパース化によるニューラルネットワーク加速及び埋め込み圧縮システム」に対して優先権を主張する。
【0003】
ディープニューラルネットワーク(DNN)は、画像、ビデオ、音声、テキストなどの低レベルのデータから高レベルの情報を抽出するために、人工知能(AI)の分野で最も広く使用されている手法である。但し、DNNの計算コストが高いため、エネルギー消費、記憶スペース、遅延許容度の予算が厳しいアプリケーション、特に携帯電話や監視カメラなどのエッジデバイスには適用できない。
【0004】
DNNの計算コストは、さまざまなソースから導き出される。まず、DNNモデルパラメータは通常、数百万や数千万の桁であるため、膨大な記憶コストが発生し、メモリ階層内のより小型且つ高速な記憶デバイスにはモデルパラメータを配置することができない。更に、DNNの計算グラフ内のニューロンの数は、膨大なメモリ空間を消費し、通常、実行時に数十億の演算を必要とする。最後に、顔比較エンジンなどのニューラルネットワークによって生成されたベクトル表現に基づく検索エンジンは、通常、従来のテキストベースの検索エンジンよりもはるかに計算コストが高くなるが、これは一部、DNNによって生成された高次元の緻密ベクトル表現(埋め込み)に起因する。
【0005】
近年の研究は、DNN推論の計算コストを削減することに重点を置いている。但し、従来のアプローチの一部は、(i)DNNフィルタの非零パラメータ(ニューロン間の接続)の数を減らすこと、(ii)ニューロンのチャネルやフィルタの列/行など、ネッ
トワークの一部をトリミングすること、(iii)パラメータとニューロンの値の範囲を量子化して、値を表すビット数を減らすこととを含む、 DNNモデルのトリミングに集中している。
【発明の概要】
【発明が解決しようとする課題】
【0006】
従って、高い計算強度を低減する、より効率的なDNNモデルを提供する方法及びシステムの開発が望まれる。
【課題を解決するための手段】
【0007】
本開示の実施形態は、上記のアプローチを補完する技術、つまり、ニューラルネットワークをトレーニング(又は微調整)して、DNN内のニューロンの活性化を阻止して、推論中に異なる入力データで実行しても(異なる)ニューロンの相当の部分が活性化されないようにする、方法、コンピュータプログラム製品、コンピュータシステムを対象とする。各入力データはニューロンのごく一部を活性化するため、非活性化ニューロンの数に比例し、推論中に必要な演算の数や、各入力データに対してDNNにより生成されるベクトル表現(埋め込み)に必要なストレージも削減される。
【0008】
大まかに言えば、ディープニューラルネットワーク(DNN)推論の計算コストを削減する方法は、特定のタスクに基づき、ディープニューラルネットワークの予測性能を測定できる損失関数を決定することと、ディープニューラルネットワーク計算グラフと、関連付けられたパラメータ値とを有する、最初のディープニューラルネットワークを検索することと、スパース化率が収束するまで、ディープニューラルネットワークの活性ニューロンの数を繰り返しスパース化することと、活性スパース化ディープニューラルネットワークを生成/出力することと、を含む。
【図面の簡単な説明】
【0009】
【
図1】本開示による活性化コンプレッサの全体的なソフトウェアアーキテクチャを示すシステム図である。
【
図2】本開示による活性化コンプレッサの入力及び出力を示すフロー図である。
【
図3】本開示による活性化コンプレッサの一実施形態を示すフロー図である。
【
図4】本開示による活性化コンプレッサの実施形態に用いられる複数のソフトウェアモジュール間の相互作用を示すシーケンス図である。
【
図5】本開示による活性化コンプレッサシステムの入力及び出力を示すブロック図である。
【
図6-9】本開示による活性化コンプレッサシステムの商用アプリケーションを示す図である。
【
図10】本開示の方法論を実行するためのコンピュータ実行可能命令がインストールされ、本開示に従って実行され得るコンピュータデバイスの例を示すブロック図である。
【発明を実施するための形態】
【0010】
本開示の構造及び方法を、下記に詳しく説明するにおいて詳細に開示される。この説明は、開示を限定するためのものではない。本開示は、特許請求の範囲によって定義される。本開示の実施形態、特徴、態様、利点については、下記の説明、添付の特許請求の範囲、添付の図面から理解できるはずである。
特定の実施形態と、下記の図面を参照として、本開示を説明する。
【0011】
本開示の構造的実施形態及び方法を、
図1~
図10を参照して説明する。本開示は具体的な実施形態に限られず、他の特徴、要素、方法、実施形態を以って本開示を実施し得る。様々な実施形態における同様の要素は、通常、同様の参照番号をつけるものとする。
【0012】
下記の定義は、本明細書に記載されている要素やステップに適用される。これらの用語も同様に拡張できる。
【0013】
「加速」は、DNN関数の計算に必要な算術演算の数が減るようにDNNを変更することである。
【0014】
「活性化コンプレッサ」は、DNNを入力として取り込み、スパース化されたDNNを出力するソフトウェアシステムである。スパース化されたDNNは、DNNのパラメータを方向(勾配)に向けて繰り返し調整し、損失関数と活性化正則化の両方を減少させることで得られる。
【0015】
「活性化正則化器」は、特定のトレーニングデータセットに関してDNNの活性化スパース化レベルを測定する関数である。DNNがまばら(スパース)であるほど、正則化の値は低くなる。
【0016】
「ディープニューラルネットワーク(DNN)」は、初等関数の複数のレイヤーで構成される複合関数である。各関数は前のレイヤーの出力を入力として受け取り、新しい出力のセットを計算する。各レイヤーの出力は「ニューロン」と呼ばれる。ニューロンは零以外の値であれば「活性化」し、そうでなければ「非活性化」する。
【0017】
「損失関数」は、特定のトレーニングデータセットに関して、DNNが特定のタスクでどれくらいうまく機能するかを測定する関数である。DNNのパフォーマンスが優れているほど、損失関数の値は低くなる。
【0018】
「スパース化」は、DNNをトレーニングする(つまり、DNNのパラメータを調整する)方法論であり、「活性化されたニューロン」の数がニューロンの総数より大幅に少なくなる(例えば、少なくとも半分未満、通常は4分の1未満)。
【0019】
図1は、活性化コンプレッサ100の全体的なソフトウェアアーキテクチャを示すシステム図である。活性化コンプレッサ100は、ネットワークモデルモジュール110、損失関数モジュール(又は「損失関数」)120、活性化正則化モジュール(又は「活性化正則化器」)130、データ読み取りモジュール(又は「データリーダ」)140、オプティマイザモジュール(又は「オプティマイザ」)150、コンポーザモジュール(又は「コンポーザ」)160を含む。ネットワークモデルモジュール110は、初等演算(つまり、数値関数)やそれぞれの導関数の集合を含み、初等関数の合成による複素関数(すなわち、DNN)を含む。更に、ネットワークモデルモジュール110は、複素関数をパラメータ化する変数の集合を含む。複素関数はいくつかのレイヤーモジュール化され、各レイヤーは前のレイヤーの出力を入力として受け取り、新しい出力のセットを計算する。ネットワークモデルモジュール110は、「ニューロン」の活性化値(つまり、各レイヤーの出力)を計算し、更に、予測の計算(つまり、最後のレイヤーの出力)を行う。正式には、X
(0):N×D
1
(0)…×D
P
(0)×K
0をNがサンプル数(又はバッチサイズ)である入力テンソルとし、D
1
(0)…D
P
(0),K
0を信号の次元とする。DNNは通常、複数のレイヤーで構成される。ここで、j=1…Jをレイヤーインデックスとする。DNNは、下記の式(1)に示されているように、一連の関数の合成として表すことができる。
或いは、一般的に使用される演算、例えば「最大プーリング」、「ゼロパーディング」、「再形成」なども関数として用いられる。活性化コンプレッサ100のソフトウェアアーキテクチャでは、適用可能な関数やそれらの数値導関数は、
図1に図示されているように、ネットワークモデルモジュール110で具現化される。
【0020】
損失関数モジュール120は、「予測」とグラウンドトルス解答との不一致を測定する罰則値を定義し、計算する。損失関数モジュール120は更に、「予測」に関する罰則値の導関数を計算する。正式には、X
(J):N×KをDNNの最後のレイヤーの出力とし、目的タスクY:N×Kのラベルに関連する各サンプルのKスコア(つまり、ロジット)を提供する。タスク依存性損失関数、つまり
【0021】
活性化正則化器130は、ネットワークにおける活性ニューロンの数をスパース化できるニューロンを最小化することにより、ネットワークのニューロン全ての活性化レベルを測定する罰則値(及びその導関数)を定義し、計算すように構成されている。活性化正則化器130は、2つの実施形態として具現できる。活性化正則化器130の第1の実施形態は、活性化の値を直接正則化する。活性化正則化器130の第2の実施形態は、各レイヤーの活性化のスパース化レベルを制御するパラメータを正則化する。
【0022】
【0023】
【0024】
データ読み取りモジュール140は、データソースからDNNの入力データを取得するためのパイプラインを含む。パイプラインには、トリミング、サブサンプリング(或いはアップサンプリング)、バッチ処理、ホワイトニング(正規化)が含まれる。オプティマイザモジュール150は、損失関数120及び活性化正則化器130を含む目的関数を減少させるために、ネットワークモデル内の変数の値を調整するように構成される。一実施形態では、調整は、変数につき、損失関数120及び活性化正則化器130の導関数によって決められる。コンポーザ160は、他の成分間の相互作用を計画・編成し、損失関数120と活性化正則化器130との相対強度を決定するソフトウェアの高レベル成分である。
【0025】
図2は、圧縮方法200の入力及び出力を示すフロー図である。手順には2つの入力がある。(i)ステップ210において、特定の損失関数の特定のタスクにおけるDNNの予測性能を測定し改善する、DNNの補正入出力ペアのトレーニングデータセットを、(ii)ステップ220において、事前にトレーニングされたパラメータ値がある場
合とない場合のDNNのアーキテクチャ(計算グラフ)を入力する。ステップ230(「圧縮プロセス」)において、活性化コンプレッサ100は、収束するまでDNNを繰り返しスパース化する。ステップ240において、圧縮方法200は、同アーキテクチャであるがパラメータ値が異なる圧縮DNNの出力を生成する。圧縮方法200は、dnnを圧縮してスパース活性化を有するようにする。つまり、各レイヤーX
(j)の非零要素(活性化ニューロン)の数は小さい。
【0026】
L(X
(J))項は損失関数(DNNの最後のレイヤーの出力のみに依存)を表し、R(X
(j))項は、j番目のレイヤーの出力に対してかけられた活性化正則化器130を表す。次に、圧縮プロセス230は、ステップ320において、ネットワークモデルモジュール110及びデーリーダ140を介した誤差逆伝播によって目的の勾配を評価する。圧縮プロセス230は、全てのパラメータに対するF(W)の導関数を計算し、ステップ330におけるパラメータ更新は、得られた勾配とオプティマイザによって定められた更新方程式に従って、の値を変更する。ステップ340において、活性化コンプレッサ100は、目的が収束しているか否かを判定する。目的が収束していない場合、活性化コンプレッサ100は、ステップ320における勾配評価及びステップ330におけるパラメータを処理することによって、DNNを繰り返しスパース化し続ける。目的が収束すると、活性化コンプレッサ100はプロセスをステップ240に戻す。
【0027】
【0028】
【0029】
[0021]に記載されている活性化正則化器の第1の実施形態を参照すると、目的関数F(W)の勾配評価は、拡張誤差逆伝播法の形を取る。ここでは、DNNX
(J)の出力がフォワードパスを介して計算される。
【0030】
【0031】
ステップ481の手順「変数の更新」は、誤差逆伝播プロセスから計算された勾配に従ってDNNパラメータの値がどのように更新されるかを決定する最適化アルゴリズムを実装する。当該部分は、一実施形態では、確率的勾配降下法(SGD)、確率的分散減少勾配法(SVRG)、適応勾配法(Adagrad)、二乗平均平方根伝搬(RMSprop)、適応モーメント推定法(ADAM)など、パラメータWの更新方向を決定するために勾配(および反復中のその履歴)のみを使用する、標準的な一次最適化アルゴリズムを採用している。
【0032】
図5は、各レイヤーの入力としての細分化された活性化が、DNNの効率をどのように著しく改善できるかを示す
図500である。具体的には、畳み込みを計算する一実施形態では、活性化されたニューロンにアクセスし、非ゼロ重みのニューロン間の接続エッジにアクセスする、一般にDNNで最もコストのかかる演算である。本開示の方法論は、通常、ニューロン間の非ゼロ接続(フィルタの重み)をスパース化する他の技術と組み合わせることができる。
【0033】
以下の例では、ニューロンの活性化と(非ゼロ重みの)ニューロン接続の両方がスパース化されていると想定した。例として、2次元の畳み込みを用いる。当業者であれば、本開示の趣旨から逸脱することなく、二次元畳み込みを多次元畳み込みに拡張できることを理解するはずである。入力ニューロン間の畳み込みX:D
1×D
2×K
0と、フィルタW:K
0×C
1×C
2×K
1からは、下記と関連する3DテンソルZ:(D
1-C
1+1)×(D
2-C2+1)×K
1が得られる。
【0034】
上記の手順で使用される算術演算の数は、W及びX両方の元の形状の代わりに、非零要素の数に比例する。従って、
図4で示したスパース化手順により、計算の負荷を大幅に減らすことができる。DNNの完全接続レイヤーは、畳み込みの特殊なケースとしてキャストできるため、上記の手順は完全接続レイヤーにも使用できる。
【0035】
推論速度の向上に加えて、スパース化はDNNによって生成された埋め込み(つまり、最後の数レイヤーのニューロンの活性化)も圧縮する。DNNによって生成された埋め込みは、多くの場合、画像、音声、ビデオ、テキストなどの生入力データの意味ベクトル表現として機能する。画像を入力データの例として取り上げると、2つの画像間の類似性は、DNNによって生成された2つの画像の埋め込み間の内積によって測定できる。次いで、画像の意味検索エンジンを、これらの埋め込みに基づいて構築することができる。{x1,x2,…,xN}をデータベース内の画像の集合として、{z1,z2,…,zN}をDNNによって生成された画像の埋め込みとする。検索エンジンは次の演算を実行する。(i)クエリ画像xqが与えられた場合、DNNによってその埋め込みzqを生成する。(ii)画像のデータベースののうち、埋め込み{zr1,zr2,…,zrm}が最も高い内積を有する画像のリストを、zqに戻す。このアプリケーションでは、活性化スパース化(100)に2つの利点がある。まず、活性化をスパース化することで、これらの埋め込みを保存するために必要なスペースを大幅に削減できる。更に、類似性計算は、[0031]に記載されている計算手順を用いて著しく高速化することができる。
【0036】
図6、
図7、
図8、
図9は、活性化コンプレッサ100の商用アプリケーションの4つの例を示しており、本開示の方法論は、(i)顔認識、(ii)画像翻訳、(iii)言語翻訳、(iv)音声認識の推論効率を高める。
【0037】
図6は、顔認識のアプリケーションに本開示を導入した場合の
図510であり、活性化コンプレッサ100は、DNNを介して顔の意味埋め込みを生成するために必要な算術演算の数を減らす。このような2つの顔の埋め込みの類似性により、2つの画像に同じ人物が含まれている否かを区別できる。
【0038】
図7は、画像翻訳のアプリケーションに本開示を導入した場合の
図520であり、DNNは、入力として画像を取り込んで、異なるスタイルの画像(例えば、テクスチャの変更、照明条件など)を出力する。活性化コンプレッサ100を用いて、画像のスタイルを翻訳するためにDNNが必要とする算術演算の数を減らすことができる。
【0039】
図8は、言語認識のアプリケーションに本開示を導入した場合の
図530であり、リカレントニューラルネットワーク(RNN、特殊なタイプのDNN)は、入力として英語の単語のトークンを取り、漢字を出力する。活性化コンプレッサ100は、RNNのエンコーダ部分とデコーダ部分の両方において、活性化ニューロンの数、従って算術演算の数を減らす。
【0040】
図9は、音声認識のためにトレーニングされたDNNへの活性化コンプレッサ100の適用を示す
図540であり、DNNは、音声波信号を入力として受け取り、音声信号に含まれる人間の言語の単語を出力する。
【0041】
既に示唆したように、本発明に関連して論じられた様々なコンピュータベースのデバイスは、同様の属性を共有し得る。
図10は、コンピュータシステム600の例示的な形態を示しており、命令のセットを実行して、コンピュータシステムに、本明細書に開示された方法論のいずれか1つ以上を実行させることができる。コンピュータデバイス600は、本明細書で説明するクライアント、サーバ、又はネットワーク仲介デバイスの一部又は全てを表してもよい。更に、単一のマシンのみを示しているが、「マシン」とは、本明細書で論じられる方法論のいずれか1つ以上を実行するための命令のセット(又は複数のセット)を個別に、又は共同で実行するマシンの集合を含むと解釈すべきである。例示的なコンピュータシステム600は、プロセッサ602(例えば、中央処理装置(CPU)、グラフィックス処理装置(GPU)、又はその両方)、メインメモリ604、スタティックメモリ606を含み、バス608を介して互いに通信を行う。コンピュータシステム600は、ビデオディスプレイユニット610(例えば、液晶ディスプレイ(LDC))を更に含み得る。コンピュータシステム600はまた、英数字入力デバイス612(例えば、キーボード)、カーソル制御デバイス614(例えば、マウス)、ディスク駆動ユニット616、信号生成デバイス618(例えば、スピーカー)、ネットワークインターフェースデバイス624を備える。
【0042】
ディスクドライブユニット616は、本明細書に記載の方法論又は機能のいずれか1つ以上を具体化する1つ以上の命令セット(例えば、ソフトウェア622)が格納されている機械可読媒体620を含む。ソフトウェア622はまた、完全に、或いは少なくとも部分的に、メインメモリ604及び/又はプロセッサ602に存在し得る。実行中、コンピュータシステム600、メインメモリ604、プロセッサ602の命令記憶部分もまた、機械可読媒体を構成する。ソフトウェア622は更に、ネットワークインターフェースデバイス624を介してネットワーク626により、送受信されてもよい。
【0043】
機械可読媒体620は、例示的な実施形態では単一の媒体として示されているが、「機械可読媒体」とは、1つ以上の命令セットを格納する単一の媒体、又は複数の媒体(例えば、集中型や分散型データベース、及び/又は関連キャッシュ及びサーバ)を含むものとして捉えるべきである。「機械可読媒体」とは、更に、機械によって実行するための一連の命令を記憶することができ、機械に本発明の方法論のいずれか1つ以上を実行させる任意の有形媒体を含むと解釈すべきである。従って、「機械可読媒体」とは、固体メモリ、光学媒体や磁気媒体を含むが、これらに限定される訳ではないと解釈すべきである。
【0044】
本明細書の詳細な説明の一部は、コンピュータメモリ又は他の記憶装置内のデータに対する演算のアルゴリズムや記号表現を以って記載されている。これらのアルゴリズム的説明や表現は、データ処理技術の当業者がその仕事の詳細を当業者に最も効果的に伝えるために使用する手段である。アルゴリズムは、一般に、望ましい結果につながる処理ブロックの自己無撞着なシーケンスであると考えられている。処理ブロックは、物理量の物理操作を必要とするブロックである。本明細書において、「処理」、「計算」、「演算」、「決定」、「表示」などの用語を用いる議論は、コンピュータシステムのレジスタやメモリの物理量(電子量)として表されるデータを操作し、コンピュータシステムのメモリ、レジスタ、又は他の類似の情報ストレージ、送信デバイス、表示デバイスの物理量として同様に表される他のデータに変換する、コンピュータシステムやそれ類似の電子計算デバイスの動作やびプロセスを指す。
【0045】
本発明は更に、本明細書の演算を実行するための装置に関する。この装置は、必要な目的のために特別に構築されてもよく、或いは、コンピュータに格納されたコンピュータプログラムによって選択的に活性化又は再構成される汎用コンピュータであってもよい。このようなコンピュータプログラムは、フロッピーディスク、光ディスク、CD-ROM、磁気光学ディスクなど任意のタイプのディスク、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能プログラム可能ROM(EPROM)、電気的に消去可能でプログラム可能なROM(EEPROM)、磁気カードまたは光学カード、アプリケーション固有の集積回路(ASIC)、或いは電子命令の保存に適した任意のタイプのメディアを含む(これらに限定される訳ではない)、 コンピュータ可読記憶媒体で、それぞれコンピュータシステムバスに連結されている、記憶媒体に格納することができる。更に、本明細書で記載されるコンピュータ及び/又は他の電子デバイスは、単一のプロセッサを含んでもよく、計算能力を高めるために複数のプロセッサ設計を採用するアーキテクチャであってもよい。
【0046】
更に、「要求」、「クライアント要求」、「要求されたオブジェクト」、「オブジェクト」などは、仲介者やサーバなどのネットワークデバイスからクライアントによって要求された動作、オブジェクト、及び/又は情報を意味し、互換可能である。また、「応答」や「サーバ応答」とは、ネットワークデバイスから返される対応の動作、オブジェクト、及び/又は情報を意味するものであり、互換可能である。更に、「通信」や「クライアント通信」とは、要求を行うクライアントと、当該要求に応答するネットワークデバイスのプロセス全体を意味し、互換可能である。
【0047】
上記のシステム、デバイス、又は装置の態様のいずれかに関して、システムの機能を実行するためのステップを含む方法の態様を、更に提供してもよい。追加的に、或いは代替的に、任意の特徴を、他の態様に関して本明細書に記載されている特徴のいずれか1つ以上に基づいて見出されてもよい。
【0048】
本開示は、可能な実施形態を、特に詳細に説明した。当業者は、本開示が他の実施形態として実施され得ることを理解するはずである。構成要素の名称、用語に対する大文字の使用、属性、データ構造、その他のプログラミングや構造的側面は、必須や重要なものではなく、開示、又はその機能を実装するメカニズムは、異なる名称、形式、プロトコルを有してもよい。システムは、説明されているように、ハードウェアとソフトウェアの組み合わせにより、或いはハードウェア要素のみで、或いはソフトウェア要素のみで実装されてもよい。本明細書において説明する様々なシステム構成要素における機能の分割は、単なる例示であり、必須ではない。単一のシステム構成要素によって実行される機能を、複数の構成要素によって実行してもよく、逆に、複数の構成要素によって実行される機能を、単一の構成要素によって実行してもよい。
【0049】
様々な実施形態において、本開示は、単独で、或いは任意の組み合わせで、上記の技術を実行するためのシステムや方法として実装され得る。本明細書に記載されている特定の特徴の組み合わせは、その組み合わせが明示的に記載されていない場合でも提供される。別の実施形態では、本開示は、計算デバイスや他の電子デバイスにおけるプロセッサに上記の技術を実行させるための、コンピュータ可読記憶媒体及び媒体上に符号化されたコンピュータプログラムコードを含むコンピュータプログラム製品として実装されることもできる。
【0050】
本明細書において「一実施形態」又は「実施形態」を言及する場合、実施形態に関して説明される特定の特徴、構造、又は特性が、本開示の少なくとも1つの実施形態に含まれることを意味する。本明細書に時折用いられる「一実施形態において」という出現は、必ずしも全てが同じ実施形態を指す訳ではない。
【0051】
但し、これら、又は類似の用語は全て、適切な物理量に関連付けられ、これらの量に適用される便利な表題に過ぎない。以下の説明で明記されない限り、本明細書において、「処理」、「計算」、「演算」、「表示」、「決定」などの表現を用いる議論は、コンピュータシステムのレジスタやメモリの物理量(電子量)として表されるデータを操作し、コンピュータシステムのメモリ、レジスタ、又は他の類似の情報ストレージ、送信デバイス、表示デバイスの物理量として同様に表される他のデータに変換する、コンピュータシステムやそれ類似の電子計算装置の動作やプロセスを指す。
【0052】
本開示の特定の態様は、アルゴリズムの形で本明細書に記載されているプロセスステップ及び命令を含む。本開示のプロセスステップ及び命令は、ソフトウェア、ファームウェア、及び/又はハードウェアで具体化することができ、ソフトウェアで具体化する場合、ダウンロードして、様々な運営システムで用いられるプラットフォームに置き、そこから操作することができる。
【0053】
本明細書に提示されるアルゴリズム及び表示は、特定のコンピュータ、仮想化システム、或いは他の装置に本質的に関連していない。本明細書の教示に従って、様々な汎用システムをプログラムと共に使用することもでき、或いは、システムは、必要な方法ステップを実行するために必要なより特殊な装置を構築してもよい。これらの様々なシステムに必要な構造は、本明細書における説明から明らかになる。更に、本開示は、特定のプログラミング言語を使用するものではない。様々なプログラミング言語を用いて、本明細書に記載の本開示の教示を実施することができ、特定の言語を使用したとしても、本開示の有効化や最良のモードの開示のみを目的としていることを理解されたい。
【0054】
様々な実施形態では、本開示は、コンピュータシステム、計算デバイス、又は他の電子デバイス、或いはそれらの任意の組み合わせ、又は複数のそれらを制御するためのソフトウェア、ハードウェア、及び/又は他の要素として実装することができる。そのような電子デバイスは、例えば、プロセッサ、入力デバイス(キーボード、マウス、タッチパッド、トラックパッド、ジョイスティック、トラックボール、マイクロフォン、及び/又はそれらの任意の組み合わせなど)、出力デバイス(スクリーン、スピーカーなど)、メモリ、長期ストレージ(磁気ストレージ、光ストレージ、及び/又はその他のストレージ)、及び/又は、当技術分野で周知の技術によるネットワーク接続部を含んでもよい。そのような電子デバイスは、携帯型であってもよく、携帯型ではなくともよい。本開示を実施するために使用し得る電子デバイスの例には、携帯電話、携帯情報端末、スマートフォン、キオスク、デスクトップパソコン、ノートブックパソコン、家庭用電子機器、テレビ、セットトップボックスなどが含まれる。本開示を実施するための電子デバイスは、例えば、Apple社(カリフォルニア州クパチーノ)のiOS、Google社(カリフォルニア州マウンテンビュー)のAndroid、Microft社(ワシントン州レドモンド)のMicrosoftWindows10、又は、デバイスでの使用に適合したその他のオペレーティングシステムなどの運営システムを使用してもよい。一部の実施形態では、本開示を実施するための電子デバイスは、例えば、携帯電話ネットワーク、無線ネットワーク、及び/又はインターネットなどのコンピュータネットワークを含む、1つ以上のネットワークを介した通信のための機能を含む。
【0055】
一部の実施形態は、「連結」や「接続」、及びその類似の表現を用いて説明してもよい。これらの用語は、相互の同義語として意図されたものではない。例えば、一部の実施形態は、2つ以上の要素が互いに直接物理的又は電気的に接触していることを「接続」されたという。別の例で、一部の実施形態は、2つ以上の要素が直接物理的又は電気的に接触していることを「連結」されてと表現する。但し、「連結」とは、2つ以上の要素が互いに直接接触していないが、それでも互いに協力し合う、或いは相互作用を交わしていることを意味してもよい。実施形態は、この内容に限定されない。
【0056】
本明細書において、「からなる」、「含む」、「有する」、或いはその類似の用語は、非排他的な包含を指すことを意図している。例えば、要素のリストを含むプロセス、方法、物品、又は装置は、必ずしもそれらの要素のみに限定される訳ではなく、そのようなプロセス、方法、物品、又は装置に明示的にリストされていない、或いはそれらの固有ではない他の要素を含んでもよい。更に、明示的に反対の記載がない限り、「又は」は包括的論理和を指し、排他的論理和ではない。例えば、条件A又はBは、次のいずれかに当たる。Aが真(存在)・Bが偽(不在)、、Aが偽(不在)・Bが真(存在)、或いはAとBの両方が真(存在)である。
【0057】
本明細書において冠詞、つまり「a」又は「an」は、1つ以上と定義される。本明細書において「複数」は、2つ以上と定義される。本明細書において「別の」とは、少なくとも2番目以上があることである。
【0058】
当業者は、本明細書に記載の方法及びシステムを開発する際に追加の説明を必要としないはずであるが、関連技術における標準化された事例を調べることによって、これらの方法及びシステムの容易において役立て得る指針を見つけることができる。
【0059】
本開示は限られた数の実施形態に関して説明されたが、上記の説明から利益を得る当業者は、本明細書に記載される本開示の範囲から逸脱しない限り、他の実施形態が考案され得ることを理解するはずである。本明細書で用いられる言語は、主に読みやすさと、教育目的とを考慮して選択したもので、本発明の主題を描写又は制限するために選ばれていないことに注意されたい。使用される用語は、本明細書と特許請求の範囲とに開示される特定の実施形態に開示を限定するように解釈されてはならないが、本明細書に記載の特許請求の範囲が適用できる全ての方法及びシステムを網羅するものとして解釈すべきである。従って、開示は、開示によって制限されず、その範囲は、下記の請求項により完全に定められる。