(57)【要約】【課題】  ニューラルネットワーク方法及びその装置を提供する。【解決手段】  ニューラルネットワークに含まれるノード間の連結関係に割り当てられるウェートのための個別アップデート値を計算し、個別アップデート値を累積バッファに累積し、累積バッファの累積アップデート値が臨界値以上である場合、累積アップデート値を利用し、ウェートをアップデートすることにより、ニューラルネットワークにおいて、パラメータを処理する方法及びその装置を提供することができる。【選択図】      図２
2019079535.tif 000002
【特許請求の範囲】
【請求項１】
ロープレシジョン・ナンバーシステムを利用するニューラルネットワークにおいて、パラメータを処理する方法において、
前記ニューラルネットワークに含まれるノード間の連結関係に割り当てられるウェートのための個別アップデート値を計算する段階と、
前記個別アップデート値を累積バッファに累積する段階と、
前記累積バッファの累積アップデート値が臨界値以上である場合、前記累積アップデート値を利用し、前記ウェートをアップデートする段階と、を含む方法。
【請求項２】
前記臨界値は、前記ウェートの最下位有効桁数に対応する値であり、
前記アップデートする段階は、
前記累積アップデート値のうち、前記ウェートの有効桁数に合算可能な部分を、有効アップデート値として決定する段階と、
前記ウェートに前記有効アップデート値を加算する段階と、
前記累積バッファの前記累積アップデート値から前記有効アップデート値を減算する段階と、を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記方法は、
前記累積アップデート値が前記臨界値以上であるか否かを、既設定アップデート周期ごとに判断する段階をさらに含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記方法は、
前記累積アップデート値が前記臨界値より小さい場合、次のアップデート周期まで、前記計算された個別アップデート値を、前記累積バッファに累積し続ける段階をさらに含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記ウェートが、第１符号ビット、第１整数部及び第１小数部によって構成された固定小数点値であり、前記累積アップデート値が、第２符号ビット及び第２小数部によって構成された固定小数点値である場合、
前記アップデートする段階は、
前記累積アップデート値の前記第２小数部を示すビットのうち、前記ウェートの前記第１小数部とオーバーラップされる少なくとも１つのビットが示す値を、前記ウェートに加算する段階と、
前記オーバーラップされる少なくとも１つのビットの値を、前記第２符号ビットと同一値に初期化する段階と、を含むことを特徴とする請求項１ないし４のうち何れか一項に記載の方法。
【請求項６】
前記方法は、
前記計算された個別アップデート値をモニタリングする段階と、
前記モニタリングの結果に基づいて、前記累積アップデート値の小数点の位置を調整する段階をさらに含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記モニタリングする段階は、
前記個別アップデート値の平均値をモニタリングする段階を含み、
前記調整する段階は、
前記個別アップデート値の平均値が前記臨界値の１／ａ倍（ａは任意の自然数）より小さい場合、前記累積アップデート値の小数点の位置を、前記累積アップデート値の下位ビット方向に移動させる段階と、
前記個別アップデート値の平均値が前記臨界値の１／ａ倍より大きい場合、前記累積アップデート値の小数点の位置を、前記累積アップデート値の上位ビット方向に移動させる段階と、を含むことを特徴とする請求項６に記載の方法。
【請求項８】
前記ウェートは、前記第１小数部のビット個数を調整することができる動的固定小数点値であることを特徴とする請求項５に記載の方法。
【請求項９】
前記ウェートが、第１符号ビット、第１指数部、第１仮数部及び第１バイアスによって構成された浮動小数点値であり、前記累積アップデート値が、第２符号ビット、第２指数部、第２仮数部及び第２バイアスによって構成された浮動小数点値である場合、
前記アップデートする段階は、
前記ウェートの有効数字範囲に含まれる、前記累積アップデート値の実効値を、前記ウェートに加算する段階を含むことを特徴とする請求項１ないし８のうち何れか一項に記載の方法。
【請求項１０】
前記方法は、
前記累積アップデート値をモニタリングする段階と、
前記モニタリングの結果に基づいて、前記累積アップデート値の前記第２バイアスを調整する段階と、をさらに含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記調整する段階は、
前記累積アップデート値の前記第２指数部が前記臨界値を超える場合、前記第２バイアスを増大させる段階と、
前記累積アップデート値が前記臨界値の１／ｂ倍（ｂは任意の自然数）より小さい場合、前記第２バイアスを低減させる段階と、を含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
請求項１ないし１１のうちいずれか１項に記載の方法をコンピュータに実行させる命令語を含むコンピュータプログラム。
【請求項１３】
ロープレシジョン・ナンバーシステムを利用するニューラルネットワークを実現する装置において、
少なくとも１つのプログラムが保存されたメモリと、
前記少なくとも１つのプログラムを実行することにより、前記ニューラルネットワークにおいて、パラメータを処理する少なくとも１つのプロセッサと、を含み、
前記少なくとも１つのプロセッサは、
前記ニューラルネットワークに含まれるノード間の連結関係に割り当てられるウェートのための個別アップデート値を計算し、前記個別アップデート値を累積バッファに累積し、前記累積バッファの累積アップデート値が臨界値以上である場合、前記累積アップデート値を利用し、前記ウェートをアップデートする装置。
【請求項１４】
前記臨界値は、前記ウェートの最下位有効桁数に対応する値であり、
前記少なくとも１つのプロセッサは、
前記累積アップデート値のうち、前記ウェートの有効桁数に合算可能な部分を有効アップデート値として決定し、前記ウェートに前記有効アップデート値を加算し、前記累積バッファの前記累積アップデート値を、前記有効アップデート値ほど減算することを特徴とする請求項１３に記載の装置。
【請求項１５】
前記少なくとも１つのプロセッサは、
前記累積アップデート値が前記臨界値以上であるか否かを、既設定アップデート周期ごとに判断することを特徴とする請求項１３に記載の装置。
【請求項１６】
前記少なくとも１つのプロセッサは、
前記累積アップデート値が前記臨界値より小さい場合、次のアップデート周期まで、前記計算された個別アップデート値を、前記累積バッファに累積し続けることを特徴とする請求項１５に記載の装置。
【請求項１７】
前記ウェートが、第１符号ビット、第１整数部及び第１小数部によって構成された固定小数点値であり、前記累積アップデート値が、第２符号ビット及び第２小数部によって構成された固定小数点値である場合、
前記少なくとも１つのプロセッサは、
前記累積アップデート値の前記第２小数部を示すビットのうち、前記ウェートの前記第１小数部とオーバーラップされる少なくとも１つのビットが示す値を、前記ウェートに加算し、前記オーバーラップされる少なくとも１つのビットの値を、前記第２符号ビットと同一値に初期化することを特徴とする請求項１３ないし１６のうち何れか一項に記載の装置。
【請求項１８】
前記少なくとも１つのプロセッサは、
前記計算された個別アップデート値をモニタリングし、前記モニタリングの結果に基づいて、前記累積アップデート値の小数点の位置を調整することを特徴とする請求項１７に記載の装置。
【請求項１９】
前記少なくとも１つのプロセッサは、
前記計算された個別アップデート値の平均値をモニタリングし、前記個別アップデート値の平均値が前記臨界値の１／ａ倍より小さい場合、前記累積アップデート値の小数点の位置を、前記累積アップデート値の下位ビット方向に移動させ、前記個別アップデート値の平均値が前記臨界値の１／ａ倍より大きい場合、前記累積アップデート値の小数点の位置を、前記累積アップデート値の上位ビット方向に移動させることを特徴とする請求項１８に記載の装置。
【請求項２０】
前記ウェートが、第１符号ビット、第１指数部、第１仮数部及び第１バイアスによって構成された浮動小数点値であり、前記累積アップデート値が、第２符号ビット、第２指数部、第２仮数部及び第２バイアスによって構成された浮動小数点値である場合、
前記少なくとも１つのプロセッサは、
前記ウェートの有効数字範囲に含まれる前記累積アップデート値の実効値を、前記ウェートに加算することを特徴とする請求項１３に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明、ニューラルネットワークにおいて、パラメータを処理する方法及びその装置等に関する。
【背景技術】
【０００２】
ニューラルネットワーク（neural  network）の原理は、生物学的な脳をモデリングしたコンピュータ科学的アーキテクチャ（computational  architecture）を基礎としている。最近、ニューラルネットワーク技術の発展により、多種の電子システムにおいて、ニューラルネットワーク装置を使用して入力データを分析し、有効な情報を抽出する研究が活発に進められている。
【０００３】
ニューラルネットワーク装置は、複雑な入力データに対する多量の演算を必要とする。ニューラルネットワーク装置が入力をリアルタイムに分析し、情報を抽出するために、ニューラルネットワーク演算を効率的に処理することができる技術が要求される。例えば、ニューラルネットワーク装置の複雑な入力データの処理に必要な演算量を減少させつつ、正確度の損失を最小化させる技術が要求される。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Training  deep  neural  networks  with  low  precision  multiplication(https://arxiv.org/abs/1412.7024),Matthieu  Courbariaux  et  al.,Accepted  as  a  workshop  contribution  at  ICLR  2015
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明が解決しようとする課題は、ニューラルネットワークにおいて、パラメータを処理する方法及びその装置を提供するところにある。本開示がなす技術的課題は、前述のところのような技術的課題に限定されるものではなく、以下の実施形態から、他の技術的課題が類推され得る。
【課題を解決するための手段】
【０００６】
前述の技術的課題を解決するための手段として、一側面によるロープレシジョン・ナンバーシステム（low-precision  number  system）を利用するニューラルネットワークにおいて、パラメータを処理する方法は、前記ニューラルネットワークに含まれるノード間の連結関係に割り当てられるウェートのための個別アップデート値（individual  update）を計算する段階と、前記個別アップデート値を累積バッファ（accumulation  buffer）に累積する段階と、前記累積バッファの累積アップデート値（accumulated  update）が臨界値（threshold）以上である場合、前記累積アップデート値を利用し、前記ウェートをアップデートする段階と、を含んでもよい。
【０００７】
また、他の側面によるコンピュータで読み取り可能な記録媒体は、前述の方法を実行する命令語を含む１以上のプログラムが記録された記録媒体を含んでもよい。
【０００８】
また、さらに他の側面によるロープレシジョン・ナンバーシステムを利用するニューラルネットワークを実施する装置は、少なくとも１つのプログラムが保存されたメモリと、前記少なくとも１つのプログラムを実行することにより、前記ニューラルネットワークにおいて、パラメータを処理する少なくとも１つのプロセッサと、を含み、前記少なくとも１つのプロセッサは、前記ニューラルネットワークに含まれるノード間の連結関係に割り当てられるウェートのための個別アップデート値を計算し、前記個別アップデート値を累積バッファに累積し、前記累積バッファの累積アップデート値が臨界値以上である場合、前記累積アップデート値を利用し、前記ウェートをアップデートすることができる。
【図面の簡単な説明】
【０００９】
【図１】一実施形態によるニューラルネットワークの例示を示す図面である。
【図２】一実施形態によるニューラルネットワークにおいて、パラメータを処理する方法の一例を示すフローチャートである。
【図３Ａ】一実施形態による浮動小数点値の例示を図示した図面である。
【図３Ｂ】一実施形態による固定小数点値の一例を図示した図面である。
【図３Ｃ】一実施形態による固定小数点値の他の例を図示した図面である。
【図４】一実施形態によるニューラルネットワークにおいて、パラメータを処理する方法の他の例を示すフローチャートである。
【図５】一実施形態による固定小数点パラメータを利用するニューラルネットワークの例示を示す図面である。
【図６】一実施形態による、ウェートに有効アップデート値（effective  update）を加算する過程の例示を示す図面である。
【図７】一実施形態による固定小数点パラメータを利用するニューラルネットワークにおいて、パラメータを処理する方法の例示を示すフローチャートである。
【図８Ａ】一実施形態による累積アップデート値の小数点の位置を調整する過程の一例を示す図面である。
【図８Ｂ】一実施形態による累積アップデート値の小数点の位置を調整する過程の他の例を示す図面である。
【図９】一実施形態による浮動小数点パラメータを利用するニューラルネットワークの例示を示す図面である。
【図１０】一実施形態による浮動小数点パラメータを利用するニューラルネットワークにおいて、パラメータを処理する方法の例示を示すフローチャートである。
【図１１】一実施形態によるニューラルネットワーク装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１０】
以下、添付された図面を参照しながら、ただ例示のための実施形態について詳細に説明する。以下の説明は、実施形態を具体化させるためのものであるのみ、発明の権利範囲を制限したり限定したりするものではないということは言うまでもない。詳細な説明及び実施形態から、当該技術分野の当業者が容易に類推することができることは、権利範囲に属するものであると解釈される。
【００１１】
本明細書で使用される「構成される」または「含む」というような用語は、明細書上に記載された多くの構成要素、または多くの段階を、必ずいずれも含むものであると解釈されるものではなく、そのうち一部構成要素または一部段階は、含まれないこともあり、またはさらなる構成要素または段階をさらに含んでもよいと解釈されなければならない。
【００１２】
また、本明細書で使用される「第１」または「第２」のように序数を含む用語は、多様な構成要素の説明に使用することができるが、前記構成要素は、前記用語によって限定されるものではない。前記用語は、１つの構成要素を他の構成要素から区別する目的のみに使用される。
【００１３】
本実施形態は、ニューラルネットワークにおいて、パラメータを処理する方法及びその装置係わるものであり、以下の実施形態が属する技術分野で当業者に周知されている事項については、詳細な説明を省略する。
【００１４】
図１は、一実施形態によるニューラルネットワークの例示を示す図面である。図１を参照すれば、一実施形態によるニューラルネットワーク１０が図示されている。ニューラルネットワーク１０は、入力レイヤ、ヒドゥンレイヤ又は隠れレイヤ（hidden  layer）及び出力レイヤを含む構造を有し、受信される入力データ（例えば、Ｉ１及びＩ２）を基に演算を実行し、遂行結果を基に、出力データ（例えば、Ｏ１及びＯ２）を生成することができる。
【００１５】
ニューラルネットワーク１０は、２個以上のヒドゥンレイヤを含むディープニューラルネットワーク（ＤＮＮ：deep  neural  network）またはｎ階層ニューラルネットワーク（n-layers  neural  networks）でもある。例えば、図１に図示されているように、ニューラルネットワーク１０は、入力レイヤ（Layer  １）、２個のヒドゥンレイヤ（Layer  ２及びLayer  ３）及び出力レイヤ（Layer  ４）を含むＤＮＮでもある。該ＤＮＮは、ＣＮＮ（Convolutional  Neural  Networks）、ＲＮＮ（Recurrent  Neural  Networks）、Deep  Belief  Networks、Restricted  Boltzman  Machinesなどを含んでもよいが、それらに制限されるものではない。
【００１６】
ニューラルネットワーク１０がＤＮＮ構造を有する場合、有効な情報を抽出することができるさらに多くのレイヤを含むので、ニューラルネットワーク１０は、従来のニューラルネットワークより複雑なデータ集合を処理することができる。一方、ニューラルネットワーク１０は、４個のレイヤを含むように図示されているが、それは、例示に過ぎず、ニューラルネットワーク１０は、さらに少なかったり多かったりするレイヤを含んでもよい。また、ニューラルネットワーク１０は、図１に図示されたところとは異なる多様な構造のレイヤを含んでもよい。
【００１７】
ニューラルネットワーク１０に含まれたレイヤそれぞれは、「ニューロン（neuron）」、「プロセッシングエレメント（ＰＥ：processing  element）」、「ユニット（unit）」、あるいはそれらと類似した用語として知られた、複数の人工ノード（artificial  node）を含んでもよい。例えば、図１に図示されているように、Layer  １は、２個のノードを含み、Layer  ２は、３個のノードを含んでもよい。ただし、それらは、例示に過ぎず、ニューラルネットワーク１０に含まれたレイヤそれぞれは、多様な個数のノードを含んでもよい。
【００１８】
ニューラルネットワーク１０に含まれたレイヤそれぞれに含まれたノードは、互いに連結され、データを交換することができる。例えば、１つのノードは、他のノードからデータを受信して演算することができ、該演算結果を、さらに他のノードに出力することができる。
【００１９】
ノードそれぞれの出力値は、アクティベーション（activation）値とも呼ばれる。該アクティベーション値は、１ノードの出力値でありながら、次のレイヤに含まれたノードの入力値でもある。一方、ノードそれぞれは、以前レイヤに含まれたノードから受信されたアクティベーション値及びウェート（weight）に基づいて、自体のアクティベーション値を決定することができる。該ウェートは、各ノードでのアクティベーション値を計算するために利用されるパラメータであり、ノード間の連結関係に割り当てられる値でもある。
【００２０】
ノードそれぞれは、入力されてアクティベーション値を出力する演算ユニット（computational  unit）でもあり、入力・出力をマッピングすることができる。例えば、σは、活性化関数（activation  function）であり、wijkは、（ｉ−１）番目レイヤに含まれたｋ番目ノードから、ｉ番目レイヤに含まれたｊ番目ノードへのウェートであり、bijは、ｉ番目レイヤに含まれたｊ番目ノードのバイアス（bias）値であり、aijは、ｉ番目レイヤのｊ番目ノードのアクティベーション値であるとするとき、アクティベーション値aijは、次のような数式（１）に従う。
【００２１】
【数１】
2019079535.tif 000003
図１に図示されているように、２番目レイヤ（Layer  ２）の最初ノードのアクティベーション値は、a21とも表現される。また、a21は、数式１により、a21=σ(w21,1×a11+w21,2×+  a12+b21)の値を有することができる。ただし、前述の数式１は、ニューラルネットワークでデータを理解するために利用されるアクティベーション及びウェートについて説明するための例示であるのみ、それに制限されるものではない。該アクティベーション値は、以前レイヤから受信されたアクティベーション値の加重合計（weighted  sum）に活性化を適用した値を、ＲｅＬＵ（rectified  linear  unit）を通過させることによって獲得された値でもある。
【００２２】
一方、ニューラルネットワーク１０は、ロープレシジョン・ナンバーシステム（low-precision  number  system）を利用することができる。ロープレシジョン・ナンバーシステムは、従来のニューラルネットワークより相対的に少ないビット個数を有するデータをパラメータとして利用することにより、精度（precision）を低くしながら、演算量を減少させるシステムを意味する。例えば、３２ビットまたは６４ビットの浮動小数点データまたは固定小数点データを利用する従来のニューラルネットワークとは異なり、ロープレシジョン・ナンバーシステムを利用するニューラルネットワーク１０は、８ビットまたは１６ビットの浮動小数点データまたは固定小数点データをパラメータとして利用することができる。
【００２３】
ニューラルネットワーク１０が、８ビットまたは１６ビットの浮動小数点データまたは固定小数点データを利用するということは、ニューラルネットワーク１０のアクティベーション値、ウェート及びノードのバイアス値などのパラメータが、８ビットまたは１６ビットの浮動小数点データまたは固定小数点データの形式を有するということを意味する。ただし、ロープレシジョン・ナンバーシステムを利用するニューラルネットワーク１０は、さらに少ないビット個数を有する浮動小数点データまたは固定小数点データをパラメータとして利用することもでき、前述の例示に制限されるものではない。
【００２４】
ニューラルネットワーク１０においては、数多くのデータ集合が、相互連結された複数のノード間において交換され、レイヤを通過しながら、数多くの演算過程を経る。ロープレシジョン・ナンバーシステムを利用するニューラルネットワーク１０は、数多くの演算過程において、従来のニューラルネットワークより少ないビット個数を有するデータを利用するので、従来のニューラルネットワークと比較し、演算量が低減される。ただし、ロープレシジョン・ナンバーシステムを利用するニューラルネットワーク１０は、演算量を減少させるとしても、正確度損失を最小化させるための技術を適用する。以下、図２ないし図１１を参照し、ロープレシジョン・ナンバーシステムを利用するニューラルネットワーク１０において、正確度損失を最小化させるための方法について詳細に説明する。
【００２５】
図２は、一実施形態によるニューラルネットワークにおいて、パラメータを処理する方法の一例を示すフローチャートである。該ニューラルネットワークは、ロープレシジョン・ナンバーシステムを利用するニューラルネットワークでもある。パラメータは、ニューラルネットワークに含まれるノード間の連結関係に割り当てられるウェートでもある。以下において、ニューラルネットワークで処理されるパラメータをウェートとして説明するが、該パラメータが必ずしもウェートに限定されるものではない。該パラメータは、ニューラルネットワークで処理される任意のデータを意味する。
【００２６】
図２を参照すれば、段階２１０において、ニューラルネットワーク装置は、ニューラルネットワークに含まれるノード間の連結関係に割り当てられるウェートのための個別アップデート（individual  update）値を計算することができる。該ウェートは、浮動小数点値または固定小数点値でもある。以下、図３Ａないし図３Ｃを参照し、浮動小数点値及び固定小数点値について説明する。
【００２７】
図３Ａは、一実施形態による浮動小数点値の例示を図示した図面であり、図３Ｂは、一実施形態による固定小数点値の一例を図示した図面であり、図３Ｃは、一実施形態による固定小数点値の他の例を図示した図面である。
【００２８】
図３Ａを参照すれば、浮動小数点値３０は、符号ビット３１０、指数部（exponent  part）３２０、仮数部（mantissa  part）３３０及びバイアス３４０から構成される。該浮動小数点は、１つの数を、小数点部分(a  decimal  point  part)を示す部分(即ち、仮数部)と、小数点位置(a  decimal  point  position)を示す部分(即ち、指数部)とに分けて表現する表記法を意味する。
【００２９】
仮数部３３０は、小数点部分を示す部分に対応し、指数部３２０は、小数点位置を示す部分に対応する。符号ビット３１０は、浮動小数点値３０の符号を決定することができる。バイアス３４０は、指数部３２０に対して加減する値であり、負の指数を表現するために決定される値でもある。浮動小数点値３０は、符号ビット３１０、指数部３２０に対応するビット、及び仮数部３３０に対応するビットを含んでもよい。バイアス３４０は、浮動小数点値３０に対してあらかじめ決定されており、別途にも保存される。
【００３０】
一方、浮動小数点値３０は、符号ビット３１０をsign、指数部３２０をexponent、仮数部３３０をmantissa、バイアス３４０をbiasとするとき、次のような数式（２）による値を有することができる。
【００３１】
【数２】
2019079535.tif 000004
図３Ｂを参照すれば、固定小数点値３５は、符号ビット３１５、整数部（integer  part）３２５、小数部（fractional  part）３３５及び小数点３４５から構成される。該固定小数点は、小数点を使用し、固定された桁数の小数を示す表記法を意味する。
【００３２】
符号ビット３１５は、固定小数点値３５の符号を決定し、整数部３２５は、固定小数点値３５の整数を示す部分に対応し、小数部３３５は、固定小数点値３５の小数を示す部分に対応する。小数点３４５は、固定小数点値３５の整数部３２５及び小数部３３５を区分する基準になる点を意味する。
【００３３】
一方、固定小数点値３５が示す値は、図３Ｃを参照して説明することができる。図３Ｃを参照すれば、固定小数点値３５は、８ビット固定小数点値でもある。また、固定小数点値３５は、整数部３２５、小数部３３５及び小数点３４５によっても構成される。
【００３４】
整数部３２５及び小数部３３５を示すビットそれぞれは、１または０の値を有することができる。また、図３Ｃに図示されているように、整数部３２５及び小数部３３５を示すビットは、順に−８、＋４、＋２、＋１、＋０．５、＋０．２５、＋０．１２５及び＋０．０６２５の値を示すことができる。整数部３２５の最上位ビットが１である場合、整数部３２５の最上位ビットが示す値は、−８であるので、整数部３２５及び小数部３３５に含まれる他のビットがいかなる値を有しても、固定小数点値３５が示す値は、負数である。整数部３２５の最上位ビットは、固定小数点値３５の符号を決定する符号ビット３１５に対応する。
【００３５】
ただし、図３Ｃは例示に過ぎず、固定小数点値３５は、１６ビット固定小数点値でもあり、任意の適切な数のビット個数を有する固定小数点値でもある。また、固定小数点値３５は、符号化表現法、１の補数法、及び２の補数法のうちいずれか１つの表現法によって負数を示すことができる。
【００３６】
再び図２に戻り、個別アップデート値は、ウェートをアップデートするために計算される値でもある。ニューラルネットワークで学習を行う対象は、ウェートであり、ニューラルネットワークがますますさらに良好な結果を出力するためには、ウェートが学習過程で反復的にアップデートされる必要がある。ウェートをアップデートするための方法のうち一つとして、例えば、傾斜下降法（gradient  descent  algorithm）が利用されてもよい。該傾斜下降法は、損失関数（loss  function）または誤差関数（error  function）の最低点を求めるために、損失関数または誤差関数の傾き方向にパラメータを調整することによって誤差を最小化させるアルゴリズムを意味する。例えば、損失関数がLであり、パラメータがθであり、学習速度（learning  rate）がηであるとするとき、該パラメータは、次のような数式（３）に従って調整される。
【００３７】
【数３】
2019079535.tif 000005
該パラメータをアップデートするために計算されるη(∂L/∂θ)は、損失関数の傾き方向にパラメータを調整するための勾配又はグラディエント（gradient）を意味する。例えば、該パラメータがウェートであるとき、η(∂L/∂θ)は、ウェートをアップデートするために計算される個別アップデート値でもある。
【００３８】
一方、一般的なニューラルネットワークにおいて、個別アップデート値η(∂L/∂θ)は、ウェートよりはるかに小さい値を有する。ニューラルネットワークがロープレシジョン・ナンバーシステム（例えば、８ビットまたは１６ビット）を利用する場合、個別アップデート値η(∂L/∂θ)は、ウェートが示すことができる値の範囲に含まれない。それにより、ウェートが数式３によってアップデートされるとき、個別アップデート値η(∂L/∂θ)は、無視され、ウェートは、アップデートされない。ニューラルネットワークが徐々に良好な結果を出力するためには、ウェートが反復的にアップデートされなければならないにもかかわらず、個別アップデート値η(∂L/∂θ)の大きさにより、ウェートがアップデートされないことが懸念される。
【００３９】
本開示によるニューラルネットワーク装置は、段階２２０、段階２３０及び段階２４０を遂行することにより、個別アップデート値が無視されず、ウェートをアップデートする過程で反映されるようにする。段階２２０において、ニューラルネットワーク装置は、個別アップデート値を、累積バッファ（accumulation  buffer）に累積することができる。該累積バッファは、個別アップデート値を累積するための専用ハードウェアでもあり、個別アップデート値を累積するために割り当てされたメモリでもある。個別アップデート値は、累積バッファに累積し、累積アップデート（accumulated  update）値にもなる。該累積バッファは、該累積アップデート値を保存することができる。
【００４０】
ロープレシジョン・ナンバーシステムを利用するニューラルネットワークにおいて、個別アップデート値がウェートをアップデートする過程において無視されないように、ニューラルネットワーク装置は、個別アップデート値をウェートに影響を与えることができる大きさまで累積することができる。
【００４１】
段階２３０において、ニューラルネットワーク装置は、累積バッファの累積アップデート値が臨界値以上である場合、累積アップデート値を利用し、ウェートをアップデートすることができる。該ニューラルネットワーク装置は、累積バッファの累積アップデート値が臨界値以上であるか否かを判断することができる。該臨界値は、累積アップデート値がウェートに影響を与えることができる大きさまで累積したか否かを決定するための値でもある。例えば、該臨界値は、ウェートの最下位有効桁数に対応する値でもある。
【００４２】
ウェートが固定小数点値である場合、ウェートの最下位有効桁数は、ウェートを示すビットのうち最下位ビットに対応する桁数でもある。例えば、ウェートの最下位ビットが
2019079535.tif 000006
桁数を示す場合、ウェートの最下位有効桁数は、2-4桁数でもあり、臨界値は、該最下位有効桁数2-4桁数に対応する値である2-4でもある。
【００４３】
ウェートが浮動小数点値である場合、ウェートの最下位有効桁数は、ウェートの指数部を示すビットのうち最下位ビットに対応する桁数でもある。ただし、ウェートが浮動小数点値である場合には、最下位有効桁数が決定されるために、バイアスが考慮される。例えば、ウェートの指数部を示すビットのうち最下位ビットが20桁数を示しても、バイアスが８である場合、ウェートの最下位有効桁数は、2(2の0乗)=21桁数ではなく、21-8=2-7桁数であり、該臨界値は、該最下位有効桁数2-7桁数に対応する値である2-7でもある。
【００４４】
ただし、それは、例示に過ぎず、該臨界値は、ウェートの最下位有効桁数に対応する値、及び累積アップデート値の最上位有効桁数に対応する値の間の任意の適切な値でもある。
【００４５】
該累積アップデート値が臨界値以上である場合、該累積アップデート値は、ウェートに影響を与えることができる大きさを有するので、該ニューラルネットワーク装置は、累積アップデート値を利用して、ウェートをアップデートすることができる。
【００４６】
具体的には、該ニューラルネットワーク装置は、累積アップデート値のうちウェートの有効桁数に合算可能な部分を、有効アップデート（effective  update）値として決定することができる。有効アップデート値とは、累積アップデート値からウェートをアップデートするために実際に利用される値を意味する。ウェートが示すことができる値の範囲は、ウェートに割り当てられたビット個数によって限界が存在する。従って、ウェートの最下位有効桁数以上の値のうちウェートの有効桁数に対応する値だけが、ウェートに合算される。
【００４７】
例えば、ウェートが１ビットの符号ビット、３ビットの整数部、及び４ビットの小数部を含む８ビット固定小数点値であるとするとき、ウェートの有効桁数は、22,  21,  20,  2-1,  2-2,  2-3,及び2-4桁でもある。ウェートが示すことができる値範囲の限界により、ウェートにある値が合算されるためには、その値が、22,  21,  20,  2-1,  2-2,  2-3,2-4桁のうちいずれか１つの桁数に対応する値を少なくとも一つ含まなければならない。例えば、ウェートに、１．２６５６２５（十進数）という値が合算されなければならないと仮定する。１．２６５６２５は、1×20+1×2-2+1×2-6であるので、ウェートの有効桁数に対応する1×20及び1×2-2は、ウェートに合算されるが、1×2-8は、ウェートが示すことができる値範囲の限界により、ウェートに合算されない。
【００４８】
一方、ウェートの有効桁数に合算可能な部分は、ウェートの最下位有効桁数が示す値の倍数を含んでもよい。前述の例示において、ウェートの最下位有効桁数に対応する値は、2-4であり、累積アップデート値のうちウェートの有効桁数に合算可能な部分は、22,  21,  20,  2-1,  2-2,  2-3,及び2-4桁に対応する値である22,  21,  20,  2-1,  2-2,  2-3,及び2-4である。22,  21,  20,  2-1,  2-2,  2-3,及び2-4は、いずれも最下位有効桁数に対応する値である2-4の倍数である。
【００４９】
臨界値は、ウェートの最下位有効桁数に対応する値でもあるので、有効アップデート値は、臨界値の倍数によっても構成される。例えば、累積アップデート値を、Accumulated  updateとし、臨界値を、thresholdとするとき、該有効アップデート値は、次のような数式（４）による。
【００５０】
【数４】
2019079535.tif 000007
数式４において、
【００５１】
【数５】
2019079535.tif 000008
は、Accumulated  updateをthresholdで除算した商を意味する。有効アップデート値は、累積アップデート値を臨界値で除算した商に、臨界値を乗じた値を意味する。また、該有効アップデート値は、累積アップデート値より小さい値を有する、臨界値の倍数のうち最も大きい値でもある。例えば、Accumulated  updateが２．２（十進数）であり、thresholdが１（十進数）である場合、有効アップデート値は、累積アップデート値２．２より小さい値を有する、臨界値１の倍数である１、２のうち大きい方の値である２でもある。
【００５２】
該ニューラルネットワーク装置は、ウェートに有効アップデート値を加算することができる。該有効アップデート値は、ウェートをアップデートするために実際に利用される値であるので、該ニューラルネットワーク装置は、ウェートに有効アップデート値を加算することにより、ウェートをアップデートすることができる。
【００５３】
また、該ニューラルネットワーク装置は、累積バッファの累積アップデート値から有効アップデート値を減算することができる。該累積バッファの累積アップデート値のうち有効アップデート値がウェートに反映されたので、該ニューラルネットワーク装置は、累積バッファの累積アップデート値から有効アップデート値を減算することができる。例えば、ウェートがアップデートされることにより、累積アップデート値は、次のような数式（５）によって減算される。
【００５４】
【数６】
2019079535.tif 000009
数式（５）において、
【００５５】
【数７】
2019079535.tif 000010
は、有効アップデート値であるので、累積バッファの累積アップデート値は、以前の累積アップデート値から有効アップデート値を減算した値を有することができる。
【００５６】
該ニューラルネットワーク装置は、ウェートをアップデートした後、累積バッファの累積アップデート値に、個別アップデート値を累積し続けることができ、前述の過程を反復することができる。本開示によるニューラルネットワークにおいて、パラメータを処理する方法は、一般的に、ウェートよりはるかに小さい値を有する個別アップデート値を無視したり捨てたりする代わりに、ウェートに影響を与えることができる大きさまで累積し、ウェートに適用することにより、ロープレシジョン・ナンバーシステムを利用するニューラルネットワークでの丸め誤差（rounding  error）を最小化させることができる。また、本開示によるニューラルネットワークにおいて、パラメータを処理する方法は、累積アップデート値のうちウェートにアップデートされて残った部分も、続けて累積バッファに維持することにより、正確度の損失を最小化させることができる。
【００５７】
一方、ニューラルネットワーク装置は、累積アップデート値が臨界値以上であるか否かを、既設定アップデート周期ごとに判断することができる。該アップデート周期は、ユーザによって事前に決定され、該ニューラルネットワーク装置によっても決定される。また、該アップデート周期は、累積アップデート値が臨界値以上であるか否かを判断するために、適切な任意の周期にも設定される。
【００５８】
個別アップデート値が相対的に小さい場合、アップデート周期は、相対的に長く決定され、個別アップデート値が相対的に大きい場合には、アップデート周期は、相対的に短く決定される。例えば、該アップデート周期は、個別アップデート値が計算されるたびに反復されるものと設定され、個別アップデート値が１０回計算されるたびに反復されるとも設定される。ただし、それに制限されるものではない。例えば、該アップデート周期は、ニューラルネットワークのｎ回学習に対応する周期にも設定される。
【００５９】
該ニューラルネットワーク装置は、累積アップデート値が臨界値より小さい場合、次のアップデート周期まで計算された個別アップデート値を、累積バッファに累積し続けることができる。該ニューラルネットワーク装置は、次のアップデート周期に累積アップデート値が臨界値以上であるか否かをさらに判断することができ、累積アップデート値が臨界値以上である場合、累積アップデート値を利用し、ウェートをアップデートすることができる。
【００６０】
該累積アップデート値が臨界値以上であるか否かということが、一定周期によって判断され、ニューラルネットワーク装置で利用されるパラメータが、周期的にアップデートされることにより、ニューラルネットワークのオーバーヘッドが低減される。以下、図４を参照し、累積アップデート値が臨界値以上であるか否かを周期的に判断し、ウェートをアップデートする方法の例示について説明する。
【００６１】
図４は、一実施形態によるニューラルネットワークにおいて、パラメータを処理する方法の他の例を示すフローチャートである。図４を参照すれば、段階４１０において、時間ｔは、０に初期化され、アップデート周期（update＿period）及び臨界値（threshold）が事前に決定される。時間ｔは、個別アップデート値一つが計算される時間を基本単位として有することができる。例えば、ｔ＝４は、個別アップデート値４個が計算される時間を意味する。ただし、それに制限されるものではない。アップデート周期は、１でもあり、４でもあり、１以上の任意の適切な値を有することができる。該臨界値は、累積アップデート値がウェートに影響を与える大きさまで累積されているか否かを決定するための値でもある。
【００６２】
段階４２０において、ニューラルネットワーク装置は、ニューラルネットワークに含まれるノード間の連結関係に割り当てられるウェートのための個別アップデート値を計算することができる。該個別アップデート値は、傾斜下降法を利用し、ウェートをアップデートするためのグラディエント値でもある。
【００６３】
段階４３０において、ニューラルネットワーク装置は、個別アップデート値を累積バッファに累積し、時間ｔに１を加えることができる。段階４４０において、ニューラルネットワーク装置は、時間ｔがアップデート周期に対応するか否かを判断することができる。時間ｔがアップデート周期に対応しない場合、該ニューラルネットワーク装置は、段階４２０に戻り、さらに個別アップデート値を計算することができる。
【００６４】
時間ｔがアップデート周期に対応する場合、該ニューラルネットワーク装置は、段階４５０を遂行することができる。段階４５０において、ニューラルネットワーク装置は、累積バッファの累積アップデート値が臨界値以上であるか否かを判断することができる。累積アップデート値が臨界値より小さい場合、該ニューラルネットワーク装置は、段階４２０に戻り、さらに個別アップデート値を計算することができる。このとき、時間ｔは、０に初期化され、前述の段階が、次のアップデート周期の間に反復される。
【００６５】
累積アップデート値が臨界値以上である場合、該ニューラルネットワーク装置は、段階４６０を遂行することができる。段階４６０において、該ニューラルネットワーク装置は、累積アップデート値を利用し、ウェートをアップデートすることができる。例えば、該ニューラルネットワーク装置は、ウェートに、前述の数式４による有効アップデート値を加算することにより、ウェートをアップデートすることができる。また、該ニューラルネットワーク装置は、ウェートがアップデートされることにより、累積バッファの累積アップデート値から有効アップデート値を減算することができる。
【００６６】
図５は、一実施形態による固定小数点パラメータを利用するニューラルネットワークの例示を示す図面である。図５を参照すれば、固定小数点パラメータを利用するニューラルネットワークにおいて、ウェート５０は、第１符号ビット５１０、第１整数部５２０、第１小数部５３０及び第１小数点５４０によって構成された固定小数点値であり、累積アップデート値５５は、第２符号ビット５１５、第２小数部５３５及び第２小数点（図示せず）によって構成された固定小数点値でもある。一実施形態によれば、ウェート５０は、第１小数点５４０が移動可能な動的固定小数点（dynamic  fixed  point）値でもある。第１小数点５４０が移動されることにより、第１小数部５３０のビット個数（長さ）が調整される。
【００６７】
累積アップデート値５５は、整数部を含まないこともある。例えば、第１小数点５４０及び第２小数点が同一である場合、累積アップデート値５５は、ウェート５０に比べ、相当に小さい値のみを示すことができるので、整数部を含まず、小数部（すなわち、第２小数部５３５）のみを含んでもよい。一方、第２小数点は、第１小数点５４０と同一であってもよく、異なっていてもよい。該第２小数点は、状況によっても調整される。第２小数点の位置を調整する過程については図８Ａ及び図８Ｂを参照しながら詳細に説明される。
【００６８】
ウェート５０は、ｍビット（ｍは、任意の自然数）の固定小数点値でもあり、累積アップデート値５５は、ｎビット（ｎは、任意の自然数）の固定小数点値でもある。ｍ及びｎは、同一値であってもよく、異なる値であってもよい。ロープレシジョン・ナンバーシステムを利用するニューラルネットワークにおいて、ｍ及びｎそれぞれは、８または１６の値を有することができるが、それらに制限されるものではない。
【００６９】
累積アップデート値５５は、ウェート５０と比較し、相対的に小さい値を有することができる。従って、ウェート５０を示すビットそれぞれに対応する値は、累積アップデート値５５を示すビットそれぞれに対応する値より概して大きい。ただし、ウェート５０を示すビットのうちいずれか１つのビットに対応する値は、累積アップデート値５５を示すビットのうちいずれか１つのビットに対応する値と同一でもある。ウェート５０がアップデートされるためには、累積アップデート値５５の一部が、ウェート５０に合算されなければならないので、ウェート５０の下位ビットのうち一部は、累積アップデート値５５の上位ビットのうち一部とオーバーラップされる。
【００７０】
ウェート５０及び累積アップデート値５５の間でオーバーラップされるビット５５０がｋビット（ｋは、任意の自然数）であるとするとき、該ニューラルネットワークは、実質的に、（ｍ＋ｎ−２−ｋ）ビットの固定小数点データを利用するところと同一の効果を得ることができる。
【００７１】
ウェート５０及び累積アップデート値５５の間でオーバーラップされるビット５５０は、臨界値５６０を基準に決定される。臨界値５６０は、累積アップデート値５５がウェート５０に影響を与える大きさまで累積されているか否かを決定するための値でもある。例えば、臨界値５６０は、ウェート５０の最下位有効桁数に対応する値でもある。オーバーラップされるビット５５０は、累積アップデート値５５を示すビットのうち臨界値５６０以上の値を示すビットでもある。オーバーラップされるビット５５０は、ウェート５０の下位ビットのうち一部とオーバーラップされるので、ウェート５０と合算される。一方、ウェート５０の下位ビットは、第１小数部５３０を示すことができる。
【００７２】
個別アップデート値が累積され、累積アップデート値５５がウェート５０に影響を与える大きさまで大きくなれば、該ニューラルネットワーク装置は、累積アップデート値５５を利用し、ウェート５０をアップデートすることができる。例えば、ニューラルネットワーク装置は、累積アップデート値５５の第２小数部５３５を示すビットのうち、ウェート５０の第１小数部５３０とオーバーラップされる少なくとも１つのビット５５０が示す値をウェート５０に加算することができる。オーバーラップされる少なくとも１つのビット５５０が示す値は、有効アップデート値に対応する。
【００７３】
一方、累積アップデート値５５の第２小数部５３５を示すビットのうち、ウェート５０の第１小数部５３０とオーバーラップされる少なくとも１つのビット５５０が示す値をウェート５０に加算する過程において、パディング（padding）方式が適用される。以下、図６を参照し、ウェートに有効アップデート値を加算する過程について詳細に説明する。
【００７４】
図６は、一実施形態によるウェートに有効アップデート値を加算する過程の例示を示す図面である。図６を参照すれば、累積アップデート値６１０が図示されている。累積アップデート値６１０は、個別アップデート値が累積された値でもある。また、累積アップデート値６１０は、ｎビット固定小数点値でもある。累積アップデート値６１０を示すビットのうち一部が有効アップデート値６１４としても決定される。有効アップデート値６１４は、臨界値を基準に、上位方向に位置するビットのうち、符号ビット６１２を除いたビットに対応する。
【００７５】
一方、有効アップデート値６１４は、ｍビット固定小数点値であるウェート６３０に加算されるためにパディングされてもよい。パディングされた有効アップデート値６２０は、図６に図示されているように、符号ビット６１２、パディング部６１６及び有効アップデート値６１４を含んでもよい。パディング部６１６は、符号ビット６１２と同一値を示すビットでも充填される。パディングされた有効アップデート値６２０は、ウェート６３０と同一に、ｍビット固定小数点値になるので、ウェート６３０とも合算される。例えば、パディングされた有効アップデート値６２０は、符号ビット６１２により、ウェート６３０に対して加減される。
【００７６】
再び図５に戻り、来て、ニューラルネットワーク装置は、オーバーラップされる少なくとも１つのビット５５０が示す値を、ウェート５０に加算した後、オーバーラップされる少なくとも１つのビット５５０の値を、第２符号ビット５１５と同一値に初期化することができる。オーバーラップされる少なくとも１つのビット５５０が示す値がウェート５０に加算されたので、累積アップデート値５５は、その値ほど減算されなければならない。オーバーラップされる少なくとも１つのビット５５０の値が、第２符号ビット５１５と同一値に初期化されることにより、累積アップデート値５５は、オーバーラップされる少なくとも１つのビット５５０が示す値ほど減算される。
【００７７】
例えば、正数である累積アップデート値５５が、０１０００１１（符号ビット除外）であり、ウェート５０の第１小数部５３０とオーバーラップされる少なくとも１つのビット５５０が、累積アップデート値５５の上位２個ビットである０１であると仮定する。また、累積アップデート値５５の最上位ビットが、2-2桁を示すと仮定する。ウェート５０の第１小数部５３０とオーバーラップされる少なくとも１つのビット５５０  ０１が示す値である0×2-2+1×2-3=2-3がウェート５０に加算されることにより、累積アップデート値５５から2-3が減算されなければならない。累積アップデート値５５から2-3が減算されれば、累積アップデート値５５は、０００００１１になる。累積アップデート値５５の第２符号ビット５１５が０であるので（すなわち、累積アップデート値５５が正数である）、オーバーラップされる少なくとも１つのビット５５０は、０に初期化される。前述の例示と異なり、累積アップデート値５５が負である場合、オーバーラップされる少なくとも１つのビット５５０の値は、符号ビットと同一値である１にも初期化される。
【００７８】
図７は、一実施形態による固定小数点パラメータを利用するニューラルネットワークにおいて、パラメータを処理する方法の例示を示すフローチャートである。該ニューラルネットワークは、図５で説明したところのような固定小数点パラメータを利用するニューラルネットワークでもある。
【００７９】
図７を参照すれば、段階７１０において、時間ｔは、０に初期化され、モニタリング周期、アップデート周期及び臨界値が事前に決定される。段階７２０において、該ニューラルネットワーク装置は、ニューラルネットワークに含まれるノード間の連結関係に割り当てられるウェートのための個別アップデート値を計算することができる。
【００８０】
段階７３０において、ニューラルネットワーク装置は、個別アップデート値を累積バッファに累積し、時間ｔに１を加えることができる。段階７４０において、該ニューラルネットワーク装置は、時間ｔがモニタリング周期に対応するか否かを判断することができる。時間ｔがモニタリング周期に対応する場合、該ニューラルネットワーク装置は、段階７４５を遂行することができる。
【００８１】
段階７４５において、ニューラルネットワーク装置は、累積アップデート値または前記個別アップデート値をモニタリングし、モニタリング結果に基づいて、累積アップデート値の第２小数点の位置を調整することができる。該累積アップデート値の第２小数点の位置が調整されることにより、ウェート及び累積アップデート値の間でオーバーラップされるビットの個数が調整され、累積アップデート値の小数部のビット個数（長さ）が調整される。
【００８２】
該ニューラルネットワーク装置は、個別アップデート値及びウェートの相対的な大きさに基づいて、正確度損失を最小化させるか、あるいはオーバーヘッドを減らすために、第２小数点の位置を調整することができる。
【００８３】
例えば、ニューラルネットワーク装置は、個別アップデート値の平均値が、臨界値の１／ａ倍（ａは、任意の自然数）より小さい場合、第２小数点の位置を、累積アップデート値の下位ビット方向に移動させることができる。
【００８４】
該個別アップデート値の平均値が、臨界値の１／ａ倍より小さいというのは、該個別アップデート値が相当に小さい値を有していることを意味する。該累積アップデート値の第２小数点の位置が、下位ビット方向に移動されることにより、該累積アップデート値は、さらに小さい値を表現することができるようになり、該個別アップデート値が累積アップデート値にさらに正確に反映される。該個別アップデート値が正確に反映された累積アップデート値に基づいてウェートがアップデートされることにより、ニューラルネットワークの正確度損失は、最小化される。
【００８５】
また、該ニューラルネットワーク装置は、該個別アップデート値の平均値が、臨界値の１／ａ倍より大きい場合、第２小数点の位置を、累積アップデート値の上位ビット方向に移動させることができる。
【００８６】
該個別アップデート値の平均値が臨界値の１／ａ倍より大きいというのは、個別アップデート値が相対的に大きい値を有していることを意味する。該累積アップデート値の第２小数点の位置が、上位ビット方向に移動されることにより、該累積アップデート値を示すビットのうち無視してもよさそうな大きさを有するビットが省略される。それにより、該ニューラルネットワークのオーバーヘッドが低減される。ただし、前述の内容は、例示に過ぎず、該＋ニューラルネットワークは、多様な基準に基づいて、第２小数点の位置、または第２小数部のビット個数（長さ）を調整することができる。以下、図８Ａ及び図８Ｂを参照し、累積アップデート値の小数点位置を調整する過程について詳細に説明する。
【００８７】
図８Ａは、一実施形態による、累積アップデート値の小数点の位置を調整する過程の一例を示す図面であり、図８Ｂは、一実施形態による、累積アップデート値の小数点の位置を調整する過程の他の例を示す図面である。
【００８８】
図８Ａを参照すれば、モニタリングされた累積アップデート値８２が図示されているが、モニタリングされた累積アップデート値８２の現在累積された値８３０及び個別アップデート値８２０は、臨界値８１０に比べ、相当に小さな大きさしか有しないということが分かる。モニタリングされた累積アップデート値８２が示すことができる値の範囲に限界があるので、個別アップデート値８２０が、累積アップデート値８２に正確に反映されない。それにより、該ニューラルネットワークは、該累積アップデート値の小数点の位置を、累積アップデート値の下位ビット方向に移動させることができる。
【００８９】
小数点が移動された累積アップデート値８３は、現在累積された値８３０及び個別アップデート値８２０をさらに正確に反映させることができる。一方、小数点が移動されることにより、累積アップデート値８３がさらに表現可能な値に対応するビットは、０、または任意の数によっても充填される。
【００９０】
図８Ｂを参照すれば、モニタリングされた累積アップデート値８４が図示されているが、モニタリングされた累積アップデート値８４の個別アップデート値８４０が臨界値８１０よりは小さいとしても、相対的に大きい値を有し、現在累積された値８５０が臨界値８１０より大きい値を有するということが分かる。該ニューラルネットワーク装置は、累積アップデート値を示すビットのうち、無視してもよさそうな大きさを有するビットを省略させるために、累積アップデート値の小数点の位置を累積アップデート値の上位ビット方向に移動させることができる。それにより、アップデート周期の間、累積アップデート値がｍビットで表現することができる値を超えることが防止される。
【００９１】
再び図７に戻り、段階７４５において、ニューラルネットワーク装置は、累積アップデート値の第２小数点の位置を調整した後、段階７２０段階に戻り、さらに個別アップデート値を計算することができる。
【００９２】
一方、段階７４０において、時間ｔがモニタリング周期に対応しないと判断される場合、該ニューラルネットワーク装置は、段階７５０を遂行することができる。段階７５０において、該ニューラルネットワーク装置は、時間ｔがアップデート周期に対応するか否かを判断することができる。時間ｔがアップデート周期に対応しない場合、該ニューラルネットワーク装置は、段階７２０に戻り、さらに個別アップデート値を計算することができる。このとき、時間ｔは、０に初期化され、前述の段階が、次のアップデート周期の間に反復される。
【００９３】
時間ｔがアップデート周期に対応する場合、該ニューラルネットワーク装置は、段階７６０を遂行することができる。段階７６０において、該ニューラルネットワーク装置は、累積バッファの累積アップデート値が臨界値以上であるか否かを判断することができる。該累積アップデート値が臨界値より小さい場合、該ニューラルネットワーク装置は、段階７２０に戻り、さらに個別アップデート値を計算することができる。
【００９４】
該累積アップデート値が臨界値以上である場合、該ニューラルネットワーク装置は、段階７７０を遂行することができる。段階７７０において、該ニューラルネットワーク装置は、累積アップデート値を利用し、ウェートをアップデートすることができる。例えば、該ニューラルネットワーク装置は、ウェートに、前述の数式４による有効アップデート値を加算することにより、ウェートをアップデートすることができる。また、該ニューラルネットワーク装置は、ウェートがアップデートされることにより、累積バッファの累積アップデート値から有効アップデート値を減算することができる。該ニューラルネットワーク装置は、状況により、ウェートの小数点の位置、または小数部のビット個数（長さ）を調整することもできる。
【００９５】
図９は、一実施形態による浮動小数点パラメータを利用するニューラルネットワークの例示を示す図面である。図９を参照すれば、浮動小数点パラメータを利用するニューラルネットワークにおいて、ウェート９０は、第１符号ビット９１０、第１指数部９２０、第１仮数部９３０及び第１バイアス９４０によって構成された浮動小数点値であり、累積アップデート値９５は、第２符号ビット９１５、第２指数部９２５、第２仮数部９３５及び第２バイアス９４５によって構成された浮動小数点値でもある。
【００９６】
ウェート９０は、ｍビット（ｍは、任意の自然数）の浮動小数点値でもあり、累積アップデート値９５は、ｎビット（ｎは、任意の自然数）の浮動小数点値でもある。ｍ及びｎは、同一値でもあり、異なる値でもある。ロープレシジョン・ナンバーシステムを利用するニューラルネットワークにおいて、ｍ及びｎそれぞれは、８または１６の値を有することができるが、それに制限されるものではない。
【００９７】
累積アップデート値９５は、ウェート９０のための個別アップデート値が累積された値でもある。ただし、累積アップデート値９５は、制限されたビット個数を有する浮動小数点値の限界により、累積アップデート値９５の有効数字範囲に含まれる、個別アップデート値それぞれの実効値（effective  value）だけが累積された値でもある。
【００９８】
また、制限されたビット個数を有する浮動小数点値の限界により、ウェート９０の有効数字範囲に含まれる、累積アップデート値９５の実効値だけがウェート９０に加えられる。累積アップデート値９５の実効値は、累積アップデート値９５において、ウェート９０の有効桁数に合算可能な部分を意味する。
【００９９】
ウェート９０が累積アップデート値９５の実効値によってアップデートされることにより、累積アップデート値９５は、アップデートされた部分ほど減算される。制限されたビット個数を有する浮動小数点値の限界により、累積アップデート値９５は、アップデートされたウェートからウェート９０を減算した値と異なり得る。
【０１００】
一方、浮動小数点値は、バイアスが変更されることにより、動的に変更される。従って、浮動小数点値の指数部が同一であるとしても、バイアスにより、相対的に小さい値が表現され得る。ウェート９０の第１バイアス９４０と、累積アップデート値９５の第２バイアス９４５との相対的な差は、状況によって適切に調整される。
【０１０１】
図１０は、一実施形態による、浮動小数点パラメータを利用するニューラルネットワークにおいて、パラメータを処理する方法の例示を示すフローチャートである。該ニューラルネットワークは、図９で説明したような浮動小数点パラメータを利用するニューラルネットワークでもある。
【０１０２】
図１０を参照すれば、段階１０１０において、時間ｔは、０に初期化され、モニタリング周期、アップデート周期及び臨界値が事前に決定される。段階１０２０において、該ニューラルネットワーク装置は、該ニューラルネットワークに含まれるノード間の連結関係に割り当てられるウェートのための個別アップデート値を計算することができる。
【０１０３】
段階１０３０において、該ニューラルネットワーク装置は、個別アップデート値を累積バッファに累積し、時間ｔに１を加えることができる。段階１０４０において、ニューラルネットワーク装置は、時間ｔがモニタリング周期に対応するか否かを判断することができる。時間ｔがモニタリング周期に対応する場合、該ニューラルネットワーク装置は、段階１０４５を遂行することができる。
【０１０４】
段階１０４５において、該ニューラルネットワーク装置は、累積アップデート値または個別アップデート値をモニタリングし、モニタリング結果に基づいて、累積アップデート値の第２バイアスを調整することができる。該累積アップデート値の第２バイアスが調整されることにより、累積アップデート値が示すことができる値の範囲が調整される。
【０１０５】
該ニューラルネットワーク装置は、累積アップデート値及び臨界値の相対的な大きさに基づいて、正確度損失を最小化させるか、あるいはオーバーヘッドを減らすために、累積アップデート値の第２バイアスを調整することができる。
【０１０６】
例えば、該ニューラルネットワーク装置は、累積アップデート値の第２指数部が臨界値を超える場合、第２バイアスを増大させることができる。該累積アップデート値の第２指数部が臨界値を超えるということは、累積アップデート値が相対的に大きい値を有しているということを意味する。該累積アップデート値の第２バイアスが増大されることにより、該累積アップデート値を示すビットのうち無視してもよさそうな大きさを有するビットが省略される。それにより、該ニューラルネットワークのオーバーヘッドが低減される。
【０１０７】
また、該ニューラルネットワーク装置は、該累積アップデート値が、臨界値の１／ｂ倍（ｂは、任意の自然数）より小さい場合、第２バイアスを低減させることができる。累積アップデート値が、臨界値の１／ｂ倍より小さいということは、個別アップデート値が相当に小さい値を有していることを意味する。該累積アップデート値の第２バイアスが低減されることにより、該累積アップデート値は、さらに小さい値を表現することができるようになり、該個別アップデート値が累積アップデート値にさらに正確に反映される。該個別アップデート値が正確に反映された累積アップデート値により、ウェートがアップデートされることにより、該ニューラルネットワークの正確度損失は、最小化される。
【０１０８】
ニューラルネットワーク装置は、段階１０４５において、累積アップデート値の第２バイアスの位置を調整した後、段階１０２０段階に戻り、さらに個別アップデート値を計算することができる。
【０１０９】
一方、段階１０４０において、時間ｔがモニタリング周期に対応しないと判断される場合、ニューラルネットワーク装置は、段階１０５０を遂行することができる。段階１０５０において、ニューラルネットワーク装置は、時間ｔがアップデート周期に対応するか否かを判断することができる。時間ｔがアップデート周期に対応しない場合、ニューラルネットワーク装置は、段階１０２０に戻り、さらに個別アップデート値を計算することができる。このとき、時間ｔは、０に初期化され、前述の段階が、次のアップデート周期の間に反復される。
【０１１０】
時間ｔがアップデート周期に対応する場合、該ニューラルネットワーク装置は、段階１０６０を遂行することができる。段階１０６０において、該ニューラルネットワーク装置は、累積バッファの累積アップデート値が臨界値以上であるか否かを判断することができる。該累積アップデート値が臨界値より小さい場合、該ニューラルネットワーク装置は、段階１０２０に戻り、さらに個別アップデート値を計算することができる。
【０１１１】
該累積アップデート値が臨界値以上である場合、該ニューラルネットワーク装置は、段階１０７０を遂行することができる。段階１０７０において、該ニューラルネットワーク装置は、累積アップデート値を利用し、ウェートをアップデートすることができる。例えば、該ニューラルネットワーク装置は、ウェートに、前述の数式４による有効アップデート値を加算することにより、ウェートをアップデートすることができる。また、該ニューラルネットワーク装置は、ウェートがアップデートされることにより、累積バッファの累積アップデート値から有効アップデート値を減算することができる。該ニューラルネットワーク装置は、状況により、ウェートの小数点の位置、または小数部のビット個数（長さ）を調整することもできる。
【０１１２】
一方、図２、図４、図７及び図１０に図示されたニューラルネットワークにおいて、パラメータを処理する方法は、その方法を実行する命令語を含む１以上のプログラムが記録されたコンピュータで読み取り可能な記録媒体にも記録される。コンピュータで読み取り可能な可能記録媒体の例には、ハードディスク、フロッピィーディスク及び磁気テープのような磁気媒体（magnetic  media）；ＣＤ−ＲＯＭ（compact  disc  read  only  memory）、ＤＶＤ（digital  versatile  disc）のような光記録媒体（optical  media）；フロプティカルディスク（floptical  disk）のような磁気・光媒体（magneto-optical  media）；及びＲＯＭ（read-only  memory）、ＲＡＭ（random  access  memory）、フラッシュメモリのようなプログラム命令を保存して遂行するように特別に構成されたハードウェア装置が含まれる。プログラム命令語の例には、コンパイラによって作られるような機械語コードだけではなく、インタープリタなどを使用してコンピュータによって実行される高級言語コードを含む。
【０１１３】
図１１は、一実施形態によるニューラルネットワーク装置の構成を示すブロック図である。図１１を参照すれば、ニューラルネットワーク装置１１は、少なくとも１つのプロセッサ１１１０、及びメモリ１１２０を含んでもよい。図１１に図示されたニューラルネットワーク装置１１には、本実施形態と係わる構成要素だけが図示されている。従って、ニューラルネットワーク装置１１に、図１１に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれ得るということは、当業者に自明である。例えば、ニューラルネットワーク装置１１は、センサモジュール（図示せず）及び通信モジュール（図示せず）などをさらに含んでもよい。
【０１１４】
一方、ニューラルネットワーク装置１１は、図２ないし図１０のニューラルネットワーク装置に対応する。また、ニューラルネットワーク装置１１は、図２、図４、図７及び図１０に図示された方法を時系列的に処理することができる。従って、以下で省略された内容であるとしても、図２、図４、図７及び図１０の方法について、以上で記述された内容は、図１１のニューラルネットワーク装置１１によって遂行されるということが分かる。
【０１１５】
ニューラルネットワーク装置１１は、家電製品、モバイルコンピュータデバイス及びサーバのうち少なくとも一つに含まれるか、あるいは家電製品、モバイルコンピュータデバイス及びサーバのうち少なくとも一つに、有無線で連結されるようにも具現される。また、ニューラルネットワーク装置１１は、デバイスとサーバとの結合によっても具現される。ユーザの入力を受信するデバイスと、ニューラルネットワークを学習させるサーバとが別途に存在し、デバイスとサーバとの通信を介して推論が行われる。ここで、単一デバイスで推論が行われするが、前記例示に制限されるものではないということは言うまでもない。
【０１１６】
少なくとも１つのプロセッサ１１１０は、１または複数のプロセッサによっても具現される。例えば、少なくとも１つのプロセッサ１１１０は、多数の論理ゲートのアレイによって具現され、汎用的なマイクロプロセッサと、該マイクロプロセッサで実行されるプログラムが保存されたメモリの組み合わせによっても具現される。例えば、少なくとも１つのプロセッサ１１１０は、ＣＰＵ（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）、ＣＤ−ＲＯＭ、ブルーレイ（登録商標（Blu-ra））または他の光学ディスクストレージ、ＨＤＤ（hard  disk  drive）、ＳＳＤ（solid-state  drive）またはフラッシュメモリを含んでもよい。
【０１３３】
また、メモリ１１２０は、ニューラルネットワーク装置１１に含まれた少なくとも１つのプロセッサ１１１０が共有する内蔵メモリ、または少なくとも１つのプロセッサ１１１０を支援する複数の内蔵メモリをさらに含んでもよい。
【０１３４】
以上、実施形態について詳細に説明したが、本発明の権利範囲は、それらに限定されるものではなく、特許請求の範囲で定義している本発明の基本概念を利用した当業者の多くの変形、及び改良形態も、本発明の権利範囲に属する。
【産業上の利用可能性】
【０１３５】
本発明のニューラルネットワーク方法及びその装置は、例えば、情報処理関連の技術分野に効果的に適用可能である。
【符号の説明】
【０１３６】
１０      ニューラルネットワーク
３０      浮動小数点値
３１０，３１５  符号ビット
３２０    指数部
３３０    仮数部
３４０    バイアス
３５      固定小数点値８ビット固定小数点）
３２５    整数部
３３５    小数部
３４５    小数点
【図１】
2019079535.tif 000011
【図２】
2019079535.tif 000012
【図３Ａ】
2019079535.tif 000013
【図３Ｂ】
2019079535.tif 000014
【図３Ｃ】
2019079535.tif 000015
【図４】
2019079535.tif 000016
【図５】
2019079535.tif 000017
【図６】
2019079535.tif 000018
【図７】
2019079535.tif 000019
【図８Ａ】
2019079535.tif 000020
【図８Ｂ】
2019079535.tif 000021
【図９】
2019079535.tif 000022
【図１０】
2019079535.tif 000023
【図１１】
2019079535.tif 000024