(57)【要約】【課題】  ニューラルネットワークのパラメータを量子化する方法及び該装置を提供する。【解決手段】  ニューラルネットワークのパラメータを量子化する方法及び該装置は、事前に訓練されたニューラルネットワークのデータから浮動小数点タイプのパラメータ値に係わるチャネル別統計分布を分析し、チャネル別パラメータの固定小数点表現を決定し、バイアス及びチャネル別ウェートのフラクション長を決定し、決定されたフラクション長のバイアス及びチャネル別ウェートを有する固定小数点タイプの量子化されたニューラルネットワークを生成する。【選択図】      図８
2019032833.tif 000002
【特許請求の範囲】
【請求項１】
固定小数点に基づく量子化を利用するニューラルネットワークのための方法において、
浮動小数点を利用して事前に訓練されたニューラルネットワークのデータから、フィーチャマップ及びカーネルのそれぞれに含まれる各チャネルで利用される浮動小数点タイプのパラメータ値に係わるチャネル別統計分布を分析する段階と、
前記チャネル別統計分布に基づいて、前記パラメータ値の分布範囲を統計的にカバーする前記チャネル別パラメータの固定小数点表現を決定する段階と、
前記チャネル別固定小数点表現のパラメータでコンボリューション演算を行った結果に基づいて、バイアス及び前記チャネル別ウェートのフラクション長を決定する段階と、
前記決定されたフラクション長の前記バイアス及び前記チャネル別ウェートを有する固定小数点タイプの量子化されたニューラルネットワークを生成する段階と、を含む方法。
【請求項２】
前記分析する段階は、
前記ニューラルネットワークが事前に訓練される間、前記各チャネルで利用された前記浮動小数点タイプのアクチベーション、ウェート及びバイアスの前記パラメータ値に係わる前記チャネル別統計量を求めることにより、前記統計分布を分析することを特徴とする請求項１に記載の方法。
【請求項３】
前記コンボリューション演算は、
ＭＡＣ（multiply-accumulate）演算及びAdd演算を行う、複数のチャネル間の部分和演算を含み、
前記フラクション長を決定する段階は、
前記決定された固定小数点表現による入力アクチベーションのフラクション長及びウェートのフラクション長に基づいて、前記部分和演算の結果に対応する前記バイアスの前記フラクション長を決定することを特徴とする請求項１又は２に記載の方法。
【請求項４】
前記バイアスの前記決定されたフラクション長は、
前記ＭＡＣ演算の結果で求めた固定小数点表現のフラクション長のうち最長フラクション長に基づいて決定されることを特徴とする請求項３に記載の方法。
【請求項５】
前記部分和演算は、
第１チャネルの第１入力アクチベーション、及び第１ウェートに対する第１  ＭＡＣ演算、第２チャネルの第２入力アクチベーション、及び第２ウェートに対する第２  ＭＡＣ演算、並びに前記第１  ＭＡＣ演算の結果と前記第２  ＭＡＣ演算の結果とに対するAdd演算を含み、
前記フラクション長を決定する段階は、
前記第１  ＭＡＣ演算の結果に対応する第１固定小数点表現の第１フラクション長、及び前記第２  ＭＡＣ演算の結果に対応する第２固定小数点表現の第２フラクション長を獲得する段階と、
前記第１フラクション長及び前記第２フラクション長のうち最長フラクション長に基づいて、前記Add演算の結果に対応する前記バイアスの前記フラクション長を決定する段階と、を含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記フラクション長を決定する段階は、
前記第１固定小数点表現及び前記第２固定小数点表現のうちさらに短いフラクション長を有する固定小数点表現のフラクション長を、前記バイアスの前記決定されたフラクション長に基づいて、ビットシフティングする段階をさらに含み、
前記量子化されたニューラルネットワークは、前記ビットシフティングの程度に係わる情報を含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記バイアスの前記決定されたフラクション長は、前記ＭＡＣ演算の結果として求めた固定小数点表現のフラクション長のうち最短フラクション長に対応し、
前記フラクション長を決定する段階は、
前記固定小数点表現の前記フラクション長の差ほど前記ウェートのうち少なくとも１つのフラクション長を低減させ、前記チャネル別ウェートの前記フラクション長を決定することを特徴とする請求項３に記載の方法。
【請求項８】
前記部分和演算は、
第１チャネルの第１入力アクチベーション、及び第１ウェートに対する第１  ＭＡＣ演算、第２チャネルの第２入力アクチベーション、及び第２ウェートに対する第２  ＭＡＣ演算、並びに前記第１  ＭＡＣ演算の結果と、前記第２  ＭＡＣ演算の結果とに対するAdd演算を含み、
前記フラクション長を決定する段階は、
前記第１  ＭＡＣ演算の結果に対応する第１固定小数点表現の第１フラクション長、及び前記第２  ＭＡＣ演算の結果に対応する第２固定小数点表現の第２フラクション長を獲得する段階と、
前記第１フラクション長及び前記第２フラクション長のうち最短フラクション長を、前記Add演算の結果に対応する前記バイアスの前記フラクション長と決定する段階と、
前記第１  ＭＡＣ演算及び前記第２  ＭＡＣ演算のうち前記最短フラクション長を有する固定小数点表現を求めたＭＡＣ演算に入力されたウェートのフラクション長を、前記第１フラクション長及び前記第２フラクション長の差ほど低減させて調整する段階と、を含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記チャネル別統計分布は、
正規分布及びラプラス分布のうちいずれか一つに近似化された分布に対応し、
前記固定小数点表現を決定する段階は、
前記チャネル別統計分布から獲得された前記各チャネル別に、前記パラメータ値の平均、分散、標準偏差、最大値、最小値のうち少なくとも一つを利用して定義された前記チャネル別フラクション長に基づいて、前記固定小数点表現を決定することを特徴とする請求項１ないし８のうち何れか一項に記載の方法。
【請求項１０】
前記フラクション長の前記決定が完了した後、微細調整のために、前記バイアス及び前記チャネル別ウェートの前記決定されたフラクション長を制約条件にし、前記量子化されたニューラルネットワークを再訓練する段階をさらに含むことを特徴とする請求項１ないし９のうち何れか一項に記載の方法。
【請求項１１】
固定小数点に基づく量子化を利用するニューラルネットワークのための装置であって、
少なくとも１つのプログラムが保存されたメモリと、
前記少なくとも１つのプログラムを実行することにより、ニューラルネットワークのパラメータを量子化するプロセッサと、を含み、
前記プロセッサは、
浮動小数点を利用して事前に訓練されたニューラルネットワークのデータから、フィーチャマップ及びカーネルのそれぞれに含まれる各チャネルで利用される浮動小数点タイプのパラメータ値に係わるチャネル別統計分布を分析し、
前記チャネル別統計分布に基づいて、前記パラメータ値の分布範囲を統計的にカバーする前記チャネル別パラメータの固定小数点表現を決定し、
前記チャネル別固定小数点表現のパラメータでコンボリューション演算を行った結果に基づいて、バイアス及び前記チャネル別ウェートのフラクション長を決定し、
前記決定されたフラクション長の前記バイアス及び前記チャネル別ウェートを有する固定小数点タイプの量子化を利用するニューラルネットワークを生成する装置。
【請求項１２】
前記プロセッサは、
前記ニューラルネットワークが事前に訓練される間、前記各チャネルで利用された前記浮動小数点タイプのアクチベーション、ウェート及びバイアスの前記パラメータ値に係わる前記チャネル別統計量を求めることにより、前記統計分布を分析することを特徴とする請求項１１に記載の装置。
【請求項１３】
前記コンボリューション演算は、
ＭＡＣ（multiply-accumulate）演算及びAdd演算を行う、複数のチャネル間の部分和演算を含み、
前記プロセッサは、
前記決定された固定小数点表現による入力アクチベーションのフラクション長及びウェートのフラクション長に基づいて、前記部分和演算の結果に対応する前記バイアスの前記フラクション長を決定することを特徴とする請求項１１又は１２に記載の装置。
【請求項１４】
前記バイアスの前記決定されたフラクション長は、
前記ＭＡＣ演算の結果として求めた固定小数点表現のフラクション長のうち最長フラクション長に基づいて決定されることを特徴とする請求項１３に記載の装置。
【請求項１５】
前記部分和演算は、
第１チャネルの第１入力アクチベーション、及び第１ウェートに対する第１  ＭＡＣ演算、第２チャネルの第２入力アクチベーション、及び第２ウェートに対する第２  ＭＡＣ演算、並びに前記第１  ＭＡＣ演算の結果と前記第２  ＭＡＣ演算の結果とに対するAdd演算を含み、
前記プロセッサは、
前記第１  ＭＡＣ演算の結果に対応する第１固定小数点表現の第１フラクション長、及び前記第２  ＭＡＣ演算の結果に対応する第２固定小数点表現の第２フラクション長を獲得し、
前記第１フラクション長及び前記第２フラクション長のうち最長フラクション長に基づいて、前記Add演算の結果に対応する前記バイアスの前記フラクション長を決定することを特徴とする請求項１４に記載の装置。
【請求項１６】
前記プロセッサは、
前記第１固定小数点表現及び前記第２固定小数点表現のうちさらに小さいフラクション長を有する固定小数点表現のフラクション長を、前記バイアスの前記決定されたフラクション長に基づいて、ビットシフティングすることを特徴とする請求項１５に記載の装置。
【請求項１７】
前記バイアスの前記決定されたフラクション長は、前記ＭＡＣ演算の結果として求めた固定小数点表現のフラクション長のうち最短フラクション長に対応し、
前記プロセッサは、
前記固定小数点表現の前記フラクション長の差ほど前記ウェートのうち少なくとも１つのフラクション長を低減させ、前記チャネル別ウェートの前記フラクション長を決定することを特徴とする請求項１３に記載の装置。
【請求項１８】
前記部分和演算は、
第１チャネルの第１入力アクチベーション、及び第１ウェートに対する第１  ＭＡＣ演算、第２チャネルの第２入力アクチベーション、及び第２ウェートに対する第２  ＭＡＣ演算、並びに前記第１  ＭＡＣ演算の結果と、前記第２  ＭＡＣ演算の結果とに対するAdd演算を含み、
前記プロセッサは、
前記第１  ＭＡＣ演算の結果に対応する第１固定小数点表現の第１フラクション長、及び前記第２  ＭＡＣ演算の結果に対応する第２固定小数点表現の第２フラクション長を獲得し、
前記第１フラクション長及び前記第２フラクション長のうち最短フラクション長を、前記Add演算の結果に対応する前記バイアスの前記フラクション長と決定し、
前記第１  ＭＡＣ演算及び前記第２  ＭＡＣ演算のうち前記最短フラクション長を有する固定小数点表現を求めたＭＡＣ演算に入力されたウェートのフラクション長を、前記第１フラクション長及び前記第２フラクション長の差ほど低減させて調整することを特徴とする請求項１７に記載の装置。
【請求項１９】
前記チャネル別統計分布は、
正規分布及びラプラス分布のうちいずれか一つに近似化された分布に対応し、
前記プロセッサは、
前記チャネル別統計分布から獲得された前記各チャネル別に、前記パラメータ値の平均、分散、標準偏差、最大値、最小値のうち少なくとも一つを利用して定義された前記チャネル別フラクション長に基づいて、前記固定小数点表現を決定することを特徴とする請求項１１ないし１８のうち何れか一項に記載の装置。
【請求項２０】
前記プロセッサは、
前記フラクション長の前記決定が完了した後、微細調整のために、前記バイアス及び前記チャネル別ウェートの前記決定されたフラクション長を制約条件にし、前記量子化されたニューラルネットワークを再訓練することを特徴とする請求項１１ないし１９のうち何れか一項に記載の装置。
【請求項２１】
請求項１ないし１０のうち何れか一項に記載の方法を装置のコンピュータに実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、固定小数点量子化ニューラルネットワーク（neural  network）のための方法及び装置等に関する。
【背景技術】
【０００２】
ニューラルネットワークは、生物学的脳をモデリングしたコンピュータ科学的アーキテクチャを参照する。最近、ニューラルネットワーク技術の発展により、多種の電子システムにおいて、ニューラルネットワークを活用して入力データが分析し、有効な情報を抽出する研究が活発に進められている。該ニューラルネットワークの処理装置は、複雑な入力データに対する多量の演算を必要とする。従って、該ニューラルネットワークを利用し、大量の入力データをリアルタイムで分析し、所望情報を抽出するためには、該ニューラルネットワークに係わる演算を効率的に処理することができる技術が要求される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許出願公開第２０１６／０３２８６４７号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、ニューラルネットワークのパラメータを量子化する方法及び該装置を提供するところにある。本実施形態がなすべき技術的課題は、前述のような技術的課題に限定されるものではなく、以下の実施形態から他の技術的課題が類推されもする。
【課題を解決するための手段】
【０００５】
一側面によれば、固定小数点で量子化されたニューラルネットワークを生成する方法は、浮動小数点を利用して事前に訓練されたニューラルネットワークのデータから、フィーチャマップ及びカーネルのそれぞれに含まれた各チャネルで利用された浮動小数点タイプのパラメータ値に係わるチャネル別統計分布を分析する段階と、前記チャネル別統計分布に基づいて、前記パラメータ値の分布範囲を統計的にカバーする前記チャネル別パラメータの固定小数点表現を決定する段階と、前記チャネル別固定小数点表現のパラメータでコンボリューション演算を行った結果に基づいて、バイアス及び前記チャネル別ウェートのフラクション長を決定する段階と、前記決定されたフラクション長の前記バイアス及び前記チャネル別ウェートを有する、固定小数点タイプの量子化されたニューラルネットワークを生成する段階と、を含む。
【０００６】
他の側面によれば、該装置は、少なくとも１つのプログラムが保存されたメモリと、前記少なくとも１つのプログラムを実行することにより、ニューラルネットワークのパラメータを量子化するプロセッサと、を含み、前記プロセッサは、浮動小数点を利用して事前に訓練されたニューラルネットワークのデータから、フィーチャマップ及びカーネルのそれぞれに含まれた各チャネルで利用された浮動小数点タイプのパラメータ値に係わるチャネル別統計分布を分析し、前記チャネル別統計分布に基づいて、前記パラメータ値の分布範囲を統計的にカバーする前記チャネル別パラメータの固定小数点表現を決定し、前記チャネル別固定小数点表現のパラメータでコンボリューション演算を行った結果に基づいて、バイアス及び前記チャネル別ウェートのフラクション長を決定し、前記決定されたフラクション長の前記バイアス及び前記チャネル別ウェートを有する、固定小数点タイプの量子化されたニューラルネットワークを生成する。
【図面の簡単な説明】
【０００７】
【図１】一実施形態による、算出グラフ（computational  graph）のアーキテクチャについて説明するための図面である。
【図２】一実施形態による、ニューラルネットワークで行われる演算について説明するための図面である。
【図３】一実施形態によるニューラルネットワーク量子化装置のハードウェア構成を図示したブロック図である。
【図４】一実施形態による、事前に訓練されたニューラルネットワークを量子化し、ハードウェア加速器に採用することについて説明するための図面である。
【図５】浮動小数点及び固定小数点について説明するための図面である。
【図６】固定小数点において、フラクション長と正確度との関係について説明するための図面である。
【図７】ニューラルネットワークのパラメータが、レイヤ別に同一固定小数点表現に量子化される場合について説明するための図面である。
【図８】一実施形態によって、ニューラルネットワークのパラメータが、チャネル別に同一な固定小数点表現に量子化される場合について説明するための図面である。
【図９】一実施形態による、チャネルで利用されたパラメータの統計分布について説明するための図面である。
【図１０】他の実施形態による、チャネルで利用されたパラメータの統計分布について説明するための図面である。
【図１１】一実施形態によって、固定小数点タイプの一部パラメータのフラクション長を決定することについて説明するための図面である。
【図１２】図１１の方式を利用するニューラルネットワークパラメータの量子化アルゴリズムを図示した図面である。
【図１３】他の実施形態によって、固定小数点タイプの一部パラメータのフラクション長を決定することについて説明するための図面である。
【図１４】図１３の方式を利用するニューラルネットワークパラメータの量子化アルゴリズムを図示した図面である。
【図１５】図７で説明されたレイヤ別量子化について説明するための図面である。
【図１６】一実施形態によって、量子化されたニューラルネットワークを再訓練（retrain）することについて説明するための図面である。
【図１７】レイヤ別量子化とチャネル別量子化との正確度を比較したシミュレーション結果を図示した図面である。
【図１８】再訓練による量子化されたニューラルネットワークの正確度変化に係わるシミュレーション結果を図示した図面である。
【図１９】一実施形態による電子システムを示すブロック図である。
【図２０】一実施形態による、ニューラルネットワークのパラメータを量子化する方法のフローチャートである。
【発明を実施するための形態】
【０００８】
本実施形態で使用される用語は、本実施形態での機能を考慮しながら、可能な限り、現在汎用されている一般的な用語を選択したが、それは、当該技術分野当業者の意図、判例、新たな技術の出現などによっても異なる。また、特定の場合、任意に選定された用語もあり、その場合、当該実施形態の説明部分で、詳細にその意味を記載する。従って、本実施形態で使用される用語は、単純な用語の名称ではなく、その用語が有する意味、及び本実施形態の全般にわたる内容を基に定義されなければならない。
【０００９】
一実施形態に係わる説明において、ある部分が他の部分と連結されているとするとき、それは、直接に連結されている場合だけではなく、その中間に、他の構成要素を挟んで電気的に連結されている場合も含む。また、ある部分がある構成要素を含むとするとき、それは、特別に反対となる記載がない限り、他の構成要素を除くものではなく、他の構成要素をさらに含んでもよいということを意味する。
【００１０】
本実施形態で使用される「構成される」または「含む」というような用語は、明細書上に記載されたさまざまな構成要素、またはさまざまな段階を必ずしもいずれも含むと解釈されるものではなく、そのうちの一部構成要素または一部段階は、含まれず、あるいは、追加的な構成要素または段階をさらに含んでもよいと解釈されるものである。
【００１１】
下記実施形態に係わる説明は、権利範囲を制限するものと解釈されるものではなく、当該技術分野の当業者が容易に類推することができることは、本実施形態の権利範囲に属すると解釈されなければならない。以下、添付された図面を参照しながら、ただ例示のための実施形態について詳細に説明する。
【００１２】
図１は、一実施形態による算出グラフ（computational  graph）のアーキテクチャについて説明するための図面である。
【００１３】
図１を参照すれば、算出グラフ１は、ノード及びエッジを利用して表現された数学的モデルを示すグラフである。算出グラフ１のアーキテクチャは、ニューラルネットワーク（neural  network）のアーキテクチャに該当するが、それ以外にも、多様なモデルを表現することができる。ここで、該ニューラルネットワークは、デープニューラルネットワーク（ＤＮＮ：deep  neural  network）またはｎ階層ニューラルネットワーク（ｎ−layers  neural  networks）のアーキテクチャでもある。ＤＮＮまたはｎ階層ニューラルネットワークは、コンボリューションニューラルネットワーク（ＣＮＮ：convolutional  neural  networks）、リカレントニューラルネットワーク（ＲＮＮ：recurrent  neural  networks）、deep  belief  networks、restricted  Boltzman  machinesなどにも該当する。例えば、該ニューラルネットワークは、コンボリューションニューラルネットワーク（ＣＮＮ）としても具現されるが、それに制限されるものではない。図１の算出グラフ１がコンボリューションニューラルネットワークを表現するものである場合、算出グラフ１は、コンボリューションニューラルネットワークのうち一部のレイヤにも該当する。従って、算出グラフ１は、コンボリューションニューラルネットワークの、コンボリューションレイヤ、プーリングレイヤ（pooling  layer）、フリーコネクテッド（fully  connected）レイヤなどにも該当する。ただし、以下では、便宜上、算出グラフ１がコンボリューションニューラルネットワークのコンボリューションレイヤに該当すると仮定して説明するが、それに制限されず、算出グラフ１は、他の数学的モデルの表現にも該当する。
【００１４】
コンボリューションレイヤにおいて、第１フィーチャマップＦＭ（feature  map）１は、入力フィーチャマップに該当し、第２フィーチャマップＦＭ２は、出力フィーチャマップにも該当する。該フィーチャマップは、入力データの多様な特徴が表現されたデータセットを意味する。フィーチャマップＦＭ１，ＦＭ２は、二次元以上の高次元マトリックスでもあり、それぞれのアクチベーション（activation）パラメータを有する。フィーチャマップＦＭ１，ＦＭ２が、例えば、三次元フィーチャマップに該当する場合、フィーチャマップＦＭ１，ＦＭ２は、幅Ｗ（または、カラムともいう）、高さＨ（または、ロウともいう）及び深さＤを有する。このとき、深さＤは、チャネルの個数とも呼ばれる。
【００１５】
コンボリューションレイヤにおいて、第１フィーチャマップＦＭ１及びウェートマップＷＭに対するコンボリューション演算が行われ、その結果、第２フィーチャマップＦＭ２が生成される。ウェートマップＷＭは、第１フィーチャマップＦＭ１をフィルタリングし、フィルタまたはカーネル（kernel）と呼ばれる。ウェートマップＷＭの深さ、すなわち、ウェートマップＷＭのチャネル個数は、第１フィーチャマップＦＭ１の深さと、第２フィーチャマップＦＭ２の深さとを乗じた値、すなわち、第１フィーチャマップＦＭ１のチャネル個数と、第２フィーチャマップＦＭ２のチャネル個数とを乗じた値と同一である。ただし、ウェートマップＷＭが四次元マトリックスであり、カーネルの大きさ（kernel  size）がｋである場合、ウェートマップＷＭのチャネル個数は「（第１フィーチャマップＦＭ１の深さ）＊（第２フィーチャマップＦＭ２の深さ）＊ｋ＊ｋ」のようにも計算される。ウェートマップＷＭは、第１フィーチャマップＦＭ１をスライディングウィンドウ方式で横切るようにシフトされる。各シフトの間、ウェートマップＷＭに含まれるウェートそれぞれが、第１フィーチャマップＦＭ１と重畳された領域での全てのフィーチャ値と乗じられて加えられる。第１フィーチャマップＦＭ１とウェートマップＷＭとがコンボリューションされることにより、第２フィーチャマップＦＭ２の１つのチャネルが生成される。図１には、１つのウェートマップＷＭが表示されているが、実質的には、複数のウェートマップが、第１フィーチャマップＦＭ１とコンボリューションされ、第２フィーチャマップＦＭ２の複数のチャネルが生成される。
【００１６】
一方、コンボリューションレイヤの第２フィーチャマップＦＭ２は、次のレイヤの入力フィーチャマップにもなる。例えば、第２フィーチャマップＦＭ２は、プーリング（pooling）レイヤの入力フィーチャマップにもなる。
【００１７】
図２は、一実施形態による、ニューラルネットワークで行われる演算について説明するための図面である。
【００１８】
図２を参照すれば、ニューラルネットワーク２は、入力レイヤ、ヒドゥンレイヤ（又は隠れレイヤ）及び出力レイヤを含む構造を有し、受信される入力データ（例えば、I1及びI2）を基に演算を行い、該遂行結果を基に、出力データ（例えば、O1及びO2）を生成することができる。
【００１９】
ニューラルネットワーク２は、前述のように、２個以上のヒドゥンレイヤを含むＤＮＮまたはｎ階層ニューラルネットワークでもある。例えば、図２に図示されているように、ニューラルネットワーク２は、入力レイヤLayer  １、２個のヒドゥンレイヤLayer  ２及びLayer  ３、並びに出力レイヤLayer  ４を含むＤＮＮでもある。ニューラルネットワーク２がＤＮＮアーキテクチャに具現された場合、有効な情報を処理することができるさらに多くのレイヤを含むので、ニューラルネットワーク２は、シングルレイヤを有するニューラルネットワークより複雑なデータ集合を処理することができる。一方、ニューラルネットワーク２は、４個のレイヤを含むように図示されているが、それは、例示に過ぎず、ニューラルネットワーク２は、さらに少ないか、多くのレイヤを含むか、あるいはさらに少ないか、多くのチャネルを含んでもよい。すなわち、ニューラルネットワーク２は、図２に図示されたところとは異なる、多様な構造のレイヤを含んでもよい。
【００２０】
ニューラルネットワーク２に含まれたレイヤそれぞれは、複数のチャネルを含んでもよい。該チャネルは、ニューロン（neuron）、プロセッシングエレメント（ＰＥ：processing  element）、ユニット（unit）、またはそれと類似した用語で知られた、複数の人工ノード（artificial  node）にも該当する。例えば、図２に図示されているように、Layer  １及びLayer  ４のそれぞれは、２個のチャネル（ノード）を含み、Layer  ２及びLayer  ３は、それぞれ３個のチャネルを含んでもよい。ただし、それは、例示に過ぎず、ニューラルネットワーク２に含まれたレイヤは、それぞれ多様な個数のチャネル（ノード）を含んでもよい。
【００２１】
ニューラルネットワーク２のレイヤそれぞれに含まれたチャネルは、互いに連結されてデータを処理することができる。例えば、１つのチャネルは、他のチャネルからデータを受信して演算することができ、演算結果をさらに他のチャネルに出力することができる。
【００２２】
チャネルそれぞれの入力及び出力は、入力アクチベーション及び出力アクチベーションとも称される。すなわち、該アクチベーションは、１チャネルの出力であると同時に、次のレイヤに含まれたチャネルの入力に該当するパラメータでもある。一方、該チャネルそれぞれは、以前レイヤに含まれたチャネルから受信されたアクチベーション及びウェートに基づいて、自体のアクチベーションを決定することができる。該ウェートは、各チャネルでの出力アクチベーションを計算するために利用されるパラメータであり、チャネル間の連結関係に割り当てられる値でもある。
【００２３】
該チャネルそれぞれは、入力を受信し、出力アクチベーションを出力する演算ユニット（computational  unit）またはプロセッシングエレメント（ＰＥ）によっても処理され、チャネルそれぞれの入出力は、マッピングされる。例えば、σは、アクチベーション関数（activation  function）であり、Wijkは、（ｉ−１）番目レイヤに含まれたｋ番目チャネルから、ｉ番目レイヤに含まれたｊ番目チャネルへのウェートであり、bijは、ｉ番目レイヤに含まれたｊ番目チャネルのバイアス（bias）であり、aijは、ｉ番目レイヤのｊ番目チャネルのアクチベーションであるとするとき、アクチベーションaijは、次のような数式（１）を利用しても計算される。
【００２４】
【数１】
2019032833.tif 000003
図２に図示されているように、２番目レイヤLayer  ２の最初チャネルＣＨ１のアクチベーションは、a21とも表現される。また、a21は、数式（１）により、
a21=σ(W21,1×a11＋W21,2×a12＋b21)
の値を有することができる。ただし、前述の数式（１）は、ニューラルネットワーク２において、データを処理するために利用されるアクチベーション及びウェートについて説明するための例示であるのみ、それに制限されるものではない。該アクチベーションは、以前レイヤから受信されたアクチベーションの和（sum）にアクチベーション関数を適用した値を、ＲｅＬＵ（rectified  linear  unit）を通過させることによって獲得された値でもある。
【００２５】
前述のように、ニューラルネットワーク２においては、数多くのデータ集合が相互連結された複数のチャネル間で交換され、レイヤを通過しながら数多くの演算過程を経る。従って、複雑な入力データの処理に必要な演算量を低減させながらも、正確度損失を最小化させることができる技術が要求される。
【００２６】
図３は、一実施形態によるニューラルネットワーク量子化装置のハードウェア構成を図示したブロック図である。
【００２７】
図３を参照すれば、ニューラルネットワーク量子化装置１０は、プロセッサ１１０及びメモリ１２０を含む。図３に図示されたニューラルネットワーク量子化装置１０には、本実施形態に係わる構成要素だけが図示されている。従って、ニューラルネットワーク量子化装置１０には、図３に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、当業者に自明であろう。
【００２８】
ニューラルネットワーク量子化装置１０は、ニューラルネットワークを生成するか、ニューラルネットワークを訓練（train）（または、学習（learn））するか、浮動小数点タイプのニューラルネットワークを固定小数点タイプのニューラルネットワークに量子化するか、あるいはニューラルネットワークを再訓練（retrain）する機能のような多様なプロセッシング機能を有するコンピュータデバイスに該当する。例えば、ニューラルネットワーク量子化装置１０は、ＰＣ（personal  computer）、サーバデバイス、モバイルデバイスなどの多種のデバイスによっても具現される。
【００２９】
プロセッサ１１０は、ニューラルネットワーク量子化装置１０を制御するための全般的な機能を遂行する役割を行う。例えば、プロセッサ１１０は、ニューラルネットワーク量子化装置１０内のメモリ１２０に保存されたプログラムを実行することにより、ニューラルネットワーク量子化装置１０を全般的に制御する。プロセッサ１１０は、ニューラルネットワーク量子化装置１０内に具備されたＣＰＵ（central  processing  unit））、ＧＰＵ（graphics  processing  unit）、ＡＰ（application  processor）などによっても具現されるが、それらに制限されるものではない。
【００３０】
メモリ１２０は、ニューラルネットワーク量子化装置１０内で処理される各種データを保存するハードウェアであり、例えば、メモリ１２０は、ニューラルネットワーク装置１０で処理されたデータ、及び処理されるデータを保存することができる。また、メモリ１２０は、ニューラルネットワーク量子化装置１０によって駆動されるアプリケーション、ドライバなどを保存することができる。メモリ１２０は、ＤＲＡＭ（dynamic  random  access  memory）でもあるが、それに限定されるのではない。メモリ１２０は、揮発性メモリ（volatile  memory）または不揮発性メモリ（nonvolatile  memory）のうち少なくとも一つを含んでもよい。該不揮発性メモリは、ＲＯＭ（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））などを含む。揮発性メモリは、ＤＲＡＭ（dynamic  random  access  memory）、ＳＲＡＭ（static  random  access  memory）、ＳＤＲＡＭ（synchronous  dynamic  random  access  memory）などを含む。一実施形態において、メモリ１２０は、ＨＤＤ（hard  disk  drive）、ＳＳＤ（solid-state  drive）、ＣＦ（compact  flash）、ＳＤ（secure  digital）、Micro−ＳＤ（micro  secure  digital）、Mini−ＳＤ（mini  secure  digital）、ｘＤ（extreme  digital）またはMemory  Stickのうち少なくとも一つを含んでもよい。
【００３１】
プロセッサ１１０は、与えられた初期ニューラルネットワークを反復的に訓練（学習）させることにより、訓練されたニューラルネットワークを生成することができる。このとき、初期ニューラルネットワークは、ニューラルネットワークの処理正確度確保次元で、浮動小数点タイプのパラメータ、例えば、３２ビット浮動小数点精密度（３２bit  floating  point  precision）のパラメータを有することができる。ここで、該パラメータは、例えば、ニューラルネットワークの入出力アクチベーション、ウェート、バイアスなどニューラルネットワークに入出力される多種のデータを含んでもよい。該ニューラルネットワークの反復的な訓練が進められることにより、該ニューラルネットワークの浮動小数点パラメータは、与えられた入力に対して、さらに正確な出力を演算するために調整される（tuned）。
【００３２】
ただし、該浮動小数点は、固定小数点に比べ、相対的に多くの演算量と、多くのメモリアクセス頻度とが要求される。特に、該ニューラルネットワークの処理に必要となる演算量のほとんどは、多様なパラメータの演算を行うコンボリューション演算と知られている。従って、比較的処理性能が低いスマートフォン・タブレットＰＣ・ウェアラブルデバイスのようなモバイルデバイス、埋め込み（embedded）デバイスなどでは、浮動小数点タイプのパラメータを有するニューラルネットワークの処理が円滑には進行しないことが懸念される。結局、かようなデバイスにおいて、演算量を十分に低減させながら、許容可能な正確度損失内において、ニューラルネットワークを駆動させるためには、該ニューラルネットワークで処理される浮動小数点タイプのパラメータは、量子化されることが望ましい。ここで、該パラメータ量子化は、浮動小数点タイプのパラメータを、固定小数点タイプのパラメータに変換することを意味する。
【００３３】
ニューラルネットワーク量子化装置１０は、該ニューラルネットワークが採用される（deployed）デバイス（例えば、モバイルデバイス、埋め込みデバイスなど）の処理性能を考慮し、訓練されたニューラルネットワークのパラメータを、所定ビットの固定小数点タイプに変換する量子化を行い、ニューラルネットワーク量子化装置１０は、量子化されたニューラルネットワークを採用するデバイスに伝達する。該ニューラルネットワークが採用されるデバイスは、具体的な例示として、該ニューラルネットワークを利用した音声認識・映像認識などを行う自律走行自動車、ロボティックス、スマートフォン、タブレットデバイス、ＡＲ（augmented  reality）デバイス、ＩｏＴ（internet  of  things）デバイスなどでもあるが、それらに制限されるものではない。
【００３４】
プロセッサ１１０は、メモリ１２０に保存された、浮動小数点を利用して事前に訓練された（pre-trained）ニューラルネットワークのデータを獲得する。事前に訓練されたニューラルネットワークは、浮動小数点タイプのパラメータで反復的に訓練されたデータでもある。該ニューラルネットワークの訓練は、訓練セット（train  set）データを入力とし、まず反復的に訓練され、続いてテストセット（test  set）データでさらに反復的に訓練されたものでもあるが、必ずしもそれらに制限されるものではない。該訓練セットデータは、該ニューラルネットワークを訓練させるための入力データであり、該テストセットデータは、該訓練セットデータと重ならない入力データであり、該訓練セットデータで訓練されたニューラルネットワークの性能を測定しながら訓練させるためのデータである。
【００３５】
プロセッサ１１０は、事前に訓練されたニューラルネットワークデータから、フィーチャマップ及びカーネルのそれぞれに含まれた各チャネルで利用された浮動小数点タイプのパラメータ値に係わるチャネル別統計分布を分析する。このとき、プロセッサ１１０は、該ニューラルネットワークが事前に訓練される間、各チャネルで利用された浮動小数点タイプのアクチベーション、ウェート及びバイアスのパラメータ値に係わるチャネル別統計量を求めることにより、統計分布を分析することができる。
【００３６】
プロセッサ１１０は、分析されたチャネル別統計分布に基づいて、パラメータ値の分布範囲を統計的にカバーする、チャネル別パラメータの固定小数点表現を決定する。それにより、浮動小数点タイプのニューラルネットワークは、固定小数点タイプのニューラルネットワークに変換される。本実施形態によれば、浮動小数点タイプから固定小数点タイプへの変換は、各チャネルに対する統計分布に基づいて行われるので、各チャネルに割り当てられた固定小数点表現は、チャネルごとに同じであっても互いに異なっていてもよい。すなわち、チャネル別パラメータの固定小数点表現の少数部分又はフラクション長（fraction  length）がまちまちでもある。
【００３７】
さらに、プロセッサ１１０は、チャネル別固定小数点表現のパラメータで、フィーチャマップとカーネルとのコンボリューション演算を行った結果に基づいて、バイアス及びチャネル別ウェートのフラクション長を決定する。一方、バイアスのフラクション長、及びチャネル別ウェートのフラクション長は量子化されたニューラルネットワークの制約条件（constraint）にも設定される。
【００３８】
プロセッサ１１０により、各チャネル別パラメータが固定小数点タイプに量子化されるアルゴリズムについては、以下、当該図面（例えば、図１１ないし図１４）を参照し、具体的に説明する。
【００３９】
一方、メモリ１２０は、例えば、訓練されていない初期ニューラルネットワークデータ、訓練過程で生成されたニューラルネットワークデータ、全ての訓練が完了したニューラルネットワークデータ、量子化されたニューラルネットワークデータなど、プロセッサ１１０によって処理されるか、あるいは処理されたニューラルネットワーク関連データセットを保存することができ、またプロセッサ１１０によって実行されるニューラルネットワークの訓練アルゴリズム、量子化アルゴリズムなどに係わる多様なプログラムを保存することができる。
【００４０】
図４は、一実施形態による、事前に訓練されたニューラルネットワークを量子化し、ハードウェア加速器に採用することについて説明するための図面である。
【００４１】
図４を参照すれば、前述のように、ＰＣ、サーバのようなニューラルネットワーク量子化装置１０（図３）において、プロセッサ１１０（図３）は、浮動小数点タイプ（例えば、３２ビット浮動小数点タイプ）のニューラルネットワーク４１０を訓練する（図４左側）。事前に訓練されたニューラルネットワーク４１０自体は、浮動小数点タイプのパラメータにより、低電力または低性能のハードウェア加速器で効率的には処理されないので、ニューラルネットワーク量子化装置１０のプロセッサ１１０は、浮動小数点タイプのニューラルネットワーク４１０を、固定小数点タイプ（例えば、１６ビット以下の固定小数点タイプ）のニューラルネットワーク４２０に量子化する。該ハードウェア加速器は、ニューラルネットワーク４２０の駆動のための専用ハードウェアであり、比較的、低電力または低性能に具現されるために、浮動小数点演算よりは、固定小数点演算により、適切に具現される。該ハードウェア加速器は、例えば、ニューラルネットワーク駆動のための専用モジュールであるＮＰＵ（neural  processing  unit）、ＴＰＵ（tensor  processing  unit）、Neural  Engineなどに該当するが、それらに制限されるものではない。
【００４２】
量子化されたニューラルネットワーク４２０を駆動するハードウェア加速器は、ニューラルネットワーク量子化装置１０とは別途の独立したデバイスによっても具現される。しかし、それに制限されるものではなく、該ハードウェア加速器は、ニューラルネットワーク量子化装置１０と同一装置内にも具現される。
【００４３】
図５は、浮動小数点及び固定小数点について説明するための図面である。
【００４４】
図５の浮動小数点例示５１０を参照すれば、該浮動小数点値は、ａ×２ｂの形式によっても表現され、ここで、ａは、仮数部（fraction  part）、ｂは、指数部（exponent）に該当する。該浮動小数点値は、１ビットの符号ビット（sign）、８ビットの指数部ビット、及び２３ビットの仮数部ビットを含む３２ビットによって表現されてもよい。
【００４５】
次に、固定小数点例示５２０を参照すれば、固定小数点は、「Ｑｍ．ｎ」とも表現される（ｍ、ｎは、自然数である）。ここで、「ｍ」は、指数部を示すビットの個数であり、「ｎ」は、仮数部を示すビットの個数である。従って、固定小数点のビット幅（bit  width）は、符号の１ビット、指数部のｍビット、及び仮数部のｎビットを合わせ、１＋ｍ＋ｎである。該固定小数点ビットのうち仮数部を示すビットは、ｎビットであるので、フラクション長は、ｎである。例えば、「Ｑ３．４」は、符号１ビット、指数部３ビット及び仮数部４ビットを有する総８ビットの固定小数点値であり、「Ｑ１．３０」は、符号１ビット、指数部１ビット及び仮数部３０ビットを有する総３２ビットの固定小数点値であり、「Ｑ１５．１６」は、符号１ビット、指数部１５ビット及び仮数部１６ビットを有する総３２ビットの固定小数点値である。
【００４６】
図６は、固定小数点において、フラクション長と正確度との関係について説明するための図面である。
【００４７】
図６を参照すれば、固定小数点に割り当てられた全てビット幅が３ビットであると仮定し、フラクション長が０であるＱ２．０の固定小数点表現６１０と、フラクション長が１であるＱ１．１の固定小数点表現６２０との比較が説明されている。
【００４８】
Ｑ２．０は、指数部が２ビットであり、仮数部が０ビットであるので、−４から３までの固定小数点値が表現され、表現可能な固定小数点値間の間隔は、１である。そして、Ｑ１．１は、指数部が１ビットであり、仮数部が１ビットであるので、−２から１．５までの固定小数点値が表現され、表現可能な固定小数点値間の間隔は、０．５である。
【００４９】
比較すれば、Ｑ２．０の固定小数点表現６１０と、Ｑ１．１の固定小数点表現６２０は、同じビット数（即ち、３ビット）が割り当てられているが、Ｑ２．０は、より広範囲の固定小数点値の表現が可能である代わりに、固定小数点値間の間隔が広いので、正確度は低い。相対的に、Ｑ１．１は、より狭い範囲の固定小数点値しか表現できないがその代わりに、固定小数点値間の間隔が狭いので、正確度は高い。結局、固定小数点値の正確度は、フラクション長、すなわち、フラクションビットの割り当て個数に依存するという点が分かる。
【００５０】
図７は、ニューラルネットワークのパラメータが、レイヤ別に同一固定小数点表現に量子化される場合について説明するための図面である。
【００５１】
図７を参照すれば、ニューラルネットワーク７００のｋ番目レイヤには、複数のチャネルが含まれ、多様な浮動小数点値７１０が利用される。もしｋ番目レイヤで利用された浮動小数点値７１０のうち、最大浮動小数点値７１２を基準に、固定小数点量子化が行われるのであるならば、最小浮動小数点値７１４から量子化された固定小数点表現に係わる正確度は、非常に低くなってしまう。反対に、最小浮動小数点値７１４を基準に、固定小数点量子化が行われるのであるならば、最大浮動小数点値７１２から量子化された固定小数点表現に係わる正確度も、非常に低くなってしまう。従って、レイヤ別（すなわち、レイヤに含まれたチャネル全て）同一固定小数点表現に量子化が行われる場合、すなわち、レイヤ別同一フラクション長を有する固定小数点表現に量子化が行われる場合には、量子化されたニューラルネットワークの正確度が低くなってしまう。
【００５２】
図８は、一実施形態によって、ニューラルネットワークのパラメータがチャネル別に同一な固定小数点表現に量子化される場合について説明するための図面である。
【００５３】
図８を参照すれば、ニューラルネットワークのレイヤそれぞれに含まれたチャネル別固定小数点量子化が行われる。例えば、あるレイヤにおいて、チャネル１で利用された浮動小数点パラメータの値の分布範囲と、チャネル２で利用された浮動小数点パラメータの値の分布範囲は、異なる。従って、チャネル１及びチャネル２それぞれの浮動小数点パラメータが互いに異なるフラクション長を有する固定小数点表現のパラメータに量子化されるならば、図７で説明された正確度損失が取り返される。
【００５４】
従って、図３のプロセッサ１１０は、チャネル１の浮動小数点パラメータを、チャネル１の浮動小数点パラメータ値の分布範囲が統計的にカバーされるフラクション長の固定小数点表現に量子化する。また、プロセッサ１１０は、残りチャネルそれぞれの浮動小数点パラメータも残りチャネルそれぞれの浮動小数点パラメータ値が統計的にカバーされることができるフラクション長の固定小数点表現に量子化する。すなわち、浮動小数点タイプのパラメータを固定小数点タイプのパラメータに量子化することは、ニューラルネットワークのレイヤに含まれたチャネル単位で行われる。プロセッサ１１０は、事前に訓練されたニューラルネットワークに対して、かような方式のチャネル別量子化を行う。
【００５５】
図９は、一実施形態による、チャネルで利用されたパラメータの統計分布について説明するための図面である。
【００５６】
図９を参照すれば、浮動小数点タイプのパラメータを有するニューラルネットワークの反復的な訓練により、レイヤに含まれたそれぞれのチャネルごとに固有の浮動小数点値（すなわち、パラメータ値）の分布が生成される。図３のプロセッサ１１０は、事前に訓練されたニューラルネットワークデータから、フィーチャマップの各チャネル別、カーネルの各チャネル別に、浮動小数点タイプのパラメータ値の統計量に基づいたチャネル別統計分布を分析する。具体プロセッサ１１０は、各チャネル別に、アクチベーション、ウェート及びバイアスの値に係わる統計量を求め、各チャネル別に、統計量を各チャネル別の正規分布（ガウシアン分布）９００の確率密度関数（ＰＤＦ）で正規化する。ただし、図９においては、便宜上、プロセッサ１１０が統計量を正規分布９００の確率密度関数（ＰＤＦ）で正規化することを例として挙げたが、それに制限されるのではない。すなわち、プロセッサ１１０は、正規分布９００ではない他の多種の統計分布または確率分布を利用して、統計量が分析することができる。図９の正規分布９００は、あるフィーチャマップに含まれた１チャネルでの浮動小数点タイプのアクチベーション値の分布でもあり、あるいはあるカーネルに含まれた１チャネルでの浮動小数点タイプのウェート値の分布でもある。
【００５７】
プロセッサ１１０は、正規分布９００に基づいて、当該チャネルのパラメータを、いかなるフラクション長を有する固定小数点表現に量子化するかということに係わる量子化レベルを判断することができる。具体的には、プロセッサ１１０は、正規分布９００において、パラメータの統計的最大値Ｘｍａｘ及び統計的最小値Ｘｍｉｎを求め、該統計的最大値Ｘｍａｘと統計的最小値Ｘｍｉｎとの範囲の浮動小数点値を統計的にカバーすることができる固定小数点表現を決定することができる。このとき、該フラクション長は、量子化レベルによって共に決定される。
【００５８】
統計的最大値Ｘｍａｘ及び統計的最小値Ｘｍｉｎは、量子化エラー（quantization  error）を最小化させることができる範囲に基づいた値でもある。本実施形態によれば、統計的最大値Ｘｍａｘ及び統計的最小値Ｘｍｉｎは、多様に定義される。例えば、統計的最大値Ｘｍａｘ及び統計的最小値Ｘｍｉｎは、正規分布９００において、パラメータの実際最大パラメータ値及び実際最小パラメータ値にも該当する。または、統計的最大値Ｘｍａｘ及び統計的最小値Ｘｍｉｎは、正規分布９００の平均、分散または標準偏差などを基準に、求めた、確率的に量子化エラーを最小化させる上限及び下限の範囲でもある。一方、与えられた正規分布の確率密度関数から、量子化エラーを最小化させるための最適範囲を計算する方式は、当該技術分野に多く紹介されており、本実施形態は、かような方式を適用して与えられた正規分布９００に適する固定小数点表現を決定することができる。
【００５９】
図１０は、他の実施形態による、チャネルで利用されたパラメータの統計分布について説明するための図面である。
【００６０】
図１０を参照すれば、図９の正規分布９００の代わりに、プロセッサ１１０は、各チャネル別に、統計量を各チャネル別ラプラス分布１０００の確率密度関数（ＰＤＦ）で正規化することができる。プロセッサ１１０は、図９で説明したところと同様に、与えられたラプラス分布１０００に適する統計的最大値Ｘｍａｘ及び統計的最小値Ｘｍｉｎを求めることにより、当該チャネルのパラメータに係わる固定小数点表現を決定することができる。
【００６１】
すなわち、プロセッサ１１０は、図９または図１０での説明のように、チャネル別統計分布を分析し、分析されたチャネル別統計分布に基づいて、浮動小数点タイプのニューラルネットワークパラメータから、チャネル別パラメータの固定小数点表現を決定する。プロセッサ１１０によって利用される統計分布は、正規分布及びラプラス分布のうちいずれか一つに近似化された分布に対応する。ただし、前述のように、プロセッサ１１０は、正規分布及びラプラス分布以外にも、他の多種の統計分布または確率分布を利用して、統計量が分析することができる。このとき、プロセッサ１１０は、チャネル別統計分布から獲得された当該チャネルに分布したパラメータの浮動小数点値に係わる平均、分散、標準偏差、最大値、最小値のうち少なくとも一つを利用して定義されたチャネル別フラクション長に基づいて、固定小数点表現を決定することができる。
【００６２】
図１１は、一実施形態によって、固定小数点タイプの一部パラメータのフラクション長を決定することについて説明するための図面である。
【００６３】
図３のプロセッサ１１０は、図８ないし図１０で説明されたニューラルネットワークのパラメータの固定小数点表現の決定後、バイアス１１１０のフラクション長を決定することができる。
【００６４】
図１１を参照すれば、あるレイヤの第１チャネル及び第２チャネルにおいて、コンボリューション演算が行われることが例示されている。コンボリューション演算は、ＭＡＣ（multiply-accumulate）演算及びAdd演算を行う、複数のチャネル間の部分和演算を含む。一方、入力フィーチャマップ（ＩＦＭ）及びカーネルについては、１６ビットが割り当てられ、部分和演算については、４８ビットが割り当てられ、出力フィーチャマップ演算（ＯＦＭ）には、１６ビットが割り当てられ、出力フィーチャマップ（ＯＦＭ−ＦＷ）には、４８ビットが割り当てられたと仮定する。
【００６５】
図１１の部分和演算は、入力フィーチャマップ（ＩＦＭ）の第１チャネルの第１入力アクチベーションｉ１、及びカーネルの第１チャネルの第１ウェートｗ１１に対する第１  ＭＡＣ演算１１０１；入力フィーチャマップ（ＩＦＭ）の第２チャネルの第２入力アクチベーションｉ２、及びカーネルの第２チャネルの第２ウェートｗ１２に対する第２  ＭＡＣ演算１１０２；並びに第１  ＭＡＣ演算１１０１の結果と、第２  ＭＡＣ演算１１０２の結果とに対するAdd演算１１０５を含む。ただし、図１１においては、入力フィーチャマップ（ＩＦＭ）の全てのチャネルと、カーネルの全てのチャネルとの演算について図示されるものではなく、説明の便宜上、一部チャネル間の演算について図示されているということは、当該技術分野の当業者であるならば、理解することができるであろう。
【００６６】
第１入力アクチベーションｉ１は、Ｑ９．６の固定小数点表現に量子化され、第１ウェートｗ１１は、Ｑ１１．４の固定小数点表現に量子化され、第２入力アクチベーションｉ２は、Ｑ１１．４の固定小数点表現に量子化され、第２ウェートｗ１２は、Ｑ７．８の固定小数点表現に量子化されたと仮定する。
【００６７】
プロセッサ１１０は、第１  ＭＡＣ演算１１０１を行うことにより、第１  ＭＡＣ演算１１０１の結果に対応する第１固定小数点表現Ｑ３７．１０、及びその第１フラクション長１０を獲得する。また、プロセッサ１１０は、第２  ＭＡＣ演算１１０２を行うことにより、第２  ＭＡＣ演算１１０２の結果に対応する第２固定小数点表現Ｑ３５．１２、及びその第２フラクション長１２を獲得する。
【００６８】
プロセッサ１１０は、第１フラクション長及び第２フラクション長のうち最長フラクション長を、Add演算１１０５の結果に対応するバイアス１１１０のフラクション長と決定する。それにより、第１固定小数点表現及び第２固定小数点表現のうち、さらに短いフラクション長を有する固定小数点表現のフラクション長は、第１フラクション長及び第２フラクション長の差ほどビットシフティングされる。
【００６９】
具体的には、プロセッサ１１０は、最長フラクション長である第２フラクション長１２を、バイアス１１１０のフラクション長と決定する。プロセッサ１１０は、Add演算１１０５のために、最短フラクション長を有する第１固定小数点表現Ｑ３７．１０の第１フラクション長１０を、フラクション長差２ほどビットシフティングする。
【００７０】
図１１によれば、ＭＡＣ演算１１０１，１１０２の結果に対するビットシフティングが要求されるが、プロセッサ１１０は、１以上のビットシフタ１１０３，１１０４を具備することができる。
【００７１】
プロセッサ１１０は、バイアスのフラクション長を決定し、Add演算１１０５を介して、固定小数点表現Ｑ３５．１２を決定し、ビットシフティング１１０６を介して、出力フィーチャマップの出力アクチベーションＯ１の固定小数点表現Ｑ９．６を求める。
【００７２】
図１１の実施形態によれば、プロセッサ１１０によって決定されたバイアスのフラクション長は、ＭＡＣ演算の結果として求めた固定小数点表現のフラクション長のうち最長フラクション長に対応する。ただし、図１１において、別途に図示されていないが、もしフラクション長の上限が事前に定義されている場合には、最長フラクション長と、既定義のフラクション長の上限のうちさらに小さい値にフラクション長が決定されもする（図１２の１２０６段階ないし１２０８段階参照）。
【００７３】
結局、プロセッサ１１０は、第１ウェートｗ１１の固定小数点表現（Ｑ１１．４）及びフラクション長４、第２ウェートｗ１２の固定小数点表現（Ｑ７．８）及びフラクション長８、バイアス１１１０の固定小数点表現（Ｑ３５．１２）及びフラクション長１２、並びにビットシフトのビットシフティングの程度（２ビットのビットシフティング１１０３、０ビットのビットシフティング１１０４、６ビットのビットシフティング１１０６に係わる情報を含む、量子化されたニューラルネットワークのデータを生成する。
【００７４】
一方、図１１においては、２個のチャネルだけが図示されたが、さらに多くのチャネルが存在する場合についても、図１１の方式が適用される。
【００７５】
図１２は、図１１の方式を利用するニューラルネットワークパラメータの量子化アルゴリズムを図示した図面である。
【００７６】
図１２を参照すれば、量子化アルゴリズム１２００においては、バイアスのフラクション長を決定するために、図１１で説明された方式が利用される。
【００７７】
１２０１段階において、図３のプロセッサ１１０は、入力として、事前に訓練されたニューラルネットワークデータのニューラルネットワークアーキテクチャデータ、ニューラルネットワークパラメータデータ（アクチベーション、ウェート、バイアスなど）、訓練データを獲得する。
【００７８】
１２０２段階において、プロセッサ１１０は、カーネルの各チャネル別ウェートの統計量、フィーチャマップの各チャネル別アクチベーションの統計量などに係わる統計分布の分析結果を出力する。
【００７９】
１２０３段階において、プロセッサ１１０は、入力として、チャネル別フラクション長を決定してパラメータを量子化するために、１２０２段階で獲得された出力結果を獲得する。
【００８０】
１２０４段階において、プロセッサ１１０は、統計分布の分析結果に基づいて、チャネル別ウェートのフラクション長を計算し、それにより、浮動小数点タイプのウェートを、固定小数点タイプのウェートに変換する。また、プロセッサ１１０は、統計分布の分析結果に基づいて、チャネル別アクチベーションのフラクション長を計算し、それにより、浮動小数点タイプのアクチベーションを、固定小数点タイプのアクチベーションに変換する。
【００８１】
１２０５段階において、プロセッサ１１０は、各チャネル別にＭＡＣ演算を行い、各チャネル別フラクション長を獲得する。
【００８２】
１２０６段階において、プロセッサ１１０は、各チャネル別に、ＭＡＣ演算によるフラクション長のうち最長フラクション長を、Add演算の結果に対応するフラクション長と決定する。もしフラクション長の上限が事前に定義されている場合には、最長フラクション長と既定義のフラクション長との上限のうちさらに小さい値に、Add演算の結果に対応するフラクション長を決定する。
【００８３】
１２０７段階において、プロセッサ１１０は、１２０６段階で決定されたフラクション長を、バイアスのフラクション長と決定する。
【００８４】
１２０８段階において、プロセッサ１１０は、バイアスの決定されたフラクション長により、各チャネル別フラクション長をそれぞれビットシフティングする。
【００８５】
１２０９段階において、プロセッサ１１０は、出力フィーチャマップ（ＯＦＭ）に割り当てられたビット数により、バイアスのフラクション長をビットシフティングする。それにより、出力アクチベーションのフラクション長が決定される。
【００８６】
１２１０段階において、プロセッサ１１０は、入力フィーチャマップ（ＩＦＭ）の各チャネル別フラクション長、出力フィーチャマップ（ＯＦＭ）の各チャネル別フラクション長、カーネルの各チャネル別フラクション長、バイアスのフラクション長、１２０８段階でのビットシフティング回数、１２０９段階でのビットシフティング回数などを出力する。
【００８７】
１２１１段階において、プロセッサ１１０は、カーネルの各チャネル別フラクション長、及びバイアスのフラクション長を獲得する。
【００８８】
１２１２段階において、プロセッサ１１０は、ニューラルネットワークのパラメータを固定小数点タイプに量子化し、固定小数点タイプに量子化されたパラメータ（ウェート、バイアス）を出力する。
【００８９】
１２１３段階及び１２１４段階において、プロセッサ１１０は、量子化されたニューラルネットワークの正確度を検証する（test）。
【００９０】
図１３は、他の実施形態によって、固定小数点タイプの一部パラメータのフラクション長を決定することについて説明するための図面である。
【００９１】
図３のプロセッサ１１０は、図８ないし図１０で説明されたニューラルネットワークのパラメータの固定小数点表現の決定後、バイアス１３１０のフラクション長、及びウェート１３３０のフラクション長を決定することができる。一方、図１３によるフラクション長の決定方式は、図１１のビットシフタ１１０３，１１０４のビットシフティングが要求されないので、図１１及び図１２で説明した方式と違いがある。
【００９２】
図１３において、第１  ＭＡＣ演算１３０１及び第２  ＭＡＣ演算１３０２により、第１固定小数点表現Ｑ３７．１０と第２固定小数点表現Ｑ３５．１２とが獲得されるまでの処理過程は、図１１で説明された通りである。
【００９３】
図１３を参照すれば、図１１と異なり、プロセッサ１１０は、第１フラクション長及び第２フラクション長のうち最短フラクション長１０を、Add演算１３０３の結果に対応するバイアス１３１０のフラクション長と決定する。それにより、プロセッサ１１０は、既存第２固定小数点表現Ｑ３５．１２は、新たな第２固定小数点表現１３２０  Ｑ３７．１０に調整されると決定し、既存第２ウェートＷ１２の既存固定小数点表現Ｑ７．８は、新たな固定小数点表現Ｑ９．６に調整されると決定する。すなわち、バイアス１３１０の決定されたフラクション長に係わる情報が逆伝播され、それにより、ウェート１３３０は、新たなフラクション長に量子化される。
【００９４】
ビットシフティング１３０４は、図１１で説明されたところと同一に行われる。
【００９５】
図１３の他の実施形態によれば、プロセッサ１１０によって決定されたバイアスのフラクション長は、ＭＡＣ演算の結果として求めた固定小数点表現のフラクション長のうち最短フラクション長に対応する。
【００９６】
結局、プロセッサ１１０は、第１ウェートｗ１１の固定小数点表現（Ｑ１１．４）及びフラクション長４；第２ウェート１３３０ｗ１２の固定小数点表現（Ｑ９．６）及びフラクション長６、バイアス１３１０の固定小数点表現（Ｑ３７．１０）及びフラクション長１０；並びにビットシフトのビットシフティングの程度（４ビットのビットシフティング１３０４）に係わる情報を含む、量子化されたニューラルネットワークのデータを生成する。
【００９７】
一方、図１３においては、２個のチャネルだけが図示されたが、さらに多くのチャネルが存在する場合についても、図１３の方式が適用される。
【００９８】
図１４は、図１３の方式を利用するニューラルネットワークパラメータの量子化アルゴリズムを図示した図面である。
【００９９】
図１４を参照すれば、量子化アルゴリズム１４００においては、バイアスのフラクション長を決定するために、図１３で説明された方式が利用される。
【０１００】
１４０１段階ないし１４０５段階は、図１２の１２０１段階ないし１２０５段階に係わる説明と類似して遂行される。
【０１０１】
１４０６段階において、プロセッサ１１０は、各チャネル別ＭＡＣ演算によるフラクション長のうち最短フラクション長を、Add演算の結果に対応するフラクション長と決定する。
【０１０２】
１４０７段階において、プロセッサ１１０は、１４０６段階で決定されたフラクション長を、バイアスのフラクション長と決定する。
【０１０３】
１４０８段階において、プロセッサ１１０は、バイアスの決定されたフラクション長により、各チャネル別ウェートのフラクション長をそれぞれ調整することにより、各チャネル別ウェートのフラクション長をアップデートする。
【０１０４】
１４０９段階において、プロセッサ１１０は、出力フィーチャマップ（ＯＦＭ）に割り当てられたビット数により、バイアスのフラクション長をビットシフティングする。それにより、出力アクチベーションのフラクション長が決定される。
【０１０５】
１４１０段階において、プロセッサ１１０は、入力フィーチャマップ（ＩＦＭ）の各チャネル別フラクション長、出力フィーチャマップ（ＯＦＭ）の各チャネル別フラクション長、カーネルの各チャネル別フラクション長、バイアスのフラクション長、１４０９段階でのビットシフティング回数などを出力する。
【０１０６】
１４１１段階ないし１４１４段階は、図１２の１２１１段階ないし１２１４段階に係わる説明と類似して遂行される。
【０１０７】
一方、プロセッサ１１０は、図１１及び図１２のアルゴリズム方式、及び図１３及び図１４のアルゴリズム方式のうちいずれかを取捨選択し、ニューラルネットワークの量子化を行うことができる。例えば、プロセッサ１１０のアルゴリズム選択基準は、量子化されたニューラルネットワークが採用されるデバイス（ハードウェア加速器）の処理性能、ハードウェアアーキテクチャなどによっても異なるが、それに制限されるのではない。
【０１０８】
図１５は、図７で説明されたレイヤ別量子化について説明するための図面である。
【０１０９】
図１５を参照すれば、図７で説明されたように、レイヤ別量子化により、レイヤに含まれた全チャネルの入力アクチベーション及びウェートは、いずれも同一固定小数点表現Ｑ１１．４に量子化される。それにより、バイアス１５１０の固定小数点表現は、Ｑ３９．８であり、フラクション長は８である。すなわち、バイアス１５１０のフラクション長は、前述の図１１ないし図１４で説明された２つの方式から決定されたバイアス１１１０及びバイアス１３１０のフラクション長よりは短い。従って、レイヤ別量子化よりチャネル別量子化がさらに正確であって精密なパラメータ値を有するニューラルネットワーク量子化であるということが分かる。
【０１１０】
図１６は、一実施形態によって量子化されたニューラルネットワークを再訓練（retrain）することについて説明するための図面である。
【０１１１】
図１６を参照すれば、図３のプロセッサ１１０は、浮動小数点タイプの事前に訓練されたニューラルネットワーク１６１０を、固定小数点タイプのニューラルネットワーク１６２０に量子化することができる。さらに、プロセッサ１１０は、量子化されたニューラルネットワーク１６２０の正確度をさらに高めるために、新規または既存の訓練／テストセットデータを利用して再訓練することができる。かような再訓練を介して量子化されたニューラルネットワーク１６２０の固定小数点タイプのパラメータが、微細調整（fine-tune）されることにより、プロセッサ１１０は、正確度が上昇した再訓練されたニューラルネットワーク１６３０を獲得することができる。このとき、プロセッサ１１０は、微細調整のために、バイアス及びチャネル別ウェートに対して決定されたフラクション長を制約条件（constraint）にして量子化されたニューラルネットワーク１６２０を再訓練することができる。ニューラルネットワーク量子化装置１０（図３）は、再訓練されたニューラルネットワーク１６３０を、ニューラルネットワーク専用ハードウェア加速器に伝達することができる。
【０１１２】
図１７は、レイヤ別量子化とチャネル別量子化との正確度を比較したシミュレーション結果を図示した図面である。
【０１１３】
図１７を参照すれば、割り当てられたビット幅が広いほど、レイヤ別量子化とチャネル別量子化との正確度は類似した値に収斂される。しかし、割り当てられたビット幅が狭いほど、レイヤ別量子化とチャネル別量子化との正確度は、差が目立つということが分かる。具体的には、ビット幅が狭く割り当てられた場合には、チャネル別量子化の正確度は、レイヤ別量子化の正確度よりはるかに高くしめされる。ニューラルネットワーク専用ハードウェア加速器の場合、低性能及び低電力のハードウェアによって具現されるために、狭いビット幅を利用するしかない。従って、ハードウェア加速器のために、チャネル別量子化でニューラルネットワークを量子化することがさらに望ましいということが分かる。一方、チャネル別量子化及びレイヤ別量子化は、いずれも分布範囲として、実際最大値に基づいた量子化よりは、最適のデルタなど量子化エラーを最小化させる方式の量子化レベルを利用した量子化がさらに高い正確度を示すということが分かる。
【０１１４】
図１８は、再訓練による量子化されたニューラルネットワークの正確度変化に係わるシミュレーション結果を図示した図面である。
【０１１５】
図１８を参照すれば、固定小数点タイプに量子化されたニューラルネットワークであるとしても、再訓練を介して、正確度が浮動小数点タイプのニューラルネットワークより向上するということが分かる。
【０１１６】
図１９は、一実施形態による電子システムを示すブロック図である。
【０１１７】
図１９を参照すれば、電子システム１９００は、ニューラルネットワークを基に、入力データをリアルタイムで分析し、有効な情報を抽出し、抽出された情報を基に、状況判断を行ってもよいし、あるいは電子システム１９００が搭載される電子デバイスの構成を制御することができる。例えば、電子システム１９００は、ドローン（drone）・先端運転手補助システム（ＡＤＡＳ：advanced  drivers  assistance  system）のようなロボット装置、スマートＴＶ（television）、スマートフォン、医療デバイス、モバイルデバイス、映像表示デバイス、計測デバイス、ＩｏＴデバイスなどにも適用され、それ以外にも、多種の電子デバイスのうち少なくとも一つに搭載される。
【０１１８】
電子システム１９００は、プロセッサ１９１０、ＲＡＭ  １９２０、ニューラルネットワーク装置１９３０、メモリ１９４０、センサモジュール１９５０及び通信モジュール１９６０を含んでもよい。電子システム１９００は、入出力モジュール、保安モジュール、電力制御装置などをさらに含んでもよい。電子システム１９００のハードウェア構成のうち一部は、少なくとも１つの半導体チップにも搭載される。ニューラルネットワーク装置１９３０は、前述のニューラルネットワーク専用ハードウェア加速器自体、またはそれを含む装置でもある。
【０１１９】
プロセッサ１９１０は、電子システム１９００の全般的な動作を制御する。プロセッサ１９１０は、１つのプロセッサコア（single  core）を含むか、あるいは複数のプロセッサコア（multi-core）を含んでもよい。プロセッサ１９１０は、メモリ１９４０に保存されたプログラム及び／またはデータを処理したり実行したりすることができる。一実施形態において、プロセッサ１９１０は、メモリ１９４０に保存されたプログラムを実行することにより、ニューラルネットワーク装置１９３０の機能を制御することができる。プロセッサ１９１０は、ＣＰＵ、ＧＰＵ、ＡＰなどによっても具現される。
【０１２０】
ＲＡＭ  １９２０は、プログラム、データまたは命令（instructions）を一時的に保存することができる。例えば、メモリ１９４０に保存されたプログラム及び／またはデータは、プロセッサ１９１０の制御コードまたは起動コードにより、ＲＡＭ  １９２０に一時的に保存される。ＲＡＭ  １９２０は、ＤＲＡＭ（dynamic  random  access  memory）またはＳＲＡＭ（static  random  access  memory）などのメモリによっても具現される。
【０１２１】
ニューラルネットワーク装置１９３０は、受信される入力データを基に、ニューラルネットワークの演算を行い、遂行結果を基に、情報信号を生成することができる。ニューラルネットワークは、ＣＮＮ、ＲＮＮ、Deep  Belief  Networks、restricted  Boltzman  machinesなどを含んでもよいが、それらに制限されるものではない。ニューラルネットワーク装置１９３０は、前述の固定小数点タイプに量子化されたニューラルネットワークを利用して処理を行うハードウェアであり、前述のニューラルネットワーク専用ハードウェア加速器にも該当する。
【０１２２】
該情報信号は、音声認識信号、事物認識信号、映像認識信号、生体情報認識信号のような多種の認識信号のうち一つを含んでもよい。例えば、ニューラルネットワーク装置１９３０は、ビデオストリームに含まれるフレームデータを入力データとして受信し、フレームデータから、フレームデータが示すイメージに含まれた事物に係わる認識信号を生成することができる。しかし、それに制限されるものではなく、電子システム１９００が搭載された電子装置の種類または機能により、ニューラルネットワーク装置１９３０は、多種の入力データを受信することができ、入力データによる認識信号を生成することができる。
【０１２３】
メモリ１９４０は、データを保存するための保存場所であり、ＯＳ（operating  system）、各種プログラム及び各種データを保存することができる。一実施形態において、メモリ１９４０は、ニューラルネットワーク装置１９３０の演算遂行過程で生成される中間結果、例えば、出力フィーチャマップを、出力フィーチャリスト状または出力フィーチャマトリックス状に保存することができる。一実施形態において、メモリ１９４０には、圧縮された出力フィーチャマップが保存される。また、メモリ１９４０は、ニューラルネットワーク装置１９３０で利用される量子化されたニューラルネットワークデータ、例えば、パラメータ、ウェートマップまたはウェートリストを保存することができる。
【０１２４】
メモリ１９４０は、ＤＲＡＭでもあるが、それに限定されるものではない。メモリ１９４０は、揮発性メモリまたは不揮発性メモリのうち少なくとも一つを含んでもよい。不揮発性メモリは、ＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、ＰＲＡＭ、ＭＲＡＭ、ＲＲＡＭ、ＦＲＡＭなどを含む。揮発性メモリは、ＤＲＡＭ、ＳＲＡＭ、ＳＤＲＡＭなどを含む。一実施形態において、メモリ１９４０は、ＨＤＤ、ＳＳＤ、ＣＦ、ＳＤ、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）など）のような記録媒体を含む。
【０１３５】
以上、本発明について、その望ましい実施形態を中心に説明した。本発明が属する技術分野で当業者であるならば、本発明が、本発明の本質的な特性から外れない範囲で変形された形態に具現されるということを理解することができるであろう。従って、開示された実施形態は、限定的な観点ではなく、説明的な観点から考慮されなければならない。本発明の範囲は、前述の説明ではなく、特許請求の範囲に示されており、それと同等な範囲内にある全ての差異は、本発明に含まれたものであると解釈されなければならないのである。
【産業上の利用可能性】
【０１３６】
本発明の、ニューラルネットワークのパラメータを量子化する方法及び該装置は、例えば、電子システム関連の技術分野に効果的に適用可能である。
【符号の説明】
【０１３７】
２  ニューラルネットワーク
１０  ニューラルネットワーク量子化装置
１１０，１９１０  プロセッサ
１２０，１９４０  メモリ
１９００  電子システム
１９２０  ＲＡＭ
１９３０  ニューラルネットワーク装置
１９５０  センサモジュール
１９６０  通信モジュール
【図１】
2019032833.tif 000004
【図２】
2019032833.tif 000005
【図３】
2019032833.tif 000006
【図４】
2019032833.tif 000007
【図５】
2019032833.tif 000008
【図６】
2019032833.tif 000009
【図７】
2019032833.tif 000010
【図８】
2019032833.tif 000011
【図９】
2019032833.tif 000012
【図１０】
2019032833.tif 000013
【図１１】
2019032833.tif 000014
【図１２】
2019032833.tif 000015
【図１３】
2019032833.tif 000016
【図１４】
2019032833.tif 000017
【図１５】
2019032833.tif 000018
【図１６】
2019032833.tif 000019
【図１７】
2019032833.tif 000020
【図１８】
2019032833.tif 000021
【図１９】
2019032833.tif 000022
【図２０】
2019032833.tif 000023