IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 三星電子株式会社の特許一覧

<>
  • 特許-ニューラルネットワーク方法及び装置 図1
  • 特許-ニューラルネットワーク方法及び装置 図2
  • 特許-ニューラルネットワーク方法及び装置 図3
  • 特許-ニューラルネットワーク方法及び装置 図4
  • 特許-ニューラルネットワーク方法及び装置 図5
  • 特許-ニューラルネットワーク方法及び装置 図6
  • 特許-ニューラルネットワーク方法及び装置 図7
  • 特許-ニューラルネットワーク方法及び装置 図8
  • 特許-ニューラルネットワーク方法及び装置 図9
  • 特許-ニューラルネットワーク方法及び装置 図10
  • 特許-ニューラルネットワーク方法及び装置 図11
  • 特許-ニューラルネットワーク方法及び装置 図12
  • 特許-ニューラルネットワーク方法及び装置 図13
  • 特許-ニューラルネットワーク方法及び装置 図14
  • 特許-ニューラルネットワーク方法及び装置 図15
  • 特許-ニューラルネットワーク方法及び装置 図16
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-07-29
(45)【発行日】2022-08-08
(54)【発明の名称】ニューラルネットワーク方法及び装置
(51)【国際特許分類】
   G06N 3/063 20060101AFI20220801BHJP
   G06F 17/10 20060101ALI20220801BHJP
【FI】
G06N3/063
G06F17/10 A
【請求項の数】 28
(21)【出願番号】P 2020134566
(22)【出願日】2020-08-07
(65)【公開番号】P2021034039
(43)【公開日】2021-03-01
【審査請求日】2021-04-19
(31)【優先権主張番号】10-2019-0098810
(32)【優先日】2019-08-13
(33)【優先権主張国・地域又は機関】KR
(31)【優先権主張番号】10-2019-0127258
(32)【優先日】2019-10-14
(33)【優先権主張国・地域又は機関】KR
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
【住所又は居所原語表記】129,Samsung-ro,Yeongtong-gu,Suwon-si,Gyeonggi-do,Republic of Korea
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】孫 辰雨
(72)【発明者】
【氏名】孫 昌用
(72)【発明者】
【氏名】柳 在炯
(72)【発明者】
【氏名】李 曙炯
(72)【発明者】
【氏名】鄭 相一
(72)【発明者】
【氏名】崔 彰仁
(72)【発明者】
【氏名】韓 在濬
【審査官】金田 孝之
(56)【参考文献】
【文献】特開2018-028908(JP,A)
【文献】特開2019-087252(JP,A)
【文献】米国特許出願公開第2019/0079764(US,A1)
【文献】特開2018-077842(JP,A)
【文献】特開2019-008421(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/02- 3/10
G06F 17/10-17/18
G06N 20/00-20/20
(57)【特許請求の範囲】
【請求項1】
プロセッサ実施データ処理方法において、
入力特徴マップの複数の入力平面のうち、第1入力チャネルに対応する第1入力平面を受信するステップと、
ウェイトカーネルの複数のウェイト平面のうち、前記第1入力チャネルに対応する第1ウェイト平面を受信するステップと、
前記第1入力平面内の第1入力エレメントの少なくとも一部と、前記第1ウェイト平面内の第1ウェイトエレメントの少なくとも一部との間の乗算演算から乗算結果を累積して第1累積データを生成するステップと、
前記第1累積データに基づいて出力特徴マップの複数の出力平面のうち第1出力チャネルに対応する第1出力平面を生成するステップと、
前記第1ウェイトエレメントのうち、0に対応しないノンゼロウェイトエレメントの数を決定するステップと、
予め決定された方式の演算を行う複数の演算タイプのうち、前記決定されたノンゼロウェイトエレメントの数に対応する演算タイプを選択するステップと、
を含み、
前記複数の入力平面のそれぞれ、及び前記複数のウェイト平面のそれぞれは入力チャネルに各々対応し、
前記複数の出力平面のそれぞれは、出力チャネルに各々対応する、データ処理方法。
【請求項2】
前記第1出力平面を生成するステップは、前記第1累積データを含んでいる各入力チャネルに関する各累積データの合計に基づいて前記第1出力平面を生成するステップを含む、請求項1に記載のデータ処理方法。
【請求項3】
前記入力平面のうち第2入力チャネルに対応する第2入力平面を受信するステップと、
前記複数のウェイト平面のうち前記第2入力チャネルに対応する第2ウェイト平面を受信するステップと、
前記第2入力平面内の第2入力エレメントの少なくとも一部と、前記第2ウェイト平面内の第2ウェイトエレメントの少なくとも一部との間の乗算結果を累積して第2累積データを生成するステップと、
をさらに含む、請求項1又は2に記載のデータ処理方法。
【請求項4】
前記第1出力平面を生成するステップは、前記第1累積データと前記第2累積データの合計に基づいて前記第1出力平面を生成するステップを含む、請求項3に記載のデータ処理方法。
【請求項5】
前記第1累積データを生成するステップは、
前記第1入力平面から前記第1ウェイトエレメントの前記一部に対応する第1入力エレメントベクトルを抽出するステップと、
前記第1入力エレメントベクトルと前記第1ウェイトエレメントの前記一部との間の乗算演算の乗算結果に対応する第1加重された入力エレメントベクトルを生成するステップと、
前記第1加重された入力エレメントベクトルを累積して前記第1累積データを生成するステップと、
を含む、請求項1乃至4のいずれか一項に記載のデータ処理方法。
【請求項6】
前記第1入力エレメントベクトルを抽出するステップは、
前記第1ウェイトエレメントの前記一部のインデックスに基づいて、前記第1入力エレメントベクトルに対応するオフセットを決定するステップと、
前記決定されたオフセットに基づいて、前記第1入力平面から前記第1入力エレメントベクトルを抽出するステップと、
を含む、請求項5に記載のデータ処理方法。
【請求項7】
前記第1入力エレメントベクトルのサイズ及び前記第1加重された入力エレメントベクトルのサイズは、SIMD演算単位に対応する、請求項5に記載のデータ処理方法。
【請求項8】
前記第1累積データが生成されるとき、前記第1ウェイトエレメントの前記一部のうち、0の値に対応するゼロウェイトエレメントと、前記第1入力エレメントの前記一部との間の乗算演算は省略される、請求項1乃至7のいずれか一項に記載のデータ処理方法。
【請求項9】
前記第1累積データを生成するステップは、前記選択された演算タイプに基づいて前記第1入力エレメントの前記一部と、前記第1ウェイトエレメントの前記一部に対応する前記ノンゼロウェイトエレメントとの間の前記乗算演算の前記乗算結果を累積して前記第1累積データを生成するステップを含む、請求項に記載のデータ処理方法。
【請求項10】
前記第1累積データを生成するステップは、
前記ノンゼロウェイトエレメントのインデックスに基づいて、前記第1入力平面から前記ノンゼロウェイトエレメントに対応する第1入力エレメントベクトルを抽出するステップと、
前記第1入力エレメントベクトルと、前記第1ウェイトエレメントの前記一部に対応する前記ノンゼロウェイトエレメントとの間の乗算演算の乗算結果に対応する第1加重された入力エレメントベクトルを生成するステップと、
前記第1加重された入力エレメントベクトルを累積して前記第1累積データを生成するステップと、
を含む、請求項に記載のデータ処理方法。
【請求項11】
前記ウェイト平面それぞれのウェイトエレメントそれぞれに前記第1入力平面の複数のエレメントを個別的に乗算するステップをさらに含む、請求項1乃至10のいずれか一項に記載のデータ処理方法。
【請求項12】
ハードウェアに請求項1乃至請求項11のいずれか一項に記載の方法を実行させるためのコンピュータプログラム。
【請求項13】
データ処理装置において、
入力特徴マップの複数の入力平面のうち、第1入力チャネルに対応する第1入力平面を受信し、ウェイトカーネルの複数のウェイト平面のうち、前記第1入力チャネルに対応する第1ウェイト平面を受信し、前記第1入力平面内の第1入力エレメントの少なくとも一部と、前記第1ウェイト平面内の第1ウェイトエレメントの少なくとも一部との間の乗算演算から乗算結果を累積して第1累積データを生成し、前記第1累積データに基づいて出力特徴マップの複数の出力平面のうち、第1出力チャネルに対応する第1出力平面を生成し、前記第1ウェイトエレメントのうち、0に対応しないノンゼロウェイトエレメントの数を決定し、予め決定された方式の演算を行う複数の演算タイプのうち、前記決定されたノンゼロウェイトエレメントの数に対応する演算タイプを選択する1つ以上のプロセッサを含み、
前記複数の入力平面のそれぞれ、及び前記複数のウェイト平面のそれぞれは入力チャネルに各々対応し、
前記複数の出力平面のそれぞれは、出力チャネルに各々対応する、
データ処理装置。
【請求項14】
前記プロセッサは、前記第1累積データを含んでいる各入力チャネルに関する各累積データの合計に基づいて前記第1出力平面を生成する、請求項13に記載のデータ処理装置。
【請求項15】
前記プロセッサは、前記入力平面のうち第2入力チャネルに対応する第2入力平面を受信し、前記複数のウェイト平面のうち前記第2入力チャネルに対応する第2ウェイト平面を受信し、前記第2入力平面内の第2入力エレメントの少なくとも一部と、前記第2ウェイト平面内の第2ウェイトエレメントの少なくとも一部との間の乗算結果を累積して第2累積データを生成する、請求項13または14に記載のデータ処理装置。
【請求項16】
前記プロセッサは、前記第1累積データ及び前記第2累積データの合計に基づいて前記第1出力平面を生成するステップを含む、請求項15に記載のデータ処理装置。
【請求項17】
前記プロセッサは、前記第1入力平面から前記第1ウェイトエレメントの前記一部に対応する第1入力エレメントベクトルを抽出し、前記第1入力エレメントベクトルと前記第1ウェイトエレメントの前記一部との間の乗算演算の乗算結果に対応する第1加重された入力エレメントベクトルを生成し、前記第1加重された入力エレメントベクトルを累積して前記第1累積データを生成する、請求項13乃至16のいずれか一項に記載のデータ処理装置。
【請求項18】
前記プロセッサは、前記第1ウェイトエレメントの前記一部のインデックスに基づいて前記第1入力エレメントベクトルに対応するオフセットを決定し、前記決定されたオフセットに基づいて前記第1入力平面から前記第1入力エレメントベクトルを抽出する、請求項17に記載のデータ処理装置。
【請求項19】
前記第1入力エレメントベクトルのサイズ及び前記第1加重された入力エレメントベクトルのサイズは、SIMD演算単位に対応する、請求項17に記載のデータ処理装置。
【請求項20】
前記第1累積データが生成されるとき、前記第1ウェイトエレメントの前記一部のうち、0の値に対応するゼロウェイトエレメントと、前記第1入力エレメントの前記一部との間の乗算演算は省略される、請求項13乃至19のいずれか一項に記載のデータ処理装置。
【請求項21】
前記プロセッサは、前記選択された演算タイプに基づいて前記第1入力エレメントの前記一部と、前記第1ウェイトエレメントの前記一部に対応する前記ノンゼロウェイトエレメントとの間の前記乗算演算の前記乗算結果を累積して前記第1累積データを生成する、請求項13に記載のデータ処理装置。
【請求項22】
前記プロセッサは、前記ノンゼロウェイトエレメントのインデックスに基づいて、前記第1入力平面で前記ノンゼロウェイトエレメントに対応する第1入力エレメントベクトルを抽出し、前記第1入力エレメントベクトルと、前記第1ウェイトエレメントの前記一部に対応する前記ノンゼロウェイトエレメントとの間の乗算演算の乗算結果に対応する第1加重された入力エレメントベクトルを生成し、前記第1加重された入力エレメントベクトルを累積して前記第1累積データを生成する、請求項13に記載のデータ処理装置。
【請求項23】
前記1つ以上のプロセッサによって実行されれば、前記1つ以上のプロセッサが前記第1入力平面の受信、前記第1ウェイト平面の受信、前記第1累積データの生成、及び前記第1出力平面の生成を行う命令語を格納するメモリをさらに含む、請求項13乃至22のいずれか一項に記載のデータ処理装置。
【請求項24】
電子装置のプロセッサによって行われる、プロセッサ実施方法において、
複数の入力エレメントを含むニューラルネットワークのレイヤの入力平面を受信するステップと、
複数のウェイトエレメントを含み、前記レイヤの前記入力平面に対応するウェイト平面を受信するステップと、
前記ウェイト平面の各ウェイトエレメントと、前記入力平面の前記複数の入力エレメントの対応入力エレメントとの間の乗算演算を行って取得された乗算結果エレメントを累積して出力平面を生成するステップと、
前記ウェイトエレメントのうち、0に対応しないノンゼロウェイトエレメントの数を決定するステップと、
予め決定された方式の演算を行う複数の演算タイプのうち、前記決定されたノンゼロウェイトエレメントの数に対応する演算タイプを選択するステップと、
を含む方法。
【請求項25】
前記複数のウェイトエレメントのうち、0の値に対応するゼロウェイトエレメントが存在する場合、前記ゼロウェイトエレメントと前記ゼロウェイトエレメントに対応する入力エレメントとの間の乗算演算が省略される、請求項24に記載の方法。
【請求項26】
前記ニューラルネットワークのレイヤに関する畳み込み演算は、SIMD基盤で行われる、請求項24または25に記載の方法。
【請求項27】
前記入力平面及び前記ウェイト平面は1つの入力チャネルに対応し、
前記出力平面は1つの出力チャネルに対応する、請求項24乃至26のいずれか一項に記載の方法。
【請求項28】
前記入力平面は、前記レイヤの入力特徴マップに対応する複数の入力平面のうちの1つであり、
前記ウェイト平面は、前記レイヤのウェイトカーネルに対応する複数のウェイト平面のうちの1つであり、
前記複数の入力平面から前記入力平面を除いた少なくとも1つの他の入力平面、及び前記複数のウェイト平面から前記ウェイト平面を除いた少なくとも1つの他のウェイト平面に基づいて生成された少なくとも1つの他の出力平面、及び前記出力平面に基づいて前記レイヤの出力特徴マップが決定される、請求項24乃至27のいずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
実施形態は、ニューラルネットワーク方法及び装置に関する。
【背景技術】
【0002】
認識プロセスの技術的な自動化は、例えば、特殊な算出構造としてプロセッサで具現されたニューラルネットワークモデルを介して具現され、これは相当な訓練後に入力パターンと出力パターンとの間で算出上直観的なマッピングを提供することができる。このようなマッピングを生成する訓練された能力は、ニューラルネットワークの学習能力といえる。しかも、特化した訓練により、このように特化して訓練されたニューラルネットワークは、例えば、訓練していない入力パターンに対して比較的に正確な出力を生成する一般化能力を有し得る。
【発明の概要】
【発明が解決しようとする課題】
【0003】
下記の実施形態は、ニューラルネットワークのためのデータ処理方法及び装置を提供することに目的がある。
【課題を解決するための手段】
【0004】
一実施形態によれば、プロセッサ実施データ処理方法は、入力特徴マップの複数の入力平面のうち、第1入力チャネルに対応する第1入力平面を受信するステップと、ウェイトカーネルの複数のウェイト平面のうち、前記第1入力チャネルに対応する第1ウェイト平面を受信するステップと、前記第1入力平面内の第1入力エレメントの少なくとも一部と、前記第1ウェイト平面内の第1ウェイトエレメントの少なくとも一部との間の乗算演算から乗算結果を累積して第1累積データを生成するステップと、前記第1累積データに基づいて出力特徴マップの複数の出力平面のうち第1出力チャネルに対応する第1出力平面を生成するステップとを含み、前記複数の入力平面のそれぞれ、及び前記複数のウェイト平面のそれぞれは入力チャネルに各々対応し、前記複数の出力チャネルのそれぞれは、出力チャネルに各々対応する。
【0005】
前記第1出力平面を生成するステップは、前記第1累積データを含んでいる各入力チャネルに関する各累積データの合計に基づいて前記第1出力平面を生成するステップを含むことができる。
【0006】
前記データ処理方法は、前記入力平面のうち第2入力チャネルに対応する第2入力平面を受信するステップと、前記複数のウェイト平面のうち前記第2入力チャネルに対応する第2ウェイト平面を受信するステップと、前記第2入力平面内の第2入力エレメントの少なくとも一部と、前記第2ウェイト平面内の第2ウェイトエレメントの少なくとも一部との間の乗算結果を累積して第2累積データを生成するステップとをさらに含むことができる。前記第1出力平面を生成するステップは、前記第1累積データ及び前記第2累積データの合計に基づいて前記第1出力平面を生成するステップを含むことができる。
【0007】
前記第1累積データを生成するステップは、前記第1入力エレメントベクトルと前記第1ウェイトエレメントの前記一部との間の乗算演算の乗算結果に対応する第1加重された入力エレメントベクトルを生成するステップと、前記第1加重された入力エレメントベクトルを累積して前記第1累積データを生成するステップとを含むことができる。
【0008】
前記第1入力エレメントベクトルを抽出するステップは、前記第1ウェイトエレメントの前記一部のインデックスに基づいて、前記第1入力エレメントベクトルに対応するオフセットを決定するステップと、前記決定されたオフセットに基づいて、前記第1入力平面から前記第1入力エレメントベクトルを抽出するステップとを含むことができる。前記第1入力エレメントベクトルのサイズ及び前記第1加重された入力エレメントベクトルのサイズは、単一命令複数データ(SIMD:single instruction multiple data)演算単位に対応し得る。
【0009】
前記第1累積データが生成されるとき、前記第1ウェイトエレメントの前記一部のうち、0の値に対応するゼロウェイトエレメントと、前記第1入力エレメントの前記一部との間の乗算演算は省略されることができる。前記第1ウェイトエレメントのうち、0に対応しないノンゼロウェイトエレメントの数を決定するステップと、予め決定された方式の演算を行う複数の演算タイプのうち、前記決定されたノンゼロウェイトエレメントの数に対応する演算タイプを選択するステップとをさらに含むことができる。
【0010】
前記第1累積データを生成するステップは、前記選択された演算タイプに基づいて前記第1入力エレメントの前記一部と、前記第1ウェイトエレメントの前記一部に対応する前記ノンゼロウェイトエレメントとの間の前記乗算演算の前記乗算結果を累積して前記第1累積データを生成するステップを含むことができる。前記第1累積データを生成するステップは、前記ノンゼロウェイトエレメントのインデックスに基づいて、前記第1入力平面から前記ノンゼロウェイトエレメントに対応する第1入力エレメントベクトルを抽出するステップと、前記第1入力エレメントベクトルと、前記第1ウェイトエレメントの前記一部に対応する前記ノンゼロウェイトエレメントとの間の乗算演算の乗算結果に対応する第1加重された入力エレメントベクトルを生成するステップと、前記第1加重された入力エレメントベクトルを累積して前記第1累積データを生成するステップとを含むことができる。
【0011】
前記ウェイト平面それぞれのウェイトエレメントそれぞれに前記第1入力平面の複数のエレメントを個別的に乗算するステップをさらに含むことができる。
【0012】
一実施形態によると、データ処理装置は、入力特徴マップの複数の入力平面のうち、第1入力チャネルに対応する第1入力平面を受信し、ウェイトカーネルの複数のウェイト平面のうち、前記第1入力チャネルに対応する第1ウェイト平面を受信し、前記第1入力平面内の第1入力エレメントの少なくとも一部と、前記第1ウェイト平面内の第1ウェイトエレメントの少なくとも一部との間の乗算演算から乗算結果を累積して第1累積データを生成し、前記第1累積データに基づいて出力特徴マップの複数の出力平面のうち、第1出力チャネルに対応する第1出力平面を生成する1つ以上のプロセッサを含み、前記複数の入力平面のそれぞれ、及び前記複数のウェイト平面のそれぞれは入力チャネルに各々対応し、前記複数の出力チャネルのそれぞれは、出力チャネルに各々対応する。
【0013】
前記データ処理装置は、前記1つ以上のプロセッサによって実行されれば、前記1つ以上のプロセッサが前記第1入力平面の受信、前記第1ウェイト平面の受信、前記第1累積データの生成、及び前記第1出力平面の生成を行う命令語を格納するメモリをさらに含むことができる。
【0014】
一実施形態によると、電子装置のプロセッサによって行われる、プロセッサ実施方法は、複数の入力エレメントを含むニューラルネットワークのレイヤの入力平面を受信するステップと、複数のウェイトエレメントを含み、前記レイヤの前記入力平面に対応するウェイト平面を受信するステップと、前記ウェイト平面の各ウェイトエレメントと、前記入力平面の前記複数の入力エレメントの対応入力エレメントとの間の乗算演算を行って取得された乗算結果エレメントを累積して出力平面を生成するステップとを含む。
【0015】
前記複数のウェイトエレメントのうち、0の値に対応するゼロウェイトエレメントが存在する場合、前記ゼロウェイトエレメントと前記ゼロウェイトエレメントに対応する入力エレメントとの間の乗算演算が省略されることができる。前記ニューラルネットワークのレイヤに関する畳み込み演算は、SIMD(single instruction multiple data)基盤で行われることができる。
【0016】
前記入力平面及び前記ウェイト平面は1つの入力チャネルに対応し、前記出力平面は1つの出力チャネルに対応し得る。前記入力平面は、前記レイヤの入力特徴マップに対応する複数の入力平面のうちの1つであり、前記ウェイト平面は、前記レイヤのウェイトカーネルに対応する複数のウェイト平面のうちの1つであり、前記複数の入力平面から前記入力平面を除いた少なくとも1つの他の入力平面、及び前記複数のウェイト平面から前記ウェイト平面を除いた少なくとも1つの他のウェイト平面に基づいて生成された少なくとも1つの他の出力平面、及び前記出力平面に基づいて前記レイヤの出力特徴マップが決定されることができる。
【0017】
一実施形態によると、プロセッサ実施方法は、複数の入力平面を含む入力特徴マップを受信するステップと、複数のウェイト平面を含むウェイトカーネルを受信するステップと、前記入力特徴マップと前記ウェイトカーネルとの間の累積畳み込み演算を行うステップと、前記累積畳み込み演算に基づいて出力平面を生成するステップとを含む。
【0018】
前記方法は、前記複数の入力平面と前記複数のウェイト平面との間の積和(MAC:multiply and accumulate)演算を行って累積平面を生成するステップをさらに含むことができる。前記出力平面は、前記累積平面の出力を累積して生成されることができる。
【発明の効果】
【0019】
本発明によると、ニューラルネットワークのためのデータ処理方法及び装置を提供することができる。
【図面の簡単な説明】
【0020】
図1】一実施形態に係るニューラルネットワークのためのデータを処理する処理装置を示す図である。
図2】一実施形態に係る畳み込み演算過程を示す図である。
図3】スライディングウィンドウ方式の畳み込み演算を示す図である。
図4】一実施形態に係る累積方式の畳み込み演算を介して1つの出力平面が生成される過程を示す図である。
図5】一実施形態に係る累積方式の畳み込み演算を介して1つの出力平面が生成される過程を示す図である。
図6】一実施形態に係る累積方式の畳み込み演算のための入力平面とウェイト平面との間のMAC(multiply and accumulate)演算を示す図である。
図7】一実施形態に係る累積方式の畳み込み演算のための入力平面とウェイト平面との間のMAC(multiply and accumulate)演算を示す図である。
図8】一実施形態に係るSIMD(single instruction multiple data)処理を用いた累積方式の畳み込み演算を示す図である。
図9】一実施形態に係るSIMD(single instruction multiple data)処理を用いた累積方式の畳み込み演算を示す図である。
図10】一実施形態に係るSIMD(single instruction multiple data)処理を用いた累積方式の畳み込み演算を示す図である。
図11】一実施形態に係る累積方式の畳み込み演算のゼロスキップ過程を示す図である。
図12】一実施形態に係る予め決定された演算タイプを用いてゼロスキップを行う過程を示す図である。
図13】一実施形態に係る累積方式の畳み込み演算過程を示したフローチャートである。
図14】一実施形態に係るニューラルネットワークのためのデータ処理方法を示す図である。
図15】一実施形態に係るニューラルネットワークのためのデータを処理する処理装置を示すブロック図である。
図16】一実施形態に係る電子装置を示す図である。
【発明を実施するための形態】
【0021】
本明細書で開示されている特定の構造的又は機能的な説明は単に実施形態を説明するための目的として例示されたものであり、実施形態は様々な異なる形態で実施され、本明細書に説明された実施形態に限定されることはない。
【0022】
第1又は第2などの用語を複数の構成要素を説明するために用いることがあるが、このような用語は1つの構成要素を他の構成要素から区別する目的としてのみ解釈されなければならない。例えば、第1構成要素は第2構成要素と命名することができ、同様に第2構成要素は第1構成要素にも命名することができる。
【0023】
単数の表現は、文脈上、明白に異なる意味をもたない限り複数の表現を含む。本明細書において、「含む」又は「有する」等の用語は明細書上に記載した特徴、数字、ステップ、動作、構成要素、部品又はこれらを組み合わせたものが存在することを示すものであって、1つ又はそれ以上の他の特徴や数字、ステップ、動作、構成要素、部品、又はこれを組み合わせたものなどの存在又は付加の可能性を予め排除しないものとして理解しなければならない。
【0024】
異なるように定義されない限り、技術的であるか又は科学的な用語を含む、本明細書で用いる全ての用語は、本実施形態が属する技術分野で通常の知識を有する者によって一般的に理解されるものと同じ意味を有する。一般的に用いられる予め定義された用語は、関連技術の文脈上で有する意味と一致する意味を有するものと解釈すべきであって、本明細書で明白に定義しない限り、理想的又は過度に形式的な意味として解釈されることはない。
【0025】
以下、実施形態を添付する図面を参照しながら詳細に説明する。添付の図面を参照して説明することにおいて、図面符号に関係なく、同じ構成要素は同じ参照符号を付し、これに対する重複する説明は省略することにする。
【0026】
図1は、一実施形態に係るニューラルネットワークのためのデータを処理する処理装置を示す図である。図1を参照すると、データ処理装置100は、ニューラルネットワーク110を含んでもよく、ニューラルネットワーク110に関連する動作を処理する。例えば、ニューラルネットワーク110に関連する動作は、オブジェクト認識動作及びユーザ認証動作を含む。
【0027】
ニューラルネットワーク110は、ディープラーニングに基づいて非線形関係にある入力データ及び出力データを互いにマッピングすることで、オブジェクト認識動作やユーザ認証動作を行う。ディープラーニングは、ビッグデータセットから映像又は音声認識のような問題を解決するための機械学習方式である。ディープラーニングは、準備されたトレーニングデータを用いてニューラルネットワーク110をトレーニングしながら、エネルギーが最小化される地点を訪ねて行く最適化された問題解説の過程として理解される。ディープラーニングの教師あり(supervised)又は教師なし(unsupervised)学習を介してニューラルネットワーク110の構造、あるいはモデルに対応する重みが求められ、このような重みを介して入力データ及び出力データが互いにマッピングされることができる。
【0028】
ニューラルネットワーク110は、複数のレイヤを含むディープニューラルネットワーク(deep neural network:DNN)に該当する。複数のレイヤは、入力層、少なくとも1つの隠れ層、及び出力層を含む。図1に示されている第1レイヤ110、第2レイヤ120、及び第nレイヤ130は、このような複数のレイヤのうち少なくとも一部であってもよい。ニューラルネットワーク110は、完全接続ネットワーク(fully connected network)、畳み込みニューラルネットワーク(convolutional neural network:CNN)、及びリカレントニューラルネットワーク(recurrent neural network:RNN)のうち少なくとも1つを含む。例えば、ニューラルネットワーク110内の複数のレイヤのうち少なくとも一部はCNNに該当し、他の一部は完全接続ネットワークに該当する。
【0029】
CNNで各レイヤに入力されるデータは入力特徴マップと称され、各レイヤから出力されるデータは出力特徴マップと称されてもよい。入力特徴マップ及び出力特徴マップは、活性化データと称される。入力層で入力特徴マップは入力データに対応する。
【0030】
ニューラルネットワーク110に関する動作を処理するために、データ処理装置100は、各畳み込みレイヤに関して入力特徴マップとウェイトカーネル(weight kernel)との間に畳み込み演算を行い、畳み込み演算の結果に基づいて出力特徴マップを生成する。ニューラルネットワーク110の幅と深度が十分に大きければ、任意の関数を実現できる程度の容量を有する。ニューラルネットワーク110が適切なトレーニング過程を介して十分に多い量のトレーニングデータを学習すれば、最適な性能を達成することができる。
【0031】
ウェイトカーネルは、「予め」決定されたものと表現しているが、ここで、「予め」とは、ニューラルネットワーク110が「開始」される前を示す。ニューラルネットワーク110が「開始」されたことは、ニューラルネットワーク110が推論(inference)のための準備ができたことを意味する。例えば、ニューラルネットワーク110が「開始」されたことは、ニューラルネットワーク110がメモリにロードされたこと、あるいはニューラルネットワーク110がメモリにロードされた後、ニューラルネットワーク110に推論のための入力データが入力されたことを含む。
【0032】
以下で再び詳説するが、実施形態に係る畳み込み演算は、畳み込み演算の中間結果を出力特徴マップに累積させる方式により行われ、ウェイトカーネルや入力特徴マップを畳み込みするために適切な形態に変形し、バッファに格納しているバッファリング動作は要求されない。言い換えれば、実施形態に係る畳み込み演算は、プランナー(planar)の形に格納されている入力特徴マップのデータをそのまま使用することができる。従って、畳み込みの演算を効率がよく行うことができる。また、実施形態に係る畳み込み演算でスカラーに該当する1つのウェイトエレメントと、マトリックスに該当する1つの入力平面を乗算することが1つの単位演算に該当する。従って、0の値を有するウェイトエレメントに関し、ソフトウェアを介してゼロスキップを効率よく処理することができる。
【0033】
図2は、一実施形態に係る畳み込み演算過程を示す図である。図2を参照すると、ウェイトカーネル210と入力特徴マップ220との間の畳み込み演算により出力特徴マップ230が生成される。ウェイトカーネル210、入力特徴マップ220、及び出力特徴マップ230のデータがメモリ空間に格納される形態はそれぞれ平面に表現される。例えば、ウェイトカーネル1からウェイトカーネルDのそれぞれは、C個のウェイト平面を含んでもよく、入力特徴マップ220はC個の入力平面を含んでもよく、出力特徴マップ230はD個の出力平面を含んでもよい。C個のウェイト平面及びC個の入力平面はそれぞれ入力チャネルに対応し、D個の出力平面はそれぞれ出力チャネルに対応する。また、Cは入力チャネルの数に対応し、Dは出力チャネルの数に対応する。
【0034】
各平面は、予め決定されたビット幅のエレメントを含む。例えば、各ウェイト平面はK×Kのサイズを有し、各入力平面及び各出力平面はW×Hのサイズを有するが、ここで、W、K、及びHは、それぞれエレメントの数を示す。ウェイト平面のエレメントはウェイトエレメントに称され、入力平面のエレメントは入力エレメントに称され、出力平面のエレメントは出力エレメントに称される。実施形態に係る畳み込み演算は、エレメント単位で行われる。
【0035】
説明の便宜のために、ウェイト平面の幅及び高さはKとして、同一なものと仮定し、入力平面出力平面のサイズはW×Hとして、同一なものと仮定する。但し、実施形態によりウェイト平面の幅及び高さはそれぞれ異なり、入力平面と出力平面のサイズはそれぞれ異なってもよい。
【0036】
図3は、スライディングウィンドウ方式の畳み込み演算を示す図である。スライディングウィンドウ方式の畳み込み演算によれば、ウェイトカーネル310が入力特徴マップ320にスライドされて畳み込み演算が行われ、出力特徴マップ330が生成される。
【0037】
スライディングウィンドウ方式は、畳み込み演算のために既存に一般的に使用されるもので、実施形態に係る累積方式とは区分される。例えば、スライディングウィンドウ方式の場合、列ベクトルを生成するために入力特徴マップ320に関するバッファリング動作が行われる。実施形態に係る累積方式の場合、畳み込み演算の中間結果を出力特徴マップ330に累積させる方式により行われているため、スライディングウィンドウ方式のようにバッファリング動作は要求されない。
【0038】
スライディングウィンドウ方式の畳み込み演算によれば、ウェイトカーネル310が入力特徴マップ320にスライドされる過程で、ウェイトカーネル310は、入力特徴マップ320の非連続的なアドレスに格納されているデータと演算が行われるため、演算の処理速度を向上させるためには、入力特徴マップ320が適切な形態の連続したデータに変形され得る。例えば、図3に示すスライドストライド(sliding stride)は1であり、入力特徴マップ320の横方向及び縦方向のそれぞれに二行のゼロエレメントベクトルを通したゼロパディング(zero padding)が適用されることが仮定される。この場合、ウェイトカーネル310に対応するK×Cの行ベクトル(row vector)が定義され、入力特徴マップ320はK×Cの列ベクトル(column vector)に変形される。
【0039】
列ベクトルは、プランナー構造(planar structure)又はインターリーブ構造(interleaved structure)の入力特徴マップ320から列バッファにバッファリングされる。プランナー構造の場合、入力特徴マップ320が列ベクトルにバッファリングされる過程から1つの出力エレメントを決定するため、非連続の最多メモリアクセスがカーネルの高さKと入力チャネルの数Cとの間の積だけ発生する可能性がある。インターリーブ構造の場合、入力特徴マップ320が列ベクトルにバッファリングされる過程において、1つの出力エレメントを決定するために非連続のメモリ最多アクセスがカーネルの高さKだけ発生する可能性がある。
【0040】
実施形態に係る累積方式の畳み込みの場合、畳み込み演算の中間結果を出力特徴マップ330に累積させる方式により行われるため、入力特徴マップ320をプランナー又はインターリーブのような構造に変形するための別途のバッファリング動作は要求されない。従って、累積方式の畳み込みは、メモリアクセスを最小化して畳み込み演算の処理速度を最大化することができる。
【0041】
図4及び図5は、一実施形態に係る累積方式の畳み込み演算を介して1つの出力平面が生成される過程を示す図である。例えば、出力特徴マップは、D個の出力平面を含んでもよく、図4及び図5は、D個の出力平面のうちの1つが生成される過程に対応する。図4及び図5に示された過程が、D個の出力平面に関して繰り返されて出力特徴マップが生成される。
【0042】
図4を参照すると、入力特徴マップ410とウェイトカーネル420との間の畳み込み演算により出力平面430が生成される。例えば、ウェイトカーネル420は、D個のウェイトカーネルのうちd番目に該当し、出力平面430は、D個の出力平面のうちd番目に該当する。入力特徴マップ410は、図5に示す入力平面510を含んでもよく、ウェイトカーネル420は、図5に示すウェイト平面520を含んでもよい。出力平面430は、図5に示す出力平面540に対応する。
【0043】
図5を参照すると、入力平面511,512,513は、入力平面510に対応する。入力平面511,512,513の数は、入力チャネルの数Cに対応する。以下で入力チャネルの数Cは3と仮定する。但し、これは説明の便宜のためのもので、入力チャネルの数Cは、3以外の様々な値を有してもよい。ウェイト平面521,522,523はウェイト平面520に対応し、累積平面531,532,533は累積平面530に対応する。
【0044】
入力平面511とウェイト平面521との間のMAC演算を介して累積平面531が生成され、入力平面512とウェイト平面522との間のMAC演算を介して累積平面532が生成され、入力平面513とウェイト平面523との間のMAC演算を介して累積平面533が生成される。MAC演算過程は、後で詳しく説明する。累積平面531,532,533が生成されると、累積平面531,532,533に基づいて出力平面540が生成される。例えば、累積平面531,532,533の合計を介して出力平面540が生成される。
【0045】
図6及び図7は、一実施形態に係る累積方式の畳み込み演算のための入力平面とウェイト平面との間のMAC(multiply and accumulate)演算を示す図である。
【0046】
図6を参照すると、入力平面610の各入力エレメントとウェイト平面620の各ウェイトエレメントとの間のMAC演算に基づいて累積平面630が生成される。ウェイト平面620は、w~wのウェイトエレメントを含む。ウェイト平面620は、3×3のサイズを有するものと説明しているが、これは説明の便宜のためのものであり、ウェイト平面620は、3×3以外の他の様々なサイズを有し得る。図6には省略されているが、入力平面610及び累積平面630もそれぞれ複数のエレメントを含んでもよく、エレメントの単位で畳み込み演算が行われてもよい。
【0047】
図7を参照すると、入力平面711は図6に示す入力平面610に対応し、図7のウェイトエレメントw~wは、図6に示すウェイト平面620のウェイトエレメントw~wに対応し、累積平面740は図6に示す累積平面630に対応する。スライドストライドに基づいて、入力平面711に関するゼロパディングが行われて入力平面712が生成される。例えば、入力平面711のサイズがW×Hであり、スライドストライドが1である場合、入力平面712は(W+2)×(H+2のサイズを有する。
【0048】
ウェイトエレメント w~wを含むウェイト平面と入力平面712との間に、スライディングウィンドウ方式の畳み込み演算が実行されれば仮定すれば、入力平面712上に各ウェイトエレメントw~wが反応する反応領域721~729が定義される。例えば、スライディングウィンドウ方式の畳み込み演算が実行されればき、反応領域721内の入力エレメントはウェイトエレメントwに反応し、反応領域722内の入力エレメントはウェイトエレメントwに反応し、反応領域729内の入力エレメントはウェイトエレメントwに反応する。
【0049】
反応領域721~729のサイズは、入力平面711のサイズと同一であり、反応領域721~729のそれぞれのオフセットは、ウェイトエレメントw~wそれぞれのインデックスに基づいて決定される。例えば、入力平面711の幅がW+2である場合、反応領域721~729それぞれのオフセットは(W+2)×a+bに定義される。オフセットは、入力平面(例えば、パディングが適用された入力平面の原点)を基準として決定される。ここで、aは(i-1)をKで割った分を示し、bは(i-1)をKで割った余りを示す。iはウェイトエレメントw~wのインデックスを示し、Kはウェイトカーネルの幅を示す。これによれば、反応領域721のオフセットは0、反応領域722のオフセットは1、反応領域729のオフセットは(W+2)×2+2である。
【0050】
各反応領域721~729内の入力エレメントと、各ウェイトエレメントw~w間の積によって乗算結果731~739が生成され、乗算結果731~739の累積により累積平面740が生成される。例えば、出力平面は、C個の累積平面の合計を介して生成され、図7は、C個の累積平面のうちの1つに該当する累積平面740が生成される過程に対応する。乗算結果731~739内の各エレメントは、乗算結果のエレメントと称される。図7に示された過程がC個の累積平面に関し、繰り返し出力平面が生成される。また、出力特徴マップがD個の出力平面を含んでいる場合、累積基盤で生成されたD個の出力平面を介して出力特徴マップが決定されることができる。
【0051】
実施形態によれば、畳み込み演算の中間結果に該当する乗算結果731~739を累積して出力特徴マップが生成され、入力特徴マップを連続したデータに変形してバッファへの格納は要求されない。従って、入力特徴マップを連続したデータに変形してバッファに格納するために費やされる時間を削減することで、畳み込み演算の高速化を可能にし、変形されたデータを格納するためのメモリ空間を節約することができる。
【0052】
図8図10は、一実施形態に係るSIMD(single instruction multiple data)処理を用いた累積方式の畳み込み演算を示す図である。SIMDは、1つの命令語で複数のデータを処理するプロセッサの演算処理方式を意味する。以下で詳説するが、実施形態に係る累積方式の畳み込み演算は、SIMDに基づいて行われる。
【0053】
図8を参照すると、ウェイト平面810が入力平面820のスライド領域821にスライドされてMAC演算が行われ、累積平面830の累積領域831が決定される。同様に、ウェイト平面810がスライド領域822にスライドされ、MAC演算が行われて累積領域832が決定され、ウェイト平面810がスライド領域823にスライドされ、MAC演算が行われて累積領域833が決定される。スライド領域821~823の高さは、ウェイト平面810の高さに対応し、累積領域831~833の高さは、1つのエレメントに対応する。このような方式でスライド領域と累積領域の間の関係が形成される。
【0054】
図9を参照すると、入力平面900内のスライド領域910は、ウェイトw~wの反応領域911~919を含む。反応領域911~919それぞれのオフセットは、ウェイトエレメントw~wそれぞれのインデックスに基づいて決定される。例えば、図7を参照して説明したように、反応領域911~919それぞれのオフセットは(W+2)×a+bのように定義される。オフセットは、スライド領域(例えば、各スライド領域の原点)を基準として決定される。この場合、反応領域911~919それぞれのオフセットは、0、1、2、(W+2)、(W+2)+1、(W+2)+2、(W+2)×2、(W+2)×2+1、(W+2)×2+2になる。
【0055】
反応領域911~919から入力エレメントベクトルが抽出されてレジスタr1~r9に格納される。例えば、反応領域911の第1入力エレメントベクトルはレジスタr1に格納され、反応領域912の第2入力エレメントベクトルはレジスタr2に格納される。このように、入力エレメントベクトルはレジスタr1~r9に順次格納される。
【0056】
入力エレメントベクトルは、それぞれウェイトエレメントw~wのうち、自分に対応するエレメントとエレメント単位で乗算され、これによって加重された入力エレメントベクトルが生成される。例えば、反応領域911の第1入力エレメントベクトルはレジスタr1に格納されてウェイトエレメントwと乗算され、これにより、第1加重された入力エレメントベクトルが生成される。反応領域912の第2入力エレメントベクトルはレジスタr2に格納されてウェイトエレメントwと乗算され、これにより、第2加重された入力エレメントベクトルが生成される。反応領域911~919、入力エレメントベクトル、及び加重された入力エレメントベクトルのサイズはSIMD演算単位に対応する。
【0057】
このような過程で生成された加重された入力エレメントベクトルが累積し、スライド領域910に対応する累積ベクトルが生成される。また、このような過程が各スライド領域について繰り返されることで、各スライド領域に対応する累積ベクトルが生成され、累積ベクトルが集まって累積平面を形成することができる。累積平面及び累積ベクトルは、互いに異なる形態の累積データを指し、累積データとして称されてもよい。
【0058】
図10を参照すると、出力平面1010内の出力領域1011で既存に格納されている累積ベクトル(以下、第1累積ベクトルと称される)がロードされてレジスタr10)に格納される。レジスタr1~r9を介して新しい累積ベクトル(以下、第2累積ベクトルと称される)が生成されれば、レジスタr10で第1累積ベクトルと第2累積ベクトルが累積し、出力領域1011に格納される。
【0059】
図10は、出力領域1011に累積ベクトルが格納される過程が少なくとも一回実行されるものと仮定する。例えば、図10は、それぞれ第1入力チャネルに対応する第1入力平面と第1ウェイト平面との間のMAC演算を介して第1累積ベクトルが生成され、出力領域1011に格納され、その後それぞれ第2入力チャネルに対応する第2入力平面と第2ウェイト平面との間のMAC演算を介して第2累積ベクトルが生成され、第1累積ベクトル及び第2累積ベクトルが累積して出力領域1011に格納される状況に対応する。もし、出力領域1011に初期値が格納されている場合、言い換えれば、累積ベクトルが初めて生成される場合、出力領域1011で累積ベクトルがロードされる過程は省略され、新しく生成された累積ベクトルが別途の累積動作を行うことなく、出力領域1011に格納されることができる。
【0060】
出力領域1011に累積ベクトルが入力チャネルの数だけ繰り返して格納されれば(累積回数は、入力チャネルの数よりも1つ少ない)、出力領域1011に対応する出力エレメントベクトルが決定される。また、出力領域1011に関する過程が出力平面1010内の残りの出力領域についても実行されれば、出力平面1010が決定される。従って、SIMDを介して実施形態に係る累積方式の畳み込み演算が実現されることができる。
【0061】
図11は、一実施形態に係る累積方式の畳み込み演算のゼロスキップ過程を示す図である。実施形態に係る畳み込み演算は、入力平面の単位(より詳しくは、入力平面内の反応領域の単位)で行われるため、ソフトウェアを介してゼロスキップを効率よく処理することができる。
【0062】
図11を参照すると、各反応領域1121~1123内の入力エレメントと、各ウェイトエレメントw~w間の積によって乗算結果1141~1143が生成される。図11に示す実施形態において、ウェイトエレメントw~w、w、wは0に対応するものと仮定する。以下、0に対応するウェイトエレメントはゼロウェイトエレメントと称し、0に対応しないウェイトエレメントはノンゼロウェイトエレメントとして称する。この場合、ゼロウェイトエレメントに基づく乗算結果1143のような乗算結果は、累積平面や出力平面のデータに影響を与えないため、このような乗算結果に関する演算は省略される。
【0063】
図12は、一実施形態に係る予め決定された演算タイプを用いてゼロスキップを行う過程を示す図である。図12を参照すると、ステップS1210において、ゼロエンコーディングが行われる。ゼロエンコーディングを介してウェイトエレメントに含まれているノンゼロウェイトエレメントの数が決定される。例えば、図12において、ゼロエンコーディングの結果、ノンゼロウェイトエレメントの数は4に決定されてもよい。
【0064】
ステップS1220において、演算タイプのうち、ノンゼロウェイトエレメントの数に対応する演算タイプが選択され、ノンゼロウェイトエレメントに対応するデータがレジスタにロードされる。図12において、4のノンゼロウェイトエレメントの数に対応する演算タイプ4が選択される。演算タイプは、ノンゼロウェイトエレメントの数に応じてそれぞれ予め決定された方式の演算を行うように設定される。例えば、ウェイトエレメントにノンゼロウェイトエレメントが全く含まれていないケースから、ウェイトエレメント全体がノンゼロウェイトエレメントに該当するケースまで、それぞれのケースに関して演算タイプが設定される。演算タイプの数をN、ウェイトエレメントの数をK×Kとして定義すると、N=K×K+1であってもよい。図12はK=3であり、N=10であるケースを示す。
【0065】
レジスタにロードされるデータは、入力平面の少なくとも一部に該当する。例えば、ノンゼロウェイトエレメントに対応する入力エレメントベクトルがレジスタにロードされる。ノンゼロウェイトエレメントのインデックスに基づいて、入力エレメントベクトルに対応するオフセットが決定され、決定されたオフセットを介して入力平面から入力エレメントベクトルが抽出され、レジスタに格納される。図12において、ノンゼロウェイトエレメントに該当するw、w、w、wに基づいて0、1、(W+2)+2、(W+2)×2のオフセットが決定され、決定されたオフセットに対応する入力エレメントベクトルがreg1、reg2、reg3、reg4のレジスタにロードされる。
【0066】
予め決定された方式の演算は、ノンゼロウェイトエレメントとレジスタにロードされたデータと間のMAC演算を行って累積データを生成することを含む。ここで、データは、ノンゼロウェイトエレメントの数及びオフセットに基づいてレジスタにロードされる。例えば、ノンゼロウェイトエレメントとレジスタに格納された入力エレメントベクトルとの間のMAC演算が行われる。図12において、ノンゼロウェイトエレメントw、w、w、w及びレジスタreg1、reg2、reg3、reg4に格納された入力エレメントベクトル間の乗算結果に対応する加重された入力エレメントベクトルが生成され、加重された入力エレメントベクトルの累積により累積データが生成される。
【0067】
ステップS1230において、各演算タイプに対応するソースコードが行われる。例えば、演算タイプ0~演算タイプ9のそれぞれに対応するソースコードがメモリコード領域に格納され、選択された演算タイプに対応するソースコードがメモリコード領域からロードされて行われる。図12では、演算タイプ4に該当するソースコードが行われる。このようなソースコードは小さいメモリ空間を占めているため、ソースコードの使用がメモリ効率を低下させない。
【0068】
図13は、一実施形態に係る累積方式の畳み込み演算過程を示したフローチャートである。図13を参照すると、ステップS1301において、ウェイトカーネルwが取得される。dは出力チャネルのインデックスを示し、1~Dの自然数であってもよく、初期値は1であってもよい。ウェイトカーネルは、それぞれ出力チャネルに対応する。例えば、ウェイトカーネルwは第1出力チャネルに対応し、ウェイトカーネルwは第2出力チャネルに対応する。
【0069】
ステップS1302において、入力平面iが取得され、ステップS1303において、ウェイト平面
【数1】
が取得される。cは入力チャネルのインデックスを示し、1~Cの自然数であってもよく、初期値は1であってもよい。入力平面及びウェイト平面はそれぞれ入力チャネルに対応する。例えば、入力平面i及びウェイト平面
【数2】
はそれぞれ第1入力チャネルに対応し、入力平面i2及びウェイト平面
【数3】
はそれぞれ第2入力チャネルに対応する。
【0070】
ステップS1306において、MAC演算が行われる。例えば、入力平面i内の入力エレメントの少なくとも一部とウェイト平面
【数4】
内のウェイトエレメントの少なくとも一部との間の乗算結果を累積して累積データが生成される。例えば、入力平面iにおいて、ウェイトエレメントの少なくとも一部に対応する入力エレメントベクトルが抽出され、入力エレメントベクトルとウェイトエレメントの少なくとも一部との間の乗算結果に対応する加重された入力エレメントベクトルが生成され、加重された入力エレメントベクトルを累積して累積データが生成される。ここで、ウェイトエレメントの少なくとも一部のインデックスに基づいて、入力エレメントベクトルに対応するオフセットが決定され、オフセットに基づいて入力平面から入力エレメントベクトルが抽出される。
【0071】
一実施形態によれば、ステップS1304,S1305を介してゼロスキップが実現される。ステップS1304でゼロエンコーディングが行われ、ステップS1305で演算タイプが選択される。ゼロエンコーディングを介してノンゼロウェイトエレメントの数が決定されれば、ノンゼロウェイトエレメントの数に対応する演算タイプが選択され、ノンゼロウェイトエレメントに対応する入力エレメントがレジスタにロードされる。例えば、ノンゼロウェイトエレメントに対応する入力エレメントベクトルがレジスタにロードされる。
【0072】
選択された演算タイプに応じて予め決定されたプロセスによる演算が行われる。例えば、演算はノンゼロウェイトエレメントとレジスタ内の入力エレメント(例えば、入力エレメントベクトル)との間の乗算を行い、乗算結果を累積して累積データ(例えば、累積ベクトル)を生成することを含む。従って、累積データが生成されるとき、ゼロウェイトエレメントと入力エレメントとの間の乗算演算が省略されてもよい。
【0073】
ステップS1307において、出力が累積する。例えば、MAC演算の出力に該当する累積データが累積する。一例として、c=1に該当する最初の繰り返しが行われる場合、入力平面iが取得され、ウェイト平面
【数5】
が取得され、入力平面i内の第1入力エレメントの少なくとも一部と、ウェイト平面
【数6】
内の第1ウェイトエレメントの少なくとも一部との間の乗算結果を累積して第1累積データが生成される。c=2に該当する、2番目の繰り返しが行われる場合、入力平面iが取得され、ウェイト平面
【数7】
が取得され、入力平面i内の第2入力エレメントの少なくとも一部と、ウェイト平面
【数8】
内の第2ウェイトエレメントの少なくとも一部との間の乗算結果を累積して第2累積データが生成される。ここで、第1累積データ及び前記第2累積データが累積する。c=Cに該当するC番目の繰り返しが行われる場合、各入力チャネルに関する各累積データの合計に基づいて出力平面が生成される。
【0074】
ステップS1308において、cとCが比較される。cとCが異なる場合、例えば、cがCよりも小さい場合にステップS1309でcが1だけ増加し、ステップS1302が行われる。cとCが同じ場合、ステップS1309において、dとDが比較される。dとDが異なる場合、例えば、dがDよりも小さい場合にステップS1311でdが1だけ増加し、ステップS1301が行われる。ステップS1308,S1309を介して出力チャネルが固定された状態で全ての入力チャネルについて畳み込みが行われ、ステップS1310,S1311を介して出力チャネルを変えながら全ての出力チャネルについて畳み込みが行われる。
【0075】
図14は、一実施形態に係るニューラルネットワークのためのデータ処理方法を示す図である。図14を参照すると、処理装置は、入力チャネルに対応する入力特徴マップの入力平面のうち、第1入力チャネルに対応する第1入力平面を取得し(S1410)、それぞれ入力チャネルに対応するウェイトカーネルのウェイト平面のうち、第1入力チャネルに対応する第1ウェイト平面を取得し(S1420)、第1入力平面内の第1入力エレメントの少なくとも一部と、第1ウェイト平面内の第1ウェイトエレメントの少なくとも一部との間の乗算結果を累積して第1累積データを生成し(S1430)、第1累積データに基づいて、それぞれ出力チャネルに対応する出力特徴マップの出力平面のうち、第1出力チャネルに対応する第1出力平面を生成する(S1440)。その他に、ニューラルネットワークのためのデータ処理方法については、図1図13を参照して説明された内容が適用される。
【0076】
図15は、一実施形態に係るニューラルネットワークのためのデータを処理する処理装置を示すブロック図である。図15を参照すると、データ処理装置1500は入力データを受信し、入力データに関連するニューラルネットワークの動作を処理する。例えば、ニューラルネットワークの動作は、オブジェクト認識動作及びユーザ認証動作を含む。データ処理装置1500は、ニューラルネットワークの処理と関連して本明細書に記述されるか又は示された1つ以上の動作を行うことができ、ニューラルネットワークの処理結果をユーザに提供することができる。データ処理装置1500は、ニューラルネットワークの動作を処理する過程で累積方式の畳み込みを行う。
【0077】
データ処理装置1500は、1つ以上のプロセッサ1510及びメモリ1520を含む。メモリ1520はプロセッサ1510に接続され、プロセッサ1510によって実行可能な命令語、プロセッサ1510が演算するデータ、又はプロセッサ1510によって処理されたデータを格納する。メモリ1520は、非一時的なコンピュータで読み取り可能な記録媒体、例えば、高速ランダムアクセスメモリ及び/又は不揮発性コンピュータ読み取り可能な格納媒体(例えば、1つ以上のディスク記憶装置、フラッシュメモリ装置、又は、その他の不揮発性固体メモリ装置)を含む。
【0078】
プロセッサ1510は、図1図14を参照して説明された1つ以上の動作を実行するための命令語を実行する。例えば、メモリ1520に格納された命令語がプロセッサ1510で実行されれば、プロセッサ1510は、それぞれ入力チャネルに対応する入力特徴マップの入力平面のうち、第1入力チャネルに対応する第1入力平面を取得し、それぞれ入力チャネルに対応するウェイトカーネルのウェイト平面のうち、第1入力チャネルに対応する第1ウェイト平面を取得し、第1入力平面内の第1入力エレメントの少なくとも一部と、第1ウェイト平面内の第1ウェイトエレメントの少なくとも一部との間の乗算結果を累積して第1累積データを生成し、第1累積データに基づいてそれぞれ出力チャネルに対応する出力特徴マップの出力平面のうち、第1出力チャネルに対応する第1出力平面を生成する。
【0079】
図16は、一実施形態に係る電子装置を示す図である。図16を参照すると、電子装置1600は入力データを受信し、入力データに関連するニューラルネットワークの動作を処理する。例えば、ニューラルネットワークの動作は、オブジェクト認識動作及びユーザ認証動作を含む。電子装置1600は、ニューラルネットワークの動作を処理する過程で上述した累積方式の畳み込みを行う。電子装置1600は、図1図15を参照して説明された処理装置を含むか、図1図15を参照して説明された処理装置の機能を行うことができる。
【0080】
電子装置1600は、プロセッサ1610、メモリ1620、カメラ1630、記憶装置1640、入力装置1650、出力装置1660、及びネットワークインターフェース1670を含む。プロセッサ1610、メモリ1620、カメラ1630、記憶装置1640、入力装置1650、出力装置1660、及びネットワークインターフェース1670は通信バス1680を介して通信する。
【0081】
プロセッサ1610は、電子装置1600内で実行するための機能及び命令語を実行する。例えば、プロセッサ1610は、メモリ1620又は記憶装置1640に格納された命令語を処理する。プロセッサ1610は、図1図15を参照して説明された1つ以上の動作を行う。
【0082】
メモリ1620は、ニューラルネットワークの動作を処理するための情報を格納する。メモリ1620は、コンピュータ読み取り可能な格納媒体又はコンピュータ読み取り可能な記憶装置を含む。メモリ1620は、プロセッサ1610によって実行するための命令語を格納し、電子装置1600によってソフトウェア又はアプリケーションが行われる間に関連情報を格納する。
【0083】
カメラ1630は、静止画、ビデオ映像、又は、これらの全てを撮影する。カメラ1630は、ユーザが顔認証を試みるために入力する顔領域を撮影する。カメラ1630は、オブジェクトに関する深度情報を含む3D映像を提供することもできる。
【0084】
記憶装置1640は、コンピュータ読み取り可能な格納媒体又はコンピュータ読み取り可能な記憶装置を含む。一実施形態によれば、記憶装置1640は、メモリ1620よりもさらに多くの量の情報を格納し、情報を長期間格納することができる。例えば、記憶装置1640は、磁気ハードディスク、光ディスク、フラッシュメモリ、フロッピーディスク又は当技術分野で知られた異なる形態の不揮発性メモリを含んでもよい。
【0085】
入力装置1650は、キーボード及びマウスを通した伝統的な入力方式、及びタッチ入力、音声入力、及びイメージ入力のような新しい入力方式を介してユーザから入力を受信する。例えば、入力装置1650は、キーボード、マウス、タッチスクリーン、マイクロホン、又は、ユーザから入力を検出し、検出された入力を電子装置1600に伝達できる任意の他の装置を含むことができる。
【0086】
出力装置1660は、視覚的、聴覚的、又は触覚的なチャネルを介してユーザに電子装置1600の出力を提供する。出力装置1660は、例えば、ディスプレイ、タッチスクリーン、スピーカ、振動発生装置又はユーザに出力を提供できる任意の他の装置を含んでもよいむ。ネットワークインターフェース1670は、有線又は無線ネットワークを介して外部装置と通信し得る。
【0087】
以上述した実施形態は、ハードウェア構成要素、ソフトウェア構成要素、又はハードウェア構成要素及びソフトウェア構成要素の組み合せで具現される。例えば、本実施形態で説明した装置及び構成要素は、例えば、プロセッサ、コントローラ、ALU(arithmetic logic unit)、デジタル信号プロセッサ(digital signal processor)、マイクロコンピュータ、FPA(field programmable array)、PLU(programmable logic unit)、マイクロプロセッサー、又は命令(instruction)を実行して応答する異なる装置のように、1つ以上の汎用コンピュータ又は特殊目的コンピュータを用いて具現される。処理装置は、オペレーティングシステム(OS)及びオペレーティングシステム上で実行される1つ以上のソフトウェアアプリケーションを実行する。また、処理装置は、ソフトウェアの実行に応答してデータをアクセス、格納、操作、処理、及び生成する。理解の便宜のために、処理装置は1つが使用されるものとして説明する場合もあるが、当技術分野で通常の知識を有する者は、処理装置が複数の処理要素(processing element)及び/又は複数類型の処理要素を含むことが把握する。例えば、処理装置は、複数のプロセッサ又は1つのプロセッサ及び1つのコントローラを含む。また、並列プロセッサ(parallel processor)のような、他の処理構成も可能である。
【0088】
ソフトウェアは、コンピュータプログラム、コード、命令、又はそのうちの一つ以上の組合せを含み、希望の通りに動作するよう処理装置を構成したり、独立的又は結合的に処理装置に命令したりすることができる。ソフトウェア及び/又はデータは、処理装置によって解釈されたり処理装置に命令又はデータを提供したりするために、いずれかの類型の機械、構成要素、物理的装置、仮想装置、コンピュータ格納媒体又は装置、又は送信される信号波に永久的又は一時的に具体化することができる。ソフトウェアはネットワークに連結されたコンピュータシステム上に分散され、分散した方法で格納されたり実行されたりし得る。ソフトウェア及びデータは1つ以上のコンピュータで読み取り可能な記録媒体に格納され得る。
【0089】
本実施形態による方法は、様々なコンピュータ手段を介して実施されるプログラム命令の形態で具現され、コンピュータ読み取り可能な記録媒体に記録される。記録媒体は、プログラム命令、データファイル、データ構造などを単独又は組み合せて含む。記録媒体及びプログラム命令は、本発明の目的のために特別に設計して構成されたものでもよく、コンピュータソフトウェア分野の技術を有する当業者にとって公知のものであり使用可能なものであってもよい。コンピュータ読み取り可能な記録媒体の例として、ハードディスク、フロッピー(登録商標)ディスク及び磁気テープのような磁気媒体、CD-ROM、DVDのような光記録媒体、フロプティカルディスクのような磁気-光媒体、及びROM、RAM、フラッシュメモリなどのようなプログラム命令を保存して実行するように特別に構成されたハードウェア装置を含む。プログラム命令の例としては、コンパイラによって生成されるような機械語コードだけでなく、インタプリタなどを用いてコンピュータによって実行される高級言語コードを含む。ハードウェア装置は、本発明に示す動作を実行するために1つ以上のソフトウェアモジュールとして作動するように構成してもよく、その逆も同様である。
【0090】
上述したように実施形態を例として限定された図面によって説明したが、当技術分野で通常の知識を有する者であれば、上記の説明に基づいて様々な技術的な修正及び変形を適用することができる。例えば、説明された技術が説明された方法と異なる順で実行されてよく、かつ/又は説明されたシステム、構造、装置、回路などの構成要素が説明された方法と異なる形態で結合又は組み合わされてもよく、他の構成要素又は均等物によって置き換え又は置換されたとしても適切な結果を達成することができる。
【0091】
したがって、本発明の範囲は、開示された実施形態に限定されて定められるものではなく、特許請求の範囲及び特許請求の範囲と均等なものなどによって定められるものである。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16