(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-09
(45)【発行日】2023-08-18
(54)【発明の名称】分類のためのニューラルネットワークにおいて、パラメータを処理する方法及び装置
(51)【国際特許分類】
G06N 3/02 20060101AFI20230810BHJP
【FI】
G06N3/02
(21)【出願番号】P 2019075655
(22)【出願日】2019-04-11
【審査請求日】2022-03-23
(32)【優先日】2018-05-03
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】10-2018-0077496
(32)【優先日】2018-07-04
(33)【優先権主張国・地域又は機関】KR
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
【住所又は居所原語表記】129,Samsung-ro,Yeongtong-gu,Suwon-si,Gyeonggi-do,Republic of Korea
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】李 俊行
(72)【発明者】
【氏名】朴 ▲ひょん▼宣
(72)【発明者】
【氏名】李 世煥
(72)【発明者】
【氏名】李 承遠
【審査官】武田 広太郎
(56)【参考文献】
【文献】特表2009-516246(JP,A)
【文献】石井 潤,DNN向けニューロン毎の量子化ビット幅最適化に関する評価,電子情報通信学会技術研究報告 Vol.117 No.379,日本,一般社団法人電子情報通信学会,2018年01月11日
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/02
(57)【特許請求の範囲】
【請求項1】
分類のための
n層ニューラルネットワークにおいて、パラメータを処理する方法であって、
入力データが分類されるクラス個数に係わる情報を取得する段階と、
前記
取得する段階で取得された情報に基づき、前記入力データが各クラスに分類される可能性に係わる演算結果を出力する層のための精度を
、前記クラス個数に比例するように決定する段階と、
前記
精度を決定する段階で決定された精度により、前記層において、パラメータを処理する段階と、
を含
み、前記演算結果を出力する層は、前記n層ニューラルネットワークのうちの出力層であり、前記出力層以外の層では、前記決定された精度より低い精度により、パラメータを処理する方法。
【請求項2】
前記決定する段階は、
前記クラス個数
を対数表示したものに比例するように、前記
出力層のための精度を決定する段階
を含む、請求項1に記載の方法。
【請求項3】
前記決定する段階は、
前記クラス個数が既設定の閾値以上である場合、前記層のための精度を、前記
n層ニューラルネットワーク内の他の層のための精度より高く決定する段階
を含む、請求項1に記載の方法。
【請求項4】
前記精度は、前記
出力層で処理されるパラメータのビット幅を示す、請求項1ないし3のうちいずれか1項に記載の方法。
【請求項5】
前記
出力層は、前記
n層ニューラルネットワーク内の最終全結合層である、請求項1ないし4のうちいずれか1項に記載の方法。
【請求項6】
前記
出力層は、ソフトマックス層及び損失層に結合され、
前記
出力層は、前記ソフトマックス層から、前記演算結果に対するクロスエントロピー損失の勾配を入力される、請求項1ないし5のうちいずれか1項に記載の方法。
【請求項7】
前記パラメータは、前記
出力層に入力される前記演算結果に対するクロスエントロピー損失の勾配、及び前記
出力層の重みを含む、請求項1ないし5のうちいずれか1項に記載の方法。
【請求項8】
請求項1ないし7のうちいずれか1項に記載の方法をコンピュータに実行させるプログラム。
【請求項9】
分類のための
n層ニューラルネットワークにおいて、パラメータを処理する装置であって、
少なくとも1つのプログラムを記録しているメモリと、
前記少なくとも1つのプログラムを実行することにより、入力データが分類されるクラス個数に係わる情報を取得し、
その取得された情報に基づき、前記入力データが各クラスに分類される可能性に係わる演算結果を出力する層のための精度を
、前記クラス個数に比例するように決定し、
その決定された精度により、前記層において、パラメータを処理するプロセッサと、
を含
み、前記演算結果を出力する層は、前記n層ニューラルネットワークのうちの出力層であり、前記出力層以外の層では、前記決定された精度より低い精度により、パラメータを処理する装置。
【請求項10】
前記プロセッサは、前記クラス個数
を対数表示したものに比例するように、前記層のための精度を決定する、請求項9に記載の装置。
【請求項11】
前記プロセッサは、前記クラス個数が既設定の閾値以上である場合、前記層のための精度を、前記
n層ニューラルネットワーク内の他の層のための精度より高く決定する、請求項9に記載の装置。
【請求項12】
前記精度は、前記
出力層で処理されるパラメータのビット幅を示す、請求項9ないし11のうちいずれか1項に記載の装置。
【請求項13】
前記
出力層は、前記
n層ニューラルネットワーク内の最終全結合層である、請求項9ないし12のうちいずれか1項に記載の装置。
【請求項14】
前記
出力層は、ソフトマックス層及び損失層に結合され、
前記
出力層は、前記ソフトマックス層から前記演算結果に対するクロスエントロピー損失の勾配を入力される、請求項9ないし13のうちいずれか1項に記載の装置。
【請求項15】
前記パラメータは、前記
出力層に入力される前記演算結果に対するクロスエントロピー損失の勾配、及び前記
出力層の重みを含む、請求項9ないし13のうちいずれか1項に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、分類のためのニューラルネットワークにおいて、パラメータを処理する方法及び装置に関する。
【背景技術】
【0002】
ニューラルネットワークは、生物学的脳をモデリングしたコンピュータ科学的アーキテクチャ(computational architecture)を参照する。最近、ニューラルネットワーク技術の発展により、多様な電子システムにおいて、ニューラルネットワーク装置を使用して入力データを分析し、有効な情報を抽出する研究が活発に進められている。
【0003】
ニューラルネットワーク装置は、複雑な入力データに対する多量の演算を必要とする。ニューラルネットワーク装置が入力をリアルタイムで分析し、情報抽出を行うために、ニューラルネットワーク演算を効率的に処理することができる技術が要求される。例えば、ニューラルネットワーク装置の複雑な入力データ処理に必要な演算量を低減させながらも、正確度損失を最小化させることができる技術が要求される。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明は、分類のためのニューラルネットワークにおいて、パラメータを処理する方法及び装置を提供することにある。本実施形態に係る技術的課題は、前述のような技術的課題に限定されるものではなく、以下の実施形態から他の技術的課題が類推されるものである。
【課題を解決するための手段】
【0005】
一側面により、分類のためのニューラルネットワークにおいて、パラメータを処理する方法は、入力データが分類されるクラスの個数に係わる情報を取得する段階と、取得された情報に基づき、入力データが各クラスに分類される可能性に係わる演算結果を出力する層(layer)のための精度を決定する段階と、決定された精度により、層においてパラメータを処理する段階と、を含んでよい。
【0006】
他の側面により、分類のためのニューラルネットワークにおいて、パラメータを処理する装置は、少なくとも1つのプログラムを記録しているメモリと、少なくとも1つのプログラムを実行することにより、入力データが分類されるクラスの個数に係わる情報を取得し、取得された情報に基づき、入力データが各クラスに分類される可能性に係わる演算結果を出力する層のための精度を決定し、決定された精度により、層においてパラメータを処理するプロセッサを含んでよい。
【0007】
さらに他の側面により、分類のためのニューラルネットワークにおいて、パラメータを処理する方法を具現化するためのプログラム、及び、該プログラムを記録したコンピュータ読み取り可能な記録媒体が提供される。
【発明の効果】
【0008】
本発明によれば、ニューラルネットワーク装置は、ニューラルネットワーク内の全層に対して、一括して固定された精度を設定するのではなく、最終全結合(FC)層(last FC (fully connected) layer)のような出力層については、クラス個数を考慮した精度を設定するが、ニューラルネットワークのトレーニング/学習過程での正確度損失を最小化させることができる。
【図面の簡単な説明】
【0009】
【
図1】一部の実施形態によるニューラルネットワークの例示を示す図面である。
【
図2】一実施形態によるニューラルネットワーク装置のハードウェア構成を図示したブロック図である。
【
図3】分類のためのニューラルネットワークの一実施形態を示す図面である。
【
図4】一実施形態による、分類のためのニューラルネットワーク内の各層の出力値を示す図面である。
【
図5】分類のためのニューラルネットワークにおいて、精度を決定する実施形態を示す図面である。
【
図6】一実施形態による電子システムを示すブロック図である。
【
図7】一実施形態により、ニューラルネットワーク装置の動作方法について説明するための図面である。
【発明を実施するための形態】
【0010】
以下、添付された図面を参照しながら、ただ例示のための実施形態について詳細に説明する。以下の説明は、実施形態を具体化させるためのものであるに過ぎず、発明の権利範囲を制限したり限定したりするものではないことは言うまでもない。詳細な説明及び実施形態から、当該技術分野の当業者が容易に類推することができることは、権利範囲に属すると解釈される。
【0011】
本明細書で使用される「構成される」または「含む」というような用語は、明細書に記載されたさまざまな構成要素、またはさまざまな段階を必ずしもいずれも含むものであると解釈されるものではなく、そのうちの一部の構成要素または一部の段階は、含まれず、またはさらなる構成要素または段階をさらに含んでもよいと解釈されなければならない。
【0012】
また、本明細書で使用される「第1」または「第2」のように序数を含む用語は、多様な構成要素についての説明に使用されうるが、このような構成要素は、このような用語によって限定されるものではない。このような用語は、1つの構成要素を他の構成要素と区別する目的のみに使用される。
【0013】
本実施形態は、ニューラルネットワークにおいて、パラメータを処理する方法及び装置に係わるものであり、以下の実施形態が属する技術分野において当業者に周知である事項については、詳細な説明を省略する。
【0014】
図1は、一部の実施形態によるニューラルネットワークの例示を示す図面である。
図1を参照すると、一部の実施形態によるニューラルネットワーク10が図示されている。ニューラルネットワーク10は、入力層、隠れ層及び出力層を含む構造を有し、受信された入力データ(例えば、I
1及びI
2)を基に演算を実行し、その実行結果を基に、出力データ(例えば、O
1及びO
2)を生成することができる。
【0015】
ニューラルネットワーク10は、1個以上の隠れ層を含むディープニューラルネットワーク(DNN:deep neural network)またはn層ニューラルネットワーク(n-layers neural network)でもある。例えば、
図1に図示されているように、ニューラルネットワーク10は、入力層(Layer 1)、2個の隠れ層(Layer 2及びLayer 3)、及び出力層(Layer 4)を含むDNNでもある。DNNは、畳み込みニューラルネットワーク(CNN:convolutional neural network)、再帰型ニューラルネットワーク(RNN:recurrent neural network)、ディープビリーフネットワーク(DBN:deep belief network)、制限ボルツマンマシン(RBM:restricted Boltzmann machine)などを含んでよいが、これらに限定されるものではない。
【0016】
ニューラルネットワーク10がDNN構造を有する場合、有効な情報を抽出することができるさらに多くの層を含むので、ニューラルネットワーク10は、従来のニューラルネットワークより複雑なデータ集合を処理することができる。一方、ニューラルネットワーク10は、4個の層を含むように図示されているが、これは、例示に過ぎず、ニューラルネットワーク10は、より少なかったり多かったりする層を含んでもよい。また、ニューラルネットワーク10は、
図1に図示されたものとは異なる多様な構造の層を含んでもよい。例えば、ニューラルネットワーク10は、ディープニューラルネットワークとして、畳み込み層、プーリング層、及び全結合(FC)層を含んでもよい。
【0017】
ニューラルネットワーク10に含まれる層それぞれは、「ニューロン」、「処理要素(PE:processing element)」、「ユニット(unit)」、またはそれと類似した用語として知られる複数の人工ノード(artificial node)を含んでもよい。例えば、
図1に図示されているように、Layer 1は、2個のノード、Layer 2は、3個のノードを含む。ただし、これは、例示に過ぎず、ニューラルネットワーク10に含まれる層それぞれは、多様な個数のノードを含んでもよい。
【0018】
ニューラルネットワーク10に含まれる層それぞれに含まれるノードは、互いに結合され、データを交換することができる。例えば、1つのノードは、他のノードからデータを受信して演算することができ、この演算結果を、さらに他のノードに出力することができる。
【0019】
ノードそれぞれの出力値は、アクティベーション(activation)とも呼ばれる。アクティベーションは、1ノードの出力値でありながら、次の層に含まれるノードの入力値でもある。一方、ノードそれぞれは、前の層に含まれるノードから受信されたアクティベーション、及び重みに基づき、自身のアクティベーションを決定することができる。重みは、各ノードでのアクティベーションを計算するために利用されるパラメータであり、ノード間の結合関係に割り当てられる値でもある。
【0020】
ノードそれぞれは、入力を受け、アクティベーションを出力する演算ユニットでもあり、入力・出力をマッピングすることができる。例えば、σは、活性化関数であり、
【0021】
【数1】
は、(i-1)番目の層に含まれるk番目のノードから、i番目の層に含まれるj番目のノードへの重みであり、
【0022】
【数2】
は、i番目の層に含まれるj番目のノードのバイアス(bias)値であり、
【0023】
【数3】
は、i番目の層のj番目のノードのアクティベーションであるとすると、アクティベーション
【0024】
【数4】
は、以下のような式(1)により計算される。
【0025】
【数5】
図1に図示されているように、2番目の層(Layer 2)の最初のノードのアクティベーションは、
【0026】
【0027】
【0028】
【数8】
の値を有することができる。ただし、前述の式(1)は、ニューラルネットワークにおいてデータを処理するために利用されるアクティベーション及び重みについて説明するための例示であるに過ぎず、これに限定されるものではない。アクティベーションは、前の層から受信されたアクティベーションの重み付け和への活性化を適用した値をして、正規化線形ユニット(ReLU:rectified linear unit)を通過させることによって取得される値でもある。
【0029】
前述のように、ニューラルネットワーク10においては、多くのデータ集合が相互結合された複数のチャンネル間で交換され、層を経ながら、多くの演算過程を経る。したがって、複雑な入力データ処理に必要な演算量を低減させながらも、正確度損失を最小化させることができる技術が要求される。
【0030】
図2は、一実施形態によるニューラルネットワーク装置のハードウェア構成を図示したブロック図である。
【0031】
ニューラルネットワーク装置100は、プロセッサ110及びメモリ120を含む。
図2に図示されたニューラルネットワーク装置100には、本実施形態と係わる構成要素だけが図示されている。したがって、ニューラルネットワーク装置100は、
図2に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいことは、当業者に自明である。
【0032】
ニューラルネットワーク装置100は、ニューラルネットワークを生成したり、ニューラルネットワークをトレーニングしたり(または学習させたり)、浮動小数点タイプのニューラルネットワークを、固定小数点タイプのニューラルネットワークに量子化させたり、ニューラルネットワークを再トレーニングしたりする機能のような多様な処理機能を有するコンピュータデバイスに該当する。例えば、ニューラルネットワーク装置100は、PC(personal computer)、サーバデバイス、モバイルデバイスのような多様なデバイスにおいても具現化される。また、ニューラルネットワーク装置100は、ニューラルネットワーク駆動のためのハードウェアアクセラレータを含んでもよい。ハードウェアアクセラレータは、例えば、ニューラルネットワーク駆動のための専用モジュールであるニューラル処理ユニット(NPU:neural processing unit)、テンソル処理ユニット(TPU:tensor processing unit)、ニューラルエンジンなどに該当するが、これらに限定されるものではない。
【0033】
プロセッサ110は、ニューラルネットワーク装置100を制御するための全般的な機能を実行する役割を担う。例えば、プロセッサ110は、ニューラルネットワーク装置100内のメモリ120に記録されたプログラムを実行することにより、ニューラルネットワーク装置100を全般的に制御する。プロセッサ110は、ニューラルネットワーク装置100内に具備されたCPU(central processing unit)、GPU(graphics processing unit)、AP(application processor)などによっても具現化されるが、これらに限定されるものではない。
【0034】
メモリ120は、ニューラルネットワーク装置100内で処理される各種データを記録するハードウェアであり、例えば、メモリ120は、ニューラルネットワーク装置100で処理されたデータ及び処理されるデータを記録することができる。また、メモリ120は、ニューラルネットワーク装置100によって実行されるアプリケーション、ドライバなどを記録することができる。メモリ120は、DRAM(dynamic random access memory)でもあるが、これに限定されるのではない。メモリ120は、揮発性メモリ及び不揮発性メモリのうち少なくとも一つを含んでもよい。
【0035】
プロセッサ110は、与えられた初期ニューラルネットワークを反復的にトレーニングする(学習させる)ことにより、トレーニングされたニューラルネットワークを生成することができる。このとき、プロセッサ110は、既設定の精度により、ニューラルネットワークをトレーニングすることができる。言い換えれば、プロセッサ110は、トレーニング時、ニューラルネットワークで処理されるパラメータの精度を設定することができる。精度は、ニューラルネットワーク内のパラメータを、どれだけ詳細に処理することができるかという程度を意味する。精度は、ニューラルネットワーク内のパラメータのビット幅(bitwidth)とも説明される。例えば、32ビット浮動小数点精度パラメータのような高精度を有するパラメータが存在し、8ビット固定小数点精度パラメータのような低精度を有するパラメータが存在する。ここで、パラメータは、ニューラルネットワークの入出力アクティベーション、重み、バイアスのようなニューラルネットワークに入出力される多種のデータを含んでもよい。
【0036】
プロセッサ110は、低精度により、ニューラルネットワークのパラメータを処理することができる。言い換えれば、プロセッサ110は、従来のニューラルネットワークより相対的に少ないビット幅を有するデータを、パラメータとして利用することにより、精度を低くしながら演算量を低減させることができる。例えば、32ビットまたは64ビットの浮動小数点または固定小数点データを利用する従来のニューラルネットワークとは異なり、低精度により、プロセッサ110は、ニューラルネットワークにおいて、8ビットまたは16ビットの浮動小数点または固定小数点データをパラメータとして利用することができる。ただし、ニューラルネットワーク内の全層に共通して低精度を設定する場合、ニューラルネットワーク内の一部の層の特性上、正確度損失が大きく発生することがあり、ニューラルネットワーク内の一部の層については、精度を高く設定して正確度損失を最小化させる必要がある。
【0037】
プロセッサ110は、分類のためのニューラルネットワークを生成することができ、分類のためのニューラルネットワークをトレーニングすることができる。分類のためのニューラルネットワークは、入力データがクラスのうちどのクラスに該当するかということに係わる演算結果を出力することができる。具体的には、分類のためのニューラルネットワークは、入力データがクラスそれぞれに該当する可能性に係わる演算結果を、クラスそれぞれに係わる結果値として出力することができる。また、分類のためのニューラルネットワークは、ソフトマックス層(softmax layer)及び損失層を含んでもよい。ソフトマックス層は、クラスそれぞれに係わる結果値を確率値に変換することができ、損失層は、学習のための目的関数として損失を演算することができる。
【0038】
図3は、分類のためのニューラルネットワークの一実施形態を示している。
【0039】
分類のためのニューラルネットワーク300は、隠れ層310、FC層320、ソフトマックス層330、及び損失層340を含んでよい。隠れ層310のうち一部は、FC層にもなるが、FC層320は、ニューラルネットワーク300の最終FC層にもなる。言い換えれば、FC層320は、ニューラルネットワーク300のFC層のうち最終順序のFC層にもなる。
【0040】
入力データがニューラルネットワーク300に入力される場合、隠れ層310及びFC層320の順次的な演算過程を経た後、FC層320は、入力データが各クラスに分類される可能性に係わる演算結果sを出力することができる。言い換えれば、FC層320は、クラスそれぞれに係わる演算結果sとして、入力データが、当該クラスに分類される可能性に係わる結果値を出力することができる。具体的には、FC層320は、クラスそれぞれに対応するノードを含み、FC層320のノードそれぞれは、クラスそれぞれに分類される可能性に係わる結果値を出力することができる。例えば、ニューラルネットワークが、5個のクラスを対象とする分類作業のために具現化される場合、FC層の第1ノードないし第5ノードそれぞれの出力値は、入力データが、第1クラスないし第5クラスそれぞれに分類される可能性を示す結果値でもある。
【0041】
FC層320は、演算結果sを、ソフトマックス層330に出力することができ、ソフトマックス層330は、演算結果sを確率値yに変換することができる。言い換えれば、ソフトマックス層330は、入力データが各クラスに分類される可能性に係わる結果値を正規化し、確率値yを生成することができる。次に、ソフトマックス層330は、確率値yを損失層340に出力することができ、損失層340は、確率値yに基づいて、演算結果sのクロス(交差)エントロピー損失を計算することができる。言い換えれば、損失層340は、演算結果sの誤差(error)を示すクロスエントロピー損失を計算することができる。
【0042】
例えば、ソフトマックス層330は、下記の式(2)を利用し、演算結果sを確率値yに変換することができ、損失層340は、下記の式(3)を利用し、演算結果sのクロスエントロピー損失Lを計算することができる。
【0043】
【数9】
式(2)及び式(3)において、s
iは、FC層320のi番目のノードの出力値(すなわち、クラスのうちi番目のクラスに係わる結果値)を示し、y
iは、ソフトマックス層330のi番目のノードの出力値(すなわち、クラスのうちi番目のクラスに係わる確率値)を示し、N
cは、クラスの個数を示し、t
iは、i番目のクラスに係わるGT(ground truth)ラベルにもなる。
【0044】
次に、バックプロパゲーション学習過程として、損失層340を経て、ソフトマックス層330は、クロスエントロピー損失Lの勾配を計算することができる。
【0045】
例えば、ソフトマックス層330は、下記の式(4)を利用し、クロスエントロピー損失Lの勾配
【0046】
【0047】
【数11】
式(4)において、s
iは、FC層320のi番目のノードの出力値(すなわち、クラスのうちi番目のクラスに係わる結果値)を示し、y
iは、ソフトマックス層330のi番目のノードの出力値(すなわち、クラスのうちi番目のクラスに係わる確率値)を示し、N
cは、クラスの個数を示し、t
iは、i番目のクラスに係わるGTラベルにもなる。
【0048】
次に、FC層320において、クロスエントロピー損失Lの勾配に基づいた学習過程が行われる。例えば、勾配降下法により、FC層320の重みがアップデートされる。また、隠れ層310においても、連鎖的な学習過程が行われる。
【0049】
図4は、一実施形態による、分類のためのニューラルネットワーク内の各層の出力値を示している。
【0050】
ニューラルネットワーク内の各層においては、既設定の精度による値が出力される。具体的には、
図4について述べると、ニューラルネットワーク内の各層の出力値は、量子化されたレベル(quantized levels)にも分布される。例えば、既設定の精度が3ビットのビット幅である場合、出力値は、23個の量子化されたレベルにも分布される。
【0051】
図4の上側グラフについて述べると、最終FC層であるFC層320の出力値(s
i)が、0を中心に量子化されたレベルに分布される一方、ソフトマックス層330の出力値(y
i)は、正規化された確率値であるために、1/(クラス個数N
c)を中心に量子化されたレベルにも分布される。例えば、クラス個数が2である場合、ソフトマックス層330の出力値は、1/2を中心に量子化されたレベルにも分布され、クラス個数が1000である場合、ソフトマックス層330の出力値は、1/1000を中心に量子化されたレベルにも分布される。
【0052】
図4の下側グラフについて述べると、ソフトマックス層330の出力値である、FC層320に入力されるクロスエントロピー損失の勾配
【0053】
【数12】
が図示される。式(4)による勾配の特性上、GTラベルに該当するクラスに係わる勾配は、-1と0との間の値を有することができるが、異なるクラスに係わる勾配は0と1との間の値を有することができる。特に、クラス個数が多いほど、異なるクラスに係わる勾配は、0に密接した値を有することができる。
【0054】
FC層320に入力される勾配は、既設定の精度による値を有するようにも処理される。言い換えれば、FC層320に入力される勾配は、既設定のビット幅による量子化されたレベルにも調整される。ただし、クラス個数が多い場合、勾配が量子化されたレベルに調整される過程において、GTラベルに該当するクラスに係わる勾配は、-1にも調整されるが、異なるクラスに係わる勾配は、いずれも0にも調整される。例えば、
図4の上側右グラフについて述べると、クラス個数が2である場合、GTラベルに該当しないクラスに係わる勾配は、0と1との間のレベルにも調整されるが、クラス個数が1000である場合、GTラベルに該当しないクラスに係わる勾配は、いずれも0にも調整される。したがって、クラス個数が多い場合、クラス全体に係わる勾配の総和が負値に向けてバイアスされ(biased)、結果として、ニューラルネットワーク300の学習またはトレーニングに否定的な影響を及ぼしてしまう。
【0055】
したがって、ニューラルネットワーク300内の全層に一括して固定された精度(特に、低精度)を設定するのではなく、FC層320については、クラス個数を考慮して精度を設定することが要求される。
【0056】
再び
図2を参照すると、プロセッサ110は、クラス個数に係わる情報に基づき、入力データが各クラスに分類される可能性に係わる演算結果を出力する層(以下、説明の便宜のために、「出力層」と短くして呼ぶ)のための精度を決定することができる。例えば、
図3を参照すると、出力層は、最終FC層であるFC層320にもなる。また、出力層は、ソフトマックス層及び損失層にも結合される。
【0057】
まず、プロセッサ110は、入力データが分類されるクラスの個数に係わる情報を取得することができる。一実施形態により、クラス個数は、出力層のノードの個数とも同一であるが、プロセッサ110は、出力層のノードの個数を確認し、クラス個数に係わる情報を取得することができる。他の実施形態により、プロセッサ110は、ユーザ入力に基づき、クラス個数に係わる情報を取得することができる。
【0058】
次に、プロセッサ110は、取得されたクラスの個数に係わる情報に基づき、出力層のための精度を決定することができる。
【0059】
一実施形態により、プロセッサ110は、クラス個数に比例するように、出力層のための精度を決定することができる。言い換えれば、プロセッサ110は、クラス個数が多くなるほど、出力層のための精度がより高い精度になるように、出力層のための精度を決定することができる。例えば、クラス個数が10個である場合、プロセッサ110は、出力層のための精度を、8ビットのビット幅に決定することができ、クラス個数が100個である場合、プロセッサ110は、出力層のための精度を、11ビットのビット幅に決定することができる。
【0060】
他の実施形態により、プロセッサ110は、下記の式(5)により、出力層のための精度を決定することができる。すなわち、プロセッサ110は、出力層のための精度として、出力層に適用されるビット幅を決定することができる。
【0061】
【0062】
【数14】
は、クラスのサイズ(すなわち、クラスの個数)を示し、αは、既設定のバイアスを示し、βは、比例定数を示す。例えば、αが4に設定され、βが1に設定され、クラスの個数が10である場合、プロセッサ110は、出力層のための精度を、7.32ビット以上のビット幅に決定することができる。また、αが4に設定され、クラスの個数が100である場合、プロセッサ110は、出力層のための精度を、10.64ビット以上のビット幅に決定することができる。また、αが4に設定され、クラスの個数が1000である場合、プロセッサ110は、出力層のための精度を、14ビット以上のビット幅に決定することができる。
【0063】
さらに他の実施形態により、プロセッサ110は、クラス個数が既設定の閾値以上である場合、出力層のための精度を、ニューラルネットワーク内の他の層のための精度より高く決定することができる。例えば、クラス個数が10個以上である場合、プロセッサ110は、出力層のための精度を、ニューラルネットワーク内の他の層のための精度である8ビットのビット幅より高く決定することができる。
【0064】
プロセッサ110は、既決定の精度により、出力層において、パラメータを処理することができる。プロセッサ110は、出力層のパラメータが、既決定の精度を有するように処理することができ、既決定の精度を有するパラメータを介して、ニューラルネットワークのトレーニング/学習過程を実行することができる。出力層のパラメータは、出力層に入力されるクロスエントロピー損失の勾配を含んでもよい。したがって、プロセッサ110は、出力層に入力されるクロスエントロピー損失の勾配を、既決定のビット幅による量子化されたレベルに調整することができ、調整された勾配を介して、ニューラルネットワークのトレーニング/学習過程を実行することができる。また、出力層のパラメータは、出力層の重み及びアクティベーションをさらに含んでもよい。
【0065】
したがって、ニューラルネットワーク装置100は、ニューラルネットワーク内の全層に対して、一括して固定された精度を設定するのではなく、最終FC層のような出力層については、クラス個数を考慮した精度を設定するが、ニューラルネットワークのトレーニング/学習過程での正確度損失を最小化させることができる。特に、ニューラルネットワーク装置100は、ニューラルネットワークの出力層については、クラス個数を考慮し、高精度によって、パラメータを処理することができつつも、ニューラルネットワークの他の層については、低精度によって、ニューラルネットワークのパラメータを処理するが、一括的な低精度設定によって発生しうる正確度損失を最小化させることができる。
【0066】
図5は、分類のためのニューラルネットワークにおいて、精度を決定する実施形態を示す。
【0067】
ニューラルネットワーク装置100は、分類のためのニューラルネットワーク300のクラスサイズに係わる情報を取得することができる。すなわち、ニューラルネットワーク装置100は、分類のためのニューラルネットワーク300内において、入力データが分類されるクラス個数に係わる情報を取得することができる。ニューラルネットワーク装置100は、最終FC層であるFC層320のノードの個数を確認し、クラス個数に係わる情報を取得することができる。
【0068】
ニューラルネットワーク装置100は、取得されたクラス個数に係わる情報に基づき、出力層であるFC層320のための精度を決定することができる。ニューラルネットワーク装置100は、クラス個数に比例するように、FC層320のための精度を決定することができる。例えば、クラス個数が10個である場合、ニューラルネットワーク装置100は、FC層320のための精度を、10ビットのビット幅に決定することができ、クラス個数が1000個である場合、ニューラルネットワーク装置100は、FC層320のための精度を、16ビットのビット幅に決定することができる。
【0069】
ニューラルネットワーク装置100は、既決定の精度により、FC層320において、パラメータを処理することができる。一実施形態により、ニューラルネットワーク装置100は、ソフトマックス層330から出力され、FC層320に入力されるクロスエントロピー損失の勾配が、既決定の精度を有するように処理することができ、既決定の精度を有する勾配を介して、ニューラルネットワーク300の学習/トレーニングを進めることができる。
【0070】
図6は、一実施形態による電子システムを示すブロック図である。
図6を参照すると、電子システム600は、ニューラルネットワークを基に、入力データをリアルタイムで分析して有効な情報を抽出し、抽出された情報を基に、状況判断を行ったり、電子システム600が搭載される電子デバイスの構成を制御したりすることができる。例えば、電子システム600は、ドローン、先進運転支援システム(ADAS:advanced driver assistance system)のようなロボット装置、スマートTV(television)、スマートフォン、医療デバイス、モバイルデバイス、映像表示デバイス、計測デバイス、IoTデバイスなどにも適用され、それ以外にも、多様な電子デバイスのうち少なくとも一つに搭載される。
【0071】
電子システム600は、プロセッサ610、RAM620、ニューラルネットワーク装置630、メモリ640、センサモジュール650及び通信モジュール660を含んでよい。電子システム600は、入出力モジュール、セキュリティモジュール、電力制御装置などをさらに含んでもよい。電子システム600のハードウェア構成のうち一部は、少なくとも1つの半導体チップにも搭載される。ニューラルネットワーク装置630は、前述のニューラルネットワーク装置100もしくはニューラルネットワーク専用ハードウェアアクセラレータ自体、またはそれらを含む装置でもある。
【0072】
プロセッサ610は、電子システム600の全般的な動作を制御する。プロセッサ610は、1つのプロセッサコアまたは複数のプロセッサコアを含んでよい。プロセッサ610は、メモリ640に記録されたプログラム及び/またはデータを処理したり実行したりすることができる。一実施形態において、プロセッサ610は、メモリ640に記録されたプログラムを実行することにより、ニューラルネットワーク装置630の機能を制御することができる。プロセッサ610は、CPU、GPU、APなどによっても具現化される。
【0073】
RAM620は、プログラム、データまたは命令を一時的に記録することができる。例えば、メモリ640に記録されたプログラム及び/またはデータは、プロセッサ610の制御コードまたは起動コードにより、RAM620に一時的に記録される。RAM620は、DRAMまたはSRAM(static random access memory)などのメモリによっても具現化される。
【0074】
ニューラルネットワーク装置630は、受信された入力データを基に、ニューラルネットワークの演算を実行し、その実行結果を基に、情報信号を生成することができる。ニューラルネットワークは、CNN、RNN、DBN、RBMなどを含んでよいが、これらに限定されるものではない。ニューラルネットワーク装置630は、前述の分類のためのニューラルネットワークを駆動するハードウェアとして、ニューラルネットワーク専用ハードウェアアクセラレータに該当する。
【0075】
情報信号は、音声認識信号、オブジェクト認識信号、映像認識信号、生体情報認識信号のような多様な認識信号のうち一つを含んでよい。例えば、ニューラルネットワーク装置630は、ビデオストリームに含まれるフレームデータを入力データとして受信し、フレームデータから、フレームデータが示すイメージに含まれるオブジェクトに係わる認識信号を生成することができる。しかしながら、これに限定されるものではなく、電子システム600が搭載される電子装置の種類または機能により、ニューラルネットワーク装置630は、多様な入力データを受信することができ、このような入力データによる認識信号を生成することができる。
【0076】
メモリ640は、データを記録するための記録場所であり、OS(operating system)、各種プログラム及び各種データを記録することができる。一実施形態において、メモリ640は、ニューラルネットワーク装置630の演算実行過程で生成される中間結果、例えば、出力フィーチャマップを、出力フィーチャリスト形態または出力フィーチャマトリックス形態で記録することができる。一実施形態において、メモリ640には、圧縮された出力フィーチャマップが記録されることが可能である。また、メモリ640は、ニューラルネットワーク装置630で利用される量子化されたニューラルネットワークデータ、例えば、パラメータ、重みマップまたは重みリストを記録することができる。
【0077】
メモリ640は、DRAMでもあるが、これに限定されるものではない。メモリ640は、揮発性メモリ及び不揮発性メモリのうち少なくとも一つを含んでもよい。不揮発性メモリは、ROM(read-only memory)、PROM(programmable read-only memory)、EPROM(electrically programmable read-only memory)、EEPROM(electrically erasable programmable read-only memory)、フラッシュメモリ、PRAM(phase-change random access memory)、MRAM(magnetic random access memory)、RRAM(登録商標)、FRAM(登録商標)などを含む。揮発性メモリは、DRAM、SRAM、SDRAMなどを含む。一実施形態において、メモリ640は、HDD(hard disk drive)、SSD(solid state drive)、CF、SD、micro-SD、mini-SD、xD及びMemory Stickのうち少なくとも一つを含んでよい。
【0078】
センサモジュール650は、電子システム600が搭載される電子装置周辺の情報を収集することができる。センサモジュール650は、電子装置の外部から、信号(例えば、映像信号、音声信号、磁気信号、生体信号、タッチ信号など)をセンシングしたり受信したりし、センシングまたは受信された信号をデータに変換することができる。そのために、センサモジュール650は、センシング装置、例えば、マイク、撮像装置、イメージセンサ、LIDAR(light detection and ranging)センサ、超音波センサ、赤外線センサ、バイオセンサ及びタッチセンサのような多様なセンシング装置のうち少なくとも一つを含んでよい。
【0079】
センサモジュール650は、変換されたデータをニューラルネットワーク装置630に、入力データとして提供することができる。例えば、センサモジュール650は、イメージセンサを含み、電子装置の外部環境を撮影し、ビデオストリームを生成し、ビデオストリームの連続するデータフレームを、ニューラルネットワーク装置630に入力データとして順に提供することができる。しかしながら、これに限定されるものではなく、センサモジュール650は、多様なデータをニューラルネットワーク装置630に提供することができる。
【0080】
通信モジュール660は、外部装置と通信することができる多様な有線または無線のインターフェースを具備することができる。例えば、通信モジュール660は、有線ローカルエリアネットワーク(LAN:local area network)、Wi-Fi(登録商標)のような無線ローカルエリアネットワーク(WLAN:wireless local area network)、ブルートゥース(登録商標)のような無線パーソナルエリアネットワーク(WPAN:wireless personal area network)、無線USB(wireless universal serial bus)、Zigbee(登録商標)、NFC(near field communication)、RFID(radio frequency identification)、PLC(power line communication)、または3G(3rd generation)・4G(4th generation)・LTE(long term evolution)のような移動通信網に接続可能な通信インターフェースなどを含んでよい。
【0081】
図7は、一実施形態による、ニューラルネットワーク装置の動作方法について説明するための図面である。
図7に図示された方法は、
図2のニューラルネットワーク装置100、または
図6の電子システムの各構成要素によって実行され、重複説明については、省略する。
【0082】
段階S710において、ニューラルネットワーク装置100は、入力データが分類されるクラス個数に係わる情報を取得することができる。一実施形態により、ニューラルネットワーク装置100は、入力データが各クラスに分類される可能性に係わる演算結果を出力する層のノードの個数を確認し、クラス個数に係わる情報を取得することができる。他の実施形態により、ニューラルネットワーク装置100は、ユーザ入力に基づき、クラス個数に係わる情報を取得することができる。
【0083】
段階S720において、ニューラルネットワーク装置100は、S710において取得された情報に基づき、入力データが各クラスに分類される可能性に係わる演算結果を出力する層(以下、出力層)のための精度を決定することができる。一実施形態により、ニューラルネットワーク装置100は、クラス個数に比例するように、出力層のための精度を決定することができる。他の実施形態により、ニューラルネットワーク装置100は、前述の式(4)により、出力層のための精度を決定することができる。さらに他の実施形態により、ニューラルネットワーク装置100は、クラス個数が既設定の閾値以上である場合、出力層のための精度を、ニューラルネットワーク内の他の層のための精度より高く決定することができる。
【0084】
段階S730において、ニューラルネットワーク装置100は、S720において決定された精度により、層において、パラメータを処理することができる。ニューラルネットワーク装置100は、出力層のパラメータが、既決定の精度を有するように処理することができ、既決定の精度を有するパラメータを介して、ニューラルネットワークのトレーニング/学習過程を実行することができる。
【0085】
前述の実施形態による装置は、プロセッサ、プログラムデータを記録して実行するメモリ、ディスクドライブのような永続的ストレージ、外部装置と通信する通信ポート、タッチパネル・キー・ボタンのようなユーザインターフェース装置などを含んでよい。ソフトウェアモジュールまたはアルゴリズムによって具現化される方法は、プロセッサ上で実行可能なコンピュータ読み取り可能なコードまたはプログラム命令として、コンピュータ読み取り可能な記録媒体にも記録される。ここで、コンピュータ読み取り可能な記録媒体として、磁気記録媒体(例えば、ROM、RAM、フロッピー(登録商標)ディスク、ハードディスクなど)、及び光記録媒体(例えば、CD-ROM(compact disc read-only memory)、DVD(digital versatile disc))などがある。コンピュータ読み取り可能な記録媒体は、ネットワークに接続されたコンピュータシステムに分散され、分散方式で、コンピュータ読み取り可能なコードが記録されて実行される。このようなコードは、コンピュータにより読み取り可能であり、メモリに記録され、プロセッサにより実行される。
【0086】
本実施形態は、機能的なブロック構成、及び多様な処理段階によっても示される。そのような機能ブロックは、特定の機能を実行する多様な個数のハードウェア構成または/及びソフトウェア構成によっても具現化される。例えば、一実施形態は、1個以上のマイクロプロセッサの制御、または他の制御装置により、多様な機能を実行することができる、メモリ、プロセシング、ロジック(logic)、ルックアップテーブル(look-up table)のような直接回路構成を採用することができる。構成要素がソフトウェアプログラミングまたはソフトウェア要素でも実行されるということと類似して、本実施形態は、データ構造、プロセス、ルーチン、または他のプログラミング構成の組み合わせによって具現化される多様なアルゴリズムを含み、C、C++、Java(登録商標)、アセンブラのようなプログラミング言語またはスクリプト言語によっても具現化される。機能的な側面は、1個以上のプロセッサにより実行されるアルゴリズムによっても具現化される。また、本実施形態は、電子的な環境設定、信号処理及び/またはデータ処理などのために従来技術を採用することができる。「メカニズム」、「要素」、「手段」、「構成」のような用語は、汎用され、機械的であって物理的な構成として限定されるものではない。このような用語は、プロセッサなどと連係し、ソフトウェアの一連の処理の意味を含んでもよい。
【0087】
本実施形態において説明された特定の実行は、例示であり、いかなる方法によっても技術的範囲を限定するものではない。明細書の簡潔さのために、従来の電子的な構成、制御システム、ソフトウェア、システムの他の機能的な側面の記載は、省略されもする。また、図面に図示された構成要素間の線接続/連結または接続/連結部材は、機能的な接続/連結、及び/または物理的または回路的な接続/連結を例示的に示したものであり、実際の装置においては、代替可能であったり、追加されたりする多様な機能的な接続/連結、物理的な接続/連結、または回路的な接続/連結としても示される。
【0088】
本明細書(特に、特許請求の範囲)において、「前記」の用語、及びそれと類似した指示用語の使用は、単数及び複数いずれにも該当する。また、範囲を記載した場合、範囲に属する個別的な値を含むものであり(それに反する記載がなければ)、詳細な説明に、範囲を構成する各個別的な値を記載した通りである。最後に、方法を構成する段階について、明確に順序を記載したり、それに反する記載がなかったりするならば、段階は、適する順序で実行されるものである。必ずしも段階の記載順序に限定されるものではない。全ての例または例示を示す用語(例えば、など)の使用は、単に技術的思想について詳細に説明するためのものであり、特許請求の範囲によって限定されない以上、前述の例または例示を示す用語により、範囲が限定されるものではない。また、当業者は、多様な修正、組み合わせ及び変更が付加された特許請求の範囲、またはその均等の範囲内において、設計条件及びファクタによって構成されるということができることが分かるであろう。
【産業上の利用可能性】
【0089】
本発明に係る、分類のためのニューラルネットワークにおいて、パラメータを処理する方法及び装置は、例えば、情報処理関連の技術分野に効果的に適用可能である。
【符号の説明】
【0090】
100 ニューラルネットワーク装置
110 プロセッサ
120 メモリ
600 電子システム
610 プロセッサ
620 RAM
630 ニューラルネットワーク装置
640 メモリ
650 センサモジュール
660 通信モジュール