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

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

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

特許7117280ニューラルネットワークのパラメータを量子化する方法及びその装置
<>
  • 特許-ニューラルネットワークのパラメータを量子化する方法及びその装置 図1
  • 特許-ニューラルネットワークのパラメータを量子化する方法及びその装置 図2
  • 特許-ニューラルネットワークのパラメータを量子化する方法及びその装置 図3A
  • 特許-ニューラルネットワークのパラメータを量子化する方法及びその装置 図3B
  • 特許-ニューラルネットワークのパラメータを量子化する方法及びその装置 図3C
  • 特許-ニューラルネットワークのパラメータを量子化する方法及びその装置 図4
  • 特許-ニューラルネットワークのパラメータを量子化する方法及びその装置 図5
  • 特許-ニューラルネットワークのパラメータを量子化する方法及びその装置 図6
  • 特許-ニューラルネットワークのパラメータを量子化する方法及びその装置 図7
  • 特許-ニューラルネットワークのパラメータを量子化する方法及びその装置 図8
  • 特許-ニューラルネットワークのパラメータを量子化する方法及びその装置 図9
  • 特許-ニューラルネットワークのパラメータを量子化する方法及びその装置 図10
  • 特許-ニューラルネットワークのパラメータを量子化する方法及びその装置 図11
  • 特許-ニューラルネットワークのパラメータを量子化する方法及びその装置 図12
  • 特許-ニューラルネットワークのパラメータを量子化する方法及びその装置 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-08-03
(45)【発行日】2022-08-12
(54)【発明の名称】ニューラルネットワークのパラメータを量子化する方法及びその装置
(51)【国際特許分類】
   G06N 3/02 20060101AFI20220804BHJP
【FI】
G06N3/02
【請求項の数】 17
(21)【出願番号】P 2019189522
(22)【出願日】2019-10-16
(65)【公開番号】P2020064635
(43)【公開日】2020-04-23
【審査請求日】2021-04-15
(31)【優先権主張番号】10-2018-0123927
(32)【優先日】2018-10-17
(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)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】朴 ▲ひょん▼宣
(72)【発明者】
【氏名】李 俊行
(72)【発明者】
【氏名】姜 信行
【審査官】松崎 孝大
(56)【参考文献】
【文献】特開2018-124681(JP,A)
【文献】国際公開第2018/140294(WO,A1)
【文献】米国特許出願公開第2017/0220929(US,A1)
【文献】米国特許出願公開第2018/0107451(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/02
(57)【特許請求の範囲】
【請求項1】
ニューラルネットワークのパラメータを量子化する方法において、
パラメータそれぞれに対して、前記パラメータを量子化するための固定小数点形式のビット範囲を外れる程度を示すビットシフト値を計算する段階と、
前記パラメータのビットシフト値を利用し、前記固定小数点形式をアップデートする段階と、
アップデートされた固定小数点形式により、学習過程または推論過程でアップデートされたパラメータを量子化する段階と、を含み、
前記計算する段階は、
前記パラメータそれぞれについて、「1」値を有する最上位ビットを検出する段階と、
前記パラメータそれぞれについて、前記検出された最上位ビットと、前記固定小数点形式の整数部の最上位ビットとのビット数差をビットシフト値として決定する段階と、を含む、方法。
【請求項2】
前記検出する段階は、
前記パラメータそれぞれについて、前記固定小数点形式の整数部の最上位ビットを基準に、所定の範囲内ビットを検索し、前記「1」値を有する最上位ビットを検出することを特徴とする請求項に記載の方法。
【請求項3】
前記アップデートする段階は、
前記ビットシフト値から、オーバーフローの発生回数及び最大ビットシフト値を決定する段階と、
前記オーバーフローの発生回数及び前記最大ビットシフト値を利用し、前記固定小数点形式をアップデートする段階と、を含むことを特徴とする請求項1乃至のいずれか一項に記載の方法。
【請求項4】
前記アップデートする段階は、
前記オーバーフローの発生回数が所定の値より多い場合、
前記固定小数点形式の小数部長を前記最大ビットシフト値ほど減少さ、前記固定小数点形式をアップデートすることを特徴とする請求項に記載の方法。
【請求項5】
前記所定の値は、前記パラメータの個数に基づいて決定されることを特徴とする請求項に記載の方法。
【請求項6】
前記アップデートされたパラメータは、
(t+1)番目の学習過程または推論過程でアップデートされたパラメータであり、
前記パラメータは、
t番目の学習過程または推論過程でアップデートされたパラメータであり、
前記固定小数点形式は、
(t-1)番目の学習過程または推論過程でアップデートされたパラメータに基づいてアップデートされた固定小数点形式であり、
tは、2以上の自然数であることを特徴とする請求項1乃至のいずれか一項に記載の方法。
【請求項7】
前記計算する段階は、
前記固定小数点形式により、前記パラメータを量子化する過程において、前記パラメータそれぞれに係わるビットシフト値を計算することを特徴とする請求項1乃至のいずれか一項に記載の方法。
【請求項8】
前記パラメータは、
前記ニュラルネットワーク内の同一レイヤ上の重みまたはアクチベーションであることを特徴とする請求項1乃至のいずれか一項に記載の方法。
【請求項9】
請求項1乃至のうちいずれか項に記載の方法をコンピュータに実行させるプログラム。
【請求項10】
ニューラルネットワークのパラメータを量子化する装置において、
少なくとも1つのプログラムを保存するメモリと、
前記少なくとも1つのプログラムを実行することにより、パラメータそれぞれについて、前記パラメータを量子化するための固定小数点形式のビット範囲を外れる程度を示すビットシフト値を計算し、前記パラメータのビットシフト値を利用し、前記固定小数点形式をアップデートし、アップデートされた固定小数点形式により、学習過程または推論過程でアップデートされたパラメータを量子化するプロセッサと、を含み、
前記プロセッサは、
前記パラメータそれぞれについて、「1」値を有する最上位ビットを検出し、
前記パラメータそれぞれについて、前記検出された最上位ビットと、前記固定小数点形式の整数部の最上位ビットとのビット数差を、ビットシフト値として決定する、装置。
【請求項11】
前記プロセッサは、
前記固定小数点形式の整数部の最上位ビットを基準に、所定の範囲内ビットを検索し、前記「1」値を有する最上位ビットを検出することを特徴とする請求項10に記載の装置。
【請求項12】
前記プロセッサは、
前記ビットシフト値から、オーバーフローの発生回数及び最大ビットシフト値を決定し、
前記オーバーフローの発生回数及び前記最大ビットシフト値を利用し、前記固定小数点形式をアップデートすることを特徴とする請求項10乃至11のいずれか一項に記載の装置。
【請求項13】
前記プロセッサは、
前記オーバーフローの発生回数が所定の値より多い場合、
前記固定小数点形式の小数部長を前記最大ビットシフト値ほど減少させ、前記固定小数点形式をアップデートすることを特徴とする請求項12に記載の装置。
【請求項14】
前記所定の値は、前記パラメータの個数に基づいて決定されることを特徴とする請求項13に記載の装置。
【請求項15】
前記アップデートされたパラメータは、
(t+1)番目の学習過程または推論過程でアップデートされたパラメータであり、
前記パラメータは、
t番目の学習過程または推論過程でアップデートされたパラメータであり、
前記固定小数点形式は、
(t-1)番目の学習過程または推論過程でアップデートされたパラメータに基づいてアップデートされた固定小数点形式であり、
tは、2以上の自然数であることを特徴とする請求項10乃至14のいずれか一項に記載の装置。
【請求項16】
前記固定小数点形式により、前記パラメータを量子化する過程において、前記パラメータそれぞれに係わるビットシフト値を計算することを特徴とする請求項10乃至15のいずれか一項に記載の装置。
【請求項17】
前記パラメータは、
前記ニューラルネットワーク内の同一レイヤ上の重みまたはアクチベーションであることを特徴とする請求項10乃至16のいずれか一項に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ニューラルネットワークのパラメータを量子化する方法及びその装置に関する。
【背景技術】
【0002】
ニューラルネットワーク(neural network)は、生物学的脳をモデリングしたコンピュータ科学的アーキテクチャ(computational architecture)を参照する。最近、ニューラルネットワーク技術の発展により、多種の電子システムにおいて、ニューラルネットワーク装置を使用し、入力データを分析して有効な情報を抽出している。
該ニューラルネットワーク装置は、入力データに対する多量の演算を行う。そのようなニューラルネットワーク演算を効率的に処理することができる技術が研究されている。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本発明が解決しようとする課題は、ニューラルネットワークのパラメータを量子化する方法及びその装置を提供するものである。本実施形態の技術的課題は、前述のような技術的課題に限定されるものではなく、以下の実施形態から他の技術的課題が類推されるのである。
【課題を解決するための手段】
【0004】
一側面により、ニューラルネットワークのパラメータを量子化する方法は、パラメータそれぞれに対して、パラメータを量子化するための固定小数点形式(fixed point format)のビット範囲を外れる程度を示すビットシフト値を計算する段階と、パラメータのビットシフト値を利用し、固定小数点形式をアップデートする段階と、アップデートされた固定小数点形式により、学習過程または推論過程でアップデートされたパラメータを量子化する段階と、を含んでもよい。
【0005】
他の側面により、ニューラルネットワークのパラメータを量子化する装置は、少なくとも1つのプログラムを保存するメモリと、少なくとも1つのプログラムを実行することにより、パラメータそれぞれに対して、パラメータを量子化するための固定小数点形式のビット範囲を外れる程度を示すビットシフト値を計算し、パラメータのビットシフト値を利用し、固定小数点形式をアップデートし、アップデートされた固定小数点形式により、学習過程または推論過程でアップデートされたパラメータを量子化するプロセッサと、を含んでもよい。
【0006】
さらに他の側面により、該ニューラルネットワークのパラメータを量子化する方法を具現するためのプログラムが記録されたコンピュータで読み取り可能な記録媒体が提供される。
【発明の効果】
【0007】
本実施形態によれば、ニューラルネットワーク装置は、学習過程または推論過程でアップデートされたパラメータの変化に対応するように、アップデートされたパラメータを量子化するための固定小数点形式をアップデートするが、演算量を減少させながらも、精度損失を減らすことができる。また、該ニューラルネットワーク装置は、t番目の学習過程または推論過程でアップデートされたパラメータを量子化する場合、既決定の固定小数点形式によって量子化するが、固定小数点形式を決定するために、t番目の学習過程または推論過程でアップデートされたパラメータをいずれもスキャンする時間及びハードウェアオーバーヘッドを減らすことができる。また、該ニューラルネットワーク装置は、パラメータのオーバーフロー発生回数及び最大ビットシフト値を利用し、固定小数点形式をアップデートするが、相対的に簡単でありながらも、少ない演算を介して、固定小数点形式をアップデートするので、ハードウェアオーバーヘッドを減らすことができる。
【図面の簡単な説明】
【0008】
図1】一実施形態によるニューラルネットワーク学習期及びニューラルネットワーク推論期を説明する図面である。
図2】一実施形態によるニューラルネットワークの例示を示す図面である。
図3A】一実施形態による浮動小数点形式のパラメータを図示した図面である。
図3B】一実施形態による固定小数点形式のパラメータを図示した図面である。
図3C】他の実施形態による固定小数点形式のパラメータを図示した図面である。
図4】一実施形態によるニューラルネットワーク装置のハードウェア構成を図示したブロック図である。
図5】プロセッサが反復的な学習過程または推論過程で動作する実施形態を示す図面である。
図6】プロセッサがパラメータのビットシフト値を利用し、固定小数点形式をアップデートする実施形態を示す図面である。
図7】プロセッサがパラメータのビットシフト値を計算する実施形態を示す図面である。
図8】プロセッサがパラメータ内において、「1」を有する最上位ビットを検出する実施形態を示す図面である。
図9】プロセッサが最大ビットシフト値、及びオーバーフローの発生回数を決定する実施形態を示す図面。
図10】一例により、プロセッサが固定小数点形式の小数部長をアップデートするためのアルゴリズムを図示した図面である。
図11】他例により、プロセッサが固定小数点形式の小数部長をアップデートするためのアルゴリズムを図示した図面である。
図12】一実施形態による電子システムを示すブロック図である。
図13】一実施形態により、ニューラルネットワーク装置の動作方法について説明するための図面である。
【発明を実施するための形態】
【0009】
以下、添付された図面を参照しながら、ただ、例示のための実施形態について詳細に説明する。以下の説明は、実施形態を具体化するためのものであるのみ、発明の権利範囲を制限したり限定したりするものではないということは言うまでもない。詳細な説明、及び実施形態から、当該技術分野の当業者が容易に類推することができることは、権利範囲に属すると解釈される。
【0010】
本明細書で使用される「構成される」または「含む」というような用語は、明細書上に記載された多くの構成要素、または多くの段階を必ずしもいずれも含むものであると解釈されるものではなく、そのうち一部構成要素または一部段階は、含まれなかったり、または追加的な構成要素または段階をさらに含んだりもすると解釈されなければならない。
【0011】
また、本明細書で使用される「第1」または「第2」というように、序数を含む用語は、多様な構成要素についての説明に使用されるが、そのような用語は、1つの構成要素を他の構成要素から区別する目的のみに使用される。
【0012】
本実施形態は、ニューラルネットワークのパラメータを量子化する方法及びその装置に係わるものであり、以下の実施形態が属する技術分野において当業者に周知されている事項については、詳細な説明を省略する。
【0013】
図1は、一実施形態によるニューラルネットワーク学習器及びニューラルネットワーク推論器について説明する図面である。図1を参照すれば、ニューラルネットワーク学習器10は、ニューラルネットワークを生成したり、ニューラルネットワークを訓練(トレーニング)(または、学習)させたり、浮動小数点形式のニューラルネットワークを、固定小数点形式のニューラルネットワークに量子化したり、固定小数点形式のニューラルネットワークを、他の固定小数点形式のニューラルネットワークに量子化したり、ニューラルネットワークを再訓練(再トレーニング)させたりする機能のような多様なプロセッシング機能を有するコンピュータデバイスに該当する。例えば、ニューラルネットワーク学習器10は、PC(personal computer)、サーバデバイス、モバイルデバイスなどの多種のデバイスによっても具現される。一方、本明細書において、パラメータ量子化は、浮動小数点形式のパラメータを、固定小数点形式のパラメータに変換することを意味したり、一定ビット幅を有する固定小数点形式のパラメータを、他のビット幅を有する固定小数点形式のパラメータに変換したりすることを意味する。
【0014】
ニューラルネットワーク学習器10は、与えられた初期ニューラルネットワークを反復的に学習(訓練)させることにより、学習されたニューラルネットワーク11を生成することができる。このとき、初期ニューラルネットワークは、ニューラルネットワークの処理精度を保証する観点から、浮動小数点形式のパラメータ、例えば、32ビット浮動小数点精度(32bit floating point precision)のパラメータを有することができる。ここで、パラメータは、例えば、ニューラルネットワークの入力/出力アクチベーション、重み、バイアスのように、ニューラルネットワークに入力/出力される多種のデータを含んでもよい。該ニューラルネットワークの反復的な学習が進められることにより、該ニューラルネットワークの浮動小数点パラメータは、与えられた入力に対して、さらに正確な出力を演算するために調整される。
【0015】
また、ニューラルネットワーク学習器10は、初期ニューラルネットワークを反復的に学習(訓練)させる過程において、固定小数点形式によってパラメータを処理することができる。具体的には、ニューラルネットワーク学習器10は、演算量を減少させながら、許容可能な精度損失内において、該ニューラルネットワークを学習させるために、8ビットまたは16ビットの固定小数点形式により、パラメータを処理することができる。従って、ニューラルネットワーク学習器10は、オンデバイス学習のために、比較的処理性能が低いスマートフォン、タブレットまたはウェアラブルデバイスによっても具現される。
【0016】
ニューラルネットワーク学習器10は、学習されたニューラルネットワーク11を、ニューラルネットワーク推論器20のようなハードウェア加速器に伝達することができる。ニューラルネットワーク推論器20は、モバイルデバイス、埋め込みデバイスなどにも含まれる。ニューラルネットワーク推論器20は、量子化されたニューラルネットワーク21駆動のための専用ハードウェアであり、比較的に低電力または低性能にも具現されるために、浮動小数点演算よりは、固定小数点演算にさらに適して具現される。一方、ニューラルネットワーク推論器20は、ニューラルネットワーク駆動のための専用モジュールであるTPU(tensor processing unit)、Neural Engineなども該当する、それらに制限されるものではない。
【0017】
量子化されたニューラルネットワーク21を駆動するニューラルネットワーク推論器20は、ニューラルネットワーク学習器10とは別途の独立したデバイスによっても具現される。しかし、それに制限されるものではなく、ニューラルネットワーク推論器20は、ニューラルネットワーク学習器10と同一デバイス内においても具現される。
【0018】
量子化されたニューラルネットワーク21が採用されるニューラルネットワーク推論器20は、具体的な例示において、ニューラルネットワークを利用した音声認識、映像認識などを行う自律走行自動車、ロボティックス、スマートフォン、タブレットデバイス、AR(augmented reality)デバイス、IoT(internet of things)デバイスなどにも含まれるが、それらに制限されるものではない。
【0019】
図2は、一部実施形態によるニューラルネットワークの例示を示す図面である。図2を参照すれば、ニューラルネットワーク2は、入力レイヤ、隠れ層及び出力レイヤを含む構造を有し、受信される入力データ(たとえばI1及びI2)を基に演算を行い、遂行結果を基に、出力データ(例えば、O1及びO2)を生成することができる。
【0020】
ニューラルネットワーク2は、1個以上の隠れ層を含むデープニューラルネットワーク(DNN:deep neural network)またはn階層ニューラルネットワーク(n-layers neural networks)でもある。例えば、図2に図示されているように、ニューラルネットワーク2は、入力レイヤ(Layer1)、2個の隠れ層(Layer2及びLayer3)及び出力レイヤ(Layer4)を含むDNNでもある。該DNNは、CNN(Convolutional Neural Networks)、RNN(Recurrent Neural Networks)、Deep Belief Networks、Restricted Boltzman Machinesなどを含んでもよいが、それらに制限されるものではない。
【0021】
ニューラルネットワーク2は、4個のレイヤを含むように図示されているが、それは、例示に過ぎず、ニューラルネットワーク2は、さらに少なかったり多かったりするレイヤを含んでもよい。また、ニューラルネットワーク2は、図2に図示されたところとは異なる多様な構造のレイヤを含んでもよい。例えば、ニューラルネットワーク2は、デープニューラルネットワークとして、畳み込みレイヤ、プーリングレイヤ及び全結合レイヤを含んでもよい。
【0022】
ニューラルネットワーク2に含まれたレイヤそれぞれは、「ニューロン」、「プロセッシングエレメント(PE:processing element)」、「ユニット」、またはそれらと類似した用語で知られた、複数の人工ノードを含んでもよい。例えば、図2に図示されているように、Layer 1は、2個のノード、Layer 2は、3個のノードを含んでもよい。ただし、それは例示に過ぎず、ニューラルネットワーク2に含まれたレイヤそれぞれは、多様な個数のノードを含んでもよい。
【0023】
ニューラルネットワーク2に含まれたレイヤそれぞれに含まれたノードは、互いに連結され、データを交換することができる。例えば、1つのノードは、他のノードからデータを受信し、演算することができ、該演算結果をさらに他のノードに出力することができる。
【0024】
ノードそれぞれの出力値は、アクチベーションとも呼ばれる。該アクチベーションは、1つのノードの出力値でありながら、次のレイヤに含まれたノードの入力値でもある。一方、ノードそれぞれは、以前レイヤに含まれたノードから受信されたアクチベーション及び重みに基づいて、自体のアクチベーションを決定することができる。該重みは、各ノードでのアクチベーションを計算するために利用されるパラメータであり、ノード間の連結関係に割り当てられる値でもある。
【0025】
ノードそれぞれは、入力され、アクチベーションを出力する演算ユニットでもあり、入力・出力をマッピングすることができる。例えば、σは、活性化関数であり、wi jkは、(i-1)番目レイヤに含まれたk番目ノードからi番目レイヤに含まれたj番目ノードへの重みであり、bi jは、i番目レイヤに含まれたj番目ノードのバイアス値であり、ai jは、i番目レイヤのj番目ノードのアクチベーションであるとするとき、アクチベーションai jは、次のような数式(1)による。
【0026】
【数1】

図2に図示されているように、2番目レイヤ(Layer 2)の最初ノードのアクチベーションは、a とも表現される。また、a は、数式(1)により、
【0027】
【数2】

の値を有することができる。ただし、前述の数式(1)は、ニューラルネットワークにおいてデータを処理するために利用されるアクチベーション及び重みについて説明するための例示であるのみ、それに制限されるものではない。該アクチベーションは、以前レイヤから受信されたアクチベーションの加重和に、活性化を適用した値をして、ReLU(rectified linear unit)を通過させることによって獲得された値でもある。
【0028】
前述のように、ニューラルネットワーク2においては、多くのデータ集合が相互連結された複数のチャネル間において交換され、レイヤを経なながら多くの演算過程を経る。
【0029】
図3Aは、一実施形態による浮動小数点形式のパラメータを図示した図面であり、図3Bは、一実施形態による固定小数点形式のパラメータを図示した図面であり、図3Cは、他の実施形態による固定小数点形式のパラメータを図示した図面である。
【0030】
図3Aを参照すれば、浮動小数点形式のパラメータ30は、符号ビット310、指数部320、仮数部330及びバイアス340によっても構成される。浮動小数点は、1つの数を小数点部分を示す部分と、小数点位置を示す部分とに分けて表現する表記法である。
【0031】
仮数部330は、小数点部分を示す部分に対応し、指数部320は、小数点位置を示す部分にも対応する。符号ビット310は、パラメータ30の符号を決定することができる。バイアス340は、指数部320に加えられたり、そこから差し引かれたりする値であり、負の指数を表現するために決定される値でもある。パラメータ30は、符号ビット310、指数部320に対応するビット、及び仮数部330に対応するビットを含んでもよい。バイアス340は、パラメータ30に対して事前に決定され、別途に保存される。
【0032】
一方、パラメータ30は、符号ビット310をsign、指数部320をexponent、仮数部330をmantissa、バイアス340をbiasとするとき、次のような数式(2)による値を有することができる。
【0033】
【数3】

図3Bを参照すれば、固定小数点形式のパラメータ35は、符号ビット315、整数部325、小数部335及び小数点345によっても構成される。固定小数点は、小数点を使用して固定された桁数の少数を示す表記法を意味する。
【0034】
符号ビット315は、パラメータ35の符号を決定し、整数部325は、パラメータ35の整数を示す部分に対応し、小数部335は、パラメータ35の小数を示す部分に対応する。小数点345は、パラメータ35の整数部325及び小数部335を区分する基準になる点を意味する。
【0035】
一方、パラメータ35が示す値は、図3Cを参照して説明することができる。図3Cを参照すれば、パラメータ35は、8ビット固定小数点値でもある。また、パラメータ35は、整数部325、小数部335及び小数点345からも構成される。
【0036】
整数部325及び小数部335を示すビットは、それぞれ1または0の値を有することができる。また、図3Cに図示されているように、整数部325及び小数部335を示すビットは、順に-8、+4、+2、+1、+0.5、+0.25、+0.125及び+0.0625の値を示すことができる。整数部325の最上位ビットが1である場合、整数部325の最上位ビットが示す値は、-8であるので、整数部325及び小数部335に含まれる他のビットがいかなる値を有しても、パラメータ35が示す値は、負数である。整数部325の最上位ビットは、パラメータ35の符号を決定する符号ビット315に対応する。
【0037】
ただし、図3Cは、例示に過ぎず、パラメータ35は、16ビット固定小数点値でもあり、任意の適切な数のビット個数を有する固定小数点値でもある。また、パラメータ35は、符号化表現法、1の補数法、及び2の補数法のうちいずれか1つの表現法によって負数を示すことができる。
【0038】
図4は、一実施形態によるニューラルネットワーク装置のハードウェア構成を図示したブロック図である。
【0039】
ニューラルネットワーク装置100は、図1のニューラルネットワーク学習器10及びニューラルネットワーク推論器20のうち少なくとも一つに含まれて動作するか、あるいは独立した第3のハードウェア加速器として動作することができる。
【0040】
ニューラルネットワーク装置100は、プロセッサ110及びメモリ120を含む。図4に図示されたニューラルネットワーク装置100には、本実施形態と係わる構成要素だけが図示されている。従って、ニューラルネットワーク装置100は、図4に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、当業者に自明である。
【0041】
プロセッサ110は、ニューラルネットワーク装置100を制御するための全般的な機能を遂行する役割を行う。例えば、プロセッサ110は、ニューラルネットワーク装置100内のメモリ120に保存されたプログラムを実行することにより、ニューラルネットワーク装置100を全般的に制御する。プロセッサ110は、ニューラルネットワーク装置100内に具備されたCPU(central processing unit)、GPU(graphics processing unit)、AP(application processor)などによっても具現されるが、それらに制限されるものではない。
【0042】
メモリ120は、ニューラルネットワーク装置100内で処理される各種データを保存するハードウェアであり、例えば、メモリ120は、ニューラルネットワーク装置100で処理されたデータ、及び処理されるデータを保存することができる。また、メモリ120は、ニューラルネットワーク装置100によって駆動されるアプリケーション、ドライバなどを保存することができる。メモリ120は、DRAM(dynamic random access memory)でもあるが、それに限定されるものではない。メモリ120は、揮発性メモリまたは不揮発性メモリのうち少なくとも一つを含んでもよい。
【0043】
プロセッサ110は、初期ニューラルネットワークを反復的に学習させることにより、学習されたニューラルネットワークを生成することができる。プロセッサ110は、ニューラルネットワークを反復的に学習させることにより、ニューラルネットワークのパラメータを反復してアップデートすることができる。例えば、ニューラルネットワーク内重みが学習を行う過程において、反復してアップデートされ、アクチベーションも、重みとの演算により、反復してアップデートされる。プロセッサ110は、ニューラルネットワークのパラメータが反復してアップデートされるたびに、アップデートされたパラメータを、固定小数点形式によって量子化することができる。また、プロセッサ110は、ニューラルネットワークのパラメータが反復してアップデートされるたびに、固定小数点形式を反復してアップデートすることができる。可変するパラメータを、固定された固定小数点形式に量子化する場合、学習過程での精度損失が発生してしまうが、プロセッサ110は、固定小数点形式をアップデートし、パラメータを量子化することにより、演算量を減少させながらも、精度損失を減らすことができる。具体的には、プロセッサ110は、アップデートされたパラメータの固定小数点値の分布に対応するように、固定小数点形式をアップデートすることができる。例えば、プロセッサ110は、アップデートされたパラメータのうち最大値を有するパラメータに対応するように、固定小数点形式内小数点位置をアップデートすることができる。
【0044】
また、プロセッサ110は、学習されたニューラルネットワークを駆動させて結果値を獲得する推論過程においても、ニューラルネットワークのパラメータを反復してアップデートすることができる。例えば、推論過程において、データが、学習されたニューラルネットワークに反復して入力され、それにより、学習されたニューラルネットワーク内アクチベーションが反復してアップデートされる。従って、学習過程と同様に、プロセッサ110は、推論過程においても、ニューラルネットワークのパラメータが反復してアップデートされるたびに、アップデートされたパラメータを、固定小数点形式によって量子化することができる。また、学習過程と同様に、プロセッサ110は、推論過程においても、ニューラルネットワークのパラメータが反復してアップデートされるたびに、固定小数点形式を反復してアップデートすることができる。
【0045】
プロセッサ110は、t番目の学習過程または推論過程において、パラメータをアップデートすることができ、続いて、アップデートされたパラメータを量子化することができる。このとき、プロセッサ110は、既決定の第1固定小数点形式により、t番目の学習過程または推論過程においてアップデートされたパラメータを量子化することができる。例えば、第1固定小数点形式は、(t-1)番目の学習過程または推論過程でアップデートされたパラメータに基づいてアップデートされた固定小数点形式でもある。また、プロセッサ110は、t番目の学習過程または推論過程でアップデートされたパラメータに基づいて、既存の第1固定小数点形式を第2固定小数点形式にアップデートすることができる。次に、プロセッサ110は、第2固定小数点形式により、(t+1)番目の学習過程または推論過程でアップデートされたパラメータを量子化することができる。
【0046】
従って、プロセッサ110は、t番目の学習過程または推論過程でアップデートされたパラメータを量子化する場合、既決定の固定小数点形式によって量子化するが、固定小数点形式を決定するために、t番目の学習過程または推論過程でアップデートされたパラメータをいずれもスキャンする時間及びハードウェアオーバーヘッドを減らすことができる。
【0047】
図5は、プロセッサが反復的な学習過程または推論過程で動作する実施形態を示す。
【0048】
プロセッサ110は、小数部長(frac_lengtht-1)を有する固定小数点形式により、t番目の学習過程または推論過程でアップデートされたパラメータ(parameter)を量子化し、量子化されたパラメータ(q_parameter)を生成することができる。言い換えれば、プロセッサ110は、(t-1)番目の学習過程または推論過程でアップデートされたパラメータ(parametert-1)に基づいて、小数部長(frac_lengtht-1)を有する固定小数点形式を事前に決定することができ、t番目の学習過程または推論過程において、小数部長(frac_lengtht-1)を有する固定小数点形式により、パラメータ(parameter)を量子化することができる。
【0049】
プロセッサ110は、パラメータ(parameter)に基づいて、既存の小数部長(frac_lengtht-1)を小数部長(frac_length)にアップデートすることができる。言い換えれば、プロセッサ110は、(t+1)番目の学習過程または推論過程でアップデートされたパラメータ(parametert+1)を量子化するための小数部長(frac_length)を事前に決定することができる。
【0050】
プロセッサ110は、(t+1)番目の学習過程または推論過程で、パラメータ(parameter)をパラメータ(parametert+1)にアップデートすることができる。また、プロセッサ110は、既決定の小数部長(frac_length)を有する固定小数点形式により、パラメータ(parametert+1)を量子化し、量子化されたパラメータ(q_parametert+1)を生成することができる。
【0051】
図5において、パラメータ(parametert-1,parameter,parametert+1)は、一例により、ニューラルネットワーク内同一レイヤ上の重みまたは入力/出力アクチベーションのようなデータテンソルにもなり、他の例により、ニューラルネットワーク内同一チャネル上の重みまたは入力/出力アクチベーションにもなるが、それらに制限されるものではない。また、本明細書で、tは、1以上の自然数にもなり、tが1である場合、最初の学習過程または推論過程でアップデートされたパラメータを量子化するための固定小数点形式は、ユーザによって事前に設定される。
【0052】
再び図4を参照すれば、プロセッサ110は、パラメータそれぞれに対して、パラメータを量子化するための固定小数点形式のビット範囲を外れる程度を示すビットシフト値を計算することができる。該ビットシフト値は、パラメータ値を表現するビット範囲が、固定小数点形式がカバーすることができるビット範囲を外れる程度を示す値でもある。一例により、固定小数点形式が、整数部3ビットまでカバーすることができる場合、該パラメータ値を固定小数点形式で表現するにおいて、整数部6ビット桁まで必要であるならば、ビットシフト値は、3にもなる。他の例として、固定小数点形式が小数部4ビットまでカバーすることができる場合、該パラメータ値を固定小数点形式で表現するにおいて、小数部6ビット桁まで必要であるならば、該ビットシフト値は、-2にもなる。また、該ビットシフト値は、固定小数点形式でパラメータを量子化するにおいて、オーバーフローまたはアンダーフローがどれほど発生するかということを示す。例えば、ビットシフト値が3である場合、3ビットほどオーバーフローが発生すると見られ、ビットシフト値が-2である場合、2ビットほどアンダーフローが発生すると見られる。従って、プロセッサ110は、パラメータのビットシフト値を計算し、パラメータに対するオーバーフローまたはアンダーフローの総発生回数を決定することができる。また、プロセッサ110は、パラメータのビットシフト値、オーバーフロー発生回数及びアンダーフロー発生回数をメモリ120に保存することができる。
【0053】
次に、プロセッサ110は、パラメータのビットシフト値を利用し、固定小数点形式をアップデートすることができる。一例により、プロセッサ110は、オーバーフローの発生回数が所定の値より多い場合、ビットシフト値のうち最大ビットシフト値ほど固定小数点形式内小数部長を低減させることにより、固定小数点形式をアップデートすることができる。他の例により、プロセッサ110は、オーバーフローの発生回数が所定の値より多い場合、ビットシフト値のうち最大ビットシフト値と最小ビットシフト値とを利用し、固定小数点形式をアップデートすることができる。また、プロセッサ110は、アップデートされた固定小数点形式に係わる情報をメモリ120に保存することができる。
【0054】
次に、プロセッサ110は、アップデートされた固定小数点形式により、学習過程または推論過程でアップデートされたパラメータを量子化することができる。具体的には、プロセッサ110は、t番目の学習過程または推論過程でアップデートされたパラメータのビットシフト値を介して、アップデートされた固定小数点形式により、(t+1)番目の学習過程または推論過程でアップデートされたパラメータを量子化することができる。
【0055】
従って、プロセッサ110は、パラメータのオーバーフロー発生回数及び最大ビットシフト値を利用し、固定小数点形式をアップデートするが、相対的に簡単でありながらも、少ない演算を介して、固定小数点形式をアップデートするので、ハードウェアオーバーヘッドを減らすことができる。
【0056】
図6は、プロセッサがパラメータのビットシフト値を利用し、固定小数点形式をアップデートする実施形態を示す。
【0057】
プロセッサ110は、t番目の学習過程または推論過程でアップデートされたパラメータ(parameter(1)ないしparameter(i))(ここで、iは、2以上の自然数)それぞれに係わるビットシフト値を計算することができる。具体的には、プロセッサ110は、既決定の小数部長(frac_lengtht-1)を有する固定小数点形式のビット範囲を基準に、パラメータ(parameter(1)ないしparameter(i))(ここで、iは、2以上の自然数)それぞれに係わるビットシフト値を計算することができる。
【0058】
図7は、プロセッサがパラメータのビットシフト値を計算する実施形態を示す。
【0059】
プロセッサ110は、t番目の学習過程または推論過程でアップデートされたパラメータのうちi番目パラメータ(parameter(i))に係わるビットシフト値を計算することができる。
【0060】
まず、プロセッサ110は、パラメータ(parameter(i))から、「1」値を有する最上位ビットを検出することができる。図7を参照すれば、プロセッサ110は、パラメータ(parameter(i))から、整数部の6番目桁のビットを、最上位ビットとして検出することができる。
【0061】
次に、プロセッサ110は、パラメータ(parameter(i))を量子化するための小数部長(frac_lengtht-1)を有する固定小数点形式内整数部の最上位ビットと、既検出のパラメータ(parameter(i))の最上位ビットとのビット数差を、パラメータ(parameter(i))に係わるビットシフト値と決定することができる。図7を参照すれば、小数部長(frac_lengtht-1)を有する固定小数点形式内整数部の3番目桁のビットが最上位ビットであるが、6番目桁のビットと、3番目桁のビットとのビット数差が3であるので、プロセッサ110は、パラメータ(parameter(i))に係わるビットシフト値を3と計算することができる。そのように、ビット数差を検出するビットシフト検出器がプロセッサ110にも含まれる。また、プロセッサ110は、パラメータ(parameter(i))について、3ビットほどオーバーフローが1回発生すると判断することができる。
【0062】
プロセッサ110は、小数部長(frac_lengtht-1)を有する固定小数点形式により、パラメータ(parameter(i))を量子化し、量子化されたパラメータ(q_parameter(i))を生成するが、パラメータ(parameter(i))の量子化過程において、パラメータ(parameter(i))に係わるビットシフト値を計算することができる。言い換えれば、プロセッサ110は、パラメータ(parameter(i))を量子化する過程と共に、パラメータ(parameter(i))に係わるビットシフト値を計算する過程を進めることができる。
【0063】
図7においては、t番目の学習過程または推論過程でアップデートされたパラメータ(parameter(i))が48ビットの固定小数点値でもって図示され、量子化されたパラメータ(q_parameter(i))がビット幅が8であり、小数部長が4である固定小数点値でもって図示されたが、それらに制限されるものではない。
【0064】
図8は、プロセッサがパラメータ内において、「1」を有する最上位ビットを検出する実施形態を示す。
【0065】
一実施形態により、プロセッサ110は、パラメータ(parameter(i))内最上位ビットから始め、下位ビット方向に順番通りビット値を読み取り、パラメータ(parameter(i))内において「1」を有する最上位ビットを検出することができる。
【0066】
他の実施形態により、プロセッサ110は、パラメータ(parameter(i))内の所定ビットを中心に、所定範囲内ビットを読み取り、パラメータ(parameter(i))内において「1」を有する最上位ビットを検出することができる。例えば、図8に図示されているように、プロセッサ110は、小数部長(frac_lengtht-1)を有する固定小数点形式内整数部の最上位ビットを中心に、8ビット範囲内または16ビット範囲内のビットを読み取り、パラメータ(parameter(i))内において、「1」を有する最上位ビットを検出することができる。従って、プロセッサ110は、パラメータ(parameter(i))内全体ビットを読み取らず、所定範囲内のビットを読み取るので、スキャニングのためのハードウェアオーバーヘッドを減らすことができる。
【0067】
再び図6を参照すれば、プロセッサ110は、パラメータ(parameter(1)ないしparameter(i))のビットシフト値から、最大ビットシフト値、及びオーバーフローの発生回数を決定することができる。具体的には、プロセッサ110は、ビットシフト値のうち最大値を、最大ビットシフト値として決定することができ、ビットシフト値において、正数に該当するビットシフト値の個数を、オーバーフローの発生回数に決定することができる。
【0068】
次に、プロセッサ110は、最大ビットシフト値、及びオーバーフローの発生回数に基づいて、固定小数点形式をアップデートすることができる。言い換えれば、プロセッサ110は、最大ビットシフト値、及びオーバーフローの発生回数に基づいて、小数部長(frac_lengtht-1)を有する固定小数点形式を、小数部長(frac_length)を有する固定小数点形式にアップデートすることができる。具体的には、プロセッサ110は、オーバーフローの発生回数が、所定の値より多い場合、最大ビットシフト値ほど小数部長(frac_lengtht-1)を減少させ、小数部長を、既存の小数部長(frac_lengtht-1)から新たな小数部長(frac_length)にアップデートすることができる。
【0069】
従って、プロセッサ110は、小数部長(frac_length)を有する固定小数点形式により、(t+1)番目の学習過程または推論過程でアップデートされたパラメータを量子化することができる。
【0070】
図9は、プロセッサが、最大ビットシフト値、及びオーバーフローの発生回数を決定する実施形態を示す。図9に図示された論理演算のように、プロセッサ110は、t番目の学習過程または推論過程でアップデートされたパラメータである総N個のパラメータに係わる論理演算を介して、最大ビットシフト値、及びオーバーフローの発生回数を決定することができる。プロセッサ110は、図9に図示された論理演算を行う論理演算器を含んでもよい。
【0071】
段階s910において、プロセッサ110は、パラメータのうちi番目パラメータのビットシフト値(bit_shift(i))が、0より大きいか否かということを判断することができる。言い換えれば、プロセッサ110は、i番目パラメータがオーバーフローに該当するパラメータであるか否かということを判断することができる。i番目パラメータのビットシフト値(bit_shift(i))が0より大きい場合、プロセッサ110は、オーバーフローの発生回数を1ほど増加させることができる(s920)。次に、プロセッサ110は、(i+1)番目パラメータのビットシフト値(bit_shift(i+1))が0より大きいか否かということを判断し、オーバーフローの発生回数を決定することができる。結果としては、プロセッサ110は、t番目の学習過程または推論過程でアップデートされたN個のパラメータのビットシフト値が、それぞれ0より大きいか否かということを順次に判断し、t番目の学習過程または推論過程において、オーバーフローの総発生回数を決定することができる。
【0072】
段階s930において、プロセッサ110は、i番目パラメータのビットシフト値(bit_shif(i))と、既存の最大ビットシフト値(max_bit_shift)とを比較することができる。ビットシフト値(bit_shift(i))が、既存の最大ビットシフト値(max_bit_shift)より大きい場合、ビットシフト値(bit_shift(i))を、最大ビットシフト値(max_bit_shift)にアップデートすることができる(s940)。次に、プロセッサ110は、(i+1)番目パラメータのビットシフト値(bit_shift(i+1))と、アップデートされた最大ビットシフト値(max_bit_shift)とを比較し、最大ビットシフト値のアップデートいかんを決定することができる。結果としては、プロセッサ110は、t番目の学習過程または推論過程でアップデートされたN個のパラメータのビットシフト値をそれぞれ互いに比較し、ビットシフト値のうち最大値を、最大ビットシフト値と決定することができる。
【0073】
さらには、プロセッサ110は、N個のパラメータのビットシフト値のうち、アンダーフローに該当する最小ビットシフト値を決定することができる。具体的には、プロセッサ110は、N個のパラメータのビットシフト値をそれぞれ互いに比較し、0以下の値を有するビットシフト値のうち最小値である最小ビットシフト値を決定することができる。
【0074】
図10は、一例により、プロセッサが固定小数点形式の小数部長をアップデートするためのアルゴリズムを図示した図面である。
【0075】
段階s1010において、プロセッサ110は、最大ビットシフト値(max_bit_shift)、オーバーフローの総発生回数(# of overflow)、t番目の学習過程または推論過程でアップデートされたパラメータを量子化するための固定小数点形式の小数部長(frac_lengtht-1)、t番目の学習過程または推論過程でアップデートされたパラメータの総個数(N)、及びアウトライアデータレート(TH)を獲得することができる。一実施形態により、プロセッサ110は、図9で図示された論理演算を介して、最大ビットシフト値(max_bit_shift)及びオーバーフローの総発生回数(# of overflow)を決定することができる。また、アウトライアデータレート(TH)は、0と1との間の任意数であり、ユーザによっても設定される。
【0076】
段階s1020において、プロセッサ110は、オーバーフローの総発生回数(# of overflow)がN×THより多い場合、数式1030を介して、小数部長をアップデートすることができる。数式1030において、aは、既設定加重値を示す。例えば、aが1であるとき、プロセッサ110は、小数部長(frac_lengtht-1)から、最大ビットシフト値(max_bit_shift)を差し引く演算を行い、小数部長をアップデートすることができる。言い換えれば、プロセッサ110は、小数部長(frac_lengtht-1)から、最大ビットシフト値(max_bit_shift)を差し引く演算を行い、小数部長を、既存の小数部長(frac_lengtht-1)から新たな小数部長(frac_length)にアップデートすることができる。従って、プロセッサ110は、(t+1)番目の学習過程または推論過程でアップデートされたパラメータを量子化するための固定小数点形式の小数部長(frac_length)を決定することができる。
【0077】
プロセッサ110は、オーバーフローの総発生回数(# of overflowt)がN×THほど多くない場合、小数部長を新たにアップデートせず、そのまま維持することができる。言い換えれば、プロセッサ110は、t番目の学習過程または推論過程でアップデートされたパラメータを量子化するための小数部長(frac_lengtht-1)を、(t+1)番目の学習過程または推論過程でアップデートされたパラメータを量子化するための小数部長(frac_length)として決定することができる。結果としては、プロセッサ110は、オーバーフローの総発生回数(# of overflow)と、比較対象になるN×THとから、アウトライアデータレート(TH)を0と1との間の値に設定することができるが、オーバーフローの総発生回数(# of overflowt)がパラメータの全体個数(N)対比で相対的に微々たるものであると判断される場合、小数部長を新たにアップデートしない。
【0078】
図11は、他例により、プロセッサが固定小数点形式の小数部長をアップデートするためのアルゴリズムを図示した図面である。図11の段階s1110及びs1120は、図10の段階s1010及びs1020と対応するので、重複内容については、説明を省略する。
【0079】
段階s1110において、プロセッサ110は、図10のs1010で獲得する情報以外に、追加して、最小ビットシフト値(min_bit_shift)を獲得することができる。言い換えれば、プロセッサ110は、t番目の学習過程または推論過程でアップデートされたパラメータのビットシフト値のうち、アンダーフローに該当する最小ビットシフト値(min_bit_shift)を獲得することができる。
【0080】
段階s1120において、プロセッサ110は、オーバーフローの総発生回数(# of overflow)がN×THより多い場合、数式1130を介して、小数部長をアップデートすることができる。数式1130において、a及びbは、既設定加重値を示す値であり、記号[x]は、xを超えない最大整数を示すガウス関数記号を示す。例えば、ユーザは、bよりaにさらに高い加重値を設定し、小数部長(frac_length)を決定することができる。
【0081】
図12は、一実施形態による電子システムを示すブロック図である。図12を参照すれば、電子システム1200は、ニューラルネットワークを基に、入力データをリアルタイムに分析し、有効な情報を抽出し、抽出された情報を基に、状況判断を行ったり、電子システム1200が搭載される電子デバイスの構成を制御したりすることができる。例えば、電子システム1200は、ドローン、先端運転手補助システム(ADAS:advanced drivers assistance system)のようなロボット装置、スマートTV(television)、スマートフォン、医療デバイス、モバイルデバイス、映像表示デバイス、計測デバイス、IoTデバイスなどに適用され、それ以外にも、多種の電子デバイスのうち少なくとも一つにも搭載される。
【0082】
電子システム1200は、プロセッサ1210、RAM 1220、ニューラルネットワーク装置1230、メモリ1240、センサモジュール1250及び通信モジュール1260を含んでもよい。電子システム1200は、入出力モジュール、保安モジュール、電力制御装置などをさらに含んでもよい。電子システム1200のハードウェア構成のうち一部は、少なくとも1つの半導体チップにも搭載される。ニューラルネットワーク装置1230は、前述のニューラルネットワーク装置100、ニューラルネットワーク専用ハードウェア加速器自体、またはそれを含む装置でもある。
【0083】
プロセッサ1210は、電子システム1200の全般的な動作を制御する。プロセッサ1210は、1つのプロセッサコア(single core)を含むか、あるいは複数のプロセッサコア(multi-core)を含んでもよい。プロセッサ1210は、メモリ1240に保存されたプログラム及び/またはデータを処理または実行することができる。一実施形態において、プロセッサ1210は、メモリ1240に保存されたプログラムを実行することにより、ニューラルネットワーク装置1230の機能を制御することができる。プロセッサ1210は、CPU、GPU、APなどによっても具現される。
【0084】
RAM 1220は、プログラム、データまたは命令を一時的に保存することができる。例えば、メモリ1240に保存されたプログラム及び/またはデータは、プロセッサ1210の制御コードまたは起動コードにより、RAM 1220に一時的に保存される。RAM 1220は、DRAMまたはSRAM(static random access memory)のようなメモリによっても具現される。
【0085】
ニューラルネットワーク装置1230は、受信される入力データを基に、ニューラルネットワークの演算を遂行し、該遂行結果を基に、情報信号を生成することができる。ニューラルネットワークは、CNN(Convolutional Neural Networks)、RNN(Recurrent Neural Networks)、Deep Belief Networks、Restricted Boltzman Machinesなどを含んでもよいが、それらに制限されるものではない。ニューラルネットワーク装置1230は、前述の分類のためのニューラルネットワークを駆動するハードウェアであり、ニューラルネットワーク専用ハードウェア加速器に該当する。
【0086】
該情報信号は、音声認識信号、オブジェクト認識信号、映像認識信号、生体情報認識信号のような多種の認識信号のうち一つを含んでもよい。例えば、ニューラルネットワーク装置1230は、ビデオストリームに含まれるフレームデータを入力データとして受信し、該フレームデータから、フレームデータが示すイメージに含まれたオブジェクトに係わる認識信号を生成することができる。しかし、それらに制限されるものではなく、電子システム1200が搭載された電子装置の種類または機能により、ニューラルネットワーク装置1230は、多種の入力データを受信することができ、入力データによる認識信号を生成することができる。
【0087】
メモリ1240は、データを保存するための保存場所であり、OS(operating system)、各種プログラム及び各種データを保存することができる。一実施形態において、メモリ1240は、ニューラルネットワーク装置1230の演算遂行過程で生成される中間結果、例えば、出力フィーチャマップを、出力フィーチャリスト形態または出力フィーチャマトリックス形態で保存することができる。一実施形態において、メモリ1240には、圧縮された出力フィーチャマップが保存される。また、メモリ1240は、ニューラルネットワーク装置1230で利用される量子化されたニューラルネットワークデータ、例えば、パラメータ、重みマップまたは重みリストを保存することができる。
【0088】
メモリ1240は、DRAMでもあるが、それに限定されるのではない。メモリ1240は、揮発性メモリまたは不揮発性メモリのうち少なくとも一つを含んでもよい。不揮発性メモリは、ROM(read-only memory)、PROM(programmable read-only memory)、EPROM(electrically programmable read only memory)、EEPROM(electrically erasable programmable read-only memory)、フラッシュメモリ、PRAM(phase-change random access memory)、MRAM(magnetic random access memory)、RRAM(resistive random access memory(登録商標))、FRAM(ferroelectric random access memory(登録商標))などを含む。揮発性メモリは、DRAM、SRAM、SDRAM(synchronous dynamic random access memory)などを含む。実施形態において、メモリ1240は、HDD(hard disk drive)、SSD(solid state drive)、CF、SD、micro-SD、mini-SD、xDまたはMemory Stickのうち少なくとも一つを含んでもよい。
【0089】
センサモジュール1250は、電子システム1200が搭載される電子装置周辺の情報を収集することができる。センサモジュール1250は、電子装置の外部から、信号(例えば、映像信号、音声信号、磁気信号、生体信号、タッチ信号など)をセンシングまたは受信し、センシングまたは受信された信号をデータに変換することができる。そのために、センサモジュール1250は、センシング装置、例えば、マイク、撮像装置、イメージセンサ、LIDAR(light detection and ranging)センサ、超音波センサ、赤外線センサ、バイオセンサ及びタッチセンサなど多種のセンシング装置のうち少なくとも一つを含んでもよい。
【0090】
センサモジュール1250は、変換されたデータを、ニューラルネットワーク装置1230に入力データとして提供することができる。例えば、センサモジュール1250は、イメージセンサを含んでもよく、電子装置の外部環境を撮影してビデオストリームを生成し、ビデオストリームの連続するデータフレームを、ニューラルネットワーク装置1230に入力データとして順に提供することができる。しかし、それらに制限されるものではなく、センサモジュール1250は、多種のデータをニューラルネットワーク装置1230に提供することができる。
【0091】
通信モジュール1260は、外部装置と通信することができる多様な有線または無線のインターフェースを具備することができる。例えば、通信モジュール1260は、有線近距離通信網(LAN:local area network)、Wi-Fi(wireless fidelity)のような無線近距離通信網(WLAN(wireless local area network)、ブルートゥース(Bluetooth(登録商標))のような無線個人通信網(WPAN:wireless personal area network)、無線USB(wireless universal serial bus)、Zigbee、NFC(near field communication)、RFID(radio-frequency identification)、PLC(power line communication)、または3G(3rd generation)・4G(4th generation)・LTE(long term evolution)のような移動通信網(mobile cellular network)に接続可能な通信インターフェースなどを含んでもよい。
【0092】
図13は、一実施形態による、ニューラルネットワーク装置の動作方法について説明するための図面である。図13に図示された方法は、図4のニューラルネットワーク装置100、または図12の電子システムの各構成要素によって遂行され、重複説明については、省略する。
【0093】
段階s1310において、ニューラルネットワーク装置100は、パラメータそれぞれに対して、パラメータを量子化するための固定小数点形式のビット範囲を外れる程度を示すビットシフト値を計算することができる。具体的には、ニューラルネットワーク装置100は、(t-1)番目の学習過程または推論過程でアップデートされたパラメータに基づいて、既決定の固定小数点形式のビット範囲を基準に、t番目パラメータ学習過程または推論過程でアップデートされたパラメータそれぞれのビットシフト値を計算することができる。ニューラルネットワーク装置100は、パラメータのビットシフト値を計算し、パラメータに係わるオーバーフローまたはアンダーフローの総発生回数を決定することができる。
【0094】
ニューラルネットワーク装置100は、パラメータそれぞれについて、「1」値を有する最上位ビットを検出することができ、パラメータそれぞれについて、検出された最上位ビットと、固定小数点形式の整数部の最上位ビットとのビット数差を、ビットシフト値として計算することができる。また、ニューラルネットワーク装置100は、パラメータそれぞれについて、固定小数点形式の整数部の最上位ビットを基準に、所定の範囲内ビットを検索し、前記「1」値を有する最上位ビットを検出することができる。
【0095】
段階s1320において、ニューラルネットワーク装置100は、パラメータのビットシフト値を利用し、固定小数点形式をアップデートすることができる。ニューラルネットワーク装置100は、t番目の学習過程または推論過程において、パラメータを量子化するための既存の固定小数点形式を、新たな固定小数点形式にアップデートすることができる。例えば、ニューラルネットワーク装置100は、オーバーフローの発生回数が、所定の値より多い場合、ビットシフト値のうち最大ビットシフト値ほど固定小数点形式内小数部長を低減させることにより、固定小数点形式をアップデートすることができる。
【0096】
段階s1330において、ニューラルネットワーク装置100は、アップデートされた固定小数点形式により、学習過程または推論過程でアップデートされたパラメータを量子化することができる。具体的には、ニューラルネットワーク装置100は、t番目の学習過程または推論過程でアップデートされたパラメータのビットシフト値を介してアップデートされた固定小数点形式により、(t+1)番目の学習過程または推論過程でアップデートされたパラメータを量子化することができる。
【0097】
前述の実施形態による装置は、プロセッサ、プログラムデータを保存して実行するメモリ、ディスクドライブのような永久保存部、外部装置と通信する通信ポート、タッチパネル、キー、ボタンのようなユーザインターフェース装置などを含んでもよい。ソフトウェアモジュールまたはアルゴリズムによって具現される方法は、前記プロセッサ上で実行可能なコンピュータで読み取り可能なコードまたはプログラム命令でもって、コンピュータで読み取り可能な記録媒体上にも保存される。ここで、該コンピュータで読み取り可能な記録媒体として、マグネチック記録媒体(例えば、ROM、RAM、フロッピーディスク、ハードディスクなど)、及び光学的判読媒体(例えば、CD-ROM(compact disc read only memory)、DVD(digital versatile disc))などがある。コンピュータで読み取り可能な記録媒体は、ネットワークに連結されたコンピュータシステムに分散され、分散方式でコンピュータが読み取り可能なコード保存されて実行されるのである。該媒体は、コンピュータによって読み取り可能であり、メモリに保存され、プロセッサで実行される。
【0098】
本実施形態は、機能的なブロック構成、及び多様な処理段階で示される。そのような機能ブロックは、特定機能を遂行する多様な個数のハードウェア構成または/及びソフトウェア構成によっても具現される。例えば、一実施形態は、1以上のマイクロプロセッサの制御、または他の制御装置によって多様な機能を遂行することができる、メモリ要素、プロセッシング、ロジック、ルックアップテーブルのような直接回路構成を採用することができる。該構成要素が、ソフトウェアプログラミングまたはソフトウェア要素で実行されるように、本実施形態は、データ構造、プロセス、ル-チン、または他のプログラミング構成の組み合わせによって具現される多様なアルゴリズムを含み、C、C++、ジャバ(Java(登録商標))、アセンブラのようなプログラミング言語またはスクリプティング言語によっても具現される。機能的な側面は、1以上のプロセッサで実行されるアルゴリズムによっても具現される。また、本実施形態は、電子的な環境設定、信号処理及び/またはデータ処理などのために、従来技術を採用することができる。「メカニズム」、「要素」、「手段」、「構成」のような用語は、汎用され、機械的であって物理的な構成として限定されるものではない。前記用語は、プロセッサなどと連繋され、ソフトウェアの一連のルーチンの意味を含んでもよい。
【0099】
本実施形態で説明する特定実行は例示であり、いかなる方法によっても、技術的範囲を限定するものではない。明細書の簡潔さのために、従来の電子的な構成、制御システム、ソフトウェア、前述のシステムの他の機能的な側面の記載は、省略されている。また、図面に図示された構成要素間の線連結または連結部材は、機能的な連結、及び/または物理的または回路的な連結を例示的に示したものであり、実際の装置においては、代替可能であったり追加されたりする多様な機能的な連結、物理的な連結または回路連結としても示される。
【0100】
本明細書(特に、特許請求の範囲で)において、「前記」の用語、及びそれと類似した指示用語の使用は、単数及び複数のいずれもに該当する。また、範囲を記載した場合、該範囲に属する個別的な値を含むものであり(それに反する記載がなければ)、詳細な説明に該範囲を構成する各個別的な値を記載した通りである。最後に、方法を構成する段階について、明白に順序を記載したり、それに反対となる記載がなければ、該段階は、適切な順序でも行われる。必ずしも該段階の記載順序に限定されるものではない。全ての例、または例示的な用語(例えば、など)の使用は、単に技術的思想について詳細に説明するためのものであり、特許請求の範囲によって限定されない以上、前述の例、または例示的な用語によって範囲が限定されるものではない。また、当業者は、多様な修正、組み合わせ及び変更が付加された特許請求の範囲内、またはその均等物の範疇内において、設計条件及びファクタによって構成されるということを理解することができるであろう。
【産業上の利用可能性】
【0101】
本発明の、ニューラルネットワークのパラメータを量子化する方法及びその装置は、例えば、電子システム関連の技術分野に効果的に適用可能である。
【符号の説明】
【0102】
2 ニューラルネットワーク
10 ニューラルネットワーク学習器
11 学習させられたニューラルネットワーク
20 ニューラルネットワーク推論器
21 量子化されたニューラルネットワーク
30 パラメータ
100,1230 ニューラルネットワーク装置
110,1210 プロセッサ
120,1240 メモリ
1200 電子システム
1220 RAM
1250 センサモジュール
1260 通信モジュール
図1
図2
図3A
図3B
図3C
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13