(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-07
(45)【発行日】2024-10-16
(54)【発明の名称】ニューラルネットワーク処理装置、ニューラルネットワーク処理方法、及び、プログラム
(51)【国際特許分類】
G06F 17/10 20060101AFI20241008BHJP
【FI】
G06F17/10 A
(21)【出願番号】P 2021079516
(22)【出願日】2021-05-10
(62)【分割の表示】P 2020504046の分割
【原出願日】2021-05-10
【審査請求日】2021-05-10
【審判番号】
【審判請求日】2023-06-27
(73)【特許権者】
【識別番号】517048278
【氏名又は名称】LeapMind株式会社
(74)【代理人】
【識別番号】100098394
【氏名又は名称】山川 茂樹
(72)【発明者】
【氏名】山田 貴登
(72)【発明者】
【氏名】ネバド ビルチェス アントニオ トーマス
【合議体】
【審判長】林 毅
【審判官】大塚 俊範
【審判官】山崎 慎一
(56)【参考文献】
【文献】米国特許出願公開第2016/0179434(US,A1)
【文献】特開2018-147182(JP,A)
【文献】特開2018-142049(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/10
(57)【特許請求の範囲】
【請求項1】
ニューラルネットワークに与えられる
画像データと第1重みとの第1積和演算を含む前記ニューラルネットワークの第1畳み込み演算を行
う演算部と、
前記第1畳み込み演算の第1演算結果が前
記演算部の演算結果
として入力される処理部であり、前記演算結果と、当該演算結果に対して所定の変換および量子化を含む変換-量子化処理を行ったときに得られる処理結果との関係を示すデータを用いて、前記
第1演算結果に応じた前記処理結果を取得し、取得した前記処理結果を
第1処理結果として出
力する処理部と、
を備え、
前記演算部は、前記第1処理結果と第2重みとの第2積和演算を含む前記ニューラルネットワークの第2畳み込み演算を行
い、
前記処理部には、前記第2畳み込み演算の第2演算結果が前記演算部の前記演算結果として入力され、
前記処理部は、前記データを用いて、前記第2演算結果に応じた前記処理結果を取得し、取得した前記処理結果を第2処理結果として出力し、
前記変換-量子化処理に含まれる前記量子化は、前記
画像データよりもビット精度を削減する量子化である
ことを特徴とするニューラルネットワーク処理装置。
【請求項2】
請求項1に記載のニューラルネットワーク処理装置において、
前記画像データは、小数を含む値を含み、
前記変換-量子化処理
の量子化は、
前記所定の変換後の値を、小数を含まない値に
する量子化である
ことを特徴とするニューラルネットワーク処理装置。
【請求項3】
請求項1又は2に記載のニューラルネットワーク処理装置において、
前記データに含まれる前記変換-量子化処理に使用されるパラメータを記憶する記憶部と、
前記ニューラルネットワークの態様に応じて前記パラメータを入れ替える入れ替え部と、をさらに備える
ことを特徴とするニューラルネットワーク処理装置。
【請求項4】
請求項1から3のいずれか1項に記載のニューラルネットワーク処理装置において、
前記処理部は、
前記データに含まれる、
前記演算部の前記演算結果を複数の区間に分割した複数の入力区間と、前記
処理結果とを互いに関連付けたテーブルと、
前記テーブルを用いて
、前記演算部の前記演算結果としての前記第1演算結果又は前記第2演算結果が含まれる入力区間を判定する入力判定部と、
前記テーブルを用いて
、前記入力判定部によ
り判定された入力区間に関連する前記処理結果を取得する出力取得部とを有する
ことを特徴とするニューラルネットワーク処理装置。
【請求項5】
請求項1から3のいずれか1項に記載のニューラルネットワーク処理装置において、
前記処理部は、
前記演算部の前記演算結果としての前記第1演算結果又は前記第2演算結果と前記データに含まれ
る予め設定されている複数の閾値
との比較を行い、前記複数の閾値のうち、前記演算部の前記演算結果を下回る閾値を出力する閾値処理部と、
前記データに含まれる、前記閾値と前記処理結果との関係を示すデータを用いて、前記閾値処理部
から出力された前記閾値に対応する前記処理結果を取得する出力取得部とを有する
ことを特徴とするニューラルネットワーク処理装置。
【請求項6】
請求項5に記載のニューラルネットワーク処理装置において、
前記処理部は、
前記演算部の前記演算結果としての前記第1演算結果又は前記第2演算結果に対して前記処理結果が単調増加するか、または単調減少するかを識別する識別部をさらに有し、
前記閾値処理部は、前記識別部の識別結果に基づいて予め設定されている前記複数の閾値から前記比較に用いる閾値を選択する
ことを特徴とするニューラルネットワーク処理装置。
【請求項7】
請求項1乃至6のいずれか1項に記載のニューラルネットワーク処理装置において、
前記画像データは予め前処理を行った画像データである
ことを特徴とするニューラルネットワーク処理装置。
【請求項8】
請求項1乃至7のいずれか1項に記載のニューラルネットワーク処理装置において、
前記
画像データ、前記第1重み、又は、前記第2重みを外部のサーバーから取得する通信インターフェースをさらに備える
ことを特徴とするニューラルネットワーク処理装置。
【請求項9】
請求項1乃至8のいずれか1項に記載のニューラルネットワーク処理装置において、
前記変換-量子化処理における変換は
、正規化演
算を含む
ことを特徴とするニューラルネットワーク処理装置。
【請求項10】
請求項1乃至
9のいずれか1項に記載のニューラルネットワーク処理装置において、
外部の表示装置へ信号を出力するための出力部をさらに有し、
前記出力部は前記ニューラルネットワーク処理装置における前記ニューラルネットワークの演算結果を前記表示装置に出力する
ことを特徴とするニューラルネットワーク処理装置。
【請求項11】
請求項1から
10のいずれか1項に記載のニューラルネットワーク処理装置において、
前記処理部は、プロセッサ、特定用途向け集積回路、プログラマブル論理デバイス、ディスクリート部品の一つ以上からなる
ことを特徴とするニューラルネットワーク処理装置。
【請求項12】
ニューラルネットワーク処理装置の演算部が、ニューラルネットワークに与えられる
画像データと第1重みとの第1積和演算を含む前記ニューラルネットワークの第1畳み込み演算を行う第1演算ステップと、
前記ニューラルネットワーク処理装置の処理部であって、前記第1畳み込み演算の第1演算結果が前記演算部の演算結果として入力される処理部が、前記演算結果と、当該演算結果に対して所定の変換および量子化を含む変換-量子化処理を行ったときに得られる処理結果との関係を示すデータを用いて、前記
第1演算結果に応じた前記処理結果を取得し、取得した前記処理結果を
第1処理結果として出
力する
第1処理ステップと、
前記演算部が、
前記第1処理結果と第2重みとの第2積和演算を含む前記ニューラルネットワークの第2畳み込み演算を行う第2演算ステップと、
前記第2畳み込み演算の第2演算結果が前記演算部の前記演算結果として入力された前記処理部が、前記データを用いて、前記第2演算結果に応じた前記処理結果を取得し、取得した前記処理結果を第2処理結果として出力する第2処理ステップと、を有し、
前記変換-量子化処理に含まれる前記量子化は、前記
画像データよりもビット精度を削減する量子化である
ことを特徴とするニューラルネットワーク処理方法。
【請求項13】
コンピュータ
を、
ニューラルネットワークに与えられる
画像データと第1重みとの第1積和演算を含む前記ニューラルネットワークの第1畳み込み演算を行う
演算部、及び、
前記第1畳み込み演算の
第1演算結果
が前記演算部の演算結果として入力される処理部であり、前記演算結果と、当該演算結果に対して所定の変換および量子化を含む変換-量子化処理を行ったときに得られる処理結果との関係を示すデータを用いて、前記
第1演算結果に応じた前記処理結果を取得し、取得した前記処理結果を
第1処理結果として出
力する
処理部として機能させ、
前記演算部は、前記第1処理結果と第2重みとの第2積和演算を含む前記ニューラルネットワークの第2畳み込み演算を行い、
前記処理部には、前記第2畳み込み演算の第2演算結果が前記演算部の前記演算結果として入力され、
前記処理部は、前記データを用いて、前記第2演算結果に応じた前記処理結果を取得し、取得した前記処理結果を第2処理結果として出力し、
前記変換-量子化処理に含まれる前記量子化は、前記
画像データよりもビット精度を削減する量子化である
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ニューラルネットワーク処理装置およびニューラルネットワーク処理方法に関する。
【背景技術】
【0002】
近年、画像を複数のカテゴリに分類するためのディープニューラルネットワークとして、畳み込みニューラルネットワーク(Convolutional Neural Network:CNN)が注目されている。CNNは、ディープニューラルネットワークにおいて畳み込み層を有することを特徴とする。畳み込み層では、入力データに対してフィルタを適用する。より詳細には、畳み込み層では、フィルタのウィンドウを一定のストライドでスライドさせて、フィルタの要素と入力データの対応する要素とを乗算し、その和を求める積和演算を行う。
【0003】
図13は、一般的なCNNの信号処理のフローを示す図である。CNNは、入力層、中間層、および出力層を有する(例えば、非特許文献1および非特許文献2参照)。中間層においては、入力信号に重みを掛け合わせる畳み込み演算を行われる。
【0004】
図13に示すように、中間層においては、畳み込み演算の結果に対して、必要に応じてReLU(Rectified Linear Units)による検出処理やBN(Batch Normalization)などの正規化(以下、これらを総称して「変換」ということがある。)が行われる。また、場合によってはプーリング処理が行われる。
【0005】
畳み込み演算を介して抽出された入力信号の特徴は、全結合層からなる分類器にかけられ、分類結果が出力層から出力される。このように、CNNなどのニューラルネットワークにおいては、積和演算および変換演算が繰り返し行われていることがその特徴の1つとして挙げられる。
【0006】
ここで、CNNに用いられる入力データの入力値や重みは、小数点を含む場合があるが、従来のCNNなどのニューラルネットワークの積和演算においては、
図13の「入力信号」、「重み」、および「畳み込み演算」の各値に示すように、演算結果の桁数を確保した形での演算処理が行われている。このように、従来のCNNなどのニューラルネットワークでは、多層で構成される中間層などにおいては、桁数の多い多数の入力値に対し、多数の演算処理が必要となる。
【先行技術文献】
【非特許文献】
【0007】
【文献】K.He,X.Zhang,S.Ren,and J.Sun.Deep residual learning for image recognition.In Proc.of CVPR,2016.(*ResNet)
【文献】麻生英樹 他、「Deep Learning 深層学習」近代科学社、2015年11月
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかし、従来のCNNなどのニューラルネットワークをFPGA(Field Programmable Gate Array)やマイコンなどの組み込み用のハードウェアで実装する場合、計算リソースに制限があるため、桁数の多い多数の入力値に対する多数の演算処理による処理速度の低下が課題となっていた。
【0009】
本発明は、上述した課題を解決するためになされたものであり、組み込み用のハードウェアを使用した場合であってもニューラルネットワークの処理速度の低下を抑制することができるニューラルネットワーク処理装置、およびニューラルネットワーク処理方法を提供することを目的とする。
【課題を解決するための手段】
【0010】
上述した課題を解決するために、本発明に係るニューラルネットワーク処理装置は、ニューラルネットワークに与えられる入力信号を記憶する第1メモリと、前記ニューラルネットワークの重みを記憶する第2メモリと、前記入力信号と前記重みとの積和演算を含む前記ニューラルネットワークの畳み込み演算を行う演算部と、前記演算部による畳み込み演算の演算結果を入力とし、入力された値を予め規定されている条件に基づいて変換し、変換したデータのビット精度を削減して量子化する変換-量子化処理の結果を出力としたとき、前記変換-量子化処理の入力と出力とを互いに関連付けたテーブルを記憶する第3メモリと、前記テーブルを参照して、前記演算部による演算結果に対応する前記変換-量子化処理の出力を取得する処理部とを備えることを特徴とする。
【0011】
上述した課題を解決するために、本発明に係るニューラルネットワーク処理方法は、ニューラルネットワークに与えられる入力信号を第1メモリに記憶する第1ステップと、前記ニューラルネットワークの重みを第2メモリに記憶する第2ステップと、前記入力信号と前記重みとの積和演算を含む前記ニューラルネットワークの畳み込み演算を行う第3ステップと、前記第3ステップでの畳み込み演算の演算結果を入力として、入力された値を予め規定されている条件に基づいて変換し、変換したデータのビット精度を削減して量子化する変換-量子化処理の結果を出力としたとき、前記変換-量子化処理の入力と出力とを互いに関連付けたテーブルを第3メモリに記憶する第4ステップと、前記テーブルを参照して、前記第3ステップでの演算結果に対応する前記変換-量子化処理の出力を取得する第5ステップとを備えることを特徴とする。
【発明の効果】
【0012】
本発明によれば、畳み込み演算の演算結果を予め規定された条件に基づいて変換し、変換したデータのビット精度を削減して量子化する変換-量子化処理の入力と出力とを互いに関連付けたテーブルを参照して、畳み込み演算の演算結果に対応する変換-量子化処理の出力を取得するので、組み込み用のハードウェアを使用した場合であってもニューラルネットワークの処理速度の低下を抑制することができる。
【図面の簡単な説明】
【0013】
【
図1】
図1は、本発明の実施の形態に係るCNN処理装置の機能の概要を説明するブロック図である。
【
図2】
図2は、本発明の実施の形態に係るCNN処理装置のハードウェア構成を示すブロック図である。
【
図3】
図3は、本発明の実施の形態に係るCNN処理方法のフローの概要を説明するための図である。
【
図4】
図4は、第1の実施の形態に係る処理部の機能を説明するブロック図である。
【
図5】
図5は、第1の実施の形態に係るテーブルの構成を説明するための図である。
【
図6】
図6は、第1の実施の形態に係る処理部の機能を説明するための図である。
【
図7】
図7は、第2の実施の形態に係る処理部の機能を説明するブロック図である。
【
図8】
図8は、第2の実施の形態に係るテーブルの構成を説明するための図である。
【
図9】
図9は、第2の実施の形態に係るCNN処理方法のフローを説明するための図である。
【
図10】
図10は、第3の実施の形態に係る処理部の機能を説明するブロック図である。
【
図11】
図11は、第3の実施の形態に係るテーブルの構成を説明するための図である。
【
図12】
図12は、第3の実施の形態に係るCNN処理方法のフローを説明するための図である。
【
図13】
図13は、従来のCNNの演算処理を説明するための図である。
【発明を実施するための形態】
【0014】
以下、本発明の好適な実施の形態について、
図1から
図12を参照して詳細に説明する。
[CNN処理装置の概要]
本発明に係るニューラルネットワーク処理装置は、ニューラルネットワークとしてCNNを用いたCNN処理装置1である。
【0015】
本実施の形態に係るCNN処理装置1は、CNNに与えられる入力信号とCNNの重みとの積和演算を行って演算結果を出力し、さらに演算結果に対してReLUを適用して積和演算の結果を変換する演算処理装置である。この演算処理は、CNNの中間層における畳み込み層の積和演算(以下、「畳み込み演算」ということがある。)と、畳み込み演算の演算結果を予め規定された条件に基づいて変換する変換演算とを含む。なお、以下においては、「変換」の一例として、畳み込み演算の演算結果に対してReLUを適用する場合について説明する。
【0016】
CNN処理装置1は、入力信号と重みとの畳み込み演算を行い、その演算結果にReLUを適用して、1層分の畳み込み層の出力を得る。
【0017】
以下においては、説明の簡単のため、畳み込み層の積和演算の結果にReLUが適用されて算出された演算結果が次の畳み込み層の入力信号として用いられるものとする。CNN処理装置1は、入力信号と重みとの積和演算および変換演算を繰り返し行って、予め設定されているCNNモデルが有する畳み込み層の数に応じた回数の積和演算および変換処理を実行する。
【0018】
[CNN処理装置の機能ブロック]
上述したCNN処理装置1は、入力バッファ(第1メモリ)10、重みバッファ(第2メモリ)11、畳み込み演算部(演算部)12、演算結果バッファ13、処理部14、出力バッファ15、および記憶部(第3メモリ)16を備える。
【0019】
入力バッファ10は、CNNに与えられる入力信号を記憶するメモリである。より詳細には、入力バッファ10は、後述する主記憶装置103によって実現され、この入力バッファ10には、例えば、外部から与えられた画像データなどが記憶される。入力バッファ10に与えられる入力信号は、予め前処理を行った画像データであってもよい。前処理の例としては、モノクロ変換、コントラスト調整、および輝度調整などが挙げられる。また、入力信号は、CNN処理装置1において予め設定されているCNNモデルに応じて設定されたビット深度となるように縮小されていてもよい。
【0020】
入力バッファ10に与えられる入力信号の値としては、例えば、32ビットや16ビット精度の浮動小数点の配列で表現された小数点を含む値や、これらの値を予め設定されたビット数表現に削減した値が用いられる。
【0021】
重みバッファ11は、CNNの重みを記憶するメモリである。より詳細には、重みバッファ11は、後述する主記憶装置103によって実現され、重みバッファ11には、CNN処理装置1の外部に設置されたサーバ(図示しない)や記憶部16などに予め記憶されているCNNの重みパラメータがロードされる。本実施の形態では、重みの値として、32ビットや16ビット精度の浮動小数点の配列で表現された小数点を含む値や、これらの値を予め設定されたビット数表現に削減した値が用いられる。
【0022】
畳み込み演算部12は、入力バッファ10に記憶されている入力信号と、重みバッファ11に記憶されている重みとの積和演算を含むCNNの畳み込み演算を行う。より詳細には、畳み込み演算部12は、入力バッファ10と重みバッファ11とからそれぞれ入力信号と重みとを読み出して、CNN処理装置1において予め設定されているCNNモデルを構成する畳み込み層に応じた畳み込み演算を行う。畳み込み演算部12が出力する演算結果は、演算結果バッファ13に供給される。
【0023】
演算結果バッファ13は、畳み込み演算部12による畳み込み演算の結果をバッファリングする。
【0024】
処理部14は、記憶部16に記憶されているテーブル160を参照して、演算結果バッファ13から読み出した畳み込み演算の結果に対し、変換および量子化の処理(以下、「変換-量子化処理」ということがある。)を行った結果を出力する。より詳細には、処理部14は、演算結果バッファ13に記憶されている畳み込み演算の結果を読み出し、変換-量子化処理の入出力関係が記憶されているテーブル160を参照して、変換-量子化処理の入力に対応する値を取得して出力する。
【0025】
ここで、畳み込み演算の結果の変換は、例えば、ReLUなどの活性化関数の適用や、BNなどを用いた正規化を含み、畳み込み演算の演算結果を予め規定された条件に基づいて変換することをいう。活性化関数は、畳み込み演算の演算結果を決定する。
【0026】
畳み込み演算の結果に対して適用するReLUは、畳み込み演算の結果が負であれば0に、正であれば畳み込み演算の結果を1次変換した値に変換させるランプ関数である。このように、ReLUなど畳み込み演算の演算結果を変換する処理の入出力関係は予め規定されている。
【0027】
一方、畳み込み演算の演算結果がReLUなどを介して変換された値は、演算負荷の軽減のためにビット精度を削減して量子化される。データの量子化は、例えば、四捨五入、切り上げ、切り捨て、最近接丸めなどよく知られた端数処理を含み、ReLUを介して畳み込み演算の結果が変換された値、例えば小数点を含む値を整数化するなどして制限をかけることをいう。
【0028】
処理部14は、例えば、ReLUへの入力、すなわち、積和演算の結果と、ReLUの出力をさらに量子化した値とが互いに関連付けて記憶されているテーブル160を参照する。そのため、処理部14は、畳み込み演算の演算結果のReLUによる変換処理と量子化処理とをあわせて実行することができる。
【0029】
すなわち、処理部14は、テーブル160を参照して、畳み込み演算の結果に対応するReLUなどによる変換処理および量子化処理の2つの演算処理を経た値を取得する。
【0030】
出力バッファ15は、処理部14によって取得された出力を一時的に記憶する。
【0031】
記憶部16は、テーブル160を備える。記憶部16は、出力バッファ15に一時的に記憶されている処理部14からの出力を格納する。
【0032】
テーブル160は、変換-量子化処理の入力と出力とを互いに関連付けて記憶する。より具体的には、テーブル160は、予め規定されているReLUなどの変換処理の入力と、ReLUによって変換された値を予め設定されている端数処理により量子化した出力とを互いに関連付けたデータを記憶する。
【0033】
[CNN処理装置のハードウェア構成]
次に、上述した機能を有するCNN処理装置1のハードウェア構成の例について
図2のブロック図を用いて説明する。
【0034】
図2に示すように、CNN処理装置1は、例えば、バス101を介して接続されるプロセッサ102、主記憶装置103、通信インターフェース104、補助記憶装置105、入出力装置106を備えるコンピュータと、これらのハードウェア資源を制御するプログラムによって実現することができる。
【0035】
主記憶装置103には、プロセッサ102が各種制御や演算を行うためのプログラムが予め格納されている。プロセッサ102と主記憶装置103とによって、
図1に示した畳み込み演算部12および処理部14を含むCNN処理装置1の各機能が実現される。
【0036】
主記憶装置103によって、
図1で説明した入力バッファ10、重みバッファ11、演算結果バッファ13、および出力バッファ15が実現される。
【0037】
通信インターフェース104は、通信ネットワークNWを介して各種外部電子機器との通信を行うためのインターフェース回路である。通信インターフェース104を介して、CNN処理装置1が用いる画像データなどの入力信号や、重みを、外部のサーバなどから受信してもよい。
【0038】
補助記憶装置105は、読み書き可能な記憶媒体と、その記憶媒体に対してプログラムやデータなどの各種情報を読み書きするための駆動装置とで構成されている。補助記憶装置105には、記憶媒体としてハードディスクやフラッシュメモリなどの半導体メモリを使用することができる。
【0039】
補助記憶装置105は、外部から取得された入力データや重みを記憶する記憶領域や、CNN処理装置1が畳み込み演算などのCNNの演算処理を行うためのプログラムを格納するプログラム格納領域を有する。補助記憶装置105によって、
図1で説明した記憶部16が実現される。さらには、例えば、上述したデータやプログラムなどをバックアップするためのバックアップ領域などを有していてもよい。
【0040】
入出力装置106は、外部機器からの信号を入力したり、外部機器へ信号を出力したりするI/O端子により構成される。入出力装置106を介して、図示しない表示装置などを備えて、CNN処理装置1によって出力される演算結果を表示してもよい。
【0041】
ここで、補助記憶装置105のプログラム格納領域に格納されているプログラムは、本明細書で説明するCNN処理方法の順序に沿って時系列に処理が行われるプログラムであってもよく、並列に、あるいは呼び出しが行われたときなどの必要なタイミングで処理が行われるプログラムであってもよい。また、プログラムは、1つのコンピュータにより処理されるものでもよく、複数のコンピュータによって分散処理されるものであってもよい。
【0042】
[CNN処理方法]
次に、上述した構成を有するCNN処理装置1の動作の概要について
図3を参照して説明する。まず、入力バッファ10および重みバッファ11は、CNN処理装置1の外部に設置されたサーバなどから与えられた入力信号Aおよび重みUをそれぞれ一時的に記憶する(ステップS1、ステップS2)。
【0043】
入力信号Aは、ベクトル化された入力画像データであり、縦方向と横方向の次元を持つ。入力信号Aの値は、例えば、複数桁の小数点を含む値で表現される。一方、重みUは、行列で表されるカーネルの要素であり、CNNの学習によって調整および更新されて最終的に決定されるパラメータである。重みUの値についても、縦方向と横方向の次元を持ち、各要素は、例えば、複数桁の小数点を含む値で表現される。
【0044】
次に、畳み込み演算部12は、入力バッファ10および重みバッファ11からそれぞれ入力信号Aおよび重みUを読み出して、畳み込み演算を行う(ステップS3)。より詳細には、畳み込み演算部12は、入力信号Aのベクトルと重みUの行列を乗算する。
【0045】
具体的には、畳み込み演算部12は、予め設定されているCNNのフィルタのウィンドウを所定のストライドでスライドさせる。畳み込み演算部12は、フィルタのそれぞれの場所で、重みUの要素と、入力信号Aの対応する要素とを乗算し、その和を求める。
【0046】
畳み込み演算部12は、この積和演算による畳み込み演算の演算結果Xを演算結果バッファ13の対応する場所に格納する(ステップS4)。
【0047】
その後、処理部14は、演算結果バッファ13から畳み込み演算の結果Xを読み出して、記憶部16のテーブル160を参照し、演算結果Xを変換-量子化処理した出力Yを取得する(ステップS5)。取得された出力Yは、出力バッファ15に一時的に記憶され、プロセッサ102により読み出されて出力される(ステップS6)。
【0048】
なお、必要に応じて処理部14が取得した出力Yに対してよく知られたプーリング処理を行ってもよい(非特許文献2参照)。ステップS6で得られた出力Yは、CNNの特徴抽出部の出力として、後続の図示しない分類器を構成する全結合層に入力され、入力信号Aの画像データの判別が行われる。
【0049】
以上説明したように、本発明に係るCNN処理装置1は、ReLUなどの変換処理への入力と、ReLUによって変換された値を量子化した出力とを互いに関連付けたテーブル160を記憶部16に記憶している。CNN処理装置1は、テーブル160を参照して、畳み込み演算の演算結果に対応する変換-量子化処理の出力を取得する。そのため、ReLUなどの変換処理と、変換された値に対する量子化処理とを各々独立して実行する場合に比較して、CNN処理装置1の計算負荷を低減することができる。また、その結果として、CNNの信号処理の高速化が可能となる。
【0050】
[第1の実施の形態]
次に、上述した構成を有するCNN処理装置1の具体的な例として、本発明の第1の実施の形態に係るCNN処理装置1について説明する。
図4は、CNN処理装置1の処理部14の機能構成を示すブロック図である。CNN処理装置1のその他の構成は、
図1で説明した構成と同様である。また、
図5は、テーブル160のデータ構造を説明する図である。
図6は、処理部14による変換-量子化処理を説明する図である。
【0051】
[処理部の機能ブロック]
処理部14は、入力判定部140および出力取得部141を備える。
入力判定部140は、畳み込み演算の演算結果を演算結果バッファ13から読み出して、予め設定されている変換-量子化処理の各入力区間との比較を行い、畳み込み演算の演算結果、すなわち変換-量子化処理の入力の値が含まれる入力区間を判定する。
【0052】
ここで、記憶部16に記憶されているテーブル160は、変換-量子化処理の入力を連続する複数の区間に分割した入力区間のそれぞれと、ReLUなどによって変換された値を量子化した値とを互いに関連付けたデータを記憶する。
【0053】
具体的には、
図5に示すように、テーブル160には、例えば、変換-量子化処理の入力が5つの区間に分けられて、各入力区間と変換-量子化処理の出力とが互いに関連付けられたデータが記憶されている。例えば、畳み込み演算の演算結果Xが「1」である場合には、入力判定部140は、各入力区間との比較により、演算結果Xが入力区間「1≦X<2」に該当することを判定する。
【0054】
出力取得部141は、記憶部16に記憶されているテーブル160を参照して、入力判定部140による判定結果に応じた入力区間に対応する変換-量子化処理の出力Yを取得する。
【0055】
具体的には、
図6に示すように、出力取得部141は、入力判定部140によって判定された5つの入力区間のうちのいずれかに対応する変換-量子化処理の出力Yを取得する。
図6に示す変換-量子化処理の例では、ReLUによる変換処理、および予め設定されている端数処理による量子化処理の2つの演算処理を合わせて行っている。
【0056】
[CNN処理方法]
次に、上述した入力判定部140を有する本実施の形態に係るCNN処理装置1の動作について
図3を参照して説明する。なお、本実施の形態に係るCNN処理方法において、ステップS1からステップS4まではCNN処理方法の概要で説明した処理と同様である。
【0057】
まず、入力バッファ10および重みバッファ11は、CNN処理装置1の外部に設置されたサーバなどから与えられた入力信号Aおよび重みUをそれぞれ一時的に記憶する(ステップS1、ステップS2)。
【0058】
次に、畳み込み演算部12は、入力バッファ10および重みバッファ11からそれぞれ入力信号Aおよび重みUを読み出して、畳み込み演算を行う(ステップS3)。より詳細には、畳み込み演算部12は、入力信号Aのベクトルと重みUの行列を乗算する。
【0059】
次に、畳み込み演算部12は、この積和演算による畳み込み演算の演算結果Xを演算結果バッファ13の対応する場所に格納する(ステップS4)。
【0060】
その後、処理部14は、演算結果バッファ13から畳み込み演算の結果Xを読み出して、記憶部16のテーブル160を参照し、演算結果Xが変換-量子化処理された出力Yを取得する(ステップS5)。より詳細には、入力判定部140は、畳み込み演算の結果X、すなわち、変換-量子化処理の入力Xについて、予め設定されている変換-量子化処理の入力区間ごとに値の比較を行い、演算結果Xの値が含まれる入力区間を判定する。その後、出力取得部141は、テーブル160を参照して、入力判定部140によって判定された入力区間に対応する変換-量子化処理の出力Yを取得する。
【0061】
取得された出力Yは、出力バッファ15に一時的に記憶され、プロセッサ102により読み出されて出力される(ステップS6)。
【0062】
以上説明したように、第1の実施の形態に係るCNN処理装置1によれば、畳み込み演算の演算結果、すなわち変換-量子化処理の入力の値が、変換-量子化処理の連続する複数の入力区間のうちどの入力区間に含まれるのかを判定し、判定結果に基づいて、テーブル160を参照して変換-量子化処理の出力を取得する。
【0063】
そのため、ReLUなどの変換処理と、畳み込み演算の演算結果の量子化処理とを、入力区間の判定およびテーブル160の参照により実行することができるので、組み込み用のハードウェアを使用した場合であってもCNNの演算負荷の低減および処理速度の低下を抑制することができる。
【0064】
また、変換-量子化処理の入出力関係を示すテーブル160は、補助記憶装置105などのハードウェアの記憶領域に保存される。そのため、ニューラルネットワークの形態に応じてテーブル160の値を入れ替えることにより、所望の処理機能を有するニューラルネットワークをハードウェアによってより柔軟に実現することができる。
【0065】
[第2の実施の形態]
次に、本発明の第2の実施の形態について説明する。なお、以下の説明では、上述した第1の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
【0066】
第1の実施の形態では、処理部14は入力判定部140を備え、入力判定部140が、畳み込み演算の演算結果と、変換-量子化処理における連続する複数の入力区間とを比較する場合につて説明した。これに対し、第2の実施の形態では、処理部14は、変換-量子化処理の入力に対する閾値処理を行う閾値処理部(第1閾値処理部)142を備える。以下、第1の実施の形態と異なる構成を中心に説明する。
【0067】
[処理部の機能ブロック]
処理部14は、出力取得部141および閾値処理部142を備える。
閾値処理部142は、畳み込み演算の演算結果を演算結果バッファ13から読み出して、変換-量子化処理の入力に対して予め設定されている閾値との比較を行う。
【0068】
ここで、本実施の形態に係る記憶部16のテーブル160Aには、
図8に示すように、変換-量子化処理の入力に対して、例えば、5つ閾値が設定されており、各閾値と変換-量子化処理の出力とを互いに関連付けたデータが記憶されている。
【0069】
閾値処理部142は、例えば、畳み込み演算の演算結果Xが設定された閾値未満であるか閾値以上であるかを比較する。具体的には、畳み込み演算に演算結果Xが「1」である場合には、閾値処理部142は、演算結果X(「1」)は、設定されている閾値「2」未満で閾値「1」以上であるとの比較結果を出力する。
【0070】
出力取得部141は、閾値処理部142による比較結果に基づいて、テーブル160Aを参照し、比較結果に応じた入力の閾値に対応する変換-量子化処理の出力Yを取得する。出力取得部141によって取得された出力は出力バッファ15に一時的に記憶される。
【0071】
[CNN処理方法]
次に、上述した閾値処理部142を有する本実施の形態に係るCNN処理装置1の動作について
図9を参照して説明する。なお、本実施の形態に係るCNN処理方法において、ステップS1からステップS4までは
図3のCNN処理方法の概要で説明した処理と同様である。
【0072】
まず、入力バッファ10および重みバッファ11は、CNN処理装置1の外部に設置されたサーバなどから与えられた入力信号Aおよび重みUをそれぞれ一時的に記憶する(ステップS1、ステップS2)。
【0073】
次に、畳み込み演算部12は、入力バッファ10および重みバッファ11からそれぞれ入力信号Aおよび重みUを読み出して、畳み込み演算を行う(ステップS3)。より詳細には、畳み込み演算部12は、入力信号Aのベクトルと重みUの行列を乗算する。
【0074】
次に、畳み込み演算部12は、この積和演算による畳み込み演算の演算結果Xを演算結果バッファ13の対応する場所に格納する(ステップS4)。
【0075】
その後、処理部14は、演算結果バッファ13から畳み込み演算の結果Xを読み出して、記憶部16のテーブル160Aを参照し、演算結果Xが変換-量子化処理された出力Yを取得する(ステップS5A)。より詳細には、閾値処理部142は、畳み込み演算の結果Xについて、変換-量子化処理の入力に対して予め設定されている閾値との比較を行い、演算結果Xを下回る閾値を出力する。その後、出力取得部141は、テーブル160Aを参照して、閾値処理部142によって出力された入力の閾値に対応する出力Yを取得する。
【0076】
取得された出力Yは、出力バッファ15に一時的に記憶され、プロセッサ102により読み出されて出力される(ステップS6)。
【0077】
以上説明したように、第2の実施の形態に係るCNN処理装置1によれば、変換-量子化処理への入力に対して予め設定された閾値と、その閾値と変換-量子化処理の出力とを互いに関連付けたテーブル160Aが記憶部16に記憶されている。また、出力取得部141は、畳み込み演算の演算結果と閾値との比較結果に基づいて、テーブル160Aを参照して変換-量子化処理の出力を取得する。
【0078】
そのため、畳み込み演算の演算結果に対するReLUなどによる変換処理と、畳み込み演算の演算結果の量子化処理とを閾値処理によって実行することができる。したがって、変換-量子化処理の出力が単調増加または単調減少する場合においては、閾値との比較により変換-量子化処理の出力を一意に決定することができる。
【0079】
特に、ある一定のハードウェアによってCNN処理装置1を実現した場合に、入力区間を用いた比較は逐次処理が必要となるのに対し、入力と閾値との比較は一括で行うことができる。したがって、CNN処理装置1によれば、組み込み用のハードウェアを使用した場合であってもCNNの演算処理をより高速に行うことができる。
【0080】
[第3の実施の形態]
次に、本発明の第3の実施の形態について説明する。なお、以下の説明では、上述した第1および第2の実施の形態と同じ構成については同一の符号を付し、その説明を省略する。
【0081】
第2の実施の形態では、変換-量子化処理の出力が単調増加または単調減少する場合において、閾値処理部142は、変換-量子化処理の入力に対して予め設定されている閾値との比較を行う場合について説明した。これに対して、第3の実施の形態では、変換-量子化処理の出力が単調増加する入力の区間と、単調減少する入力の区間とを識別する分割情報に基づいて、変換-量子化処理の入力の値が属するいずれかの入力の区間内のみで閾値処理を行う。以下、第1および第2の実施の形態と異なる構成を中心に説明する。
【0082】
[処理部の機能ブロック]
処理部14は、入力判定部140、出力取得部141、および閾値処理部(第2閾値処理部)142を備える。
入力判定部140は、変換-量子化処理の出力が単調増加する入力の区間と、単調減少する入力の区間とを識別する分割情報に基づいて、前記演算部による畳み込み演算の演算結果Xの属する前記変換-量子化処理の入力の区間を判定する。
【0083】
閾値処理部142は、畳み込み演算部12による演算結果Xと、変換-量子化処理の入力に対して予め設定されている複数の閾値とを入力判定部140によって判定された入力の区間内で比較して、演算結果Xに対応する閾値を出力する。
【0084】
出力取得部141は、記憶部16に記憶されたテーブル160Bを参照し、閾値処理部142により出力された閾値に対応する変換-量子化処理の出力Yを取得する。
【0085】
記憶部16はテーブル160Bを記憶する。
図11に示すように、テーブル160Bには、変換-量子化処理の出力が単調増加する入力の区間と、単調減少する入力の区間とを識別する分割情報と、変換-量子化処理の入力に対して予め設定されている複数の閾値と、複数の閾値のそれぞれに対応する変換-量子化処理の出力とを互いに関連付けたデータが記憶されている。
【0086】
分割情報は、例えば、活性化関数などの変換処理を介した畳み込み演算の演算結果をさらに量子化した出力が、2次関数のように単調増加する区間と単調減少する区間で構成される場合に、その単調増加と単調減少とが切り替わる頂点を示す情報などを含む。
【0087】
図11の例に示すように、変換-量子化処理の入出力の関係において、入力X=6を境界として出力Yが単調増加および単調減少する。
【0088】
図11の例において、例えば、畳み込み演算の演算結果X(入力X)が「6」未満(X<6)であるとする。この場合、入力判定部140は、変換-量子化処理への入力Xは単調増加する入力の区間に属すると判定する。
【0089】
[CNN処理方法]
次に、上述した構成を有する本実施の形態に係るCNN処理装置1の動作について
図12を参照して説明する。なお、本実施の形態に係るCNN処理方法において、ステップS1からステップS4までは、
図3のCNN処理方法の概要で説明した処理と同様である。
【0090】
まず、入力バッファ10および重みバッファ11は、CNN処理装置1の外部に設置されたサーバなどから与えられた入力信号Aおよび重みUをそれぞれ一時的に記憶する(ステップS1、ステップS2)。
【0091】
次に、畳み込み演算部12は、入力バッファ10および重みバッファ11からそれぞれ入力信号Aおよび重みUを読み出して、畳み込み演算を行う(ステップS3)。より詳細には、畳み込み演算部12は、入力信号Aのベクトルと重みUの行列を乗算する。
【0092】
次に、畳み込み演算部12は、この積和演算による畳み込み演算の演算結果Xを演算結果バッファ13の対応する場所に格納する(ステップS4)。
【0093】
その後、処理部14は、演算結果バッファ13から畳み込み演算の結果Xを読み出して、記憶部16のテーブル160Bを参照し、演算結果Xが変換-量子化処理された出力Yを取得する(ステップS5B)。
【0094】
より詳細には、入力判定部140は、変換-量子化処理の出力が単調増加する入力の区間と、単調減少する入力の区間とを識別する分割情報に基づいて、変換-量子化処理への入力X、すなわち、畳み込み演算の演算結果Xが属する入力の区間を判定する。
【0095】
その後、閾値処理部142は、畳み込み演算の演算結果X(入力X)と、変換-量子化処理の入力Xに対して予め設定された閾値とを入力判定部140によって判定された入力の区間内で比較し、比較結果に応じた閾値を出力する。その後、出力取得部141は、テーブル160Bを参照し、閾値処理部142によって出力された閾値に対応する変換-量子化処理の出力Yを取得する。
【0096】
取得された出力Yは、出力バッファ15に一時的に記憶され、プロセッサ102により読み出されて出力される(ステップS6)。
【0097】
以上説明したように、第3の実施の形態に係るCNN処理装置1によれば、変換-量子化処理の出力Yが単調増加する入出力の区間と単調減少する入出力の区間とを識別する分割情報に基づいて、変換-量子化処理の入力Xが属する区間を判定する。そして、判定された入力の区間内において、変換-量子化処理への入力Xに対する閾値処理を行い、テーブル160Bを参照し、変換-量子化処理の出力Yを取得する。
【0098】
そのため、変換-量子化処理の入出力の関係が単調増加または単調減少でない場合であっても、単調増加および単調減少する区間ごとに閾値処理を行うので、より高速にCNNの演算処理を行うことができる。
【0099】
以上、本発明のニューラルネットワーク処理装置、ニューラルネットワーク処理方法、およびニューラルネットワーク処理プログラムにおける実施の形態について説明したが、本発明は説明した実施の形態に限定されるものではなく、請求項に記載した発明の範囲において当業者が想定し得る各種の変形を行うことが可能である。
【0100】
例えば、説明した実施の形態では、ニューラルネットワークの一例としてCNNを挙げて説明したが、ニューラルネットワーク処理装置が採用するニューラルネットワークはCNNに限らない。
【0101】
なお、ここで開示された実施の形態に関連して記述された様々の機能ブロック、モジュール、および回路は、汎用プロセッサ、GPU、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、FPGAあるいはその他のプログラマブル論理デバイス、ディスクリートゲートあるいはトランジスタロジック、ディスクリートハードウェア部品、または上述した機能を実現するために設計された上記いずれかの組み合わせを用いて実行されうる。
【0102】
汎用プロセッサとしてマイクロプロセッサを用いることが可能であるが、代わりに、従来技術によるプロセッサ、コントローラ、マイクロコントローラ、あるいは状態機器を用いることも可能である。プロセッサは、例えば、DSPとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、DSPコアに接続された1つ以上のマイクロプロセッサ、またはこのような任意の構成である計算デバイスの組み合わせとして実現することも可能である。
【符号の説明】
【0103】
1…CNN処理装置、10…入力バッファ、11…重みバッファ、12…畳み込み演算部、13…演算結果バッファ、14…処理部、15…出力バッファ、16…記憶部、101…バス、102…プロセッサ、103…主記憶装置、104…通信インターフェース、105…補助記憶装置、106…入出力装置、160…テーブル、NW…通信ネットワーク、U…重み、A…入力信号。