JP7329455B2 - ニューラルネットワーク量子化のための方法及び装置 - Google Patents

ニューラルネットワーク量子化のための方法及び装置 Download PDF

Info

Publication number
JP7329455B2
JP7329455B2 JP2020002058A JP2020002058A JP7329455B2 JP 7329455 B2 JP7329455 B2 JP 7329455B2 JP 2020002058 A JP2020002058 A JP 2020002058A JP 2020002058 A JP2020002058 A JP 2020002058A JP 7329455 B2 JP7329455 B2 JP 7329455B2
Authority
JP
Japan
Prior art keywords
neural network
layers
layer
bit precision
quantized
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
JP2020002058A
Other languages
English (en)
Other versions
JP2020113273A (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 JP2020113273A publication Critical patent/JP2020113273A/ja
Application granted granted Critical
Publication of JP7329455B2 publication Critical patent/JP7329455B2/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/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of 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/0495Quantised networks; Sparse networks; Compressed 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/047Probabilistic or stochastic 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/0499Feedforward networks
    • 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
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Probability & Statistics with Applications (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)

Description

本発明は、ニューラルネットワーク量子化のための方法及び装置に係り、具体的に、ニューラルネットワークの一部選択されたレイヤに係わる精度を、より低ビット(lower-bit)に調整する方法及び装置に関する。
ニューラルネットワーク(neural network)は、生物学的脳をモデリングしたコンピュータ科学的アーキテクチャ(computational architecture)を指す。最近、ニューラルネットワーク技術の発展によって、多様な種類の電子システムにおいて、ニューラルネットワークを活用し、入力データを分析して有効な情報を抽出する研究が活発に進められている。ニューラルネットワークを処理する装置は、複雑な入力データに対する多量の演算を必要とする。したがって、ニューラルネットワークを用いて大量の入力データをリアルタイムで分析し、所望の情報を抽出するためには、ニューラルネットワークに関する演算を効率的に処理することができる技術が要求される。
本発明が解決しようとする課題は、ニューラルネットワーク量子化のための方法及び装置を提供することである。本実施形態がなそうとする技術的課題は、前記のような技術的課題に限定されず、以下の実施形態からさらに他の技術的課題が類推される。
一側面によれば、ニューラルネットワーク量子化のための方法は、第1ビット精度の第1ニューラルネットワークに対して、複数のサイクルの順方向(feedforward)及び逆伝播(backpropagation)学習を繰り返して行う段階と、前記第1ニューラルネットワークに含まれたレイヤそれぞれに対して、既設定の初期ウェイトと各サイクルの前記逆伝播学習によって決定された更新ウェイトとの間のウェイト差(weight differences)を獲得する段階と、前記レイヤそれぞれに対する前記ウェイト差の統計量を分析する段階と、前記分析された統計量に基づいて、前記レイヤのうち、前記第1ビット精度よりも低い第2ビット精度で量子化される1つ以上のレイヤを決定する段階と、前記レイヤのうち、前記決定されたレイヤを前記第2ビット精度で量子化することで、量子化されたレイヤを含む第2ニューラルネットワークを生成する段階と、を含む。
他の側面によれば、コンピュータで読み取り可能な記録媒体は、上述した方法を行う命令語を含む1つ以上のプログラムが記録された記録媒体を含んでもよい。
さらに他の側面によれば、ニューラルネットワーク量子化のための装置は、少なくとも1つのプログラムが保存されたメモリと、前記少なくとも1つのプログラムを実行することで、ニューラルネットワーク量子化を行うプロセッサと、を含み、前記プロセッサは、第1ビット精度の第1ニューラルネットワークに対して、複数のサイクルの順方向(feedforward)及び逆伝播(backpropagation)学習を繰り返して行い、前記第1ニューラルネットワークに含まれたレイヤそれぞれに対して、既設定の初期ウェイトと各サイクルの前記逆伝播学習によって決定された更新ウェイトとの間のウェイト差(weight differences)を獲得し、前記レイヤそれぞれに対する前記ウェイト差の統計量を分析し、前記分析された統計量に基づいて、前記レイヤのうち、前記第1ビット精度よりも低い第2ビット精度で量子化される1つ以上のレイヤを決定し、前記レイヤのうち、前記決定されたレイヤを前記第2ビット精度で量子化することで、量子化されたレイヤを含む第2ニューラルネットワークを生成する。
一実施形態によるニューラルネットワークのアーキテクチャを説明するための図面である。 一実施形態によるニューラルネットワークで行われる演算を説明するための図面である。 一実施形態によるニューラルネットワーク量子化装置のハードウェア構成を示すブロック図である。 一実施形態による予め訓練されたニューラルネットワークを量子化してハードウェアアクセラレータに展開することを説明するための図面である。 浮動小数点と固定小数点とを説明するための図面である。 固定小数点においてフラクション長と精度との関係を説明するための図面である。 一実施形態によるニューラルネットワークの学習を説明するための図面である。 一実施形態によってニューラルネットワークの逆伝播学習によって更新されたウェイトを説明するための図面である。 一実施形態によるレイヤ別ウェイト差(weight difference)を説明するための図面である。 一実施形態によるレイヤそれぞれに対するウェイト差の統計量を分析した結果を説明するための図面である。 一実施形態によってウェイト差統計量に基づいてレイヤを整列することを説明するための図面である。 一実施形態によって整列されたレイヤのうち、下位ビット精度で量子化するレイヤを選択することを説明するための図面である。 一実施形態によって下位ビット精度で量子化されるレイヤを判断する方法を説明するためのフローチャートである。 他の実施形態によって下位ビット精度で量子化されるレイヤを判断する方法を説明するためのフローチャートである。 一実施形態によって浮動小数点パラメータのレイヤを含むニューラルネットワークから固定小数点パラメータのレイヤを含むニューラルネットワークに量子化することを説明するための図面である。 他の実施形態によって浮動小数点パラメータのレイヤを含むニューラルネットワークから固定小数点パラメータのレイヤを含むニューラルネットワークに量子化することを説明するための図面である。 一実施形態による量子化されたニューラルネットワークを説明するための図面である。 一実施形態によって下位ビット精度で量子化されたレイヤ数と精度損失との相関関係を例示的に説明するためのグラフである。 一実施形態によって下位ビット精度で量子化されるレイヤを判断するための基準としてウェイト差統計量を用いる場合と、異なる方式を用いる場合とを比較して説明するための図面である。 一実施形態による電子システムを示すブロック図である。 一実施形態によるニューラルネットワーク量子化のための方法のフローチャートである。
本実施形態で使用される用語は、可能な限り、現在汎用される一般的な用語を選択したが、それは、当分野の当業者の意図、判例、または新たな技術の出現などによっても異なる。また、特定の場合、出願人が任意に選定した用語もあり、その場合、当該説明部分において、詳細にその意味を記載する。従って、明細書で使用される用語は、単なる用語の名称ではなく、その用語が有する意味と、明細書の全般にわたる内容とを基に定義されなければならない。
本実施形態で使用される「構成される」または「含む」などの用語は、明細書上に記載された多様な構成要素、または多様な段階を必ずしもいずれも含むと解釈されてはならず、それらのうち、一部構成要素または、一部段階は、含まれないか、あるいは追加的な構成要素または段階をさらに含むことができると解釈されねばならない。
以下、添付図面を参照して実施形態について詳細に説明する。しかし、実施形態は、様々な互いに異なる形態として具現され、ここで説明する例に限定されない。
図1は、一実施形態によるニューラルネットワークのアーキテクチャを説明するための図面である。図1を参照すれば、ニューラルネットワーク1は、ディープニューラルネットワーク(Deep Neural Network、DNN)、またはn階層ニューラルネットワーク(n-layers neural networks)のアーキテクチャであってもよい。DNNまたはn階層ニューラルネットワークは、コンボルーションニューラルネットワーク(Convolutional Neural Networks、CNN)、リカレントニューラルネットワーク(Recurrent Neural Networks、RNN)、ディープブリーフネットワーク(Deep Belief Networks)、制限ボルツマンマシン(Restricted Boltzman Machines)などに該当する。例えば、ニューラルネットワーク1は、コンボルーションニューラルネットワーク(CNN)として具現されるが、その限りではない。図1では、コンボルーションニューラルネットワークのうち、一部のレイヤが示されたが、コンボルーションニューラルネットワークは、コンボルーションレイヤ、プーリングレイヤ(pooling layer)、フリコネクティッド(fully connected)レイヤなどを含んでもよい。
コンボルーションレイヤにおいて、第1フィーチャマップ(feature map1)FM1は、入力フィーチャマップに該当し、第2フィーチャマップFM2は、出力フィーチャマップに該当する。フィーチャマップは、入力データの多様な特徴が表現されたデータセットを意味する。フィーチャマップFM1、FM2は、2次元マトリックスまたは、3次元マトリックスでもあり、それぞれのアクティベーションパラメータを有する。フィーチャマップFM1、FM2は、幅W(または、カラムと称する)、高さH(またはロウと称する)及び深さDを有する。この際、深さDは、チャネル数とも称される。
コンボルーションレイヤにおいて、第1フィーチャマップFM1及びウェイトマップWMに対するコンボルーション演算が行われ、その結果、第2フィーチャマップFM2が生成される。ウェイトマップWMは、第1フィーチャマップFM1をフィルタリングすることができ、フィルターまたはカーネル(kernel)と指称される。ウェイトマップWMの深さ、すなわちチャネル数は、第1フィーチャマップFM1の深さ、すなわちチャネル数と同一である。ウェイトマップWMは、第1フィーチャマップFM1をスライディングウィンドウとして横断する方式でシフトされる。各シフトの間、ウェイトマップWMに含まれるウェイトそれぞれが第1フィーチャマップFM1と重畳された領域における全てのフィーチャ値と乗算され、加算される。第1フィーチャマップFM1とウェイトマップWMが、コンボルーションされることにより、第2フィーチャマップFM2の1つのチャネルが生成される。図1には、1つのウェイトマップWMが表示されたが、実質的には、複数のウェイトマップが第1フィーチャマップFM1とコンボルーションされて、第2フィーチャマップFM2の複数のチャネルが生成される。
一方、コンボルーションレイヤの第2フィーチャマップFM2は、次のレイヤの入力フィーチャマップになりうる。例えば、第2フィーチャマップFM2は、プーリングレイヤの入力フィーチャマップになりうる。
図2は、一実施形態によるニューラルネットワークで行われる演算を説明するための図面である。図2を参照すれば、ニューラルネットワーク2は、入力レイヤ、1つ以上の隠しレイヤ及び出力レイヤを含む構造を有し、受信される入力データ(例えば、I1及びI2)に基づいて演算を行い、遂行結果に基づいて出力データ(例えば、O1及びO2)を生成することができる。
ニューラルネットワーク2は、前述したように、2個以上の隠しレイヤを含むDNNまたはn階層ニューラルネットワークとしうる。例えば、図2に示されたように、ニューラルネットワーク2は、入力レイヤLayer1、2個の隠しレイヤLayer2、Layer3、及び出力レイヤLayer4を含むDNNである。ニューラルネットワーク2がDNNアーキテクチャとして具現された場合、有効な情報を処理することができるさらに多くのレイヤを含むので、ニューラルネットワーク2は、シングルレイヤを有するニューラルネットワークよりも複雑なデータ集合を処理することができる。一方、ニューラルネットワーク2は、4個のレイヤを含むと示されているが、これは、例示に過ぎず、ニューラルネットワーク2は、さらに少ないか多くのレイヤを含んでもよく、あるいはさらに少ないか多くのチャネルを含んでもよい。すなわち、ニューラルネットワーク2は、図2とは異なって、多様な構造のレイヤを含んでもよい。
ニューラルネットワーク2に含まれたレイヤそれぞれは、複数のチャネルを含みうる。チャネルは、ニューロン、プロセッシングエレメント(Processing element、PE)、ユニットまたはこれと類似した用語と知られた、複数の人工ノード(artificial node)に該当する。例えば、図2に示されたように、Layer 1は、2個のチャネル(ノード)、Layer 2及びLayer 3それぞれは、3個のチャネルを含んでもよい。但し、これは例示に過ぎず、ニューラルネットワーク2に含まれたレイヤそれぞれは、多様な個数のチャネル(ノード)を含んでもよい。
ニューラルネットワーク2のレイヤそれぞれに含まれたチャネルは、互いに連結されてデータを処理することができる。例えば、1つのチャネルは、他のチャネルからデータを受信して演算し、演算結果をさらに他のチャネルに出力することができる。
各チャネルの入力及び出力は、それぞれ入力アクティベーション及び出力アクティベーションと指称される。すなわち、アクティベーションは、一チャネルの出力であると共に、次のレイヤに含まれたチャネルの入力に該当するパラメータであってもよい。一方、各チャネルは、先行レイヤに含まれたチャネルから受信されたアクティベーション及びウェイトに基づいて自分のアクティベーションを決定することができる。ウェイトは、各チャネルにおける出力アクティベーションを計算するために用いられるパラメータであって、チャネル間の連結関係に割り当てられる値であるとしうる。
各チャネルは、入力を受信して出力アクティベーションを出力する演算ユニット(computational unit)、またはプロセッシングエレメント(processing element)によって処理され、各チャネルの入力-出力がマッピングされる。例えば、σは、アクティベーション関数(activation function)で、w jkは、(i-1)番目のレイヤに含まれたk番目チャネルからi番目レイヤに含まれたj番目チャネルへのウェイトであり、b は、i番目レイヤに含まれたj番目チャネルのバイアスであり、a は、i番目レイヤのj番目チャネルのアクティベーションであるとするとき、アクティベーションa は、次のような数式(1)を用いて計算される。
Figure 0007329455000001
図2に示されたように、2番目レイヤLayer 2の最初チャネルCH1のアクティベーションは、a と表現される。また、a は、数式1によって、a =σ(w 1,1×a +w 1,2×a +b )の値を有しうる。但し、前述した数式1は、ニューラルネットワーク2でデータを処理するために用いられるアクティベーション及びウェイトを説明するための例示に過ぎず、その限りではない。アクティベーションは、先行レイヤから受信されたアクティベーションの和(sum)にアクティベーション関数を適用した値を正規化線形ユニット(Rectified Linear Unit;ReLU)を通過させることで獲得された値であってもよい。
前述したように、ニューラルネットワーク2では、数多くのデータ集合が互いに連結された複数のチャネル間で交換され、レイヤを経つつ数多くの演算過程を経る。したがって、複雑な入力データの処理に必要な演算量を減少させつつも、精度損失を最小化することができる技術が要求される。
図3は、一実施形態によるニューラルネットワーク量子化装置のハードウェア構成を示すブロック図である。図3を参照すれば、ニューラルネットワーク量子化装置10は、プロセッサ110及びメモリ120を含む。図3に示されたニューラルネットワーク量子化装置10には、本実施形態と係わる構成要素のみ示されている。したがって、ニューラルネットワーク量子化装置10には、図3に示された構成要素以外に他の汎用的な構成要素がさらに含まれるということは、当業者にとって自明である。
ニューラルネットワーク量子化装置10は、ニューラルネットワークを生成するか、ニューラルネットワークを学習(learn)(または訓練(train))するか、浮動小数点(floating point)タイプのニューラルネットワークを固定小数点(fixed point)タイプのニューラルネットワークに量子化するか、または、ニューラルネットワークを再訓練(retrain)する機能のような多様なプロセッシング機能を有するコンピュータデバイスに該当する。例えば、ニューラルネットワーク量子化装置10は、PC(personal computer)、サーバデバイス、モバイルデバイスなどであるが、ニューラルネットワークを用いた音声認識、映像認識などを行う自律走行自動車、ロボティックス、スマートフォン、タブレットデバイス、AR(Augmented Reality)デバイス、IoT(Internet of Things)デバイスなどに備えられた装置であるとしうるが、これらに制限されず、多様な種類のデバイスに備えられうる。
プロセッサ110は、ニューラルネットワーク量子化装置10を制御するための全般的な機能を行う役割を行う。例えば、プロセッサ110は、ニューラルネットワーク量子化装置10内のメモリ120に保存されたプログラムを実行することで、ニューラルネットワーク量子化装置10を全般的に制御する。プロセッサ110は、ニューラルネットワーク量子化装置10内に備えられたCPU(central processing unit)、GPU(graphics processing unit)、AP(application processor)などで具現されるが、その限りではない。
メモリ120は、ニューラルネットワーク量子化装置10内で処理される各種データを保存するハードウェアであって、例えば、メモリ120は、ニューラルネットワーク量子化装置10で処理されたデータ及び処理されるデータを保存することができる。また、メモリ120は、ニューラルネットワーク量子化装置10によって駆動されるアプリケーション、ドライバなどを保存することができる。メモリ120は、DRAMであるとしうるが、これに限定されるものではない。メモリ120は、揮発性メモリ(volatile memory)または不揮発性メモリ(nonvolatile memory)のうち、少なくとも1つを含みうる。不揮発性メモリは、ROM (Read Only Memory)、PROM(Programmable ROM)、EPROM(Electrically Programmable ROM)、EEPROM(Electrically Erasable and Programmable ROM)、フラッシュメモリ、PRAM(Phase-change RAM)、MRAM(Magnetic RAM)、RRAM(Resistive RAM)、FRAM(登録商標(Ferroelectric RAM))などを含む。揮発性メモリは、DRAM(Dynamic RAM)、SRAM(Static RAM)、SDRAM(Synchronous DRAM)などを含む。実施形態において、メモリ120は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、CF(compact flash)、SD(secure digital)、Micro-SD(micro secure digital)、Mini-SD(mini secure digital)、xD(extreme digital)またはMemory Stickのうち少なくとも1つを含んでもよい。
プロセッサ110は、与えられた初期ニューラルネットワークを繰り返して学習(訓練)させることで、学習されたニューラルネットワークを生成することができる。この際、初期ニューラルネットワークは、ニューラルネットワークの処理精度の確保のために浮動小数点タイプのパラメータ、例えば、32ビット浮動小数点精度(32bit floating point precision)のパラメータを有してもよい。ここで、パラメータは、例えば、ニューラルネットワークの入/出力アクティベーション、ウェイト、バイアスなどニューラルネットワークに入/出力される多様な種類のニューラルネットワークデータを含んでもよい。ニューラルネットワークの反復訓練が進められることにより、ニューラルネットワークの浮動小数点パラメータは、与えられた入力に対してさらに正確な出力を演算するために、調整されるか(tuned)更新される(updated)。但し、これに制限されず、ニューラルネットワークの学習は、後述するニューラルネットワーク量子化が行われた後に、量子化されたニューラルネットワークを用いて行われてもよい。
浮動小数点は、固定小数点に比べて、相対的に多くの演算量及び多くのメモリアクセス頻度が要求される。したがって、比較的処理性能の低いスマートフォン、タブレット、ウェアラブルデバイスのようなモバイルデバイス、エンベデッド(embedded)デバイスなどでは、浮動小数点タイプのパラメータを有するニューラルネットワークの処理が円滑ではない。つまり、かようなデバイスで演算量を十分に減少させつつ、許容可能な精度損失(accuracy loss)内でニューラルネットワークを駆動させるためには、ニューラルネットワークで処理される浮動小数点タイプのパラメータは、量子化されることが望ましい。ここで、量子化は、浮動小数点タイプのパラメータを、固定小数点タイプのパラメータに変換することを意味する。したがって、実施形態において、ニューラルネットワークに含まれたあるレイヤを量子化するという意味は、当該レイヤのパラメータを量子化することを意味することができる。
一方、他の実施形態によれば、ニューラルネットワーク量子化装置10は、ニューラルネットワークが展開される(deployed)他のデバイス(例えば、モバイルデバイス、エンベデッドデバイスなど)の処理性能を考慮して、学習されたニューラルネットワークのパラメータを所定ビット精度の固定小数点タイプに変換する量子化を行い、ニューラルネットワーク量子化装置10は、量子化されたニューラルネットワークが展開される他のデバイスに伝達することができる。ニューラルネットワークが展開される他のデバイスは、具体的な例示として、ニューラルネットワークを用いた音声認識、映像認識などを行う自律走行自動車、ロボティックス、スマートフォン、タブレットデバイス、AR(Augmented Reality)デバイス、IoT(Internet of Things)デバイスなどとしうるが、その限りではない。
プロセッサ110は、メモリ120に保存されたニューラルネットワークデータを獲得し、獲得されたニューラルネットワークデータを用いて繰り返して学習を行うことができる。ニューラルネットワークの学習は、先ず、訓練セット(train set)データを入力として繰り返して訓練され、次いで、テストセット(test set)データで再び繰り返して訓練されるものとしうるが、必ずしもその限りではない。訓練セットデータは、ニューラルネットワークを訓練させるための入力データであり、テストセットデータは、訓練セットデータと重ならない入力データであって、訓練セットデータで訓練されたニューラルネットワークの性能を測定しつつ訓練させるためのデータである。
プロセッサ110によって、ニューラルネットワークの各レイヤが固定小数点タイプで量子化されるアルゴリズムについて、以下、当該図面を参照して具体的に説明する。
一方、メモリ120は、例えば、学習されていない初期ニューラルネットワークデータ、学習過程で生成されたニューラルネットワークデータ、全ての学習が完了したニューラルネットワークデータ、量子化されたニューラルネットワークデータなどプロセッサ110によって、処理されるか、処理されたニューラルネットワーク関連データセットを保存することができ、またプロセッサ110によって実行されるニューラルネットワークの学習アルゴリズム、量子化アルゴリズムなどに係わる多様なプログラムを保存することができる。
図4は、一実施形態による学習されたニューラルネットワークを量子化してハードウェアアクセラレータに展開することを説明するための図面である。
図4を参照すれば、他の実施形態について説明されたように、PC、サーバのようなニューラルネットワーク量子化装置(図3の10)においてプロセッサ(図3の110)は、浮動小数点タイプ(例えば、32ビット浮動小数点タイプ)のニューラルネットワーク410を学習する。学習されたニューラルネットワーク410自体は、浮動小数点タイプのパラメータによって低電力または低性能のハードウェアアクセラレータで効率的に処理されないので、ニューラルネットワーク量子化装置10のプロセッサ110は、浮動小数点タイプのニューラルネットワーク410を、固定小数点タイプ(例えば、16ビット以下の固定小数点タイプ)のニューラルネットワーク420に量子化する。ハードウェアアクセラレータは、ニューラルネットワーク420の駆動のための専用ハードウェアであって、比較的低電力または低性能として具現されるために、浮動小数点演算よりは固定小数点演算にさらに好適に具現される。ハードウェアアクセラレータは、例えば、ニューラルネットワーク駆動のための専用モジュールであるNPU(neural processing unit)、TPU(Tensor Processing Unit)、Neural Engineなどに相当しうるが、その限りではない。
量子化されたニューラルネットワーク420を駆動するハードウェアアクセラレータは、ニューラルネットワーク量子化装置10とは別個の独立したデバイスとして具現される。しかし、これに制限されず、ハードウェアアクセラレータは、ニューラルネットワーク量子化装置10と同じ装置内に具現されてもよい。
図5は、浮動小数点と固定小数点とを説明するための図面である。図5の浮動小数点例示510を参照すれば、浮動小数点値は、a×2の形式で表現され、ここで、aは、仮数部(fraction part)、bは、指数部(exponent)に該当する。浮動小数点値は、1ビットの符号ビット、8ビットの指数部ビット及び23ビットの仮数部ビットを含む32ビットで表現される。
次いで、固定小数点例示520を参照すれば、固定小数点は、「Qm.n」で表現される(m、nは、自然数)。ここで、「m」は、指数部を示すビット数、「n」は、小数部を示すビット数である。したがって、固定小数点のビット幅(bit width)は、符号1ビット、指数部mビット及び小数部nビットを合わせて、1+m+nである。固定小数点ビットのうち、小数部を示すビットは、nビットなので、フラクション長(fractional length)は、nである。例えば、「Q3.4」は、符号1ビット、指数部3ビット及び仮数部4ビットを有する総8ビットの固定小数点値であり、「Q1.30」は、符号1ビット、指数部1ビット及び仮数部30ビットを有する総32ビットの固定小数点値であり、「Q15.16」は、符号1ビット、指数部15ビット及び仮数部16ビットを有する総32ビットの固定小数点値である。
図6は、固定小数点においてフラクション長と精度との関係を説明するための図面である。図6を参照すれば、固定小数点に割り当てられた総ビット幅は、3ビットであると仮定して、フラクション長が0であるQ2.0の固定小数点表現610とフラクション長が1であるQ1.1の固定小数点表現620の比較が説明されている。
Q2.0は、指数部が2ビットであり、小数部が0ビットであるので、-4から3までの固定小数点値が表現され、表現可能な固定小数点値の間隔は、1である。そして、Q1.1は、指数部が1ビットであり、小数部が1ビットであるので、-2から1.5までの固定小数点値が表現され、表現可能な固定小数点値の間隔は、0.5である。
比較して見れば、Q2.0の固定小数点表現610とQ1.1の固定小数点表現620は、同じ3ビットが割り当てられたが、Q2.0は、さらに広い範囲の固定小数点値の表現が可能な代わりに、固定小数点値間の間隔が広いので、精度は低い。相対的に、Q1.1は、さらに狭い範囲の固定小数点値の表現が可能な代わりに、固定小数点値間の間隔が狭いので、精度は高い。つまり、固定小数点値の精度は、フラクション長、すなわちフラクションビットの割当個数に依存するという点が分かる。
図7は、一実施形態によるニューラルネットワークの学習を説明するための図面である。図7を参照すれば、ニューラルネットワーク710は、入力レイヤ、N個(Nは、自然数)のレイヤ(レイヤ1、レイヤ2,...,レイヤN-1及びレイヤN)及び出力レイヤを含んでもよい。ここで、N個のレイヤそれぞれについては、当該レイヤに対応するウェイトが割り当てられている。すなわち、レイヤ1には、ウェイト1 Wが割り当てられ、レイヤ2には、ウェイト2 Wが割り当てられ、...、レイヤN-1には、ウェイトN-1 WN-1が割り当てられ、レイヤNには、ウェイトN Wが割り当てられる。前述の図2などでは、レイヤには、複数のチャネルが備えられると説明された。図7で説明された各レイヤに割り当てられたウェイトは、各レイヤに含まれた1つ以上のチャネルのウェイトを代表する値に該当する。
一方、本明細書の実施形態において、ニューラルネットワークのレイヤの識別番号は、当該図面内で個々のレイヤを区別するための手段であり、本明細書の実施形態は、レイヤ識別番号によって制限解釈されない。したがって、互いに異なる図面において同じ識別番号で表示されているレイヤであっても、これは、説明の便宜上、表示されたものに過ぎず、同じレイヤを指すか、あるいは他のレイヤを指す。
プロセッサ(図3の110)は、ニューラルネットワーク710に対して複数のサイクル(例えば、Kサイクル)(Kは、自然数)の順方向(feedforward)学習及び逆伝播(backpropagation)学習を繰り返して行う。
ニューラルネットワーク710は、順方向学習を通じてニューラルネットワーク710の認識精度または認識率(recognition rate)を求め、逆伝播学習を通じてニューラルネットワーク710の誤差を各レイヤに伝える。ここで、ニューラルネットワーク710の誤差は、各レイヤに含まれたバイアス、ウェイトなどに係わる誤差を意味する。したがって、繰り返したサイクル(サイクル1ないしサイクルK)の順方向及び逆伝播学習を通じてレイヤの誤差が補正されるので、ニューラルネットワーク710の認識精度または認識率が上昇する。
本実施形態によるニューラルネットワーク量子化は、かように学習されたニューラルネットワーク710のレイヤ(すなわち、レイヤのパラメータ)を低い精度で量子化するものである。例えば、ニューラルネットワーク710が32ビット精度の浮動小数点を有するモデルである場合、学習されたニューラルネットワークも32ビット精度の浮動小数点を有するモデルに該当する。ニューラルネットワーク展開のために、32ビット精度の浮動小数点を有するニューラルネットワーク710は、16ビット、8ビットまたはそれ以下ビット数の固定小数点を有するニューラルネットワークに量子化される必要がある。この際、ニューラルネットワークが量子化されるとしても、精度損失を最小化しつつ、さらに効率よく動作せねばならない。以下、ニューラルネットワーク量子化プロセスでニューラルネットワーク内の数多くのレイヤに対する量子化が行われる方法について具体的に説明する。
図8Aは、一実施形態によってニューラルネットワークの逆伝播学習によって更新されたウェイトを説明するための図面である。図8Aを参照すれば、レイヤ別初期ウェイトに係わる表810と逆伝播学習によって更新された、レイヤ別更新ウェイトに係わる表820が示されている。
図7と係わって説明すれば、学習前初期ニューラルネットワーク(図7の710)は、レイヤ1ないしレイヤNを含む。表810によれば、レイヤ1は、ウェイト1 Wを有し、レイヤ2は、ウェイト2 Wを有し,...,レイヤN-1は、ウェイトN-1 WN-1を有し、レイヤNは、ウェイトN Wを有する。
プロセッサ(図3の110)がニューラルネットワーク710を複数のサイクルだけ繰り返して学習し、その結果、プロセッサ110は、各サイクルの逆伝播学習による更新ウェイトを決定する。
表820によれば、サイクル1の逆伝播学習が行われた結果、レイヤ1の更新ウェイトは、W1[1]と決定され、レイヤ2の更新ウェイトは、W2[2]と決定され,...,レイヤN-1のウェイトは、WN-1[1]と決定され、レイヤNのウェイトは、WN[1]と決定される。同様に、プロセッサ110は、残りの各サイクルでの逆伝播学習が行われた結果、各レイヤの更新ウェイトを決定する。
図8Bは、一実施形態によるレイヤ別ウェイト差(weight difference)を説明するための図面である。
ウェイト差 Wdiffは、学習前ニューラルネットワークの各レイヤごとに既設定の初期ウェイト及び各レイヤごとに各サイクルでの逆伝播学習によって決定された更新ウェイト間の差値を意味する。
具体的に、図8Bを参照すれば、ウェイト差Wdiffに係わる表830が示されている。例えば、レイヤ1について説明すれば、サイクル1の学習が行われた場合、レイヤ1の更新ウェイトW1[1]とレイヤ1の初期ウェイトWとの差がレイヤ1のサイクル1の学習結果として獲得されたウェイト差に該当する。同様に、プロセッサ(図3の110)は、残りのレイヤ及び残りのサイクルでのウェイト差を獲得する。
図8Cは、一実施形態によるレイヤそれぞれに対するウェイト差の統計量を分析した結果を説明するための図面である。
ニューラルネットワーク量子化において、レイヤのウェイト差Wdiffの統計量を示す値が小さいほど、さらに低いビット精度(lower-bit precision)に量子化することができる。ここで、レイヤのウェイト差Wdiffの統計量は、レイヤ別全体サイクルでのウェイト差の平均二乗(mean square)を含むが、これに制限されず、平均、分散、標準偏差のような他種の統計量であってもよい。
図8Cを参照すれば、各レイヤ別ウェイト差Wdiffの統計量を分析することについて示されている。具体的に、レイヤ1について説明すれば、プロセッサ110は、サイクル1におけるウェイト差の二乗(W1[1]-W、サイクル2におけるウェイト差の二乗(W1[2]-W,...,サイクルKにおけるウェイト差の二乗(W1[K]-Wの平均を計算することで、レイヤ1のウェイト差に係わる統計量(すなわち、平均二乗)であるWdiff_m.s._layer1を求める。同様に、プロセッサ110は、他のサイクルのウェイト差に係わる統計量(すなわち、平均二乗)を求める。
かようなレイヤ別ウェイト差統計量は、ニューラルネットワーク量子化において、どのレイヤを、より低ビットの精度(「下位ビット精度」と称する)に量子化するかを判断及び選択するのに用いられる。
図9は、一実施形態によってウェイト差統計量に基づいてレイヤを整列(ソート)することを説明するための図面である。図9を参照すれば、プロセッサ(図3の110)は、下位ビット精度で量子化するレイヤを判断するために、各レイヤに対応するウェイト差統計量(例えば、平均二乗)の大きさ順にニューラルネットワークのレイヤを整列することができる。すなわち、プロセッサ110は、図8Cのように分析された各レイヤ別ウェイト差統計量であるWdiff_m.s._layer1、Wdiff_m.s._layer2,...,Wdiff_m.s._layerNの大きさに基づいてレイヤを大きさ順に整列することができる。ここで、整列方式は、昇順及び降順のうち、いずれでも関係ない。
図9では、N個(Nは、自然数)のレイヤがウェイト差統計量(例えば、平均二乗)の大きさ順に昇順ソートされたことが示されているが、各レイヤの識別番号は、説明の便宜上、任意に表示されただけで、本実施形態は、その限りではない。
一方、プロセッサ110は、下位ビット精度に量子化されるレイヤ選択のために、図9で説明されたようにレイヤを先に整列してもよいが、これに制限されず、プロセッサ110は、レイヤ整列なしにウェイト差統計量(例えば、平均二乗)を基準に特定条件を満足するレイヤを選別してもよい。
図10は、一実施形態によって整列されたレイヤのうち、下位ビット精度で量子化するレイヤを選択することを説明するための図面である。図10を参照すれば、プロセッサ(図3の110)は、整列された全体レイヤのうち、分析されたウェイト差統計量の大きさが、相対的に小さいレイヤ(レイヤ100、レイヤ90,...,レイヤ40)を量子化される1つ以上のレイヤとして決定する。ここで、ウェイト差統計量の大きさが相対的に小さいレイヤを選択する方法については、図11、図12で具体的に説明する。
一方、プロセッサ110は、分析された統計量の大きさが最も小さいレイヤ(レイヤ100)に対しては、量子化される1つ以上のレイヤとして決定しないことがある。これは、分析された統計量の大きさが最も小さいレイヤ(レイヤ100)が下位ビット精度で量子化される場合に、表現可能なクラス個数が減少することがあるためである。しかし、これに制限されず、プロセッサ110は、分析された統計量の大きさが最も小さいレイヤ(レイヤ100)を含んで量子化することもできる。
図10において整列されたレイヤは、いずれも量子化されたニューラルネットワークのレイヤに該当する。この際、下位ビット精度で量子化されたレイヤは、「Aビット精度」(Aは、自然数)で量子化されたレイヤであり、残りのレイヤは、「Bビット精度」(Bは、自然数)で量子化されたレイヤであってもよい。ここで、Aビット精度は、Bビット精度よりも低い精度である。すなわち、本実施形態において下位ビット精度で量子化されたレイヤは、量子化された全体レイヤのうち、最も低い精度を有するレイヤに該当するが、その限りではない。
レイヤの量子化は、前述したように、レイヤに含まれたパラメータ(バイアス、ウェイトなど)の量子化であって、固定小数点パラメータのフラクション長を決定するか、または変更することを意味することができる。
以下では、全体レイヤ(または、整列された全体レイヤ)のうち、下位ビット精度で量子化されるレイヤを判断及び選択する方法について説明する。
図11は、一実施形態によって下位ビット精度で量子化されるレイヤを判断する方法を説明するためのフローチャートである。
1101段階において、プロセッサ(図3の110)は、図8Aないし図8Cのように分析されたウェイト差統計量(例えば、平均二乗)に基づいてニューラルネットワークのレイヤを整列する。すなわち、プロセッサ110は、ウェイト差統計量(例えば、平均二乗)の大きさ順にレイヤを昇順または降順で整列する。
1102段階において、プロセッサ110は、整列された全体レイヤのうち、下位統計量を有する半分のレイヤを下位ビット精度で量子化される候補レイヤとして選択する。
1103段階において、プロセッサ110は、選択された候補レイヤが量子化されたとき、量子化されたニューラルネットワークの精度損失(accuracy loss)が所定閾値以下であるか否かを判断する。もし、精度損失が所定閾値以下である場合、プロセッサ110は、1105段階を行う。しかし、精度損失が所定閾値よりも大きい場合、プロセッサ110は、1104段階を行う。
1104段階において、選択された候補レイヤが量子化されたとき、量子化されたニューラルネットワークの精度損失が所定閾値よりも大きいので、プロセッサ110は、下位ビット精度で量子化される候補レイヤの個数を再び判断する必要がある。したがって、プロセッサ110は、1103段階で選択された候補レイヤを、全体レイヤで更新する。これにより、1102段階において、プロセッサ110は、更新された(以前の1102段階での半分)全体レイヤのうち、再び候補レイヤの個数を判断することができる。
1105段階において、選択された候補レイヤが量子化されたとき、量子化されたニューラルネットワークの精度損失が所定閾値以下なので、プロセッサ110は、選択された候補レイヤを下位ビット精度で量子化されるレイヤとして決定する。
1106段階において、プロセッサ110は、決定されたレイヤを下位ビット精度で量子化することで、量子化されたニューラルネットワークを生成する。
図11を参照すれば、下位ビット精度で量子化されるレイヤを判断する一実施形態として、二進探索(binary search)アルゴリズムについて説明されている。すなわち、一実施形態によれば、プロセッサ(図3の110)は、二進探索アルゴリズムを用いて、整列されたレイヤのうち、幾つかのレイヤがAビット(lower-bit)精度で量子化されたレイヤを含むニューラルネットワークの精度損失(accuracy loss)がAビット精度で量子化されていないレイヤを含むニューラルネットワークと比較して、所定閾値以内であるか否かを探索することで、量子化される1つ以上のレイヤを決定することができる。
一方、たとえ図11には示されていないにしても、1103段階において、精度損失が所定閾値よりも大きい場合であるとしても、候補レイヤの個数がユーザによって予め定義された所定数(例えば、5個)以下であるか否かを判断する段階がオプション的に(optional)追加されてもよい。かようなオプション的段階が追加されたならば、プロセッサ110は、精度損失が所定閾値よりも大きい場合であるとしても、候補レイヤの個数がユーザによって予め定義された所定数(例えば、5個)以下であると判断された場合、1105段階を行うことができる。
図12は、他の実施形態によって下位ビット精度で量子化されるレイヤを判断する方法を説明するためのフローチャートである。
1201段階において、プロセッサ(図3の110)は、下位ビット精度で量子化するレイヤ数を予め設定する。
1202段階において、プロセッサ(図3の110)は、図8Aないし図8Cのように分析されたウェイト差統計量(例えば、平均二乗)に基づいてニューラルネットワークのレイヤを整列する。すなわち、プロセッサ110は、ウェイト差統計量(例えば、平均二乗)の大きさ順にレイヤを昇順または降順で整列する。
1203段階において、プロセッサ110は、整列された全体レイヤのうち、下位統計量を有する既設定の所定数のレイヤを量子化されるレイヤとして決定する。
1204段階において、プロセッサ110は、決定されたレイヤを下位ビット精度で量子化することで、量子化されたニューラルネットワークを生成する。
図12を参照すれば、図11の二進探索アルゴリズムを用いた方法と異なって、プロセッサ(図3の110)は、整列されたレイヤのうち、分析された統計量の大きさが小さい順に既設定の所定数のレイヤを下位ビット精度で量子化される1つ以上のレイヤとして決定する。
図11及び図12では、図8Aないし図8Cで説明されたレイヤ別ウェイト差統計量(例えば、平均二乗)に基づいて下位ビット精度で量子化されるレイヤを選択する方法の実施形態について説明された。しかし、本実施形態は、これに制限されず、ウェイト差統計量を異なって変形された方式で用いて下位統計量を有するレイヤを選択することで、下位ビット精度で量子化されるレイヤを決定する方法も本実施形態に適用される。
図13は、一実施形態によって浮動小数点パラメータのレイヤを含むニューラルネットワークから固定小数点パラメータのレイヤを含むニューラルネットワークに量子化することを説明するための図面である。
図13を参照すれば、ニューラルネットワーク1301は、32ビット浮動小数点パラメータのN個のレイヤを含む。プロセッサ(図3の110)は、ニューラルネットワーク1301の順方向及び逆伝播学習を通じて、レイヤ別ウェイト差統計量を分析し、分析されたウェイト差統計量に基づいてレイヤのうち、32ビット精度よりも低い「Aビット精度」で量子化される1つ以上のレイヤ1315を決定するプロセス1310を行う。これにより、ニューラルネットワーク1301の全体レイヤのうち、決定された一部レイヤ1315は、Aビット精度で量子化される。
プロセッサ110は、ニューラルネットワーク1301の全体レイヤのうち、Aビット精度で量子化されると決定されていない残りのレイヤ1325を、32ビット精度よりは低く、Aビット精度よりは高い「Bビット精度」の固定小数点パラメータのレイヤに量子化するプロセス1320を行う。
プロセッサ110は、ニューラルネットワーク1301の全体レイヤに対する量子化されるビット精度が決定されると、各レイヤを当該ビット精度で量子化するプロセス1330を行うことで、量子化されたニューラルネットワーク1302を生成する。量子化されたニューラルネットワーク1302は、Aビット精度の固定小数点パラメータを有するレイヤ1315とBビット精度の固定小数点パラメータを有するレイヤ1325とを含む。
図14は、他の実施形態によって浮動小数点パラメータのレイヤを含むニューラルネットワークから固定小数点パラメータのレイヤを含むニューラルネットワークに量子化することを説明するための図面である。
図14を参照すれば、ニューラルネットワーク1401は、32ビット浮動小数点パラメータのN個のレイヤを含む。ニューラルネットワーク1402は、ニューラルネットワーク1401から量子化された、8ビット固定小数点パラメータのN個のレイヤを有するニューラルネットワークである。
プロセッサ(図3の110)は、8ビット精度で量子化されたニューラルネットワーク1402の順方向及び逆伝播学習を通じて、レイヤ別ウェイト差統計量を分析し、分析されたウェイト差統計量に基づいてレイヤのうち、8ビット精度よりも低い「Aビット精度」に量子化される1つ以上のレイヤ1410を決定する。これにより、ニューラルネットワーク1402の全体レイヤのうち、決定された一部レイヤ1410は、Aビット精度で量子化される。
最終的に、ニューラルネットワーク1401は、Aビット精度の固定小数点パラメータを有するレイヤ1410と8ビット精度の固定小数点パラメータを有する残りのレイヤを含むニューラルネットワークに量子化される。
一方、図13及び図14で説明されたニューラルネットワークのビット精度数値(32ビット、8ビット)は、説明の便宜のための一例であって、実施形態は、その限りではない。
図15は、一実施形態による量子化されたニューラルネットワークを説明するための図面である。図15を参照すれば、量子化されたニューラルネットワーク1501は、4ビット精度(lower-bit precision)を有するレイヤと8ビット精度を有するレイヤとを含む。ここで、4ビット精度を有するレイヤは、下位ビット精度を有するレイヤであって、前述した図面で説明された順方向及び逆伝播学習を通じてレイヤ別ウェイト差統計量を分析し、分析されたウェイト差統計量に基づいて決定されたレイヤに該当する。4ビット精度を有するレイヤの個数は、前述したように、ニューラルネットワーク1501の精度損失を最小化するように決定されうる。
一方、図15に示された識別番号は、説明の便宜上、任意に定義されたものであって、実施形態は、その限りではない。
図16は、一実施形態によって下位ビット精度で量子化されたレイヤ数と精度損失との相関関係を例示的に説明するためのグラフである。精度損失は、ニューラルネットワークの認識率(recognition rate)に係わるものでもある。
図16を参照すれば、インセプションv3(Inception v3)に対するシミュレーション結果であって、インセプションv3でウェイトを有する全てのレイヤのうち、下位ウェイト差統計量(平均二乗)を有する一部レイヤを下位ビット精度で量子化した場合に対する精度損失の相関関係が示されている。具体的に、下位ウェイト差統計量(平均二乗)を有する一部レイヤは、4ビット精度で量子化され、残りのレイヤは、8ビット精度を有する。
下位ビット精度で量子化されるレイヤ数が増加するほど精度損失は増加することが分かる。これは、当然ながら、量子化されたレイヤ数が多いほどさらに多くのパラメータのデータ損失が大きくなるからである。しかし、8ビット精度を有する全体95個のレイヤのうち、25個レイヤのみ下位ビット(4ビット)精度で追加的に量子化された場合には、そうではない場合よりも精度損失が1%レベルに過ぎない。したがって、かような場合、精度損失は、1%レベルに過ぎないが、プロセッサ110のニューラルネットワークに対する演算量が減少しつつ、処理速度をさらに効果的に増加させうる利点がある。したがって、精度損失に耐えられるレベルで一部レイヤを下位ビット精度で量子化するならば、ニューラルネットワークの高い認識精度(または認識率)を確保しつつ、ニューラルネットワークが展開されるデバイスにおける効率的な演算量及び処理速度を保証可能となる。
図17は、一実施形態によって下位ビット精度で量子化されるレイヤを判断するための基準としてウェイト差統計量を用いる場合と異なる方式を用いる場合とを比較して説明するための図面である。
図17を参照すれば、下位ビット精度で量子化されるレイヤを判断するための基準として、ウェイト範囲(weight range)を用いる場合(1701)、精度を用いる場合(1702)及びウェイト差の平均二乗を用いる場合(1703)を比べた結果が示されている。
ウェイト範囲を用いる場合(1701)は、レイヤ別ウェイト範囲を昇順で整列した後、ウェイト範囲の小さい一部レイヤを下位ビット(4ビット)精度で量子化する方式である。しかし、図17に示されたように、他の場合(1702、1703)と比べてウェイト範囲を用いる場合(1701)は、精度損失が非常に大きいということが分かる。これは、ウェイト範囲が小さいほど表現されるウェイト値が少なくなるので、低いビット精度で表現が可能であるが、ウェイト範囲が小さいとしても、ウェイトの最大値が大きければ、当該ウェイトを表現するための整数ビット(integer bit)が大きくならねばならないからである。
次いで、精度を用いる場合(1702)は、ニューラルネットワークの各レイヤを1つずつ下位ビット(4ビット)精度で量子化し、そのときの認識精度(または認識率)を計算し、精度損失が低い順に下位ビット精度で量子化されるレイヤを決定する方式である。図17に示されたように、精度を用いる場合(1702)に対する精度損失は、ウェイト差の平均二乗を用いる場合(1703)と類似している。しかし、そうであるとしても、精度を用いる場合(1702)は、ニューラルネットワークに含まれた全てのレイヤを順に量子化しつつ、精度損失をいちいち計算せねばならないので、処理時間が非常に長くなるという問題がある。
上の場合(1701、1702)と異なって、ウェイト差の平均二乗を用いる場合(1703)は、精度損失が大きくなく、かつさらに速い処理速度及び少ない演算量で下位ビット精度で量子化されるレイヤ数を判断することができる。
図18は、一実施形態による電子システムを示すブロック図である。図18を参照すれば、電子システム1800は、ニューラルネットワークに基づいて入力データをリアルタイムで分析して有効な情報を抽出し、抽出された情報に基づいて状況判断を行うか、または電子システム1800が搭載される電子デバイスの構成を制御することができる。例えば、電子システム1800は、ドローン(drone)、先進運転支援システム(Advanced Drivers Assistance Systemと、ADAS)のようなロボット装置、スマートTV、スマートフォン、医療デバイス、モバイルデバイス、映像表示デバイス、計測デバイス、IoTデバイスなどに適用され、その他にも多様な種類の電子デバイスのうち少なくとも1つに搭載されうる。
電子システム1800は、プロセッサ1810、RAM1820、ニューラルネットワーク装置1830、メモリ1840、センサーモジュール1850、通信モジュール1860、及び入出力モジュール1870を含む。電子システム1800は、セキュリティモジュール、電力制御装置などをさらに含む。電子システム1800のハードウェア構成のうち、一部は少なくとも1つの半導体チップに搭載される。ニューラルネットワーク装置1830は、前述されたニューラルネットワーク専用ハードウェアアクセラレータ自体またはこれを含む装置であるとしうる。
プロセッサ1810は、電子システム1800の全般的な動作を制御する。プロセッサ1810は、1つのプロセッサコア(Single Core)を含むか、複数のプロセッサコア(Multi-Core)を含んでもよい。プロセッサ1810は、メモリ1840に保存されたプログラム及び/またはデータを処理または実行することができる。一実施形態において、プロセッサ1810は、メモリ1840に保存されたプログラムを実行することで、ニューラルネットワーク装置1830の機能を制御することができる。プロセッサ1810は、CPU、GPU、APなどとして具現される。
RAM1820は、プログラム、データ、または命令(instructions)を一時的に保存する。例えば、メモリ1840に保存されたプログラム及び/またはデータは、プロセッサ1810の制御またはブーティングコードによってRAM1820に一時的に保存される。RAM1820は、DRAM(Dynamic RAM)またはSRAM(Static RAM)などのメモリとして具現される。
ニューラルネットワーク装置1830は、ニューラルネットワークに対する学習を行うか、受信される入力データに基づいてニューラルネットワークの演算を行い、遂行結果に基づいて情報信号を生成する。ニューラルネットワークは、Convolutional Neural Networks(CNN)、Recurrent Neural Networks(RNN)、Deep Belief Networks、Restricted Boltzman Machinesなどを含むが、これに制限されない。
具体的に、ニューラルネットワーク装置1830は、ニューラルネットワークを生成するか、ニューラルネットワークを学習(learn)(または訓練(train))するか、浮動小数点(floating point)タイプのニューラルネットワークを固定小数点(fixed point)タイプのニューラルネットワークに量子化するか、またはニューラルネットワークを再訓練(retrain)する機能のような多様なプロセッシング機能を有する。すなわち、ニューラルネットワーク装置1830は、ニューラルネットワークを学習しつつ、前述された固定小数点タイプで量子化されたニューラルネットワークを用いて処理を行うハードウェアであって、前述されたニューラルネットワーク専用ハードウェアアクセラレータに該当される。
情報信号は、音声認識信号、事物認識信号、映像認識信号、生体情報認識信号のような多様な種類の認識信号のうち、1つを含みうる。例えば、ニューラルネットワーク装置1830は、ビデオストリームに含まれるフレームデータを入力データとして受信し、フレームデータからフレームデータが示すイメージに含まれた事物に係わる認識信号を生成することができる。しかし、これに制限されるものではなく、電子システム1800が搭載された電子装置の種類または機能によって、ニューラルネットワーク装置1830は、多様な種類の入力データを受信し、入力データによる認識信号を生成することができる。
メモリ1840は、データを保存するための保存場所であって、OS(Operating System)、各種プログラム、及び各種データを保存することができる。実施形態において、メモリ1840は、ニューラルネットワーク装置1830の演算遂行過程で生成される中間結果、例えば、出力フィーチャマップを出力フィーチャリストまたは出力フィーチャマトリックス状に保存することができる。実施形態において、メモリ1840には、圧縮された出力フィーチャマップが保存される。また、メモリ1840は、ニューラルネットワーク装置1830で用いられる量子化されたニューラルネットワークデータ、例えば、パラメータ、ウェイトマップ、またはウェイトリストを保存することができる。
メモリ1840は、DRAMであるとしうるが、これに限定されるものではない。メモリ1840は、揮発性メモリまたは不揮発性メモリのうち少なくとも1つを含みうる。不揮発性メモリは、ROM、PROM、EPROM、EEPROM、フラッシュメモリ、PRAM、MRAM、RRAM、FRAMなどを含む。揮発性メモリは、DRAM、SRAM、SDRAMなどを含む。実施形態において、メモリ1840は、HDD、SSD、CF、SD、Micro-SD、Mini-SD、xDまたはMemory Stickのうち少なくとも1つを含んでもよい。
センサーモジュール1850は、電子システム1800が搭載される電子装置周辺の情報を収集することができる。センサーモジュール1850は、電子装置の外部から信号(例えば、映像信号、音声信号、磁気信号、生体信号、タッチ信号など)をセンシングまたは受信し、センシングまたは受信された信号をデータに変換することができる。そのために、センサーモジュール1850は、センシング装置、例えば、マイク、撮像装置、イメージセンサー、LIDAR(light detection and ranging)センサー、超音波センサー、赤外線センサー、バイオセンサー、及びタッチセンサーなど多様な種類のセンシング装置のうち少なくとも1つを含みうる。
センサーモジュール1850は、変換されたデータをニューラルネットワーク装置1830に入力データとして提供することができる。例えば、センサーモジュール1850は、イメージセンサーを含み、電子装置の外部環境を撮影してビデオストリームを生成し、ビデオストリームの連続するデータフレームをニューラルネットワーク装置1830に入力データとして順次に提供することができる。しかし、これに制限されるものではなく、センサーモジュール1850は、多様な種類のデータをニューラルネットワーク装置1830に提供することができる。
通信モジュール1860は、外部装置と通信可能な多様な有線または無線インターフェースを備えることができる。例えば、通信モジュール1860は、有線ローカルエリアネットワーク(Local Area Network;LAN)、Wi-fi(Wireless Fidelity)のような無線ローカルエリアネットワーク(Wireless Local Area Network;WLAN)、ブルートゥース(登録商標(Bluetooth))のような無線パーソナルエリアネットワーク(Wireless Personal Area Network;WPAN)、無線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)に接続可能な通信インターフェースなどを含んでもよい。
他の実施形態において、通信モジュール1860は、外部から量子化されたニューラルネットワークに係わるデータを受信することができる。ここで、外部は、図3のニューラルネットワーク量子化装置10のように膨大な量のデータに基づいて訓練を行い、訓練されたニューラルネットワークを固定小数点タイプに量子化し、量子化されたニューラルネットワークデータを電子システム1800に提供するデバイスであってもよい。受信された量子化されたニューラルネットワークデータは、メモリ1840に保存される。
図19は、一実施形態によるニューラルネットワーク量子化のための方法のフローチャートである。図19に示された、ニューラルネットワーク量子化方法は、前述した図面の説明の実施形態に係わるものなので、以下省略されても、以上の図面で説明された内容は、図19の方法にも適用される。
1901段階において、プロセッサ110は、第1ビット精度の第1ニューラルネットワークに対して、複数のサイクルの順方向(feedforward)及び逆伝播(backpropagation)学習を繰り返して行う。
1902段階において、プロセッサ110は、第1ニューラルネットワークに含まれたレイヤそれぞれに対して、既設定の初期ウェイト及び各サイクルの逆伝播学習によって決定された更新ウェイト間のウェイト差(weight differences)を獲得する。
1903段階において、プロセッサ110は、レイヤそれぞれに対するウェイト差の統計量を分析する。
1904段階において、プロセッサ110は、分析された統計量に基づいて、レイヤのうち、第1ビット精度よりも低い第2ビット精度で量子化される1つ以上のレイヤを決定する。
1905段階において、プロセッサ110は、レイヤのうち、決定されたレイヤを第2ビット精度で量子化することで、量子化されたレイヤを含む第2ニューラルネットワークを生成する。
一方、上述した実施形態は、コンピュータで実行されるプログラムで作成可能であり、コンピュータで読み取り可能な記録媒体を用いて前記プログラムを動作させる汎用デジタルコンピュータで具現される。また、上述した実施形態で使用されたデータの構造は、コンピュータで読み取り可能な記録媒体に多くの手段を通じて記録される。前記コンピュータで読み取り可能な記録媒体は、マグネチック記録媒体(例えば、ROM(Read Only Memory)、フロッピーディスク、ハードディスクなど)、光学的判読媒体(例えば、CD-ROM、DVDなど)のような記録媒体を含む。
本実施形態に係わる技術分野で通常の知識を有する者は、前記記載の本質的な特性から外れない範囲で実施形態が変形された形態として具現されることを理解できるであろう。したがって、開示された実施形態は、限定的な観点ではなく説明的な観点で考慮されねばならない。権利範囲は、前述した説明ではなく、特許請求の範囲に示されており、それと同等な範囲内にある全ての相違点は、本実施形態に含まれたものと解釈されねばならない。
本発明のニューラルネットワーク量子化のための方法及び装置は、データ分析関連の技術分野に効果的に適用可能である。
1 ニューラルネットワーク
10 ニューラルネットワーク量子化装置
110 プロセッサ
120 メモリ

Claims (17)

  1. プロセッサが実行する、ニューラルネットワーク量子化のための方法において、
    第1ビット精度の第1ニューラルネットワークについて、複数のサイクルの順方向(feedforward)及び逆伝播(backpropagation)学習を繰り返して行う段階と、
    前記第1ニューラルネットワークに含まれたレイヤそれぞれに対して、既設定の初期ウェイトと各サイクルの前記逆伝播学習によって決定された更新ウェイトとの間のウェイト差(weight differences)を獲得する段階と、
    前記レイヤそれぞれに対する前記ウェイト差の統計量を分析する段階と、
    前記分析された統計量の大きさ順に前記レイヤを整列(sort)する段階と、
    前記分析された統計量に基づいて、前記レイヤのうち、前記第1ビット精度よりも低い第2ビット精度で量子化される1つ以上のレイヤを決定する段階であり、前記整列されたレイヤのうち、前記分析された統計量の大きさが相対的に小さいレイヤを前記量子化される1つ以上のレイヤとして決定する、段階と、
    前記レイヤのうち、前記決定されたレイヤを前記第2ビット精度で量子化することで、量子化されたレイヤを含む第2ニューラルネットワークを生成する段階と、を含む、方法。
  2. 前記統計量は、
    前記レイヤそれぞれに対する前記ウェイト差の平均二乗(mean square)を含む、請求項1に記載の方法。
  3. 前記決定する段階は、
    二進探索(binary search)アルゴリズムを用いて、前記整列されたレイヤのうち、幾つかのレイヤが、前記第2ビット精度で量子化されたとき、前記第2ニューラルネットワークの精度損失(accuracy loss)が、前記第1ニューラルネットワークと比較して所定閾値以内であるか否かを探索することで、前記量子化される1つ以上のレイヤを決定する、請求項に記載の方法。
  4. 前記精度損失は、
    ニューラルネットワークの認識率(recognition rate)に係わるものである、請求項に記載の方法。
  5. 前記決定する段階は、
    前記整列されたレイヤのうち、前記分析された統計量の大きさが小さい順に既設定の所定数のレイヤを前記量子化される1つ以上のレイヤとして決定する、請求項に記載の方法。
  6. 前記決定する段階は、
    前記整列されたレイヤのうち、前記分析された統計量の大きさが最も小さいレイヤに対しては、前記量子化される1つ以上のレイヤとして決定しない、請求項に記載の方法。
  7. プロセッサが実行する、ニューラルネットワーク量子化のための方法において、
    第1ビット精度の第1ニューラルネットワークについて、複数のサイクルの順方向(feedforward)及び逆伝播(backpropagation)学習を繰り返して行う段階と、
    前記第1ニューラルネットワークに含まれたレイヤそれぞれに対して、既設定の初期ウェイトと各サイクルの前記逆伝播学習によって決定された更新ウェイトとの間のウェイト差(weight differences)を獲得する段階と、
    前記レイヤそれぞれに対する前記ウェイト差の統計量を分析する段階と、
    前記分析された統計量に基づいて、前記レイヤのうち、前記第1ビット精度よりも低い第2ビット精度で量子化される1つ以上のレイヤを決定する段階と、
    前記レイヤのうち、前記決定されたレイヤを前記第2ビット精度で量子化することで、量子化されたレイヤを含む第2ニューラルネットワークを生成する段階と、を含み、
    前記第1ニューラルネットワークは、
    前記第1ビット精度よりも高い第3ビット精度の浮動小数点(floating point)パラメータのレイヤを有する第3ニューラルネットワークから量子化された、前記第1ビット精度の固定小数点(fixed point)パラメータのレイヤを有するニューラルネットワークに該当し、
    前記第2ニューラルネットワークは、
    前記レイヤのうち、前記決定されたレイヤは、前記第2ビット精度の固定小数点パラメータを有し、残りのレイヤは、前記第1ビット精度の前記固定小数点パラメータを有する、方法。
  8. 前記第1ニューラルネットワークが前記第1ビット精度の浮動小数点パラメータのレイヤを有するニューラルネットワークに該当する場合、前記レイヤのうち、前記決定されていない残りのレイヤを、前記第1ビット精度より低く、前記第2ビット精度よりは高い、第4ビット精度の固定小数点パラメータのレイヤに量子化する段階をさらに含み、
    前記第2ニューラルネットワークは、
    前記レイヤのうち、前記決定されたレイヤは、前記第2ビット精度の固定小数点パラメータを有し、前記残りのレイヤは、前記第4ビット精度の固定小数点パラメータを有する、請求項1に記載の方法。
  9. 請求項1~のうちいずれか1項に記載の方法をコンピュータで実行させるためのプログラムを記録したコンピュータ読み取り可能記録媒体。
  10. ニューラルネットワーク量子化のための装置において、
    少なくとも1つのプログラムが保存されたメモリと、
    前記少なくとも1つのプログラムを実行することで、ニューラルネットワーク量子化を行うプロセッサと、を含み、
    前記プロセッサは、
    第1ビット精度の第1ニューラルネットワークに対して、複数のサイクルの順方向及び逆伝播学習を繰り返して行い、
    前記第1ニューラルネットワークに含まれたレイヤそれぞれに対して、既設定の初期ウェイトと各サイクルの前記逆伝播学習によって決定された更新ウェイトとの間のウェイト差を獲得し、
    前記レイヤそれぞれに対する前記ウェイト差の統計量を分析し、
    前記分析された統計量の大きさ順に前記レイヤを整列し、
    前記分析された統計量に基づいて、前記レイヤのうち、前記第1ビット精度よりも低い第2ビット精度で量子化される1つ以上のレイヤを決定し、当該決定は、前記整列されたレイヤのうち、前記分析された統計量の大きさが相対的に小さいレイヤを前記量子化される1つ以上のレイヤとして決定することを有し、
    前記レイヤのうち、前記決定されたレイヤを前記第2ビット精度で量子化することで、量子化されたレイヤを含む第2ニューラルネットワークを生成する、装置。
  11. 前記統計量は、
    前記レイヤそれぞれに対する前記ウェイト差の平均二乗を含む、請求項10に記載の装置。
  12. 前記プロセッサは、
    二進探索アルゴリズムを用いて、前記整列されたレイヤのうち、幾つかのレイヤが前記第2ビット精度で量子化されたとき、前記第2ニューラルネットワークの精度損失が前記第1ニューラルネットワークと比較して所定閾値以内であるか否かを探索することで、前記量子化される1つ以上のレイヤを決定する、請求項10に記載の装置。
  13. 前記精度損失は、
    ニューラルネットワークの認識率(recognition rate)に係わるものである、請求項12に記載の装置。
  14. 前記プロセッサは、
    前記整列されたレイヤのうち、前記分析された統計量の大きさが小さい順に既設定の所定数のレイヤを前記量子化される1つ以上のレイヤとして決定する、請求項10に記載の装置。
  15. 前記プロセッサは、
    前記整列されたレイヤのうち、前記分析された統計量の大きさが最も小さいレイヤについては、前記量子化される1つ以上のレイヤとして決定しない、請求項10に記載の装置。
  16. ニューラルネットワーク量子化のための装置において、
    少なくとも1つのプログラムが保存されたメモリと、
    前記少なくとも1つのプログラムを実行することで、ニューラルネットワーク量子化を行うプロセッサと、を含み、
    前記プロセッサは、
    第1ビット精度の第1ニューラルネットワークに対して、複数のサイクルの順方向及び逆伝播学習を繰り返して行い、
    前記第1ニューラルネットワークに含まれたレイヤそれぞれに対して、既設定の初期ウェイトと各サイクルの前記逆伝播学習によって決定された更新ウェイトとの間のウェイト差を獲得し、
    前記レイヤそれぞれに対する前記ウェイト差の統計量を分析し、
    前記分析された統計量に基づいて、前記レイヤのうち、前記第1ビット精度よりも低い第2ビット精度で量子化される1つ以上のレイヤを決定し、
    前記レイヤのうち、前記決定されたレイヤを前記第2ビット精度で量子化することで、量子化されたレイヤを含む第2ニューラルネットワークを生成し、
    前記第1ニューラルネットワークは、
    前記第1ビット精度よりも高い第3ビット精度の浮動小数点パラメータのレイヤを有する第3ニューラルネットワークから量子化された前記第1ビット精度の固定小数点パラメータのレイヤを有するニューラルネットワークに該当し、
    前記第2ニューラルネットワークは、
    前記レイヤのうち、前記決定されたレイヤは、前記第2ビット精度の固定小数点パラメータを有し、残りのレイヤは、前記第1ビット精度の前記固定小数点パラメータを有する、装置。
  17. 前記プロセッサは、
    前記第1ニューラルネットワークが前記第1ビット精度の浮動小数点パラメータのレイヤを有するニューラルネットワークに該当する場合、前記レイヤのうち、前記決定されていない残りのレイヤを前記第1ビット精度より低く、前記第2ビット精度よりは高い第4ビット精度の固定小数点パラメータのレイヤに量子化し、
    前記第2ニューラルネットワークは、
    前記レイヤのうち、前記決定されたレイヤは、前記第2ビット精度の固定小数点パラメータを有し、前記残りのレイヤは、前記第4ビット精度の固定小数点パラメータを有する、請求項10に記載の装置。
JP2020002058A 2019-01-09 2020-01-09 ニューラルネットワーク量子化のための方法及び装置 Active JP7329455B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020190002986A KR20200086581A (ko) 2019-01-09 2019-01-09 뉴럴 네트워크 양자화를 위한 방법 및 장치
KR10-2019-0002986 2019-01-09

Publications (2)

Publication Number Publication Date
JP2020113273A JP2020113273A (ja) 2020-07-27
JP7329455B2 true JP7329455B2 (ja) 2023-08-18

Family

ID=68654403

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020002058A Active JP7329455B2 (ja) 2019-01-09 2020-01-09 ニューラルネットワーク量子化のための方法及び装置

Country Status (5)

Country Link
US (3) US11625577B2 (ja)
EP (1) EP3680826A1 (ja)
JP (1) JP7329455B2 (ja)
KR (1) KR20200086581A (ja)
CN (1) CN111428852A (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11568222B2 (en) * 2019-03-27 2023-01-31 Integrated Silicon Solution, (Cayman) Inc. System and method for classifying data using neural networks with errors
US11763158B2 (en) * 2019-12-04 2023-09-19 Deep Vision Inc. Method for automatic hybrid quantization of deep artificial neural networks
CN111831354B (zh) * 2020-07-09 2023-05-16 北京灵汐科技有限公司 数据精度配置方法、装置、芯片、芯片阵列、设备及介质
JPWO2022030054A1 (ja) * 2020-08-06 2022-02-10
CN111931917A (zh) * 2020-08-20 2020-11-13 浙江大华技术股份有限公司 前向计算的实现方法及装置、存储介质、电子装置
KR102505946B1 (ko) * 2020-09-02 2023-03-08 네이버 주식회사 인공신경망 모델 학습 방법 및 시스템
GB2599137A (en) * 2020-09-25 2022-03-30 Samsung Electronics Co Ltd Method and apparatus for neural architecture search
JP6992864B1 (ja) 2020-09-28 2022-01-13 沖電気工業株式会社 ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラム
CN112580805A (zh) * 2020-12-25 2021-03-30 三星(中国)半导体有限公司 神经网络模型的量化方法和量化神经网络模型的装置
KR102607993B1 (ko) * 2021-03-04 2023-12-01 삼성전자주식회사 양자화를 이용한 뉴럴 네트워크 연산 방법 및 장치
JP2023031367A (ja) 2021-08-25 2023-03-09 富士通株式会社 閾値決定プログラム及び閾値決定方法
KR102552478B1 (ko) * 2021-09-07 2023-07-11 주식회사 노타 레이어 별 경량화를 통한 딥러닝 모델 최적화 방법 및 시스템
JP2023069780A (ja) 2021-11-08 2023-05-18 富士通株式会社 演算プログラム、演算方法及び計算機
CN114676822B (zh) * 2022-03-25 2024-04-23 东南大学 一种基于深度学习的多属性融合空气质量预报方法
KR102596769B1 (ko) * 2022-07-12 2023-11-02 오픈엣지테크놀로지 주식회사 신경망 설계방법 및 이를 위한 장치
KR102612695B1 (ko) * 2022-10-20 2023-12-13 연세대학교 산학협력단 변동성 플로팅 포인트 뉴럴넷을 이동 표적으로 사용하여 바이너리 뉴럴넷을 학습하는 자기지도학습 방법 및 장치, 그리고 이를 이용한 테스트 방법 및 테스트 장치
KR102659650B1 (ko) * 2024-01-25 2024-04-23 주식회사 두다지 대상 프로세싱 유닛에 적합한 양자화된 뉴럴 네트워크 모델 제공 방법 및 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170323197A1 (en) 2016-05-03 2017-11-09 Imagination Technologies Limited Convolutional Neural Network Hardware Configuration
US20180197081A1 (en) 2017-01-09 2018-07-12 Samsung Electronics Co., Ltd. Method and algorithm of recursive deep learning quantization for weight bit reduction
JP2018124681A (ja) 2017-01-30 2018-08-09 富士通株式会社 演算処理装置、情報処理装置、方法、およびプログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR950012359B1 (ko) 1992-08-28 1995-10-17 엘지전자주식회사 신경회로망 구조와 학습방법
US11106973B2 (en) 2016-03-16 2021-08-31 Hong Kong Applied Science and Technology Research Institute Company Limited Method and system for bit-depth reduction in artificial neural networks
US10936941B2 (en) 2016-08-12 2021-03-02 Xilinx, Inc. Efficient data access control device for neural network hardware acceleration system
KR102592721B1 (ko) 2017-01-11 2023-10-25 한국전자통신연구원 이진 파라미터를 갖는 컨볼루션 신경망 시스템 및 그것의 동작 방법
US11556772B2 (en) * 2017-04-28 2023-01-17 Intel Corporation Incremental precision networks using residual inference and fine-grain quantization
KR102601604B1 (ko) 2017-08-04 2023-11-13 삼성전자주식회사 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
WO2019051658A1 (en) * 2017-09-13 2019-03-21 Intel Corporation INCREMENTAL NETWORK QUANTIFICATION
US11551077B2 (en) * 2018-06-13 2023-01-10 International Business Machines Corporation Statistics-aware weight quantization

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170323197A1 (en) 2016-05-03 2017-11-09 Imagination Technologies Limited Convolutional Neural Network Hardware Configuration
US20180197081A1 (en) 2017-01-09 2018-07-12 Samsung Electronics Co., Ltd. Method and algorithm of recursive deep learning quantization for weight bit reduction
JP2018124681A (ja) 2017-01-30 2018-08-09 富士通株式会社 演算処理装置、情報処理装置、方法、およびプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Jun Haeng Lee et al.,Quantization for Rapid Deployment of Deep Neural Networks,arXiv [online],2018年,[2023年7月11日検索]、インターネット<URL: https://arxiv.org/abs/1810.05488>

Also Published As

Publication number Publication date
US20240185029A1 (en) 2024-06-06
US11934939B2 (en) 2024-03-19
KR20200086581A (ko) 2020-07-17
EP3680826A1 (en) 2020-07-15
JP2020113273A (ja) 2020-07-27
US11625577B2 (en) 2023-04-11
US20230206031A1 (en) 2023-06-29
CN111428852A (zh) 2020-07-17
US20200218962A1 (en) 2020-07-09

Similar Documents

Publication Publication Date Title
JP7329455B2 (ja) ニューラルネットワーク量子化のための方法及び装置
JP7072464B2 (ja) 固定小数点量子化ニューラルネットワークのための方法及び装置
KR102589303B1 (ko) 고정 소수점 타입의 뉴럴 네트워크를 생성하는 방법 및 장치
KR102526650B1 (ko) 뉴럴 네트워크에서 데이터를 양자화하는 방법 및 장치
KR20190125141A (ko) 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
US11816557B2 (en) Method and apparatus with neural network parameter quantization
US11501166B2 (en) Method and apparatus with neural network operation
JP7117280B2 (ja) ニューラルネットワークのパラメータを量子化する方法及びその装置
JP7329352B2 (ja) 分類のためのニューラルネットワークにおいて、パラメータを処理する方法及び装置
CN114358274A (zh) 训练用于图像识别的神经网络的方法和设备
KR20210121946A (ko) 뉴럴 네트워크 양자화를 위한 방법 및 장치
KR20210053791A (ko) 뉴럴 네트워크의 데이터를 처리하는 방법 및 장치
KR102581471B1 (ko) 분류를 위한 뉴럴 네트워크에서 파라미터를 처리하는 방법 및 장치
US20220335705A1 (en) Method and apparatus with neural network processing
CN110874633A (zh) 具有多位神经形态操作的神经形态方法和设备
KR20200139071A (ko) 뉴럴 네트워크에서 파라미터를 양자화하는 방법 및 장치
US12026611B2 (en) Method and apparatus for quantizing parameters of neural network

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211228

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230330

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: 20230718

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230807

R150 Certificate of patent or registration of utility model

Ref document number: 7329455

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150