(57)【要約】      （修正有）【課題】分類のためのニューラルネットワークにおいて、パラメータを処理する方法及び装置を提供する。【解決手段】分類のためのニューラルネットワークにおいて、パラメータを処理する方法は、入力データが分類されるクラスの個数に係わる情報を取得する段階と、取得された情報に基づき、入力データが各クラスに分類される可能性に係わる演算結果を出力する層（layer）のための精度を決定する段階と、決定された精度により、層においてパラメータを処理する段階と、を含んでよい。【選択図】図７
2019194851.tif 000002
【特許請求の範囲】
【請求項１】
分類のためのニューラルネットワークにおいて、パラメータを処理する方法であって、
入力データが分類されるクラス個数に係わる情報を取得する段階と、
前記の取得された情報に基づき、前記入力データが各クラスに分類される可能性に係わる演算結果を出力する層のための精度を決定する段階と、
前記の決定された精度により、前記層において、パラメータを処理する段階と、
を含む方法。
【請求項２】
前記決定する段階は、
前記クラス個数に比例するように、前記層のための精度を決定する段階
を含む、請求項１に記載の方法。
【請求項３】
前記決定する段階は、
前記クラス個数が既設定の閾値以上である場合、前記層のための精度を、前記ニューラルネットワーク内の他の層のための精度より高く決定する段階
を含む、請求項１に記載の方法。
【請求項４】
前記精度は、前記層で処理されるパラメータのビット幅を示す、請求項１ないし３のうちいずれか１項に記載の方法。
【請求項５】
前記層は、前記ニューラルネットワーク内の最終全結合層である、請求項１ないし４のうちいずれか１項に記載の方法。
【請求項６】
前記層は、ソフトマックス層及び損失層に結合され、
前記層は、前記ソフトマックス層から、前記演算結果に対するクロスエントロピー損失の勾配を入力される、請求項１ないし５のうちいずれか１項に記載の方法。
【請求項７】
前記パラメータは、前記層に入力される前記演算結果に対するクロスエントロピー損失の勾配、及び前記層の重みを含む、請求項１ないし５のうちいずれか１項に記載の方法。
【請求項８】
請求項１ないし７のうちいずれか１項に記載の方法をコンピュータに実行させるプログラム。
【請求項９】
分類のためのニューラルネットワークにおいて、パラメータを処理する装置であって、
少なくとも１つのプログラムを記録しているメモリと、
前記少なくとも１つのプログラムを実行することにより、入力データが分類されるクラス個数に係わる情報を取得し、前記の取得された情報に基づき、前記入力データが各クラスに分類される可能性に係わる演算結果を出力する層のための精度を決定し、前記の決定された精度により、前記層において、パラメータを処理するプロセッサと、
を含む装置。
【請求項１０】
前記プロセッサは、前記クラス個数に比例するように、前記層のための精度を決定する、請求項９に記載の装置。
【請求項１１】
前記プロセッサは、前記クラス個数が既設定の閾値以上である場合、前記層のための精度を、前記ニューラルネットワーク内の他の層のための精度より高く決定する、請求項９に記載の装置。
【請求項１２】
前記精度は、前記層で処理されるパラメータのビット幅を示す、請求項９ないし１１のうちいずれか１項に記載の装置。
【請求項１３】
前記層は、前記ニューラルネットワーク内の最終全結合層である、請求項９ないし１２のうちいずれか１項に記載の装置。
【請求項１４】
前記層は、ソフトマックス層及び損失層に結合され、
前記層は、前記ソフトマックス層から前記演算結果に対するクロスエントロピー損失の勾配を入力される、請求項９ないし１３のうちいずれか１項に記載の装置。
【請求項１５】
前記パラメータは、前記層に入力される前記演算結果に対するクロスエントロピー損失の勾配、及び前記層の重みを含む、請求項９ないし１３のうちいずれか１項に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分類のためのニューラルネットワークにおいて、パラメータを処理する方法及び装置に関する。
【背景技術】
【０００２】
ニューラルネットワークは、生物学的脳をモデリングしたコンピュータ科学的アーキテクチャ（computational  architecture）を参照する。最近、ニューラルネットワーク技術の発展により、多様な電子システムにおいて、ニューラルネットワーク装置を使用して入力データを分析し、有効な情報を抽出する研究が活発に進められている。
【０００３】
ニューラルネットワーク装置は、複雑な入力データに対する多量の演算を必要とする。ニューラルネットワーク装置が入力をリアルタイムで分析し、情報抽出を行うために、ニューラルネットワーク演算を効率的に処理することができる技術が要求される。例えば、ニューラルネットワーク装置の複雑な入力データ処理に必要な演算量を低減させながらも、正確度損失を最小化させることができる技術が要求される。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、分類のためのニューラルネットワークにおいて、パラメータを処理する方法及び装置を提供することにある。本実施形態に係る技術的課題は、前述のような技術的課題に限定されるものではなく、以下の実施形態から他の技術的課題が類推されるものである。
【課題を解決するための手段】
【０００５】
一側面により、分類のためのニューラルネットワークにおいて、パラメータを処理する方法は、入力データが分類されるクラスの個数に係わる情報を取得する段階と、取得された情報に基づき、入力データが各クラスに分類される可能性に係わる演算結果を出力する層（layer）のための精度を決定する段階と、決定された精度により、層においてパラメータを処理する段階と、を含んでよい。
【０００６】
他の側面により、分類のためのニューラルネットワークにおいて、パラメータを処理する装置は、少なくとも１つのプログラムを記録しているメモリと、少なくとも１つのプログラムを実行することにより、入力データが分類されるクラスの個数に係わる情報を取得し、取得された情報に基づき、入力データが各クラスに分類される可能性に係わる演算結果を出力する層のための精度を決定し、決定された精度により、層においてパラメータを処理するプロセッサを含んでよい。
【０００７】
さらに他の側面により、分類のためのニューラルネットワークにおいて、パラメータを処理する方法を具現化するためのプログラム、及び、該プログラムを記録したコンピュータ読み取り可能な記録媒体が提供される。
【発明の効果】
【０００８】
本発明によれば、ニューラルネットワーク装置は、ニューラルネットワーク内の全層に対して、一括して固定された精度を設定するのではなく、最終全結合（ＦＣ）層（last  FC  (fully  connected)  layer）のような出力層については、クラス個数を考慮した精度を設定するが、ニューラルネットワークのトレーニング／学習過程での正確度損失を最小化させることができる。
【図面の簡単な説明】
【０００９】
【図１】一部の実施形態によるニューラルネットワークの例示を示す図面である。
【図２】一実施形態によるニューラルネットワーク装置のハードウェア構成を図示したブロック図である。
【図３】分類のためのニューラルネットワークの一実施形態を示す図面である。
【図４】一実施形態による、分類のためのニューラルネットワーク内の各層の出力値を示す図面である。
【図５】分類のためのニューラルネットワークにおいて、精度を決定する実施形態を示す図面である。
【図６】一実施形態による電子システムを示すブロック図である。
【図７】一実施形態により、ニューラルネットワーク装置の動作方法について説明するための図面である。
【発明を実施するための形態】
【００１０】
以下、添付された図面を参照しながら、ただ例示のための実施形態について詳細に説明する。以下の説明は、実施形態を具体化させるためのものであるに過ぎず、発明の権利範囲を制限したり限定したりするものではないことは言うまでもない。詳細な説明及び実施形態から、当該技術分野の当業者が容易に類推することができることは、権利範囲に属すると解釈される。
【００１１】
本明細書で使用される「構成される」または「含む」というような用語は、明細書に記載されたさまざまな構成要素、またはさまざまな段階を必ずしもいずれも含むものであると解釈されるものではなく、そのうちの一部の構成要素または一部の段階は、含まれず、またはさらなる構成要素または段階をさらに含んでもよいと解釈されなければならない。
【００１２】
また、本明細書で使用される「第１」または「第２」のように序数を含む用語は、多様な構成要素についての説明に使用されうるが、このような構成要素は、このような用語によって限定されるものではない。このような用語は、１つの構成要素を他の構成要素と区別する目的のみに使用される。
【００１３】
本実施形態は、ニューラルネットワークにおいて、パラメータを処理する方法及び装置に係わるものであり、以下の実施形態が属する技術分野において当業者に周知である事項については、詳細な説明を省略する。
【００１４】
図１は、一部の実施形態によるニューラルネットワークの例示を示す図面である。図１を参照すると、一部の実施形態によるニューラルネットワーク１０が図示されている。ニューラルネットワーク１０は、入力層、隠れ層及び出力層を含む構造を有し、受信された入力データ（例えば、Ｉ１及びＩ２）を基に演算を実行し、その実行結果を基に、出力データ（例えば、Ｏ１及びＯ２）を生成することができる。
【００１５】
ニューラルネットワーク１０は、１個以上の隠れ層を含むディープニューラルネットワーク（ＤＮＮ：deep  neural  network）またはｎ層ニューラルネットワーク（n-layers  neural  network）でもある。例えば、図１に図示されているように、ニューラルネットワーク１０は、入力層（Ｌａｙｅｒ  １）、２個の隠れ層（Ｌａｙｅｒ  ２及びＬａｙｅｒ  ３）、及び出力層（Ｌａｙｅｒ  ４）を含むＤＮＮでもある。ＤＮＮは、畳み込みニューラルネットワーク（ＣＮＮ：convolutional  neural  network）、再帰型ニューラルネットワーク（ＲＮＮ：recurrent  neural  network）、ディープビリーフネットワーク（ＤＢＮ：deep  belief  network）、制限ボルツマンマシン（ＲＢＭ：restricted  Boltzmann  machine）などを含んでよいが、これらに限定されるものではない。
【００１６】
ニューラルネットワーク１０がＤＮＮ構造を有する場合、有効な情報を抽出することができるさらに多くの層を含むので、ニューラルネットワーク１０は、従来のニューラルネットワークより複雑なデータ集合を処理することができる。一方、ニューラルネットワーク１０は、４個の層を含むように図示されているが、これは、例示に過ぎず、ニューラルネットワーク１０は、より少なかったり多かったりする層を含んでもよい。また、ニューラルネットワーク１０は、図１に図示されたものとは異なる多様な構造の層を含んでもよい。例えば、ニューラルネットワーク１０は、ディープニューラルネットワークとして、畳み込み層、プーリング層、及び全結合（ＦＣ）層を含んでもよい。
【００１７】
ニューラルネットワーク１０に含まれる層それぞれは、「ニューロン」、「処理要素（ＰＥ：processing  element）」、「ユニット（unit）」、またはそれと類似した用語として知られる複数の人工ノード（artificial  node）を含んでもよい。例えば、図１に図示されているように、Ｌａｙｅｒ  １は、２個のノード、Ｌａｙｅｒ  ２は、３個のノードを含む。ただし、これは、例示に過ぎず、ニューラルネットワーク１０に含まれる層それぞれは、多様な個数のノードを含んでもよい。
【００１８】
ニューラルネットワーク１０に含まれる層それぞれに含まれるノードは、互いに結合され、データを交換することができる。例えば、１つのノードは、他のノードからデータを受信して演算することができ、この演算結果を、さらに他のノードに出力することができる。
【００１９】
ノードそれぞれの出力値は、アクティベーション（activation）とも呼ばれる。アクティベーションは、１ノードの出力値でありながら、次の層に含まれるノードの入力値でもある。一方、ノードそれぞれは、前の層に含まれるノードから受信されたアクティベーション、及び重みに基づき、自身のアクティベーションを決定することができる。重みは、各ノードでのアクティベーションを計算するために利用されるパラメータであり、ノード間の結合関係に割り当てられる値でもある。
【００２０】
ノードそれぞれは、入力を受け、アクティベーションを出力する演算ユニットでもあり、入力・出力をマッピングすることができる。例えば、σは、活性化関数であり、
【００２１】
【数１】
2019194851.tif 000003
は、（ｉ−１）番目の層に含まれるｋ番目のノードから、ｉ番目の層に含まれるｊ番目のノードへの重みであり、
【００２２】
【数２】
2019194851.tif 000004
は、ｉ番目の層に含まれるｊ番目のノードのバイアス（bias）値であり、
【００２３】
【数３】
2019194851.tif 000005
は、ｉ番目の層のｊ番目のノードのアクティベーションであるとすると、アクティベーション
【００２４】
【数４】
2019194851.tif 000006
は、以下のような式（１）により計算される。
【００２５】
【数５】
2019194851.tif 000007
図１に図示されているように、２番目の層（Ｌａｙｅｒ  ２）の最初のノードのアクティベーションは、
【００２６】
【数６】
2019194851.tif 000008
でも表現される。また、
【００２７】
【数７】
2019194851.tif 000009
は、式（１）により、
【００２８】
【数８】
2019194851.tif 000010
の値を有することができる。ただし、前述の式（１）は、ニューラルネットワークにおいてデータを処理するために利用されるアクティベーション及び重みについて説明するための例示であるに過ぎず、これに限定されるものではない。アクティベーションは、前の層から受信されたアクティベーションの重み付け和への活性化を適用した値をして、正規化線形ユニット（ＲｅＬＵ：rectified  linear  unit）を通過させることによって取得される値でもある。
【００２９】
前述のように、ニューラルネットワーク１０においては、多くのデータ集合が相互結合された複数のチャンネル間で交換され、層を経ながら、多くの演算過程を経る。したがって、複雑な入力データ処理に必要な演算量を低減させながらも、正確度損失を最小化させることができる技術が要求される。
【００３０】
図２は、一実施形態によるニューラルネットワーク装置のハードウェア構成を図示したブロック図である。
【００３１】
ニューラルネットワーク装置１００は、プロセッサ１１０及びメモリ１２０を含む。図２に図示されたニューラルネットワーク装置１００には、本実施形態と係わる構成要素だけが図示されている。したがって、ニューラルネットワーク装置１００は、図２に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいことは、当業者に自明である。
【００３２】
ニューラルネットワーク装置１００は、ニューラルネットワークを生成したり、ニューラルネットワークをトレーニングしたり（または学習させたり）、浮動小数点タイプのニューラルネットワークを、固定小数点タイプのニューラルネットワークに量子化させたり、ニューラルネットワークを再トレーニングしたりする機能のような多様な処理機能を有するコンピュータデバイスに該当する。例えば、ニューラルネットワーク装置１００は、ＰＣ（personal  computer）、サーバデバイス、モバイルデバイスのような多様なデバイスにおいても具現化される。また、ニューラルネットワーク装置１００は、ニューラルネットワーク駆動のためのハードウェアアクセラレータを含んでもよい。ハードウェアアクセラレータは、例えば、ニューラルネットワーク駆動のための専用モジュールであるニューラル処理ユニット（ＮＰＵ：neural  processing  unit）、テンソル処理ユニット（ＴＰＵ：tensor  processing  unit）、ニューラルエンジンなどに該当するが、これらに限定されるものではない。
【００３３】
プロセッサ１１０は、ニューラルネットワーク装置１００を制御するための全般的な機能を実行する役割を担う。例えば、プロセッサ１１０は、ニューラルネットワーク装置１００内のメモリ１２０に記録されたプログラムを実行することにより、ニューラルネットワーク装置１００を全般的に制御する。プロセッサ１１０は、ニューラルネットワーク装置１００内に具備されたＣＰＵ（central  processing  unit）、ＧＰＵ（graphics  processing  unit）、ＡＰ（application  processor）などによっても具現化されるが、これらに限定されるものではない。
【００３４】
メモリ１２０は、ニューラルネットワーク装置１００内で処理される各種データを記録するハードウェアであり、例えば、メモリ１２０は、ニューラルネットワーク装置１００で処理されたデータ及び処理されるデータを記録することができる。また、メモリ１２０は、ニューラルネットワーク装置１００によって実行されるアプリケーション、ドライバなどを記録することができる。メモリ１２０は、ＤＲＡＭ（dynamic  random  access  memory）でもあるが、これに限定されるのではない。メモリ１２０は、揮発性メモリ及び不揮発性メモリのうち少なくとも一つを含んでもよい。
【００３５】
プロセッサ１１０は、与えられた初期ニューラルネットワークを反復的にトレーニングする（学習させる）ことにより、トレーニングされたニューラルネットワークを生成することができる。このとき、プロセッサ１１０は、既設定の精度により、ニューラルネットワークをトレーニングすることができる。言い換えれば、プロセッサ１１０は、トレーニング時、ニューラルネットワークで処理されるパラメータの精度を設定することができる。精度は、ニューラルネットワーク内のパラメータを、どれだけ詳細に処理することができるかという程度を意味する。精度は、ニューラルネットワーク内のパラメータのビット幅（bitwidth）とも説明される。例えば、３２ビット浮動小数点精度パラメータのような高精度を有するパラメータが存在し、８ビット固定小数点精度パラメータのような低精度を有するパラメータが存在する。ここで、パラメータは、ニューラルネットワークの入出力アクティベーション、重み、バイアスのようなニューラルネットワークに入出力される多種のデータを含んでもよい。
【００３６】
プロセッサ１１０は、低精度により、ニューラルネットワークのパラメータを処理することができる。言い換えれば、プロセッサ１１０は、従来のニューラルネットワークより相対的に少ないビット幅を有するデータを、パラメータとして利用することにより、精度を低くしながら演算量を低減させることができる。例えば、３２ビットまたは６４ビットの浮動小数点または固定小数点データを利用する従来のニューラルネットワークとは異なり、低精度により、プロセッサ１１０は、ニューラルネットワークにおいて、８ビットまたは１６ビットの浮動小数点または固定小数点データをパラメータとして利用することができる。ただし、ニューラルネットワーク内の全層に共通して低精度を設定する場合、ニューラルネットワーク内の一部の層の特性上、正確度損失が大きく発生することがあり、ニューラルネットワーク内の一部の層については、精度を高く設定して正確度損失を最小化させる必要がある。
【００３７】
プロセッサ１１０は、分類のためのニューラルネットワークを生成することができ、分類のためのニューラルネットワークをトレーニングすることができる。分類のためのニューラルネットワークは、入力データがクラスのうちどのクラスに該当するかということに係わる演算結果を出力することができる。具体的には、分類のためのニューラルネットワークは、入力データがクラスそれぞれに該当する可能性に係わる演算結果を、クラスそれぞれに係わる結果値として出力することができる。また、分類のためのニューラルネットワークは、ソフトマックス層（softmax  layer）及び損失層を含んでもよい。ソフトマックス層は、クラスそれぞれに係わる結果値を確率値に変換することができ、損失層は、学習のための目的関数として損失を演算することができる。
【００３８】
図３は、分類のためのニューラルネットワークの一実施形態を示している。
【００３９】
分類のためのニューラルネットワーク３００は、隠れ層３１０、ＦＣ層３２０、ソフトマックス層３３０、及び損失層３４０を含んでよい。隠れ層３１０のうち一部は、ＦＣ層にもなるが、ＦＣ層３２０は、ニューラルネットワーク３００の最終ＦＣ層にもなる。言い換えれば、ＦＣ層３２０は、ニューラルネットワーク３００のＦＣ層のうち最終順序のＦＣ層にもなる。
【００４０】
入力データがニューラルネットワーク３００に入力される場合、隠れ層３１０及びＦＣ層３２０の順次的な演算過程を経た後、ＦＣ層３２０は、入力データが各クラスに分類される可能性に係わる演算結果ｓを出力することができる。言い換えれば、ＦＣ層３２０は、クラスそれぞれに係わる演算結果ｓとして、入力データが、当該クラスに分類される可能性に係わる結果値を出力することができる。具体的には、ＦＣ層３２０は、クラスそれぞれに対応するノードを含み、ＦＣ層３２０のノードそれぞれは、クラスそれぞれに分類される可能性に係わる結果値を出力することができる。例えば、ニューラルネットワークが、５個のクラスを対象とする分類作業のために具現化される場合、ＦＣ層の第１ノードないし第５ノードそれぞれの出力値は、入力データが、第１クラスないし第５クラスそれぞれに分類される可能性を示す結果値でもある。
【００４１】
ＦＣ層３２０は、演算結果ｓを、ソフトマックス層３３０に出力することができ、ソフトマックス層３３０は、演算結果ｓを確率値ｙに変換することができる。言い換えれば、ソフトマックス層３３０は、入力データが各クラスに分類される可能性に係わる結果値を正規化し、確率値ｙを生成することができる。次に、ソフトマックス層３３０は、確率値ｙを損失層３４０に出力することができ、損失層３４０は、確率値ｙに基づいて、演算結果ｓのクロス（交差）エントロピー損失を計算することができる。言い換えれば、損失層３４０は、演算結果ｓの誤差（error）を示すクロスエントロピー損失を計算することができる。
【００４２】
例えば、ソフトマックス層３３０は、下記の式（２）を利用し、演算結果ｓを確率値ｙに変換することができ、損失層３４０は、下記の式（３）を利用し、演算結果ｓのクロスエントロピー損失Ｌを計算することができる。
【００４３】
【数９】
2019194851.tif 000011
式（２）及び式（３）において、ｓｉは、ＦＣ層３２０のｉ番目のノードの出力値（すなわち、クラスのうちｉ番目のクラスに係わる結果値）を示し、ｙｉは、ソフトマックス層３３０のｉ番目のノードの出力値（すなわち、クラスのうちｉ番目のクラスに係わる確率値）を示し、Ｎｃは、クラスの個数を示し、ｔｉは、ｉ番目のクラスに係わるＧＴ（ground  truth）ラベルにもなる。
【００４４】
次に、バックプロパゲーション学習過程として、損失層３４０を経て、ソフトマックス層３３０は、クロスエントロピー損失Ｌの勾配を計算することができる。
【００４５】
例えば、ソフトマックス層３３０は、下記の式（４）を利用し、クロスエントロピー損失Ｌの勾配
【００４６】
【数１０】
2019194851.tif 000012
を計算することができる。
【００４７】
【数１１】
2019194851.tif 000013
式（４）において、ｓｉは、ＦＣ層３２０のｉ番目のノードの出力値（すなわち、クラスのうちｉ番目のクラスに係わる結果値）を示し、ｙｉは、ソフトマックス層３３０のｉ番目のノードの出力値（すなわち、クラスのうちｉ番目のクラスに係わる確率値）を示し、Ｎｃは、クラスの個数を示し、ｔｉは、ｉ番目のクラスに係わるＧＴラベルにもなる。
【００４８】
次に、ＦＣ層３２０において、クロスエントロピー損失Ｌの勾配に基づいた学習過程が行われる。例えば、勾配降下法により、ＦＣ層３２０の重みがアップデートされる。また、隠れ層３１０においても、連鎖的な学習過程が行われる。
【００４９】
図４は、一実施形態による、分類のためのニューラルネットワーク内の各層の出力値を示している。
【００５０】
ニューラルネットワーク内の各層においては、既設定の精度による値が出力される。具体的には、図４について述べると、ニューラルネットワーク内の各層の出力値は、量子化されたレベル（quantized  levels）にも分布される。例えば、既設定の精度が３ビットのビット幅である場合、出力値は、２３個の量子化されたレベルにも分布される。
【００５１】
図４の上側グラフについて述べると、最終ＦＣ層であるＦＣ層３２０の出力値（ｓｉ）が、０を中心に量子化されたレベルに分布される一方、ソフトマックス層３３０の出力値（ｙｉ）は、正規化された確率値であるために、１／（クラス個数Ｎｃ）を中心に量子化されたレベルにも分布される。例えば、クラス個数が２である場合、ソフトマックス層３３０の出力値は、１／２を中心に量子化されたレベルにも分布され、クラス個数が１０００である場合、ソフトマックス層３３０の出力値は、１／１０００を中心に量子化されたレベルにも分布される。
【００５２】
図４の下側グラフについて述べると、ソフトマックス層３３０の出力値である、ＦＣ層３２０に入力されるクロスエントロピー損失の勾配
【００５３】
【数１２】
2019194851.tif 000014
が図示される。式（４）による勾配の特性上、ＧＴラベルに該当するクラスに係わる勾配は、−１と０との間の値を有することができるが、異なるクラスに係わる勾配は０と１との間の値を有することができる。特に、クラス個数が多いほど、異なるクラスに係わる勾配は、０に密接した値を有することができる。
【００５４】
ＦＣ層３２０に入力される勾配は、既設定の精度による値を有するようにも処理される。言い換えれば、ＦＣ層３２０に入力される勾配は、既設定のビット幅による量子化されたレベルにも調整される。ただし、クラス個数が多い場合、勾配が量子化されたレベルに調整される過程において、ＧＴラベルに該当するクラスに係わる勾配は、−１にも調整されるが、異なるクラスに係わる勾配は、いずれも０にも調整される。例えば、図４の上側右グラフについて述べると、クラス個数が２である場合、ＧＴラベルに該当しないクラスに係わる勾配は、０と１との間のレベルにも調整されるが、クラス個数が１０００である場合、ＧＴラベルに該当しないクラスに係わる勾配は、いずれも０にも調整される。したがって、クラス個数が多い場合、クラス全体に係わる勾配の総和が負値に向けてバイアスされ（biased）、結果として、ニューラルネットワーク３００の学習またはトレーニングに否定的な影響を及ぼしてしまう。
【００５５】
したがって、ニューラルネットワーク３００内の全層に一括して固定された精度（特に、低精度）を設定するのではなく、ＦＣ層３２０については、クラス個数を考慮して精度を設定することが要求される。
【００５６】
再び図２を参照すると、プロセッサ１１０は、クラス個数に係わる情報に基づき、入力データが各クラスに分類される可能性に係わる演算結果を出力する層（以下、説明の便宜のために、「出力層」と短くして呼ぶ）のための精度を決定することができる。例えば、図３を参照すると、出力層は、最終ＦＣ層であるＦＣ層３２０にもなる。また、出力層は、ソフトマックス層及び損失層にも結合される。
【００５７】
まず、プロセッサ１１０は、入力データが分類されるクラスの個数に係わる情報を取得することができる。一実施形態により、クラス個数は、出力層のノードの個数とも同一であるが、プロセッサ１１０は、出力層のノードの個数を確認し、クラス個数に係わる情報を取得することができる。他の実施形態により、プロセッサ１１０は、ユーザ入力に基づき、クラス個数に係わる情報を取得することができる。
【００５８】
次に、プロセッサ１１０は、取得されたクラスの個数に係わる情報に基づき、出力層のための精度を決定することができる。
【００５９】
一実施形態により、プロセッサ１１０は、クラス個数に比例するように、出力層のための精度を決定することができる。言い換えれば、プロセッサ１１０は、クラス個数が多くなるほど、出力層のための精度がより高い精度になるように、出力層のための精度を決定することができる。例えば、クラス個数が１０個である場合、プロセッサ１１０は、出力層のための精度を、８ビットのビット幅に決定することができ、クラス個数が１００個である場合、プロセッサ１１０は、出力層のための精度を、１１ビットのビット幅に決定することができる。
【００６０】
他の実施形態により、プロセッサ１１０は、下記の式（５）により、出力層のための精度を決定することができる。すなわち、プロセッサ１１０は、出力層のための精度として、出力層に適用されるビット幅を決定することができる。
【００６１】
【数１３】
2019194851.tif 000015
式（５）において、
【００６２】
【数１４】
2019194851.tif 000016
は、クラスのサイズ（すなわち、クラスの個数）を示し、αは、既設定のバイアスを示し、βは、比例定数を示す。例えば、αが４に設定され、βが１に設定され、クラスの個数が１０である場合、プロセッサ１１０は、出力層のための精度を、７．３２ビット以上のビット幅に決定することができる。また、αが４に設定され、クラスの個数が１００である場合、プロセッサ１１０は、出力層のための精度を、１０．６４ビット以上のビット幅に決定することができる。また、αが４に設定され、クラスの個数が１０００である場合、プロセッサ１１０は、出力層のための精度を、１４ビット以上のビット幅に決定することができる。
【００６３】
さらに他の実施形態により、プロセッサ１１０は、クラス個数が既設定の閾値以上である場合、出力層のための精度を、ニューラルネットワーク内の他の層のための精度より高く決定することができる。例えば、クラス個数が１０個以上である場合、プロセッサ１１０は、出力層のための精度を、ニューラルネットワーク内の他の層のための精度である８ビットのビット幅より高く決定することができる。
【００６４】
プロセッサ１１０は、既決定の精度により、出力層において、パラメータを処理することができる。プロセッサ１１０は、出力層のパラメータが、既決定の精度を有するように処理することができ、既決定の精度を有するパラメータを介して、ニューラルネットワークのトレーニング／学習過程を実行することができる。出力層のパラメータは、出力層に入力されるクロスエントロピー損失の勾配を含んでもよい。したがって、プロセッサ１１０は、出力層に入力されるクロスエントロピー損失の勾配を、既決定のビット幅による量子化されたレベルに調整することができ、調整された勾配を介して、ニューラルネットワークのトレーニング／学習過程を実行することができる。また、出力層のパラメータは、出力層の重み及びアクティベーションをさらに含んでもよい。
【００６５】
したがって、ニューラルネットワーク装置１００は、ニューラルネットワーク内の全層に対して、一括して固定された精度を設定するのではなく、最終ＦＣ層のような出力層については、クラス個数を考慮した精度を設定するが、ニューラルネットワークのトレーニング／学習過程での正確度損失を最小化させることができる。特に、ニューラルネットワーク装置１００は、ニューラルネットワークの出力層については、クラス個数を考慮し、高精度によって、パラメータを処理することができつつも、ニューラルネットワークの他の層については、低精度によって、ニューラルネットワークのパラメータを処理するが、一括的な低精度設定によって発生しうる正確度損失を最小化させることができる。
【００６６】
図５は、分類のためのニューラルネットワークにおいて、精度を決定する実施形態を示す。
【００６７】
ニューラルネットワーク装置１００は、分類のためのニューラルネットワーク３００のクラスサイズに係わる情報を取得することができる。すなわち、ニューラルネットワーク装置１００は、分類のためのニューラルネットワーク３００内において、入力データが分類されるクラス個数に係わる情報を取得することができる。ニューラルネットワーク装置１００は、最終ＦＣ層であるＦＣ層３２０のノードの個数を確認し、クラス個数に係わる情報を取得することができる。
【００６８】
ニューラルネットワーク装置１００は、取得されたクラス個数に係わる情報に基づき、出力層であるＦＣ層３２０のための精度を決定することができる。ニューラルネットワーク装置１００は、クラス個数に比例するように、ＦＣ層３２０のための精度を決定することができる。例えば、クラス個数が１０個である場合、ニューラルネットワーク装置１００は、ＦＣ層３２０のための精度を、１０ビットのビット幅に決定することができ、クラス個数が１０００個である場合、ニューラルネットワーク装置１００は、ＦＣ層３２０のための精度を、１６ビットのビット幅に決定することができる。
【００６９】
ニューラルネットワーク装置１００は、既決定の精度により、ＦＣ層３２０において、パラメータを処理することができる。一実施形態により、ニューラルネットワーク装置１００は、ソフトマックス層３３０から出力され、ＦＣ層３２０に入力されるクロスエントロピー損失の勾配が、既決定の精度を有するように処理することができ、既決定の精度を有する勾配を介して、ニューラルネットワーク３００の学習／トレーニングを進めることができる。
【００７０】
図６は、一実施形態による電子システムを示すブロック図である。図６を参照すると、電子システム６００は、ニューラルネットワークを基に、入力データをリアルタイムで分析して有効な情報を抽出し、抽出された情報を基に、状況判断を行ったり、電子システム６００が搭載される電子デバイスの構成を制御したりすることができる。例えば、電子システム６００は、ドローン、先進運転支援システム（ＡＤＡＳ：advanced  driver  assistance  system）のようなロボット装置、スマートＴＶ（television）、スマートフォン、医療デバイス、モバイルデバイス、映像表示デバイス、計測デバイス、ＩｏＴデバイスなどにも適用され、それ以外にも、多様な電子デバイスのうち少なくとも一つに搭載される。
【００７１】
電子システム６００は、プロセッサ６１０、ＲＡＭ６２０、ニューラルネットワーク装置６３０、メモリ６４０、センサモジュール６５０及び通信モジュール６６０を含んでよい。電子システム６００は、入出力モジュール、セキュリティモジュール、電力制御装置などをさらに含んでもよい。電子システム６００のハードウェア構成のうち一部は、少なくとも１つの半導体チップにも搭載される。ニューラルネットワーク装置６３０は、前述のニューラルネットワーク装置１００もしくはニューラルネットワーク専用ハードウェアアクセラレータ自体、またはそれらを含む装置でもある。
【００７２】
プロセッサ６１０は、電子システム６００の全般的な動作を制御する。プロセッサ６１０は、１つのプロセッサコアまたは複数のプロセッサコアを含んでよい。プロセッサ６１０は、メモリ６４０に記録されたプログラム及び／またはデータを処理したり実行したりすることができる。一実施形態において、プロセッサ６１０は、メモリ６４０に記録されたプログラムを実行することにより、ニューラルネットワーク装置６３０の機能を制御することができる。プロセッサ６１０は、ＣＰＵ、ＧＰＵ、ＡＰなどによっても具現化される。
【００７３】
ＲＡＭ６２０は、プログラム、データまたは命令を一時的に記録することができる。例えば、メモリ６４０に記録されたプログラム及び／またはデータは、プロセッサ６１０の制御コードまたは起動コードにより、ＲＡＭ６２０に一時的に記録される。ＲＡＭ６２０は、ＤＲＡＭまたはＳＲＡＭ（static  random  access  memory）などのメモリによっても具現化される。
【００７４】
ニューラルネットワーク装置６３０は、受信された入力データを基に、ニューラルネットワークの演算を実行し、その実行結果を基に、情報信号を生成することができる。ニューラルネットワークは、ＣＮＮ、ＲＮＮ、ＤＢＮ、ＲＢＭなどを含んでよいが、これらに限定されるものではない。ニューラルネットワーク装置６３０は、前述の分類のためのニューラルネットワークを駆動するハードウェアとして、ニューラルネットワーク専用ハードウェアアクセラレータに該当する。
【００７５】
情報信号は、音声認識信号、オブジェクト認識信号、映像認識信号、生体情報認識信号のような多様な認識信号のうち一つを含んでよい。例えば、ニューラルネットワーク装置６３０は、ビデオストリームに含まれるフレームデータを入力データとして受信し、フレームデータから、フレームデータが示すイメージに含まれるオブジェクトに係わる認識信号を生成することができる。しかしながら、これに限定されるものではなく、電子システム６００が搭載される電子装置の種類または機能により、ニューラルネットワーク装置６３０は、多様な入力データを受信することができ、このような入力データによる認識信号を生成することができる。
【００７６】
メモリ６４０は、データを記録するための記録場所であり、ＯＳ（operating  system）、各種プログラム及び各種データを記録することができる。一実施形態において、メモリ６４０は、ニューラルネットワーク装置６３０の演算実行過程で生成される中間結果、例えば、出力フィーチャマップを、出力フィーチャリスト形態または出力フィーチャマトリックス形態で記録することができる。一実施形態において、メモリ６４０には、圧縮された出力フィーチャマップが記録されることが可能である。また、メモリ６４０は、ニューラルネットワーク装置６３０で利用される量子化されたニューラルネットワークデータ、例えば、パラメータ、重みマップまたは重みリストを記録することができる。
【００７７】
メモリ６４０は、ＤＲＡＭでもあるが、これに限定されるものではない。メモリ６４０は、揮発性メモリ及び不揮発性メモリのうち少なくとも一つを含んでもよい。不揮発性メモリは、ＲＯＭ（read-only  memory）、ＰＲＯＭ（programmable  read-only  memory）、ＥＰＲＯＭ（electrically  programmable  read-only  memory）、ＥＥＰＲＯＭ（electrically  erasable  programmable  read-only  memory）、フラッシュメモリ、ＰＲＡＭ（phase-change random  access  memory）、ＭＲＡＭ（magnetic  random  access  memory）、ＲＲＡＭ（登録商標）、ＦＲＡＭ（登録商標）などを含む。揮発性メモリは、ＤＲＡＭ、ＳＲＡＭ、ＳＤＲＡＭなどを含む。一実施形態において、メモリ６４０は、ＨＤＤ（hard  disk  drive）、ＳＳＤ（solid  state  drive）、ＣＦ、ＳＤ、micro−ＳＤ、mini−ＳＤ、ｘＤ及びMemory  Stickのうち少なくとも一つを含んでよい。
【００７８】
センサモジュール６５０は、電子システム６００が搭載される電子装置周辺の情報を収集することができる。センサモジュール６５０は、電子装置の外部から、信号（例えば、映像信号、音声信号、磁気信号、生体信号、タッチ信号など）をセンシングしたり受信したりし、センシングまたは受信された信号をデータに変換することができる。そのために、センサモジュール６５０は、センシング装置、例えば、マイク、撮像装置、イメージセンサ、ＬＩＤＡＲ（light  detection  and  ranging）センサ、超音波センサ、赤外線センサ、バイオセンサ及びタッチセンサのような多様なセンシング装置のうち少なくとも一つを含んでよい。
【００７９】
センサモジュール６５０は、変換されたデータをニューラルネットワーク装置６３０に、入力データとして提供することができる。例えば、センサモジュール６５０は、イメージセンサを含み、電子装置の外部環境を撮影し、ビデオストリームを生成し、ビデオストリームの連続するデータフレームを、ニューラルネットワーク装置６３０に入力データとして順に提供することができる。しかしながら、これに限定されるものではなく、センサモジュール６５０は、多様なデータをニューラルネットワーク装置６３０に提供することができる。
【００８０】
通信モジュール６６０は、外部装置と通信することができる多様な有線または無線のインターフェースを具備することができる。例えば、通信モジュール６６０は、有線ローカルエリアネットワーク（ＬＡＮ：local  area  network）、Ｗｉ−Ｆｉ（登録商標）のような無線ローカルエリアネットワーク（ＷＬＡＮ：wireless  local  area  network）、ブルートゥース（登録商標）のような無線パーソナルエリアネットワーク（ＷＰＡＮ：wireless  personal  area  network）、無線ＵＳＢ（wireless  universal  serial  bus）、Zigbee（登録商標）、ＮＦＣ（near  field  communication）、ＲＦＩＤ（radio  frequency  identification）、ＰＬＣ（power  line  communication）、または３Ｇ（3rd  generation）・４Ｇ（4th  generation）・ＬＴＥ（long  term  evolution）のような移動通信網に接続可能な通信インターフェースなどを含んでよい。
【００８１】
図７は、一実施形態による、ニューラルネットワーク装置の動作方法について説明するための図面である。図７に図示された方法は、図２のニューラルネットワーク装置１００、または図６の電子システムの各構成要素によって実行され、重複説明については、省略する。
【００８２】
段階Ｓ７１０において、ニューラルネットワーク装置１００は、入力データが分類されるクラス個数に係わる情報を取得することができる。一実施形態により、ニューラルネットワーク装置１００は、入力データが各クラスに分類される可能性に係わる演算結果を出力する層のノードの個数を確認し、クラス個数に係わる情報を取得することができる。他の実施形態により、ニューラルネットワーク装置１００は、ユーザ入力に基づき、クラス個数に係わる情報を取得することができる。
【００８３】
段階Ｓ７２０において、ニューラルネットワーク装置１００は、Ｓ７１０において取得された情報に基づき、入力データが各クラスに分類される可能性に係わる演算結果を出力する層（以下、出力層）のための精度を決定することができる。一実施形態により、ニューラルネットワーク装置１００は、クラス個数に比例するように、出力層のための精度を決定することができる。他の実施形態により、ニューラルネットワーク装置１００は、前述の式（４）により、出力層のための精度を決定することができる。さらに他の実施形態により、ニューラルネットワーク装置１００は、クラス個数が既設定の閾値以上である場合、出力層のための精度を、ニューラルネットワーク内の他の層のための精度より高く決定することができる。
【００８４】
段階Ｓ７３０において、ニューラルネットワーク装置１００は、Ｓ７２０において決定された精度により、層において、パラメータを処理することができる。ニューラルネットワーク装置１００は、出力層のパラメータが、既決定の精度を有するように処理することができ、既決定の精度を有するパラメータを介して、ニューラルネットワークのトレーニング／学習過程を実行することができる。
【００８５】
前述の実施形態による装置は、プロセッサ、プログラムデータを記録して実行するメモリ、ディスクドライブのような永続的ストレージ、外部装置と通信する通信ポート、タッチパネル・キー・ボタンのようなユーザインターフェース装置などを含んでよい。ソフトウェアモジュールまたはアルゴリズムによって具現化される方法は、プロセッサ上で実行可能なコンピュータ読み取り可能なコードまたはプログラム命令として、コンピュータ読み取り可能な記録媒体にも記録される。ここで、コンピュータ読み取り可能な記録媒体として、磁気記録媒体（例えば、ＲＯＭ、ＲＡＭ、フロッピー（登録商標）ディスク、ハードディスクなど）、及び光記録媒体（例えば、ＣＤ−ＲＯＭ（compact  disc  read-only  memory）、ＤＶＤ（digital  versatile  disc））などがある。コンピュータ読み取り可能な記録媒体は、ネットワークに接続されたコンピュータシステムに分散され、分散方式で、コンピュータ読み取り可能なコードが記録されて実行される。このようなコードは、コンピュータにより読み取り可能であり、メモリに記録され、プロセッサにより実行される。
【００８６】
本実施形態は、機能的なブロック構成、及び多様な処理段階によっても示される。そのような機能ブロックは、特定の機能を実行する多様な個数のハードウェア構成または／及びソフトウェア構成によっても具現化される。例えば、一実施形態は、１個以上のマイクロプロセッサの制御、または他の制御装置により、多様な機能を実行することができる、メモリ、プロセシング、ロジック（logic）、ルックアップテーブル（look-up  table）のような直接回路構成を採用することができる。構成要素がソフトウェアプログラミングまたはソフトウェア要素でも実行されるということと類似して、本実施形態は、データ構造、プロセス、ルーチン、または他のプログラミング構成の組み合わせによって具現化される多様なアルゴリズムを含み、Ｃ、Ｃ＋＋、Ｊａｖａ（登録商標）、アセンブラのようなプログラミング言語またはスクリプト言語によっても具現化される。機能的な側面は、１個以上のプロセッサにより実行されるアルゴリズムによっても具現化される。また、本実施形態は、電子的な環境設定、信号処理及び／またはデータ処理などのために従来技術を採用することができる。「メカニズム」、「要素」、「手段」、「構成」のような用語は、汎用され、機械的であって物理的な構成として限定されるものではない。このような用語は、プロセッサなどと連係し、ソフトウェアの一連の処理の意味を含んでもよい。
【００８７】
本実施形態において説明された特定の実行は、例示であり、いかなる方法によっても技術的範囲を限定するものではない。明細書の簡潔さのために、従来の電子的な構成、制御システム、ソフトウェア、システムの他の機能的な側面の記載は、省略されもする。また、図面に図示された構成要素間の線接続／連結または接続／連結部材は、機能的な接続／連結、及び／または物理的または回路的な接続／連結を例示的に示したものであり、実際の装置においては、代替可能であったり、追加されたりする多様な機能的な接続／連結、物理的な接続／連結、または回路的な接続／連結としても示される。
【００８８】
本明細書（特に、特許請求の範囲）において、「前記」の用語、及びそれと類似した指示用語の使用は、単数及び複数いずれにも該当する。また、範囲を記載した場合、範囲に属する個別的な値を含むものであり（それに反する記載がなければ）、詳細な説明に、範囲を構成する各個別的な値を記載した通りである。最後に、方法を構成する段階について、明確に順序を記載したり、それに反する記載がなかったりするならば、段階は、適する順序で実行されるものである。必ずしも段階の記載順序に限定されるものではない。全ての例または例示を示す用語（例えば、など）の使用は、単に技術的思想について詳細に説明するためのものであり、特許請求の範囲によって限定されない以上、前述の例または例示を示す用語により、範囲が限定されるものではない。また、当業者は、多様な修正、組み合わせ及び変更が付加された特許請求の範囲、またはその均等の範囲内において、設計条件及びファクタによって構成されるということができることが分かるであろう。
【産業上の利用可能性】
【００８９】
本発明に係る、分類のためのニューラルネットワークにおいて、パラメータを処理する方法及び装置は、例えば、情報処理関連の技術分野に効果的に適用可能である。
【符号の説明】
【００９０】
１００  ニューラルネットワーク装置
１１０  プロセッサ
１２０  メモリ
６００  電子システム
６１０  プロセッサ
６２０  ＲＡＭ
６３０  ニューラルネットワーク装置
６４０  メモリ
６５０  センサモジュール
６６０  通信モジュール
【図１】
2019194851.tif 000017
【図２】
2019194851.tif 000018
【図３】
2019194851.tif 000019
【図４】
2019194851.tif 000020
【図５】
2019194851.tif 000021
【図６】
2019194851.tif 000022
【図７】
2019194851.tif 000023