(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-01-24
(45)【発行日】2022-02-01
(54)【発明の名称】データ処理装置、及びこれにおけるデータ処理方法
(51)【国際特許分類】
G06F 15/80 20060101AFI20220125BHJP
G06F 17/10 20060101ALI20220125BHJP
G06N 3/063 20060101ALI20220125BHJP
G06F 15/173 20060101ALI20220125BHJP
【FI】
G06F15/80
G06F17/10 A
G06N3/063
G06F15/173 683D
(21)【出願番号】P 2017117686
(22)【出願日】2017-06-15
【審査請求日】2020-05-11
(73)【特許権者】
【識別番号】506301140
【氏名又は名称】公立大学法人会津大学
(74)【代理人】
【識別番号】100094525
【氏名又は名称】土井 健二
(74)【代理人】
【識別番号】100094514
【氏名又は名称】林 恒徳
(72)【発明者】
【氏名】富岡 洋一
(72)【発明者】
【氏名】スタニスラフ セドゥーキン
【審査官】井上 宏一
(56)【参考文献】
【文献】特開2014-016957(JP,A)
【文献】特開2012-133793(JP,A)
【文献】特開平06-318194(JP,A)
【文献】特開昭60-175174(JP,A)
【文献】生垣 佑樹,外2名,「3次元DCTを効率的に実行するアレイプロセッサの提案」,第71回(平成21年)全国大会講演論文集(1) アーキテクチャ ソフトウェア科学・工学 データベースとメディア,社団法人情報処理学会,2009年03月10日,pp.1-209~1-210
(58)【調査した分野】(Int.Cl.,DB名)
G06F 15/80
G06F 15/173
G06F 17/10
G06N 3/063
(57)【特許請求の範囲】
【請求項1】
乗算及び加算機能を有する複数のプロセッシングエレメントを3次元方向に有するデータ処理装置であって、
前記複数のプロセッシングエレメントが、Z軸方向に積層された複数の2次元面のそれぞれに配置され、
前記2次元面に配置されたプロセッシングエレメントはトーラスネットワークに接続され、Z軸方向の上下面に隣接するプロセッシングエレメントが、ネットワークで双方向に接続され、
前記複数の2次元面のそれぞれに対応して、前記2次元面に配置されるプロセッシングエレメントに、特徴重みをブロードキャストするフィルタメモリを有し、
入力データがZ軸方向の上位面の2次元面から下面に順次配置され、
一の
2次元面に配置されたプロセッシングエレメントの各々は、前記乗算機能により前記入力データと前記特徴重みを乗算し、更に
前記2次元面で隣接するプロセッシングエレメントからの転送データと前記乗算の結果を加算し、次いで
前記2次元面の反対側に隣接するプロセッシングエレメントに前記加算演算結果を転送し、
前記乗算と加算と転送を繰り返して前記入力データの2次元畳み込みを行
い、更に、
それぞれの2次元面のプロセッシングエレメントは、自身のデータと前記Z軸方向の一つ下の面からの畳み込みデータを足し、前記Z軸方向の一つ上の面に転送するようにして、
前記入力データの2次元畳込みを行なったデータを、前記Z軸方向の最下面から最上面まで上方向に転送する、
ことを特徴とするデータ処理装置。
【請求項2】
請求項1において、
前記Z軸方向の最上位面にあるプロセッシングエレメントは、下面の複数のプロセッシングエレメントから転送される2次元畳み込みデータと自身のデータを加算して2.5次元畳み込みデータを演算する、
ことを特徴とするデータ処理装置。
【請求項3】
請求項2において、
前記最上位面にあるプロセッシングエレメントから前記2.5次元畳み込みデータを、順次下面のプロセッシングエレメントにシフトする、
ことを特徴とするデータ処理装置。
【請求項4】
請求項1乃至3の何れか1項において、
前記特徴重みは、前記入力データの配置された2次元面の数で分割され、前記入力データの配置された面毎に対応するフィルタメモリに配置され、前記畳み込みの演算の際、前記フィルタメモリに配置された特徴重みを、対応する面の全てのプロセッシングエレメントにブロードキャストする、
ことを特徴とするデータ処理装置。
【請求項5】
乗算及び加算機能を有する複数のプロセッシングエレメントを3次元方向に有するデータ処理装置におけるデータ処理方法であって、
前記データ処理装置は、複数のプロセッシングエレメントが、Z軸方向に積層された複数の2次元面のそれぞれに配置され、
前記2次元面に配置されたプロセッシングエレメントはトーラスネットワークに接続され、Z軸方向の上下面に隣接するプロセッシングエレメントが、ネットワークで双方向に接続され、
前記複数の2次元面のそれぞれに対応して、前記2次元面に配置されるプロセッシングエレメントに、特徴重みをブロードキャストするフィルタメモリを有し、
入力データがZ軸方向の上位面の2次元面から下面に順次配置する工程と、
一の
2次元面に配置されたプロセッシングエレメントの各々で、
前記乗算機能により前記入力データと前記特徴重みを乗算する工程と、
前記2次元面で隣接するプロセッシングエレメントからの転送データと前記乗算の結果を加算する工程と、
次いで
前記2次元面の反対側に隣接するプロセッシングエレメントに前記加算演算結果を転送する工程を有し、
前記乗算する工程、加算する工程及び転送する工程を繰り返して前記入力データの2次元畳込みを行
い、更に、
それぞれの2次元面のプロセッシングエレメントは、自身のデータと前記Z軸方向の一つ下の面からの畳み込みデータを足し、前記Z軸方向の一つ上の面に転送するようにして、
前記入力データの2次元畳込みを行なったデータを、前記Z軸方向の最下面から最上面まで上方向に転送する、
ことを特徴とするデータ処理方法。
【請求項6】
請求項5において、
前記Z軸方向の最上位面にあるプロセッシングエレメントは、下面の複数のプロセッシングエレメントから転送される2次元畳み込みデータと自身のデータを加算して2.5次元畳み込みデータを演算する工程を、
有することを特徴とするデータ処理方法。
【請求項7】
請求項6において、
前記最上位面にあるプロセッシングエレメントから前記2.5次元畳み込みデータを、順次下面のプロセッシングエレメントにシフトする工程を、
有することを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理装置、及びこれにおけるデータ処理方法に関し、特に、畳み込みニューラルネットワークにおける畳み込み演算に適したデータ処理装置、及びこれにおけるデータ処理方法に関する。
【背景技術】
【0002】
ニューラルネットワークに畳み込み(圧縮処理:Convolution))を追加した畳み込みニューラルネットワーク(Convolutional Neural Network:以下適宜CNNと表記)が、特に画像認識に有効な機械学習として広く認識されている。
【0003】
図1は、CNNのシステム構成の概略を示す図である。入力データに対して、複数の層(レイヤーL1-L5))構造で処理を行う。
【0004】
図1では、レイヤーL1、L2のそれぞれは、畳み込み層(Convolutional Layer)、プーリング層(Pooling Layer)を含みこれを繰り返す。
【0005】
畳み込み層は、入力データに対して フィルタ(kernel)特徴を乗算する(特徴量を畳み込む)層である。入力データが画像データである場合、入力データ(画像)に対して、それぞれ異なるフィルタ特徴を乗算してフィルタの数に対応する画像を得ている。複数のフィルタを使うことにより入力画像のさまざまな特徴が捉えられ、特徴量の畳み込みによって画像内のパターンが検出出来る。
【0006】
プーリング層は、畳み込み層の直後に置かれ、レイヤーを縮小して扱い易くし、抽出された特徴の位置感度を低下させる。
【0007】
CNNは、次いで、レイヤーL3-L5により全結合した多層パーセプトロンを配置して入力データ(画像)を認識する。
【0008】
ここで、序盤のレイヤーで行う畳み込み演算には膨大な計算回数が必要である。このためかかる部分の省電力化が非常に重要な課題となっている。
【0009】
しかし、複数の演算素子(PE:プロセッシングエレメント)を、アレイ状に配置するアレイ型の並列演算処理素子とすると、周辺機能ブロックとの類似度計算をするために多くの配線資源や転送時間が必要となる。
【0010】
かかる点に鑑みて、本発明者等は、先にPE間の通信でのデータ衝突を回避し、かつPEを特定の方向に偏ることなく増加させることが可能な拡張性の高いデータ処理装置を提案している(特許文献1)。
【0011】
かかる先の発明技術では、n次元のネットワークを構成するn次元の方向に配置された全てのPEが、転送クロックに同期してデータを入出力する。そして、データを入出力する方向であるシフト方向に隣接する第1の隣接PEから第1のデータを受け取るとともに、反対側に隣接する第2の隣接PEに第2のデータを出力し、隣接するPE間のデータ転送レートがシフト方向によらず等しいという特徴を有する演算装置である。
【先行技術文献】
【特許文献】
【0012】
【発明の概要】
【発明が解決しようとする課題】
【0013】
これまでのCNN演算のための技術は、上記特許文献1に提案の発明に従う場合であっても、並列演算において個々のPEの処理量が大きくなるもの、即ち、技術的に最速であるがエネルギーに乏しいPEあるいはコアの数が、メモリに蓄積されるデータの数よりはるかに小さい。
【0014】
換言すれば、各演算ステップにおけるアクティブなプロセッサ、メモリ動作の数が基本的にCNNアルゴリズムにおける可能性より小さいものであった。
【0015】
結果として、CNNの解決のための時間が、最小値よりはるかに大きく、解決すべきエネルギーが高くなる。
【0016】
かかる点に鑑みて、本発明の目的は、演算素子PEを三次元的に多数配置し、並列性を保ったまま省電力で高速の計算を行えるデータ処理装置、及びこれにおけるデータ処理方法を提供することにある。
【課題を解決するための手段】
【0017】
上記目的を達成する本発明に従う第1の側面は、乗算及び加算機能を有する複数のプロセッシングエレメントを3次元方向に有するデータ処理装置であって、それぞれ複数の前記プロセッシングエレメントが2次元方向に配置され、Z軸方向に積層された複数の2次元面を有し、前記複数の2次元面のそれぞれに対応して特徴重みが配置されるフィルタメモリを有し、入力データがZ軸方向の上位面の2次元面から配置され、一の面に配置されたプロセッシングエレメントで前記乗算機能により前記入力データと前記特徴重みの積を順次演算して2次元畳み込みデータを演算し、更に下面から転送されるデータと自身のデータを加算する演算を行い、当該演算結果を隣接する上面のプロセッシングエレメントに転送することを特徴とする。
【0018】
上記目的を達成する本発明に従う第1の側面において、第1の態様として、前記2次元方向に配置されたプロセッシングエレメントはトーラスネットワークに接続され、Z軸方向には、上下面に隣接するPEが、ネットワークで双方向に接続されることを特徴とする。
【0019】
上記目的を達成する本発明に従う第1の側面において、第2の態様として、前記2次元畳み込みデータは、隣接するプロセッシングエレメントからの転送データと自身のデータを加算演算し、更にシフト方向に隣接するプロセッシングエレメントに前記加算演算結果を転送することを特徴とする。
【0020】
上記目的を達成する本発明に従う第1の側面において、第3の態様として、前記Z軸方向の最上位面にあるプロセッシングエレメントは、下面の複数のプロセッシングエレメントから転送される2次元畳み込みデータと自身のデータを加算して2.5次元畳み込みデータを演算することを特徴とする。
【0021】
上記目的を達成する本発明に従う第1の側面における第3の態様において、第4の態様として、前記2.5次元畳み込みデータは、順次下面のプロセッシングエレメントのシフトされることを特徴とする。
【0022】
上記目的を達成する本発明に従う第1の側面における上記何れかの態様において、前記特徴重みは、前記入力データの配置された2次元面の数で分割され、前記入力データの配置された面毎に対応するフィルタメモリに配置し、前記畳み込み演算の際、前記フィルタメモリに配置された特徴重みを、対応する面の全てのプロセッシングエレメントにブロードキャストすることを特徴とする。
【0023】
上記目的を達成する本発明に従う第2の側面は、乗算及び加算機能を有する複数のプロセッシングエレメントを3次元方向に有するデータ処理装置におけるデータ処理方法であって、前記データ処理装置は、それぞれ複数の前記プロセッシングエレメントが2次元方向に配置され、Z軸方向に積層された複数の2次元面を有し、前記複数の2次元面のそれぞれに対応して特徴重みが配置されるフィルタメモリを有し、入力データを前記Z軸方向の上位面の2次元面から配置する工程と、一の面に配置されたプロセッシングエレメントで前記乗算機能により前記入力データと前記特徴重みの積を順次演算して2次元畳み込みデータを演算する工程と、更に下面から転送されるデータと自身のデータを加算する演算を行い、当該演算結果を隣接する上面のプロセッシングエレメントに転送する工程を有することを特徴とする。
【0024】
上記目的を達成する本発明に従う第2の側面において、第1の態様として、前記2次元畳み込みデータは、隣接するプロセッシングエレメントからの転送データと自身のデータを加算演算し、更にシフト方向に隣接するプロセッシングエレメントに前記加算演算結果を転送する工程を有することを特徴とする。
【0025】
上記目的を達成する本発明に従う第2の側面において、第2の態様として、前記Z軸方向の最上位面にあるプロセッシングエレメントは、下面の複数のプロセッシングエレメントから転送される2次元畳み込みデータと自身のデータを加算して2.5次元畳み込みデータを演算する工程を有することを特徴とする。
【0026】
上記目的を達成する本発明に従う第2の側面において、第3の態様として、前記2.5次元畳み込みデータを、順次下面のプロセッシングエレメントにシフトする工程を有することを特徴とする。
【発明の効果】
【0027】
上記本発明に従う特徴構成により、処理されるデータと同数のプロセッサで並列演算を行うことで、最小実行ステップ数でCNNの各層の計算を実行できる。このため、リアルタイム処理に求められる実行時間制約を達成できる最小の動作クロック周波数で実行可能であり、リアルタイムかつ低消費電力の計算を行える。
【図面の簡単な説明】
【0028】
【
図1】CNNのシステム構成の概略を示す図である。
【
図2】TAP(Tensor Array Processor)における3次元アレイ状のPME(Processor in Memory)を示す図である。
【
図4】TAPの3次元アレイをそれぞれのXY面に展開して示す図である。
【
図5】
図4における一つの面に属するPMEを拡大して示す図である。
【
図6】畳み込み演算による演算結果の変化を示す図である。
【
図7A】本発明のデータ処理方法におけるある層の初期状態を表す図である。
【
図7B】1番目のフィルタについて2次元畳み込みを行っている状態を表す図である。
【
図7C】下の面から1番目の2次元畳み込み演算データが転送され、自身の畳み込み演算結果と加算することで2.5次元畳み込み演算の結果を求める処理を示す図である。
【
図7D】1番目の2.5次元畳み込みの結果(白丸)を下の面にデータシフトした状態を表す図である。
【
図7E】2番目のフィルタについて2次元畳み込みを行っている状態を表す図である。
【
図7F】下の面から転送される2番目のフィルタに対する2次元畳み込み演算データと自身の畳み込み演算結果との加算により2.5次元畳み込み演算の結果を求める処理を示す図である。
【
図7G】1番目と2番目の2.5次元畳み込みの結果(白丸)を下の面にデータシフトした状態を表す図である。
【
図7H】3番目のフィルタについて2次元畳み込みを行っている状態を表す図である。
【
図7I】下の面から転送される3番目のフィルタに対する2次元畳み込み演算データと自身の畳み込み演算結果と加算により2.5次元畳み込み演算の結果を求める処理を示す図である。
【
図7J】1番目から3番目の2.5次元畳み込みの結果(白丸)を下の面にデータシフトした状態を表す図である。
【
図7K】4番目のフィルタについて2次元畳み込みを行っている状態を表す図である。
【
図7L】下の面から転送される4番目のフィルタに対する2次元畳み込み演算データと自身の畳み込み演算結果と加算により2.5次元畳み込み演算の結果を求める処理を示す図である。
【
図7M】4枚のフィルタを用いた畳み込み層の計算結果を表す図である
【
図8】畳み込み演算の例を具体的数値で説明する図である。
【
図9】特徴重みの縦横を異なるものとした時のデータ上のシフト方向を考察する図である。
【
図10】本発明に従う2.5次元畳み込み演算の様子を示すタイムチャート図である。
【発明を実施するための形態】
【0029】
以下に、本発明の実施例を添付の図面に従い説明する。これらの実施例は本発明の理解を容易とするためのものであり、本発明の適用は、これら実施例に限定されるものではない。また、本発明の保護の範囲は、特許請求の範囲と同一又は類似の範囲にも及ぶ。
【0030】
本発明に従うデータ処理装置は、3次元アレイ状に配置されたそれぞれメモリ機能を有する演算素子であるPME(Processor in Memory)とネットワークから構成されるシステムであり、以降TAP(Tensor Array Processor)と称する。
【0031】
図2は、かかるTAPにおける3次元アレイ状のPMEを示す図であり、それぞれ計算モジュールを有する複数のPMEが3次元(X,Y,Z)方向に積層配列されている。
【0032】
かかる構造は、半導体技術により、3次元プロセッサとして作成可能である。すなわち、複数のPMEがX,Y方向に配列された2次元半導体面をZ方向に積み重ねて1チップで3次元構造とすることが可能である。
【0033】
図2において、複数のPMEが、Ws×Hs×Csの3次元アレイ状(X軸方向にWs個,Y軸方向にHs個,Z軸方向にCz個)に配列されている。各XY面では、各PMEがトーラスネットワーク(Lx、Ly)に接続され、各PMEの有するデータをX軸正方向、X軸負方向、Y軸正方向、Y軸負方向の4方向にデータシフトする機能を有する。
【0034】
また、Z軸方向では、上下面に隣接するPMEが、ネットワークLzで双方向に接続され、Z軸正方向(上面方向)とZ軸負方向(下面方向)のデータ転送を同時に行うことが可能に構成されている。かかるデータシフトの方向制御及び、そのための共通シフトクロックは、後にデータ処理装置を展開図で示す制御プロセッサにより供給される。
【0035】
図3は、各PMEの機能構成例ブロック図であり、畳み込み層の計算に必要な乗算及び加算機能ブロック10とプーリング層の計算に必要なMAX(最大値)演算機能ブロック11を有している。さらに、必要に応じて、追加の機能ブロックを添えることは可能である。
【0036】
図4は、上記TAPの3次元アレイをそれぞれのXY面に展開して示す図である。かかるTAPは、システムとして共通の制御プロセッサ20と、指示メモリ21を有している。
【0037】
3次元アレイのそれぞれのXY面(Z=1,Z=2,・・・Z=S)に対応してフィルタメモリFM1-FMSを有し、フィルタメモリFM1-FMSのそれぞれは、対応する同一面に存在する全てのPMEと接続されている。計算の際に、フィルタメモリFM1-FMSからフィルタの特徴重みを対応する面の全てのPMEにブロードキャストすることが可能である。
【0038】
ここで、本発明に従うデータ処理方法をCNNの畳み込み演算処理に用いる場合を想定する。
【0039】
指示メモリ21には、事前の学習により得られた各層のフィルタサイズ及びフィルタ数が畳み込みニューラルネットワーク構造として入力される。これに基づき、制御プロセッサ20により、各面のフィルタメモリFM1-FMSに対応する重み、及び共通のクロック信号の供給等が行われる。
【0040】
PMEは、畳み込み層において、自身の有するデータと対応するフィルタメモリからブロードキャストされる重みとを乗算し、更に隣接するPMEから転送されるデータとを加算して、その結果を反対側に隣接するPMEに転送する。プーリング層においては、自身のデータと隣接するPMEから転送されるデータの最大値を求め、隣接するPMEに順次転送する。
【0041】
先に、説明した様に指示メモリ21からの予め学習によって得られた指示データに基づき、上記のPMEによる演算と転送の方向及び共通シフトのためのタイミングクロックが、制御プロセッサ20から全てのPMEに送られる。
【0042】
図5は、かかる
図4における一つの面に属するPMEを拡大して示す図である。この例では、Ws=4, Hs=3の場合で、Z=kの面を示している。
フィルタメモリFMkから共通に、Z=kの面にある全てのPMEにフィルタ(特徴重み)が供給される。
【0043】
かかる構成のTAPに、列数Wo×行数Ho×チャンネル数Coの3次元テンソルデータがCNNの第1層の入力となる。
【0044】
この入力データに繰り返しCNNの畳み込み層の計算を適用することで、各層のデータサイズが変化する。
【0045】
ここで、k層目のデータサイズをWk×Hk×Ckとする。本発明のシステムでは、
【0046】
【0047】
であると想定する。
【0048】
入力のチャネル数がこの値より小さい場合は、TAPの上位のXY面から順に入力データを配置する。入力データが配置されたPMEは活性面(active)、そうでなければ非活性面(inactive)となる。ただし、PMEが非活性面であってもデータの転送は行われる。
【0049】
例えば、入力データとして一枚の画像データを考えた時、次のように想定することが出来る。一枚の画像データを同じ大きさの領域ごとに区切り複数の領域データ(チャネル)として切り出し、各領域データをTAPの最上位の面から順に該当の面にあるPMEに配置していく。
【0050】
この時、フィルタ(特徴重み)は、次のように処理される。一つの特徴重みを前記画像データの配置される面の数に対応して分割し、それぞれの分割特徴重みを対応する面のファイルメモリFMに格納する。そして、計算時に対応するフィルタメモリFMに配置されている特徴重みが当該面に属する全てのPMEにブロードキャストされる。
【0051】
それぞれのPMEは、ブロードキャストされた特徴重みと自身のデータとの積を演算する。さらに、PMEは、一方向の隣接するメモリ要素から転送されるデータを前記の積の演算結果に加え、反対方向に隣接するPMEに転送する。かかる処理を繰り返し、2次元畳み込みを行う。なお、かかる場合の転送制御は、先に述べた特許文献1の発明に従い実行される。
【0052】
さらに、本発明では、特徴として、入力データに対し2次元畳み込みを行ったデータが配置されたTAPの最下面から最上面まで、それぞれ2次元畳み込みデータを上方向に転送する。この時、各面のPMEは自身のデータと一つ下の面からの畳み込み演算結果を足し合わせ、その結果を一つ上の面のPMEに転送する。
【0053】
最終的に最上位面の2次元アレイプロセッサで、全ての2次元アレイの2次元畳み込み結果を足し合わせた2.5次元畳み込み演算結果を得ることが出来る。
【0054】
さらに、後に詳述するように、最上位面で得られた2.5次元畳み込み演算結果は、順次下面にシフトされる。
【0055】
かかる畳み込み演算による演算結果の変化を
図6に示す。
図6(1)に示すように、N×M×Cin個のPMEに配置された入力データが、畳み込み演算の結果N×M×Cout個のPMEに畳み込み演算結果が得られる。このときCoutの大きさは、特徴重み(kernel)の数に依存する。
【0056】
この結果がCNNの一つの層の畳み込み演算処理結果のデータであり、次いで、
図6(2)に示すようにプーリング層の演算処理を行ってレイヤーを縮小して扱いやすくする。同時に、この演算結果は次の層の入力になる。
【0057】
ここで、本発明のデータ処理装置において実行されるデータ処理に従う畳み込み演算処理の特徴を理解容易のために、更に
図7A~7Mにおいて各面における変化を模式的に示す。
【0058】
図A~7Mにおいて、活性面は入力データが配置された面である。
図7Aは、初期状態を表す。
実線の直方体が活性面のPMEを表し、破線の直方体が
不活性面のPMEを表す。以下、
図7B~7Mにおいて同様である。さらに、灰色の丸で占められる表示は入力データDinを表している。
図7Bは1番目のフィルタに対して各面において2次元畳み込みを行っている状態を示す。図の矢印は、各面にあるPMEに対するデータの転送方向を表し、黒丸は計算結果を示す。以下、
図7C~7Mにおいて同様である。
【0059】
図7Cは、下の面からその2次元畳み込み演算データが転送され、自身の2次元畳み込み演算結果と加算することで2.5次元畳み込み演算の結果を求める処理を示している。
【0060】
図7Dは、2番目のフィルタに対する畳み込み計算を行う準備として、この2.5次元畳み込み演算結果を下の面にシフトする状態を示している。このシフトは、不活性面を含めて行われる。
【0061】
図7Eは2番目のフィルタに対して各面において2次元畳み込みを行っている状態を示す。
図7Fは下の面から2番目のフィルタに対する2次元畳み込み演算データが転送され、自身の畳み込み演算結果と加算することで、2.5次元畳み込み演算の結果を求める処理を示している。
【0062】
同様に
図7G~
図7Lは3番目、4番目のフィルタに対する畳み込み計算の様子を示している。すなわち、
図7Gは、1番目と2番目の2.5次元畳み込みの結果(白丸)を矢印のように上の面から下の面にデータシフトした状態を示している。
【0063】
図7Hは、3番目のフィルタについて2次元畳み込みを行っている状態を示している。
図7Iは、下から3番目のフィルタに対する2次元畳み込み演算データが転送され、自身の畳み込み演算結果と加算することで2.5次元畳み込み演算の結果を求める処理を示している。
【0064】
図7Jは、1番目から3番目の2.5次元畳み込み結果(白丸)を上の面から下の面にデータシフトした状態を示している。この際、不活性面にもデータがシフトされている。
【0065】
図7Kは、4番目のフィルタに対する2次元畳み込み演算を行っている状態を示している。
図7Lは、
図7Iの処理と同様であるが、下から4番目のフィルタに対する2次元畳み込み演算データが転送され、自身の畳み込み演算結果と加算することで2.5次元畳み込み演
算結果を求める処理を示している。
【0066】
図7Mは、最終的に4枚のフィルタを用いた畳み込み層の計算結果を表し、これが次層の入力となる。
【0067】
ここで、畳み込み演算を式で表すと下記(1)式のようになる。b0はバイアス定数項である。バイアスb0は、畳み込み演算の結果を一定値増加、減少するために使用される。このバイアスb0とフィルタの重みωはともに、CNNの学習時に自動的に決定される。
【0068】
【0069】
ただし、sは自然数であり、畳み込み計算を行うときのストライドを表す。さらに、簡単化のため、本発明の説明ではストライドが1のときのみを説明しているが、ストライドが2以上であっても本発明の適用可能は、否定されない。
【0070】
【0071】
は、第l層のo番目のフィルタの重み、
【0072】
【0073】
は、第l層の入力データである。
【0074】
それぞれの面にあるPMEは、(1)式の後半部分
【0075】
【0076】
の計算を行う。このとき、C=Clの2次元畳み込み演算をTAPの一番上の面のPMEが計算しており、同様にC=Cl-1の2次元畳み込演算をその一つ下の面のPMEが計算している。各面で計算した上記の後半部分の計算結果を足し合わせることで(1)式全体の計算をしている。
【0077】
図8は、上記の畳み込み演算の例を具体的数値で説明する図であり、2つの上下面の場合を例にしている。
【0078】
一の面(Ch1)で入力(Input)x60と重み(kernel)w61を矢印方向に移動しながら乗算し、同時に下の面(Ch2)で入力(Input)x62と重み(kernel)w63を矢印方向に移動しながら乗算する。これにより、それぞれ2次元畳み込み演算結果64が得られる。
【0079】
一の面(Ch1)の初期時点での入力60と重み61との乗算結果は、次のようであり、
(-3*1)+(-2*2)+(1*2)+(3*2)=1
次いで、1桁分矢印方向にシフトした時の入力60と重み61との乗算結果は、次のようである。
【0080】
(1*1)+(-3*2)+(-2*3)+(2*2)+(1*2)+(3*1)=-2
これらは、2次元畳み込み演算結果64に示される通りである。
【0081】
一方、下の面(Ch2)の初期時点での入力62と重み63との乗算結果は、次のようであり。
【0082】
(-2*2)+(3*3)+(-3*1)+(1*3)=5
次いで、1桁分矢印方向にシフトした時の入力60と重み61との乗算結果は、次のようである。
【0083】
(2*2) + (-2*3) + (3*3) + (1*1) + (-3*3) + (1*2) =1である。
【0084】
これらは、2次元畳み込み演算結果65に示される通りである。
【0085】
ついで、前記一の面(Ch1)では、自身の2次元畳み込み演算結果64を得て、更に下の面(Ch2)から転送される2次元畳み込み演算結果65が転送される。したがって、それら2次元畳み込み演算結果64及び65とバイアスb0=1とを加算して2.5次元畳み込み演算結果66に示すように求める。
【0086】
上記の様に、入力データ上で重みを順次所定桁数分ずつシフトして乗算及び加算を繰り返すことにより2次元畳み込み演算結果が得られる。
【0087】
この際、指示メモリ21に格納されている指示に基づき、PMEからのデータ転送の方向がデータを一筆書きに転送し、無駄な転送をなくし、同じPMEに複数のデータ転送が行われないように制御され、データの衝突を回避することが出来る。
【0088】
ここで、上記
図8に示す例では特徴重みを縦横3×3、即ち縦横の長さが同じw×wとしているが、縦横の長さが異なる様に一般化することが出来、これをw_1×w_2として表す。
【0089】
図9は、特徴重みの縦横を異なるものとした時のデータ上のシフト方向を考察する図である。
図9(1)は、縦横長さが同じ奇数で、中心に向かう様に一筆書きでシフトすることが出来る。
図9(2)は、縱の長さ、横の長さのいずれか一方が偶数であり、
図9(1)と同様に、全ての点をちょうど1回ずつ
通るハミルトンパスが存在する。これに対し、
図9(3)は、縱の長さも横の長さも奇数の場合で有り、1個のPMEは2回通過することになるので、無駄な転送が発生する。
【0090】
ここで、上記説明したように2.5次元の畳み込み演算の結果が得られるが、このデータはTAPの一番上のPMEが保有している。本発明に従うアルゴリズムでは、TAPの最下面をZ=1, 最上面をZ=CSとすると、l層目で0番目のフィルタを用いたときの2.5次元畳み込み演算の結果
【0091】
【0092】
の面状のPMEに配置し、次の層の畳み込みの計算の準備に整える。このため、最上面で計算結果が得られる度に、各PMEが保有している2.5次元畳み込み演算結果を下面方向に1回シフトする(
図7B参照)。
【0093】
図10は、更に本発明に従う2.5次元畳み込み演算の様子を示すタイムチャート図である。このタイムチャートでは、PME(i,j,1), PME(i,j,2),…PME(i,j,Cs)の動作を表している。また、この図ではCin個の面がactiveである。
【0094】
タイムチャートにおいて、各面の墨塗り部分Aで2次元畳み込み演算を行っている。この計算結果が終了した次のステップでその計算結果とbiasBを足し合わせて上の面のPMEにデータを転送する(上方向矢印)。
【0095】
次の面のPMEは、下の面のPMEから転送されたデータと自身の2次元畳み込み演算結果を足し合わせて,その結果Cを更に一つ上の面のPMEに転送することを繰り返す。最終的に一番上の面のPMEでの演算結果が、2.5次元畳み込みの演算結果Dとなる。
【0096】
次いで、この、2.5次元畳み込みの演算結果Dが、一つの重みについて2.5次元畳み込み演算が終わる都度、下向矢印の方向に下の面にシフトされる。この際、上の面からシフトされるデータはPMEでは、それを保存するだけで、その他の処理は行われない。2.5次元畳み込演算を求めるために、一度だけシフトを行う。
【0097】
上記の動作をCout回繰り返し、一番上の面からCoutまでに2.5次元畳み込み演算結果が保持される。
【0098】
ここで、CNNの各層において、上記したように2.5次元畳み込み処理が行われた後、プーリング(pooling)演算を行なって、次の層の入力データとされる。
【0099】
プーリング演算は、2次元畳み込み演算の時と同じ方法で周辺のPMEが持つデータを受け取り次の式(2)で最大値を計算する。
【0100】
【0101】
ただし、s'は2以上の自然数であり、畳み込み計算を行うときのストライドを表す。さらに、actは活性化関数であり、例えば
【0102】
【0103】
が用いられる。
【0104】
また、プーリングでは、2次元畳み込みと同様に上面側にデータ転送を行うが、各PMEは、自身の有するデータxと隣接した下面のPMEから受け取ったyinを用いて
【0105】
【0106】
を計算する。
【0107】
この計算を行いながら先に、
図9で説明した様にデータを転送することにより周辺のPMEの持つデータの最大値を求める。
【0108】
以上説明したように、本発明に従うデータ処理装置は、CNNにおけるデータ処理装置として使用される場合は、CNNの構造(学習によって得られた各層のフィルタサイズ、フィルタ数)が入力として与えられる。各フィルタの重みがTAPの各面のフィルタメモリ上に与えられる。さらに、CNNの主入力データがTAPのPMEに配置される。
【0109】
各面のPMEは、自身のデータと重みを乗算して2次元畳み込みデータを、周辺から転送されるデータとを加算して上位の面上のPMEに送る。したがって、最上位の面にあるPMEで、全ての下面の2次元畳み込み演算結果加算することにより並列性を保ったまま省力で高速の2.5次元畳み込み演算結果を得ることが出来る。
【符号の説明】
【0110】
PME メモリ要素
10 乗算及び加算機能ブロック
11 MAX(最大値)演算機能ブロック
20 制御プロセッサ
21 指示メモリ
FM1-FMS フィルタメモリ