(57)【要約】【課題】  ニューラルネットワーク量子化のための方法及び装置を提供する。【解決手段】  ニューラルネットワーク量子化のための方法及び装置は、ニューラルネットワークの学習を繰り返して行い、ニューラルネットワークに含まれたレイヤそれぞれのウェイト統計量を分析し、分析された統計量に基づいて低いビット精度で量子化されるレイヤを決定し、決定されたレイヤを低いビット精度で量子化することで、量子化されたニューラルネットワークを生成する。【選択図】      図１５
2020113273.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットワーク量子化のための方法において、
第１ビット精度の第１ニューラルネットワークについて、複数のサイクルの順方向(feedforward)及び逆伝播(backpropagation)学習を繰り返して行う段階と、
前記第１ニューラルネットワークに含まれたレイヤそれぞれに対して、既設定の初期ウェイトと各サイクルの前記逆伝播学習によって決定された更新ウェイトとの間のウェイト差(weight  differences)を獲得する段階と、
前記レイヤそれぞれに対する前記ウェイト差の統計量を分析する段階と、
前記分析された統計量に基づいて、前記レイヤのうち、前記第１ビット精度よりも低い第２ビット精度で量子化される１つ以上のレイヤを決定する段階と、
前記レイヤのうち、前記決定されたレイヤを前記第２ビット精度で量子化することで、量子化されたレイヤを含む第２ニューラルネットワークを生成する段階と、を含む、方法。
【請求項２】
前記統計量は、
前記レイヤそれぞれに対する前記ウェイト差の平均二乗(mean  square)を含む、請求項１に記載の方法。
【請求項３】
前記分析された統計量の大きさ順に前記レイヤを整列(sort)する段階をさらに含み、
前記決定する段階は、
前記整列されたレイヤのうち、前記分析された統計量の大きさが相対的に小さいレイヤを前記量子化される１つ以上のレイヤとして決定する、請求項１に記載の方法。
【請求項４】
前記決定する段階は、
二進探索(binary  search)アルゴリズムを用いて、前記整列されたレイヤのうち、幾つかのレイヤが、前記第２ビット精度で量子化されたとき、前記第２ニューラルネットワークの精度損失(accuracy  loss)が、前記第１ニューラルネットワークと比較して所定閾値以内であるか否かを探索することで、前記量子化される１つ以上のレイヤを決定する、  請求項３に記載の方法。
【請求項５】
前記精度損失は、
ニューラルネットワークの認識率(recognition  rate)に係わるものである、請求項４に記載の方法。
【請求項６】
前記決定する段階は、
前記整列されたレイヤのうち、前記分析された統計量の大きさが小さい順に既設定の所定数のレイヤを前記量子化される１つ以上のレイヤとして決定する、請求項３に記載の方法。
【請求項７】
前記決定する段階は、
前記整列されたレイヤのうち、前記分析された統計量の大きさが最も小さいレイヤに対しては、前記量子化される１つ以上のレイヤとして決定しない、請求項３に記載の方法。
【請求項８】
前記第１ニューラルネットワークは、
前記第１ビット精度よりも高い第３ビット精度の浮動小数点(floating  point)パラメータのレイヤを有する第３ニューラルネットワークから量子化された、前記第１ビット精度の固定小数点(fixed  point)パラメータのレイヤを有するニューラルネットワークに該当し、
前記第２ニューラルネットワークは、
前記レイヤのうち、前記決定されたレイヤは、前記第２ビット精度の固定小数点パラメータを有し、残りのレイヤは、前記第１ビット精度の前記固定小数点パラメータを有する、請求項１に記載の方法。
【請求項９】
前記第１ニューラルネットワークが前記第１ビット精度の浮動小数点パラメータのレイヤを有するニューラルネットワークに該当する場合、前記レイヤのうち、前記決定されていない残りのレイヤを、前記第１ビット精度より低く、前記第２ビット精度よりは高い、第４ビット精度の固定小数点パラメータのレイヤに量子化する段階をさらに含み、
前記第２ニューラルネットワークは、
前記レイヤのうち、前記決定されたレイヤは、前記第２ビット精度の固定小数点パラメータを有し、前記残りのレイヤは、前記第４ビット精度の固定小数点パラメータを有する、請求項１に記載の方法。
【請求項１０】
請求項１〜９のうちいずれか１項に記載の方法をコンピュータで実行させるためのプログラムを記録したコンピュータ読み取り可能記録媒体。
【請求項１１】
ニューラルネットワーク量子化のための装置において、
少なくとも１つのプログラムが保存されたメモリと、
前記少なくとも１つのプログラムを実行することで、ニューラルネットワーク量子化を行うプロセッサと、を含み、
前記プロセッサは、
第１ビット精度の第１ニューラルネットワークに対して、複数のサイクルの順方向及び逆伝播学習を繰り返して行い、
前記第１ニューラルネットワークに含まれたレイヤそれぞれに対して、既設定の初期ウェイトと各サイクルの前記逆伝播学習によって決定された更新ウェイトとの間のウェイト差を獲得し、
前記レイヤそれぞれに対する前記ウェイト差の統計量を分析し、
前記分析された統計量に基づいて、前記レイヤのうち、前記第１ビット精度よりも低い第２ビット精度で量子化される１つ以上のレイヤを決定し、
前記レイヤのうち、前記決定されたレイヤを前記第２ビット精度で量子化することで、量子化されたレイヤを含む第２ニューラルネットワークを生成する、装置。
【請求項１２】
前記統計量は、
前記レイヤそれぞれに対する前記ウェイト差の平均二乗を含む、請求項１１に記載の装置。
【請求項１３】
前記プロセッサは、
前記分析された統計量の大きさ順に前記レイヤを整列し、
前記整列されたレイヤのうち、前記分析された統計量の大きさが相対的に小さいレイヤを前記量子化される１つ以上のレイヤとして決定する、請求項１１に記載の装置。
【請求項１４】
前記プロセッサは、
二進探索アルゴリズムを用いて、前記整列されたレイヤのうち、幾つかのレイヤが前記第２ビット精度で量子化されたとき、前記第２ニューラルネットワークの精度損失が前記第１ニューラルネットワークと比較して所定閾値以内であるか否かを探索することで、前記量子化される１つ以上のレイヤを決定する、請求項１３に記載の装置。
【請求項１５】
前記精度損失は、
ニューラルネットワークの認識率(recognition  rate)に係わるものである、請求項１４に記載の装置。
【請求項１６】
前記プロセッサは、
前記整列されたレイヤのうち、前記分析された統計量の大きさが小さい順に既設定の所定数のレイヤを前記量子化される１つ以上のレイヤとして決定する、請求項１３に記載の装置。
【請求項１７】
前記プロセッサは、
前記整列されたレイヤのうち、前記分析された統計量の大きさが最も小さいレイヤについては、前記量子化される１つ以上のレイヤとして決定しない、請求項１３に記載の装置。
【請求項１８】
前記第１ニューラルネットワークは、
前記第１ビット精度よりも高い第３ビット精度の浮動小数点パラメータのレイヤを有する第３ニューラルネットワークから量子化された前記第１ビット精度の固定小数点パラメータのレイヤを有するニューラルネットワークに該当し、
前記第２ニューラルネットワークは、
前記レイヤのうち、前記決定されたレイヤは、前記第２ビット精度の固定小数点パラメータを有し、残りのレイヤは、前記第１ビット精度の前記固定小数点パラメータを有する、請求項１１に記載の装置。
【請求項１９】
前記プロセッサは、
前記第１ニューラルネットワークが前記第１ビット精度の浮動小数点パラメータのレイヤを有するニューラルネットワークに該当する場合、前記レイヤのうち、前記決定されていない残りのレイヤを前記第１ビット精度より低く、前記第２ビット精度よりは高い第４ビット精度の固定小数点パラメータのレイヤに量子化し、
前記第２ニューラルネットワークは、
前記レイヤのうち、前記決定されたレイヤは、前記第２ビット精度の固定小数点パラメータを有し、前記残りのレイヤは、前記第４ビット精度の固定小数点パラメータを有する、請求項１１に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワーク量子化のための方法及び装置に係り、具体的に、ニューラルネットワークの一部選択されたレイヤに係わる精度を、より低ビット(lower-bit)に調整する方法及び装置に関する。
【背景技術】
【０００２】
ニューラルネットワーク(neural  network)は、生物学的脳をモデリングしたコンピュータ科学的アーキテクチャ(computational  architecture)を指す。最近、ニューラルネットワーク技術の発展によって、多様な種類の電子システムにおいて、ニューラルネットワークを活用し、入力データを分析して有効な情報を抽出する研究が活発に進められている。ニューラルネットワークを処理する装置は、複雑な入力データに対する多量の演算を必要とする。したがって、ニューラルネットワークを用いて大量の入力データをリアルタイムで分析し、所望の情報を抽出するためには、ニューラルネットワークに関する演算を効率的に処理することができる技術が要求される。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明が解決しようとする課題は、ニューラルネットワーク量子化のための方法及び装置を提供することである。本実施形態がなそうとする技術的課題は、前記のような技術的課題に限定されず、以下の実施形態からさらに他の技術的課題が類推される。
【課題を解決するための手段】
【０００４】
一側面によれば、ニューラルネットワーク量子化のための方法は、第１ビット精度の第１ニューラルネットワークに対して、複数のサイクルの順方向(feedforward)及び逆伝播(backpropagation)学習を繰り返して行う段階と、前記第１ニューラルネットワークに含まれたレイヤそれぞれに対して、既設定の初期ウェイトと各サイクルの前記逆伝播学習によって決定された更新ウェイトとの間のウェイト差(weight  differences)を獲得する段階と、前記レイヤそれぞれに対する前記ウェイト差の統計量を分析する段階と、前記分析された統計量に基づいて、前記レイヤのうち、前記第１ビット精度よりも低い第２ビット精度で量子化される１つ以上のレイヤを決定する段階と、前記レイヤのうち、前記決定されたレイヤを前記第２ビット精度で量子化することで、量子化されたレイヤを含む第２ニューラルネットワークを生成する段階と、を含む。
【０００５】
他の側面によれば、コンピュータで読み取り可能な記録媒体は、上述した方法を行う命令語を含む１つ以上のプログラムが記録された記録媒体を含んでもよい。
【０００６】
さらに他の側面によれば、ニューラルネットワーク量子化のための装置は、少なくとも１つのプログラムが保存されたメモリと、前記少なくとも１つのプログラムを実行することで、ニューラルネットワーク量子化を行うプロセッサと、を含み、前記プロセッサは、第１ビット精度の第１ニューラルネットワークに対して、複数のサイクルの順方向(feedforward)及び逆伝播(backpropagation)学習を繰り返して行い、前記第１ニューラルネットワークに含まれたレイヤそれぞれに対して、既設定の初期ウェイトと各サイクルの前記逆伝播学習によって決定された更新ウェイトとの間のウェイト差(weight  differences)を獲得し、前記レイヤそれぞれに対する前記ウェイト差の統計量を分析し、前記分析された統計量に基づいて、前記レイヤのうち、前記第１ビット精度よりも低い第２ビット精度で量子化される１つ以上のレイヤを決定し、前記レイヤのうち、前記決定されたレイヤを前記第２ビット精度で量子化することで、量子化されたレイヤを含む第２ニューラルネットワークを生成する。
【図面の簡単な説明】
【０００７】
【図１】一実施形態によるニューラルネットワークのアーキテクチャを説明するための図面である。
【図２】一実施形態によるニューラルネットワークで行われる演算を説明するための図面である。
【図３】一実施形態によるニューラルネットワーク量子化装置のハードウェア構成を示すブロック図である。
【図４】一実施形態による予め訓練されたニューラルネットワークを量子化してハードウェアアクセラレータに展開することを説明するための図面である。
【図５】浮動小数点と固定小数点とを説明するための図面である。
【図６】固定小数点においてフラクション長と精度との関係を説明するための図面である。
【図７】一実施形態によるニューラルネットワークの学習を説明するための図面である。
【図８Ａ】一実施形態によってニューラルネットワークの逆伝播学習によって更新されたウェイトを説明するための図面である。
【図８Ｂ】一実施形態によるレイヤ別ウェイト差(weight  difference)を説明するための図面である。
【図８Ｃ】一実施形態によるレイヤそれぞれに対するウェイト差の統計量を分析した結果を説明するための図面である。
【図９】一実施形態によってウェイト差統計量に基づいてレイヤを整列することを説明するための図面である。
【図１０】一実施形態によって整列されたレイヤのうち、下位ビット精度で量子化するレイヤを選択することを説明するための図面である。
【図１１】一実施形態によって下位ビット精度で量子化されるレイヤを判断する方法を説明するためのフローチャートである。
【図１２】他の実施形態によって下位ビット精度で量子化されるレイヤを判断する方法を説明するためのフローチャートである。
【図１３】一実施形態によって浮動小数点パラメータのレイヤを含むニューラルネットワークから固定小数点パラメータのレイヤを含むニューラルネットワークに量子化することを説明するための図面である。
【図１４】他の実施形態によって浮動小数点パラメータのレイヤを含むニューラルネットワークから固定小数点パラメータのレイヤを含むニューラルネットワークに量子化することを説明するための図面である。
【図１５】一実施形態による量子化されたニューラルネットワークを説明するための図面である。
【図１６】一実施形態によって下位ビット精度で量子化されたレイヤ数と精度損失との相関関係を例示的に説明するためのグラフである。
【図１７】一実施形態によって下位ビット精度で量子化されるレイヤを判断するための基準としてウェイト差統計量を用いる場合と、異なる方式を用いる場合とを比較して説明するための図面である。
【図１８】一実施形態による電子システムを示すブロック図である。
【図１９】一実施形態によるニューラルネットワーク量子化のための方法のフローチャートである。
【発明を実施するための形態】
【０００８】
本実施形態で使用される用語は、可能な限り、現在汎用される一般的な用語を選択したが、それは、当分野の当業者の意図、判例、または新たな技術の出現などによっても異なる。また、特定の場合、出願人が任意に選定した用語もあり、その場合、当該説明部分において、詳細にその意味を記載する。従って、明細書で使用される用語は、単なる用語の名称ではなく、その用語が有する意味と、明細書の全般にわたる内容とを基に定義されなければならない。
【０００９】
本実施形態で使用される「構成される」または「含む」などの用語は、明細書上に記載された多様な構成要素、または多様な段階を必ずしもいずれも含むと解釈されてはならず、それらのうち、一部構成要素または、一部段階は、含まれないか、あるいは追加的な構成要素または段階をさらに含むことができると解釈されねばならない。
【００１０】
以下、添付図面を参照して実施形態について詳細に説明する。しかし、実施形態は、様々な互いに異なる形態として具現され、ここで説明する例に限定されない。
【００１１】
図１は、一実施形態によるニューラルネットワークのアーキテクチャを説明するための図面である。図１を参照すれば、ニューラルネットワーク１は、ディープニューラルネットワーク(Deep  Neural  Network、DNN)、またはｎ階層ニューラルネットワーク(n-layers  neural  networks)のアーキテクチャであってもよい。ＤＮＮまたはｎ階層ニューラルネットワークは、コンボルーションニューラルネットワーク(Convolutional  Neural  Networks、CNN)、リカレントニューラルネットワーク(Recurrent  Neural  Networks、RNN)、ディープブリーフネットワーク（Deep  Belief  Networks）、制限ボルツマンマシン（Restricted  Boltzman  Machines）などに該当する。例えば、ニューラルネットワーク１は、コンボルーションニューラルネットワーク（ＣＮＮ）として具現されるが、その限りではない。図１では、コンボルーションニューラルネットワークのうち、一部のレイヤが示されたが、コンボルーションニューラルネットワークは、コンボルーションレイヤ、プーリングレイヤ(pooling  layer)、フリコネクティッド(fully  connected)レイヤなどを含んでもよい。
【００１２】
コンボルーションレイヤにおいて、第１フィーチャマップ(feature  map1)ＦＭ１は、入力フィーチャマップに該当し、第２フィーチャマップＦＭ２は、出力フィーチャマップに該当する。フィーチャマップは、入力データの多様な特徴が表現されたデータセットを意味する。フィーチャマップＦＭ１、ＦＭ２は、２次元マトリックスまたは、３次元マトリックスでもあり、それぞれのアクティベーションパラメータを有する。フィーチャマップＦＭ１、ＦＭ２は、幅Ｗ（または、カラムと称する）、高さＨ（またはロウと称する）及び深さＤを有する。この際、深さＤは、チャネル数とも称される。
【００１３】
コンボルーションレイヤにおいて、第１フィーチャマップＦＭ１及びウェイトマップＷＭに対するコンボルーション演算が行われ、その結果、第２フィーチャマップＦＭ２が生成される。ウェイトマップＷＭは、第１フィーチャマップＦＭ１をフィルタリングすることができ、フィルターまたはカーネル(kernel)と指称される。ウェイトマップＷＭの深さ、すなわちチャネル数は、第１フィーチャマップＦＭ１の深さ、すなわちチャネル数と同一である。ウェイトマップＷＭは、第１フィーチャマップＦＭ１をスライディングウィンドウとして横断する方式でシフトされる。各シフトの間、ウェイトマップＷＭに含まれるウェイトそれぞれが第１フィーチャマップＦＭ１と重畳された領域における全てのフィーチャ値と乗算され、加算される。第１フィーチャマップＦＭ１とウェイトマップＷＭが、コンボルーションされることにより、第２フィーチャマップＦＭ２の１つのチャネルが生成される。図１には、１つのウェイトマップＷＭが表示されたが、実質的には、複数のウェイトマップが第１フィーチャマップＦＭ１とコンボルーションされて、第２フィーチャマップＦＭ２の複数のチャネルが生成される。
【００１４】
一方、コンボルーションレイヤの第２フィーチャマップＦＭ２は、次のレイヤの入力フィーチャマップになりうる。例えば、第２フィーチャマップＦＭ２は、プーリングレイヤの入力フィーチャマップになりうる。
【００１５】
図２は、一実施形態によるニューラルネットワークで行われる演算を説明するための図面である。図２を参照すれば、ニューラルネットワーク２は、入力レイヤ、１つ以上の隠しレイヤ及び出力レイヤを含む構造を有し、受信される入力データ（例えば、Ｉ１及びＩ２）に基づいて演算を行い、遂行結果に基づいて出力データ（例えば、Ｏ１及びＯ２）を生成することができる。
【００１６】
ニューラルネットワーク２は、前述したように、２個以上の隠しレイヤを含むＤＮＮまたはｎ階層ニューラルネットワークとしうる。例えば、図２に示されたように、ニューラルネットワーク２は、入力レイヤＬａｙｅｒ１、２個の隠しレイヤＬａｙｅｒ２、Ｌａｙｅｒ３、及び出力レイヤＬａｙｅｒ４を含むＤＮＮである。ニューラルネットワーク２がＤＮＮアーキテクチャとして具現された場合、有効な情報を処理することができるさらに多くのレイヤを含むので、ニューラルネットワーク２は、シングルレイヤを有するニューラルネットワークよりも複雑なデータ集合を処理することができる。一方、ニューラルネットワーク２は、４個のレイヤを含むと示されているが、これは、例示に過ぎず、ニューラルネットワーク２は、さらに少ないか多くのレイヤを含んでもよく、あるいはさらに少ないか多くのチャネルを含んでもよい。すなわち、ニューラルネットワーク２は、図２とは異なって、多様な構造のレイヤを含んでもよい。
【００１７】
ニューラルネットワーク２に含まれたレイヤそれぞれは、複数のチャネルを含みうる。チャネルは、ニューロン、プロセッシングエレメント(Processing  element、PE)、ユニットまたはこれと類似した用語と知られた、複数の人工ノード(artificial  node)に該当する。例えば、図２に示されたように、Ｌａｙｅｒ  １は、２個のチャネル（ノード）、Ｌａｙｅｒ  ２及びＬａｙｅｒ  ３それぞれは、３個のチャネルを含んでもよい。但し、これは例示に過ぎず、ニューラルネットワーク２に含まれたレイヤそれぞれは、多様な個数のチャネル（ノード）を含んでもよい。
【００１８】
ニューラルネットワーク２のレイヤそれぞれに含まれたチャネルは、互いに連結されてデータを処理することができる。例えば、１つのチャネルは、他のチャネルからデータを受信して演算し、演算結果をさらに他のチャネルに出力することができる。
【００１９】
各チャネルの入力及び出力は、それぞれ入力アクティベーション及び出力アクティベーションと指称される。すなわち、アクティベーションは、一チャネルの出力であると共に、次のレイヤに含まれたチャネルの入力に該当するパラメータであってもよい。一方、各チャネルは、先行レイヤに含まれたチャネルから受信されたアクティベーション及びウェイトに基づいて自分のアクティベーションを決定することができる。ウェイトは、各チャネルにおける出力アクティベーションを計算するために用いられるパラメータであって、チャネル間の連結関係に割り当てられる値であるとしうる。
【００２０】
各チャネルは、入力を受信して出力アクティベーションを出力する演算ユニット(computational  unit)、またはプロセッシングエレメント(processing  element)によって処理され、各チャネルの入力−出力がマッピングされる。例えば、σは、アクティベーション関数(activation  function)で、ｗｉｊｋは、（ｉ−１）番目のレイヤに含まれたｋ番目チャネルからｉ番目レイヤに含まれたｊ番目チャネルへのウェイトであり、ｂｉｊは、ｉ番目レイヤに含まれたｊ番目チャネルのバイアスであり、ａｉｊは、ｉ番目レイヤのｊ番目チャネルのアクティベーションであるとするとき、アクティベーションａｉｊは、次のような数式（１）を用いて計算される。
【００２１】
【数１】
2020113273.tif 000003
図２に示されたように、２番目レイヤＬａｙｅｒ  ２の最初チャネルＣＨ１のアクティベーションは、ａ２１と表現される。また、ａ２１は、数式１によって、ａ２１＝σ（ｗ２１，１×ａ１１＋ｗ２１，２×ａ１２＋ｂ２１）の値を有しうる。但し、前述した数式１は、ニューラルネットワーク２でデータを処理するために用いられるアクティベーション及びウェイトを説明するための例示に過ぎず、その限りではない。アクティベーションは、先行レイヤから受信されたアクティベーションの和(sum)にアクティベーション関数を適用した値を正規化線形ユニット（Rectified  Linear  Unit；ReLU)を通過させることで獲得された値であってもよい。
【００２２】
前述したように、ニューラルネットワーク２では、数多くのデータ集合が互いに連結された複数のチャネル間で交換され、レイヤを経つつ数多くの演算過程を経る。したがって、複雑な入力データの処理に必要な演算量を減少させつつも、精度損失を最小化することができる技術が要求される。
【００２３】
図３は、一実施形態によるニューラルネットワーク量子化装置のハードウェア構成を示すブロック図である。図３を参照すれば、ニューラルネットワーク量子化装置１０は、プロセッサ１１０及びメモリ１２０を含む。図３に示されたニューラルネットワーク量子化装置１０には、本実施形態と係わる構成要素のみ示されている。したがって、ニューラルネットワーク量子化装置１０には、図３に示された構成要素以外に他の汎用的な構成要素がさらに含まれるということは、当業者にとって自明である。
【００２４】
ニューラルネットワーク量子化装置１０は、ニューラルネットワークを生成するか、ニューラルネットワークを学習(learn)（または訓練(train)）するか、浮動小数点(floating  point)タイプのニューラルネットワークを固定小数点(fixed  point)タイプのニューラルネットワークに量子化するか、または、ニューラルネットワークを再訓練(retrain)する機能のような多様なプロセッシング機能を有するコンピュータデバイスに該当する。例えば、ニューラルネットワーク量子化装置１０は、ＰＣ(personal  computer)、サーバデバイス、モバイルデバイスなどであるが、ニューラルネットワークを用いた音声認識、映像認識などを行う自律走行自動車、ロボティックス、スマートフォン、タブレットデバイス、ＡＲ(Augmented  Reality)デバイス、ＩｏＴ(Internet  of  Things)デバイスなどに備えられた装置であるとしうるが、これらに制限されず、多様な種類のデバイスに備えられうる。
【００２５】
プロセッサ１１０は、ニューラルネットワーク量子化装置１０を制御するための全般的な機能を行う役割を行う。例えば、プロセッサ１１０は、ニューラルネットワーク量子化装置１０内のメモリ１２０に保存されたプログラムを実行することで、ニューラルネットワーク量子化装置１０を全般的に制御する。プロセッサ１１０は、ニューラルネットワーク量子化装置１０内に備えられたＣＰＵ(central  processing  unit)、ＧＰＵ(graphics  processing  unit)、ＡＰ(application  processor)などで具現されるが、その限りではない。
【００２６】
メモリ１２０は、ニューラルネットワーク量子化装置１０内で処理される各種データを保存するハードウェアであって、例えば、メモリ１２０は、ニューラルネットワーク量子化装置１０で処理されたデータ及び処理されるデータを保存することができる。また、メモリ１２０は、ニューラルネットワーク量子化装置１０によって駆動されるアプリケーション、ドライバなどを保存することができる。メモリ１２０は、ＤＲＡＭであるとしうるが、これに限定されるものではない。メモリ１２０は、揮発性メモリ(volatile  memory)または不揮発性メモリ(nonvolatile  memory)のうち、少なくとも１つを含みうる。不揮発性メモリは、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)などを含む。実施形態において、メモリ１２０は、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のうち少なくとも１つを含んでもよい。
【００２７】
プロセッサ１１０は、与えられた初期ニューラルネットワークを繰り返して学習（訓練）させることで、学習されたニューラルネットワークを生成することができる。この際、初期ニューラルネットワークは、ニューラルネットワークの処理精度の確保のために浮動小数点タイプのパラメータ、例えば、３２ビット浮動小数点精度(32bit  floating  point  precision)のパラメータを有してもよい。ここで、パラメータは、例えば、ニューラルネットワークの入／出力アクティベーション、ウェイト、バイアスなどニューラルネットワークに入／出力される多様な種類のニューラルネットワークデータを含んでもよい。ニューラルネットワークの反復訓練が進められることにより、ニューラルネットワークの浮動小数点パラメータは、与えられた入力に対してさらに正確な出力を演算するために、調整されるか(tuned)更新される(updated)。但し、これに制限されず、ニューラルネットワークの学習は、後述するニューラルネットワーク量子化が行われた後に、量子化されたニューラルネットワークを用いて行われてもよい。
【００２８】
浮動小数点は、固定小数点に比べて、相対的に多くの演算量及び多くのメモリアクセス頻度が要求される。したがって、比較的処理性能の低いスマートフォン、タブレット、ウェアラブルデバイスのようなモバイルデバイス、エンベデッド(embedded)デバイスなどでは、浮動小数点タイプのパラメータを有するニューラルネットワークの処理が円滑ではない。つまり、かようなデバイスで演算量を十分に減少させつつ、許容可能な精度損失(accuracy  loss)内でニューラルネットワークを駆動させるためには、ニューラルネットワークで処理される浮動小数点タイプのパラメータは、量子化されることが望ましい。ここで、量子化は、浮動小数点タイプのパラメータを、固定小数点タイプのパラメータに変換することを意味する。したがって、実施形態において、ニューラルネットワークに含まれたあるレイヤを量子化するという意味は、当該レイヤのパラメータを量子化することを意味することができる。
【００２９】
一方、他の実施形態によれば、ニューラルネットワーク量子化装置１０は、ニューラルネットワークが展開される(deployed)他のデバイス（例えば、モバイルデバイス、エンベデッドデバイスなど）の処理性能を考慮して、学習されたニューラルネットワークのパラメータを所定ビット精度の固定小数点タイプに変換する量子化を行い、ニューラルネットワーク量子化装置１０は、量子化されたニューラルネットワークが展開される他のデバイスに伝達することができる。ニューラルネットワークが展開される他のデバイスは、具体的な例示として、ニューラルネットワークを用いた音声認識、映像認識などを行う自律走行自動車、ロボティックス、スマートフォン、タブレットデバイス、ＡＲ(Augmented  Reality)デバイス、ＩｏＴ(Internet  of  Things)デバイスなどとしうるが、その限りではない。
【００３０】
プロセッサ１１０は、メモリ１２０に保存されたニューラルネットワークデータを獲得し、獲得されたニューラルネットワークデータを用いて繰り返して学習を行うことができる。ニューラルネットワークの学習は、先ず、訓練セット(train  set)データを入力として繰り返して訓練され、次いで、テストセット(test  set)データで再び繰り返して訓練されるものとしうるが、必ずしもその限りではない。訓練セットデータは、ニューラルネットワークを訓練させるための入力データであり、テストセットデータは、訓練セットデータと重ならない入力データであって、訓練セットデータで訓練されたニューラルネットワークの性能を測定しつつ訓練させるためのデータである。
【００３１】
プロセッサ１１０によって、ニューラルネットワークの各レイヤが固定小数点タイプで量子化されるアルゴリズムについて、以下、当該図面を参照して具体的に説明する。
【００３２】
一方、メモリ１２０は、例えば、学習されていない初期ニューラルネットワークデータ、学習過程で生成されたニューラルネットワークデータ、全ての学習が完了したニューラルネットワークデータ、量子化されたニューラルネットワークデータなどプロセッサ１１０によって、処理されるか、処理されたニューラルネットワーク関連データセットを保存することができ、またプロセッサ１１０によって実行されるニューラルネットワークの学習アルゴリズム、量子化アルゴリズムなどに係わる多様なプログラムを保存することができる。
【００３３】
図４は、一実施形態による学習されたニューラルネットワークを量子化してハードウェアアクセラレータに展開することを説明するための図面である。
【００３４】
図４を参照すれば、他の実施形態について説明されたように、ＰＣ、サーバのようなニューラルネットワーク量子化装置（図３の１０）においてプロセッサ（図３の１１０）は、浮動小数点タイプ（例えば、３２ビット浮動小数点タイプ）のニューラルネットワーク４１０を学習する。学習されたニューラルネットワーク４１０自体は、浮動小数点タイプのパラメータによって低電力または低性能のハードウェアアクセラレータで効率的に処理されないので、ニューラルネットワーク量子化装置１０のプロセッサ１１０は、浮動小数点タイプのニューラルネットワーク４１０を、固定小数点タイプ（例えば、１６ビット以下の固定小数点タイプ）のニューラルネットワーク４２０に量子化する。ハードウェアアクセラレータは、ニューラルネットワーク４２０の駆動のための専用ハードウェアであって、比較的低電力または低性能として具現されるために、浮動小数点演算よりは固定小数点演算にさらに好適に具現される。ハードウェアアクセラレータは、例えば、ニューラルネットワーク駆動のための専用モジュールであるＮＰＵ(neural  processing  unit)、ＴＰＵ(Tensor  Processing  Unit)、Neural  Engineなどに相当しうるが、その限りではない。
【００３５】
量子化されたニューラルネットワーク４２０を駆動するハードウェアアクセラレータは、ニューラルネットワーク量子化装置１０とは別個の独立したデバイスとして具現される。しかし、これに制限されず、ハードウェアアクセラレータは、ニューラルネットワーク量子化装置１０と同じ装置内に具現されてもよい。
【００３６】
図５は、浮動小数点と固定小数点とを説明するための図面である。図５の浮動小数点例示５１０を参照すれば、浮動小数点値は、ａ×２ｂの形式で表現され、ここで、ａは、仮数部(fraction  part)、ｂは、指数部(exponent)に該当する。浮動小数点値は、１ビットの符号ビット、８ビットの指数部ビット及び２３ビットの仮数部ビットを含む３２ビットで表現される。
【００３７】
次いで、固定小数点例示５２０を参照すれば、固定小数点は、「Ｑｍ．ｎ」で表現される（ｍ、ｎは、自然数）。ここで、「ｍ」は、指数部を示すビット数、「ｎ」は、小数部を示すビット数である。したがって、固定小数点のビット幅(bit  width)は、符号１ビット、指数部ｍビット及び小数部ｎビットを合わせて、１＋ｍ＋ｎである。固定小数点ビットのうち、小数部を示すビットは、ｎビットなので、フラクション長(fractional  length)は、ｎである。例えば、「Ｑ３．４」は、符号１ビット、指数部３ビット及び仮数部４ビットを有する総８ビットの固定小数点値であり、「Ｑ１．３０」は、符号１ビット、指数部１ビット及び仮数部３０ビットを有する総３２ビットの固定小数点値であり、「Ｑ１５．１６」は、符号１ビット、指数部１５ビット及び仮数部１６ビットを有する総３２ビットの固定小数点値である。
【００３８】
図６は、固定小数点においてフラクション長と精度との関係を説明するための図面である。図６を参照すれば、固定小数点に割り当てられた総ビット幅は、３ビットであると仮定して、フラクション長が０であるＱ２．０の固定小数点表現６１０とフラクション長が１であるＱ１．１の固定小数点表現６２０の比較が説明されている。
【００３９】
Ｑ２．０は、指数部が２ビットであり、小数部が０ビットであるので、−４から３までの固定小数点値が表現され、表現可能な固定小数点値の間隔は、１である。そして、Ｑ１．１は、指数部が１ビットであり、小数部が１ビットであるので、−２から１．５までの固定小数点値が表現され、表現可能な固定小数点値の間隔は、０．５である。
【００４０】
比較して見れば、Ｑ２．０の固定小数点表現６１０とＱ１．１の固定小数点表現６２０は、同じ３ビットが割り当てられたが、Ｑ２．０は、さらに広い範囲の固定小数点値の表現が可能な代わりに、固定小数点値間の間隔が広いので、精度は低い。相対的に、Ｑ１．１は、さらに狭い範囲の固定小数点値の表現が可能な代わりに、固定小数点値間の間隔が狭いので、精度は高い。つまり、固定小数点値の精度は、フラクション長、すなわちフラクションビットの割当個数に依存するという点が分かる。
【００４１】
図７は、一実施形態によるニューラルネットワークの学習を説明するための図面である。図７を参照すれば、ニューラルネットワーク７１０は、入力レイヤ、Ｎ個（Ｎは、自然数）のレイヤ（レイヤ１、レイヤ２，．．．，レイヤＮ−１及びレイヤＮ）及び出力レイヤを含んでもよい。ここで、Ｎ個のレイヤそれぞれについては、当該レイヤに対応するウェイトが割り当てられている。すなわち、レイヤ１には、ウェイト１  Ｗ１が割り当てられ、レイヤ２には、ウェイト２  Ｗ２が割り当てられ、．．．、レイヤＮ−１には、ウェイトＮ−１  ＷＮ−１が割り当てられ、レイヤＮには、ウェイトＮ  ＷＮが割り当てられる。前述の図２などでは、レイヤには、複数のチャネルが備えられると説明された。図７で説明された各レイヤに割り当てられたウェイトは、各レイヤに含まれた１つ以上のチャネルのウェイトを代表する値に該当する。
【００４２】
一方、本明細書の実施形態において、ニューラルネットワークのレイヤの識別番号は、当該図面内で個々のレイヤを区別するための手段であり、本明細書の実施形態は、レイヤ識別番号によって制限解釈されない。したがって、互いに異なる図面において同じ識別番号で表示されているレイヤであっても、これは、説明の便宜上、表示されたものに過ぎず、同じレイヤを指すか、あるいは他のレイヤを指す。
【００４３】
プロセッサ（図３の１１０）は、ニューラルネットワーク７１０に対して複数のサイクル（例えば、Ｋサイクル）（Ｋは、自然数）の順方向(feedforward)学習及び逆伝播(backpropagation)学習を繰り返して行う。
【００４４】
ニューラルネットワーク７１０は、順方向学習を通じてニューラルネットワーク７１０の認識精度または認識率(recognition  rate)を求め、逆伝播学習を通じてニューラルネットワーク７１０の誤差を各レイヤに伝える。ここで、ニューラルネットワーク７１０の誤差は、各レイヤに含まれたバイアス、ウェイトなどに係わる誤差を意味する。したがって、繰り返したサイクル（サイクル１ないしサイクルＫ）の順方向及び逆伝播学習を通じてレイヤの誤差が補正されるので、ニューラルネットワーク７１０の認識精度または認識率が上昇する。
【００４５】
本実施形態によるニューラルネットワーク量子化は、かように学習されたニューラルネットワーク７１０のレイヤ（すなわち、レイヤのパラメータ）を低い精度で量子化するものである。例えば、ニューラルネットワーク７１０が３２ビット精度の浮動小数点を有するモデルである場合、学習されたニューラルネットワークも３２ビット精度の浮動小数点を有するモデルに該当する。ニューラルネットワーク展開のために、３２ビット精度の浮動小数点を有するニューラルネットワーク７１０は、１６ビット、８ビットまたはそれ以下ビット数の固定小数点を有するニューラルネットワークに量子化される必要がある。この際、ニューラルネットワークが量子化されるとしても、精度損失を最小化しつつ、さらに効率よく動作せねばならない。以下、ニューラルネットワーク量子化プロセスでニューラルネットワーク内の数多くのレイヤに対する量子化が行われる方法について具体的に説明する。
【００４６】
図８Ａは、一実施形態によってニューラルネットワークの逆伝播学習によって更新されたウェイトを説明するための図面である。図８Ａを参照すれば、レイヤ別初期ウェイトに係わる表８１０と逆伝播学習によって更新された、レイヤ別更新ウェイトに係わる表８２０が示されている。
【００４７】
図７と係わって説明すれば、学習前初期ニューラルネットワーク（図７の７１０）は、レイヤ１ないしレイヤＮを含む。表８１０によれば、レイヤ１は、ウェイト１  Ｗ１を有し、レイヤ２は、ウェイト２  Ｗ２を有し，．．．，レイヤＮ−１は、ウェイトＮ−１  ＷＮ−１を有し、レイヤＮは、ウェイトＮ  ＷＮを有する。
【００４８】
プロセッサ（図３の１１０）がニューラルネットワーク７１０を複数のサイクルだけ繰り返して学習し、その結果、プロセッサ１１０は、各サイクルの逆伝播学習による更新ウェイトを決定する。
【００４９】
表８２０によれば、サイクル１の逆伝播学習が行われた結果、レイヤ１の更新ウェイトは、Ｗ１［１］と決定され、レイヤ２の更新ウェイトは、Ｗ２［２］と決定され，．．．，レイヤＮ−１のウェイトは、ＷＮ−１［１］と決定され、レイヤＮのウェイトは、ＷＮ［１］と決定される。同様に、プロセッサ１１０は、残りの各サイクルでの逆伝播学習が行われた結果、各レイヤの更新ウェイトを決定する。
【００５０】
図８Ｂは、一実施形態によるレイヤ別ウェイト差(weight  difference)を説明するための図面である。
【００５１】
ウェイト差  Ｗｄｉｆｆは、学習前ニューラルネットワークの各レイヤごとに既設定の初期ウェイト及び各レイヤごとに各サイクルでの逆伝播学習によって決定された更新ウェイト間の差値を意味する。
【００５２】
具体的に、図８Ｂを参照すれば、ウェイト差Ｗｄｉｆｆに係わる表８３０が示されている。例えば、レイヤ１について説明すれば、サイクル１の学習が行われた場合、レイヤ１の更新ウェイトＷ１［１］とレイヤ１の初期ウェイトＷ１との差がレイヤ１のサイクル１の学習結果として獲得されたウェイト差に該当する。同様に、プロセッサ（図３の１１０）は、残りのレイヤ及び残りのサイクルでのウェイト差を獲得する。
【００５３】
図８Ｃは、一実施形態によるレイヤそれぞれに対するウェイト差の統計量を分析した結果を説明するための図面である。
【００５４】
ニューラルネットワーク量子化において、レイヤのウェイト差Ｗｄｉｆｆの統計量を示す値が小さいほど、さらに低いビット精度(lower-bit  precision)に量子化することができる。ここで、レイヤのウェイト差Ｗｄｉｆｆの統計量は、レイヤ別全体サイクルでのウェイト差の平均二乗(mean  square)を含むが、これに制限されず、平均、分散、標準偏差のような他種の統計量であってもよい。
【００５５】
図８Ｃを参照すれば、各レイヤ別ウェイト差Ｗｄｉｆｆの統計量を分析することについて示されている。具体的に、レイヤ１について説明すれば、プロセッサ１１０は、サイクル１におけるウェイト差の二乗（Ｗ１［１］−Ｗ１）２、サイクル２におけるウェイト差の二乗（Ｗ１［２］−Ｗ１）２，．．．，サイクルＫにおけるウェイト差の二乗（Ｗ１［Ｋ］−Ｗ１）２の平均を計算することで、レイヤ１のウェイト差に係わる統計量（すなわち、平均二乗）であるＷｄｉｆｆ＿ｍ．ｓ．＿ｌａｙｅｒ１を求める。同様に、プロセッサ１１０は、他のサイクルのウェイト差に係わる統計量（すなわち、平均二乗）を求める。
【００５６】
かようなレイヤ別ウェイト差統計量は、ニューラルネットワーク量子化において、どのレイヤを、より低ビットの精度（「下位ビット精度」と称する）に量子化するかを判断及び選択するのに用いられる。
【００５７】
図９は、一実施形態によってウェイト差統計量に基づいてレイヤを整列（ソート）することを説明するための図面である。図９を参照すれば、プロセッサ（図３の１１０）は、下位ビット精度で量子化するレイヤを判断するために、各レイヤに対応するウェイト差統計量（例えば、平均二乗）の大きさ順にニューラルネットワークのレイヤを整列することができる。すなわち、プロセッサ１１０は、図８Ｃのように分析された各レイヤ別ウェイト差統計量であるＷｄｉｆｆ＿ｍ．ｓ．＿ｌａｙｅｒ１、Ｗｄｉｆｆ＿ｍ．ｓ．＿ｌａｙｅｒ２，．．．，Ｗｄｉｆｆ＿ｍ．ｓ．＿ｌａｙｅｒＮの大きさに基づいてレイヤを大きさ順に整列することができる。ここで、整列方式は、昇順及び降順のうち、いずれでも関係ない。
【００５８】
図９では、Ｎ個（Ｎは、自然数）のレイヤがウェイト差統計量（例えば、平均二乗）の大きさ順に昇順ソートされたことが示されているが、各レイヤの識別番号は、説明の便宜上、任意に表示されただけで、本実施形態は、その限りではない。
【００５９】
一方、プロセッサ１１０は、下位ビット精度に量子化されるレイヤ選択のために、図９で説明されたようにレイヤを先に整列してもよいが、これに制限されず、プロセッサ１１０は、レイヤ整列なしにウェイト差統計量（例えば、平均二乗）を基準に特定条件を満足するレイヤを選別してもよい。
【００６０】
図１０は、一実施形態によって整列されたレイヤのうち、下位ビット精度で量子化するレイヤを選択することを説明するための図面である。図１０を参照すれば、プロセッサ（図３の１１０）は、整列された全体レイヤのうち、分析されたウェイト差統計量の大きさが、相対的に小さいレイヤ（レイヤ１００、レイヤ９０，．．．，レイヤ４０）を量子化される１つ以上のレイヤとして決定する。ここで、ウェイト差統計量の大きさが相対的に小さいレイヤを選択する方法については、図１１、図１２で具体的に説明する。
【００６１】
一方、プロセッサ１１０は、分析された統計量の大きさが最も小さいレイヤ（レイヤ１００）に対しては、量子化される１つ以上のレイヤとして決定しないことがある。これは、分析された統計量の大きさが最も小さいレイヤ（レイヤ１００）が下位ビット精度で量子化される場合に、表現可能なクラス個数が減少することがあるためである。しかし、これに制限されず、プロセッサ１１０は、分析された統計量の大きさが最も小さいレイヤ（レイヤ１００）を含んで量子化することもできる。
【００６２】
図１０において整列されたレイヤは、いずれも量子化されたニューラルネットワークのレイヤに該当する。この際、下位ビット精度で量子化されたレイヤは、「Ａビット精度」（Ａは、自然数）で量子化されたレイヤであり、残りのレイヤは、「Ｂビット精度」（Ｂは、自然数）で量子化されたレイヤであってもよい。ここで、Ａビット精度は、Ｂビット精度よりも低い精度である。すなわち、本実施形態において下位ビット精度で量子化されたレイヤは、量子化された全体レイヤのうち、最も低い精度を有するレイヤに該当するが、その限りではない。
【００６３】
レイヤの量子化は、前述したように、レイヤに含まれたパラメータ（バイアス、ウェイトなど）の量子化であって、固定小数点パラメータのフラクション長を決定するか、または変更することを意味することができる。
【００６４】
以下では、全体レイヤ（または、整列された全体レイヤ）のうち、下位ビット精度で量子化されるレイヤを判断及び選択する方法について説明する。
【００６５】
図１１は、一実施形態によって下位ビット精度で量子化されるレイヤを判断する方法を説明するためのフローチャートである。
【００６６】
１１０１段階において、プロセッサ（図３の１１０）は、図８Ａないし図８Ｃのように分析されたウェイト差統計量（例えば、平均二乗）に基づいてニューラルネットワークのレイヤを整列する。すなわち、プロセッサ１１０は、ウェイト差統計量（例えば、平均二乗）の大きさ順にレイヤを昇順または降順で整列する。
【００６７】
１１０２段階において、プロセッサ１１０は、整列された全体レイヤのうち、下位統計量を有する半分のレイヤを下位ビット精度で量子化される候補レイヤとして選択する。
【００６８】
１１０３段階において、プロセッサ１１０は、選択された候補レイヤが量子化されたとき、量子化されたニューラルネットワークの精度損失(accuracy  loss)が所定閾値以下であるか否かを判断する。もし、精度損失が所定閾値以下である場合、プロセッサ１１０は、１１０５段階を行う。しかし、精度損失が所定閾値よりも大きい場合、プロセッサ１１０は、１１０４段階を行う。
【００６９】
１１０４段階において、選択された候補レイヤが量子化されたとき、量子化されたニューラルネットワークの精度損失が所定閾値よりも大きいので、プロセッサ１１０は、下位ビット精度で量子化される候補レイヤの個数を再び判断する必要がある。したがって、プロセッサ１１０は、１１０３段階で選択された候補レイヤを、全体レイヤで更新する。これにより、１１０２段階において、プロセッサ１１０は、更新された（以前の１１０２段階での半分）全体レイヤのうち、再び候補レイヤの個数を判断することができる。
【００７０】
１１０５段階において、選択された候補レイヤが量子化されたとき、量子化されたニューラルネットワークの精度損失が所定閾値以下なので、プロセッサ１１０は、選択された候補レイヤを下位ビット精度で量子化されるレイヤとして決定する。
【００７１】
１１０６段階において、プロセッサ１１０は、決定されたレイヤを下位ビット精度で量子化することで、量子化されたニューラルネットワークを生成する。
【００７２】
図１１を参照すれば、下位ビット精度で量子化されるレイヤを判断する一実施形態として、二進探索(binary  search)アルゴリズムについて説明されている。すなわち、一実施形態によれば、プロセッサ（図３の１１０）は、二進探索アルゴリズムを用いて、整列されたレイヤのうち、幾つかのレイヤがＡビット(lower-bit)精度で量子化されたレイヤを含むニューラルネットワークの精度損失(accuracy  loss)がＡビット精度で量子化されていないレイヤを含むニューラルネットワークと比較して、所定閾値以内であるか否かを探索することで、量子化される１つ以上のレイヤを決定することができる。
【００７３】
一方、たとえ図１１には示されていないにしても、１１０３段階において、精度損失が所定閾値よりも大きい場合であるとしても、候補レイヤの個数がユーザによって予め定義された所定数（例えば、５個）以下であるか否かを判断する段階がオプション的に(optional)追加されてもよい。かようなオプション的段階が追加されたならば、プロセッサ１１０は、精度損失が所定閾値よりも大きい場合であるとしても、候補レイヤの個数がユーザによって予め定義された所定数（例えば、５個）以下であると判断された場合、１１０５段階を行うことができる。
【００７４】
図１２は、他の実施形態によって下位ビット精度で量子化されるレイヤを判断する方法を説明するためのフローチャートである。
【００７５】
１２０１段階において、プロセッサ（図３の１１０）は、下位ビット精度で量子化するレイヤ数を予め設定する。
【００７６】
１２０２段階において、プロセッサ（図３の１１０）は、図８Ａないし図８Ｃのように分析されたウェイト差統計量（例えば、平均二乗）に基づいてニューラルネットワークのレイヤを整列する。すなわち、プロセッサ１１０は、ウェイト差統計量（例えば、平均二乗）の大きさ順にレイヤを昇順または降順で整列する。
【００７７】
１２０３段階において、プロセッサ１１０は、整列された全体レイヤのうち、下位統計量を有する既設定の所定数のレイヤを量子化されるレイヤとして決定する。
【００７８】
１２０４段階において、プロセッサ１１０は、決定されたレイヤを下位ビット精度で量子化することで、量子化されたニューラルネットワークを生成する。
【００７９】
図１２を参照すれば、図１１の二進探索アルゴリズムを用いた方法と異なって、プロセッサ（図３の１１０）は、整列されたレイヤのうち、分析された統計量の大きさが小さい順に既設定の所定数のレイヤを下位ビット精度で量子化される１つ以上のレイヤとして決定する。
【００８０】
図１１及び図１２では、図８Ａないし図８Ｃで説明されたレイヤ別ウェイト差統計量（例えば、平均二乗）に基づいて下位ビット精度で量子化されるレイヤを選択する方法の実施形態について説明された。しかし、本実施形態は、これに制限されず、ウェイト差統計量を異なって変形された方式で用いて下位統計量を有するレイヤを選択することで、下位ビット精度で量子化されるレイヤを決定する方法も本実施形態に適用される。
【００８１】
図１３は、一実施形態によって浮動小数点パラメータのレイヤを含むニューラルネットワークから固定小数点パラメータのレイヤを含むニューラルネットワークに量子化することを説明するための図面である。
【００８２】
図１３を参照すれば、ニューラルネットワーク１３０１は、３２ビット浮動小数点パラメータのＮ個のレイヤを含む。プロセッサ（図３の１１０）は、ニューラルネットワーク１３０１の順方向及び逆伝播学習を通じて、レイヤ別ウェイト差統計量を分析し、分析されたウェイト差統計量に基づいてレイヤのうち、３２ビット精度よりも低い「Ａビット精度」で量子化される１つ以上のレイヤ１３１５を決定するプロセス１３１０を行う。これにより、ニューラルネットワーク１３０１の全体レイヤのうち、決定された一部レイヤ１３１５は、Ａビット精度で量子化される。
【００８３】
プロセッサ１１０は、ニューラルネットワーク１３０１の全体レイヤのうち、Ａビット精度で量子化されると決定されていない残りのレイヤ１３２５を、３２ビット精度よりは低く、Ａビット精度よりは高い「Ｂビット精度」の固定小数点パラメータのレイヤに量子化するプロセス１３２０を行う。
【００８４】
プロセッサ１１０は、ニューラルネットワーク１３０１の全体レイヤに対する量子化されるビット精度が決定されると、各レイヤを当該ビット精度で量子化するプロセス１３３０を行うことで、量子化されたニューラルネットワーク１３０２を生成する。量子化されたニューラルネットワーク１３０２は、Ａビット精度の固定小数点パラメータを有するレイヤ１３１５とＢビット精度の固定小数点パラメータを有するレイヤ１３２５とを含む。
【００８５】
図１４は、他の実施形態によって浮動小数点パラメータのレイヤを含むニューラルネットワークから固定小数点パラメータのレイヤを含むニューラルネットワークに量子化することを説明するための図面である。
【００８６】
図１４を参照すれば、ニューラルネットワーク１４０１は、３２ビット浮動小数点パラメータのＮ個のレイヤを含む。ニューラルネットワーク１４０２は、ニューラルネットワーク１４０１から量子化された、８ビット固定小数点パラメータのＮ個のレイヤを有するニューラルネットワークである。
【００８７】
プロセッサ（図３の１１０）は、８ビット精度で量子化されたニューラルネットワーク１４０２の順方向及び逆伝播学習を通じて、レイヤ別ウェイト差統計量を分析し、分析されたウェイト差統計量に基づいてレイヤのうち、８ビット精度よりも低い「Ａビット精度」に量子化される１つ以上のレイヤ１４１０を決定する。これにより、ニューラルネットワーク１４０２の全体レイヤのうち、決定された一部レイヤ１４１０は、Ａビット精度で量子化される。
【００８８】
最終的に、ニューラルネットワーク１４０１は、Ａビット精度の固定小数点パラメータを有するレイヤ１４１０と８ビット精度の固定小数点パラメータを有する残りのレイヤを含むニューラルネットワークに量子化される。
【００８９】
一方、図１３及び図１４で説明されたニューラルネットワークのビット精度数値（３２ビット、８ビット）は、説明の便宜のための一例であって、実施形態は、その限りではない。
【００９０】
図１５は、一実施形態による量子化されたニューラルネットワークを説明するための図面である。図１５を参照すれば、量子化されたニューラルネットワーク１５０１は、４ビット精度(lower-bit  precision)を有するレイヤと８ビット精度を有するレイヤとを含む。ここで、４ビット精度を有するレイヤは、下位ビット精度を有するレイヤであって、前述した図面で説明された順方向及び逆伝播学習を通じてレイヤ別ウェイト差統計量を分析し、分析されたウェイト差統計量に基づいて決定されたレイヤに該当する。４ビット精度を有するレイヤの個数は、前述したように、ニューラルネットワーク１５０１の精度損失を最小化するように決定されうる。
【００９１】
一方、図１５に示された識別番号は、説明の便宜上、任意に定義されたものであって、実施形態は、その限りではない。
【００９２】
図１６は、一実施形態によって下位ビット精度で量子化されたレイヤ数と精度損失との相関関係を例示的に説明するためのグラフである。精度損失は、ニューラルネットワークの認識率(recognition  rate)に係わるものでもある。
【００９３】
図１６を参照すれば、インセプションｖ３(Inception  v3)に対するシミュレーション結果であって、インセプションｖ３でウェイトを有する全てのレイヤのうち、下位ウェイト差統計量（平均二乗）を有する一部レイヤを下位ビット精度で量子化した場合に対する精度損失の相関関係が示されている。具体的に、下位ウェイト差統計量（平均二乗）を有する一部レイヤは、４ビット精度で量子化され、残りのレイヤは、８ビット精度を有する。
【００９４】
下位ビット精度で量子化されるレイヤ数が増加するほど精度損失は増加することが分かる。これは、当然ながら、量子化されたレイヤ数が多いほどさらに多くのパラメータのデータ損失が大きくなるからである。しかし、８ビット精度を有する全体９５個のレイヤのうち、２５個レイヤのみ下位ビット（４ビット）精度で追加的に量子化された場合には、そうではない場合よりも精度損失が１％レベルに過ぎない。したがって、かような場合、精度損失は、１％レベルに過ぎないが、プロセッサ１１０のニューラルネットワークに対する演算量が減少しつつ、処理速度をさらに効果的に増加させうる利点がある。したがって、精度損失に耐えられるレベルで一部レイヤを下位ビット精度で量子化するならば、ニューラルネットワークの高い認識精度（または認識率）を確保しつつ、ニューラルネットワークが展開されるデバイスにおける効率的な演算量及び処理速度を保証可能となる。
【００９５】
図１７は、一実施形態によって下位ビット精度で量子化されるレイヤを判断するための基準としてウェイト差統計量を用いる場合と異なる方式を用いる場合とを比較して説明するための図面である。
【００９６】
図１７を参照すれば、下位ビット精度で量子化されるレイヤを判断するための基準として、ウェイト範囲(weight  range)を用いる場合（１７０１）、精度を用いる場合（１７０２）及びウェイト差の平均二乗を用いる場合（１７０３）を比べた結果が示されている。
【００９７】
ウェイト範囲を用いる場合（１７０１）は、レイヤ別ウェイト範囲を昇順で整列した後、ウェイト範囲の小さい一部レイヤを下位ビット（４ビット）精度で量子化する方式である。しかし、図１７に示されたように、他の場合（１７０２、１７０３）と比べてウェイト範囲を用いる場合（１７０１）は、精度損失が非常に大きいということが分かる。これは、ウェイト範囲が小さいほど表現されるウェイト値が少なくなるので、低いビット精度で表現が可能であるが、ウェイト範囲が小さいとしても、ウェイトの最大値が大きければ、当該ウェイトを表現するための整数ビット(integer  bit)が大きくならねばならないからである。
【００９８】
次いで、精度を用いる場合（１７０２）は、ニューラルネットワークの各レイヤを１つずつ下位ビット（４ビット）精度で量子化し、そのときの認識精度（または認識率）を計算し、精度損失が低い順に下位ビット精度で量子化されるレイヤを決定する方式である。図１７に示されたように、精度を用いる場合（１７０２）に対する精度損失は、ウェイト差の平均二乗を用いる場合（１７０３）と類似している。しかし、そうであるとしても、精度を用いる場合（１７０２）は、ニューラルネットワークに含まれた全てのレイヤを順に量子化しつつ、精度損失をいちいち計算せねばならないので、処理時間が非常に長くなるという問題がある。
【００９９】
上の場合（１７０１、１７０２）と異なって、ウェイト差の平均二乗を用いる場合（１７０３）は、精度損失が大きくなく、かつさらに速い処理速度及び少ない演算量で下位ビット精度で量子化されるレイヤ数を判断することができる。
【０１００】
図１８は、一実施形態による電子システムを示すブロック図である。図１８を参照すれば、電子システム１８００は、ニューラルネットワークに基づいて入力データをリアルタイムで分析して有効な情報を抽出し、抽出された情報に基づいて状況判断を行うか、または電子システム１８００が搭載される電子デバイスの構成を制御することができる。例えば、電子システム１８００は、ドローン（ｄｒｏｎｅ）、先進運転支援システム(Advanced  Drivers  Assistance  Systemと、ADAS)のようなロボット装置、スマートＴＶ、スマートフォン、医療デバイス、モバイルデバイス、映像表示デバイス、計測デバイス、ＩｏＴデバイスなどに適用され、その他にも多様な種類の電子デバイスのうち少なくとも１つに搭載されうる。
【０１０１】
電子システム１８００は、プロセッサ１８１０、ＲＡＭ１８２０、ニューラルネットワーク装置１８３０、メモリ１８４０、センサーモジュール１８５０、通信モジュール１８６０、及び入出力モジュール１８７０を含む。電子システム１８００は、セキュリティモジュール、電力制御装置などをさらに含む。電子システム１８００のハードウェア構成のうち、一部は少なくとも１つの半導体チップに搭載される。ニューラルネットワーク装置１８３０は、前述されたニューラルネットワーク専用ハードウェアアクセラレータ自体またはこれを含む装置であるとしうる。
【０１０２】
プロセッサ１８１０は、電子システム１８００の全般的な動作を制御する。プロセッサ１８１０は、１つのプロセッサコア(Single  Core)を含むか、複数のプロセッサコア(Multi-Core)を含んでもよい。プロセッサ１８１０は、メモリ１８４０に保存されたプログラム及び／またはデータを処理または実行することができる。一実施形態において、プロセッサ１８１０は、メモリ１８４０に保存されたプログラムを実行することで、ニューラルネットワーク装置１８３０の機能を制御することができる。プロセッサ１８１０は、ＣＰＵ、ＧＰＵ、ＡＰなどとして具現される。
【０１０３】
ＲＡＭ１８２０は、プログラム、データ、または命令(instructions)を一時的に保存する。例えば、メモリ１８４０に保存されたプログラム及び／またはデータは、プロセッサ１８１０の制御またはブーティングコードによってＲＡＭ１８２０に一時的に保存される。ＲＡＭ１８２０は、ＤＲＡＭ(Dynamic  RAM)またはＳＲＡＭ(Static  RAM)などのメモリとして具現される。
【０１０４】
ニューラルネットワーク装置１８３０は、ニューラルネットワークに対する学習を行うか、受信される入力データに基づいてニューラルネットワークの演算を行い、遂行結果に基づいて情報信号を生成する。ニューラルネットワークは、Convolutional  Neural  Networks(CNN)、Recurrent  Neural  Networks(RNN)、Deep  Belief  Networks、Restricted  Boltzman  Machinesなどを含むが、これに制限されない。
【０１０５】
具体的に、ニューラルネットワーク装置１８３０は、ニューラルネットワークを生成するか、ニューラルネットワークを学習(learn)（または訓練(train)）するか、浮動小数点(floating  point)タイプのニューラルネットワークを固定小数点(fixed  point)タイプのニューラルネットワークに量子化するか、またはニューラルネットワークを再訓練(retrain)する機能のような多様なプロセッシング機能を有する。すなわち、ニューラルネットワーク装置１８３０は、ニューラルネットワークを学習しつつ、前述された固定小数点タイプで量子化されたニューラルネットワークを用いて処理を行うハードウェアであって、前述されたニューラルネットワーク専用ハードウェアアクセラレータに該当される。
【０１０６】
情報信号は、音声認識信号、事物認識信号、映像認識信号、生体情報認識信号のような多様な種類の認識信号のうち、１つを含みうる。例えば、ニューラルネットワーク装置１８３０は、ビデオストリームに含まれるフレームデータを入力データとして受信し、フレームデータからフレームデータが示すイメージに含まれた事物に係わる認識信号を生成することができる。しかし、これに制限されるものではなく、電子システム１８００が搭載された電子装置の種類または機能によって、ニューラルネットワーク装置１８３０は、多様な種類の入力データを受信し、入力データによる認識信号を生成することができる。
【０１０７】
メモリ１８４０は、データを保存するための保存場所であって、ＯＳ(Operating  System)、各種プログラム、及び各種データを保存することができる。実施形態において、メモリ１８４０は、ニューラルネットワーク装置１８３０の演算遂行過程で生成される中間結果、例えば、出力フィーチャマップを出力フィーチャリストまたは出力フィーチャマトリックス状に保存することができる。実施形態において、メモリ１８４０には、圧縮された出力フィーチャマップが保存される。また、メモリ１８４０は、ニューラルネットワーク装置１８３０で用いられる量子化されたニューラルネットワークデータ、例えば、パラメータ、ウェイトマップ、またはウェイトリストを保存することができる。
【０１０８】
メモリ１８４０は、ＤＲＡＭであるとしうるが、これに限定されるものではない。メモリ１８４０は、揮発性メモリまたは不揮発性メモリのうち少なくとも１つを含みうる。不揮発性メモリは、ＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、ＰＲＡＭ、ＭＲＡＭ、ＲＲＡＭ、ＦＲＡＭなどを含む。揮発性メモリは、ＤＲＡＭ、ＳＲＡＭ、ＳＤＲＡＭなどを含む。実施形態において、メモリ１８４０は、ＨＤＤ、ＳＳＤ、ＣＦ、ＳＤ、Ｍｉｃｒｏ−ＳＤ、Ｍｉｎｉ−ＳＤ、ｘＤまたはＭｅｍｏｒｙ  Ｓｔｉｃｋのうち少なくとも１つを含んでもよい。
【０１０９】
センサーモジュール１８５０は、電子システム１８００が搭載される電子装置周辺の情報を収集することができる。センサーモジュール１８５０は、電子装置の外部から信号（例えば、映像信号、音声信号、磁気信号、生体信号、タッチ信号など）をセンシングまたは受信し、センシングまたは受信された信号をデータに変換することができる。そのために、センサーモジュール１８５０は、センシング装置、例えば、マイク、撮像装置、イメージセンサー、ＬＩＤＡＲ(light  detection  and  ranging)センサー、超音波センサー、赤外線センサー、バイオセンサー、及びタッチセンサーなど多様な種類のセンシング装置のうち少なくとも１つを含みうる。
【０１１０】
センサーモジュール１８５０は、変換されたデータをニューラルネットワーク装置１８３０に入力データとして提供することができる。例えば、センサーモジュール１８５０は、イメージセンサーを含み、電子装置の外部環境を撮影してビデオストリームを生成し、ビデオストリームの連続するデータフレームをニューラルネットワーク装置１８３０に入力データとして順次に提供することができる。しかし、これに制限されるものではなく、センサーモジュール１８５０は、多様な種類のデータをニューラルネットワーク装置１８３０に提供することができる。
【０１１１】
通信モジュール１８６０は、外部装置と通信可能な多様な有線または無線インターフェースを備えることができる。例えば、通信モジュール１８６０は、有線ローカルエリアネットワーク(Local  Area  Network;LAN)、Wi-fi(Wireless  Fidelity)のような無線ローカルエリアネットワーク(Wireless  Local  Area  Network;WLAN)、ブルートゥース(登録商標（Bluetooth）)のような無線パーソナルエリアネットワーク(Wireless  Personal  Area  Network;WPAN)、無線ＵＳＢ(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)に接続可能な通信インターフェースなどを含んでもよい。
【０１１２】
他の実施形態において、通信モジュール１８６０は、外部から量子化されたニューラルネットワークに係わるデータを受信することができる。ここで、外部は、図３のニューラルネットワーク量子化装置１０のように膨大な量のデータに基づいて訓練を行い、訓練されたニューラルネットワークを固定小数点タイプに量子化し、量子化されたニューラルネットワークデータを電子システム１８００に提供するデバイスであってもよい。受信された量子化されたニューラルネットワークデータは、メモリ１８４０に保存される。
【０１１３】
図１９は、一実施形態によるニューラルネットワーク量子化のための方法のフローチャートである。図１９に示された、ニューラルネットワーク量子化方法は、前述した図面の説明の実施形態に係わるものなので、以下省略されても、以上の図面で説明された内容は、図１９の方法にも適用される。
【０１１４】
１９０１段階において、プロセッサ１１０は、第１ビット精度の第１ニューラルネットワークに対して、複数のサイクルの順方向(feedforward)及び逆伝播(backpropagation)学習を繰り返して行う。
【０１１５】
１９０２段階において、プロセッサ１１０は、第１ニューラルネットワークに含まれたレイヤそれぞれに対して、既設定の初期ウェイト及び各サイクルの逆伝播学習によって決定された更新ウェイト間のウェイト差(weight  differences)を獲得する。
【０１１６】
１９０３段階において、プロセッサ１１０は、レイヤそれぞれに対するウェイト差の統計量を分析する。
【０１１７】
１９０４段階において、プロセッサ１１０は、分析された統計量に基づいて、レイヤのうち、第１ビット精度よりも低い第２ビット精度で量子化される１つ以上のレイヤを決定する。
【０１１８】
１９０５段階において、プロセッサ１１０は、レイヤのうち、決定されたレイヤを第２ビット精度で量子化することで、量子化されたレイヤを含む第２ニューラルネットワークを生成する。
【０１１９】
一方、上述した実施形態は、コンピュータで実行されるプログラムで作成可能であり、コンピュータで読み取り可能な記録媒体を用いて前記プログラムを動作させる汎用デジタルコンピュータで具現される。また、上述した実施形態で使用されたデータの構造は、コンピュータで読み取り可能な記録媒体に多くの手段を通じて記録される。前記コンピュータで読み取り可能な記録媒体は、マグネチック記録媒体（例えば、ROM(Read  Only  Memory)、フロッピーディスク、ハードディスクなど）、光学的判読媒体（例えば、ＣＤ−ＲＯＭ、ＤＶＤなど）のような記録媒体を含む。
【０１２０】
本実施形態に係わる技術分野で通常の知識を有する者は、前記記載の本質的な特性から外れない範囲で実施形態が変形された形態として具現されることを理解できるであろう。したがって、開示された実施形態は、限定的な観点ではなく説明的な観点で考慮されねばならない。権利範囲は、前述した説明ではなく、特許請求の範囲に示されており、それと同等な範囲内にある全ての相違点は、本実施形態に含まれたものと解釈されねばならない。
【産業上の利用可能性】
【０１２１】
本発明のニューラルネットワーク量子化のための方法及び装置は、データ分析関連の技術分野に効果的に適用可能である。
【符号の説明】
【０１２２】
１      ニューラルネットワーク
１０    ニューラルネットワーク量子化装置
１１０  プロセッサ
１２０  メモリ
【図１】
2020113273.tif 000004
【図２】
2020113273.tif 000005
【図３】
2020113273.tif 000006
【図４】
2020113273.tif 000007
【図５】
2020113273.tif 000008
【図６】
2020113273.tif 000009
【図７】
2020113273.tif 000010
【図８Ａ】
2020113273.tif 000011
【図８Ｂ】
2020113273.tif 000012
【図８Ｃ】
2020113273.tif 000013
【図９】
2020113273.tif 000014
【図１０】
2020113273.tif 000015
【図１１】
2020113273.tif 000016
【図１２】
2020113273.tif 000017
【図１３】
2020113273.tif 000018
【図１４】
2020113273.tif 000019
【図１５】
2020113273.tif 000020
【図１６】
2020113273.tif 000021
【図１７】
2020113273.tif 000022
【図１８】
2020113273.tif 000023
【図１９】
2020113273.tif 000024