(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-28
(45)【発行日】2024-04-05
(54)【発明の名称】ニューラルネットワーク回路及びニューラルネットワーク演算方法
(51)【国際特許分類】
G06N 3/063 20230101AFI20240329BHJP
G06N 3/0464 20230101ALI20240329BHJP
【FI】
G06N3/063
G06N3/0464
(21)【出願番号】P 2019196326
(22)【出願日】2019-10-29
【審査請求日】2022-10-25
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成31年度、国立研究開発法人新エネルギー・産業技術総合開発機構開発項目「高効率・高速処理を可能とするAIチップ・次世代コンピューティングの技術開発/革新的AIエッジコンピューティング技術の開発/再帰再構成型ニューロモルフィックアクセラレータの研究開発」 委託研究、産業技術力強化法第17条の適用を受ける特許出願
(73)【特許権者】
【識別番号】504159235
【氏名又は名称】国立大学法人 熊本大学
(74)【代理人】
【識別番号】100106909
【氏名又は名称】棚井 澄雄
(74)【代理人】
【識別番号】100126664
【氏名又は名称】鈴木 慎吾
(74)【代理人】
【識別番号】100188558
【氏名又は名称】飯田 雅人
(74)【代理人】
【識別番号】100189337
【氏名又は名称】宮本 龍
(72)【発明者】
【氏名】尼崎 太樹
(72)【発明者】
【氏名】中原 康宏
(72)【発明者】
【氏名】千竈 純太郎
(72)【発明者】
【氏名】飯田 全広
【審査官】山本 俊介
(56)【参考文献】
【文献】米国特許出願公開第2018/0032859(US,A1)
【文献】米国特許出願公開第2018/0197068(US,A1)
【文献】米国特許出願公開第2018/0129936(US,A1)
【文献】米国特許出願公開第2018/0121377(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
(57)【特許請求の範囲】
【請求項1】
畳み込みニューラルネットワークであって全結合層と複数の畳み込み層とを有する畳み込みニューラルネットワークにおける畳み込み層又は全結合層の処理を実行するニューラルネットワーク回路であって、
各層に入力されるデータであってテンソルで表されるデータの各要素の値であるアクチベーションデータを記憶する第1記憶部と、
前記畳み込み層又は前記全結合層で実行される処理のための重みデータを記憶する第2記憶部と、
所定のタイミングで前記第1記憶部から1つの前記アクチベーションデータを読み出し、読み出した前記アクチベーションデータと前記重みデータのうちの重みデータに関する所定の条件を満たす1つの前記重みデータとの積の項の値である項値を取得する複数の演算部と、
を備え、
前記演算部が読み出した前記アクチベーションデータは、前記演算部が前記項値を演算した後に予め対応付けられた他の前記演算部に出力さ
れ、
前記演算部は前記畳み込み層の処理と前記全結合層の処理とで共通に用いられる、
ニューラルネットワーク回路。
【請求項2】
前記畳み込み層の処理は畳み込み積分であって、
前記畳み込み積分の実行時の前記重みデータは、前記畳み込み積分を実行するためのフィルタの各値であるフィルタ係数である、
請求項1に記載のニューラルネットワーク回路。
【請求項3】
前記全結合層の処理の実行時の前記重みデータは、前記全結合層の処理に用いられる重み係数である、
請求項1に記載のニューラルネットワーク回路。
【請求項4】
畳み込みニューラルネットワークであって全結合層と複数の畳み込み層とを有する畳み込みニューラルネットワークにおける畳み込み層又は全結合層の処理を実行するニューラルネットワーク回路であって、各層に入力されるデータであってテンソルで表されるデータの各要素の値であるアクチベーションデータを記憶する第1記憶部と、前記畳み込み層又は前記全結合層で実行される処理のための重みデータを記憶する第2記憶部と、所定のタイミングで前記第1記憶部から1つの前記アクチベーションデータを読み出し、読み出した前記アクチベーションデータと前記重みデータのうちの重みデータに関する所定の条件を満たす1つの前記重みデータとの積の項の値である項値を取得する複数の演算部と、を備え、前記演算部が読み出した前記アクチベーションデータは、前記演算部が前記項値を演算した後に予め対応付けられた他の前記演算部に出力さ
れ、前記演算部は前記畳み込み層の処理と前記全結合層の処理とで共通に用いられるニューラルネットワーク回路が実行するニューラルネットワーク演算方法であって、
前記演算部が、所定のタイミングで前記第1記憶部から1つの前記アクチベーションデータを読み出し、読み出した前記アクチベーションデータと前記重みデータのうちの重みデータに関する所定の条件を満たす1つの前記重みデータとの積の項の値である項値を取得する取得ステップと、
前記演算部が読み出した前記アクチベーションデータが、前記演算部が前記項値を演算した後に予め対応付けられた他の前記演算部に出力される出力ステップと、
を有するニューラルネットワーク演算方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はニューラルネットワーク回路及びニューラルネットワーク演算方法に関する。
【背景技術】
【0002】
近年、複数のコンピュータで集めたデータを1つのコンピュータに集約し処理するこれまでのクラウドコンピューティングではなく、ユーザに近いコンピュータ(以下「エッジコンピュータ」という。)で処理をさせるエッジコンピューティングに注目が集まっている。さらに、近年の畳み込みニューラルネットワークの技術の進歩に伴い、エッジコンピュータで畳み込みニューラルネットワークを行わせることが提案されている。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2018-142049号公報
【文献】特開2018-160086号公報
【文献】特開2018-116469号公報
【文献】特開2017-21483号公報
【文献】特開2019-57072号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、エッジコンピュータは畳み込みニューラルネットワークを実行するには十分な性能でない場合が多い。例えば、エッジコンピュータでは、畳み込みニューラルネットワークの実行に当たりメモリへのアクセスの回数が多くなり、演算速度が遅いという問題がある。
【0005】
上記事情に鑑み、本発明は、畳み込みニューラルネットワークにおける演算速度を向上させる技術を提供することを目的としている。
【課題を解決するための手段】
【0006】
本発明の一態様は、畳み込みニューラルネットワークであって全結合層と複数の畳み込み層とを有する畳み込みニューラルネットワークにおける畳み込み層又は全結合層の処理を実行するニューラルネットワーク回路であって、各層に入力されるデータであってテンソルで表されるデータの各要素の値であるアクチベーションデータを記憶する第1記憶部と、前記畳み込み層又は前記全結合層で実行される処理のための重みデータを記憶する第2記憶部と、所定のタイミングで前記第1記憶部から1つの前記アクチベーションデータを読み出し、読み出した前記アクチベーションデータと前記重みデータのうちの重みデータに関する所定の条件を満たす1つの前記重みデータとの積の項の値である項値を取得する複数の演算部と、を備え、前記演算部が読み出した前記アクチベーションデータは、前記演算部が前記項値を演算した後に予め対応付けられた他の前記演算部に出力される、ニューラルネットワーク回路である。
【0007】
本発明の一態様は、上記のニューラルネットワーク回路であって、前記畳み込み層の処理は畳み込み積分であって、前記畳み込み積分の実行時の前記重みデータは、前記畳み込み積分を実行するためのフィルタの各値であるフィルタ係数である。
【0008】
本発明の一態様は、上記のニューラルネットワーク回路であって、前記全結合層の処理の実行時の前記重みデータは、前記全結合層の処理に用いられる重み係数である。
【0009】
本発明の一態様は、畳み込みニューラルネットワークであって全結合層と複数の畳み込み層とを有する畳み込みニューラルネットワークにおける畳み込み層又は全結合層の処理を実行するニューラルネットワーク回路であって、各層に入力されるデータであってテンソルで表されるデータの各要素の値であるアクチベーションデータを記憶する第1記憶部と、前記畳み込み層又は前記全結合層で実行される処理のための重みデータを記憶する第2記憶部と、所定のタイミングで前記第1記憶部から1つの前記アクチベーションデータを読み出し、読み出した前記アクチベーションデータと前記重みデータのうちの重みデータに関する所定の条件を満たす1つの前記重みデータとの積の項の値である項値を取得する複数の演算部と、を備え、前記演算部が読み出した前記アクチベーションデータは、前記演算部が前記項値を演算した後に予め対応付けられた他の前記演算部に出力されるニューラルネットワーク回路が実行するニューラルネットワーク演算方法であって、前記演算部が、所定のタイミングで前記第1記憶部から1つの前記アクチベーションデータを読み出し、読み出した前記アクチベーションデータと前記重みデータのうちの重みデータに関する所定の条件を満たす1つの前記重みデータとの積の項の値である項値を取得する取得ステップと、前記演算部が読み出した前記アクチベーションデータが、前記演算部が前記項値を演算した後に予め対応付けられた他の前記演算部に出力される出力ステップと、を有するニューラルネットワーク演算方法である。
【発明の効果】
【0010】
本発明により、畳み込みニューラルネットワークにおける演算速度を向上させることができる。
【図面の簡単な説明】
【0011】
【
図1】実施形態のニューラルネットワーク回路1の機能構成図の一例を示す図。
【
図2】実施形態の単位処理部100における情報の流れの一例を説明する説明図。
【
図3】実施形態の単位処理部100間の情報の流れの一例を説明する説明図。
【
図4】実施形態の単位処理部100間のコンフィギュレーションデータの流れの一例を説明する説明図。
【
図5】実施形態の積和演算部102における処理の流れの一例を説明する説明図。
【
図6】実施形態のニューラルネットワーク回路1が実行する畳み込み処理を説明する第1の説明図。
【
図7】実施形態のニューラルネットワーク回路1が実行する畳み込み演算を説明する第2の説明図。
【
図8】実施形態の第1バッファ記憶部11から各単位処理部100へ出力される情報の流れを説明する図。
【
図9】実施形態の第2バッファ記憶部12から各単位処理部100へ出力される情報の流れを説明する図。
【
図10】実施形態の単位処理部100から第1バッファ記憶部11へ出力される情報の流れを説明する図。
【
図11】実施形態の単位処理部100から第2バッファ記憶部12へ出力される情報の流れを説明する図。
【
図12】実施形態の第1バッファ記憶部11から主演算部10へ出力される情報の出力先を説明する図。
【
図13】実施形態の主演算部10から第1バッファ記憶部11へ出力される情報の出力元を説明する図。
【
図14】実施形態における畳み込み処理の1番目の処理を説明する説明図。
【
図15】実施形態における畳み込み処理の2番目の処理を説明する説明図。
【
図16】実施形態における畳み込み処理の3番目の処理を説明する説明図。
【
図17】実施形態における畳み込み処理の4番目の処理を説明する説明図。
【
図18】実施形態における畳み込み処理の5番目の処理を説明する説明図。
【
図19】実施形態における畳み込み処理の6番目の処理を説明する説明図。
【
図20】実施形態における畳み込み処理の7番目の処理を説明する説明図。
【
図21】実施形態における畳み込み処理の流れの一例を説明するフローチャート。
【
図22】実施形態における全結合処理の概要を説明する説明図。
【
図23】実施形態の全結合処理の実行時の単位処理部100間のデータの流れの一例を説明する第1の説明図。
【
図24】実施形態の全結合処理の実行時の単位処理部100間のデータの流れの一例を説明する第2の説明図。
【
図25】実施形態における全結合処理の1番目の処理の一例を説明する説明図。
【
図26】実施形態における全結合処理の2番目の処理の一例を説明する第1の説明図。
【
図27】実施形態における全結合処理の2番目の処理の一例を説明する第2の説明図。
【
図28】実施形態における全結合処理の3番目の処理の一例を説明する説明図。
【
図29】実施形態における全結合処理の4番目の処理の一例を説明する説明図。
【
図30】実施形態における全結合処理の5番目の処理の一例を説明する説明図。
【
図31】実施形態における全結合処理の6番目の処理の一例を説明する説明図。
【
図32】実施形態における全結合処理の流れの一例を示すフローチャート。
【発明を実施するための形態】
【0012】
以下、実施形態のニューラルネットワーク回路及びニューラルネットワーク演算方法を、図面を参照して説明する。なお、以下の説明において接続とは電気的な接続を意味する。また、以下の説明においては、同一の回路とは、回路素子間の相対的な位置が同一であることを意味する。相対的な位置とは、基準となる回路素子から見た他の回路素子の位置を意味する。同一の回路とは、回路素子間の接続関係が同一であることは必ずしも意味しない。
【0013】
図1は、実施形態のニューラルネットワーク回路1の機能構成図の一例を示す図である。ニューラルネットワーク回路1は、自装置に接続された第1外部メモリ91、第2外部メモリ92及び制御用外部メモリ93から全結合層を有する畳み込みニューラルネットワークによる処理の対象のデータを取得する。第1外部メモリ91及び第2外部メモリ92は、半導体記憶装置などの記憶装置を用いて構成される。第1外部メモリ91及び第2外部メモリ92は、例えば、DRAM(Dynamic Random Access Memory)である。制御用外部メモリ93は、半導体記憶装置などの記憶装置を用いて構成される。制御用外部メモリ93は、例えば、フラッシュメモリである。
【0014】
ニューラルネットワーク回路1は、取得したデータに基づいて畳み込みニューラルネットワークの各畳み込み層の畳み込み積分を実行する。また、ニューラルネットワーク回路1は、取得したデータに基づいて、全結合層を有する畳み込みニューラルネットワークの全結合層における処理を実行する。全結合層における処理は、具体的には積和演算である。
【0015】
ニューラルネットワーク回路1は、第1バッファ記憶部11、第2バッファ記憶部12、制御用バッファ記憶部13、制御部14及び主演算部10を備える。
【0016】
第1バッファ記憶部11は、半導体記憶装置などの記憶装置のうち一時的記録媒体を用いて構成される。第1バッファ記憶部11は、第1外部メモリ91、主演算部10及び制御部14に接続される。第1バッファ記憶部11は、第1外部メモリ91が出力したデータを一時的に記憶する。第1バッファ記憶部11は、主演算部10が出力したデータを一時的に記憶する。第1バッファ記憶部11は、制御部14によって制御されて動作する。第1バッファ記憶部11は、記憶したデータを所定のタイミングで主演算部10又は第1外部メモリ91に出力する。
【0017】
第1バッファ記憶部11は、例えば、アクチベーションデータを記憶する。アクチベーションデータは、畳み込みニューラルネットワークの各層に入力されるデータであってテンソルで表されるデータ(以下「層入力データ」という。)の各要素の値である。層入力データは、0階のテンソル(すなわちスカラー)で表されてもよいし、1階のテンソル(すなわちベクトル)で表されてもよいし、2階以上のテンソルで表されてもよい。層入力データは、例えばチャネル数がv1であって各チャネルのデータはv2行v3列の行列で表される場合、3階のテンソルで表されるデータである。
【0018】
第1バッファ記憶部11は、例えば、コンフィギュレーションデータを記憶する。コンフィギュレーションデータは、詳細を後述する主演算部10が備える複数の単位処理部100間の接続関係を示すデータである。単位処理部100は、1つの他の単位処理部100に接続されてもよいし、複数の他の単位処理部100に接続されてもよい。
【0019】
第2バッファ記憶部12は、半導体記憶装置などの記憶装置のうち一時的記録媒体を用いて構成される。第2バッファ記憶部12は、第2外部メモリ92、主演算部10及び制御部14に接続される。第2バッファ記憶部12は、第2外部メモリ92が出力したデータを一時的に記憶する。第2バッファ記憶部12は、制御部14によって制御されて動作する。
【0020】
第2バッファ記憶部12は、記憶したデータを所定のタイミングで主演算部10に出力する。第2バッファ記憶部12は、例えば、畳み込みを実行するための各層の1又は複数のフィルタ(以下「畳み込みフィルタ」という。)の各要素の値(以下「フィルタ係数」という。)を記憶する。また、第2バッファ記憶部12は、例えば、全結合層の処理における重み(以下「全結合係数」という。)を記憶する。
【0021】
制御用バッファ記憶部13は、半導体記憶装置などの記憶装置のうち一時的記録媒体を用いて構成される。制御用バッファ記憶部13は、制御用外部メモリ93及び制御部14に接続される。制御用バッファ記憶部13は、制御用外部メモリ93が出力したデータを一時的に記憶する。制御用バッファ記憶部13は、記憶したデータを所定のタイミングで制御部14に出力する。制御用バッファ記憶部13は、例えば、マイクロコード等の制御命令を記憶する。
【0022】
制御部14は、ニューラルネットワーク回路1が備える各機能部の動作を制御する。具体的には、バスで接続されたCPU(Central Processing Unit)等のプロセッサとメモリとを備え、プログラムを実行する。制御部14は、プログラムの実行によってニューラルネットワーク回路1が備える各機能部の動作を制御する。制御部14は、例えば、第1バッファ記憶部11と第2バッファ記憶部12と主演算部10の動作とを制御することで、後述する畳み込み処理の実行を制御する。制御部14は、例えば、第1バッファ記憶部11と第2バッファ記憶部12と主演算部10の動作とを制御することで、後述する全結合処理の実行を制御する。制御部14は、例えば、コンフィギュレーションデータを第1バッファ記憶部11から主演算部10に入力させるタイミングを制御する。制御部14は、例えば、第1バッファ記憶部11から主演算部10に入力させるコンフィギュレーションデータを入力させるタイミングに合わせて選択する機能を有する。制御部14は、例えば、コンフィギュレーションデータに基づいて接続先を変更する後述する接続部101の動作を制御する。
【0023】
主演算部10は、畳み込みニューラルネットワークの各畳み込み層の畳み込み積分を実行する。また、主演算部10は、全結合層を有する畳み込みニューラルネットワークの全結合層における処理を実行する。
【0024】
主演算部10は、格子状に複数個配置された単位処理部100を備える。単位処理部100は、接続部101と積和演算部102とを備える。接続部101は、積和演算部102を予め対応付けられた他の単位処理部100と、第1バッファ記憶部11と、第2バッファ記憶部12とに接続するためのインタフェースである。接続部101の予め対応付けられた他の単位処理部100は、コンフィギュレーションデータが示す他の単位処理部100である。
【0025】
接続部101は、所定のタイミングで、コンフィギュレーションデータに基づいて接続先の単位処理部100を変更する。より具体的には、接続部101は、所定のタイミングで、コンフィギュレーションデータが示す接続先に接続するように配線を変更する。配線の変更方法は、FPGA(field-programmable gate array)と同様である。FPGAと同様の方法とは、具体的には、コンフィグレーションメモリに対して外部よりコンフィグレーションデータをダウンロードする方法である。所定のタイミングは、例えば、ニューラルネットワーク回路1の動作開始時である。所定のタイミングは、例えば、畳み込みニューラルネットワークの各畳み込み層の処理が終了した後であって全結合層による処理が開始される前のタイミングであってもよい。
【0026】
積和演算部102は、積和演算を実行する。積和演算部102は、積和演算の実行結果に基づいて活性を取得する。積和演算部102は、取得した活性を予め定められた所定の活性化関数に入力し活性化関数による演算の結果(以下「活性結果」という。)を取得する。活性化関数は、ステップ関数であってもよいし、シグモイド関数であってもよいし、ReLU関数であってもよいし、恒等関数であってもよいし、ソフトマックス関数であってもよい。活性結果は、例えば、次段の層にアクチベーションデータとして入力される。
【0027】
各単位処理部100は単位処理部100ごとの専用の導線によって接続部101を介して第1バッファ記憶部11に接続される。また、各単位処理部100は単位処理部100ごとの専用の導線によって接続部101を介して第2バッファ記憶部12に接続される。専用とは、第1バッファ記憶部11又は第2バッファ記憶部12と他の単位処理部100との間の情報の送受信には使用されないことを意味する。
【0028】
図2は、実施形態の単位処理部100における情報の流れの一例を説明する説明図である。接続部101は、入力制御回路111、重み制御回路112及び出力制御回路113を備える。積和演算部102は、積和演算回路201及び活性化回路202を備える。
【0029】
入力制御回路111は、第1バッファ記憶部11からコンフィギュレーションデータを取得する。入力制御回路111は、取得したコンフィギュレーションデータに基づき、取得したコンフィギュレーションデータが示す接続先に接続される。入力制御回路111は、第1バッファ記憶部11が出力したアクチベーションデータを取得する。入力制御回路111は、接続先の単位処理部100が出力したアクチベーションデータを取得する。
【0030】
入力制御回路111は、接続先の単位処理部100にアクチベーションデータを出力する。入力制御回路111は、接続先の単位処理部100にコンフィギュレーションデータを出力する。接続先の単位処理部100は、コンフィギュレーションデータに基づき接続されたコンフィギュレーションデータが示す接続先である。入力制御回路111は、レジスタ114を備える。レジスタ114は、取得したコンフィギュレーションデータ及びアクチベーションデータを記憶する。
【0031】
重み制御回路112は、第2バッファ記憶部12からフィルタ係数及び全結合係数を取得する。重み制御回路112は、レジスタ115を備える。レジスタ115は、取得したフィルタ係数及び全結合係数を記憶する。
【0032】
出力制御回路113は、積和演算部102に接続される。出力制御回路113は、積和演算部102の演算結果である活性結果を取得する。出力制御回路113は、第1バッファ記憶部11へ活性結果を出力する。出力制御回路113は、レジスタ116を備える。レジスタ116は、取得した活性結果を記憶する。出力制御回路113は、活性結果を入力制御回路111に入力するための導線(以下「フィードバック導線118」という。)を備える。フィードバック導線118は、単位処理部100が外部メモリを介さずに活性結果を自身にフィードバックする場合に使用される。より詳しくは、単位処理部100が外部メモリを介さずに活性結果を自身にフィードバックする場合に、制御部14の制御によって、出力制御回路1が出力した活性結果がフィードバック導線118を介して入力制御回路111に入力される。
【0033】
積和演算回路201は、入力制御回路111、重み制御回路112及び活性化回路202に接続される回路である。積和演算回路201は、入力制御回路111を介して、第1バッファ記憶部11又は接続先の他の単位処理部100からアクチベーションデータを取得する。積和演算回路201は、重み制御回路112を介して第2バッファ記憶部12からフィルタ係数又は全結合係数を取得する。積和演算回路201は取得したアクチベーションデータと、フィルタ係数又は全結合係数とに基づいて積和演算を実行し活性を取得する。積和演算回路201は、レジスタ117を備える。レジスタ117は、積和演算の演算途中の結果である中間値を記憶する。レジスタ117は、活性を記憶してもよい。積和演算回路201は取得した活性を活性化回路202に出力する。
【0034】
活性化回路202は、積和演算回路201の出力(すなわち活性)を取得する。活性化回路202は、取得した活性を予め定められた所定の活性化関数に入力する。活性化回路202は、活性化関数による演算の結果である活性結果を取得する。活性化回路202は、取得した活性結果を出力制御回路113に出力する。
【0035】
図3は、実施形態の単位処理部100間の情報の流れの一例を説明する説明図である。
図3は、単位処理部100間の情報の流れを説明するための具体例として、単位処理部100-1、100-2、100-3、100-4及び100-5の5つの単位処理部100の間の情報の流れを示す。単位処理部100-1は、単位処理部100-2、100-3、100-4及び100-5の4つの他の単位処理部100に接続される。単位処理部100-1は、接続先の他の単位処理部100のひとつである単位処理部100-2に情報を出力する。情報は、例えば、アクチベーションデータである。単位処理部100-1は、接続先の他の単位処理部100のひとつである単位処理部100-2から情報を取得する。
【0036】
単位処理部100-1は、接続先の他の単位処理部100のひとつである単位処理部100-3に情報を出力する。単位処理部100-1は、接続先の他の単位処理部100のひとつである単位処理部100-3から情報を取得する。単位処理部100-1は、接続先の他の単位処理部100のひとつである単位処理部100-4に情報を出力する。単位処理部100-1は、接続先の他の単位処理部100のひとつである単位処理部100-4から情報を取得する。単位処理部100-1は、接続先の他の単位処理部100のひとつである単位処理部100-5に情報を出力する。単位処理部100-1は、接続先の他の単位処理部100のひとつである単位処理部100-5から情報を取得する。
【0037】
図4は、実施形態の単位処理部100間のコンフィギュレーションデータの流れの一例を説明する説明図である。
単位処理部100に入力されたコンフィギュレーションデータはレジスタ114に記憶される。レジスタ114に記憶されたコンフィギュレーションデータに基づいて単位処理部100は、コンフィギュレーションデータが示す他の単位処理部100に接続される。コンフィギュレーションデータは、接続先の他の単位処理部100に出力される。
【0038】
図5は、実施形態の積和演算部102における処理の流れの一例を説明する説明図である。
積和演算部102では、積和演算が実行される。
図5においてxはアクチベーションデータを表し、wはフィルタ係数又は全結合係数を表す。積和演算の中間値は、レジスタ117に記憶される。積和演算の結果である活性(
図5におけるu)は活性化関数に入力される。
図5においてzは、活性uに対応する活性結果を表す。以下、説明の簡単のため、活性化関数は値が1の恒等関数であって活性結果zと活性uとが同一である場合を例にニューラルネットワーク回路1を説明する。
【0039】
<畳み込み層における畳み込み積分の処理>
主演算部10が実行する畳み込み層の畳み込み積分の処理(以下「畳み込み処理」という。)について
図6~
図21を用いて説明する。
【0040】
図6は、実施形態のニューラルネットワーク回路1が実行する畳み込み処理を説明する第1の説明図である。
図6では、説明の簡単のため、I行J列の2階のテンソルで表される層入力データD101の各要素のうちi行j列の要素の値x(i、j)から(i+2)行(j+2)列の要素の値x(i+2、j+2)までの9つの要素を用いて畳み込み処理を説明する。Iは1以上の整数であり、Jは1以上の整数である。iは0以上(I-1)以下の整数であり、jは0以上(J-1)以下の整数である。層入力データD101のチャネル数は1である。以下、アクチベーションデータx(A、B)のAを、アクチベーションデータxの2指標表示の第1指標という。以下、アクチベーションデータx(A、B)のBを、アクチベーションデータxの2指標表示の第2指標という。なお、アクチベーションデータxの2指標表示とは、アクチベーションデータxが2つの指標によって他のアクチベーションデータxと区別される値であることを意味する。なお、以下、説明の中で、上述したA、B以外にもC、D、Eの記号が使われるが、C、D、EもまたA、Bと同様に1つのものを他のものと区別するための指標を示す記号である。
【0041】
上述したように、畳み込みフィルタは、各層において必ずしも1つではなく複数存在してもよい。
図6では、複数存在する畳み込みフィルタのうちの1つとして畳み込みフィルタF101を畳み込みフィルタの具体例として示す。畳み込みフィルタF101は、2行2列であり4つのフィルタ係数を有する畳み込みフィルタである。具体的には、畳み込みフィルタF101はw(0、0)、w(0、1)、w(1、0)及びw(1、1)の4つのフィルタ係数を有する。以下、説明の簡単のため、畳み込みフィルタが2階のテンソルで表される場合であって、特に正方行列で表される場合を例にニューラルネットワーク回路1を説明する。フィルタ係数w(A、B)は、フィルタ係数wが畳み込みフィルタにおけるA行B列目の要素の値であることを示す。以下、フィルタ係数w(A、B)のAを、フィルタ係数wの2指標表示の第1指標という。以下、フィルタ係数w(A、B)のBを、フィルタ係数wの2指標表示の第2指標という。
【0042】
図6(a)は、層入力データD101と畳み込みフィルタF101との畳み込み積分の実行によって、2行2列の特徴マップが取得されることを示す。特徴マップの各要素の値が活性である。具体的には、
図6(a)は、層入力データD101と畳み込みフィルタF101との畳み込み積分の結果、活性u(i、j)、活性u(i、j+1)、活性u(i+1、j)、活性u(i+1、j+1)を有する特徴マップが算出されることを示す。以下、活性u(A、B)のAを活性uの2指標表示の第1指標という。以下、活性u(A、B)のBを活性uの2指標表示の第2指標という。なお、活性uの2指標表示とは、活性uが2つの指標によって他の活性uと区別される値であることを意味する。
【0043】
活性u(i、j)は具体的には、以下の式(1)で表される。
【0044】
【0045】
式(1)におけるPとQとの定義を説明する。畳み込みフィルタがP行Q列のテンソルである場合、pは、0以上P未満の整数である。なお、畳み込みフィルタがP行Q列のテンソルである場合、qは、0以上Q未満の整数である。例えば、畳み込みフィルタが2行2列のテンソルである場合、それぞれ0又は1の値である。
【0046】
第nの畳み込み層(以下「第n畳み込み層」という。)における処理によって取得された特徴マップは、次段(すなわち、第(n+1)の畳み込み層)の層入力データとして次段の畳み込み層に入力される。nは畳み込みニューラルネットワークの各層を区別するための番号であって畳み込みニューラルネットワークにおいて処理が実行されるタイミングが早い層であるほど値が小さな番号である。nは0以上(N-1)以下の整数であって、Nは2以上の整数である。以下、nを層番号という。例えば、第n畳み込み層の次に処理が実行される層は第(n+1)畳み込み層である。次段の層が全結合層である場合には、特徴マップは、全結合層の層入力データとして全結合層に入力される。
【0047】
図6(b)は、特徴マップの1つの要素の値である活性u(i、j)を算出する処理の流れの一例を、活性u(i、j)を算出する積和演算の各項の計算において用いられる層入力データD101の要素を示しながら説明する。畳み込みフィルタF101は2行2列のテンソルであるため、活性u(i、j)は第1項から第4項までの4つの項の和で表される。
図6(b)では、まず第1項が計算され、次に第2項が計算され、次に第3項が計算され、最後に第4項が計算される場合を例に活性u(i、j)を算出する処理を説明する。
【0048】
図6(b)は、第1項の計算には、層入力データD101のアクチベーションデータのうちアクチベーションデータx(i、j)、アクチベーションデータx(i、j+1)、アクチベーションデータx(i+1、j)及びアクチベーションデータx(i+1、j+1)の4つが用いられることを示す。
図6(b)は、第2項の計算には、層入力データD101のアクチベーションデータのうちアクチベーションデータx(i、j+1)、アクチベーションデータx(i、j+2)、アクチベーションデータx(i+1、j+1)及びアクチベーションデータx(i+1、j+2)の4つが用いられることを示す。
図6(b)は、第3項の計算には、層入力データD101のアクチベーションデータのうちアクチベーションデータx(i+1、j)、アクチベーションデータx(i+1、j+1)、アクチベーションデータx(i+2、j)及びアクチベーションデータx(i+2、j+1)の4つが用いられることを示す。
図6(b)は、第4項の計算には、層入力データD101のアクチベーションデータのうちアクチベーションデータx(i+1、j+1)、アクチベーションデータx(i+1、j+2)、アクチベーションデータx(i+2、j+1)及びアクチベーションデータx(i+2、j+2)の4つが用いられることを示す。
【0049】
なお、
図6(b)は説明の簡単のため、第1項、第2項、第3項、第4項の順に計算されることを示すが、計算は必ずしも第1項、第2項、第3項、第4項の順に実行される必要は無い。計算は、例えば、第1項、第3項、第2項、第4項の順に実行されてもよい。
【0050】
図7は、実施形態のニューラルネットワーク回路1が実行する畳み込み演算を説明する第2の説明図である。
図7は、第n畳み込み層への層入力データがチャネル数3であり各チャネルのデータが4行4列の行列で表されるデータである場合を例に畳み込み演算を説明する。
図7において第n畳み込み層への層入力データは、チャネル数が3であり各チャネルのデータが4行4列の行列で表されるデータであるため、3階のテンソルで表されるデータである。以下、層入力データのチャネル数(以下「入力チャネル数」という。)を、NumCH
inの記号で表す。以下、特徴マップのチャネル数(以下「出力チャネル数」という。)を、NumCH
outの記号で表す。出力チャネル数NumCH
outは、畳み込みフィルタの数に等しい。
【0051】
図7は、2つの畳み込みフィルタがそれぞれ層入力データのチャネルごとに適用されることを示す。
【0052】
図7は、層入力データに対してフィルタ1及びフィルタ2の2つの3行3列の畳み込みフィルタが適用された場合に、特徴マップは、出力チャネル数NumCH
outが2であって各チャネルのデータが2行2列の行列で表されるデータであることを示す。
【0053】
ニューラルネットワーク回路1では、複数の畳み込みフィルタがそれぞれ層入力データのチャネルごとに適用されるため、ニューラルネットワーク回路1で算出される活性uは以下の式(2)で表される。
【0054】
【0055】
式(2)におけるCHout及びCHinと、x、u及びwの各指標とについて説明する。
【0056】
式(2)に示すChoutは、特徴マップの各チャネルをそれぞれ区別するための値である。例えば、Chout=Vは(Vは非負の整数)、特徴マップが備える複数のチャネルのうち第V番目のチャネルを表す。以下、CHoutを出力チャネル番号という。
【0057】
式(2)に示すChinは、層入力データの各チャネルをそれぞれ区別するための値である。例えば、Chin=Vは、層入力データが備える複数のチャネルのうち第V番目のチャネルを表す(Vは非負の整数)。以下、CHin(すなわちV)を入力チャネル番号という。
【0058】
式(2)におけるアクチベーションデータxは4つの指標によって他のアクチベーションデータxと区別されている。具体的には、アクチベーションデータxはx(A、B、C、D)と表されることで他のアクチベーションデータと区別されている。アクチベーションデータx(A、B、C、D)は、アクチベーションデータxが、層番号Aの層に入力される層入力データの要素の値であって、入力チャネル番号BのデータのうちC行D列の要素の値であることを示す。すなわち、アクチベーションデータxの4指標表示の第1指標Aは、アクチベーションデータxを有する層入力データの入力先の層番号nを表す。アクチベーションデータxの4指標表示の第2指標Bは、入力チャネル番号Chinを表す。また、アクチベーションデータxの4指標表示の第3指標C及び第4指標Dは、アクチベーションデータxが2階のテンソルのC行D列に位置する要素の値であることを示す。なお、前述したアクチベーションデータx(A、B)は、入力チャネル数と出力チャネル数とが1の場合におけるアクチベーションデータx(A、B、C、D)を表す。なお、アクチベーションデータxの4指標表示とは、アクチベーションデータxが4つの指標によって他のアクチベーションデータxと区別される値であることを意味する。
【0059】
活性u(A、B、C、D)は、活性uが、層番号Aの層における演算の結果であって、特徴マップにおける出力チャネル番号BのデータのうちのC行D列の要素の値であることを示す。すなわち、活性uの4指標表示の第1指標Aは、活性uを出力する演算が実行された層の層番号nを表す。活性uの4指標表示の第2指標Bは、出力チャネル番号Choutを表す。また、活性uの4指標表示の第3指標C及び第4指標Dは、活性uが2階のテンソルのC行D列に位置する要素の値として、第1バッファ記憶部11に記憶される値であることを示す。なお、前述した活性u(A、B)は、入力チャネル数と出力チャネル数とが1の場合における活性u(A、B、C、D)を表す。なお、活性uの2指標表示とは、活性uが4つの指標によって他の活性uと区別される値であることを意味する。
【0060】
w(A、B、C、D、E)は、フィルタ係数を表す。フィルタ係数wの5指標表示の第1指標Aは、畳み込み積分の演算が実行される層番号nを表す。フィルタ係数wの5指標表示の第2指標Bは、畳み込み積分の実行時にフィルタ係数wに掛け算されるアクチベーションデータxが属する入力チャネル番号Chinを表す。フィルタ係数wの5指標表示の第3指標Cは、畳み込み積分の実行結果である特徴マップにおける出力チャネル番号CHoutを表す。フィルタ係数wの5指標表示の第4指標D及び第5指標Eは、フィルタ係数wが畳み込みフィルタを表す2階のテンソルのD行E列に位置する要素の値であることを示す。なお、フィルタ係数wの5指標表示とは、フィルタ係数wが5つの指標によって他のフィルタ係数wと区別される値であることを意味する。
【0061】
b(n、CHout)は、バイアスである。バイアスb(n、CHout)は、層番号uの層における演算に用いられるバイアスであって、出力チャネル番号CHoutの活性uを算出する演算に用いられるバイアスであることを示す。なお、バイアスbは0であってもよく、畳み込み処理においては、0である。そこで、以下、説明の簡単のため、バイアスbが0である場合を例にニューラルネットワーク回路1における畳み込み処理を説明する。
【0062】
図8は、実施形態の第1バッファ記憶部11から各単位処理部100へ出力される情報の流れを説明する図である。
【0063】
図8は、単位処理部100_0_0から単位処理部100_(R_1)_(S_1)までの(R×S)個(RはCH
in以上の整数。SはJ以上の整数)の単位処理部100を示す。Rは、入力チャネル数NumCH
inの数に同一であることが望ましい。Sは、層入力データの列の数Jに同一であることが望ましい。以下、説明の簡単のため、単位処理部100_(r_1)_(s_1)をPB(r-1、s-1)という。なお、rは0以上(R-1)以下の整数であり、sは0以上(S-1)以下の整数である。以下、PB(A、B)のAをPBの第1指標という。PB(A、B)のBをPBの第2指標という。PBの第1指標は、格子状に配置された単位処理部100が属する列を示す。PBの第2指標は、格子状に配置された単位処理部100が属する行を示す。PBの第2指標が同じでありPBの第1指標の差が1である2つの単位処理部100は、互いに隣接する。PBの第1指標が同じでありPBの第2指標の差が1である2つの単位処理部100は、互いに隣接する。
【0064】
第1バッファ記憶部11は、各単位処理部100に情報を直接送信可能である。直接送信可能とは、単位処理部100を介して他の単位処理部100に情報を送信する必要はない、ことを意味する。
【0065】
図9は、実施形態の第2バッファ記憶部12から各単位処理部100へ出力される情報の流れを説明する図である。
第2バッファ記憶部12は、各単位処理部100に情報を直接送信可能である。
【0066】
図10は、実施形態の単位処理部100から第1バッファ記憶部11へ出力される情報の流れを説明する図である。
第1バッファ記憶部11は、各単位処理部100から情報を直接受信可能である。直接受信可能とは、単位処理部100を介して他の単位処理部100が送信した情報を受信する必要はない、ことを意味する。
【0067】
図11は、実施形態の単位処理部100から第2バッファ記憶部12へ出力される情報の流れを説明する図である。
単位処理部100は、予め定められた他の単位処理部100に情報を送信可能である。予め定められた他の単位処理部100とは、コンフィギュレーションデータが示す接続先の単位処理部100である。
【0068】
図11は、PB(0、0)からPB(1、0)への情報の送信が可能であることを示す。
図11は、PB(1、0)からPB(2、0)への情報の送信が可能であることを示す。
図11は、PB(S-1、0)からPB(0、0)への情報の送信が可能であることを示す。このように、PBの第1指標が(S-1)である単位処理部100以外の各単位処理部100は、畳み込み演算において、PBの第2指標が同一であり第1指標が1だけ増加する単位処理部100に情報を送信可能である。PBの第1指標が(S-1)である単位処理部100は、PBの第2指標が同一でありPBの第1指標が0である単位処理部100に情報を送信可能である。
【0069】
図12は、実施形態の第1バッファ記憶部11から主演算部10へ出力される情報の出力先を説明する図である。以下、説明の簡単のため、層入力データは入力チャネル数NumCh
inが64のデータであって各チャネルが有するデータが64行64列の2階のテンソルで表されるデータである場合を例にニューラルネットワーク回路1を説明する。ただし、以下の説明は、入力チャネル数が64でなくてもよい。また、各チャネルが有するデータも2階のテンソルで表されるデータであれば64行64列でなくてもよい。また、各チャネルが有するデータは、2階のテンソルで表されるデータであれば正方行列でなくてもよい。
【0070】
図12は、層入力データは入力チャネル番号が0から63までの64チャネルのデータであることを示す。また、
図12は、第1バッファ記憶部11に記憶された各チャネルのデータが、行数が0行目から63行目までの64であって列数が0列目から63列目までの64である64行64列のテンソルで表されるデータであることを示す。
【0071】
図12は、層入力データの各チャネルの0行目のデータが主演算部10へ出力されることを示す。主演算部10の単位処理部100には、単位処理部100にひとつのアクチベーションデータが入力されることを示す。例えば、PB(0、0)には、入力チャネル番号が0のデータのうち0行0列目のアクチベーションデータx(0、0、0、0)が入力される。
【0072】
図12は、主演算部10には、以下の第1アクチベーションデータ入力規則及び第2アクチベーションデータ入力規則にしたがって、層入力データが入力されることを示す。第1アクチベーションデータ入力規則は、PBの第1指標が同じ単位処理部100には入力チャネル番号が同じアクチベーションデータxが入力される、という規則である。第2アクチベーションデータ入力規則は、PBの第2指標が同じ単位処理部100には、第2指標が異なり第3指標が同じアクチベーションデータxが入力される、という規則である。
【0073】
図13は、実施形態の主演算部10から第1バッファ記憶部11へ出力される情報の出力元を説明する図である。
以下、説明の簡単のため、特徴マップは出力チャネル数NumCh
outが64であって、各チャネルが有するデータが64行64列の2階のテンソルで表されるデータである場合を例にニューラルネットワーク回路1を説明する。ただし、以下の説明は、出力チャネル数が64でなくてもよい。また、各チャネルが有するデータも2階のテンソルで表されるデータであれば64行64列でなくてもよい。また、各チャネルが有するデータは、2階のテンソルで表されるデータであれば正方行列でなくてもよい。
【0074】
図13は、主演算部10の各単位処理部100の演算の結果である活性u(すなわち活性結果z)が、特徴マップにおける各チャネルの0行目の各要素の値として第1バッファ記憶部11に記憶されることを示す。例えば、PB(0、0)による演算の結果であるu(0、0、0、0)は、特徴マップにおける出力チャネル番号が0の0行0列目の要素の値として、第1バッファ記憶部11に記憶されることを示す。
【0075】
図13は、PBの第1指標が同じ単位処理部100が算出した活性uは、特徴マップの各要素のうち出力チャネル番号が同じ要素の値として第1バッファ記憶部11に記憶されることを示す。
図13は、PBの第2指標が同じ単位処理部100が算出した活性uは、特徴マップの各要素のうち出力チャネル番号Ch
outが異なり入力チャネル番号Ch
inが同じである要素の値として第1バッファ記憶部11に記憶されることを示す。
【0076】
図14~
図20を用いて、畳み込み処理の流れの一例を説明する。畳み込み処理では、まず、層入力データの各チャネルのデータの1行目のデータが主演算部10に入力される。次に、畳み込みフィルタのフィルタ係数のうちの予め定められた1つのフィルタ係数(以下「初期フィルタ係数」という。)について後述する畳み込み処理の2番目~6番目までの処理が実行される。次に、フィルタ係数に対して予め定められた所定の順番にしたがい、畳み込みフィルタの他のフィルタ係数について、フィルタ係数ごとに2番目から6番目までの処理が実行される。以下、層入力データの各チャネルのデータの2行目のデータが主演算部10に入力され、各フィルタ係数について2番目~6番目の処理が実行される。以下同様にして、以下、層入力データの各チャネルのデータの最後の行(例えば64行目)まで同様の処理が実行される。
【0077】
以下、畳み込みフィルタがw
11、w
12、w
21、w
22の4のフィルタ係数を有する場合を例に畳み込み処理の流れの一例を説明する。また、以下、初期フィルタ係数がw
11である場合を例に畳み込み処理の流れの一例を説明する。以下、説明の簡単のため
図14~
図18では、層入力データの各チャネルのデータの1行目のデータが主演算部10に入力された場合であってフィルタ係数がw
11である場合を例に畳み込み処理の流れの一例を説明する。そして
図19では、2番目~6番目の処理が実行されるフィルタ係数がw
11からw
12に変更される際の、主演算部10中のデータの変化を説明する。
図20は、層入力データの各チャネルのデータの他の行のデータについて畳み込み処理を実行する場合に、主演算部10に入力されるデータを説明する。
【0078】
図14は、実施形態における畳み込み処理の1番目の処理を説明する説明図である。
図14は、畳み込み処理の1番目の処理では、第1アクチベーションデータ入力規則及び第2アクチベーションデータ入力規則にしたがって主演算部10に層入力データが入力されることを示す。
【0079】
図15は、実施形態における畳み込み処理の2番目の処理を説明する説明図である。2番目の処理は1番目の処理の次に実行される。
【0080】
図15において、w
ABは、5指標表示の第4指標がAで5指標表示の第5指標がBのフィルタ係数wを表す。例えば、w
12は、5指標表示の第4指標が1で5指標表示の第5指標が2のフィルタ係数wを表す。畳み込み処理の2番目の処理においては、5指標表示の第4指標及び第5指標が1のフィルタ係数wが主演算部10に入力される。
【0081】
図15は、畳み込み処理の2番目の処理では、第2バッファ記憶部12が記憶する畳み込みフィルタのフィルタ係数がフィルタ入力規則にしたがって主演算部10に入力されることを示す。フィルタ入力規則は、以下の規則条件1を満たす単位処理部100に規則条件2を満たすフィルタ係数wが入力されるという規則である。規則条件1は、フィルタ係数wの5指標表示の第1指標が表す層番号と同じ層番号を4指標表示の第1指標が表す単位処理部100であるという条件を含む。規則条件1は、フィルタ係数wの5指標表示の第2指標が表す入力チャネル番号と同じ入力チャネル番号を4指標表示の第2指標が表すアクチベーションデータxが入力されている単位処理部100である、という条件を含む。規則条件2は、規則条件1を満たす単位処理部100に入力されているアクチベーションデータxの4指標表示の第1指標が表す層番号と同じ層番号を5指標表示の第1指標が表すフィルタ係数wである、という条件を含む。規則条件2は、条件1を満たす単位処理部100に入力されているアクチベーションデータxの4指標表示の第2指標が表す入力チャネル番号と同じ入力チャネル番号を5指標表示の第2指標が表すフィルタ係数wである、という条件を含む。
【0082】
畳み込み処理の2番目の処理では、各単位処理部100に入力されたフィルタ係数w11と、畳み込み処理の1番目の処理で各単位処理部100に入力されたアクチベーションデータxとの積を算出する処理が各単位処理部100において実行される。
【0083】
図16は、実施形態における畳み込み処理の3番目の処理を説明する説明図である。3番目の処理は2番目の処理の次に実行される。
畳み込み処理の3番目の処理においては、各単位処理部100が接続先の単位処理部100に、直前の処理で用いたアクチベーションデータxを出力する。例えば、
図16は、PB(63、0)が畳み込み処理の2番目の処理で用いたアクチベーションデータx(0、63、0、0)をPB(0、0)に出力することを示す。すなわち、PB(0、0)には、アクチベーションデータx(0、63、0、0)が入力される。
【0084】
図17は、実施形態における畳み込み処理の4番目の処理を説明する説明図である。4番目の処理は3番目の処理の次に実行される。畳み込み処理の4番目の処理においては、フィルタ入力規則にしたがって主演算部10にフィルタ係数wが入力される。
【0085】
図18は、実施形態における畳み込み処理の5番目の処理を説明する説明図である。5番目の処理は4番目の処理の次に実行される。
畳み込み処理の5番目の処理においては、各単位処理部100が接続先の単位処理部100に、直前の処理で用いたアクチベーションデータxを出力する。例えば、
図18は、PB(63、0)が畳み込み処理の4番目の処理で用いたアクチベーションデータx(0、62、0、0)をPB(0、0)に出力することを示す。すなわち、PB(0、0)には、アクチベーションデータx(0、62、0、0)が入力される。
【0086】
図19は、実施形態における畳み込み処理の6番目の処理を説明する説明図である。6番目の処理は5番目の処理の次に実行される。
畳み込み処理の6番目の処理においては、各PBは、PBの第2指標がひとつ大きな値であり第1指標が同じ接続先のPBからアクチベーションデータxが入力される。
図14と
図19とを比較すると、
図19で各PBが記憶するアクチベーションデータxが
図14で各PBが記憶するアクチベーションデータxに比べて、4指標表示の第4指標の値が1だけ異なっている。
【0087】
畳み込み処理の6番目の処理の実行後、次のフィルタ係数について2番目~6番目の処理が実行される。次のフィルタ係数とは、例えばw
11のフィルタ係数について2番目~6番目の処理が実行された次であればw
12のフィルタ係数である。このようにして、層入力データの各チャネルの1行目のデータに対し畳み込みフィルタが備える全てのフィルタ係数について2番目~6番目の処理が実行される。次に、
図20に示す処理が実行される。
【0088】
図20は、実施形態における畳み込み処理の7番目の処理を説明する説明図である。
図20は、層入力データの各チャネルの2行目のデータが主演算部10に入力されることを示す。7番目の処理の実行後、畳み込みフィルタが備える全てのフィルタ係数について2番目~6番目の処理が実行される。次に、層入力データの各チャネルの次の行のデータが主演算部10に入力される。次の行とは、例えば、直前の行が2行目であれば3行目である。次の行とは、例えば、直前の行がi行目であれば(i+1)行目である。
【0089】
図21は、実施形態における畳み込み処理の流れの一例を説明するフローチャートである。
図21において、副畳み込み処理とは、畳み込み処理の2番目から6番目の処理を全てのフィルタ係数について実行する処理である。
【0090】
畳み込み処理が開始される(ステップS101)。主演算部10に層入力データの各チャネルの1行目のアクチベーションデータxが第1バッファ記憶部11から入力される(ステップS102)。副畳み込み処理の実行が開始される(ステップS103)。副畳み込み処理において、まず、畳み込み処理の2番目の処理が実行される(ステップS104)。次に、畳み込み処理の3番目の処理が実行される(ステップS105)。次に、畳み込み処理の4番目の処理が実行される(ステップS106)。次に、畳み込み処理の5番目の処理が実行される(ステップS107)。次に、畳み込み処理の6番目の処理が実行される(ステップS108)。全てのフィルタ係数についてステップS104~ステップS108の処理が実行されると、ステップS102で入力されたアクチベーションデータxに対する副畳み込み処理が終了する(ステップS109)。層入力データの全ての行のアクチベーションデータxに対して副畳み込み処理が実行されたか否かが判定される(ステップS110)。ステップS110の判定は例えば制御部14によって判定される。副畳み込み処理が実行されていない行が有る場合(ステップS110:YES)、主演算部10に、層入力データの各チャネルの未だ副畳み込み処理が実行されていない行のアクチベーションデータxが第1バッファ記憶部11から入力される(ステップS111)。未だ副畳み込み処理が実行されていない行が複数ある場合、予め定められた処理の順番でアクチベーションデータxが入力される。予め定められた所定の順番は、例えば、行の番号が小さい順番である。次に、ステップS103の処理に戻り、ステップS109までの処理が実行され、ステップS110の判定が行われる。一方、副畳み込み処理が実行されていない行が無い場合(ステップS110:NO)、畳み込み処理が終了する(ステップS112)。
【0091】
このように構成された実施形態のニューラルネットワーク回路1は、畳み込み層の処理において、第1バッファ記憶部11及び第2バッファ記憶部12から主演算部10に入力されたデータが、単位処理部100から他の単位処理部100に出力される。このため、主演算部10が第1バッファ記憶部11及び第2バッファ記憶部12からデータを読み出す機会が少ない。このことは、ニューラルネットワーク回路1が、第1外部メモリ91及び第2外部メモリ92からデータを読み出す機会が少ないことを意味する。そのため、このように構成されたニューラルネットワーク回路1は、畳み込み層の処理において、畳み込みニューラルネットワークにおける演算速度を向上させることができる。また、第1外部メモリ91及び第2外部メモリ92からデータを読み出す機会が少ないため、ニューラルネットワーク回路1は、消費電力の少ない回路である。
【0092】
<全結合層における処理>
主演算部10が実行する全結合層における処理(以下「全結合処理」という。)について
図22~
図32を用いて説明する。全結合層における処理の説明においては、記号wは、フィルタ係数ではなく全結合係数を表す。
【0093】
図22は、実施形態における全結合処理の概要を説明する説明図である。
図22におけるx
0、x
1、x
2及びx
3はアクチベーションデータを表す。
図22におけるw
00、w
01、w
02及びw
03は全結合係数を表す。
図22におけるu
0、u
1、u
2及びu
3は、活性を表す。
【0094】
全結合処理では、x
0、x
1、x
2及びx
3のそれぞれについて予め定められた全結合係数が乗算される。
図22において、全結合係数w
ABは、活性u
Aを算出する演算においてアクチベーションデータx
Bに対して乗算される値であることを示す。すなわち、全結合係数wは2つの指標によって他の全結合係数と区別される値であって、全結合係数w
ABの第1指標Aは活性u
Aの算出に用いられる値であることを表す。また、全結合係数w
ABの第2指標Bは乗算先のアクチベーションデータx
Bを表す。全結合処理では、乗算後の値の和を1つの活性として出力する。例えば、
図22の例では、x
0とw
00との積と、x
1とw
01との積と、x
2とw
02との積と、x
3とw
03との積との和が活性u
0として出力される。他の活性uについても同様であり、
図22の例で算出される活性uを数式で表せば、以下の式(3)~式(5)で表される。
【0095】
【0096】
【0097】
【0098】
このように、全結合処理においては、複数の活性uAが算出される。そこで、全結合処理の実行のため、制御用バッファ記憶部13は、予め、各活性uAについて全結合層の処理において活性uAを算出するために用いられる単位処理部100を示す情報(以下「全結合対応情報」という。)が記憶されている。
【0099】
図23は、実施形態の全結合処理の実行時の単位処理部100間のデータの流れの一例を説明する第1の説明図である。
図23は、単位処理部100には、コンフィギュレーションデータによって接続先として示された他の単位処理部100からデータが入力されることを示す。
図23の例では、例えば、PB(1、1)には、PB(0、1)、PB(1、0)、PB(1、2)及びPB(2、1)からデータが入力される。
【0100】
図24は、実施形態の全結合処理の実行時の単位処理部100間のデータの流れの一例を説明する第2の説明図である。
図24は、単位処理部100には、コンフィギュレーションデータによって接続先として示された他の単位処理部100にデータが出力されることを示す。
図24の例では、例えば、PB(1、1)から、PB(0、1)、PB(1、0)、PB(1、2)及びPB(2、1)にデータが出力される。
【0101】
図25~
図31を用いて、全結合処理の流れの一例を説明する。全結合処理は、後述する1番目の処理から6番目までの処理を含む。全結合処理では、後述する1番目から6番目までの処理の実行後、4番目の処理から6番目の処理が所定の終了条件を満たすまで繰り返される。所定の終了条件は、例えば、全結合係数の全てが活性uの算出に用いられた、という条件である。
【0102】
図25は、実施形態における全結合処理の1番目の処理の一例を説明する説明図である。全結合処理の1番目の処理では、予め対応付けられた単位処理部100に第1バッファ記憶部11からアクチベーションデータxが入力される。全結合処理におけるアクチベーションデータは、例えば、畳み込み処理によって算出された活性である。
【0103】
図25の例は、PB(0、0)にアクチベーションデータx
0が入力されていることを示す。
図25の例は、PB(0、1)にアクチベーションデータx
1が入力されていることを示す。
図25の例は、PB(1、0)にアクチベーションデータx
2が入力されていることを示す。
図25の例は、PB(1、1)にアクチベーションデータx
3が入力されていることを示す。すなわち、
図25の例は、式(5)の計算におけるアクチベーションデータx
0、x
1、x
2、x
3が主演算部10に読み出されていることを示す。すなわち、
図25の例では、以下の式(7)における点線で囲まれた値が単位処理部100に読み出されていることを示す。
【0104】
【0105】
図26及び
図27は、全結合処理の2番目の処理を説明する説明図である。
図26は、実施形態における全結合処理の2番目の処理の一例を説明する第1の説明図である。2番目の処理は1番目の処理の次に実行される。全結合処理の2番目の処理では、全結合係数入力第1規則にしたがって第2バッファ記憶部12が記憶する全結合係数が主演算部10に入力される。全結合係数入力第1規則は、以下の規則条件3を満たす単位処理部100に以下の規則条件4及び規則条件5を満たす全結合係数wが入力されるという規則である。規則条件3は、入力予定の全結合係数w
ABの第2指標が示すアクチベーションデータx
Bが1番目の処理によって入力された単位処理部100である、という条件である。規則条件4は、入力先の単位処理部100には第2指標が示すアクチベーションデータx
Bが1番目の処理によって入力済みである、という条件である。規則条件5は、入力先の単位処理部100は、第1指標が示す活性u
Aを算出するための単位処理部100であることが全結合対応情報によって示されている、という条件である。
【0106】
図26は、第2バッファ記憶部12から全結合係数が主演算部10に入力されることを示す。具体的には、
図26は、全結合係数w
00がPB(0、0)に入力され、全結合係数w22がPB(1、0)に入力されることを示す。すなわち、
図26の例では、以下の式(7)における点線で囲まれた値が対応する単位処理部100に読み出されていることを示す。
【0107】
【0108】
図27は、実施形態における全結合処理の2番目の処理の一例を説明する第2の説明図である。
図27は、第2バッファ記憶部12から全結合係数が主演算部10に入力されることを示す。具体的には、
図27は、全結合係数w
11がPB(0、1)に入力され、全結合係数w33がPB(1、1)に入力されることを示す。すなわち、
図27の例では、以下の式(8)における点線で囲まれた値が対応する単位処理部100に読み出されていることを示す。
【0109】
【0110】
図28は、実施形態における全結合処理の3番目の処理の一例を説明する説明図である。3番目の処理は2番目の処理の次に実行される。
全結合処理の3番目の処理においては、全結合処理の1番目の処理と2番目の処理とで各単位処理部100に入力された値の積が各単位処理部100で計算される。すなわち、
図25~
図27の例では、以下の式(9)における点線で囲まれた項の値が算出される。算出された値(以下「全結合積結果」という。)は、各単位処理部100が備えるレジスタ117に記憶される。
【0111】
【0112】
図29は、実施形態における全結合処理の4番目の処理の一例を説明する説明図である。4番目の処理は3番目の処理の次、又は、後述する6番目の処理の次に実行される。
全結合処理の4番目の処理では、各単位処理部100が接続先の単位処理部100に、直前の処理で用いたアクチベーションデータxを出力する。例えば、
図29は、PB(1、0)が全結合処理の3番目の処理で用いたアクチベーションデータx
2をPB(0、0)に出力することを示す。すなわち、PB(0、0)には、アクチベーションデータx
2が入力される。より具体的には、
図29の例では、全結合処理の4番目の処理により、以下の式(10)における点線で囲まれた項の値が対応する単位処理部100に入力される。
【0113】
【0114】
図30は、実施形態における全結合処理の5番目の処理の一例を説明する説明図である。5番目の処理は4番目の処理の次に実行される。
全結合処理の5番目の処理においては、全結合係数入力第2規則にしたがって第2バッファ記憶部12が記憶する全結合係数が主演算部10に入力される。全結合係数入力第2規則は、以下の規則条件6を満たす単位処理部100に以下の規則条件7及び規則条件8を満たす全結合係数wが入力されるという規則である。規則条件6は、全結合処理の直前の処理(すなわち全結合処理の4番目の処理)において全結合係数w
ABの第2指標が示すアクチベーションデータx
Bが入力された単位処理部100である、という条件を含む。規則条件7は、規則条件3を満たす単位処理部100に入力されているアクチベーションデータx
Bを第2指標が示す全結合係数である、という条件を含む。規則条件8は、第1指標が示す活性u
Aが、全結合処理の2番目の処理において規則条件3を満たす単位処理部100に入力された全結合係数の第1指標が示す活性u
Aである、という条件を含む。
【0115】
例えば、
図30の例では、PB(0、0)には全結合係数w
02が入力される。例えば、
図30の例では、PB(0、1)には全結合係数w
10が入力される。例えば、
図30の例では、PB(1、0)には全結合係数w
23が入力される。例えば、
図30の例では、PB(1、1)には全結合係数w
31が入力される。より具体的には、
図30の例では、全結合処理の5番目の処理により、以下の式(11)における点線で囲まれた項の値が対応する単位処理部100に入力される。
【0116】
【0117】
図31は、実施形態における全結合処理の6番目の処理の一例を説明する説明図である。6番目の処理は5番目の処理の次に実行される。
全結合処理の6番目の処理においては、全結合処理の4番目の処理で入力されたアクチベーションデータと全結合処理の5番目の処理で入力された全結合係数との積が計算される。算出された値は、全結合積結果としてレジスタ117に記憶される。例えば、
図31の例では、以下の式(12)における点線で囲まれた項の値が算出される。
【0118】
【0119】
図32は、実施形態における全結合処理の流れの一例を示すフローチャートである。
全結合処理が開始される(ステップS201)。全結合処理の1番目の処理が実行される(ステップS202)。次に、全結合処理の2番目の処理が実行される(ステップS203)。次に、全結合処理の3番目の処理が実行される(ステップS204)。次に、全結合処理の4番目の処理が実行される(ステップS205)。次に、全結合処理の5番目の処理が実行される(ステップS206)。次に、全結合処理の6番目の処理が実行される(ステップS207)。全結合係数の全てが活性uの算出に用いられたか否かが判定される(ステップS208)。ステップS208の判定は例えば制御部14によって判定される。活性uの算出に用いられていない全結合係数が有る場合(ステップS208:YES)、ステップS205の処理が実行される。一方、活性uの算出に用いられていない全結合係数が無い場合(ステップS208:NO)、各単位処理部100は、ステップS201以降に各単位処理部100がレジスタ117に記憶した全結合積結果の和を算出する(ステップS209)。算出された和が、活性uである。ステップS209の次に、全結合処理が終了する(ステップS210)。
【0120】
このように構成された実施形態のニューラルネットワーク回路1は、全結合層の処理において、第1バッファ記憶部11及び第2バッファ記憶部12から主演算部10に入力されたデータが、単位処理部100から他の単位処理部100に出力される。このため、主演算部10が第1バッファ記憶部11及び第2バッファ記憶部12からデータを読み出す機会が少ない。このことは、ニューラルネットワーク回路1が、第1外部メモリ91及び第2外部メモリ92からデータを読み出す機会が少ないことを意味する。そのため、このように構成されたニューラルネットワーク回路1は、全結合層の処理において、畳み込みニューラルネットワークにおける演算速度を向上させることができる。また、第1外部メモリ91及び第2外部メモリ92からデータを読み出す機会が少ないため、ニューラルネットワーク回路1は、消費電力の少ない回路である。
【0121】
また、このように構成された実施形態のニューラルネットワーク回路1は、制御部14の制御によりコンフィギュレーションデータに基づいて単位処理部100間の接続関係を変更することができる。そのため、ニューラルネットワーク回路1は同一の回路で、畳み込み層の処理と全結合層の処理とを実行することができる汎用性の高い回路である。
【0122】
(変形例)
なお、主演算部10において単位処理部100は、必ずしも格子状に2次元的に配置されている必要は無い。複数の単位処理部100は、コンフィギュレーションデータが示す接続関係で他の単位処理部100に接続可能な位置に配置されればどのように配置されてもよい。例えば、単位処理部100は、3次元的に配置されていてもよい。例えば、各単位処理部100は、立方格子の各頂点に位置してもよい。
【0123】
なお、第1バッファ記憶部11は、第1記憶部の一例である。なお、第2バッファ記憶部12は、第2記憶部の一例である。なお、単位処理部100は演算部の一例である。なお、フィルタ係数及び全結合係数は重みデータの一例である。なお、アクチベーションデータとフィルタ係数との積と、アクチベーションデータと全結合係数との積とは、項値の一例である。なお、
図15及び
図17における各フィルタ係数と、
図26~
図31における各全結合係数とは、重みデータに関する所定の条件を満たす1つの前記重みデータの一例である。なお、規則条件1、規則条件2、規則条件4、規則条件5、規則条件7及び規則条件8は、重みデータに関する所定の条件の一例である。
【0124】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【0125】
1…ニューラルネットワーク回路、 10…主演算部、 11…第1バッファ記憶部、 12…第2バッファ記憶部、 13…制御用バッファ記憶部、 14…制御部、 100…単位処理部、 101…接続部、 102…積和演算部、 111…入力制御回路、 112…重み制御回路、 113…出力制御回路、 114、115、116、117…レジスタ、 118…フィードバック導線、 201…積和演算回路、 202…活性化回路