(57)【要約】【課題】  ニューラルネットワークのパラメータを量子化する方法及びその装置を提供する。【解決手段】  パラメータのビットシフト値を利用し、固定小数点形式をアップデートし、アップデートされた固定小数点形式により、学習過程または推論過程でアップデートされたパラメータを量子化する方法、及びそのためニュ−ロルネットワーク装置である。【選択図】      図５
2020064635.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットワークのパラメータを量子化する方法において、
パラメータそれぞれに対して、前記パラメータを量子化するための固定小数点形式のビット範囲を外れる程度を示すビットシフト値を計算する段階と、
前記パラメータのビットシフト値を利用し、前記固定小数点形式をアップデートする段階と、
アップデートされた固定小数点形式により、学習過程または推論過程でアップデートされたパラメータを量子化する段階と、を含む方法。
【請求項２】
前記計算する段階は、
前記パラメータそれぞれについて、「１」値を有する最上位ビットを検出する段階と、
前記パラメータそれぞれについて、前記検出された最上位ビットと、前記固定小数点形式の整数部の最上位ビットとのビット数差をビットシフト値として決定する段階と、を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記検出する段階は、
前記パラメータそれぞれについて、前記固定小数点形式の整数部の最上位ビットを基準に、所定の範囲内ビットを検索し、前記「１」値を有する最上位ビットを検出することを特徴とする請求項２に記載の方法。
【請求項４】
前記アップデートする段階は、
前記ビットシフト値から、オーバーフローの発生回数及び最大ビットシフト値を決定する段階と、
前記オーバーフローの発生回数及び前記最大ビットシフト値を利用し、前記固定小数点形式をアップデートする段階と、を含むことを特徴とする請求項１乃至３のいずれか一項に記載の方法。
【請求項５】
前記アップデートする段階は、
前記オーバーフローの発生回数が所定の値より多い場合、
前記固定小数点形式の小数部長を前記最大ビットシフト値ほど減少さ、前記固定小数点形式をアップデートすることを特徴とする請求項４に記載の方法。
【請求項６】
前記所定の値は、前記パラメータの個数に基づいて決定されることを特徴とする請求項５に記載の方法。
【請求項７】
前記アップデートされたパラメータは、
（ｔ＋１）番目の学習過程または推論過程でアップデートされたパラメータであり、
前記パラメータは、
ｔ番目の学習過程または推論過程でアップデートされたパラメータであり、
前記固定小数点形式は、
（ｔ−１）番目の学習過程または推論過程でアップデートされたパラメータに基づいてアップデートされた固定小数点形式であり、
ｔは、２以上の自然数であることを特徴とする請求項１乃至６のいずれか一項に記載の方法。
【請求項８】
前記計算する段階は、
前記固定小数点形式により、前記パラメータを量子化する過程において、前記パラメータそれぞれに係わるビットシフト値を計算することを特徴とする請求項１乃至７のいずれか一項に記載の方法。
【請求項９】
前記パラメータは、
前記ニュ−ラルネットワーク内の同一レイヤ上の重みまたはアクチベーションであることを特徴とする請求項１乃至８のいずれか一項に記載の方法。
【請求項１０】
請求項１乃至９のうちいずれか１項に記載の方法をコンピュータに実行させるプログラム。
【請求項１１】
ニュ−ロルネットワークのパラメータを量子化する装置において、
少なくとも１つのプログラムを保存するメモリと、
前記少なくとも１つのプログラムを実行することにより、パラメータそれぞれについて、前記パラメータを量子化するための固定小数点形式のビット範囲を外れる程度を示すビットシフト値を計算し、前記パラメータのビットシフト値を利用し、前記固定小数点形式をアップデートし、アップデートされた固定小数点形式により、学習過程または推論過程でアップデートされたパラメータを量子化するプロセッサと、を含む装置。
【請求項１２】
前記プロセッサは、
前記パラメータそれぞれについて、「１」値を有する最上位ビットを検出し、
前記パラメータそれぞれについて、前記検出された最上位ビットと、前記固定小数点形式の整数部の最上位ビットとのビット数差を、ビットシフト値として決定することを特徴とする請求項１１に記載の装置。
【請求項１３】
前記プロセッサは、
前記固定小数点形式の整数部の最上位ビットを基準に、所定の範囲内ビットを検索し、前記「１」値を有する最上位ビットを検出することを特徴とする請求項１２に記載の装置。
【請求項１４】
前記プロセッサは、
前記ビットシフト値から、オーバーフローの発生回数及び最大ビットシフト値を決定し、
前記オーバーフローの発生回数及び前記最大ビットシフト値を利用し、前記固定小数点形式をアップデートすることを特徴とする請求項１１乃至１３のいずれか一項に記載の装置。
【請求項１５】
前記プロセッサは、
前記オーバーフローの発生回数が所定の値より多い場合、
前記固定小数点形式の小数部長を前記最大ビットシフト値ほど減少させ、前記固定小数点形式をアップデートすることを特徴とする請求項１４に記載の装置。
【請求項１６】
前記所定の値は、前記パラメータの個数に基づいて決定されることを特徴とする請求項１５に記載の装置。
【請求項１７】
前記アップデートされたパラメータは、
（ｔ＋１）番目の学習過程または推論過程でアップデートされたパラメータであり、
前記パラメータは、
ｔ番目の学習過程または推論過程でアップデートされたパラメータであり、
前記固定小数点形式は、
（ｔ−１）番目の学習過程または推論過程でアップデートされたパラメータに基づいてアップデートされた固定小数点形式であり、
ｔは、２以上の自然数であることを特徴とする請求項１１乃至１６のいずれか一項に記載の装置。
【請求項１８】
前記固定小数点形式により、前記パラメータを量子化する過程において、前記パラメータそれぞれに係わるビットシフト値を計算することを特徴とする請求項１１乃至１７のいずれか一項に記載の装置。
【請求項１９】
前記パラメータは、
前記ニュ−ロルネットワーク内の同一レイヤ上の重みまたはアクチベーションであることを特徴とする請求項１１乃至１８のいずれか一項に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワークのパラメータを量子化する方法及びその装置に関する。
【背景技術】
【０００２】
ニューラルネットワーク（neural  network）は、生物学的脳をモデリングしたコンピュータ科学的アーキテクチャ（computational  architecture）を参照する。最近、ニューラルネットワーク技術の発展により、多種の電子システムにおいて、ニューラルネットワーク装置を使用し、入力データを分析して有効な情報を抽出している。
該ニューラルネットワーク装置は、入力データに対する多量の演算を行う。そのようなニューラルネットワーク演算を効率的に処理することができる技術が研究されている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明が解決しようとする課題は、ニューラルネットワークのパラメータを量子化する方法及びその装置を提供するものである。本実施形態の技術的課題は、前述のような技術的課題に限定されるものではなく、以下の実施形態から他の技術的課題が類推されるのである。
【課題を解決するための手段】
【０００４】
一側面により、ニューラルネットワークのパラメータを量子化する方法は、パラメータそれぞれに対して、パラメータを量子化するための固定小数点形式（fixed  point  format）のビット範囲を外れる程度を示すビットシフト値を計算する段階と、パラメータのビットシフト値を利用し、固定小数点形式をアップデートする段階と、アップデートされた固定小数点形式により、学習過程または推論過程でアップデートされたパラメータを量子化する段階と、を含んでもよい。
【０００５】
他の側面により、ニューラルネットワークのパラメータを量子化する装置は、少なくとも１つのプログラムを保存するメモリと、少なくとも１つのプログラムを実行することにより、パラメータそれぞれに対して、パラメータを量子化するための固定小数点形式のビット範囲を外れる程度を示すビットシフト値を計算し、パラメータのビットシフト値を利用し、固定小数点形式をアップデートし、アップデートされた固定小数点形式により、学習過程または推論過程でアップデートされたパラメータを量子化するプロセッサと、を含んでもよい。
【０００６】
さらに他の側面により、該ニューラルネットワークのパラメータを量子化する方法を具現するためのプログラムが記録されたコンピュータで読み取り可能な記録媒体が提供される。
【発明の効果】
【０００７】
本実施形態によれば、ニューラルネットワーク装置は、学習過程または推論過程でアップデートされたパラメータの変化に対応するように、アップデートされたパラメータを量子化するための固定小数点形式をアップデートするが、演算量を減少させながらも、精度損失を減らすことができる。また、該ニューラルネットワーク装置は、ｔ番目の学習過程または推論過程でアップデートされたパラメータを量子化する場合、既決定の固定小数点形式によって量子化するが、固定小数点形式を決定するために、ｔ番目の学習過程または推論過程でアップデートされたパラメータをいずれもスキャンする時間及びハードウェアオーバーヘッドを減らすことができる。また、該ニューラルネットワーク装置は、パラメータのオーバーフロー発生回数及び最大ビットシフト値を利用し、固定小数点形式をアップデートするが、相対的に簡単でありながらも、少ない演算を介して、固定小数点形式をアップデートするので、ハードウェアオーバーヘッドを減らすことができる。
【図面の簡単な説明】
【０００８】
【図１】一実施形態によるニューラルネットワーク学習期及びニューラルネットワーク推論期を説明する図面である。
【図２】一実施形態によるニューラルネットワークの例示を示す図面である。
【図３Ａ】一実施形態による浮動小数点形式のパラメータを図示した図面である。
【図３Ｂ】一実施形態による固定小数点形式のパラメータを図示した図面である。
【図３Ｃ】他の実施形態による固定小数点形式のパラメータを図示した図面である。
【図４】一実施形態によるニューラルネットワーク装置のハードウェア構成を図示したブロック図である。
【図５】プロセッサが反復的な学習過程または推論過程で動作する実施形態を示す図面である。
【図６】プロセッサがパラメータのビットシフト値を利用し、固定小数点形式をアップデートする実施形態を示す図面である。
【図７】プロセッサがパラメータのビットシフト値を計算する実施形態を示す図面である。
【図８】プロセッサがパラメータ内において、「１」を有する最上位ビットを検出する実施形態を示す図面である。
【図９】プロセッサが最大ビットシフト値、及びオーバーフローの発生回数を決定する実施形態を示す図面。
【図１０】一例により、プロセッサが固定小数点形式の小数部長をアップデートするためのアルゴリズムを図示した図面である。
【図１１】他例により、プロセッサが固定小数点形式の小数部長をアップデートするためのアルゴリズムを図示した図面である。
【図１２】一実施形態による電子システムを示すブロック図である。
【図１３】一実施形態により、ニューラルネットワーク装置の動作方法について説明するための図面である。
【発明を実施するための形態】
【０００９】
以下、添付された図面を参照しながら、ただ、例示のための実施形態について詳細に説明する。以下の説明は、実施形態を具体化するためのものであるのみ、発明の権利範囲を制限したり限定したりするものではないということは言うまでもない。詳細な説明、及び実施形態から、当該技術分野の当業者が容易に類推することができることは、権利範囲に属すると解釈される。
【００１０】
本明細書で使用される「構成される」または「含む」というような用語は、明細書上に記載された多くの構成要素、または多くの段階を必ずしもいずれも含むものであると解釈されるものではなく、そのうち一部構成要素または一部段階は、含まれなかったり、または追加的な構成要素または段階をさらに含んだりもすると解釈されなければならない。
【００１１】
また、本明細書で使用される「第１」または「第２」というように、序数を含む用語は、多様な構成要素についての説明に使用されるが、そのような用語は、１つの構成要素を他の構成要素から区別する目的のみに使用される。
【００１２】
本実施形態は、ニューラルネットワークのパラメータを量子化する方法及びその装置に係わるものであり、以下の実施形態が属する技術分野において当業者に周知されている事項については、詳細な説明を省略する。
【００１３】
図１は、一実施形態によるニューラルネットワーク学習器及びニューラルネットワーク推論器について説明する図面である。図１を参照すれば、ニューラルネットワーク学習器１０は、ニューラルネットワークを生成したり、ニューラルネットワークを訓練（トレーニング）（または、学習）させたり、浮動小数点形式のニューラルネットワークを、固定小数点形式のニューラルネットワークに量子化したり、固定小数点形式のニューラルネットワークを、他の固定小数点形式のニューラルネットワークに量子化したり、ニューラルネットワークを再訓練（再トレーニング）させたりする機能のような多様なプロセッシング機能を有するコンピュータデバイスに該当する。例えば、ニューラルネットワーク学習器１０は、ＰＣ（personal  computer）、サーバデバイス、モバイルデバイスなどの多種のデバイスによっても具現される。一方、本明細書において、パラメータ量子化は、浮動小数点形式のパラメータを、固定小数点形式のパラメータに変換することを意味したり、一定ビット幅を有する固定小数点形式のパラメータを、他のビット幅を有する固定小数点形式のパラメータに変換したりすることを意味する。
【００１４】
ニューラルネットワーク学習器１０は、与えられた初期ニューラルネットワークを反復的に学習（訓練）させることにより、学習されたニューラルネットワーク１１を生成することができる。このとき、初期ニューラルネットワークは、ニューラルネットワークの処理精度を保証する観点から、浮動小数点形式のパラメータ、例えば、３２ビット浮動小数点精度（３２bit  floating  point  precision）のパラメータを有することができる。ここで、パラメータは、例えば、ニューラルネットワークの入力／出力アクチベーション、重み、バイアスのように、ニューラルネットワークに入力／出力される多種のデータを含んでもよい。該ニューラルネットワークの反復的な学習が進められることにより、該ニューラルネットワークの浮動小数点パラメータは、与えられた入力に対して、さらに正確な出力を演算するために調整される。
【００１５】
また、ニューラルネットワーク学習器１０は、初期ニューラルネットワークを反復的に学習（訓練）させる過程において、固定小数点形式によってパラメータを処理することができる。具体的には、ニューラルネットワーク学習器１０は、演算量を減少させながら、許容可能な精度損失内において、該ニューラルネットワークを学習させるために、８ビットまたは１６ビットの固定小数点形式により、パラメータを処理することができる。従って、ニューラルネットワーク学習器１０は、オンデバイス学習のために、比較的処理性能が低いスマートフォン、タブレットまたはウェアラブルデバイスによっても具現される。
【００１６】
ニューラルネットワーク学習器１０は、学習されたニューラルネットワーク１１を、ニューラルネットワーク推論器２０のようなハードウェア加速器に伝達することができる。ニューラルネットワーク推論器２０は、モバイルデバイス、埋め込みデバイスなどにも含まれる。ニューラルネットワーク推論器２０は、量子化されたニューラルネットワーク２１駆動のための専用ハードウェアであり、比較的に低電力または低性能にも具現されるために、浮動小数点演算よりは、固定小数点演算にさらに適して具現される。一方、ニューラルネットワーク推論器２０は、ニューラルネットワーク駆動のための専用モジュールであるＴＰＵ（tensor  processing  unit）、Neural  Engineなども該当する、それらに制限されるものではない。
【００１７】
量子化されたニューラルネットワーク２１を駆動するニューラルネットワーク推論器２０は、ニューラルネットワーク学習器１０とは別途の独立したデバイスによっても具現される。しかし、それに制限されるものではなく、ニューラルネットワーク推論器２０は、ニューラルネットワーク学習器１０と同一デバイス内においても具現される。
【００１８】
量子化されたニューラルネットワーク２１が採用されるニューラルネットワーク推論器２０は、具体的な例示において、ニューラルネットワークを利用した音声認識、映像認識などを行う自律走行自動車、ロボティックス、スマートフォン、タブレットデバイス、ＡＲ（augmented  reality）デバイス、ＩｏＴ（internet  of  things）デバイスなどにも含まれるが、それらに制限されるものではない。
【００１９】
図２は、一部実施形態によるニューラルネットワークの例示を示す図面である。図２を参照すれば、ニューラルネットワーク２は、入力レイヤ、隠れ層及び出力レイヤを含む構造を有し、受信される入力データ（たとえばＩ1及びＩ2）を基に演算を行い、遂行結果を基に、出力データ（例えば、Ｏ1及びＯ2）を生成することができる。
【００２０】
ニューラルネットワーク２は、１個以上の隠れ層を含むデープニューラルネットワーク（ＤＮＮ：deep  neural  network）またはｎ階層ニューラルネットワーク（ｎ−layers  neural  networks）でもある。例えば、図２に図示されているように、ニューラルネットワーク２は、入力レイヤ（Layer１）、２個の隠れ層（Layer２及びLayer３）及び出力レイヤ（Layer４）を含むＤＮＮでもある。該ＤＮＮは、ＣＮＮ（Convolutional  Neural  Networks）、ＲＮＮ（Recurrent  Neural  Networks）、Deep  Belief  Networks、Restricted  Boltzman  Machinesなどを含んでもよいが、それらに制限されるものではない。
【００２１】
ニューラルネットワーク２は、４個のレイヤを含むように図示されているが、それは、例示に過ぎず、ニューラルネットワーク２は、さらに少なかったり多かったりするレイヤを含んでもよい。また、ニューラルネットワーク２は、図２に図示されたところとは異なる多様な構造のレイヤを含んでもよい。例えば、ニューラルネットワーク２は、デープニューラルネットワークとして、畳み込みレイヤ、プーリングレイヤ及び全結合レイヤを含んでもよい。
【００２２】
ニューラルネットワーク２に含まれたレイヤそれぞれは、「ニューロン」、「プロセッシングエレメント（ＰＥ：processing  element）」、「ユニット」、またはそれらと類似した用語で知られた、複数の人工ノードを含んでもよい。例えば、図２に図示されているように、Layer  １は、２個のノード、Layer  ２は、３個のノードを含んでもよい。ただし、それは例示に過ぎず、ニューラルネットワーク２に含まれたレイヤそれぞれは、多様な個数のノードを含んでもよい。
【００２３】
ニューラルネットワーク２に含まれたレイヤそれぞれに含まれたノードは、互いに連結され、データを交換することができる。例えば、１つのノードは、他のノードからデータを受信し、演算することができ、該演算結果をさらに他のノードに出力することができる。
【００２４】
ノードそれぞれの出力値は、アクチベーションとも呼ばれる。該アクチベーションは、１つのノードの出力値でありながら、次のレイヤに含まれたノードの入力値でもある。一方、ノードそれぞれは、以前レイヤに含まれたノードから受信されたアクチベーション及び重みに基づいて、自体のアクチベーションを決定することができる。該重みは、各ノードでのアクチベーションを計算するために利用されるパラメータであり、ノード間の連結関係に割り当てられる値でもある。
【００２５】
ノードそれぞれは、入力され、アクチベーションを出力する演算ユニットでもあり、入力・出力をマッピングすることができる。例えば、σは、活性化関数であり、wijkは、（ｉ−１）番目レイヤに含まれたｋ番目ノードからｉ番目レイヤに含まれたｊ番目ノードへの重みであり、bijは、ｉ番目レイヤに含まれたｊ番目ノードのバイアス値であり、aijは、ｉ番目レイヤのｊ番目ノードのアクチベーションであるとするとき、アクチベーションaijは、次のような数式（１）による。
【００２６】
【数１】
2020064635.tif 000003
図２に図示されているように、２番目レイヤ（Layer  ２）の最初ノードのアクチベーションは、a２１とも表現される。また、a２１は、数式（１）により、
【００２７】
【数２】
2020064635.tif 000004
の値を有することができる。ただし、前述の数式（１）は、ニューラルネットワークにおいてデータを処理するために利用されるアクチベーション及び重みについて説明するための例示であるのみ、それに制限されるものではない。該アクチベーションは、以前レイヤから受信されたアクチベーションの加重和に、活性化を適用した値をして、ＲｅＬＵ（rectified  linear  unit）を通過させることによって獲得された値でもある。
【００２８】
前述のように、ニューラルネットワーク２においては、多くのデータ集合が相互連結された複数のチャネル間において交換され、レイヤを経なながら多くの演算過程を経る。
【００２９】
図３Ａは、一実施形態による浮動小数点形式のパラメータを図示した図面であり、図３Ｂは、一実施形態による固定小数点形式のパラメータを図示した図面であり、図３Ｃは、他の実施形態による固定小数点形式のパラメータを図示した図面である。
【００３０】
図３Ａを参照すれば、浮動小数点形式のパラメータ３０は、符号ビット３１０、指数部３２０、仮数部３３０及びバイアス３４０によっても構成される。浮動小数点は、１つの数を小数点部分を示す部分と、小数点位置を示す部分とに分けて表現する表記法である。
【００３１】
仮数部３３０は、小数点部分を示す部分に対応し、指数部３２０は、小数点位置を示す部分にも対応する。符号ビット３１０は、パラメータ３０の符号を決定することができる。バイアス３４０は、指数部３２０に加えられたり、そこから差し引かれたりする値であり、負の指数を表現するために決定される値でもある。パラメータ３０は、符号ビット３１０、指数部３２０に対応するビット、及び仮数部３３０に対応するビットを含んでもよい。バイアス３４０は、パラメータ３０に対して事前に決定され、別途に保存される。
【００３２】
一方、パラメータ３０は、符号ビット３１０をsign、指数部３２０をexponent、仮数部３３０をmantissa、バイアス３４０をbiasとするとき、次のような数式（２）による値を有することができる。
【００３３】
【数３】
2020064635.tif 000005
図３Ｂを参照すれば、固定小数点形式のパラメータ３５は、符号ビット３１５、整数部３２５、小数部３３５及び小数点３４５によっても構成される。固定小数点は、小数点を使用して固定された桁数の少数を示す表記法を意味する。
【００３４】
符号ビット３１５は、パラメータ３５の符号を決定し、整数部３２５は、パラメータ３５の整数を示す部分に対応し、小数部３３５は、パラメータ３５の小数を示す部分に対応する。小数点３４５は、パラメータ３５の整数部３２５及び小数部３３５を区分する基準になる点を意味する。
【００３５】
一方、パラメータ３５が示す値は、図３Ｃを参照して説明することができる。図３Ｃを参照すれば、パラメータ３５は、８ビット固定小数点値でもある。また、パラメータ３５は、整数部３２５、小数部３３５及び小数点３４５からも構成される。
【００３６】
整数部３２５及び小数部３３５を示すビットは、それぞれ１または０の値を有することができる。また、図３Ｃに図示されているように、整数部３２５及び小数部３３５を示すビットは、順に−８、＋４、＋２、＋１、＋０．５、＋０．２５、＋０．１２５及び＋０．０６２５の値を示すことができる。整数部３２５の最上位ビットが１である場合、整数部３２５の最上位ビットが示す値は、−８であるので、整数部３２５及び小数部３３５に含まれる他のビットがいかなる値を有しても、パラメータ３５が示す値は、負数である。整数部３２５の最上位ビットは、パラメータ３５の符号を決定する符号ビット３１５に対応する。
【００３７】
ただし、図３Ｃは、例示に過ぎず、パラメータ３５は、１６ビット固定小数点値でもあり、任意の適切な数のビット個数を有する固定小数点値でもある。また、パラメータ３５は、符号化表現法、１の補数法、及び２の補数法のうちいずれか１つの表現法によって負数を示すことができる。
【００３８】
図４は、一実施形態によるニューラルネットワーク装置のハードウェア構成を図示したブロック図である。
【００３９】
ニューラルネットワーク装置１００は、図１のニューラルネットワーク学習器１０及びニューラルネットワーク推論器２０のうち少なくとも一つに含まれて動作するか、あるいは独立した第３のハードウェア加速器として動作することができる。
【００４０】
ニューラルネットワーク装置１００は、プロセッサ１１０及びメモリ１２０を含む。図４に図示されたニューラルネットワーク装置１００には、本実施形態と係わる構成要素だけが図示されている。従って、ニューラルネットワーク装置１００は、図４に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、当業者に自明である。
【００４１】
プロセッサ１１０は、ニューラルネットワーク装置１００を制御するための全般的な機能を遂行する役割を行う。例えば、プロセッサ１１０は、ニューラルネットワーク装置１００内のメモリ１２０に保存されたプログラムを実行することにより、ニューラルネットワーク装置１００を全般的に制御する。プロセッサ１１０は、ニューラルネットワーク装置１００内に具備されたＣＰＵ（central  processing  unit）、ＧＰＵ（graphics  processing  unit）、ＡＰ（application  processor）などによっても具現されるが、それらに制限されるものではない。
【００４２】
メモリ１２０は、ニューラルネットワーク装置１００内で処理される各種データを保存するハードウェアであり、例えば、メモリ１２０は、ニューラルネットワーク装置１００で処理されたデータ、及び処理されるデータを保存することができる。また、メモリ１２０は、ニューラルネットワーク装置１００によって駆動されるアプリケーション、ドライバなどを保存することができる。メモリ１２０は、ＤＲＡＭ（dynamic  random  access  memory）でもあるが、それに限定されるものではない。メモリ１２０は、揮発性メモリまたは不揮発性メモリのうち少なくとも一つを含んでもよい。
【００４３】
プロセッサ１１０は、初期ニューラルネットワークを反復的に学習させることにより、学習されたニューラルネットワークを生成することができる。プロセッサ１１０は、ニューラルネットワークを反復的に学習させることにより、ニューラルネットワークのパラメータを反復してアップデートすることができる。例えば、ニューラルネットワーク内重みが学習を行う過程において、反復してアップデートされ、アクチベーションも、重みとの演算により、反復してアップデートされる。プロセッサ１１０は、ニューラルネットワークのパラメータが反復してアップデートされるたびに、アップデートされたパラメータを、固定小数点形式によって量子化することができる。また、プロセッサ１１０は、ニューラルネットワークのパラメータが反復してアップデートされるたびに、固定小数点形式を反復してアップデートすることができる。可変するパラメータを、固定された固定小数点形式に量子化する場合、学習過程での精度損失が発生してしまうが、プロセッサ１１０は、固定小数点形式をアップデートし、パラメータを量子化することにより、演算量を減少させながらも、精度損失を減らすことができる。具体的には、プロセッサ１１０は、アップデートされたパラメータの固定小数点値の分布に対応するように、固定小数点形式をアップデートすることができる。例えば、プロセッサ１１０は、アップデートされたパラメータのうち最大値を有するパラメータに対応するように、固定小数点形式内小数点位置をアップデートすることができる。
【００４４】
また、プロセッサ１１０は、学習されたニューラルネットワークを駆動させて結果値を獲得する推論過程においても、ニューラルネットワークのパラメータを反復してアップデートすることができる。例えば、推論過程において、データが、学習されたニューラルネットワークに反復して入力され、それにより、学習されたニューラルネットワーク内アクチベーションが反復してアップデートされる。従って、学習過程と同様に、プロセッサ１１０は、推論過程においても、ニューラルネットワークのパラメータが反復してアップデートされるたびに、アップデートされたパラメータを、固定小数点形式によって量子化することができる。また、学習過程と同様に、プロセッサ１１０は、推論過程においても、ニューラルネットワークのパラメータが反復してアップデートされるたびに、固定小数点形式を反復してアップデートすることができる。
【００４５】
プロセッサ１１０は、ｔ番目の学習過程または推論過程において、パラメータをアップデートすることができ、続いて、アップデートされたパラメータを量子化することができる。このとき、プロセッサ１１０は、既決定の第１固定小数点形式により、ｔ番目の学習過程または推論過程においてアップデートされたパラメータを量子化することができる。例えば、第１固定小数点形式は、（ｔ−１）番目の学習過程または推論過程でアップデートされたパラメータに基づいてアップデートされた固定小数点形式でもある。また、プロセッサ１１０は、ｔ番目の学習過程または推論過程でアップデートされたパラメータに基づいて、既存の第１固定小数点形式を第２固定小数点形式にアップデートすることができる。次に、プロセッサ１１０は、第２固定小数点形式により、（ｔ＋１）番目の学習過程または推論過程でアップデートされたパラメータを量子化することができる。
【００４６】
従って、プロセッサ１１０は、ｔ番目の学習過程または推論過程でアップデートされたパラメータを量子化する場合、既決定の固定小数点形式によって量子化するが、固定小数点形式を決定するために、ｔ番目の学習過程または推論過程でアップデートされたパラメータをいずれもスキャンする時間及びハードウェアオーバーヘッドを減らすことができる。
【００４７】
図５は、プロセッサが反復的な学習過程または推論過程で動作する実施形態を示す。
【００４８】
プロセッサ１１０は、小数部長（frac＿lengthｔ−１）を有する固定小数点形式により、ｔ番目の学習過程または推論過程でアップデートされたパラメータ（parameterｔ）を量子化し、量子化されたパラメータ（q＿parameterｔ）を生成することができる。言い換えれば、プロセッサ１１０は、（ｔ−１）番目の学習過程または推論過程でアップデートされたパラメータ（parameterｔ−１）に基づいて、小数部長（frac＿lengthｔ−１）を有する固定小数点形式を事前に決定することができ、ｔ番目の学習過程または推論過程において、小数部長（frac＿lengthｔ−１）を有する固定小数点形式により、パラメータ（parameterｔ）を量子化することができる。
【００４９】
プロセッサ１１０は、パラメータ（parameterｔ）に基づいて、既存の小数部長（frac＿lengthｔ−１）を小数部長（frac＿lengthｔ）にアップデートすることができる。言い換えれば、プロセッサ１１０は、（ｔ＋１）番目の学習過程または推論過程でアップデートされたパラメータ（parameterｔ＋１）を量子化するための小数部長（frac＿lengthｔ）を事前に決定することができる。
【００５０】
プロセッサ１１０は、（ｔ＋１）番目の学習過程または推論過程で、パラメータ（parameterｔ）をパラメータ（parameterｔ＋１）にアップデートすることができる。また、プロセッサ１１０は、既決定の小数部長（frac＿lengthｔ）を有する固定小数点形式により、パラメータ（parameterｔ＋１）を量子化し、量子化されたパラメータ（q＿parameterｔ＋１）を生成することができる。
【００５１】
図５において、パラメータ（parameterｔ−１，parameterｔ，parameterｔ＋１）は、一例により、ニューラルネットワーク内同一レイヤ上の重みまたは入力／出力アクチベーションのようなデータテンソルにもなり、他の例により、ニューラルネットワーク内同一チャネル上の重みまたは入力／出力アクチベーションにもなるが、それらに制限されるものではない。また、本明細書で、ｔは、１以上の自然数にもなり、ｔが１である場合、最初の学習過程または推論過程でアップデートされたパラメータを量子化するための固定小数点形式は、ユーザによって事前に設定される。
【００５２】
再び図４を参照すれば、プロセッサ１１０は、パラメータそれぞれに対して、パラメータを量子化するための固定小数点形式のビット範囲を外れる程度を示すビットシフト値を計算することができる。該ビットシフト値は、パラメータ値を表現するビット範囲が、固定小数点形式がカバーすることができるビット範囲を外れる程度を示す値でもある。一例により、固定小数点形式が、整数部３ビットまでカバーすることができる場合、該パラメータ値を固定小数点形式で表現するにおいて、整数部６ビット桁まで必要であるならば、ビットシフト値は、３にもなる。他の例として、固定小数点形式が小数部４ビットまでカバーすることができる場合、該パラメータ値を固定小数点形式で表現するにおいて、小数部６ビット桁まで必要であるならば、該ビットシフト値は、−２にもなる。また、該ビットシフト値は、固定小数点形式でパラメータを量子化するにおいて、オーバーフローまたはアンダーフローがどれほど発生するかということを示す。例えば、ビットシフト値が３である場合、３ビットほどオーバーフローが発生すると見られ、ビットシフト値が−２である場合、２ビットほどアンダーフローが発生すると見られる。従って、プロセッサ１１０は、パラメータのビットシフト値を計算し、パラメータに対するオーバーフローまたはアンダーフローの総発生回数を決定することができる。また、プロセッサ１１０は、パラメータのビットシフト値、オーバーフロー発生回数及びアンダーフロー発生回数をメモリ１２０に保存することができる。
【００５３】
次に、プロセッサ１１０は、パラメータのビットシフト値を利用し、固定小数点形式をアップデートすることができる。一例により、プロセッサ１１０は、オーバーフローの発生回数が所定の値より多い場合、ビットシフト値のうち最大ビットシフト値ほど固定小数点形式内小数部長を低減させることにより、固定小数点形式をアップデートすることができる。他の例により、プロセッサ１１０は、オーバーフローの発生回数が所定の値より多い場合、ビットシフト値のうち最大ビットシフト値と最小ビットシフト値とを利用し、固定小数点形式をアップデートすることができる。また、プロセッサ１１０は、アップデートされた固定小数点形式に係わる情報をメモリ１２０に保存することができる。
【００５４】
次に、プロセッサ１１０は、アップデートされた固定小数点形式により、学習過程または推論過程でアップデートされたパラメータを量子化することができる。具体的には、プロセッサ１１０は、ｔ番目の学習過程または推論過程でアップデートされたパラメータのビットシフト値を介して、アップデートされた固定小数点形式により、（ｔ＋１）番目の学習過程または推論過程でアップデートされたパラメータを量子化することができる。
【００５５】
従って、プロセッサ１１０は、パラメータのオーバーフロー発生回数及び最大ビットシフト値を利用し、固定小数点形式をアップデートするが、相対的に簡単でありながらも、少ない演算を介して、固定小数点形式をアップデートするので、ハードウェアオーバーヘッドを減らすことができる。
【００５６】
図６は、プロセッサがパラメータのビットシフト値を利用し、固定小数点形式をアップデートする実施形態を示す。
【００５７】
プロセッサ１１０は、ｔ番目の学習過程または推論過程でアップデートされたパラメータ（parameterｔ（１）ないしparameterｔ（ｉ））（ここで、ｉは、２以上の自然数）それぞれに係わるビットシフト値を計算することができる。具体的には、プロセッサ１１０は、既決定の小数部長（frac＿lengthｔ−１）を有する固定小数点形式のビット範囲を基準に、パラメータ（parameterｔ（１）ないしparameterｔ（ｉ））（ここで、ｉは、２以上の自然数）それぞれに係わるビットシフト値を計算することができる。
【００５８】
図７は、プロセッサがパラメータのビットシフト値を計算する実施形態を示す。
【００５９】
プロセッサ１１０は、ｔ番目の学習過程または推論過程でアップデートされたパラメータのうちｉ番目パラメータ（parameterｔ（ｉ））に係わるビットシフト値を計算することができる。
【００６０】
まず、プロセッサ１１０は、パラメータ（parameterｔ（ｉ））から、「１」値を有する最上位ビットを検出することができる。図７を参照すれば、プロセッサ１１０は、パラメータ（parameterｔ（ｉ））から、整数部の６番目桁のビットを、最上位ビットとして検出することができる。
【００６１】
次に、プロセッサ１１０は、パラメータ（parameterｔ（ｉ））を量子化するための小数部長（frac＿lengthｔ−１）を有する固定小数点形式内整数部の最上位ビットと、既検出のパラメータ（parameterｔ（ｉ））の最上位ビットとのビット数差を、パラメータ（parameterｔ（ｉ））に係わるビットシフト値と決定することができる。図７を参照すれば、小数部長（frac＿lengthｔ−１）を有する固定小数点形式内整数部の３番目桁のビットが最上位ビットであるが、６番目桁のビットと、３番目桁のビットとのビット数差が３であるので、プロセッサ１１０は、パラメータ（parameterｔ（ｉ））に係わるビットシフト値を３と計算することができる。そのように、ビット数差を検出するビットシフト検出器がプロセッサ１１０にも含まれる。また、プロセッサ１１０は、パラメータ（parameterｔ（ｉ））について、３ビットほどオーバーフローが１回発生すると判断することができる。
【００６２】
プロセッサ１１０は、小数部長（frac＿lengthｔ−１）を有する固定小数点形式により、パラメータ（parameterｔ（ｉ））を量子化し、量子化されたパラメータ（q＿parameterｔ（ｉ））を生成するが、パラメータ（parameterｔ（ｉ））の量子化過程において、パラメータ（parameterｔ（ｉ））に係わるビットシフト値を計算することができる。言い換えれば、プロセッサ１１０は、パラメータ（parameterｔ（ｉ））を量子化する過程と共に、パラメータ（parameterｔ（ｉ））に係わるビットシフト値を計算する過程を進めることができる。
【００６３】
図７においては、ｔ番目の学習過程または推論過程でアップデートされたパラメータ（parameterｔ（ｉ））が４８ビットの固定小数点値でもって図示され、量子化されたパラメータ（q＿parameterｔ（ｉ））がビット幅が８であり、小数部長が４である固定小数点値でもって図示されたが、それらに制限されるものではない。
【００６４】
図８は、プロセッサがパラメータ内において、「１」を有する最上位ビットを検出する実施形態を示す。
【００６５】
一実施形態により、プロセッサ１１０は、パラメータ（parameterｔ（ｉ））内最上位ビットから始め、下位ビット方向に順番通りビット値を読み取り、パラメータ（parameterｔ（ｉ））内において「１」を有する最上位ビットを検出することができる。
【００６６】
他の実施形態により、プロセッサ１１０は、パラメータ（parameterｔ（ｉ））内の所定ビットを中心に、所定範囲内ビットを読み取り、パラメータ（parameterｔ（ｉ））内において「１」を有する最上位ビットを検出することができる。例えば、図８に図示されているように、プロセッサ１１０は、小数部長（frac＿lengthｔ−１）を有する固定小数点形式内整数部の最上位ビットを中心に、８ビット範囲内または１６ビット範囲内のビットを読み取り、パラメータ（parameterｔ（ｉ））内において、「１」を有する最上位ビットを検出することができる。従って、プロセッサ１１０は、パラメータ（parameterｔ（ｉ））内全体ビットを読み取らず、所定範囲内のビットを読み取るので、スキャニングのためのハードウェアオーバーヘッドを減らすことができる。
【００６７】
再び図６を参照すれば、プロセッサ１１０は、パラメータ（parameterｔ（１）ないしparameterｔ（ｉ））のビットシフト値から、最大ビットシフト値、及びオーバーフローの発生回数を決定することができる。具体的には、プロセッサ１１０は、ビットシフト値のうち最大値を、最大ビットシフト値として決定することができ、ビットシフト値において、正数に該当するビットシフト値の個数を、オーバーフローの発生回数に決定することができる。
【００６８】
次に、プロセッサ１１０は、最大ビットシフト値、及びオーバーフローの発生回数に基づいて、固定小数点形式をアップデートすることができる。言い換えれば、プロセッサ１１０は、最大ビットシフト値、及びオーバーフローの発生回数に基づいて、小数部長（frac＿lengthｔ−１）を有する固定小数点形式を、小数部長（frac＿lengthｔ）を有する固定小数点形式にアップデートすることができる。具体的には、プロセッサ１１０は、オーバーフローの発生回数が、所定の値より多い場合、最大ビットシフト値ほど小数部長（frac＿lengthｔ−１）を減少させ、小数部長を、既存の小数部長（frac＿lengthｔ−１）から新たな小数部長（frac＿lengthｔ）にアップデートすることができる。
【００６９】
従って、プロセッサ１１０は、小数部長（frac＿lengthｔ）を有する固定小数点形式により、（ｔ＋１）番目の学習過程または推論過程でアップデートされたパラメータを量子化することができる。
【００７０】
図９は、プロセッサが、最大ビットシフト値、及びオーバーフローの発生回数を決定する実施形態を示す。図９に図示された論理演算のように、プロセッサ１１０は、ｔ番目の学習過程または推論過程でアップデートされたパラメータである総Ｎ個のパラメータに係わる論理演算を介して、最大ビットシフト値、及びオーバーフローの発生回数を決定することができる。プロセッサ１１０は、図９に図示された論理演算を行う論理演算器を含んでもよい。
【００７１】
段階ｓ９１０において、プロセッサ１１０は、パラメータのうちｉ番目パラメータのビットシフト値（bit＿shift（ｉ））が、０より大きいか否かということを判断することができる。言い換えれば、プロセッサ１１０は、ｉ番目パラメータがオーバーフローに該当するパラメータであるか否かということを判断することができる。ｉ番目パラメータのビットシフト値（bit＿shift（ｉ））が０より大きい場合、プロセッサ１１０は、オーバーフローの発生回数を１ほど増加させることができる（ｓ９２０）。次に、プロセッサ１１０は、（ｉ＋１）番目パラメータのビットシフト値（bit＿shift（ｉ＋１））が０より大きいか否かということを判断し、オーバーフローの発生回数を決定することができる。結果としては、プロセッサ１１０は、ｔ番目の学習過程または推論過程でアップデートされたＮ個のパラメータのビットシフト値が、それぞれ０より大きいか否かということを順次に判断し、ｔ番目の学習過程または推論過程において、オーバーフローの総発生回数を決定することができる。
【００７２】
段階ｓ９３０において、プロセッサ１１０は、ｉ番目パラメータのビットシフト値（bit＿shifｔ（ｉ））と、既存の最大ビットシフト値（max＿bit＿shifｔｔ）とを比較することができる。ビットシフト値（bit＿shift（ｉ））が、既存の最大ビットシフト値（max＿bit＿shiftｔ）より大きい場合、ビットシフト値（bit＿shift（ｉ））を、最大ビットシフト値（max＿bit＿shiftｔ）にアップデートすることができる（ｓ９４０）。次に、プロセッサ１１０は、（ｉ＋１）番目パラメータのビットシフト値（bit＿shift（ｉ＋１））と、アップデートされた最大ビットシフト値（max＿bit＿shiftｔ）とを比較し、最大ビットシフト値のアップデートいかんを決定することができる。結果としては、プロセッサ１１０は、ｔ番目の学習過程または推論過程でアップデートされたＮ個のパラメータのビットシフト値をそれぞれ互いに比較し、ビットシフト値のうち最大値を、最大ビットシフト値と決定することができる。
【００７３】
さらには、プロセッサ１１０は、Ｎ個のパラメータのビットシフト値のうち、アンダーフローに該当する最小ビットシフト値を決定することができる。具体的には、プロセッサ１１０は、Ｎ個のパラメータのビットシフト値をそれぞれ互いに比較し、０以下の値を有するビットシフト値のうち最小値である最小ビットシフト値を決定することができる。
【００７４】
図１０は、一例により、プロセッサが固定小数点形式の小数部長をアップデートするためのアルゴリズムを図示した図面である。
【００７５】
段階ｓ１０１０において、プロセッサ１１０は、最大ビットシフト値（max＿bit＿shiftｔ）、オーバーフローの総発生回数（＃  of  overflowｔ）、ｔ番目の学習過程または推論過程でアップデートされたパラメータを量子化するための固定小数点形式の小数部長（frac＿lengthｔ−１）、ｔ番目の学習過程または推論過程でアップデートされたパラメータの総個数（Ｎ）、及びアウトライアデータレート（ＴＨ）を獲得することができる。一実施形態により、プロセッサ１１０は、図９で図示された論理演算を介して、最大ビットシフト値（max＿bit＿shiftｔ）及びオーバーフローの総発生回数（＃  of  overflowｔ）を決定することができる。また、アウトライアデータレート（ＴＨ）は、０と１との間の任意数であり、ユーザによっても設定される。
【００７６】
段階ｓ１０２０において、プロセッサ１１０は、オーバーフローの総発生回数（＃  of  overflowｔ）がＮ×ＴＨより多い場合、数式１０３０を介して、小数部長をアップデートすることができる。数式１０３０において、ａは、既設定加重値を示す。例えば、ａが１であるとき、プロセッサ１１０は、小数部長（frac＿lengthｔ−１）から、最大ビットシフト値（max＿bit＿shiftｔ）を差し引く演算を行い、小数部長をアップデートすることができる。言い換えれば、プロセッサ１１０は、小数部長（frac＿lengthｔ−１）から、最大ビットシフト値（max＿bit＿shiftｔ）を差し引く演算を行い、小数部長を、既存の小数部長（frac＿lengthｔ−１）から新たな小数部長（frac＿lengthｔ）にアップデートすることができる。従って、プロセッサ１１０は、（ｔ＋１）番目の学習過程または推論過程でアップデートされたパラメータを量子化するための固定小数点形式の小数部長（frac＿lengthｔ）を決定することができる。
【００７７】
プロセッサ１１０は、オーバーフローの総発生回数（＃  of  overflowｔ）がＮ×ＴＨほど多くない場合、小数部長を新たにアップデートせず、そのまま維持することができる。言い換えれば、プロセッサ１１０は、ｔ番目の学習過程または推論過程でアップデートされたパラメータを量子化するための小数部長（frac＿lengthｔ−１）を、（ｔ＋１）番目の学習過程または推論過程でアップデートされたパラメータを量子化するための小数部長（frac＿lengthｔ）として決定することができる。結果としては、プロセッサ１１０は、オーバーフローの総発生回数（＃  of  overflowｔ）と、比較対象になるＮ×ＴＨとから、アウトライアデータレート（ＴＨ）を０と１との間の値に設定することができるが、オーバーフローの総発生回数（＃  of  overflowｔ）がパラメータの全体個数（Ｎ）対比で相対的に微々たるものであると判断される場合、小数部長を新たにアップデートしない。
【００７８】
図１１は、他例により、プロセッサが固定小数点形式の小数部長をアップデートするためのアルゴリズムを図示した図面である。図１１の段階ｓ１１１０及びｓ１１２０は、図１０の段階ｓ１０１０及びｓ１０２０と対応するので、重複内容については、説明を省略する。
【００７９】
段階ｓ１１１０において、プロセッサ１１０は、図１０のｓ１０１０で獲得する情報以外に、追加して、最小ビットシフト値（min＿bit＿shiftｔ）を獲得することができる。言い換えれば、プロセッサ１１０は、ｔ番目の学習過程または推論過程でアップデートされたパラメータのビットシフト値のうち、アンダーフローに該当する最小ビットシフト値（min＿bit＿shiftｔ）を獲得することができる。
【００８０】
段階ｓ１１２０において、プロセッサ１１０は、オーバーフローの総発生回数（＃  of  overflowｔ）がＮ×ＴＨより多い場合、数式１１３０を介して、小数部長をアップデートすることができる。数式１１３０において、ａ及びｂは、既設定加重値を示す値であり、記号［ｘ］は、ｘを超えない最大整数を示すガウス関数記号を示す。例えば、ユーザは、ｂよりａにさらに高い加重値を設定し、小数部長（frac＿lengthｔ）を決定することができる。
【００８１】
図１２は、一実施形態による電子システムを示すブロック図である。図１２を参照すれば、電子システム１２００は、ニューラルネットワークを基に、入力データをリアルタイムに分析し、有効な情報を抽出し、抽出された情報を基に、状況判断を行ったり、電子システム１２００が搭載される電子デバイスの構成を制御したりすることができる。例えば、電子システム１２００は、ドローン、先端運転手補助システム（ＡＤＡＳ：advanced  drivers  assistance  system）のようなロボット装置、スマートＴＶ（television）、スマートフォン、医療デバイス、モバイルデバイス、映像表示デバイス、計測デバイス、ＩｏＴデバイスなどに適用され、それ以外にも、多種の電子デバイスのうち少なくとも一つにも搭載される。
【００８２】
電子システム１２００は、プロセッサ１２１０、ＲＡＭ  １２２０、ニューラルネットワーク装置１２３０、メモリ１２４０、センサモジュール１２５０及び通信モジュール１２６０を含んでもよい。電子システム１２００は、入出力モジュール、保安モジュール、電力制御装置などをさらに含んでもよい。電子システム１２００のハードウェア構成のうち一部は、少なくとも１つの半導体チップにも搭載される。ニューラルネットワーク装置１２３０は、前述のニューラルネットワーク装置１００、ニューラルネットワーク専用ハードウェア加速器自体、またはそれを含む装置でもある。
【００８３】
プロセッサ１２１０は、電子システム１２００の全般的な動作を制御する。プロセッサ１２１０は、１つのプロセッサコア（single  core）を含むか、あるいは複数のプロセッサコア（multi-core）を含んでもよい。プロセッサ１２１０は、メモリ１２４０に保存されたプログラム及び／またはデータを処理または実行することができる。一実施形態において、プロセッサ１２１０は、メモリ１２４０に保存されたプログラムを実行することにより、ニューラルネットワーク装置１２３０の機能を制御することができる。プロセッサ１２１０は、ＣＰＵ、ＧＰＵ、ＡＰなどによっても具現される。
【００８４】
ＲＡＭ  １２２０は、プログラム、データまたは命令を一時的に保存することができる。例えば、メモリ１２４０に保存されたプログラム及び／またはデータは、プロセッサ１２１０の制御コードまたは起動コードにより、ＲＡＭ  １２２０に一時的に保存される。ＲＡＭ  １２２０は、ＤＲＡＭまたはＳＲＡＭ（static  random  access  memory）のようなメモリによっても具現される。
【００８５】
ニューラルネットワーク装置１２３０は、受信される入力データを基に、ニューラルネットワークの演算を遂行し、該遂行結果を基に、情報信号を生成することができる。ニューラルネットワークは、ＣＮＮ（Convolutional  Neural  Networks）、ＲＮＮ（Recurrent  Neural  Networks）、Deep  Belief  Networks、Restricted  Boltzman  Machinesなどを含んでもよいが、それらに制限されるものではない。ニューラルネットワーク装置１２３０は、前述の分類のためのニューラルネットワークを駆動するハードウェアであり、ニューラルネットワーク専用ハードウェア加速器に該当する。
【００８６】
該情報信号は、音声認識信号、オブジェクト認識信号、映像認識信号、生体情報認識信号のような多種の認識信号のうち一つを含んでもよい。例えば、ニューラルネットワーク装置１２３０は、ビデオストリームに含まれるフレームデータを入力データとして受信し、該フレームデータから、フレームデータが示すイメージに含まれたオブジェクトに係わる認識信号を生成することができる。しかし、それらに制限されるものではなく、電子システム１２００が搭載された電子装置の種類または機能により、ニューラルネットワーク装置１２３０は、多種の入力データを受信することができ、入力データによる認識信号を生成することができる。
【００８７】
メモリ１２４０は、データを保存するための保存場所であり、ＯＳ（operating  system）、各種プログラム及び各種データを保存することができる。一実施形態において、メモリ１２４０は、ニューラルネットワーク装置１２３０の演算遂行過程で生成される中間結果、例えば、出力フィーチャマップを、出力フィーチャリスト形態または出力フィーチャマトリックス形態で保存することができる。一実施形態において、メモリ１２４０には、圧縮された出力フィーチャマップが保存される。また、メモリ１２４０は、ニューラルネットワーク装置１２３０で利用される量子化されたニューラルネットワークデータ、例えば、パラメータ、重みマップまたは重みリストを保存することができる。
【００８８】
メモリ１２４０は、ＤＲＡＭでもあるが、それに限定されるのではない。メモリ１２４０は、揮発性メモリまたは不揮発性メモリのうち少なくとも一つを含んでもよい。不揮発性メモリは、ＲＯＭ（read-only  memory）、ＰＲＯＭ（programmable  read-only  memory）、ＥＰＲＯＭ（electrically  programmable  read  only  memory）、ＥＥＰＲＯＭ（electrically  erasable  programmable  read-only  memory）、フラッシュメモリ、ＰＲＡＭ（phase-change  random  access  memory）、ＭＲＡＭ（magnetic  random  access  memory）、ＲＲＡＭ（resistive  random  access  memory（登録商標））、ＦＲＡＭ（ferroelectric  random  access  memory（登録商標））などを含む。揮発性メモリは、ＤＲＡＭ、ＳＲＡＭ、ＳＤＲＡＭ（synchronous  dynamic  random  access  memory）などを含む。実施形態において、メモリ１２４０は、ＨＤＤ（hard  disk  drive）、ＳＳＤ（solid  state  drive）、ＣＦ、ＳＤ、micro−ＳＤ、mini−ＳＤ、ｘＤまたはMemory  Stickのうち少なくとも一つを含んでもよい。
【００８９】
センサモジュール１２５０は、電子システム１２００が搭載される電子装置周辺の情報を収集することができる。センサモジュール１２５０は、電子装置の外部から、信号（例えば、映像信号、音声信号、磁気信号、生体信号、タッチ信号など）をセンシングまたは受信し、センシングまたは受信された信号をデータに変換することができる。そのために、センサモジュール１２５０は、センシング装置、例えば、マイク、撮像装置、イメージセンサ、ＬＩＤＡＲ（light  detection  and  ranging）センサ、超音波センサ、赤外線センサ、バイオセンサ及びタッチセンサなど多種のセンシング装置のうち少なくとも一つを含んでもよい。
【００９０】
センサモジュール１２５０は、変換されたデータを、ニューラルネットワーク装置１２３０に入力データとして提供することができる。例えば、センサモジュール１２５０は、イメージセンサを含んでもよく、電子装置の外部環境を撮影してビデオストリームを生成し、ビデオストリームの連続するデータフレームを、ニューラルネットワーク装置１２３０に入力データとして順に提供することができる。しかし、それらに制限されるものではなく、センサモジュール１２５０は、多種のデータをニューラルネットワーク装置１２３０に提供することができる。
【００９１】
通信モジュール１２６０は、外部装置と通信することができる多様な有線または無線のインターフェースを具備することができる。例えば、通信モジュール１２６０は、有線近距離通信網（ＬＡＮ：local  area  network）、Ｗｉ−Ｆｉ（wireless  fidelity）のような無線近距離通信網（ＷＬＡＮ（wireless  local  area  network）、ブルートゥース（Bluetooth（登録商標））のような無線個人通信網（ＷＰＡＮ：wireless  personal  area  network）、無線ＵＳＢ（wireless  universal  serial  bus）、Zigbee、ＮＦＣ（near  field  communication）、ＲＦＩＤ（radio-frequency  identification）、ＰＬＣ（power  line  communication）、または３Ｇ（３rd  generation）・４Ｇ（４th  generation）・ＬＴＥ（long  term  evolution）のような移動通信網（mobile  cellular  network）に接続可能な通信インターフェースなどを含んでもよい。
【００９２】
図１３は、一実施形態による、ニューラルネットワーク装置の動作方法について説明するための図面である。図１３に図示された方法は、図４のニューラルネットワーク装置１００、または図１２の電子システムの各構成要素によって遂行され、重複説明については、省略する。
【００９３】
段階ｓ１３１０において、ニューラルネットワーク装置１００は、パラメータそれぞれに対して、パラメータを量子化するための固定小数点形式のビット範囲を外れる程度を示すビットシフト値を計算することができる。具体的には、ニューラルネットワーク装置１００は、（ｔ−１）番目の学習過程または推論過程でアップデートされたパラメータに基づいて、既決定の固定小数点形式のビット範囲を基準に、ｔ番目パラメータ学習過程または推論過程でアップデートされたパラメータそれぞれのビットシフト値を計算することができる。ニューラルネットワーク装置１００は、パラメータのビットシフト値を計算し、パラメータに係わるオーバーフローまたはアンダーフローの総発生回数を決定することができる。
【００９４】
ニューラルネットワーク装置１００は、パラメータそれぞれについて、「１」値を有する最上位ビットを検出することができ、パラメータそれぞれについて、検出された最上位ビットと、固定小数点形式の整数部の最上位ビットとのビット数差を、ビットシフト値として計算することができる。また、ニューラルネットワーク装置１００は、パラメータそれぞれについて、固定小数点形式の整数部の最上位ビットを基準に、所定の範囲内ビットを検索し、前記「１」値を有する最上位ビットを検出することができる。
【００９５】
段階ｓ１３２０において、ニューラルネットワーク装置１００は、パラメータのビットシフト値を利用し、固定小数点形式をアップデートすることができる。ニューラルネットワーク装置１００は、ｔ番目の学習過程または推論過程において、パラメータを量子化するための既存の固定小数点形式を、新たな固定小数点形式にアップデートすることができる。例えば、ニューラルネットワーク装置１００は、オーバーフローの発生回数が、所定の値より多い場合、ビットシフト値のうち最大ビットシフト値ほど固定小数点形式内小数部長を低減させることにより、固定小数点形式をアップデートすることができる。
【００９６】
段階ｓ１３３０において、ニューラルネットワーク装置１００は、アップデートされた固定小数点形式により、学習過程または推論過程でアップデートされたパラメータを量子化することができる。具体的には、ニューラルネットワーク装置１００は、ｔ番目の学習過程または推論過程でアップデートされたパラメータのビットシフト値を介してアップデートされた固定小数点形式により、（ｔ＋１）番目の学習過程または推論過程でアップデートされたパラメータを量子化することができる。
【００９７】
前述の実施形態による装置は、プロセッサ、プログラムデータを保存して実行するメモリ、ディスクドライブのような永久保存部、外部装置と通信する通信ポート、タッチパネル、キー、ボタンのようなユーザインターフェース装置などを含んでもよい。ソフトウェアモジュールまたはアルゴリズムによって具現される方法は、前記プロセッサ上で実行可能なコンピュータで読み取り可能なコードまたはプログラム命令でもって、コンピュータで読み取り可能な記録媒体上にも保存される。ここで、該コンピュータで読み取り可能な記録媒体として、マグネチック記録媒体（例えば、ＲＯＭ、ＲＡＭ、フロッピーディスク、ハードディスクなど）、及び光学的判読媒体（例えば、ＣＤ−ＲＯＭ（compact  disc  read  only  memory）、ＤＶＤ（digital  versatile  disc））などがある。コンピュータで読み取り可能な記録媒体は、ネットワークに連結されたコンピュータシステムに分散され、分散方式でコンピュータが読み取り可能なコード保存されて実行されるのである。該媒体は、コンピュータによって読み取り可能であり、メモリに保存され、プロセッサで実行される。
【００９８】
本実施形態は、機能的なブロック構成、及び多様な処理段階で示される。そのような機能ブロックは、特定機能を遂行する多様な個数のハードウェア構成または／及びソフトウェア構成によっても具現される。例えば、一実施形態は、１以上のマイクロプロセッサの制御、または他の制御装置によって多様な機能を遂行することができる、メモリ要素、プロセッシング、ロジック、ルックアップテーブルのような直接回路構成を採用することができる。該構成要素が、ソフトウェアプログラミングまたはソフトウェア要素で実行されるように、本実施形態は、データ構造、プロセス、ル−チン、または他のプログラミング構成の組み合わせによって具現される多様なアルゴリズムを含み、Ｃ、Ｃ＋＋、ジャバ（Java（登録商標））、アセンブラのようなプログラミング言語またはスクリプティング言語によっても具現される。機能的な側面は、１以上のプロセッサで実行されるアルゴリズムによっても具現される。また、本実施形態は、電子的な環境設定、信号処理及び／またはデータ処理などのために、従来技術を採用することができる。「メカニズム」、「要素」、「手段」、「構成」のような用語は、汎用され、機械的であって物理的な構成として限定されるものではない。前記用語は、プロセッサなどと連繋され、ソフトウェアの一連のルーチンの意味を含んでもよい。
【００９９】
本実施形態で説明する特定実行は例示であり、いかなる方法によっても、技術的範囲を限定するものではない。明細書の簡潔さのために、従来の電子的な構成、制御システム、ソフトウェア、前述のシステムの他の機能的な側面の記載は、省略されている。また、図面に図示された構成要素間の線連結または連結部材は、機能的な連結、及び／または物理的または回路的な連結を例示的に示したものであり、実際の装置においては、代替可能であったり追加されたりする多様な機能的な連結、物理的な連結または回路連結としても示される。
【０１００】
本明細書（特に、特許請求の範囲で）において、「前記」の用語、及びそれと類似した指示用語の使用は、単数及び複数のいずれもに該当する。また、範囲を記載した場合、該範囲に属する個別的な値を含むものであり（それに反する記載がなければ）、詳細な説明に該範囲を構成する各個別的な値を記載した通りである。最後に、方法を構成する段階について、明白に順序を記載したり、それに反対となる記載がなければ、該段階は、適切な順序でも行われる。必ずしも該段階の記載順序に限定されるものではない。全ての例、または例示的な用語（例えば、など）の使用は、単に技術的思想について詳細に説明するためのものであり、特許請求の範囲によって限定されない以上、前述の例、または例示的な用語によって範囲が限定されるものではない。また、当業者は、多様な修正、組み合わせ及び変更が付加された特許請求の範囲内、またはその均等物の範疇内において、設計条件及びファクタによって構成されるということを理解することができるであろう。
【産業上の利用可能性】
【０１０１】
本発明の、ニューラルネットワークのパラメータを量子化する方法及びその装置は、例えば、電子システム関連の技術分野に効果的に適用可能である。
【符号の説明】
【０１０２】
２      ニューラルネットワーク
１０    ニューラルネットワーク学習器
１１    学習させられたニューラルネットワーク
２０    ニューラルネットワーク推論器
２１    量子化されたニューラルネットワーク
３０    パラメータ
１００，１２３０  ニューラルネットワーク装置
１１０，１２１０  プロセッサ
１２０，１２４０  メモリ
１２００  電子システム
１２２０  ＲＡＭ
１２５０  センサモジュール
１２６０  通信モジュール
【図１】
2020064635.tif 000006
【図２】
2020064635.tif 000007
【図３Ａ】
2020064635.tif 000008
【図３Ｂ】
2020064635.tif 000009
【図３Ｃ】
2020064635.tif 000010
【図４】
2020064635.tif 000011
【図５】
2020064635.tif 000012
【図６】
2020064635.tif 000013
【図７】
2020064635.tif 000014
【図８】
2020064635.tif 000015
【図９】
2020064635.tif 000016
【図１０】
2020064635.tif 000017
【図１１】
2020064635.tif 000018
【図１２】
2020064635.tif 000019
【図１３】
2020064635.tif 000020