JP7117280B2 - ニューラルネットワークのパラメータを量子化する方法及びその装置 - Google Patents

ニューラルネットワークのパラメータを量子化する方法及びその装置 Download PDF

Info

Publication number
JP7117280B2
JP7117280B2 JP2019189522A JP2019189522A JP7117280B2 JP 7117280 B2 JP7117280 B2 JP 7117280B2 JP 2019189522 A JP2019189522 A JP 2019189522A JP 2019189522 A JP2019189522 A JP 2019189522A JP 7117280 B2 JP7117280 B2 JP 7117280B2
Authority
JP
Japan
Prior art keywords
parameters
fixed
point format
parameter
bit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019189522A
Other languages
English (en)
Other versions
JP2020064635A (ja
Inventor
▲ひょん▼宣 朴
俊行 李
信行 姜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2020064635A publication Critical patent/JP2020064635A/ja
Application granted granted Critical
Publication of JP7117280B2 publication Critical patent/JP7117280B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)
  • Image Analysis (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

本発明は、ニューラルネットワークのパラメータを量子化する方法及びその装置に関する。
ニューラルネットワーク(neural network)は、生物学的脳をモデリングしたコンピュータ科学的アーキテクチャ(computational architecture)を参照する。最近、ニューラルネットワーク技術の発展により、多種の電子システムにおいて、ニューラルネットワーク装置を使用し、入力データを分析して有効な情報を抽出している。
該ニューラルネットワーク装置は、入力データに対する多量の演算を行う。そのようなニューラルネットワーク演算を効率的に処理することができる技術が研究されている。
本発明が解決しようとする課題は、ニューラルネットワークのパラメータを量子化する方法及びその装置を提供するものである。本実施形態の技術的課題は、前述のような技術的課題に限定されるものではなく、以下の実施形態から他の技術的課題が類推されるのである。
一側面により、ニューラルネットワークのパラメータを量子化する方法は、パラメータそれぞれに対して、パラメータを量子化するための固定小数点形式(fixed point format)のビット範囲を外れる程度を示すビットシフト値を計算する段階と、パラメータのビットシフト値を利用し、固定小数点形式をアップデートする段階と、アップデートされた固定小数点形式により、学習過程または推論過程でアップデートされたパラメータを量子化する段階と、を含んでもよい。
他の側面により、ニューラルネットワークのパラメータを量子化する装置は、少なくとも1つのプログラムを保存するメモリと、少なくとも1つのプログラムを実行することにより、パラメータそれぞれに対して、パラメータを量子化するための固定小数点形式のビット範囲を外れる程度を示すビットシフト値を計算し、パラメータのビットシフト値を利用し、固定小数点形式をアップデートし、アップデートされた固定小数点形式により、学習過程または推論過程でアップデートされたパラメータを量子化するプロセッサと、を含んでもよい。
さらに他の側面により、該ニューラルネットワークのパラメータを量子化する方法を具現するためのプログラムが記録されたコンピュータで読み取り可能な記録媒体が提供される。
本実施形態によれば、ニューラルネットワーク装置は、学習過程または推論過程でアップデートされたパラメータの変化に対応するように、アップデートされたパラメータを量子化するための固定小数点形式をアップデートするが、演算量を減少させながらも、精度損失を減らすことができる。また、該ニューラルネットワーク装置は、t番目の学習過程または推論過程でアップデートされたパラメータを量子化する場合、既決定の固定小数点形式によって量子化するが、固定小数点形式を決定するために、t番目の学習過程または推論過程でアップデートされたパラメータをいずれもスキャンする時間及びハードウェアオーバーヘッドを減らすことができる。また、該ニューラルネットワーク装置は、パラメータのオーバーフロー発生回数及び最大ビットシフト値を利用し、固定小数点形式をアップデートするが、相対的に簡単でありながらも、少ない演算を介して、固定小数点形式をアップデートするので、ハードウェアオーバーヘッドを減らすことができる。
一実施形態によるニューラルネットワーク学習期及びニューラルネットワーク推論期を説明する図面である。 一実施形態によるニューラルネットワークの例示を示す図面である。 一実施形態による浮動小数点形式のパラメータを図示した図面である。 一実施形態による固定小数点形式のパラメータを図示した図面である。 他の実施形態による固定小数点形式のパラメータを図示した図面である。 一実施形態によるニューラルネットワーク装置のハードウェア構成を図示したブロック図である。 プロセッサが反復的な学習過程または推論過程で動作する実施形態を示す図面である。 プロセッサがパラメータのビットシフト値を利用し、固定小数点形式をアップデートする実施形態を示す図面である。 プロセッサがパラメータのビットシフト値を計算する実施形態を示す図面である。 プロセッサがパラメータ内において、「1」を有する最上位ビットを検出する実施形態を示す図面である。 プロセッサが最大ビットシフト値、及びオーバーフローの発生回数を決定する実施形態を示す図面。 一例により、プロセッサが固定小数点形式の小数部長をアップデートするためのアルゴリズムを図示した図面である。 他例により、プロセッサが固定小数点形式の小数部長をアップデートするためのアルゴリズムを図示した図面である。 一実施形態による電子システムを示すブロック図である。 一実施形態により、ニューラルネットワーク装置の動作方法について説明するための図面である。
以下、添付された図面を参照しながら、ただ、例示のための実施形態について詳細に説明する。以下の説明は、実施形態を具体化するためのものであるのみ、発明の権利範囲を制限したり限定したりするものではないということは言うまでもない。詳細な説明、及び実施形態から、当該技術分野の当業者が容易に類推することができることは、権利範囲に属すると解釈される。
本明細書で使用される「構成される」または「含む」というような用語は、明細書上に記載された多くの構成要素、または多くの段階を必ずしもいずれも含むものであると解釈されるものではなく、そのうち一部構成要素または一部段階は、含まれなかったり、または追加的な構成要素または段階をさらに含んだりもすると解釈されなければならない。
また、本明細書で使用される「第1」または「第2」というように、序数を含む用語は、多様な構成要素についての説明に使用されるが、そのような用語は、1つの構成要素を他の構成要素から区別する目的のみに使用される。
本実施形態は、ニューラルネットワークのパラメータを量子化する方法及びその装置に係わるものであり、以下の実施形態が属する技術分野において当業者に周知されている事項については、詳細な説明を省略する。
図1は、一実施形態によるニューラルネットワーク学習器及びニューラルネットワーク推論器について説明する図面である。図1を参照すれば、ニューラルネットワーク学習器10は、ニューラルネットワークを生成したり、ニューラルネットワークを訓練(トレーニング)(または、学習)させたり、浮動小数点形式のニューラルネットワークを、固定小数点形式のニューラルネットワークに量子化したり、固定小数点形式のニューラルネットワークを、他の固定小数点形式のニューラルネットワークに量子化したり、ニューラルネットワークを再訓練(再トレーニング)させたりする機能のような多様なプロセッシング機能を有するコンピュータデバイスに該当する。例えば、ニューラルネットワーク学習器10は、PC(personal computer)、サーバデバイス、モバイルデバイスなどの多種のデバイスによっても具現される。一方、本明細書において、パラメータ量子化は、浮動小数点形式のパラメータを、固定小数点形式のパラメータに変換することを意味したり、一定ビット幅を有する固定小数点形式のパラメータを、他のビット幅を有する固定小数点形式のパラメータに変換したりすることを意味する。
ニューラルネットワーク学習器10は、与えられた初期ニューラルネットワークを反復的に学習(訓練)させることにより、学習されたニューラルネットワーク11を生成することができる。このとき、初期ニューラルネットワークは、ニューラルネットワークの処理精度を保証する観点から、浮動小数点形式のパラメータ、例えば、32ビット浮動小数点精度(32bit floating point precision)のパラメータを有することができる。ここで、パラメータは、例えば、ニューラルネットワークの入力/出力アクチベーション、重み、バイアスのように、ニューラルネットワークに入力/出力される多種のデータを含んでもよい。該ニューラルネットワークの反復的な学習が進められることにより、該ニューラルネットワークの浮動小数点パラメータは、与えられた入力に対して、さらに正確な出力を演算するために調整される。
また、ニューラルネットワーク学習器10は、初期ニューラルネットワークを反復的に学習(訓練)させる過程において、固定小数点形式によってパラメータを処理することができる。具体的には、ニューラルネットワーク学習器10は、演算量を減少させながら、許容可能な精度損失内において、該ニューラルネットワークを学習させるために、8ビットまたは16ビットの固定小数点形式により、パラメータを処理することができる。従って、ニューラルネットワーク学習器10は、オンデバイス学習のために、比較的処理性能が低いスマートフォン、タブレットまたはウェアラブルデバイスによっても具現される。
ニューラルネットワーク学習器10は、学習されたニューラルネットワーク11を、ニューラルネットワーク推論器20のようなハードウェア加速器に伝達することができる。ニューラルネットワーク推論器20は、モバイルデバイス、埋め込みデバイスなどにも含まれる。ニューラルネットワーク推論器20は、量子化されたニューラルネットワーク21駆動のための専用ハードウェアであり、比較的に低電力または低性能にも具現されるために、浮動小数点演算よりは、固定小数点演算にさらに適して具現される。一方、ニューラルネットワーク推論器20は、ニューラルネットワーク駆動のための専用モジュールであるTPU(tensor processing unit)、Neural Engineなども該当する、それらに制限されるものではない。
量子化されたニューラルネットワーク21を駆動するニューラルネットワーク推論器20は、ニューラルネットワーク学習器10とは別途の独立したデバイスによっても具現される。しかし、それに制限されるものではなく、ニューラルネットワーク推論器20は、ニューラルネットワーク学習器10と同一デバイス内においても具現される。
量子化されたニューラルネットワーク21が採用されるニューラルネットワーク推論器20は、具体的な例示において、ニューラルネットワークを利用した音声認識、映像認識などを行う自律走行自動車、ロボティックス、スマートフォン、タブレットデバイス、AR(augmented reality)デバイス、IoT(internet of things)デバイスなどにも含まれるが、それらに制限されるものではない。
図2は、一部実施形態によるニューラルネットワークの例示を示す図面である。図2を参照すれば、ニューラルネットワーク2は、入力レイヤ、隠れ層及び出力レイヤを含む構造を有し、受信される入力データ(たとえばI1及びI2)を基に演算を行い、遂行結果を基に、出力データ(例えば、O1及びO2)を生成することができる。
ニューラルネットワーク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などを含んでもよいが、それらに制限されるものではない。
ニューラルネットワーク2は、4個のレイヤを含むように図示されているが、それは、例示に過ぎず、ニューラルネットワーク2は、さらに少なかったり多かったりするレイヤを含んでもよい。また、ニューラルネットワーク2は、図2に図示されたところとは異なる多様な構造のレイヤを含んでもよい。例えば、ニューラルネットワーク2は、デープニューラルネットワークとして、畳み込みレイヤ、プーリングレイヤ及び全結合レイヤを含んでもよい。
ニューラルネットワーク2に含まれたレイヤそれぞれは、「ニューロン」、「プロセッシングエレメント(PE:processing element)」、「ユニット」、またはそれらと類似した用語で知られた、複数の人工ノードを含んでもよい。例えば、図2に図示されているように、Layer 1は、2個のノード、Layer 2は、3個のノードを含んでもよい。ただし、それは例示に過ぎず、ニューラルネットワーク2に含まれたレイヤそれぞれは、多様な個数のノードを含んでもよい。
ニューラルネットワーク2に含まれたレイヤそれぞれに含まれたノードは、互いに連結され、データを交換することができる。例えば、1つのノードは、他のノードからデータを受信し、演算することができ、該演算結果をさらに他のノードに出力することができる。
ノードそれぞれの出力値は、アクチベーションとも呼ばれる。該アクチベーションは、1つのノードの出力値でありながら、次のレイヤに含まれたノードの入力値でもある。一方、ノードそれぞれは、以前レイヤに含まれたノードから受信されたアクチベーション及び重みに基づいて、自体のアクチベーションを決定することができる。該重みは、各ノードでのアクチベーションを計算するために利用されるパラメータであり、ノード間の連結関係に割り当てられる値でもある。
ノードそれぞれは、入力され、アクチベーションを出力する演算ユニットでもあり、入力・出力をマッピングすることができる。例えば、σは、活性化関数であり、wi jkは、(i-1)番目レイヤに含まれたk番目ノードからi番目レイヤに含まれたj番目ノードへの重みであり、bi jは、i番目レイヤに含まれたj番目ノードのバイアス値であり、ai jは、i番目レイヤのj番目ノードのアクチベーションであるとするとき、アクチベーションai jは、次のような数式(1)による。
Figure 0007117280000001

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

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

図3Bを参照すれば、固定小数点形式のパラメータ35は、符号ビット315、整数部325、小数部335及び小数点345によっても構成される。固定小数点は、小数点を使用して固定された桁数の少数を示す表記法を意味する。
符号ビット315は、パラメータ35の符号を決定し、整数部325は、パラメータ35の整数を示す部分に対応し、小数部335は、パラメータ35の小数を示す部分に対応する。小数点345は、パラメータ35の整数部325及び小数部335を区分する基準になる点を意味する。
一方、パラメータ35が示す値は、図3Cを参照して説明することができる。図3Cを参照すれば、パラメータ35は、8ビット固定小数点値でもある。また、パラメータ35は、整数部325、小数部335及び小数点345からも構成される。
整数部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に対応する。
ただし、図3Cは、例示に過ぎず、パラメータ35は、16ビット固定小数点値でもあり、任意の適切な数のビット個数を有する固定小数点値でもある。また、パラメータ35は、符号化表現法、1の補数法、及び2の補数法のうちいずれか1つの表現法によって負数を示すことができる。
図4は、一実施形態によるニューラルネットワーク装置のハードウェア構成を図示したブロック図である。
ニューラルネットワーク装置100は、図1のニューラルネットワーク学習器10及びニューラルネットワーク推論器20のうち少なくとも一つに含まれて動作するか、あるいは独立した第3のハードウェア加速器として動作することができる。
ニューラルネットワーク装置100は、プロセッサ110及びメモリ120を含む。図4に図示されたニューラルネットワーク装置100には、本実施形態と係わる構成要素だけが図示されている。従って、ニューラルネットワーク装置100は、図4に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、当業者に自明である。
プロセッサ110は、ニューラルネットワーク装置100を制御するための全般的な機能を遂行する役割を行う。例えば、プロセッサ110は、ニューラルネットワーク装置100内のメモリ120に保存されたプログラムを実行することにより、ニューラルネットワーク装置100を全般的に制御する。プロセッサ110は、ニューラルネットワーク装置100内に具備されたCPU(central processing unit)、GPU(graphics processing unit)、AP(application processor)などによっても具現されるが、それらに制限されるものではない。
メモリ120は、ニューラルネットワーク装置100内で処理される各種データを保存するハードウェアであり、例えば、メモリ120は、ニューラルネットワーク装置100で処理されたデータ、及び処理されるデータを保存することができる。また、メモリ120は、ニューラルネットワーク装置100によって駆動されるアプリケーション、ドライバなどを保存することができる。メモリ120は、DRAM(dynamic random access memory)でもあるが、それに限定されるものではない。メモリ120は、揮発性メモリまたは不揮発性メモリのうち少なくとも一つを含んでもよい。
プロセッサ110は、初期ニューラルネットワークを反復的に学習させることにより、学習されたニューラルネットワークを生成することができる。プロセッサ110は、ニューラルネットワークを反復的に学習させることにより、ニューラルネットワークのパラメータを反復してアップデートすることができる。例えば、ニューラルネットワーク内重みが学習を行う過程において、反復してアップデートされ、アクチベーションも、重みとの演算により、反復してアップデートされる。プロセッサ110は、ニューラルネットワークのパラメータが反復してアップデートされるたびに、アップデートされたパラメータを、固定小数点形式によって量子化することができる。また、プロセッサ110は、ニューラルネットワークのパラメータが反復してアップデートされるたびに、固定小数点形式を反復してアップデートすることができる。可変するパラメータを、固定された固定小数点形式に量子化する場合、学習過程での精度損失が発生してしまうが、プロセッサ110は、固定小数点形式をアップデートし、パラメータを量子化することにより、演算量を減少させながらも、精度損失を減らすことができる。具体的には、プロセッサ110は、アップデートされたパラメータの固定小数点値の分布に対応するように、固定小数点形式をアップデートすることができる。例えば、プロセッサ110は、アップデートされたパラメータのうち最大値を有するパラメータに対応するように、固定小数点形式内小数点位置をアップデートすることができる。
また、プロセッサ110は、学習されたニューラルネットワークを駆動させて結果値を獲得する推論過程においても、ニューラルネットワークのパラメータを反復してアップデートすることができる。例えば、推論過程において、データが、学習されたニューラルネットワークに反復して入力され、それにより、学習されたニューラルネットワーク内アクチベーションが反復してアップデートされる。従って、学習過程と同様に、プロセッサ110は、推論過程においても、ニューラルネットワークのパラメータが反復してアップデートされるたびに、アップデートされたパラメータを、固定小数点形式によって量子化することができる。また、学習過程と同様に、プロセッサ110は、推論過程においても、ニューラルネットワークのパラメータが反復してアップデートされるたびに、固定小数点形式を反復してアップデートすることができる。
プロセッサ110は、t番目の学習過程または推論過程において、パラメータをアップデートすることができ、続いて、アップデートされたパラメータを量子化することができる。このとき、プロセッサ110は、既決定の第1固定小数点形式により、t番目の学習過程または推論過程においてアップデートされたパラメータを量子化することができる。例えば、第1固定小数点形式は、(t-1)番目の学習過程または推論過程でアップデートされたパラメータに基づいてアップデートされた固定小数点形式でもある。また、プロセッサ110は、t番目の学習過程または推論過程でアップデートされたパラメータに基づいて、既存の第1固定小数点形式を第2固定小数点形式にアップデートすることができる。次に、プロセッサ110は、第2固定小数点形式により、(t+1)番目の学習過程または推論過程でアップデートされたパラメータを量子化することができる。
従って、プロセッサ110は、t番目の学習過程または推論過程でアップデートされたパラメータを量子化する場合、既決定の固定小数点形式によって量子化するが、固定小数点形式を決定するために、t番目の学習過程または推論過程でアップデートされたパラメータをいずれもスキャンする時間及びハードウェアオーバーヘッドを減らすことができる。
図5は、プロセッサが反復的な学習過程または推論過程で動作する実施形態を示す。
プロセッサ110は、小数部長(frac_lengtht-1)を有する固定小数点形式により、t番目の学習過程または推論過程でアップデートされたパラメータ(parameter)を量子化し、量子化されたパラメータ(q_parameter)を生成することができる。言い換えれば、プロセッサ110は、(t-1)番目の学習過程または推論過程でアップデートされたパラメータ(parametert-1)に基づいて、小数部長(frac_lengtht-1)を有する固定小数点形式を事前に決定することができ、t番目の学習過程または推論過程において、小数部長(frac_lengtht-1)を有する固定小数点形式により、パラメータ(parameter)を量子化することができる。
プロセッサ110は、パラメータ(parameter)に基づいて、既存の小数部長(frac_lengtht-1)を小数部長(frac_length)にアップデートすることができる。言い換えれば、プロセッサ110は、(t+1)番目の学習過程または推論過程でアップデートされたパラメータ(parametert+1)を量子化するための小数部長(frac_length)を事前に決定することができる。
プロセッサ110は、(t+1)番目の学習過程または推論過程で、パラメータ(parameter)をパラメータ(parametert+1)にアップデートすることができる。また、プロセッサ110は、既決定の小数部長(frac_length)を有する固定小数点形式により、パラメータ(parametert+1)を量子化し、量子化されたパラメータ(q_parametert+1)を生成することができる。
図5において、パラメータ(parametert-1,parameter,parametert+1)は、一例により、ニューラルネットワーク内同一レイヤ上の重みまたは入力/出力アクチベーションのようなデータテンソルにもなり、他の例により、ニューラルネットワーク内同一チャネル上の重みまたは入力/出力アクチベーションにもなるが、それらに制限されるものではない。また、本明細書で、tは、1以上の自然数にもなり、tが1である場合、最初の学習過程または推論過程でアップデートされたパラメータを量子化するための固定小数点形式は、ユーザによって事前に設定される。
再び図4を参照すれば、プロセッサ110は、パラメータそれぞれに対して、パラメータを量子化するための固定小数点形式のビット範囲を外れる程度を示すビットシフト値を計算することができる。該ビットシフト値は、パラメータ値を表現するビット範囲が、固定小数点形式がカバーすることができるビット範囲を外れる程度を示す値でもある。一例により、固定小数点形式が、整数部3ビットまでカバーすることができる場合、該パラメータ値を固定小数点形式で表現するにおいて、整数部6ビット桁まで必要であるならば、ビットシフト値は、3にもなる。他の例として、固定小数点形式が小数部4ビットまでカバーすることができる場合、該パラメータ値を固定小数点形式で表現するにおいて、小数部6ビット桁まで必要であるならば、該ビットシフト値は、-2にもなる。また、該ビットシフト値は、固定小数点形式でパラメータを量子化するにおいて、オーバーフローまたはアンダーフローがどれほど発生するかということを示す。例えば、ビットシフト値が3である場合、3ビットほどオーバーフローが発生すると見られ、ビットシフト値が-2である場合、2ビットほどアンダーフローが発生すると見られる。従って、プロセッサ110は、パラメータのビットシフト値を計算し、パラメータに対するオーバーフローまたはアンダーフローの総発生回数を決定することができる。また、プロセッサ110は、パラメータのビットシフト値、オーバーフロー発生回数及びアンダーフロー発生回数をメモリ120に保存することができる。
次に、プロセッサ110は、パラメータのビットシフト値を利用し、固定小数点形式をアップデートすることができる。一例により、プロセッサ110は、オーバーフローの発生回数が所定の値より多い場合、ビットシフト値のうち最大ビットシフト値ほど固定小数点形式内小数部長を低減させることにより、固定小数点形式をアップデートすることができる。他の例により、プロセッサ110は、オーバーフローの発生回数が所定の値より多い場合、ビットシフト値のうち最大ビットシフト値と最小ビットシフト値とを利用し、固定小数点形式をアップデートすることができる。また、プロセッサ110は、アップデートされた固定小数点形式に係わる情報をメモリ120に保存することができる。
次に、プロセッサ110は、アップデートされた固定小数点形式により、学習過程または推論過程でアップデートされたパラメータを量子化することができる。具体的には、プロセッサ110は、t番目の学習過程または推論過程でアップデートされたパラメータのビットシフト値を介して、アップデートされた固定小数点形式により、(t+1)番目の学習過程または推論過程でアップデートされたパラメータを量子化することができる。
従って、プロセッサ110は、パラメータのオーバーフロー発生回数及び最大ビットシフト値を利用し、固定小数点形式をアップデートするが、相対的に簡単でありながらも、少ない演算を介して、固定小数点形式をアップデートするので、ハードウェアオーバーヘッドを減らすことができる。
図6は、プロセッサがパラメータのビットシフト値を利用し、固定小数点形式をアップデートする実施形態を示す。
プロセッサ110は、t番目の学習過程または推論過程でアップデートされたパラメータ(parameter(1)ないしparameter(i))(ここで、iは、2以上の自然数)それぞれに係わるビットシフト値を計算することができる。具体的には、プロセッサ110は、既決定の小数部長(frac_lengtht-1)を有する固定小数点形式のビット範囲を基準に、パラメータ(parameter(1)ないしparameter(i))(ここで、iは、2以上の自然数)それぞれに係わるビットシフト値を計算することができる。
図7は、プロセッサがパラメータのビットシフト値を計算する実施形態を示す。
プロセッサ110は、t番目の学習過程または推論過程でアップデートされたパラメータのうちi番目パラメータ(parameter(i))に係わるビットシフト値を計算することができる。
まず、プロセッサ110は、パラメータ(parameter(i))から、「1」値を有する最上位ビットを検出することができる。図7を参照すれば、プロセッサ110は、パラメータ(parameter(i))から、整数部の6番目桁のビットを、最上位ビットとして検出することができる。
次に、プロセッサ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回発生すると判断することができる。
プロセッサ110は、小数部長(frac_lengtht-1)を有する固定小数点形式により、パラメータ(parameter(i))を量子化し、量子化されたパラメータ(q_parameter(i))を生成するが、パラメータ(parameter(i))の量子化過程において、パラメータ(parameter(i))に係わるビットシフト値を計算することができる。言い換えれば、プロセッサ110は、パラメータ(parameter(i))を量子化する過程と共に、パラメータ(parameter(i))に係わるビットシフト値を計算する過程を進めることができる。
図7においては、t番目の学習過程または推論過程でアップデートされたパラメータ(parameter(i))が48ビットの固定小数点値でもって図示され、量子化されたパラメータ(q_parameter(i))がビット幅が8であり、小数部長が4である固定小数点値でもって図示されたが、それらに制限されるものではない。
図8は、プロセッサがパラメータ内において、「1」を有する最上位ビットを検出する実施形態を示す。
一実施形態により、プロセッサ110は、パラメータ(parameter(i))内最上位ビットから始め、下位ビット方向に順番通りビット値を読み取り、パラメータ(parameter(i))内において「1」を有する最上位ビットを検出することができる。
他の実施形態により、プロセッサ110は、パラメータ(parameter(i))内の所定ビットを中心に、所定範囲内ビットを読み取り、パラメータ(parameter(i))内において「1」を有する最上位ビットを検出することができる。例えば、図8に図示されているように、プロセッサ110は、小数部長(frac_lengtht-1)を有する固定小数点形式内整数部の最上位ビットを中心に、8ビット範囲内または16ビット範囲内のビットを読み取り、パラメータ(parameter(i))内において、「1」を有する最上位ビットを検出することができる。従って、プロセッサ110は、パラメータ(parameter(i))内全体ビットを読み取らず、所定範囲内のビットを読み取るので、スキャニングのためのハードウェアオーバーヘッドを減らすことができる。
再び図6を参照すれば、プロセッサ110は、パラメータ(parameter(1)ないしparameter(i))のビットシフト値から、最大ビットシフト値、及びオーバーフローの発生回数を決定することができる。具体的には、プロセッサ110は、ビットシフト値のうち最大値を、最大ビットシフト値として決定することができ、ビットシフト値において、正数に該当するビットシフト値の個数を、オーバーフローの発生回数に決定することができる。
次に、プロセッサ110は、最大ビットシフト値、及びオーバーフローの発生回数に基づいて、固定小数点形式をアップデートすることができる。言い換えれば、プロセッサ110は、最大ビットシフト値、及びオーバーフローの発生回数に基づいて、小数部長(frac_lengtht-1)を有する固定小数点形式を、小数部長(frac_length)を有する固定小数点形式にアップデートすることができる。具体的には、プロセッサ110は、オーバーフローの発生回数が、所定の値より多い場合、最大ビットシフト値ほど小数部長(frac_lengtht-1)を減少させ、小数部長を、既存の小数部長(frac_lengtht-1)から新たな小数部長(frac_length)にアップデートすることができる。
従って、プロセッサ110は、小数部長(frac_length)を有する固定小数点形式により、(t+1)番目の学習過程または推論過程でアップデートされたパラメータを量子化することができる。
図9は、プロセッサが、最大ビットシフト値、及びオーバーフローの発生回数を決定する実施形態を示す。図9に図示された論理演算のように、プロセッサ110は、t番目の学習過程または推論過程でアップデートされたパラメータである総N個のパラメータに係わる論理演算を介して、最大ビットシフト値、及びオーバーフローの発生回数を決定することができる。プロセッサ110は、図9に図示された論理演算を行う論理演算器を含んでもよい。
段階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番目の学習過程または推論過程において、オーバーフローの総発生回数を決定することができる。
段階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個のパラメータのビットシフト値をそれぞれ互いに比較し、ビットシフト値のうち最大値を、最大ビットシフト値と決定することができる。
さらには、プロセッサ110は、N個のパラメータのビットシフト値のうち、アンダーフローに該当する最小ビットシフト値を決定することができる。具体的には、プロセッサ110は、N個のパラメータのビットシフト値をそれぞれ互いに比較し、0以下の値を有するビットシフト値のうち最小値である最小ビットシフト値を決定することができる。
図10は、一例により、プロセッサが固定小数点形式の小数部長をアップデートするためのアルゴリズムを図示した図面である。
段階s1010において、プロセッサ110は、最大ビットシフト値(max_bit_shift)、オーバーフローの総発生回数(# of overflow)、t番目の学習過程または推論過程でアップデートされたパラメータを量子化するための固定小数点形式の小数部長(frac_lengtht-1)、t番目の学習過程または推論過程でアップデートされたパラメータの総個数(N)、及びアウトライアデータレート(TH)を獲得することができる。一実施形態により、プロセッサ110は、図9で図示された論理演算を介して、最大ビットシフト値(max_bit_shift)及びオーバーフローの総発生回数(# of overflow)を決定することができる。また、アウトライアデータレート(TH)は、0と1との間の任意数であり、ユーザによっても設定される。
段階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)を決定することができる。
プロセッサ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)対比で相対的に微々たるものであると判断される場合、小数部長を新たにアップデートしない。
図11は、他例により、プロセッサが固定小数点形式の小数部長をアップデートするためのアルゴリズムを図示した図面である。図11の段階s1110及びs1120は、図10の段階s1010及びs1020と対応するので、重複内容については、説明を省略する。
段階s1110において、プロセッサ110は、図10のs1010で獲得する情報以外に、追加して、最小ビットシフト値(min_bit_shift)を獲得することができる。言い換えれば、プロセッサ110は、t番目の学習過程または推論過程でアップデートされたパラメータのビットシフト値のうち、アンダーフローに該当する最小ビットシフト値(min_bit_shift)を獲得することができる。
段階s1120において、プロセッサ110は、オーバーフローの総発生回数(# of overflow)がN×THより多い場合、数式1130を介して、小数部長をアップデートすることができる。数式1130において、a及びbは、既設定加重値を示す値であり、記号[x]は、xを超えない最大整数を示すガウス関数記号を示す。例えば、ユーザは、bよりaにさらに高い加重値を設定し、小数部長(frac_length)を決定することができる。
図12は、一実施形態による電子システムを示すブロック図である。図12を参照すれば、電子システム1200は、ニューラルネットワークを基に、入力データをリアルタイムに分析し、有効な情報を抽出し、抽出された情報を基に、状況判断を行ったり、電子システム1200が搭載される電子デバイスの構成を制御したりすることができる。例えば、電子システム1200は、ドローン、先端運転手補助システム(ADAS:advanced drivers assistance system)のようなロボット装置、スマートTV(television)、スマートフォン、医療デバイス、モバイルデバイス、映像表示デバイス、計測デバイス、IoTデバイスなどに適用され、それ以外にも、多種の電子デバイスのうち少なくとも一つにも搭載される。
電子システム1200は、プロセッサ1210、RAM 1220、ニューラルネットワーク装置1230、メモリ1240、センサモジュール1250及び通信モジュール1260を含んでもよい。電子システム1200は、入出力モジュール、保安モジュール、電力制御装置などをさらに含んでもよい。電子システム1200のハードウェア構成のうち一部は、少なくとも1つの半導体チップにも搭載される。ニューラルネットワーク装置1230は、前述のニューラルネットワーク装置100、ニューラルネットワーク専用ハードウェア加速器自体、またはそれを含む装置でもある。
プロセッサ1210は、電子システム1200の全般的な動作を制御する。プロセッサ1210は、1つのプロセッサコア(single core)を含むか、あるいは複数のプロセッサコア(multi-core)を含んでもよい。プロセッサ1210は、メモリ1240に保存されたプログラム及び/またはデータを処理または実行することができる。一実施形態において、プロセッサ1210は、メモリ1240に保存されたプログラムを実行することにより、ニューラルネットワーク装置1230の機能を制御することができる。プロセッサ1210は、CPU、GPU、APなどによっても具現される。
RAM 1220は、プログラム、データまたは命令を一時的に保存することができる。例えば、メモリ1240に保存されたプログラム及び/またはデータは、プロセッサ1210の制御コードまたは起動コードにより、RAM 1220に一時的に保存される。RAM 1220は、DRAMまたはSRAM(static random access memory)のようなメモリによっても具現される。
ニューラルネットワーク装置1230は、受信される入力データを基に、ニューラルネットワークの演算を遂行し、該遂行結果を基に、情報信号を生成することができる。ニューラルネットワークは、CNN(Convolutional Neural Networks)、RNN(Recurrent Neural Networks)、Deep Belief Networks、Restricted Boltzman Machinesなどを含んでもよいが、それらに制限されるものではない。ニューラルネットワーク装置1230は、前述の分類のためのニューラルネットワークを駆動するハードウェアであり、ニューラルネットワーク専用ハードウェア加速器に該当する。
該情報信号は、音声認識信号、オブジェクト認識信号、映像認識信号、生体情報認識信号のような多種の認識信号のうち一つを含んでもよい。例えば、ニューラルネットワーク装置1230は、ビデオストリームに含まれるフレームデータを入力データとして受信し、該フレームデータから、フレームデータが示すイメージに含まれたオブジェクトに係わる認識信号を生成することができる。しかし、それらに制限されるものではなく、電子システム1200が搭載された電子装置の種類または機能により、ニューラルネットワーク装置1230は、多種の入力データを受信することができ、入力データによる認識信号を生成することができる。
メモリ1240は、データを保存するための保存場所であり、OS(operating system)、各種プログラム及び各種データを保存することができる。一実施形態において、メモリ1240は、ニューラルネットワーク装置1230の演算遂行過程で生成される中間結果、例えば、出力フィーチャマップを、出力フィーチャリスト形態または出力フィーチャマトリックス形態で保存することができる。一実施形態において、メモリ1240には、圧縮された出力フィーチャマップが保存される。また、メモリ1240は、ニューラルネットワーク装置1230で利用される量子化されたニューラルネットワークデータ、例えば、パラメータ、重みマップまたは重みリストを保存することができる。
メモリ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のうち少なくとも一つを含んでもよい。
センサモジュール1250は、電子システム1200が搭載される電子装置周辺の情報を収集することができる。センサモジュール1250は、電子装置の外部から、信号(例えば、映像信号、音声信号、磁気信号、生体信号、タッチ信号など)をセンシングまたは受信し、センシングまたは受信された信号をデータに変換することができる。そのために、センサモジュール1250は、センシング装置、例えば、マイク、撮像装置、イメージセンサ、LIDAR(light detection and ranging)センサ、超音波センサ、赤外線センサ、バイオセンサ及びタッチセンサなど多種のセンシング装置のうち少なくとも一つを含んでもよい。
センサモジュール1250は、変換されたデータを、ニューラルネットワーク装置1230に入力データとして提供することができる。例えば、センサモジュール1250は、イメージセンサを含んでもよく、電子装置の外部環境を撮影してビデオストリームを生成し、ビデオストリームの連続するデータフレームを、ニューラルネットワーク装置1230に入力データとして順に提供することができる。しかし、それらに制限されるものではなく、センサモジュール1250は、多種のデータをニューラルネットワーク装置1230に提供することができる。
通信モジュール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)に接続可能な通信インターフェースなどを含んでもよい。
図13は、一実施形態による、ニューラルネットワーク装置の動作方法について説明するための図面である。図13に図示された方法は、図4のニューラルネットワーク装置100、または図12の電子システムの各構成要素によって遂行され、重複説明については、省略する。
段階s1310において、ニューラルネットワーク装置100は、パラメータそれぞれに対して、パラメータを量子化するための固定小数点形式のビット範囲を外れる程度を示すビットシフト値を計算することができる。具体的には、ニューラルネットワーク装置100は、(t-1)番目の学習過程または推論過程でアップデートされたパラメータに基づいて、既決定の固定小数点形式のビット範囲を基準に、t番目パラメータ学習過程または推論過程でアップデートされたパラメータそれぞれのビットシフト値を計算することができる。ニューラルネットワーク装置100は、パラメータのビットシフト値を計算し、パラメータに係わるオーバーフローまたはアンダーフローの総発生回数を決定することができる。
ニューラルネットワーク装置100は、パラメータそれぞれについて、「1」値を有する最上位ビットを検出することができ、パラメータそれぞれについて、検出された最上位ビットと、固定小数点形式の整数部の最上位ビットとのビット数差を、ビットシフト値として計算することができる。また、ニューラルネットワーク装置100は、パラメータそれぞれについて、固定小数点形式の整数部の最上位ビットを基準に、所定の範囲内ビットを検索し、前記「1」値を有する最上位ビットを検出することができる。
段階s1320において、ニューラルネットワーク装置100は、パラメータのビットシフト値を利用し、固定小数点形式をアップデートすることができる。ニューラルネットワーク装置100は、t番目の学習過程または推論過程において、パラメータを量子化するための既存の固定小数点形式を、新たな固定小数点形式にアップデートすることができる。例えば、ニューラルネットワーク装置100は、オーバーフローの発生回数が、所定の値より多い場合、ビットシフト値のうち最大ビットシフト値ほど固定小数点形式内小数部長を低減させることにより、固定小数点形式をアップデートすることができる。
段階s1330において、ニューラルネットワーク装置100は、アップデートされた固定小数点形式により、学習過程または推論過程でアップデートされたパラメータを量子化することができる。具体的には、ニューラルネットワーク装置100は、t番目の学習過程または推論過程でアップデートされたパラメータのビットシフト値を介してアップデートされた固定小数点形式により、(t+1)番目の学習過程または推論過程でアップデートされたパラメータを量子化することができる。
前述の実施形態による装置は、プロセッサ、プログラムデータを保存して実行するメモリ、ディスクドライブのような永久保存部、外部装置と通信する通信ポート、タッチパネル、キー、ボタンのようなユーザインターフェース装置などを含んでもよい。ソフトウェアモジュールまたはアルゴリズムによって具現される方法は、前記プロセッサ上で実行可能なコンピュータで読み取り可能なコードまたはプログラム命令でもって、コンピュータで読み取り可能な記録媒体上にも保存される。ここで、該コンピュータで読み取り可能な記録媒体として、マグネチック記録媒体(例えば、ROM、RAM、フロッピーディスク、ハードディスクなど)、及び光学的判読媒体(例えば、CD-ROM(compact disc read only memory)、DVD(digital versatile disc))などがある。コンピュータで読み取り可能な記録媒体は、ネットワークに連結されたコンピュータシステムに分散され、分散方式でコンピュータが読み取り可能なコード保存されて実行されるのである。該媒体は、コンピュータによって読み取り可能であり、メモリに保存され、プロセッサで実行される。
本実施形態は、機能的なブロック構成、及び多様な処理段階で示される。そのような機能ブロックは、特定機能を遂行する多様な個数のハードウェア構成または/及びソフトウェア構成によっても具現される。例えば、一実施形態は、1以上のマイクロプロセッサの制御、または他の制御装置によって多様な機能を遂行することができる、メモリ要素、プロセッシング、ロジック、ルックアップテーブルのような直接回路構成を採用することができる。該構成要素が、ソフトウェアプログラミングまたはソフトウェア要素で実行されるように、本実施形態は、データ構造、プロセス、ル-チン、または他のプログラミング構成の組み合わせによって具現される多様なアルゴリズムを含み、C、C++、ジャバ(Java(登録商標))、アセンブラのようなプログラミング言語またはスクリプティング言語によっても具現される。機能的な側面は、1以上のプロセッサで実行されるアルゴリズムによっても具現される。また、本実施形態は、電子的な環境設定、信号処理及び/またはデータ処理などのために、従来技術を採用することができる。「メカニズム」、「要素」、「手段」、「構成」のような用語は、汎用され、機械的であって物理的な構成として限定されるものではない。前記用語は、プロセッサなどと連繋され、ソフトウェアの一連のルーチンの意味を含んでもよい。
本実施形態で説明する特定実行は例示であり、いかなる方法によっても、技術的範囲を限定するものではない。明細書の簡潔さのために、従来の電子的な構成、制御システム、ソフトウェア、前述のシステムの他の機能的な側面の記載は、省略されている。また、図面に図示された構成要素間の線連結または連結部材は、機能的な連結、及び/または物理的または回路的な連結を例示的に示したものであり、実際の装置においては、代替可能であったり追加されたりする多様な機能的な連結、物理的な連結または回路連結としても示される。
本明細書(特に、特許請求の範囲で)において、「前記」の用語、及びそれと類似した指示用語の使用は、単数及び複数のいずれもに該当する。また、範囲を記載した場合、該範囲に属する個別的な値を含むものであり(それに反する記載がなければ)、詳細な説明に該範囲を構成する各個別的な値を記載した通りである。最後に、方法を構成する段階について、明白に順序を記載したり、それに反対となる記載がなければ、該段階は、適切な順序でも行われる。必ずしも該段階の記載順序に限定されるものではない。全ての例、または例示的な用語(例えば、など)の使用は、単に技術的思想について詳細に説明するためのものであり、特許請求の範囲によって限定されない以上、前述の例、または例示的な用語によって範囲が限定されるものではない。また、当業者は、多様な修正、組み合わせ及び変更が付加された特許請求の範囲内、またはその均等物の範疇内において、設計条件及びファクタによって構成されるということを理解することができるであろう。
本発明の、ニューラルネットワークのパラメータを量子化する方法及びその装置は、例えば、電子システム関連の技術分野に効果的に適用可能である。
2 ニューラルネットワーク
10 ニューラルネットワーク学習器
11 学習させられたニューラルネットワーク
20 ニューラルネットワーク推論器
21 量子化されたニューラルネットワーク
30 パラメータ
100,1230 ニューラルネットワーク装置
110,1210 プロセッサ
120,1240 メモリ
1200 電子システム
1220 RAM
1250 センサモジュール
1260 通信モジュール

Claims (17)

  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のいずれか一項に記載の装置。
JP2019189522A 2018-10-17 2019-10-16 ニューラルネットワークのパラメータを量子化する方法及びその装置 Active JP7117280B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2018-0123927 2018-10-17
KR1020180123927A KR20200043169A (ko) 2018-10-17 2018-10-17 뉴럴 네트워크의 파라미터를 양자화하는 방법 및 장치

Publications (2)

Publication Number Publication Date
JP2020064635A JP2020064635A (ja) 2020-04-23
JP7117280B2 true JP7117280B2 (ja) 2022-08-12

Family

ID=67777176

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019189522A Active JP7117280B2 (ja) 2018-10-17 2019-10-16 ニューラルネットワークのパラメータを量子化する方法及びその装置

Country Status (5)

Country Link
US (1) US20200125947A1 (ja)
EP (1) EP3640858A1 (ja)
JP (1) JP7117280B2 (ja)
KR (1) KR20200043169A (ja)
CN (1) CN111062475A (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6540725B2 (ja) * 2017-01-30 2019-07-10 富士通株式会社 演算処理装置、方法、およびプログラム
US10592799B1 (en) * 2019-01-23 2020-03-17 StradVision, Inc. Determining FL value by using weighted quantization loss values to thereby quantize CNN parameters and feature values to be used for optimizing hardware applicable to mobile devices or compact networks with high precision
US11676685B2 (en) 2019-03-21 2023-06-13 Illumina, Inc. Artificial intelligence-based quality scoring
US11210554B2 (en) 2019-03-21 2021-12-28 Illumina, Inc. Artificial intelligence-based generation of sequencing metadata
US11593649B2 (en) 2019-05-16 2023-02-28 Illumina, Inc. Base calling using convolutions
JP7272121B2 (ja) * 2019-06-07 2023-05-12 富士通株式会社 演算処理装置、制御方法、及び制御プログラム
JP7371499B2 (ja) * 2020-01-07 2023-10-31 富士通株式会社 演算処理装置、演算処理装置の制御方法及び演算処理プログラム
JP2021124849A (ja) * 2020-02-04 2021-08-30 富士通株式会社 演算処理装置、演算処理装置の制御方法及び演算処理プログラム
US11861467B2 (en) * 2020-03-05 2024-01-02 Qualcomm Incorporated Adaptive quantization for execution of machine learning models
EP4177795A4 (en) * 2020-07-01 2024-03-20 Nippon Telegraph & Telephone DATA PROCESSING DEVICE AND DATA PROCESSING METHOD
WO2022197754A1 (en) * 2021-03-16 2022-09-22 Illumina Software, Inc. Neural network parameter quantization for base calling
WO2022201352A1 (ja) * 2021-03-24 2022-09-29 三菱電機株式会社 推論装置、推論方法、及び、推論プログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170220929A1 (en) 2014-09-09 2017-08-03 Intel Corporation Improved fixed point integer implementations for neural networks
US20180107451A1 (en) 2016-10-14 2018-04-19 International Business Machines Corporation Automatic scaling for fixed point implementation of deep neural networks
WO2018140294A1 (en) 2017-01-25 2018-08-02 Microsoft Technology Licensing, Llc Neural network based on fixed-point operations
JP2018124681A (ja) 2017-01-30 2018-08-09 富士通株式会社 演算処理装置、情報処理装置、方法、およびプログラム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6263022B1 (en) * 1999-07-06 2001-07-17 Philips Electronics North America Corp. System and method for fine granular scalable video with selective quality enhancement
KR101885258B1 (ko) * 2010-05-14 2018-08-06 삼성전자주식회사 비디오 신호의 부호화 방법과 그 장치, 및 비디오 복호화 방법과 그 장치
US20160328645A1 (en) * 2015-05-08 2016-11-10 Qualcomm Incorporated Reduced computational complexity for fixed point neural network
US11222263B2 (en) * 2016-07-28 2022-01-11 Samsung Electronics Co., Ltd. Neural network method and apparatus
US10997492B2 (en) * 2017-01-20 2021-05-04 Nvidia Corporation Automated methods for conversions to a lower precision data format
CN108364061B (zh) * 2018-02-13 2020-05-05 北京旷视科技有限公司 运算装置、运算执行设备及运算执行方法
JP7056225B2 (ja) * 2018-02-26 2022-04-19 富士通株式会社 演算処理装置、情報処理装置、情報処理方法、およびプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170220929A1 (en) 2014-09-09 2017-08-03 Intel Corporation Improved fixed point integer implementations for neural networks
US20180107451A1 (en) 2016-10-14 2018-04-19 International Business Machines Corporation Automatic scaling for fixed point implementation of deep neural networks
WO2018140294A1 (en) 2017-01-25 2018-08-02 Microsoft Technology Licensing, Llc Neural network based on fixed-point operations
JP2018124681A (ja) 2017-01-30 2018-08-09 富士通株式会社 演算処理装置、情報処理装置、方法、およびプログラム

Also Published As

Publication number Publication date
EP3640858A1 (en) 2020-04-22
KR20200043169A (ko) 2020-04-27
JP2020064635A (ja) 2020-04-23
US20200125947A1 (en) 2020-04-23
CN111062475A (zh) 2020-04-24

Similar Documents

Publication Publication Date Title
JP7117280B2 (ja) ニューラルネットワークのパラメータを量子化する方法及びその装置
JP7329455B2 (ja) ニューラルネットワーク量子化のための方法及び装置
CN109389219B (zh) 用于对神经网络的参数进行量化的方法和装置
KR102589303B1 (ko) 고정 소수점 타입의 뉴럴 네트워크를 생성하는 방법 및 장치
JP7349835B2 (ja) ニューラルネットワークにおいてパラメータを処理する方法及び装置
KR102564456B1 (ko) 뉴럴 네트워크의 파라미터를 양자화하는 장치 및 방법
KR102526650B1 (ko) 뉴럴 네트워크에서 데이터를 양자화하는 방법 및 장치
KR20190052893A (ko) 뉴럴 네트워크 연산을 위한 전처리 장치 및 방법
KR20190125141A (ko) 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
US11663451B2 (en) Two-dimensional array-based neuromorphic processor and implementing method
KR20210083935A (ko) 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
US20240086694A1 (en) Neuromorphic method and apparatus with multi-bit neuromorphic operation
US11853869B2 (en) Neural network apparatus and method of processing variable-resolution operation by the same
US20240112030A1 (en) Neural network method and apparatus
CN112668381A (zh) 用于识别图像的方法和设备
KR20210085461A (ko) 프로세싱 장치 및 프로세싱 장치에서 부동 소수점 연산을 처리하는 방법
CN114358274A (zh) 训练用于图像识别的神经网络的方法和设备
KR102581471B1 (ko) 분류를 위한 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치
KR20210121946A (ko) 뉴럴 네트워크 양자화를 위한 방법 및 장치
KR20210053791A (ko) 뉴럴 네트워크의 데이터를 처리하는 방법 및 장치
KR20240035013A (ko) 뉴럴 네트워크의 파라미터 양자화 방법 및 장치
CN115204377A (zh) 具有多位运算的装置和方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210415

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220309

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220405

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220620

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220705

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220801

R150 Certificate of patent or registration of utility model

Ref document number: 7117280

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150