(57)【要約】【課題】  ニューラルネットワークにおいて、パラメータを処理する方法及びその装置を提供する。【解決手段】  低精度ナンバーシステムを利用するニューラルネットワークにおいて、パラメータを処理する方法及びその装置に係り、ニューラルネットワークのウェートをアップデートするための個別グラジエント値と残余グラジエント値とを計算し、加算器を利用し、個別グラジエント値、残余グラジエント値及びウェートを合算し、合算結果に基づいて、ウェート及び残余グラジエント値をアップデートする方法及びその装置である。【選択図】      図７
2020009444.tif 000002
【特許請求の範囲】
【請求項１】
低精度ナンバーシステムを利用するニューラルネットワークにおいて、パラメータを処理する方法において、
前記ニューラルネットワークのウェートをアップデートするための個別グラジエント値を計算する段階と、
前記個別グラジエント値を累積した累積グラジエント値、及び前記ウェートのビット桁に基づいて、残余グラジエント値を計算する段階と、
前記残余グラジエント値のビット桁に対応するように、前記個別グラジエント値を調整する段階と、
加算器を利用し、前記調整された個別グラジエント値、前記残余グラジエント値及び前記ウェートを合算する段階と、
前記合算結果に基づいて、前記ウェート及び前記残余グラジエント値をアップデートする段階と、を含む方法。
【請求項２】
前記残余グラジエント値を計算する段階は、
前記累積グラジエント値のうち、前記ウェートのビット桁に合算可能な値を有効グラジエント値と決定する段階と、
前記累積グラジエント値から前記有効グラジエント値を減算することにより、前記残余グラジエント値を計算する段階と、を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記個別グラジエント値を調整する段階は、
前記個別グラジエント値のうち、前記残余グラジエント値の最下位ビット桁未満の値が省略されるように、前記個別グラジエント値を量子化する段階と、
前記残余グラジエント値の最上位ビット桁に対応するビット桁まで値が存在するように、前記量子化された個別グラジエント値をパッディングする段階と、を含むことを特徴とする請求項１又は２に記載の方法。
【請求項４】
前記合算する段階は、
前記加算器のビット数に基づいて、前記調整された個別グラジエント値及び前記残余グラジエント値を前記加算器にマッピングし、前記加算器を利用して中間合算値を計算する段階と、
前記加算器のビット数に基づいて、前記ウェートを前記加算器にマッピングし、前記加算器を利用し、前記中間合算値及び前記ウェートを合算する段階と、を含むことを特徴とする請求項１−３のうち何れか一項に記載の方法。
【請求項５】
前記合算する段階は、
前記加算器の全てのビット桁に値がマッピングされるように、前記調整された個別グラジエント値、前記残余グラジエント値及び前記ウェートをパッディングする段階と、
前記加算器を利用し、前記パッディングされた個別グラジエント値、前記パッディングされた中間合算値、及び前記パッディングされたウェートを合算する段階と、を含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記アップデートする段階は、
前記ウェートのビット桁に対応する前記合算結果のビット桁の値を前記ウェートにアップデートし、前記ウェートのビット桁に対応しない前記合算結果のビット桁の値を前記残余グラジエント値にアップデートする段階を含むことを特徴とする請求項１−５のうち何れか一項に記載の方法。
【請求項７】
前記方法は、
前記合算結果の最上位ビット（ＭＳＢ）である符号ビットを獲得する段階と、
前記符号ビットが前記アップデートされたウェート、及び前記アップデートされた残余グラジエント値のうち少なくともいずれか１つの最上位ビットになるように追加する段階と、をさらに含むことを特徴とする請求項１−６のうち何れか一項に記載の方法。
【請求項８】
低精度ナンバーシステムを利用するニューラルネットワークにおいて、パラメータを処理する方法において、
前記ニューラルネットワークのウェートをアップデートするための個別グラジエント値を計算する段階と、
前記個別グラジエント値を累積した累積グラジエント値、及び前記ウェートのビット桁に基づいて、残余グラジエント値を計算する段階と、
前記残余グラジエント値のビット桁に対応するように、前記個別グラジエント値を調整する段階と、
前記残余グラジエント値から符号ビットを除外した残りの値を前記ウェートに連結し、中間連結値を計算する段階と、
加算器を利用し、前記調整された個別グラジエント値、及び前記中間連結値を合算する段階と、
前記合算結果に基づいて、前記ウェート及び前記残余グラジエント値をアップデートする段階と、を含む方法。
【請求項９】
前記残余グラジエント値を計算する段階は、
前記累積グラジエント値のうち、前記ウェートのビット桁に合算可能な値を有効グラジエント値と決定する段階と、
前記累積グラジエント値から前記有効グラジエント値を減算することにより、前記残余グラジエント値を計算する段階と、を含むことを特徴とする請求項８に記載の方法。
【請求項１０】
前記個別グラジエント値を調整する段階は、
前記個別グラジエント値のうち、前記残余グラジエント値の最下位ビット桁未満の値が省略されるように、前記個別グラジエント値を量子化する段階と、
前記残余グラジエント値の最上位ビット桁に対応するビット桁まで値が存在するように、前記量子化された個別グラジエント値をパッディングする段階と、を含むことを特徴とする請求項８又は９に記載の方法。
【請求項１１】
前記合算する段階は、
前記加算器のビット数に基づいて、前記調整された個別グラジエント値、及び前記中間連結値を前記加算器にマッピングし、前記加算器を利用し、前記調整された個別グラジエント値、及び前記中間連結値を合算する段階を含むことを特徴とする請求項８−１０のうち何れか一項に記載の方法。
【請求項１２】
前記合算する段階は、
前記加算器の全てのビット桁に値がマッピングされるように、前記調整された個別グラジエント値、及び前記中間連結値をパッディングする段階と、
前記加算器を利用し、前記パッディングされた個別グラジエント値、及び前記パッディングされた中間連結値を合算する段階と、を含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記アップデートする段階は、
前記ウェートのビット桁に対応する前記合算結果のビット桁の値を前記ウェートにアップデートし、前記ウェートのビット桁に対応しない前記合算結果のビット桁の値を前記残余グラジエント値にアップデートする段階と、を含むことを特徴とする請求項８−１２のうち何れか一項に記載の方法。
【請求項１４】
前記方法は、
前記合算結果の最上位ビット（ＭＳＢ）である符号ビットを獲得する段階と、
前記符号ビットが前記アップデートされたウェート、及び前記アップデートされた残余グラジエント値のうち少なくともいずれか１つの最上位ビットになるように追加する段階と、をさらに含むことを特徴とする請求項８−１３のうち何れか一項に記載の方法。
【請求項１５】
低精度ナンバーシステムを利用するニューラルネットワークを実施する装置において、
少なくとも１つのプログラムが保存されたメモリと、
前記少なくとも１つのプログラムを実行することにより、前記ニューラルネットワークにおいて、パラメータを処理する少なくとも１つのプロセッサと、を含み、
前記少なくとも１つのプロセッサは、
前記ニューラルネットワークのウェートをアップデートするための個別グラジエント値を計算し、前記個別グラジエント値を累積した累積グラジエント値、及び前記ウェートのビット桁に基づいて、残余グラジエント値を計算し、前記残余グラジエント値のビット桁に対応するように、前記個別グラジエント値を調整し、加算器を利用し、前記調整された個別グラジエント値、前記残余グラジエント値及び前記ウェートを合算し、前記合算結果に基づいて、前記ウェート及び前記残余グラジエント値をアップデートする装置。
【請求項１６】
低精度ナンバーシステムを利用するニューラルネットワークを実施する装置において、
少なくとも１つのプログラムが保存されたメモリと、
前記少なくとも１つのプログラムを実行することにより、前記ニューラルネットワークにおいて、パラメータを処理する少なくとも１つのプロセッサと、を含み、
前記少なくとも１つのプロセッサは、
前記ニューラルネットワークのウェートをアップデートするための個別グラジエント値を計算し、前記個別グラジエント値を累積した累積グラジエント値、及び前記ウェートのビット桁に基づいて、残余グラジエント値を計算し、前記残余グラジエント値のビット桁に対応するように、前記個別グラジエント値を調整し、前記残余グラジエント値から符号ビットを除外した残りの値を前記ウェートに連結し、中間連結値を計算し、加算器を利用し、前記調整された個別グラジエント値、及び前記中間連結値を合算し、前記合算結果に基づいて、前記ウェート及び前記残余グラジエント値をアップデートする装置。
【請求項１７】
請求項１ないし８のうちいずれか１項に記載の方法をコンピュータで実行するためのプログラムを記録したコンピュータで読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワークにおいてパラメータを処理する方法及び装置に関する。
【背景技術】
【０００２】
ニューラルネットワーク（neural  network）は、生物学的脳をモデリングしたコンピュータ科学的アーキテクチャ（computational  architecture）を参照する。最近、ニューラルネットワーク技術の発展により、多種の電子システムにおいて、ニューラルネットワーク装置を使用して入力データを分析し、有効な情報を抽出する研究が活発に進められている。
【０００３】
ニューラルネットワーク装置は、複雑な入力データに係わる多量の演算を必要とする。該ニューラルネットワーク装置が入力をリアルタイムで分析し、情報抽出のために、ニューラルネットワーク演算を効率的に処理することができる技術が要求される。例えば、該ニューラルネットワーク装置の複雑な入力データの処理に必要な演算量を低減させながらも、精度損失を最小化させることができる技術が要求される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１９８８０４号公報
【特許文献２】特開２０１２−２０８８４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明が解決しようとする課題は、ニューラルネットワークにおいて、パラメータを処理する方法及びその装置を提供するところにある。本実施形態がなす技術的課題は、前述のような技術的課題に限定されるものではなく、以下の実施形態から、他の技術的課題も類推される。
【課題を解決するための手段】
【０００６】
前述の技術的課題を達成するための技術的手段として、本開示の第１側面は、低精度ナンバーシステム（low-precision  number  system)を利用するニューラルネットワークにおいて、パラメータを処理する方法において、前記ニューラルネットワークのウェートをアップデートするための個別グラジエント値を計算する段階と、前記個別グラジエント値を累積した累積グラジエント値、及び前記ウェートのビット桁に基づいて、残余グラジエント値を計算する段階と、前記残余グラジエント値のビット桁に対応するように、前記個別グラジエント値を調整する段階と、加算器を利用し、前記調整された個別グラジエント値、前記残余グラジエント値及び前記ウェートを合算する段階と、前記合算結果に基づいて、前記ウェート及び前記残余グラジエント値をアップデートする段階と、を含む方法を提供することができる。
【０００７】
また、前記累積グラジエント値のうち、前記ウェートのビット桁に合算可能な値を有効グラジエント値と決定する段階と、前記累積グラジエント値から前記有効グラジエント値を減算することにより、前記残余グラジエント値を計算する段階と、を含む方法を提供することができる。
【０００８】
また、前記個別グラジエント値のうち、前記残余グラジエント値の最下位ビット桁未満の値が省略されるように、前記個別グラジエント値を量子化する段階と、前記残余グラジエント値の最上位ビット（ＭＳＢ：most  significant  bit）桁に対応するビット桁まで値が存在するように、前記量子化された個別グラジエント値をパッディング（padding）する段階と、を含む、方法を提供することができる。
【０００９】
また、前記加算器のビット数に基づいて、前記調整された個別グラジエント値及び前記残余グラジエント値を前記加算器にマッピングし、前記加算器を利用して中間合算値を計算する段階と、前記加算器のビット数に基づいて、前記ウェートを前記加算器にマッピングし、前記加算器を利用し、前記中間合算値及び前記ウェートを合算する段階と、を含む方法を提供することができる。
【００１０】
また、前記加算器の全てのビット桁に値がマッピングされるように、前記調整された個別グラジエント値、前記残余グラジエント値及び前記ウェートをパッディングする段階と、前記加算器を利用し、前記パッディングされた個別グラジエント値、前記パッディングされた中間合算値、及び前記パッディングされたウェートを合算する段階と、を含む方法を提供することができる。
【００１１】
また、前記ウェートのビット桁に対応する前記合算結果のビット桁の値を前記ウェートにアップデートし、前記ウェートのビット桁に対応しない前記合算結果のビット桁の値を前記残余グラジエント値にアップデートする段階と、を含む方法を提供することができる。
【００１２】
また、前記合算結果の最上位ビットである符号ビットを獲得する段階と、前記符号ビットが前記アップデートされたウェート、及び前記アップデートされた残余グラジエント値のうち少なくともいずれか１つの最上位ビットになるように追加する段階と、をさらに含む方法を提供することができる。
【００１３】
本開示の第２側面は、低精度ナンバーシステムを利用するニューラルネットワークにおいて、パラメータを処理する方法において、前記ニューラルネットワークのウェートをアップデートするための個別グラジエント値を計算する段階と、前記個別グラジエント値を累積した累積グラジエント値、及び前記ウェートのビット桁に基づいて、残余グラジエント値を計算する段階と、前記残余グラジエント値のビット桁に対応するように、前記個別グラジエント値を調整する段階と、前記残余グラジエント値から符号ビットを除外した残りの値を前記ウェートに連結（concatenation）して中間連結値を計算する段階と、加算器を利用し、前記調整された個別グラジエント値、及び前記中間連結値を合算する段階と、前記合算結果に基づいて、前記ウェート及び前記残余グラジエント値をアップデートする段階と、を含む、方法を提供することができる。
【００１４】
本開示の第３側面は、低精度ナンバーシステムを利用するニューラルネットワークを実施（implement）する装置において、少なくとも１つのプログラムが保存されたメモリと、及び前記少なくとも１つのプログラムを実行することにより、前記ニューラルネットワークにおいて、パラメータを処理する少なくとも１つのプロセッサを含み、前記少なくとも１つのプロセッサは、前記ニューラルネットワークのウェートをアップデートするための個別グラジエント値を計算し、前記個別グラジエント値を累積した累積グラジエント値、及び前記ウェートのビット桁に基づいて、残余グラジエント値を計算し、前記残余グラジエント値のビット桁に対応するように、前記個別グラジエント値を調整し、加算器を利用し、前記調整された個別グラジエント値、前記残余グラジエント値及び前記ウェートを合算し、前記合算結果に基づいて、前記ウェート及び前記残余グラジエント値をアップデートする装置を提供することができる。
【００１５】
本開示の第４側面は、低精度ナンバーシステムを利用するニューラルネットワークを実施する装置において、少なくとも１つのプログラムが保存されたメモリ；及び前記少なくとも１つのプログラムを実行することにより、前記ニューラルネットワークにおいて、パラメータを処理する少なくとも１つのプロセッサを含み、前記少なくとも１つのプロセッサは、前記ニューラルネットワークのウェートをアップデートするための個別グラジエント値を計算し、前記個別グラジエント値を累積した累積グラジエント値、及び前記ウェートのビット桁に基づいて、残余グラジエント値を計算し、前記残余グラジエント値のビット桁に対応するように、前記個別グラジエント値を調整し、前記残余グラジエント値から符号ビットを除外した残りの値を前記ウェートに連結し、中間連結値を計算し、加算器を利用し、前記調整された個別グラジエント値、及び前記中間連結値を合算し、前記合算結果に基づいて、前記ウェート及び前記残余グラジエント値をアップデートする装置を提供することができる。
【００１６】
本開示の第５側面は、第１側面の方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体を提供することができる。
【図面の簡単な説明】
【００１７】
【図１】一実施形態によるニューラルネットワークにおいて、浮動小数点フォーマットのパラメータを、固定小数点フォーマットのパラメータに量子化する例示について説明する図面である。
【図２】一実施形態によるニューラルネットワークで行われる演算について説明するための図面である。
【図３Ａ】一実施形態による浮動小数点値の例示を図示した図面である。
【図３Ｂ】一実施形態による固定小数点値の一例を図示した図面である。
【図３Ｃ】一実施形態による固定小数点値の他の例を図示した図面である。
【図４】一実施形態による、ニューラルネットワークのパラメータがアップデートされる過程について説明するための図面である。
【図５】一実施形態によるニューラルネットワークにおいて、パラメータを処理する方法の一例を示すフローチャートである。
【図６】一実施形態による、固定小数点パラメータ形式のウェートがアップデートされる例示について説明するための図面である。
【図７】一実施形態による、ウェート及び残余グラジエント値をアップデートする第１例示を示す図面である。
【図８】一実施形態による、ウェート及び残余グラジエント値をアップデートする第２例示を示す図面である。
【図９】一実施形態による、加算器を利用し、ウェート及び残余グラジエント値をアップデートする第１例示を示す図面である。
【図１０】一実施形態による、加算器を利用し、ウェート及び残余グラジエント値をアップデートする第２例示を示す図面である。
【図１１】一実施形態による、加算器を利用し、ウェート及び残余グラジエント値をアップデートする第３例示を示す図面である。
【図１２】一実施形態による、加算器を利用し、ウェート及び残余グラジエント値をアップデートする第４例示を示す図面である。
【図１３】一実施形態による、ウェート及び残余グラジエント値をアップデートする方法について説明するためのフローチャートである。
【図１４】一実施形態によるニューラルネットワーク装置のハードウェア構成を図示したブロック図である。
【発明を実施するための形態】
【００１８】
本明細書において、多様なところに記載される「一部実施形態において」または「一実施形態において」というような語句は、必ずしもいずれも同一実施形態を示すものではない。
【００１９】
本開示の一部実施形態は、機能的なブロック構成、及び多様な処理段階によっても示される。そのような機能ブロックの一部または全部は、特定機能を実行する多様な個数のハードウェア構成及び／またはソフトウェア構成によっても具現される。例えば、本開示の機能ブロックは、１以上のマイクロプロセッサによって具現されるか、あるいは所定機能のための回路構成によっても具現される。また、例えば、本開示の機能ブロックは、多様なプログラミング言語またはスクリプティング言語によっても具現される。該機能ブロックは、１以上のプロセッサで実行されるアルゴリズムによっても具現される。また、本開示は、電子的な環境設定、信号処理、及び／またはデータ処理などのために、従来技術を採用することができる。「メカニズム」、「要素」、「手段」及び「構成」のような用語は、汎用され、機械的であって物理的な構成として限定されるものではない。
【００２０】
また、図面に図示された構成要素間の連結線または連結部材は、機能的な連結及び／または物理的または回路的な連結を例示的に示したものに過ぎない。実際の装置においては、代替可能であったり、追加されたりする多様な機能的な連結、物理的な連結または回路連結によっても、構成要素間の連結が示される。
【００２１】
以下、図面を参照し、本発明の実施形態について詳細に説明する。
【００２２】
図１は、一実施形態によるニューラルネットワークにおいて、浮動小数点フォーマットのパラメータを、固定小数点フォーマットのパラメータに量子化する例示について説明する図面である。
【００２３】
図１を参照すれば、ニューラルネットワーク学習器１０は、ニューラルネットワークを生成するか、あるいはニューラルネットワークを訓練する（train）（または、学習させる（learn））か、浮動小数点フォーマットのニューラルネットワークを、固定小数点フォーマットのニューラルネットワークに量子化するか、あるいはニューラルネットワークを再訓練（retrain）する機能のような多様なプロセッシング機能を有するコンピュータデバイスに該当する。例えば、ニューラルネットワーク学習器１０は、ＰＣ（personal  computer）、サーバデバイス、モバイルデバイスのような多種のデバイスによっても具現される。
【００２４】
ニューラルネットワーク学習器１０は、与えられた初期ニューラルネットワークを反復的に訓練する（学習させる）ことにより、訓練されたニューラルネットワーク１１を生成することができる。このとき、該初期ニューラルネットワークは、ニューラルネットワークの処理精度を確保する観点から、浮動小数点フォーマットのパラメータ、例えば、３２ビット浮動小数点精度（３２bit  floating  point  precision）のパラメータを有することができる。ここで、該パラメータは、例えば、ニューラルネットワークの入出力アクティベーション、ウェート、バイアスのような、ニューラルネットワークに入出力される多種のデータを含んでもよい。ニューラルネットワークの反復的な訓練が進められることにより、ニューラルネットワークの浮動小数点パラメータは、与えられた入力に対して、さらに正確な出力を演算するためにも調整される（tuned）。
【００２５】
ニューラルネットワーク学習器１０は、訓練されたニューラルネットワーク１１を、ニューラルネットワーク推論器２０のようなハードウェアアクセラレータに伝達することができる。ニューラルネットワーク推論器２０は、モバイルデバイス、埋め込み（embedded）デバイスなどにも含まれる。ニューラルネットワーク推論器２０は、ニューラルネットワーク２１の駆動のための専用ハードウェアであり、比較的、低電力または低性能に具現されるために、浮動小数点演算よりは、固定小数点演算において、さらに適して具現される。一方、ニューラルネットワーク推論器２０は、ニューラルネットワーク駆動のための専用モジュールであるＴＰＵ（tensor  processing  unit）、ニューラルエンジン（Ｎeural  Ｅngine）などに該当するが、それらに制限されるものではない。
【００２６】
量子化されたニューラルネットワーク２１を駆動するニューラルネットワーク推論器２０は、ニューラルネットワーク学習器１０とは別途の独立したデバイスによっても具現され得る。しかし、それに制限されるものではなく、ニューラルネットワーク推論器２０は、ニューラルネットワーク学習器１０と同一デバイス内にも具現される。
【００２７】
一方、該浮動小数点は、該固定小数点に比べ、相対的に多くの演算量と、多くのメモリアクセス頻度とが要求される。特に、ニューラルネットワーク処理に必要となる演算量のほとんどは、多様なパラメータの演算を行うＭＡＣ（multiplication  and  accumulation）演算であることが知られている。従って、比較的処理性能が低いスマートフォン、タブレット、ウェアラブルデバイスなどに含まれたニューラルネットワーク推論器２０においては、浮動小数点フォーマットのパラメータを使用するニューラルネットワークの処理は必ずしも円滑なものではない。結局、そのようなデバイスにおいて、演算量を十分に低減させながら、許容可能な精度損失内において、ニューラルネットワークを駆動させるためには、ニューラルネットワークで処理される浮動小数点フォーマットのパラメータは、量子化されることが望ましい。ここで、該パラメータ量子化は、固定精度の浮動小数点フォーマットのパラメータを、低精度の固定小数点フォーマットのパラメータに変換することを意味する。
【００２８】
該ニューラルネットワーク量子化装置は、訓練されたニューラルネットワーク１１のパラメータを、所定ビットの固定小数点フォーマットに変換する量子化を行う。該ニューラルネットワーク量子化装置は、ニューラルネットワーク学習器１０、ニューラルネットワーク推論器２０に含まれて動作するか、あるいは独立した第３のハードウェアアクセラレータとして動作することができる。該ニューラルネットワーク量子化装置は、ニューラルネットワークが採用される（deployed）ニューラルネットワーク推論器２０のデバイスの処理性能を考慮し、訓練されたニューラルネットワーク１１のパラメータを、所定ビットの固定小数点フォーマットに変換する量子化を行い、量子化されたニューラルネットワーク２１を採用するニューラルネットワーク推論器２０に伝達することができる。
【００２９】
量子化されたニューラルネットワーク２１が採用されるニューラルネットワーク推論器２０は、具体的な例示として、ニューラルネットワークを利用した音声認識、映像認識などを行う自律走行自動車、ロボティックス、スマートフォン、タブレットデバイス、ＡＲ（augmented  reality）デバイス、ＩｏＴ（internet  of  things）デバイスなどにも含まれるが、それらに制限されるものではない。
【００３０】
図２は、一実施形態によるニューラルネットワークで行われる演算について説明するための図面である。図２を参照すれば、ニューラルネットワーク２は、入力レイヤ、隠れ層及び出力レイヤを含む構造を有し、受信される入力データ（例えば、Ｉ１及びＩ２）を基に演算を行い、遂行結果を基に、出力データ（例えば、Ｏ１及びＯ２）を生成することができる。
【００３１】
ニューラルネットワーク２は、前述のように、２層以上の隠れ層を含むＤＮＮ（deep  neural  network）またはｎ階層ニューラルネットワークでもある。例えば、図２に図示されているように、ニューラルネットワーク２は、入力レイヤ（Layer  １）、２層の隠れ層（Layer  ２及びLayer  ３）、及び出力レイヤ（Layer  ４）を含むＤＮＮであってもよい。ニューラルネットワーク２がＤＮＮアーキテクチャによって具現された場合、有効な情報を処理することができるさらに多いレイヤを含むので、ニューラルネットワーク２は、シングルレイヤを有するニューラルネットワークより複雑なデータ集合を処理することができる。一方、ニューラルネットワーク２は、４層のレイヤを含むように図示されているが、それは、例示に過ぎず、ニューラルネットワーク２は、さらに少なかったり多かったりするレイヤを含むか、あるいはさらに少なかったり多かったりするノードを含んでもよい。すなわち、ニューラルネットワーク２は、図２に図示されたところとは異なる、多様な構造のレイヤを含んでもよい。
【００３２】
ニューラルネットワーク２に含まれたレイヤそれぞれは、複数のノードを含んでもよい。該ノードは、ニューロン（neuron）、プロセッシングエレメント（ＰＥ：processing  element）、ユニット（unit）、またはそれらと類似した用語として知られた、複数の人工ノード（artificial  node）にも該当する。例えば、図２に図示されているように、Layer  １は、２個のノード、Layer  ２及びLayer  ３それぞれは、３個のノードを含んでもよい。ただし、それらは、例示に過ぎず、ニューラルネットワーク２に含まれたレイヤそれぞれは、多様な個数のノードを含んでもよい。
【００３３】
ニューラルネットワーク２のレイヤそれぞれに含まれたノードは、互いに連結されてデータを処理することができる。例えば、１つのノードは、他のノードからデータを受信して演算することができ、該演算結果をさらに他のノードに出力することができる。
【００３４】
ノードそれぞれの入力及び出力のそれぞれは、入力アクティベーション及び出力アクティベーションともされる。すなわち、該アクティベーションは、１ノードの出力であると共に、次のレイヤに含まれたノードの入力に該当するパラメータでもある。一方、ノードそれぞれは、以前レイヤに含まれたノードから受信されたアクティベーション、ウェート及びバイアスに基づいて、自体のアクティベーションを決定することができる。該ウェートは、各ノードでの出力アクティベーションを計算するために利用されるパラメータであり、ノード間の連結関係に割り当てられる値でもある。
【００３５】
該ノードそれぞれは、入力を受信して出力アクティベーションを出力する演算ユニット（computational  unit）またはプロセッシングエレメント（processing  element）によっても処理され、ノードそれぞれの入力・出力は、マッピングされる。例えば、σは、アクティベーション関数（activation  function）であり、ｗｉｊｋは、（ｉ−１）番目レイヤに含まれたｋ番目ノードから、ｉ番目レイヤに含まれたｊ番目ノードへのウェートであり、ｂｉｊは、ｉ番目レイヤに含まれたｊ番目ノードのバイアスであり、ａｉｊは、ｉ番目レイヤのｊ番目ノードのアクティベーションであるとするとき、該アクティベーションａｉｊは、次のような数式（１）を利用しても計算される。
【００３６】
【数１】
2020009444.tif 000003
図２に図示されているように、２番目レイヤ（Layer  ２）の最初ノードＣＨ１のアクティベーションは、ａ２１とも表現される。また、ａ２１は、数式（１）により、
ａ２１＝σ（ｗ２１，１×ａ１１＋ｗ２１，２×ａ１２＋ｂ２１）
の値を有することができる。ただし、前述の数式（１）は、ニューラルネットワーク２において、データを処理するために利用されるアクティベーション、ウェート及びバイアスについて説明するための例示であるのみ、それに制限されるものではない。該アクティベーションは、以前レイヤから受信されたアクティベーションの加重値和（weighted  sum）をsigmoid関数やＲｅＬＵ（Rectified  Linear  Unit）関数などのアクティベーション関数に通過させることによって獲得された値でもある。
【００３７】
一方、ニューラルネットワーク２は、低精度ナンバーシステム（low-precision  number  system）を利用することができる。低精度ナンバーシステムは、従来のニューラルネットワークより相対的に少ないビット個数を有する値をパラメータとして利用することにより、精度（precision）を低くしながら、演算量を低減させるシステムを意味する。例えば、３２ビットまたは６４ビットの浮動小数点または固定小数点値を利用する従来のニューラルネットワークとは異なり、低精度ナンバーシステムを利用するニューラルネットワーク２は、８ビットまたは１６ビットの浮動小数点または固定小数点値をパラメータとして利用することができる。
【００３８】
ニューラルネットワーク２が、８ビットまたは１６ビットの浮動小数点または固定小数点値を利用するということは、ニューラルネットワーク２のアクティベーション値、ウェート及びノードのバイアス値などのパラメータが、８ビットまたは１６ビットの浮動小数点または固定小数点形式を有するということを意味する。ただし、低精度ナンバーシステムを利用するニューラルネットワーク２は、さらに少ないビット個数を有する浮動小数点または固定小数点データをパラメータとして利用することもでき、前述の例示に制限されるものではない。
【００３９】
ニューラルネットワーク２においては、多くのデータ集合が相互連結された複数のノード間で交換され、レイヤを過ぎながら、多くの演算過程を経る。低精度ナンバーシステムを利用するニューラルネットワーク２は、多くの演算過程において、従来のニューラルネットワークより少ないビット個数を有するデータを利用するので、従来のニューラルネットワークと比較し、演算量が低減される。ただし、該低精度ナンバーシステムを利用するニューラルネットワーク２は、演算量を低減させながらも、精度損失を最小化させることができる技術が要求される。
【００４０】
図３Ａは、一実施形態による浮動小数点値の例示を図示した図面であり、図３Ｂは、一実施形態による固定小数点値の一例を図示した図面であり、図３Ｃは、一実施形態による固定小数点値の他の例を図示した図面である。
【００４１】
図３Ａを参照すれば、浮動小数点値３０は、符号ビット３１０、指数部３２０、仮数部３３０及びバイアス３４０からも構成される。該浮動小数点は、１つの数を、小数点部分を示す部分と小数点位置を示す部分とに分けて表現する表記法である。
【００４２】
仮数部３３０は、小数点部分を示す部分に対応し、指数部３２０は、小数点位置を示す部分に対応する。符号ビット３１０は、浮動小数点値３０の符号を決定することができる。バイアス３４０は、指数部３２０に加減される値であり、負の指数を表現するために決定される値でもある。浮動小数点値３０は、符号ビット３１０、指数部３２０に対応するビット、及び仮数部３３０に対応するビットを含んでもよい。バイアス３４０は、浮動小数点値３０に対して事前に決定され、別途に保存される。
【００４３】
一方、浮動小数点値３０は、符号ビット３１０をsign、指数部３２０をexponent、仮数部３３０をmantissa、バイアス３４０をbiasとするとき、次のような数式（２）による値を有することができる。
【００４４】
【数２】
2020009444.tif 000004
図３Ｂを参照すれば、固定小数点値３５は、符号ビット３１５、整数部３２５、小数部３３５及び小数点３４５から構成される。該固定小数点は、小数点を使用し、固定された桁数の小数を示す表記法を意味する。
【００４５】
符号ビット３１５は、固定小数点値３５の符号を決定し、整数部３２５は、固定小数点値３５の整数を示す部分に対応し、小数部３３５は、固定小数点値３５の小数を示す部分に対応する。小数点３４５は、固定小数点値３５の整数部３２５及び小数部３３５を区分する基準になる点を意味する。
【００４６】
一方、固定小数点値３５が示す値は、図３Ｃを参照しても説明される。図３Ｃを参照すれば、固定小数点値３５は、８ビット固定小数点値でもある。また、固定小数点値３５は、整数部３２５、小数部３３５及び小数点３４５からも構成される。
【００４７】
整数部３２５及び小数部３３５を示すビットそれぞれは、１または０の値を有することができる。また、図３Ｃに図示されているように、整数部３２５及び小数部３３５を示すビットは、順に−８、＋４、＋２、＋１、＋０．５、＋０．２５、＋０．１２５及び＋０．０６２５の値を示すことができる。整数部３２５の最上位ビット（ＭＳＢ：most  significant  bit）が１である場合、整数部３２５の最上位ビットが示す値は、−８であるので、整数部３２５及び小数部３３５に含まれる他のビットがいかなる値を有するにしても、固定小数点値３５が示す値は、負数である。整数部３２５の最上位ビットは、固定小数点値３５の符号を決定する符号ビット３１５に対応する。
【００４８】
ただし、図３Ｃは例示に過ぎず、固定小数点値３５は、１６ビット固定小数点値でもあり、任意の適切な数のビット個数を有する固定小数点値でもある。また、固定小数点値３５は、符号化表現法、１の補数法及び２の補数法のうちいずれか１つの表現法によって負数を示すことができる。
【００４９】
図４は、一実施形態による、ニューラルネットワークのパラメータがアップデートされる過程について説明するための図面である。
【００５０】
ニューラルネットワークのパラメータは、ニューラルネットワークに含まれるノード間の連結関係に割り当てられるウェートでもある。以下において、該ニューラルネットワークで処理されるパラメータをウェートとして説明するが、該パラメータは、必ずしもウェートに限定されるものではない。該パラメータは、ニューラルネットワークで処理される任意のデータを意味する。
【００５１】
個別グラジエント値（ｍ）は、ウェート（θ）をアップデートするために計算される値でもある。該ニューラルネットワークにおいて学習を行う対象は、ウェート（θ）であり、該ニューラルネットワークがだんだんにさらに良好な結果を出力するためには、ウェート（θ）が学習過程において、反復的にアップデートされる必要がある。
【００５２】
一方、ウェート（θ）を効果的にアップデートするためには、ネットワークで出す結果値と、実際の結果値との差を定義する損失関数（Ｊ（θ））の値を最小化させる必要があり、損失関数（Ｊ（θ））の値を最小化させるために、多様なOptimizerが利用される。
【００５３】
一実施形態においてOptimizerは、グラジエントディセント（gradient  descent）方式を利用することができる。該グラジエントディセント方式は、ウェート（θ）に対して、グラジエントの反対方向に、一定サイズほど移動することを反復し、損失関数（Ｊ（θ））の値を最小化させるθ値を求める方式である。該グラジエントディセント方式は、下記数式（３）のように表現することができる。数式（３）において、∇θＪ（θ）は、損失（Ｊ（θ））の勾配であり、ηは、学習速度である。
【００５４】
【数３】
2020009444.tif 000005
特に、損失関数（Ｊ（θ））を計算するとき、全体学習データを使用することを、batch  gradient  descentと言うが、その場合、過度に多くの計算量が必要である。それを防止するために、全体データ（batch）の代わりに、一部小データの集まり（mini-batch）についてのみ損失関数（Ｊ（θ））を計算するＳＧＤ（stochastic  gradient  descent）方法が使用される。
【００５５】
図４を参照すれば、オプティマイザ（Optimizer）がグラジエントディセント方式を利用する場合、個別グラジエント値（ｍ）は、η∇θＪ（θ）∇になる。
【００５６】
他の実施形態において、Optimizerは、モーメンタム（momentum）方式を利用することができる。該モーメンタム方式は、グラジエントディセントを介して移動する過程において、「慣性」を与えるものである。現在グラジエントを介して、移動する方向とは別個に、過去に移動した方式を記憶しながら、その方向に一定程度追加して移動する方式である。該モーメンタム方式は、下記数式（４）のように表現することができる。数式（４）において、ｖｔは、時間ステップｔでの移動ベクトルであり、γは、いかほどモーメンタムを与えるかということに係わるモーメンタム項（momentum  term）である。
【００５７】
【数４】
2020009444.tif 000006
図４を参照すれば、Optimizerがモーメンタム方式を利用する場合、個別グラジエント値（ｍ）は、γｖｔ−１＋η∇θＪ（θ）になる。
【００５８】
Optimizerは、前述のＳＧＤグラジエントディセント方式及びモーメンタム方式の以外にも、Ａｄａｇｒａｄ（Adaptive  Gradient）方式、ＲＭＳＰｒｏｐ方式、ＡｄａＤｅｌｔａ（Adaptive  Delta）方式、Ａｄａｍ（Adaptive  Moment  Estimation）方式などを利用することができる。
【００５９】
一方、一般的なニューラルネットワークにおいて、個別グラジエント値（ｍ）は、ウェート（θ）よりはるかに小さい値を有する。該ニューラルネットワークが低精度ナンバーシステム（例えば、８ビットまたは１６ビット）を利用する場合、個別グラジエント値（ｍ）は、ウェート（θ）が示すことができる値の範囲に含まれない。それにより、ウェート（θ）が多様なアップデート方式（ＳＧＤグラジエントディセント方式、モーメンタム方式など）によってアップデートされるとき、個別グラジエント値（ｍ）は、無視され、ウェート（θ）は、アップデートされない。該ニューラルネットワークがだんだんとさらに良好な結果を出力するためには、ウェート（θ）が反復してアップデートされなければならないにもかかわらず、個別グラジエント値（ｍ）の大きさにより、ウェートがアップデートされない。
【００６０】
以下では、説明の便宜上、Optimizerがグラジエントディセント方式を利用することに限定して説明する。
【００６１】
図５は、一実施形態によるニューラルネットワークにおいて、パラメータを処理する方法の一例を示すフローチャートである。
【００６２】
該ニューラルネットワークは、低精度ナンバーシステムを利用するニューラルネットワークでもある。パラメータは、ニューラルネットワークに含まれるノード間の連結関係に割り当てられるウェートでもある。以下において、ニューラルネットワークで処理されるパラメータをウェートとして説明するが、該パラメータは、必ずしもウェートに限定されるものではない。該パラメータは、ニューラルネットワークで処理される任意のデータを意味する。
【００６３】
図５を参照すれば、段階５１０において、ニューラルネットワーク装置は、ニューラルネットワークに含まれるノード間の連結関係に割り当てられるウェートのための個別グラジエント（individual  gradient）値を計算することができる。該ウェートは、浮動小数点値または固定小数点値でもある。
【００６４】
該個別グラジエント値は、ウェートをアップデートするために計算される値でもある。該ニューラルネットワークで学習を行う対象は、ウェートであり、該ニューラルネットワークがだんだんとさらに良好な結果を出力するためには、該ウェートが、学習過程において反復してアップデートされる必要がある。該ウェートをアップデートするための方法のうち一つとして、例えば、傾斜下降法（gradient  descent  algorithm）が利用される。該傾斜下降法は、損失関数または誤差関数の最低点を求めるために、損失関数または誤差関数の勾配方向にパラメータを調整することにより、誤差を最小化させるアルゴリズムを意味する。例えば、損失関数がＬであり、該パラメータがθであり、学習速度（learning  rate）がηであるとするとき、該パラメータは、次のような数式（５）によっても調整される。
【００６５】
【数５】
2020009444.tif 000007
パラメータをアップデートするために計算されるη（∂Ｌ／∂θ）は、損失関数の勾配方向にパラメータを調整するためのグラジエントを意味する。例えば、パラメータがウェートであるとき、η（∂Ｌ／∂θ）は、ウェートをアップデートするために計算される個別グラジエント値でもある。
【００６６】
一方、一般的なニューラルネットワークにおいて、個別グラジエント値η（∂Ｌ／∂θ）は、ウェートよりはるかに小さい値を有する。ニューラルネットワークが、低精度ナンバーシステム（例えば、８ビットまたは１６ビット）を利用する場合、個別グラジエント値η（∂Ｌ／∂θ）は、ウェートが示すことができる値の範囲に含まれないかもしれない。それにより、該ウェートが、数式（５）によってアップデートされるとき、個別グラジエント値η（∂Ｌ／∂θ）は、無視され、該ウェートは、アップデートされないことが懸念される。該ニューラルネットワークがだんだんとさらに良好な結果を出力するためには、ウェートが反復してアップデートされなければならないにもかかわらず、個別グラジエント値η（∂Ｌ／∂θ）の大きさに起因して、該ウェートがアップデートされない場合がある。
【００６７】
本開示によるニューラルネットワーク装置は、段階５２０及び段階５３０を遂行することにより、個別グラジエント値は無視されず、ウェートをアップデートする過程において反映される。段階５２０において、該ニューラルネットワーク装置は、個別グラジエント値を累積バッファ（accumulation  buffer）に累積することができる。該累積バッファは、個別グラジエント値を累積するための専用ハードウェアでもあり、該個別グラジエント値を累積するために割り当てられたメモリでもある。該個別グラジエント値は、累積バッファに累積し、累積グラジエント値にもなる。該累積バッファは、累積グラジエント値を保存することができる。
【００６８】
低精度ナンバーシステムを利用するニューラルネットワークにおいて、個別グラジエント値がウェートをアップデートする過程において無視されないように、該ニューラルネットワーク装置は、個別アップデート値を、ウェートに影響を与えることができる大きさまで累積することができる。
【００６９】
段階５３０において、該ニューラルネットワーク装置は、累積バッファの累積グラジエント値が臨界値以上である場合、累積グラジエント値を利用し、ウェートをアップデートすることができる。該ニューラルネットワーク装置は、累積バッファの累積グラジエント値が臨界値以上であるか否かということを判断することができる。該臨界値は、累積グラジエント値がウェートに影響を与えることができる大きさまで累積したか否かということを決定するための値でもある。例えば、該臨界値は、ウェートの最下位ビット桁に対応する値でもある。
【００７０】
該ウェートが固定小数点値である場合、ウェートの最下位ビット桁は、ウェートを示すビットのうち最下位ビットに対応する桁でもある。例えば、ウェートの最下位ビットが２−４桁を示す場合、ウェートの最下位ビット桁は、２−４桁でもあり、臨界値は、その最下位ビット桁２−４桁に対応する値である２−４でもある。
【００７１】
該ウェートが浮動小数点値である場合、ウェートの最下位ビット桁は、ウェートの指数部を示すビットのうち最下位ビットに対応する桁でもある。ただし、該ウェートが浮動小数点値である場合には、最下位ビット桁が決定されるために、バイアスが考慮される。例えば、ウェートの指数部を示すビットのうち最下位ビットが２０桁を示したとしても、バイアスが８である場合、該ウェートの最下位ビット桁は、２の（２０）乗＝２１桁ではなく、２１−８＝２−７桁であり、該臨界値は、その最下位ビット桁２−７桁に対応する値である２−７でもある。
【００７２】
ただし、それは、例示に過ぎず、該臨界値は、ウェートの最下位ビット桁に対応する値と、累積グラジエント値の最上位ビット桁に対応する値との間の任意の適切な値でもある。
【００７３】
該累積グラジエント値が臨界値以上である場合、該累積グラジエント値は、ウェートに影響を与えることができる大きさを有するので、該ニューラルネットワーク装置は、該累積グラジエント値を利用し、ウェートをアップデートすることができる。
【００７４】
具体的には、該ニューラルネットワーク装置は、該累積グラジエント値のうちウェートのビット桁に合算可能な部分を有効グラジエント（effective  gradient）値と決定することができる。有効グラジエント値とは、該累積グラジエント値において、ウェートをアップデートするために、実際に利用される値を意味する。該ウェートが示すことができる値の範囲は、該ウェートに割り当てられたビット桁によって限界が存在する。従って、該累積グラジエント値のうちウェートの最下位ビット桁以上の値だけがウェートに合算される。
【００７５】
例えば、ウェートが１ビットの符号ビット、３ビットの整数部、及び４ビットの小数部を含む８ビット固定小数点値であるとするとき、ウェートのビット桁は、２２，２１，２０，２−１，２−２，２−３及び２−４桁でもある。該ウェートが示すことができる値の範囲の限界により、該ウェートにある値が合算されるためには、その値が２２，２１，２０，２−１，２−２，２−３及び２−４のうちいずれか１つの桁に対応する値を少なくとも一つ含まなければならない。例えば、該ウェートに、１．２６５６２５（十進数）という値が合算されるべきであると仮定する。１．２６５６２５は、１×２０＋１×２−２＋１×２−６であるので、該ウェートのビット桁に対応する１×２０及び１×２−２は、ウェートに合算されるが、１×２−６は、ウェートが示すことができる値の範囲の限界に起因して、ウェートに合算されない。
【００７６】
一方、ウェートのビット桁に合算可能な部分は、ウェートの最下位ビット桁が示す値の倍数を含んでもよい。前述の例示において、該ウェートの最下位ビット桁に対応する値は、２−４であり、累積アップデート値のうち該ウェートのビット桁に合算可能な部分は、２２，２１，２０，２−１，２−２，２−３及び２−４桁に対応する値である２２，２１，２０，２−１，２−２，２−３及び２−４である。２２，２１，２０，２−１，２−２，２−３及び２−４は、いずれも最下位ビット桁に対応する値である２−４の倍数である。
【００７７】
該臨界値は、ウェートの最下位ビット桁に対応する値でもあるので、有効グラジエント値は、臨界値の倍数によっても構成される。例えば、累積グラジエント値を、Accumulated  gradient、臨界値をthresholdとするとき、該有効グラジエント値は、次のような数式（６）による。
【００７８】
【数６】
2020009444.tif 000008
数式（６）で、L  Accumulated  gradient/threshold  」は、Accumulated  gradientをthresholdで除した商を意味する。該有効グラジエント値は、累積グラジエント値を臨界値で除した商に臨界値を乗じた値を意味する。また、該有効グラジエント値は、該累積グラジエント値より小さい値を有する、臨界値の倍数のうち最も大きい値でもある。例えば、Accumulated  gradientが２．２（十進数）であり、thresholdが１（十進数）である場合、該有効グラジエント値は、累積グラジエント値２．２より小さい値を有する、臨界値１の倍数である１、２のうちより大きい値である２である。
【００７９】
該ニューラルネットワーク装置は、ウェートと有効グラジエント値とを合算することができる。該有効グラジエント値は、ウェートをアップデートするために、実際に利用される値であるので、該ニューラルネットワーク装置は、該ウェートに該有効グラジエント値を合算することにより、ウェートをアップデートすることができる。
【００８０】
また、該ニューラルネットワーク装置は、累積バッファの累積グラジエント値から有効グラジエント値を減算することができる。該累積バッファの該累積グラジエント値のうち該有効グラジエント値がウェートに反映されるので、該ニューラルネットワーク装置は、該累積バッファの該累積グラジエント値から該有効グラジエント値を減算することができる。例えば、ウェートがアップデートされることにより、該累積グラジエント値は、次のような数式（７）をよっても減算される。
【００８１】
【数７】
2020009444.tif 000009
数式（７）で、L  Accumulated  gradient/threshold  」×thresholdは、有効グラジエント値であるので、累積バッファの累積グラジエント値は、以前累積グラジエント値から有効グラジエント値が減算された値でもある。
【００８２】
該ニューラルネットワーク装置は、ウェートをアップデートした後、累積バッファの累積グラジエント値に、個別グラジエント値を続けて累積することができ、前述の過程を反復することができる。本開示によるニューラルネットワークにおいて、パラメータの処理方法は、一般的にウェートよりはるかに小さい値を有する個別グラジエント値を無視したり捨てたりする代わりに、ウェートに影響を与えることができる大きさまで累積してウェートに適用することにより、低精度ナンバーシステムを利用するニューラルネットワークでの四捨五入誤差（rounding  error）を最小化させることができる。また、本開示によるニューラルネットワークにおいて、パラメータ処理方法は、累積グラジエント値のうちウェートにアップデートされて残った部分も、続けて累積バッファに維持することにより、精度損失を最小化させることができる。
【００８３】
一方、該ニューラルネットワーク装置は、累積アップデート値が臨界値以上であるか否かということを、既設定アップデート周期ごとに判断することができる。例えば、アップデート周期ｔ＝４、すなわち、個別グラジエント値４個が計算される時間を意味するが、それに制限されるものではない。
【００８４】
図６は、一実施形態による、固定小数点パラメータ形式のウェートがアップデートされる例示について説明するための図面である。
【００８５】
図６を参照すれば、固定小数点パラメータを利用するニューラルネットワークにおいて、ウェート６０は、第１符号ビット６１０、第１整数部６２０、第１小数部６３０及び第１小数点６４０から構成された固定小数点値であり、累積グラジエント値６５は、第２符号ビット６１５、第２小数部６３５及び第２小数点（小数点）から構成された固定小数点値でもある。一実施形態によれば、ウェート６０は、第１小数点６４０が移動可能な動的固定小数点（dynamic  fixed  point）値でもある。第１小数点６４０が移動されることにより、第１小数部６３０のビット個数（長さ）が調整される。
【００８６】
累積グラジエント値６５は、整数部を含まない。例えば、第１小数点６４０及び第２小数点が同一である場合、累積グラジエント値６５は、ウェート６０に比べ、相当に小さい値のみを示すことができるので、整数部を含まず、小数部（すなわち、第２小数部６３５））のみを含んでもよい。一方、第２小数点は、第１小数点６４０と同一であってもよく、異なっていてもよい。第２小数点は、状況によっても調整される。
【００８７】
ウェート６０は、ｍビット（ｍは、任意の自然数）の固定小数点値でもあり、累積グラジエント値６５は、ｎビット（ｎは、任意の自然数）の固定小数点値でもある。ｍ及びｎは、同一値でもあり、異なる値でもある。低精度ナンバーシステムを利用するニューラルネットワークにおいて、ｍ及びｎそれぞれは、８または１６の値を有することができるが、それらに制限されるものではない。
【００８８】
累積グラジエント値６５は、ウェート６０と比較し、相対的に小さい値を有することができる。従って、ウェート６０を示すビットそれぞれに対応する値は、累積グラジエント値６５を示すビットそれぞれに対応する値より概して大きくなる。ただし、ウェート６０を示すビットのうちいずれか１つのビットに対応する値は、累積グラジエント値６５を示すビットのうちいずれか１つのビットに対応する値と同一でもある。ウェート６０がアップデートされるためには、累積グラジエント値６５の一部が、ウェート６０に合算されなければならないので、ウェート６０の下位ビットのうち一部は、累積グラジエント値６５の上位ビットのうち一部とオーバーラップする。
【００８９】
ウェート６０と累積グラジエント値６５との間でオーバーラップされるビット６５０がｋビット（ｋは、任意の自然数）であるとするとき、該ニューラルネットワークは、実質的に（ｍ＋ｎ−２−ｋ）ビットの固定小数点データを利用するところと同一効果を得ることができる。
【００９０】
ウェート６０と累積グラジエント値６５との間でオーバーラップされるビット６５０は、臨界値６６０を基準に決定されてもよい。臨界値６６０は、累積グラジエント値６５がウェート６０に影響を与えることができる大きさまで累積されているか否かということを決定するための値でもある。例えば、臨界値６６０は、ウェート６０の最下位ビット桁に対応する値でもある。オーバーラップされるビット６５０は、累積グラジエント値６５を示すビットのうち、臨界値６６０以上の値を示すビットでもある。オーバーラップされるビット６５０は、ウェート６０の下位ビットのうち一部とオーバーラップされるので、ウェート６０とも合算される。一方、ウェート６０の下位ビットは、第１小数部６３０を示すことができる。
【００９１】
個別グラジエント値が累積され、累積グラジエント値６５がウェート６０に影響を与えることができる大きさまで大きくなれば、該ニューラルネットワーク装置は、累積グラジエント値６５を利用し、ウェート６０をアップデートすることができる。例えば、該ニューラルネットワーク装置は、累積グラジエント値６５の第２小数部６３５を示すビットのうちウェート６０の第１小数部６３０とオーバーラップされる少なくとも１つのビット６５０が示す値をウェート６０と合算することができる。オーバーラップされる少なくとも１つのビット６５０が示す値は、有効グラジエント値に対応する。
【００９２】
一方、累積グラジエント値６５の第２小数部６３５を示すビットのうちウェート６０の第１小数部６３０とオーバーラップされる少なくとも１つのビット６５０が示す値をウェート６０と合算する過程において、パッディング（padding）方式が適用されてもよい。
【００９３】
図７は、一実施形態による、ウェート及び残余グラジエント値をアップデートする例示を示す図面である。
【００９４】
図７を参照すれば、ニューラルネットワーク装置は、個別グラジエント値７１０、残余グラジエント値７２０及びウェート７３０を利用し、ウェート７３０及び残余グラジエント値７２０をアップデートすることができる。一実施形態において、該ニューラルネットワーク装置は、低精度ナンバーシステムを利用し、個別グラジエント値７１０、残余グラジエント値７２０及びウェート７３０を示すことができる。例えば、個別グラジエント値７１０、残余グラジエント値７２０及びウェート７３０は、８ビットまたは１６ビットの浮動小数点または固定小数点値でもあるが、それらに制限されるものではない。
【００９５】
該ニューラルネットワーク装置は、ニューラルネットワークに含まれるノード間の連結関係に割り当てられるウェートのための個別グラジエント値７１０を計算することができる。個別グラジエント値７１０は、ウェート７３０をアップデートするために計算される値でもある。該ニューラルネットワークで学習を行う対象は、ウェートであり、該ニューラルネットワークがだんだんとさらに良好な結果を出力するためには、ウェート７３０が学習過程において、反復してアップデートされる必要がある。図４で説明したように、該ニューラルネットワーク装置のOptimizerは、グラジエントディセント方式、モーメンタム方式などを利用し、個別グラジエント値７１０を計算することができる。
【００９６】
該ニューラルネットワーク装置は、個別グラジエント値７１０を累積バッファに累積することができる。低精度ナンバーシステムを利用するニューラルネットワークにおいて、個別グラジエント値７１０がウェートをアップデートする過程で無視されないように、該ニューラルネットワーク装置は、個別グラジエント値７１０をウェートに影響を与えることができる大きさまで累積することができる。
【００９７】
該ニューラルネットワーク装置は、累積バッファの累積グラジエント値が臨界値以上である場合、該累積グラジエント値のうち、ウェート７３０のビット桁に合算可能な部分を有効グラジエント値と決定することができる。該ニューラルネットワーク装置は、累積グラジエント値から有効グラジエント値を減算することにより、残余グラジエント値７２０を計算することができる。
【００９８】
図７を参照すれば、ニューラルネットワーク装置は、個別グラジエント値７１０と残余グラジエント値７２０とを合算し、中間合算値７４０を計算することができる。図７においては、個別グラジエント値７１０及び残余グラジエント値７２０のいずれも最上位ビット（ＭＳＢ）に符号ビットを含んでおり、ニューラルネットワーク装置は、２つの値の符号ビットを考慮し、個別グラジエント値７１０と残余グラジエント値７２０との中間合算値７４０を計算することができる。
【００９９】
そのとき、個別グラジエント値７１０と残余グラジエント値７２０とのビット数及びビット桁が対応しない場合、該ニューラルネットワーク装置は、残余グラジエント値７２０のビット数及びビット桁に対応するように、個別グラジエント値７１０を調整することができる。一実施形態において、該ニューラルネットワーク装置は、個別グラジエント値７１０を量子化してパッディングすることにより、残余グラジエント値７２０のビット数及びビット桁に対応するように、個別グラジエント値７１０を調整することができる。
【０１００】
ニューラルネットワーク装置は、中間合算値７４０とウェート７３０とを合算し、最終合算値７５０を計算することができる。該ニューラルネットワーク装置は、最終合算値７５０から、アップデートされたウェート７６０及びアップデートされた残余グラジエント値７７０を獲得することができる。一実施形態において、該ニューラルネットワーク装置は、ウェート７３０のビット桁に基づいて、最終合算値７５０からアップデートされたウェート７６０、及びアップデートされた残余グラジエント値７７０を獲得することができる。例えば、該ニューラルネットワーク装置は、ウェート７３０のビット桁に対応する最終合算値７５０のビット桁の値を、アップデートされたウェート７６０として獲得することができる。また、ニューラルネットワーク装置は、ウェート７３０のビット桁に対応しない最終合算値７５０のビット桁の値を、アップデートされた残余グラジエント値７７０として獲得することができる。
【０１０１】
そのとき、アップデートされたウェート７６０の最上位ビットは、最終合算値７５０の最上位ビットである符号ビットでもある。また、該ニューラルネットワーク装置は、最終合算値７５０の符号ビットを獲得し、獲得された符号ビットがアップデートされた残余グラジエント値７７０の最上位ビットになるように、アップデートされた残余グラジエント値７７０に追加される。
【０１０２】
一方、アップデートされた残余グラジエント値７７０に新たな個別グラジエント値が合算されることにより、アップデートされた残余グラジエント値７７０と、新たな個別グラジエント値との合算結果である累積グラジエント値が臨界値以上になった場合、前述の過程が反復され、ウェート及び残余グラジエント値が再アップデートされる。
【０１０３】
図８は、一実施形態による、ウェート及び残余グラジエント値をアップデートする例示を示す図面である。
【０１０４】
図８を参照すれば、ニューラルネットワーク装置は、個別グラジエント値８１０と残余グラジエント値８２０とのビット数及びビット桁が対応しないので、該ニューラルネットワーク装置は、残余グラジエント値８２０のビット数及びビット桁に対応するように、個別グラジエント値８１０を調整することができる。一実施形態において、該ニューラルネットワーク装置は、個別グラジエント値８１０を量子化してパッディングすることにより、残余グラジエント値８２０のビット数及びビット桁に対応するように、個別グラジエント値８１０を調整することができる。
【０１０５】
以下、便宜上、図７と重複する説明は、省略する。
【０１０６】
該ニューラルネットワーク装置は、符号ビットが除かれた残余グラジエント値８２０をウェート８３０に連結（concatenation）し、中間連結値８４０を計算することができる。そのとき、中間連結値８４０の最上位ビットは、ウェート８３０の符号ビットに該当する。
【０１０７】
該ニューラルネットワーク装置は、中間連結値８４０と個別グラジエント値８１０とを合算し、最終合算値８５０を計算することができる。該ニューラルネットワーク装置は、最終合算値８５０から、アップデートされたウェート８６０及びアップデートされた残余グラジエント値８７０を獲得することができる。一実施形態において、ニューラルネットワーク装置は、ウェート８３０のビット桁に基づいて、最終合算値８５０から、アップデートされたウェート８６０、及びアップデートされた残余グラジエント値８７０を獲得することができる。例えば、該ニューラルネットワーク装置は、最終合算値８５０において、ウェート８３０のビット桁に対応する最終合算値８５０のビット桁の値を、アップデートされたウェート８６０として獲得することができる。また、ニューラルネットワーク装置は、ウェート８３０のビット桁に対応しない最終合算値８５０のビット桁の値を、アップデートされた残余グラジエント値８７０として獲得することができる。
【０１０８】
そのとき、アップデートされたウェート８６０の最上位ビットは、最終合算値８５０の最上位ビットである符号ビットでもある。しかし、アップデート以前の残余グラジエント値８２０と同様に、アップデートされた残余グラジエント値８７０は、符号ビットを含まない。すなわち、図７とは異なり、該ニューラルネットワーク装置は、最終合算値８５０の符号ビットを、アップデートされた残余グラジエント値８７０に追加しない。
【０１０９】
一方、アップデートされた残余グラジエント値８７０に、新たな個別グラジエント値が合算されることにより、アップデートされた残余グラジエント値８７０と、新たな個別グラジエント値との合算結果である累積グラジエント値が、臨界値以上になった場合、前述の過程が反復され、ウェート及び残余グラジエント値が再アップデートされる。
【０１１０】
図９は、一実施形態による、加算器を利用し、ウェート及び残余グラジエント値をアップデートする例示を示す図面である。
【０１１１】
ニューラルネットワーク装置は、加算器９００を利用し、個別グラジエント値、残余グラジエント値及びウェートを合算することができる。加算器９００は、算術論理演算装置（ＡＬＵ：arithmetic  logic  unit）の一種であり、所定ビット数を有することができ、加算器９００のビット数により、処理能が決定される。すなわち、加算器９００のビット数により、加算器９００で合算することができるデータのビット数が決定される。
【０１１２】
該ニューラルネットワーク装置は、個別グラジエント値９１０、残余グラジエント値９２０及びウェート９３０を利用し、ウェート９３０及び残余グラジエント値９２０をアップデートすることができる。個別グラジエント値９１０、残余グラジエント値９２０及びウェート９３０は、低精度ナンバーシステムで利用される固定小数点または浮動小数点値でもある。
【０１１３】
図９においては、３２ビット加算器９００を利用し、１６ビットの個別グラジエント値９１０、残余グラジエント値９２０及びウェート９３０を合算する過程が図示される。
【０１１４】
図９を参照すれば、該ニューラルネットワーク装置は、個別グラジエント値９１０のビット数及びビット桁が、残余グラジエント値９２０のビット数及びビット桁に対応するように、個別グラジエント値９１０を調整することができる。一実施形態において、ニューラルネットワーク装置は、個別グラジエント値９１０を量子化してパッディングすることにより、残余グラジエント値９２０のビット数及びビット桁に対応するように、個別グラジエント値９１０を調整することができる。
【０１１５】
具体的には、ニューラルネットワーク装置は、個別グラジエント値９１０において、残余グラジエント値９２０の最下位ビット桁未満の値が省略されるように、個別グラジエント値９１０を量子化させることができる。また、該ニューラルネットワーク装置は、残余グラジエント値９２０の最上位ビット桁に対応するビット桁まで値が存在するように、量子化された個別グラジエント値をパッディングすることができる。すなわち、該ニューラルネットワーク装置は、個別グラジエント値９１０に、量子化及びパッディングを適用することによって調整された個別グラジエント値９１２を計算することができる。調整された個別グラジエント値９１２のビット数及びビット桁は、残余グラジエント値９２０のビット数及びビット桁に対応する。
【０１１６】
一方、個別グラジエント値９１０のビット数及びビット桁のうち少なくともいずれか一つが残余グラジエント値９２０のビット数及びビット桁に対応する場合、個別グラジエント値９１０を量子化したりパッディングしたりする過程は、省略される。
【０１１７】
該ニューラルネットワーク装置は、加算器９００のビット数に基づいて調整された個別グラジエント値９１２及び残余グラジエント値９２０を、加算器９００にマッピングすることができる。すなわち、３２ビット加算器９００を利用して演算することができるように、ニューラルネットワーク装置は、１６ビットの調整された個別グラジエント値９１２及び残余グラジエント値９２０を、３２ビットにマッピングすることができる。一実施形態において、ニューラルネットワーク装置は、１の補数（complement）方式または２の補数方式が適用された補数器を利用し、１６ビットの調整された個別グラジエント値９１２及び残余グラジエント値９２０を３２ビットにマッピングすることができる。しかし、マッピング方式は、それに制限されるものではない。
【０１１８】
例えば、ニューラルネットワーク装置は、１６ビットの調整された個別グラジエント値９１２及び残余グラジエント値９２０それぞれの符号ビットを、加算器９００の最上位ビット桁にマッピングし、残り１５ビットを、加算器９００の最下位ビットを除いた残り下位１５ビット桁にマッピングすることができる。その場合、加算器９００の最上位ビットを除いた残り上位１５ビット桁及び最下位ビット桁は、パッディングされる。
【０１１９】
ニューラルネットワーク装置は、加算器９００を利用し、加算器９００にマッピングされた個別グラジエント値９１４及び残余グラジエント値９２４を合算することにより、中間合算値９４０を計算することができる。図９においては、個別グラジエント値９１４及び残余グラジエント値９２４のいずれも、符号ビットを最上位ビットとして含んでおり、ニューラルネットワーク装置は、２つの値の符号ビットを考慮し、個別グラジエント値９１４と残余グラジエント値９２４とを合算することにより、中間合算値９４０を計算することができる。
【０１２０】
該ニューラルネットワーク装置は、加算器９００のビット数に基づいて、ウェート９３０を、加算器にマッピングすることができる。前述のように、３２ビット加算器９００を利用して演算することができるように、ニューラルネットワーク装置は、１６ビットのウェート９３０を３２ビットにマッピングすることができる。該ニューラルネットワーク装置は、加算器９００の最上位ビット桁方向から下位ビット桁方向に、ウェート９３５をマッピングすることができる。すなわち、該ニューラルネットワーク装置は、加算器９００の上位１６ビット桁に、１６ビットのウェート９３５をマッピングすることができる。また、対応するウェート９３０が存在しない加算器９００の下位１６ビット桁は、パッディングされる。
【０１２１】
ニューラルネットワーク装置は、加算器９００にマッピングされたウェート９３５及び中間合算値９４０を合算し、最終合算値９５０を計算することができる。該ニューラルネットワーク装置は、最終合算値９５０から、アップデートされたウェート９６０及びアップデートされた残余グラジエント値９７０を獲得することができる。
【０１２２】
一実施形態において、ニューラルネットワーク装置は、ウェート９３０のビット桁に基づいて、最終合算値９５０からアップデートされたウェート９６０及びアップデートされた残余グラジエント値９７０を獲得することができる。該ニューラルネットワーク装置は、ウェート９３０のビット桁に対応する最終合算値９５０のビット桁の値を、アップデートされたウェート９６０として獲得することができる。また、該ニューラルネットワーク装置は、ウェート９３０のビット桁に対応しない最終合算値９５０のビット桁の値を、アップデートされた残余グラジエント値９７０として獲得することができる。
【０１２３】
例えば、ニューラルネットワーク装置は、３２ビット加算器９００の演算結果である３２ビットの最終合算値９５０において、ウェート９３０のビット桁に対応する最終合算値９５０の上位１６ビット桁の値を、アップデートされたウェート９６０として獲得し、下位１６ビット桁の値は、アップデートされた残余グラジエント値９７０として獲得することができる。
【０１２４】
また、該ニューラルネットワーク装置は、最終合算値９５０の最上位ビットである符号ビットを獲得し、符号ビットがアップデートされた残余グラジエント値９７０の最上位ビットになるように追加することができる。
【０１２５】
図１０は、一実施形態による、加算器を利用し、ウェート及び残余グラジエント値をアップデートする例示を示す図面である。
【０１２６】
以下、図９と重複する内容は、便宜上、省略する。
【０１２７】
図１０においては、３２ビット加算器１０００を利用し、１６ビットの個別グラジエント値１０１０、残余グラジエント値１０２０及び８ビットのウェート１０３０を合算する過程が図示される。
【０１２８】
該ニューラルネットワーク装置は、加算器１０００のビット数に基づいて、ウェート１０３０を加算器にマッピングすることができる。すなわち、３２ビット加算器１０００を利用して演算することができるように、８ビットのウェート１０３０を３２ビットにマッピングすることができる。一方、図９のウェート９３０は、１６ビットであった一方、図１０においては、ウェート１０３０が８ビットである。その場合、該ニューラルネットワーク装置は、加算器１０００の最上位桁まで値が存在するように、ウェート１０３０をパッディングすることができる。該ニューラルネットワーク装置は、加算器１０００の最上位ビット桁方向から下位ビット桁方向にパッディングされたウェートをマッピングすることができる。すなわち、該ニューラルネットワーク装置は、加算器１０００の上位１６ビット桁に、１６ビットのパッディングされたウェートをマッピングすることができる。また、対応するウェート１０３０が存在しない加算器１０００の下位１６ビット桁も、パッディングされることができる。
【０１２９】
該ニューラルネットワーク装置は、加算器１０００にマッピングされたウェート１０３５及び中間合算値１０４０を合算し、最終合算値１０５０を計算することができる。該ニューラルネットワーク装置は、最終合算値１０５０から、アップデートされたウェート１０６０、及びアップデートされた残余グラジエント値１０７０を獲得することができる。
【０１３０】
一実施形態において、ニューラルネットワーク装置は、ウェート１０３０のビット桁に基づいて、最終合算値１０５０からアップデートされたウェート１０６０、及びアップデートされた残余グラジエント値１０７０を獲得することができる。該ニューラルネットワーク装置は、ウェート１０３０のビット桁に対応する最終合算値１０５０のビット桁の値を、アップデートされたウェート１０６０として獲得することができる。また、該ニューラルネットワーク装置は、ウェート１０３０のビット桁に対応しない最終合算値１０５０のビット桁の値を、アップデートされた残余グラジエント値１０７０として獲得することができる。
【０１３１】
例えば、ニューラルネットワーク装置は、３２ビット加算器１０００の演算結果である３２ビットの最終合算値１０５０において、ウェート１０３０のビット桁に対応しない下位１６ビット桁の値を、アップデートされた残余グラジエント値１０７０として獲得することができる。一方、ニューラルネットワーク装置は、３２ビットの最終合算値１０５０の上位１６ビット桁の値のうち、パッディング部（上位８ビット桁）を除いた残りビット桁の値を、アップデートされたウェート１０６０として獲得することができる。
【０１３２】
また、ニューラルネットワーク装置は、最終合算値１０５０の最上位ビットである符号ビットを獲得した後、アップデートされたウェート１０６０の最上位ビットを、最終合算値１０５０の符号ビットに置き換え、最終合算値１０５０の符号ビットを、アップデートされた残余グラジエント値１０７０の最上位ビットになるように追加することができる。
【０１３３】
図１１は、一実施形態による、加算器を利用し、ウェート及び残余グラジエント値をアップデートする例示を示す図面である。
【０１３４】
以下、図９と重複する内容は、便宜上、省略する。
【０１３５】
図１１においては、３２ビット加算器１１００を利用し、１６ビットの個別グラジエント値１１１０、残余グラジエント値１１２０及びウェート１１３０を合算する過程が図示される。
【０１３６】
図１１を参照すれば、該ニューラルネットワーク装置は、個別グラジエント値１１１０のビット数及びビット桁が、残余グラジエント値１１２０のビット数及びビット桁に対応するように、個別グラジエント値１１１０を調整することができる。一実施形態において、該ニューラルネットワーク装置は、個別グラジエント値１１１０に、量子化及びパッディングを適用することによって調整された個別グラジエント値１１１２を計算することができる。
【０１３７】
該ニューラルネットワーク装置は、符号ビットが除かれた残余グラジエント値１１２０をウェート１１３０に連結し、中間連結値１１４０を計算することができる。中間連結値１１４０の最上位ビットは、ウェート１０３０の符号ビットに該当し、１６ビットのウェート１１３０及び符号ビットが除かれた１５ビットの残余グラジエント値１１２０が連結になって３１ビットの中間連結値１１４０が計算されることができる。
ニューラルネットワーク装置は、中間連結値１１４０及び調整された個別グラジエント値１１１２それぞれを加算器１１００にマッピングすることができる。例えば、ニューラルネットワーク装置は、加算器１１００の上位３１ビット桁に、中間連結値１１４０をマッピングすることができる。その場合、加算器１１００の最下位ビット桁も、パッディングされる。
【０１３８】
また、ニューラルネットワーク装置は、１６ビットの調整された個別グラジエント値１１１２の符号ビットを、加算器１１００の最上位ビット桁にマッピングし、残り１５ビットを、加算器１１００の最下位ビットを除いた残り下位１５ビット桁にマッピングすることができる。その場合、加算器１１００の最上位ビットを除いた残り上位１５ビット桁及び最下位ビット桁は、パッディングされる。
【０１３９】
該ニューラルネットワーク装置は、中間連結値１１４０と、マッピングされた個別グラジエント値１１１４とを合算し、最終合算値１１５０を計算することができる。該ニューラルネットワーク装置は、最終合算値１１５０から、アップデートされたウェート１１６０、及びアップデートされた残余グラジエント値１１７０を獲得することができる。
【０１４０】
一実施形態において、ニューラルネットワーク装置は、ウェート１１３０のビット桁に基づいて、最終合算値１１５０から、アップデートされたウェート１１６０及びアップデートされた残余グラジエント値１１７０を獲得することができる。例えば、該ニューラルネットワーク装置は、最終合算値１１５０において、ウェート１１３０のビット桁に対応する最終合算値１１５０のビット桁の値を、アップデートされたウェート１１６０として獲得することができる。また、ニューラルネットワーク装置は、ウェート１１３０のビット桁に対応しない最終合算値１１５０のビット桁の値を、アップデートされた残余グラジエント値１１７０として獲得することができる。
【０１４１】
そのとき、アップデートされたウェート１１６０の最上位ビットは、最終合算値１１５０の最上位ビットである符号ビットでもある。しかし、アップデート以前の残余グラジエント値１０２０と同様に、アップデートされた残余グラジエント値１０７０は、符号ビットを含まない。
【０１４２】
図１２は、一実施形態による、加算器を利用し、ウェート及び残余グラジエント値をアップデートする例示を示す図面である。
【０１４３】
以下、図１０と重複する内容は、便宜上、省略する。
【０１４４】
図１２においては、３２ビット加算器１２００を利用し、１６ビットの個別グラジエント値１２１０、残余グラジエント値１２２０及び８ビットのウェート１２３０を合算する過程が図示される。
【０１４５】
図１２を参照すれば、該ニューラルネットワーク装置は、個別グラジエント値１２１０のビット数及びビット桁が、残余グラジエント値１２２０のビット数及びビット桁に対応するように、個別グラジエント値１２１０を調整することができる。一実施形態において、該ニューラルネットワーク装置は、個別グラジエント値１２１０に、量子化及びパッディングを適用することによって調整された個別グラジエント値１２１２を計算することができる。
【０１４６】
該ニューラルネットワーク装置は、符号ビットが除かれた残余グラジエント値１２２０をウェート１２３０に連結し、中間連結値１２４０を計算することができる。また、該ニューラルネットワーク装置は、中間連結値１２４０を加算器１２００にマッピングすることができる。
【０１４７】
一実施形態において、ウェート１２３０の最上位ビットである符号ビットは、加算器１２００の最上位ビット桁にもマッピングされる。一方、図１１のウェート１１３０は、１６ビットであった一方、図１２では、ウェート１２３０が８ビットである。その場合、ニューラルネットワーク装置は、加算器１２００の最上位桁まで値が存在するように、中間連結値１２４０をパッディングすることができる。また、図１１と同様に、加算器１２００の最下位ビット桁も、パッディングされる。
【０１４８】
また、該ニューラルネットワーク装置は、１６ビットの調整された個別グラジエント値１２１２の符号ビットを、加算器１２００の最上位ビット桁にマッピングし、残り１５ビットを、加算器１２００の最下位ビットを除いた残り下位１５ビット桁にマッピングすることができる。その場合、加算器１２００の最上位ビットを除いた残り上位１５ビット桁及び最下位ビット桁は、パッディングされる。
【０１４９】
該ニューラルネットワーク装置は、中間連結値１２４０と、マッピングされた個別グラジエント値１２１４とを合算し、最終合算値１２５０を計算することができる。該ニューラルネットワーク装置は、最終合算値１２５０から、アップデートされたウェート１２６０、及びアップデートされた残余グラジエント値１２７０を獲得することができる。
【０１５０】
一実施形態において、該ニューラルネットワーク装置は、ウェート１２３０のビット桁に基づいて、最終合算値１２５０からアップデートされたウェート１２６０、及びアップデートされた残余グラジエント値１２７０を獲得することができる。例えば、該ニューラルネットワーク装置は、最終合算値１２５０において、ウェート１２３０のビット桁に対応する最終合算値１２５０のビット桁の値を、アップデートされたウェート１２６０として獲得することができる。また、ニューラルネットワーク装置は、ウェート１２３０のビット桁に対応しない最終合算値１２５０のビット桁の値を、アップデートされた残余グラジエント値１２７０として獲得することができる。
【０１５１】
例えば、ニューラルネットワーク装置は、３２ビット加算器１２００の演算結果である３２ビットの最終合算値１２５０において、ウェート１２３０のビット桁に対応しない下位１６ビット桁の値を、アップデートされた残余グラジエント値１２７０として獲得することができる。一方、該ニューラルネットワーク装置は、３２ビットの最終合算値１２５０の上位１６ビット桁の値のうち、パッディング部（上位８ビット桁）を除いた残りビット桁の値を、アップデートされたウェート１２６０として獲得することができる。
【０１５２】
また、ニューラルネットワーク装置は、最終合算値１２５０の最上位ビットである符号ビットを獲得した後、アップデートされたウェート１２６０の最上位ビットを、最終合算値１２５０の符号ビットに置き換えることができる。しかし、アップデート以前の残余グラジエント値１２２０と同様に、アップデートされた残余グラジエント値１２７０は、符号ビットを含まない。
【０１５３】
図１３は、一実施形態による低精度ナンバーシステムを利用するニューラルネットワークにおいて、パラメータを処理する方法を図示したフローチャートである。
【０１５４】
図１３を参照すれば、段階１３１０において、該ニューラルネットワーク装置は、ニューラルネットワークのウェートをアップデートするための個別グラジエント値を計算することができる。
【０１５５】
該ニューラルネットワーク装置は、ニューラルネットワークに含まれるノード間の連結関係に割り当てられるウェートのための個別グラジエント値を計算することができる。該個別グラジエント値は、ウェートをアップデートするために計算される値でもある。図４で説明したように、ニューラルネットワーク装置のOptimizerは、グラジエントディセント方式、モーメンタム方式などを利用し、個別グラジエント値を計算することができる。
【０１５６】
段階１３２０において、該ニューラルネットワーク装置は、個別グラジエント値を累積した累積グラジエント値及びウェートのビット桁に基づいて、残余グラジエント値を計算することができる。
【０１５７】
該ニューラルネットワーク装置は、個別グラジエント値を累積バッファに累積することができる。低精度ナンバーシステムを利用するニューラルネットワークにおいて、個別グラジエント値がウェートをアップデートする過程で無視されないように、該ニューラルネットワーク装置は、個別グラジエント値をウェートに影響を与えることができる大きさまで累積することができる。
【０１５８】
該ニューラルネットワーク装置は、累積バッファの累積グラジエント値が臨界値以上である場合、累積グラジエント値のうちウェートのビット桁に合算可能な部分を、有効グラジエント値と決定することができる。該ニューラルネットワーク装置は、累積グラジエント値から有効グラジエント値を減算することにより、残余グラジエント値を計算することができる。
【０１５９】
段階１３３０において、該ニューラルネットワーク装置は、残余グラジエント値のビット桁に対応するように、個別グラジエント値を調整することができる。
【０１６０】
一実施形態において、該ニューラルネットワーク装置は、個別グラジエント値を量子化してパッディングすることにより、残余グラジエント値のビット数及びビット桁に対応するように、個別グラジエント値を調整することができる。
【０１６１】
具体的には、該ニューラルネットワーク装置は、個別グラジエント値のうち、残余グラジエント値の最下位ビット桁未満の値が省略されるように、個別グラジエント値を量子化することができる。また、該ニューラルネットワーク装置は、残余グラジエント値の最上位ビット桁に対応するビット桁まで値が存在するように、量子化された個別グラジエント値をパッディングすることができる。
【０１６２】
一実施形態において、段階１３３０後、段階１３４０及び段階１３５０に進められる。
【０１６３】
段階１３４０において、該ニューラルネットワーク装置は、加算器を利用して調整された個別グラジエント値、残余グラジエント値及びウェートを合算することができる。
【０１６４】
該ニューラルネットワーク装置は、調整された個別グラジエント値と残余グラジエント値とを合算し、中間合算値を計算することができる。調整された個別グラジエント値及び残余グラジエント値のいずれも、最上位ビット（ＭＳＢ）として符号ビットを含むので、該ニューラルネットワーク装置は、２つの値の符号ビットを考慮し、個別グラジエント値と残余グラジエント値との中間合算値を計算することができる。
【０１６５】
また、該ニューラルネットワーク装置は、中間合算値とウェートとを合算し、最終合算値を計算することができる。
【０１６６】
段階１３５０において、該ニューラルネットワーク装置は、合算結果に基づいて、ウェート及び残余グラジエント値をアップデートすることができる。
【０１６７】
一実施形態において、該ニューラルネットワーク装置は、ウェートのビット桁に基づいて、最終合算値からアップデートされたウェート、及びアップデートされた残余グラジエント値を獲得することができる。例えば、該ニューラルネットワーク装置は、ウェートのビット桁に対応する最終合算値のビット桁の値を、アップデートされたウェートとして獲得することができる。また、該ニューラルネットワーク装置は、ウェートのビット桁に対応しない最終合算値のビット桁の値を、アップデートされた残余グラジエント値として獲得することができる。
【０１６８】
そのとき、アップデートされたウェートの最上位ビットは、最終合算値の最上位ビットである符号ビットでもある。また、該ニューラルネットワーク装置は、最終合算値の符号ビットを獲得し、獲得された符号ビットが、アップデートされた残余グラジエント値の最上位ビットになるように、アップデートされた残余グラジエント値に追加される。
【０１６９】
他の実施形態において、段階１３３０後、段階１３４５、段階１３５５及び段階１３６５に進められる。
【０１７０】
段階１３４５において、該ニューラルネットワーク装置は、残余グラジエント値から符号ビットを除外した残りの値をウェートに連結し、中間連結値を計算することができる。中間連結値８４０の最上位ビットは、ウェートの符号ビットに該当する。
【０１７１】
段階１３５５において、該ューラルネットワーク装置は、加算器を利用して調整された個別グラジエント値及び中間連結値を合算することができる。
【０１７２】
調整された個別グラジエント値及び中間連結値のいずれも、最上位ビット（ＭＳＢ）として符号ビットを含むので、該ニューラルネットワーク装置は、２値の符号ビットを考慮し、個別グラジエント値と中間連結値との中間合算値を合算することができる。
【０１７３】
段階１３６５において、該ニューラルネットワーク装置は、合算結果に基づいて、ウェート及び残余グラジエント値を、アップデート合算結果に基づいて、ウェート及び残余グラジエント値をアップデートすることができる。
【０１７４】
一実施形態において、該ニューラルネットワーク装置は、ウェートのビット桁に基づいて、最終合算値からアップデートされたウェート、及びアップデートされた残余グラジエント値を獲得することができる。例えば、該ニューラルネットワーク装置は、ウェートのビット桁に対応する最終合算値のビット桁の値を、アップデートされたウェートとして獲得することができる。また、該ニューラルネットワーク装置は、ウェートのビット桁に対応しない最終合算値のビット桁の値を、アップデートされた残余グラジエント値として獲得することができる。
【０１７５】
そのとき、アップデートされたウェートの最上位ビットは、最終合算値の最上位ビットである符号ビットでもある。しかし、アップデート以前の残余グラジエント値と同様に、アップデートされた残余グラジエント値は、符号ビットを含まない。すなわち、該ニューラルネットワーク装置は、最終合算値の符号ビットを、アップデートされた残余グラジエント値に追加しない。
【０１７６】
図１４は、一実施形態によるニューラルネットワーク装置のハードウェア構成を図示したブロック図である。
【０１７７】
図１４を参照すれば、ニューラルネットワーク装置１４００は、少なくとも１つのプロセッサ１４１０及びメモリ１４２０を含んでもよい。図１４に図示されたニューラルネットワーク装置１４００には、本実施形態と係わる構成要素だけが図示されている。従って、ニューラルネットワーク装置１４００に、図１４に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、当業者に自明である。例えば、ニューラルネットワーク装置１４００は、センサモジュール（小数点）、通信モジュール（小数点）及びインターフェース（小数点）などをさらに含んでもよい。
【０１７８】
ニューラルネットワーク装置１４００は、家電製品、モバイルコンピュータデバイス及びサーバのうち少なくとも一つに含まれるか、あるいは家電製品、モバイルコンピュータデバイス及びサーバのうち少なくとも一つに、有無線で連結されるようにも具現される。また、ニューラルネットワーク装置１４００は、デバイスとサーバとの結合によっても具現される。ユーザの入力を受信するデバイスと、ニューラルネットワークを学習させるサーバとが別途に存在し、デバイスとサーバとの通信を介して、推論が行われる。ここで、単一のデバイスで推論が行われもするが、前記例示に制限されるものではないということは言うまでもない。
【０１７９】
プロセッサ１４１０は、１個または複数個のプロセッサによっても具現される。例えば、プロセッサ１４１０は、多数の論理ゲートのアレイによっても具現され、汎用的なマイクロプロセッサと、マイクロプロセッサで実行されるプログラムが保存されたメモリとの組み合わせによっても具現される。例えば、プロセッサ１４１０は、ＣＰＵ（central  processing  unit）、ＧＰＵ（graphics  processing  unit）、ハードウェアアクセラレータなどでもある。
【０１８０】
プロセッサ１４１０は、ニューラルネットワーク装置１４００を制御するための全般的な役割を行うことができる。例えば、プロセッサ１４１０は、ニューラルネットワーク装置１４００内のメモリ１４２０に保存されたプログラムを実行することにより、ニューラルネットワーク装置１４００を全般的に制御することができる。また、少なくとも１つのプロセッサ１４１０は、メモリ１４２０に保存されたプログラムを実行することにより、ニューラルネットワーク装置１４００の機能を並列的に遂行することができる。
【０１８１】
少なくとも１つのプロセッサ１４１０は、該ニューラルネットワークのレイヤに含まれたノードそれぞれの機能を遂行することができる。例えば、少なくとも１つのプロセッサ１４１０は、アクティベーション値及びウェートを利用し、ニューラルネットワーク演算またはマトリックス演算を行うことができる。
【０１８２】
プロセッサ１４１０は、図１ないし図１３で説明した低精度ナンバーシステムを利用するニューラルネットワークにおいて、パラメータを処理するための一連のプロセスを制御することができる。
【０１８３】
メモリ１４２０は、ニューラルネットワーク装置１４００内で処理される各種データを保存するハードウェアであり、例えば、メモリ１４２０は、ニューラルネットワーク装置１４００で処理されたデータ及び処理されるデータを保存することができる。また、メモリ１４２０は、ニューラルネットワーク装置１４００によって駆動されるアプリケーション、ドライバなどを保存することができる。メモリ１４２０は、ＤＲＡＭ（dynamic  random  access  memory）・ＳＲＡＭ（static  random  access  memory）のようなＲＡＭ（random  access  memory）、ＲＯＭ（read-only  memory）、ＥＥＰＲＯＭ（electrically  erasable  programmable  read-only  memory）、ＣＤ−ＲＯＭ（compact  disc  read  only  memory）、ブルーレイ（登録商標（Blu-ray））、または他の光学ディスクストレージ、ＨＤＤ（hard  disk  drive）、ＳＳＤ（solid  state  drive）、またはフラッシュメモリを含んでもよい。
【０１８４】
また、メモリ１４２０は、ニューラルネットワーク装置１４００に含まれた少なくとも１つのプロセッサ１４１０が共有する内蔵メモリ、または少なくとも１つのプロセッサ１４１０を支援する複数の内蔵メモリをさらに含んでもよい。
【０１８５】
本実施形態は、コンピュータによって実行されるプログラムモジュールのようなコンピュータによって実行可能な命令語を含む記録媒体の形態にも具現される。コンピュータ可読媒体は、コンピュータによってアクセスされる任意の可用媒体でもあり、揮発性及び不揮発性の媒体、分離型及び非分離型の媒体をいずれも含む。また、該コンピュータ可読媒体は、コンピュータ記録媒体及び通信媒体をいずれも含んでもよい。該コンピュータ記録媒体は、コンピュータ可読命令語、データ構造、プログラムモジュールまたはその他データのような情報保存のための任意の方法または技術によって具現された揮発性及び不揮発性、分離型及び非分離型の媒体をいずれも含む。該通信媒体は、典型的に、コンピュータ可読命令語、データ構造、プログラムモジュールのような変調されたデータ信号のその他データ、またはその他伝送メカニズムを含み、任意の情報伝達媒体を含む。
【０１８６】
また、本明細書において、「部」は、プロセッサまたは回路のようなハードウェア構成（hardware  component）、及び／またはプロセッサのようなハードウェア構成によって実行されるソフトウェア構成（software  component）でもある。
【０１８７】
前述の本明細書の説明は、例示のためのものであり、本明細書の内容が属する技術分野の当業者であるならば、本発明の技術的思想や、必須な特徴を変更せずにも、他の具体的な形態に容易に変形が可能であるということを理解することができるであろう。従って、以上で記述した実施形態は、全ての面において、例示的なものであり、限定的なものではないと理解しなければならない。例えば、単一型と説明されている各構成要素は、分散されても実施され、同様に、分散されていると説明されている構成要素も、結合された形態でも実施される。
【０１８８】
本実施形態の範囲は、前述の詳細な説明よりは、特許請求の範囲によって示され特許請求の範囲の意味、範囲そしてその均等概念から導き出される全ての変更、または変形された形態が含まれるものであると解釈されなければならない。
【産業上の利用可能性】
【０１８９】
本発明の、ニューラルネットワークにおいて、パラメータを処理する方法及びその装置は、例えば、情報処理関連の技術分野に効果的に適用可能である。
【符号の説明】
【０１９０】
１０      ニューラルネットワーク学習器
１１，２１  ニューラルネットワーク
２０      ニューラルネットワーク推論器
７１０    個別グラジエント値
７２０    残余グラジエント値
７６０    アップデートされたウェート
７７０    アップデートされたグラジエント値
１４００  ニューラルネットワーク装置
１４１０  プロセッサ
１４２０  メモリ
【図１】
2020009444.tif 000010
【図２】
2020009444.tif 000011
【図３Ａ】
2020009444.tif 000012
【図３Ｂ】
2020009444.tif 000013
【図３Ｃ】
2020009444.tif 000014
【図４】
2020009444.tif 000015
【図５】
2020009444.tif 000016
【図６】
2020009444.tif 000017
【図７】
2020009444.tif 000018
【図８】
2020009444.tif 000019
【図９】
2020009444.tif 000020
【図１０】
2020009444.tif 000021
【図１１】
2020009444.tif 000022
【図１２】
2020009444.tif 000023
【図１３】
2020009444.tif 000024
【図１４】
2020009444.tif 000025
【手続補正書】
【提出日】令和1年7月3日(2019.7.3)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００４
【補正方法】変更
【補正の内容】
【０００４】
【特許文献１】特許第３３４５４７８号公報
【特許文献２】中国特許出願公開第１０７４８０７７０号明細書