(本開示の基礎となった知見)
一般的に、画像認識または物体検知などのタスクに利用されるニューラルネットワークは、高精度なビットフォーマットで生成される。しかし、計算リソースが少ない組み込み環境などにそのニューラルネットワークが実装される場合には、そのニューラルネットワークは、低精度なビットフォーマットに変換される。
図1は、ニューラルネットワークの生成および変換を説明するための図である。
高精度なビットフォーマットのニューラルネットワークは学習によって生成される。その学習では、学習用データ格納部に格納されている複数の画像データと、それらの画像データに映し出されているオブジェクトの種別とが、教師データとして用いられる。この学習によって、学習済みのニューラルネットワークが生成される。学習済みのニューラルネットワークは、画像データの入力に対して、その画像データに映し出されているオブジェクトの認識結果として認識率(スコアともいう)を出力する。
また、このような学習済みのニューラルネットワークは複数の層を含む。これらの層からの出力データYは、Y=f(XW+b)によって示される。つまり、1つの層からの出力データYは、入力データXと、重みWと、バイアスbとを用いた関数によって表現される。なお、入力データXは、その1つの層よりも入力層側の隣にある層からの出力であり、出力データYおよび入力データXは、それぞれ中間データとも呼ばれる。重みWおよびバイアスbは、その1つの層におけるパラメータであって、学習によって設定される。
このような学習では、オブジェクトの高い認識精度を実現するために、例えば、Float型の32ビットなどのビット精度が高いビットフォーマットが、上述のパラメータおよび中間データなどに用いられる。したがって、例えば、サーバが有するGPU(Graphics Processing Unit)などの高性能計算リソースを用いて、高いビット精度を有する学習済みのニューラルネットワーク(図1中の学習済みNN)が生成される。
しかし、サーバ以外の高性能計算リソースを持たない設備(例えば自動車など)にニューラルネットワークが組み込まれる組み込み環境では、そのニューラルネットワークに用いられる計算リソースが制限される。そこで、その高いビット精度を有する学習済みのニューラルネットワークは、組み込み向け変換によって、低いビット精度のニューラルネットワーク(図1中の変換後NN)に変換される。
このような組み込み向け変換では、その学習済みのニューラルネットワークに含まれる各層を構成するパラメータおよび出力データYのビット精度が変換される。つまり、パラメータおよび出力データYのビット精度が削減される。例えば、Float型の32ビットがInt型の8ビットなどに変換される。このようなビット精度の変換が行われた各層からなるニューラルネットワークのビット精度は低い。したがって、その変換後のニューラルネットワークは、計算リソースが少なくても、画像データに映し出されているオブジェクトを高速に認識することができる。組み込み環境では、このような変換後の低精度のニューラルネットワークが実装される。例えば、自動車に実装された変換後のニューラルネットワークは、車載カメラによる撮影によって得られた画像データの入力に対して、その画像データに映し出されているオブジェクトの認識率を出力する。
しかし、高いビット精度を有する学習済みのニューラルネットワークに含まれる全ての層のビット精度を削減すれば、認識精度が大幅に低下してしまう可能性がある。そこで、例えば、その学習済みのニューラルネットワークに含まれる複数の層のそれぞれのビット精度を互いに異ならせることによって、認識精度の低下を抑えることができる。
図2は、ニューラルネットワークの変換の一例を示す図である。
例えば、高いビット精度を有する学習済みのニューラルネットワークに含まれる全ての層は、32ビットのビット精度を有する。この学習済みのニューラルネットワークに対して上述の組み込み向け変換が行われる。つまり、ビット精度の変換が行われる。この変換では、その学習済みのニューラルネットワークは、それぞれのビット精度が異なる複数の層を含むニューラルネットワークに変換される。例えば、変換後のニューラルネットワークは、32ビットのビット精度を有する層と、16ビットのビット精度を有する層とを含む。
このような組み込み向け変換によって、ニューラルネットワークの認識精度の低下を抑えることができる。
しかし、例えば上記特許文献1のパラメータ設定方法から想定されるニューラルネットワーク最適化方法では、ビット削減される層が経験的に決定される。なお、ビット削減は、ビット精度を削減する処理であって、高いビット精度を低いビット精度に変換する処理である。言い換えれば、ビット削減は、量子化、またはビット幅を短くする処理である。
図3は、従来技術から想定されるニューラルネットワーク最適化方法の概要を示す図である。
このニューラルネットワーク最適化方法では、図3に示すように、まず、高いビット精度のニューラルネットワークが生成される。例えば、このニューラルネットワークに含まれる各層のビット精度は32ビットである。そして、そのニューラルネットワークに含まれる各層に対してビット削減の優先度が経験的に決定される。その後、決定された優先度の順にしたがって各層に対するビット削減、すなわち量子化が行われる。例えば、まず、最も高い優先度の層に対してビット削減が行われ、そのビット削減によって生成されたニューラルネットワークの認識精度が評価される。そして、その認識精度が要求精度よりも高ければ、さらに、次に高い優先度の層に対してビット削減が行われ、そのビット削減によって生成されたニューラルネットワークの認識精度が評価される。このような、ビット削減と評価の繰り返しによって、ニューラルネットワークの最適化が行われる。
しかし、このニューラルネットワーク最適化方法では、経験的に選択される層に対してビット削減が行われるため、システマティックな最適化を行うことができない。その結果、高いビット精度のニューラルネットワークに含まれる層の数が多い場合には、最適解を見つけ出すことが難しい。
このような課題を解決するために、本開示の一態様に係るニューラルネットワーク最適化方法は、オブジェクトを示す評価用データの入力に対して前記オブジェクトの認識結果を出力する第1ニューラルネットワークに含まれる予め定められた複数の層のそれぞれについて、当該層を構成するパラメータのビット精度を削減する処理であるビット削減を行うことによって、当該層のビット削減が前記第1ニューラルネットワークの認識結果に与える影響度を導出する第1処理を行い、前記第1ニューラルネットワークに含まれる前記複数の層のうちの、前記複数の層のそれぞれの前記影響度に基づいて特定される少なくとも1つの層のそれぞれに対してビット削減を行うことによって、第2ニューラルネットワークを生成する第2処理を行う。例えば、前記第1処理では、前記第1ニューラルネットワークに含まれる前記複数の層のうちの1つの層である導出対象層の影響度を導出するときには、前記導出対象層に対してビット削減が行われていないときの認識結果に基づく第1評価値と、前記導出対象層に対してビット削減が行われているときの認識結果に基づく第2評価値との差分を算出することによって、前記導出対象層の前記影響度を導出してもよい。
これにより、第1ニューラルネットワーク(例えば、高精度ニューラルネットワーク)に含まれる複数の層のそれぞれの影響度が導出され、その影響度に基づいて特定される層に対してビット削減が行われる。したがって、経験的ではなく定量的に特定される層に対してビット削減を行うことができる。したがって、ニューラルネットワークの最適解を適切に見つけ出すことができる。つまり、認識精度の低下を抑えながらデータ量が削減されたニューラルネットワークであって、例えば組み込み環境に最適なニューラルネットワークを適切に見つけ出すことができる。
また、前記第1処理では、前記第1ニューラルネットワークに含まれる前記複数の層のそれぞれに対してビット削減を行うことによって低精度ニューラルネットワークを生成し、前記評価用データの入力に対する前記低精度ニューラルネットワークの順伝播によって、前記低精度ニューラルネットワークに含まれる複数の層のそれぞれから出力される出力データを取得し、前記第1ニューラルネットワークにおいて、前記導出対象層よりも入力側の隣に前隣層があり、前記導出対象層よりも出力側の隣に後隣層がある場合、前記低精度ニューラルネットワークに含まれる複数の層のうちの、前記前隣層に対応する低精度前隣層からの前記出力データを前隣層出力データとして、ビット削減が行われていない前記導出対象層に入力し、前記前隣層出力データの前記導出対象層への入力に対する前記第1ニューラルネットワークの順伝播によって得られる認識結果に基づいて、前記第1評価値を導出し、前記低精度ニューラルネットワークに含まれる前記複数の層のうちの、前記導出対象層に対応する低精度導出対象層からの前記出力データを導出対象層出力データとして、ビット削減が行われていない前記後隣層に入力し、前記導出対象層出力データの前記後隣層への入力に対する前記第1ニューラルネットワークの順伝播によって得られる認識結果に基づいて、前記第2評価値を導出してもよい。
これにより、第1ニューラルネットワークに含まれる入力層から前隣層までの各層のビット精度が低く、第1ニューラルネットワークに含まれる後隣層から出力層までの各層のビット精度が高い場合において、導出対象層の影響度が導出される。つまり、このような場合において、導出対象層に対してビット削減が行われていないときの第1評価値と、導出対象層に対してビット削減が行われているときの第2評価値との差分が、導出対象層の影響度として導出される。したがって、導出対象層に対してビット削減が行われるか否かによって、第1ニューラルネットワークの認識結果に与える影響度をより顕著に、かつ、より適切に導出することができる。その結果、ニューラルネットワークの最適解をより適切に見つけ出すことができる。
また、前記第2処理では、前記第1ニューラルネットワークに含まれる前記複数の層のうちの、それぞれ閾値以下の影響度を有する少なくとも1つの層を特定し、特定された前記少なくとも1つの層のそれぞれに対してビット削減を行ってもよい。
これにより、ビット削減の対象とされる少なくとも1つの層を容易に特定することができる。さらに、閾値の設定によって、複数の層を特定することができ、ニューラルネットワークの最適化を迅速に行うことができる。
また、前記ニューラルネットワーク最適化方法では、さらに、前記第2ニューラルネットワークへの前記評価用データの入力に対して出力される認識結果に基づく評価値であって、前記オブジェクトの認識精度が高いほど大きい値を示す第3評価値を導出する第3処理を行い、前記第3評価値が目標値よりも大きい場合には、前記閾値を大きくすることによって前記閾値を更新する第4処理を行い、前記第2ニューラルネットワークを新たな第1ニューラルネットワークとして用い、かつ、更新された前記閾値を用いて、前記第2処理、前記第3処理、および前記第4処理を繰り返し実行し、繰り返し実行される前記第2処理では、前記新たな第1ニューラルネットワークに含まれる前記複数の層のうちの、ビット削減が未だ行われていない少なくとも1つの層から、それぞれ更新された前記閾値以下の影響度を有する少なくとも1つの層を特定してもよい。
これにより、第3評価値が目標値よりも大きい限り、閾値が更新され、ビット削減が繰り返される。したがって、必要以上の認識精度を持つことのないニューラルネットワークを適切に見つけ出すことができる。
また、前記第2処理では、前記第1ニューラルネットワークに含まれる前記複数の層のうちの、最も小さい影響度を有する1つの層を特定し、特定された前記1つの層に対してビット削減を行ってもよい。
これにより、閾値の設定などの事前処理を行うことなく、ビット削減の対象とされる層を容易に特定することができる。
また、前記ニューラルネットワーク最適化方法では、さらに、前記第2ニューラルネットワークへの前記評価用データの入力に対して出力される認識結果に基づく評価値であって、前記オブジェクトの認識精度が高いほど大きい値を示す第3評価値を導出する第3処理を行い、前記第3評価値が目標値よりも大きい場合には、前記第2ニューラルネットワークを新たな第1ニューラルネットワークとして用いて、前記第2処理および前記第3処理を繰り返し実行し、繰り返し実行される前記第2処理では、前記新たな第1ニューラルネットワークに含まれる前記複数の層のうちの、ビット削減が未だ行われていない少なくとも1つの層から、最も小さい影響度を有する1つの層を特定してもよい。
これにより、第3評価値が目標値よりも大きい限り、複数の層に対するビット削減がそれらの層の影響度の小さい順に行われる。したがって、必要以上の認識精度を持つことのないニューラルネットワークを適切に見つけ出すことができる。
また、前記ニューラルネットワーク最適化方法では、さらに、前記第2ニューラルネットワークへの前記評価用データの入力に対して出力される認識結果に基づく評価値であって、前記オブジェクトの認識精度が高いほど大きい値を示す第3評価値を導出する第3処理を行い、前記第3評価値が目標値よりも大きい場合には、前記第2ニューラルネットワークを新たな第1ニューラルネットワークとして用いて、前記第1処理、前記第2処理および前記第3処理を繰り返し実行してもよい。
これにより、第2ニューラルネットワーク(例えば、ビット削減ニューラルネットワーク)が新たな第1ニューラルネットワークとして扱われ、その新たな第1ニューラルネットワークに含まれる複数の層のそれぞれの影響度が導出される。そして、それらの影響度を用いて、その新たな第1ニューラルネットワークに含まれる複数の層からビット削減される層が特定される。したがって、元の第1ニューラルネットワークに対して導出された古い影響度を用いることなく、新たな第1ニューラルネットワークに対して適切な影響度を用いることができる。その結果、ニューラルネットワークの最適解をより適切に見つけ出すことができる。
また、前記ニューラルネットワーク最適化方法では、さらに、前記第2処理および前記第3処理が繰り返し実行され、最後に実行された前記第3処理において導出された前記第3評価値が目標値よりも小さい場合には、最後の前記第2処理の直前に実行された前記第2処理によって生成された前記第2ニューラルネットワークを、最終的なニューラルネットワークとして出力してもよい。
これにより、最後の第2処理によって生成された第2ニューラルネットワークの第3評価値が目標値よりも小さくても、その直前の第2処理によって生成された第2ニューラルネットワークの第3評価値は目標値よりも大きい。このような目標値よりも大きい第3評価値が導出される第2ニューラルネットワークが、最終的なニューラルネットワークとして出力されるため、認識精度を一定以上に保ちながらデータ量が十分に削減されたニューラルネットワークをより適切に見つけ出すことができる。
以下、実施の形態について、図面を参照しながら具体的に説明する。
なお、以下で説明する実施の形態は、いずれも包括的または具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置および接続形態、ステップ、ステップの順序などは、一例であり、本開示を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。
また、各図は、模式図であり、必ずしも厳密に図示されたものではない。また、各図において、同じ構成部材については同じ符号を付している。
(実施の形態)
図4は、本実施の形態におけるニューラルネットワーク最適化装置の構成例を示すブロック図である。
本実施の形態におけるニューラルネットワーク最適化装置10は、ニューラルネットワークの最適解を適切に見つけ出すことができる装置であって、評価用データ格納部11と、高NN生成部12と、高NN格納部13と、低NN生成部14と、低NN格納部15と、影響度導出部16と、ビット削減層特定部17とを備える。
評価用データ格納部11は、ニューラルネットワークを評価するための複数の評価用データを格納している。例えば、これらの評価用データは、オブジェクトが映し出された画像を示すデータ、すなわち画像データである。
高NN生成部12は、評価用データ格納部11に格納されている複数の評価用データを用いたニューラルネットワークの学習を行うことによって、高いビット精度のニューラルネットワークを生成する。なお、その学習では、例えば、評価用データ格納部11に格納されている複数の評価用データと、それらの評価用データに映し出されているオブジェクトの種別とが、教師データとして用いられる。以下、この高いビット精度のニューラルネットワークは、高精度ニューラルネットワークまたは第1ニューラルネットワークとも称される。そして、高NN生成部12は、その生成された高精度ニューラルネットワークを高NN格納部13に格納する。
低NN生成部14は、高NN格納部13に格納されている高精度ニューラルネットワークから低いビット精度のニューラルネットワークを生成する。以下、この低いビット精度のニューラルネットワークは、低精度ニューラルネットワークとも称される。そして、低NN生成部14は、その低精度ニューラルネットワークを低NN格納部15に格納する。
影響度導出部16は、高NN格納部13に格納されている高精度ニューラルネットワークに含まれる予め定められた複数の層のそれぞれの影響度を導出する。なお、その複数の層のそれぞれは、図1に示すように複数のパラメータから構成されている。
ビット削減層特定部17は、影響度導出部16によって導出された複数の層のそれぞれの影響度に基づいて、それらの層からビット削減の対象とされる層を特定する。そして、ビット削減層特定部17は、高精度ニューラルネットワークに含まれる予め定められた複数の層のうち、その特定された層に対してビット削減を行うことによって、ビット削減ニューラルネットワークを生成する。なお、このビット削減ニューラルネットワークは、第2ニューラルネットワークとも称される。
また、本実施の形態における評価用データ格納部11、高NN格納部13、および低NN格納部15は、ハードディスク、RAM(Read Only Memory)、ROM(Random Access Memory)、または半導体メモリなどである。なお、これらの格納部は、揮発性であっても不揮発性であってもよい。
図5は、本実施の形態におけるビット精度の変換を説明するための図である。
例えば、本実施の形態におけるニューラルネットワーク最適化装置10は、図5の(a)に示すように、ニューラルネットワークに含まれる層を構成するパラメータのビット精度を高ビット精度から低ビット精度に変換する。このような変換は、ビット精度を削減する処理であって、ビット削減とも呼ばれる。例えば、Float型の32ビットは、Int型の16ビットまたは8ビットに変換され、double型の64ビットは、Int型の16ビットまたは8ビットに変換される。また、Int型の16ビットは、Int型の8ビットまたは4ビットに変換される。なお、このようなビット精度の変換、すなわちビット削減は、後述のように、低NN生成部14、影響度導出部16およびビット削減層特定部17のそれぞれによって行われる。
また、このようなビット精度の変換は、パラメータの量子化によって実現される。図5の(b)に示される2つのグラフのうちの一方(すなわち図5中の上側のグラフ)は、ニューラルネットワークの層に含まれる変換前の各パラメータによって示される値の分布を示すグラフである。例えば、これらの変換前のパラメータによって示される値は、Float型の32ビットで表現される。このグラフの横軸は、各パラメータによって示される値を示し、縦軸は、その値を示すパラメータの出現頻度を示す。
例えば、これらのパラメータの量子化では、ニューラルネットワーク最適化装置10は、まず、それらのパラメータによって示される値のうちの最大値と最小値とを抽出する。そして、ニューラルネットワーク最適化装置10は、その最小値から最大値までの幅を、変換後のビット精度で表現し得る値の数で分割することによって、変換前のビット精度で示される値を、変換後のビット精度で示される値に変換する。
これにより、図5の(b)に示される2つのグラフのうちの上側のグラフは、下側のグラフのように変換される。この図5の(b)に示される下側のグラフは、ニューラルネットワークの層に含まれる変換後の各パラメータによって示される値の分布を示すグラフである。例えば、これらの変換後のパラメータによって示される値は、Int型の8ビットで表現される。
図6は、本実施の形態におけるニューラルネットワーク最適化方法の概要を示す図である。
本実施の形態におけるニューラルネットワーク最適化装置10の高NN生成部12は、まず、図6に示すように、高精度ニューラルネットワークを学習によって生成する。例えば、この高精度ニューラルネットワークに含まれる各層のビット精度は32ビットである。
そして、影響度導出部16は、低NN生成部14によって生成された低精度ニューラルネットワークを用いて、高精度ニューラルネットワークに含まれる各層に対して影響度を導出する。この影響度は、層に対するビット削減が高精度ニューラルネットワークの認識結果に与える影響の度合いを数値として示す。
つまり、本実施の形態における影響度導出部16は、オブジェクトを示す評価用データの入力に対してそのオブジェクトの認識結果を出力する高精度ニューラルネットワークに含まれる予め定められた複数の層のそれぞれについて、その層を構成するパラメータのビット精度を削減する処理であるビット削減を行うことによって、その層のビット削減が高精度ニューラルネットワークの認識結果に与える影響度を導出する第1処理を行う。なお、本実施の形態における影響度導出部16は、その第1処理を行う第1処理部として構成されていてもよく、影響度導出部16および低NN生成部14を含む構成要素群が、その第1処理を行う第1処理部として構成されていてもよい。
次に、ビット削減層特定部17は、影響度導出部16によって導出された各層の影響度に基づいてビット削減対象の層を選択し、その選択された層に対して、ビット精度の変換、すなわちビット削減を行う。つまり、本実施の形態におけるビット削減層特定部17は、高精度ニューラルネットワークに含まれる複数の層のうちの、その複数の層のそれぞれの影響度に基づいて特定される少なくとも1つの層のそれぞれに対してビット削減を行うことによって、ビット削減ニューラルネットワークを生成する第2処理を行う。なお、本実施の形態におけるビット削減層特定部17は、その第2処理を行う第2処理部として構成されていてもよい。
そして、ビット削減層特定部17は、ビット削減ニューラルネットワークの認識結果を評価する。この認識結果に基づく評価値が目標値よりも大きければ、ビット削減層特定部17は、さらに、影響度に基づいて特定される他の少なくとも1つの層のそれぞれに対してビット削減を行う。このような、ビット削減と評価の繰り返しによって、ニューラルネットワークの最適化が行われる。
これにより、本実施の形態におけるニューラルネットワーク最適化方法では、経験的ではなく定量的に選択または特定される層に対してビット削減が行われる。したがって、ニューラルネットワークの最適解を適切に見つけ出すことができる。つまり、認識精度の低下を抑えながらデータ量が削減されたニューラルネットワークであって、組み込み環境に最適なニューラルネットワークを適切に見つけ出すことができる。また、局所解に陥ることを抑制することができる。
図7は、本実施の形態における低NN生成部14の処理を説明するための図である。
低NN生成部14は、図7に示すように、高精度ニューラルネットワークNNTを低精度ニューラルネットワークNNSに変換する。つまり、低NN生成部14は、高精度ニューラルネットワークNNTに含まれる複数の層のそれぞれに対して、ビット精度の変換、すなわちビット削減を行うことによって、低精度ニューラルネットワークNNSを生成する。例えば、高精度ニューラルネットワークNNTに含まれる各層が有するFloat型の32ビットのビット精度は、Int型の8ビットのビット精度に変換される。これにより、それぞれInt型の8ビットのビット精度を有する複数の層を含む低精度ニューラルネットワークNNSが生成される。低NN生成部14は、その生成された低精度ニューラルネットワークNNSを低NN格納部15に格納する。
<影響度導出部の処理>
図8は、本実施の形態における影響度導出部16の処理の一例を説明するための図である。なお、図8において、ドットのパターンで示される層は、低精度ニューラルネットワークNNSに含まれる層であり、斜線のハッチングで示される層は、高精度ニューラルネットワークNNTに含まれる層である。
影響度導出部16は、上述のように、高精度ニューラルネットワークNNTに含まれる予め定められた複数の層のそれぞれの影響度Iを導出する。予め定められた複数の層は、連続して配置されている複数の層であって、それぞれビット削減の候補とされる層である。例えば、影響度導出部16は、その予め定められた複数の層のそれぞれを順に導出対象層として選択し、その導出対象層が選択されるごとに、その導出対象層の影響度Iを導出する。
具体的には、影響度導出部16は、図8に示すように、高精度ニューラルネットワークNNTに含まれる上述の複数の層のうちの1つの層である導出対象層(N-1)の影響度IN-1を導出する。なお、Nは、ニューラルネットワークに含まれる複数の層のそれぞれを識別するために割り当てられるパラメータであって、入力層から出力層に向かって1ずつ増加する0以上の整数である。影響度導出部16は、その影響度IN-1を導出するために、図8の(a)および(b)に示すように、まず、第1評価値である評価値PN-1と、第2評価値である評価値PNとを導出する。評価値PN-1は、導出対象層(N-1)に対してビット削減が行われていないときの認識結果に基づく評価値である。評価値PNは、導出対象層(N-1)に対してビット削減が行われているときの認識結果に基づく評価値である。そして、影響度導出部16は、評価値PN-1と評価値PNとの差分を算出することによって、導出対象層(N-1)の影響度IN-1を導出する。
より具体的には、影響度導出部16は、評価用データ格納部11から評価用データを読み出し、低NN格納部15から低精度ニューラルネットワークNNSを読み出す。そして、影響度導出部16は、評価用データの入力に対する低精度ニューラルネットワークNNSの順伝播によって、低精度ニューラルネットワークNNSに含まれる複数の層のそれぞれから出力される出力データを取得する。
ここで、高精度ニューラルネットワークNNTには、導出対象層(N-1)よりも入力側の隣に前隣層(N-2)があり、導出対象層(N-1)よりも出力側の隣に後隣層Nがある。
影響度導出部16は、低精度ニューラルネットワークNNSに含まれる複数の層のうちの、上述の前隣層(N-2)に対応する低精度前隣層(N-2)からの出力データを、前隣層出力データとして、ビット削減が行われていない導出対象層(N-1)に入力する。そして、影響度導出部16は、図8の(a)に示すように、前隣層出力データの導出対象層(N-1)への入力に対する高精度ニューラルネットワークNNTの順伝播によって得られる認識結果に基づいて、評価値PN-1を導出する。
つまり、影響度導出部16は、低精度前隣層(N-2)からの出力データである前隣層出力データのビット精度を元のビット精度に変換する。例えば、図7に示すように、前隣層出力データのビット精度がInt型の8ビットであれば、影響度導出部16は、そのビット精度をFloat型の32ビットに変換する。そして、影響度導出部16は、その元のビット精度に変換された前隣層出力データを、ビット削減が行われていない導出対象層(N-1)に入力する。その後、影響度導出部16は、高精度ニューラルネットワークNNTにおける導出対象層(N-1)から出力層までの範囲で順伝播を実行する。例えば、その順伝播では、導出対象層(N-1)からの出力データaT
N-1は、aT
N-1=f(aS
N-2WT
N-1+bT
N-1)によって算出される。aS
N-2は、低精度前隣層(N-2)からの出力データ、すなわち前隣層出力データであり、WT
N-1は、導出対象層(N-1)の重みであり、bT
N-1は、導出対象層(N-1)のバイアスである。このような順伝播によって得られる認識結果に基づいて、第1評価値として評価値PN-1が導出される。
さらに、影響度導出部16は、低精度ニューラルネットワークNNSに含まれる複数の層のうちの、導出対象層(N-1)に対応する低精度導出対象層(N-1)からの出力データを導出対象層出力データとして、ビット削減が行われていない後隣層Nに入力する。そして、影響度導出部16は、図8の(b)に示すように、導出対象層出力データの後隣層Nへの入力に対する高精度ニューラルネットワークNNTの順伝播によって得られる認識結果に基づいて、評価値PNを導出する。
つまり、影響度導出部16は、低精度導出対象層(N-1)からの出力データである導出対象層出力データのビット精度を元のビット精度に変換する。例えば、図7に示すように、前隣層出力データのビット精度がInt型の8ビットであれば、そのビット精度をFloat型の32ビットに変換する。そして、影響度導出部16は、その元のビット精度に変換された導出対象層出力データを、ビット削減が行われていない後隣層Nに入力する。その後、影響度導出部16は、高精度ニューラルネットワークNNTにおける後隣層Nから出力層までの範囲で順伝播を実行する。例えば、その順伝播では、後隣層Nからの出力データaT
Nは、aT
N=f(aS
N-1WT
N+bT
N)によって算出される。aS
N-1は、低精度導出対象層(N-1)からの出力データ、すなわち導出対象層出力データであり、WT
Nは、後隣層Nの重みであり、bT
Nは、後隣層Nのバイアスである。このような順伝播によって得られる認識結果に基づいて、第2評価値として評価値PNが導出される。
このように、評価値PN-1と評価値PNとが導出されると、影響度導出部16は、導出対象層(N-1)の影響度IN-1をIN-1=PN-1-PNによって算出する。例えば、図8に示すように、PN-1=0.7であって、PN=0.4であれば、影響度導出部16は、導出対象層(N-1)の影響度IN-1=0.3を算出する。
このように、本実施の形態では、高精度ニューラルネットワークNNTに含まれる入力層から前隣層までの各層のビット精度が低く、高精度ニューラルネットワークNNTに含まれる後隣層から出力層までの各層のビット精度が高い状況において、導出対象層の影響度が導出される。つまり、このような場合において、導出対象層に対してビット削減が行われていないときの第1評価値と、導出対象層に対してビット削減が行われているときの第2評価値との差分が、導出対象層の影響度として導出される。したがって、導出対象層に対してビット削減が行われるか否かによって、高精度ニューラルネットワークNNTの認識結果に与える影響度をより顕著に、かつ、より適切に導出することができる。その結果、ニューラルネットワークの最適解をより適切に見つけ出すことができる。
図9は、本実施の形態における評価値の一例を示す図である。
例えば、評価値は、図9の(a)に示すように、ニューラルネットワークから認識結果として得られるスコアの平均または認識精度であってもよい。具体的な一例として、犬が映し出されている入力画像が評価用データとしてニューラルネットワークに入力され、そのニューラルネットワークから犬の認識結果「60%」が出力される。同様に、そのニューラルネットワークから鳥の認識結果「80%」、猫の認識結果「20%」、および他の犬の認識結果「30%」が出力される。このような場合、スコアの平均は、それらの認識結果の平均値である47.5%である。また、認識結果の閾値が例えば50%である場合、犬と猫に対しては正しい認識が行われ、鳥と他の犬に対しては間違った認識が行われている。したがって、認識が行われた回数のうち、正しい認識が行われた回数の割合である認識精度は、50%である。したがって、評価値は、スコアの平均「47.5%」であってもよく、認識精度「50%」であってもよい。
または、評価値は、図9の(b)に示すように、ニューラルネットワークの認識結果から得られる枠の重なり率(IoUともいう)であってもよい。具体的な一例として、車などのオブジェクトが映し出されている入力画像が評価用データとしてニューラルネットワークに入力され、そのニューラルネットワークから認識結果として、そのオブジェクトが映し出されている枠が出力される。上述の枠の重なり率は、認識結果面積と正解枠面積との和に対する重なり面積の比率である。認識結果面積は、認識結果として出力された枠によって囲まれている領域の面積であり、正解枠面積は正解枠によって囲まれている領域の面積である。そして、重なり面積は、それらの領域が重なっている部分の面積である。
または、評価値は、図9の(c)に示すように、ニューラルネットワークの認識結果から得られるAPまたはmAPであってもよい。具体的な一例として、犬が映し出されている入力画像が評価用データとしてニューラルネットワークに入力され、そのニューラルネットワークから犬の認識結果「70%」が出力される。認識結果の閾値が例えば50%である場合、その犬に対しては正しい認識が行われている。一方、他の犬が映し出されている入力画像が評価用データとしてニューラルネットワークに入力され、そのニューラルネットワークから他の犬の認識結果「20%」が出力される。認識結果の閾値が例えば50%である場合、その他の犬に対しては間違った認識が行われている。このような場合、犬に対して認識が行われた回数のうち、正しい認識が行われた回数の割合であるAPは、50%である。同様に、猫に対して認識が行われた回数のうち、正しい認識が行われた回数の割合であるAPは、0%であり、鳥に対して認識が行われた回数のうち、正しい認識が行われた回数の割合であるAPは、100%である。このような場合、これらのAPの平均であるmAPは、50%である。このように、APは、同じ種別のオブジェクト(すなわちクラス)に対する認識精度であり、mAPは、複数のAPの平均である。
このように、評価値は、複数の評価用データのそれぞれをニューラルネットワークに入力し、その複数の評価用データのそれぞれの入力に対してニューラルネットワークから出力される認識結果に基づいて導出される値である。
なお、本実施の形態におけるニューラルネットワークから得られる認識結果は、例えば、認識率またはスコアであるが、これに限定されるものではない。例えば、その認識結果は、認識スコアとオブジェクトの位置(つまり、入力画像における二次元座標位置)であってもよい。また、ニューラルネットワークが入力データを変換し、変換後のデータを出力する場合には、認識結果は、その変換後のデータであってもよい。変換後のデータは、具体的には、入力データに対してノイズが除去されたデータであってもよく、入力データに対して超解像化が行われたデータであってもよい。また、ニューラルネットワークがオブジェクトの将来の状態を予測(回帰)する場合には、認識結果は、その予測されたオブジェクトの将来の状態であってもよい。
図10は、本実施の形態における影響度導出部16の処理の具体例を説明するための図である。
影響度導出部16は、低NN格納部15に格納されている複数の評価用データのそれぞれを低精度ニューラルネットワークNNSに入力する。そして、影響度導出部16は、評価用データの入力ごとに、その評価用データの入力に対する低精度ニューラルネットワークNNSの順伝播によって、低精度ニューラルネットワークNNSに含まれる複数の層のそれぞれから出力される出力データを取得する。さらに、影響度導出部16は、それらの出力データのビット精度を元のビット精度に変換する。例えば、それらの出力データのビット精度がInt型の8ビットであれば、影響度導出部16は、そのビット精度をFloat型の32ビットに変換する。つまり、出力データによってInt型の8ビットで示される値は、Float型の32ビットで表現される。
そして、影響度導出部16は、高精度ニューラルネットワークNNTに含まれるN=2によって示される層に、低精度ニューラルネットワークNNSに含まれるN=1によって示される層から出力された上述の複数の出力データを入力する。なお、それらの出力データのビット精度は、高精度ニューラルネットワークNNTに含まれるN=2によって示される層と同じビット精度に変換されている。そして、影響度導出部16は、その出力データの入力ごとに、高精度ニューラルネットワークNNTに含まれるN=2によって示される層から出力層までの順伝播を実行することによって、N=2に対応する評価値として例えばP2=0.80を導出する。
同様に、影響度導出部16は、高精度ニューラルネットワークNNTに含まれるN=3によって示される層に、低精度ニューラルネットワークNNSに含まれるN=2によって示される層から出力された上述の複数の出力データを入力する。なお、それらの出力データのビット精度は、高精度ニューラルネットワークNNTに含まれるN=3によって示される層と同じビット精度に変換されている。そして、影響度導出部16は、その出力データの入力ごとに、高精度ニューラルネットワークNNTに含まれるN=3によって示される層から出力層までの順伝播を実行することによって、N=3に対応する評価値として例えばP3=0.79を導出する。
同様に、影響度導出部16は、高精度ニューラルネットワークNNTに含まれるN=4によって示される層に、低精度ニューラルネットワークNNSに含まれるN=3によって示される層から出力された上述の複数の出力データを入力する。なお、それらの出力データのビット精度は、高精度ニューラルネットワークNNTに含まれるN=4によって示される層と同じビット精度に変換されている。そして、影響度導出部16は、その出力データの入力ごとに、高精度ニューラルネットワークNNTに含まれるN=4によって示される層から出力層までの順伝播を実行することによって、N=4に対応する評価値として例えばP4=0.73を導出する。
影響度導出部16は、これらの評価値に基づいて、高精度ニューラルネットワークNNTに含まれるN=2によって示される層の影響度として、I2=P2-P3=0.01を算出する。さらに、影響度導出部16は、高精度ニューラルネットワークNNTに含まれるN=3によって示される層の影響度として、I3=P3-P4=0.06を算出する。
図11は、本実施の形態における影響度導出部16によって導出された影響度の一例を示す図である。
例えば、図11に示すように、高精度ニューラルネットワークNNTに含まれる予め定められた複数の層のそれぞれに対して影響度が算出される。具体的には、N=1の層の影響度として0.001が算出され、N=2の層の影響度として0.01が算出され、N=3の層の影響度として0.06が算出され、N=4の層の影響度として0.09が算出される。
図12は、本実施の形態におけるニューラルネットワーク最適化装置10による全体的な処理の一例を示すフローチャートである。
まず、ニューラルネットワーク最適化装置10の高NN生成部12は、評価用データ格納部11に格納されている複数の評価用データを用いた学習を行うことによって、高精度ニューラルネットワークNNTを生成する(ステップS11)。
次に、低NN生成部14は、ステップS11で生成された高精度ニューラルネットワークNNTのビット精度を変換することによって、低精度ニューラルネットワークNNSを生成する(ステップS12)。
そして、影響度導出部16は、ステップS11で生成された高精度ニューラルネットワークNNTと低精度ニューラルネットワークNNSとを用いて、高精度ニューラルネットワークNNTに含まれる予め定められた複数の層のそれぞれの影響度を導出する(ステップS100)。
次に、ビット削減層特定部17は、ステップS100で導出された複数の層のそれぞれの影響度を用いて、最適化されたニューラルネットワークを生成する(ステップS200)。
図13は、本実施の形態における影響度導出部16による処理の一例を示すフローチャートである。具体的には、図13は、図12のステップS100の処理を詳細に示すフローチャートである。
まず、影響度導出部16は、低精度ニューラルネットワークNNSに複数の評価用データのそれぞれを入力し、それらの評価用データごとに、その低精度ニューラルネットワークNNSの入力層から最終層(すなわち出力層)までの順伝播を実行する(ステップS101)。その順伝播による各層からの出力データは保存される。
次に、影響度導出部16は、高精度ニューラルネットワークNNTに含まれる全ての層からビット削減の対象範囲[S,G]を設定する(ステップS102)。なお、SおよびGのそれぞれは0以上の整数であって、GはSよりも大きい。つまり、上述の全ての層のうち、N=Sによって示される層(すなわち層(N=S))から、N=Gによって示される層(すなわち層(N=G))までの範囲が、ビット削減の対象範囲である。言い換えれば、その対象範囲に含まれる層は、ビット削減の候補とされる層である。また、上述の予め定められた複数の層は、層(N=S)から層(N=G)までの範囲に含まれる複数の層である。なお、対象範囲[S,G]は、高精度ニューラルネットワークNNTに含まれる全ての層であってもよい。
次に、影響度導出部16は、パラメータNをN=Sに設定する(ステップS103)。つまり、影響度導出部16はNを初期化する。そして、影響度導出部16は、低精度ニューラルネットワークNNSの中間層(N-1)からの出力データXのビット精度を高ビット精度に変換する(ステップS104)。つまり、出力データXのビット精度が元のビット精度に変換される。
次に、影響度導出部16は、高精度ニューラルネットワークNNTの層Nに、ステップS104でビット精度が変換された出力データXを入力し、層Nから出力層までの順伝播を実行する(ステップS105)。そして、影響度導出部16は、順伝播の結果に基づいて評価値PNを導出する(ステップS106)。ステップS104およびS105の処理は、複数の評価用データのそれぞれに対して、すなわち、複数の出力データのそれぞれに対して行われる。したがって、ステップS106では、その複数の評価用データのそれぞれから得られる順伝播の結果である評価結果に基づいて、評価値PNが導出される。
次に、影響度導出部16は、ステップS106で導出された評価値PNを用いて、層(N-1)の影響度IN-1を、IN-1=PN-1-PNによって算出する(ステップS107)。ここで、N=Sの場合には、評価値PS-1は算出されていないため、層(S-1)の影響度IS-1は算出されず、ステップS107の処理はスキップされる。
そして、影響度導出部16は、NがGよりも大きいか否かを判定し(ステップS108)、NがGよりも大きくないと判定した場合には(ステップS108のNo)、Nに対してインクリメントを行う(ステップS109)。一方、影響度導出部16は、NがGよりも大きいと判定した場合には(ステップS108のYes)、影響度を導出する処理を終了する。
<ビット削減層特定部の処理>
本実施の形態におけるビット削減層特定部17は、上述のように影響度導出部16によって導出された複数の層のそれぞれの影響度を用いて、高精度ニューラルネットワークNNTからビット削減される層を特定する。そして、ビット削減層特定部17は、その特定された層に対してビット削減を行うことによって、ビット削減ニューラルネットワークを生成する。また、ビット削減層特定部17は、そのビット削減ニューラルネットワークを評価する。その結果、ビット削減層特定部17は、そのビット削減ニューラルネットワークが最適化されたニューラルネットワークでなければ、そのビット削減ニューラルネットワークを新たな高精度ニューラルネットワークNNTとして扱う。そして、ビット削減層特定部17は、新たな高精度ニューラルネットワークNNTからビット削減ニューラルネットワークを生成する処理を、上述の影響度を用いて繰り返す。その結果、最適化されたニューラルネットワークが生成される。
ここで、ビット削減層特定部17は、互いに異なる3つの特定処理のうちの何れか1つの処理を行うことによって、最適化されたニューラルネットワークを生成する。3つの特定処理は、閾値利用特定処理、最小影響度特定処理、および影響度更新特定処理である。
[閾値利用特定処理]
図14は、ビット削減層特定部17による閾値利用特定処理の一例を模式的に示す図である。
ビット削減層特定部17は、高精度ニューラルネットワークNNTの対象範囲[S,G]に含まれる複数の層のうち、それぞれ閾値K以下の影響度を有する少なくとも1つの層を特定し、その特定された少なくとも1つの層のそれぞれに対してビット削減を行う。その結果、ビット削減ニューラルネットワークが生成される。そして、ビット削減層特定部17は、評価用データ格納部11に格納されている評価用データを用いて、そのビット削減ニューラルネットワークの評価値を導出し、その評価値が目標値よりも大きいか否かを判定する。その結果、評価値が目標値よりも大きければ、ビット削減層特定部17は、そのビット削減ニューラルネットワークを新たな高精度ニューラルネットワークNNTとして扱い、閾値Kを変更する。具体的には、閾値Kは、より大きい値に変更される。そして、ビット削減層特定部17は、新たな高精度ニューラルネットワークNNTと、その変更された閾値Kとを用いて、ビット削減ニューラルネットワークの生成を繰り返す。その結果、最適化されたニューラルネットワークが生成される。
図15は、ビット削減層特定部17による閾値利用特定処理の一例を示すフローチャートである。
ビット削減層特定部17は、まず、閾値Kを設定し(ステップS201)、ビット削減が行われる直前のニューラルネットワークNN*として、高精度ニューラルネットワークNNTを保持する(ステップS202)。
次に、ビット削減層特定部17は、高精度ニューラルネットワークNNTの対象範囲[S,G]から、閾値K以下の影響度を有する層を特定し、その特定された層に対してビット削減を行う(ステップS203)。なお、複数の層が特定されれば、その複数の層のそれぞれに対してビット削減が行われる。これにより、ビット削減ニューラルネットワークが生成される。つまり、上述の第2処理が行われる。そして、ビット削減層特定部17は、そのビット削減ニューラルネットワーク、すなわちビット削減後の高精度ニューラルネットワークNNTの評価値を導出する(ステップS204)。
次に、ビット削減層特定部17は、ステップS204で導出された評価値が目標値よりも大きいか否かを判定し(ステップS205)、大きいと判定する場合には(ステップS205のYes)、閾値Kを大きい値に変更する(ステップS206)。そして、ビット削減層特定部17は、ビット削減ニューラルネットワークを新たな高精度ニューラルネットワークNNTとして扱い、ステップS202からの処理を繰り返し実行する。したがって、ステップS202では、そのビット削減ニューラルネットワークである新たな高精度ニューラルネットワークNNTが、次のステップS203でビット削減が行われる直前のニューラルネットワークNN*として保持される。
一方、ビット削減層特定部17は、ステップS205で評価値が目標値よりも小さいと判定する場合には(ステップS205のNo)、最適化されたニューラルネットワークを決定する(ステップS207)。つまり、ステップS202で保持されているニューラルネットワークNN*であって、最後にビット削減が行われる直前のニューラルネットワークが、最適化されたニューラルネットワークとして決定される。なお、ステップS205において、評価値が目標値と等しいと判定される場合には、ビット削減層特定部17は、直前のステップS203によって生成されたビット削減ニューラルネットワークを、最適化されたニューラルネットワークとして決定する。
このように、本実施の形態におけるビット削減層特定部17は、ステップS204の処理として第3処理を行う。この第3処理では、ビット削減層特定部17は、ビット削減ニューラルネットワークへの評価用データの入力に対して出力される認識結果に基づく評価値であって、オブジェクトの認識精度が高いほど大きい値を示す第3評価値を導出する。そして、ビット削減層特定部17は、ステップS206のように、その第3評価値が目標値よりも大きい場合には、閾値Kを大きくすることによってその閾値Kを更新する第4処理を行う。その後、ビット削減層特定部17は、ビット削減ニューラルネットワークを新たな高精度ニューラルネットワークNNTとして用い、かつ、更新された閾値Kを用いて、上述の第2処理、第3処理、および第4処理を繰り返し実行する。また、繰り返し実行される第2処理では、ビット削減層特定部17は、新たな高精度ニューラルネットワークNNTに含まれる対象範囲[S,G]内の複数の層のうちの、ビット削減が未だ行われていない少なくとも1つの層から、それぞれ更新された閾値K以下の影響度を有する少なくとも1つの層を特定する。
また、その第2処理および第3処理が繰り返し実行され、最後に実行された第3処理において導出された第3評価値が目標値よりも小さい場合には、ビット削減層特定部17は、最後の第2処理の直前に実行された第2処理によって生成されたビット削減ニューラルネットワークを、最終的なニューラルネットワークとして出力する。つまり、ステップS202で保持されているニューラルネットワークNN*が、最終的なニューラルネットワーク、すなわち最適化されたニューラルネットワークとして決定される。
このように閾値利用特定処理では、ステップS204で導出される評価値が目標値よりも大きい限り、閾値が更新され、ビット削減が繰り返される。したがって、必要以上の認識精度を持つことのないニューラルネットワークを適切に見つけ出すことができる。さらに、最後のステップS203の処理によって生成されたビット削減ニューラルネットワークの評価値が目標値よりも小さくても、その直前のステップS203の処理によって生成されたビット削減ニューラルネットワークの評価値は目標値よりも大きい。このような目標値よりも大きい評価値が導出されるビット削減ニューラルネットワークが、最終的なニューラルネットワークとして出力されるため、認識精度を一定以上に保ちながらデータ量が十分に削減されたニューラルネットワークをより適切に見つけ出すことができる。
[最小影響度特定処理]
図16は、ビット削減層特定部17による最小影響度特定処理の一例を模式的に示す図である。
ビット削減層特定部17は、高精度ニューラルネットワークNNTの対象範囲[S,G]に含まれる複数の層のうちの、最も小さい影響度を有する1つの層を特定し、特定されたその1つの層に対してビット削減を行う。その結果、ビット削減ニューラルネットワークが生成される。そして、ビット削減層特定部17は、評価用データ格納部11に格納されている評価用データを用いて、そのビット削減ニューラルネットワークの評価値を導出し、その評価値が目標値よりも大きいか否かを判定する。その結果、評価値が目標値よりも大きければ、ビット削減層特定部17は、そのビット削減ニューラルネットワークを新たな高精度ニューラルネットワークNNTとして扱う。そして、ビット削減層特定部17は、その新たな高精度ニューラルネットワークNNTからのビット削減ニューラルネットワークの生成を繰り返す。つまり、その新たな高精度ニューラルネットワークNNTに含まれる、ビット削減が未だ行われていない少なくとも1つの層のうち、最も小さい影響度を有する1つの層に対してビット削減が行われることによって、ビット削減ニューラルネットワークが繰り返し生成される。つまり、影響度が小さい層から順に、その層に対してビット削減が行われる。その結果、最適化されたニューラルネットワークが生成される。
図17は、ビット削減層特定部17による最小影響度特定処理の一例を示すフローチャートである。
ビット削減層特定部17は、まず、ビット削減が行われる直前のニューラルネットワークNN*として、高精度ニューラルネットワークNNTを保持する(ステップS211)。
次に、ビット削減層特定部17は、高精度ニューラルネットワークNNTの対象範囲[S,G]から、最も小さい影響度を有する層を特定し、その特定された層に対してビット削減を行う(ステップS212)。これにより、ビット削減ニューラルネットワークが生成される。つまり、上述の第2処理が行われる。そして、ビット削減層特定部17は、そのビット削減ニューラルネットワーク、すなわちビット削減後の高精度ニューラルネットワークNNTの評価値を導出する(ステップS213)。
次に、ビット削減層特定部17は、ステップS213で導出された評価値が目標値よりも大きいか否かを判定する(ステップS214)。ここで、ビット削減層特定部17は、評価値が大きいと判定する場合には(ステップS214のYes)、ビット削減ニューラルネットワークを新たな高精度ニューラルネットワークNNTとして扱い、ステップS211からの処理を繰り返し実行する。したがって、ステップS211では、そのビット削減ニューラルネットワークである新たな高精度ニューラルネットワークNNTが、次のステップS212でビット削減が行われる直前のニューラルネットワークNN*として保持される。
一方、ビット削減層特定部17は、ステップS214で評価値が目標値よりも小さいと判定する場合には(ステップS214のNo)、最適化されたニューラルネットワークを決定する(ステップS215)。つまり、ステップS211で保持されているニューラルネットワークNN*であって、最後にビット削減が行われる直前のニューラルネットワークが、最適化されたニューラルネットワークとして決定される。なお、ステップS214において、評価値が目標値と等しいと判定される場合には、ビット削減層特定部17は、直前のステップS212によって生成されたビット削減ニューラルネットワークを、最適化されたニューラルネットワークとして決定する。
このように、本実施の形態におけるビット削減層特定部17は、ステップS213の処理として第3処理を行う。この第3処理では、ビット削減層特定部17は、ビット削減ニューラルネットワークへの評価用データの入力に対して出力される認識結果に基づく評価値であって、オブジェクトの認識精度が高いほど大きい値を示す第3評価値を導出する。そして、ビット削減層特定部17は、その第3評価値が目標値よりも大きい場合には、ビット削減ニューラルネットワークを新たな高精度ニューラルネットワークNNTとして用いて、上述の第2処理および第3処理を繰り返し実行する。また、繰り返し実行される第2処理では、ビット削減層特定部17は、新たな高精度ニューラルネットワークNNTに含まれる対象範囲[S,G]内の複数の層のうちの、ビット削減が未だ行われていない少なくとも1つの層から、最も小さい影響度を有する1つの層を特定する。
また、その第2処理および第3処理が繰り返し実行され、最後に実行された第3処理において導出された第3評価値が目標値よりも小さい場合には、ビット削減層特定部17は、最後の第2処理の直前に実行された第2処理によって生成されたビット削減ニューラルネットワークを、最終的なニューラルネットワークとして出力する。つまり、ステップS202で保持されているニューラルネットワークNN*が、最終的なニューラルネットワーク、すなわち最適化されたニューラルネットワークとして決定される。
このように最小影響度特定処理では、ステップS212で導出される評価値が目標値よりも大きい限り、複数の層に対するビット削減がそれらの層の影響度の小さい順に行われる。したがって、必要以上の認識精度を持つことのないニューラルネットワークを適切に見つけ出すことができる。さらに、最後のステップS212の処理によって生成されたビット削減ニューラルネットワークの評価値が目標値よりも小さくても、その直前のステップS212の処理によって生成されたビット削減ニューラルネットワークの評価値は目標値よりも大きい。このような目標値よりも大きい評価値が導出されるビット削減ニューラルネットワークが、最終的なニューラルネットワークとして出力されるため、認識精度を一定以上に保ちながらデータ量が十分に削減されたニューラルネットワークをより適切に見つけ出すことができる。
[影響度更新特定処理]
図18は、ビット削減層特定部17による影響度更新特定処理の一例を模式的に示す図である。
ビット削減層特定部17は、最適化されたニューラルネットワークを影響度更新特定処理によって生成する場合には、低NN生成部14および影響度導出部16のそれぞれによる処理結果を利用する。例えば、上述のように高精度ニューラルネットワークNNTの対象範囲[S,G]に含まれる複数の層のそれぞれの影響度が、影響度導出部16によって導出される。ビット削減層特定部17は、その複数の層のうちの、最も小さい影響度を有する1つの層を特定し、特定されたその1つの層に対してビット削減を行う。その結果、ビット削減ニューラルネットワークが生成される。そして、ビット削減層特定部17は、評価用データ格納部11に格納されている評価用データを用いて、そのビット削減ニューラルネットワークの評価値を導出し、その評価値が目標値よりも大きいか否かを判定する。その結果、評価値が目標値よりも大きければ、ビット削減層特定部17は、そのビット削減ニューラルネットワークを新たな高精度ニューラルネットワークNNTとして低NN生成部14に出力する。これにより、低NN生成部14による低精度ニューラルネットワークNNSの生成と、影響度導出部16によるその低精度ニューラルネットワークNNSを用いた上述の複数の層のそれぞれの影響度の導出とが、繰り返し実行される。その結果、ビット削減ニューラルネットワークの生成が繰り返し実行されて、最適化されたニューラルネットワークが生成される。
図19は、本実施の形態におけるニューラルネットワーク最適化装置10による全体的な処理の他の例を示すフローチャートである。このフローチャートは、ビット削減層特定部17による影響度更新特定処理として、ステップS22、S100、およびS211~S216を含む。
まず、低NN生成部14は、最低ビット精度bmを設定する(ステップS21)。そして、高NN生成部12は、評価用データ格納部11に格納されている複数の評価用データを用いた学習を行うことによって、高精度ニューラルネットワークNNTを生成する(ステップS11)。
次に、低NN生成部14は、ステップS11で生成された高精度ニューラルネットワークNNTのビット精度を変換することによって、低精度ニューラルネットワークNNSを生成する(ステップS22)。このとき、低NN生成部14は、高精度ニューラルネットワークNNTに含まれる複数の層のそれぞれのビット精度のうち、ステップS21で設定された最低ビット精度bmよりも高いビット精度を変換する。つまり、低NN生成部14は、最低ビット精度bmよりも高いビット精度を有する層に対してビット削減を行う。したがって、高精度ニューラルネットワークNNTに含まれる全ての層のビット精度が最低ビット精度bmよりも高ければ、低NN生成部14は、図12に示すステップS12と同様の処理を行う。
そして、影響度導出部16は、ステップS11で生成された高精度ニューラルネットワークNNTと、ステップS22で生成された低精度ニューラルネットワークNNSとを用いて、複数の層のそれぞれの影響度を導出する(ステップS100)。つまり、影響度導出部16は、高精度ニューラルネットワークNNTの対象範囲[S,G]に含まれる複数の層のそれぞれの影響度を導出する。なお、ステップS22およびステップS100を含む処理は、上述の第1処理である。
次に、ビット削減層特定部17は、図17に示すフローチャートと同様、ステップS211~S214の処理を行う。つまり、ビット削減層特定部17は、高精度ニューラルネットワークNNTの対象範囲[S,G]から、最も小さい影響度を有する層を特定し、その特定された層に対してビット削減を行う(ステップS212)。これにより、ビット削減ニューラルネットワークが生成される。つまり、上述の第2処理が行われる。そして、ビット削減層特定部17は、そのビット削減ニューラルネットワーク、すなわちビット削減後の高精度ニューラルネットワークNNTの評価値を導出する(ステップS213)。次に、ビット削減層特定部17は、ステップS213で導出された評価値が目標値よりも大きいか否かを判定する(ステップS214)。
ここで、評価値が目標値よりも大きいと判定されると(ステップS214のYes)、低NN生成部14は、上述の対象範囲[S,G]に含まれる全ての層のビット精度が最低ビット精度bmであるか否かを判定する(ステップS216)。つまり、ステップS212で生成されたビット削減ニューラルネットワークの対象範囲[S,G]に含まれる全ての層のビット精度が最低ビット精度bmであるか否かが判定される。そして、低NN生成部14は、全ての層のビット精度が最低ビット精度bmではないと判定すると(ステップS216のNo)、ステップS22からの処理を繰り返し実行する。ステップS22からの処理が繰り返し実行される場合には、直前のステップS212で生成されたビット削減ニューラルネットワークが新たな高精度ニューラルネットワークNNTとして扱われる。
一方、ステップS214で評価値が目標値よりも小さいと判定される場合には(ステップS214のNo)、ビット削減層特定部17は、最適化されたニューラルネットワークを決定する(ステップS215)。つまり、ステップS211で保持されているニューラルネットワークNN*であって、最後にビット削減が行われる直前のニューラルネットワークが、最適化されたニューラルネットワークとして決定される。
また、ステップS216で全ての層のビット精度が最低ビット精度bmであると判定されると(ステップS216のYes)、ビット削減層特定部17は、上述と同様に、最適化されたニューラルネットワークを決定する(ステップS215)。また、この場合には、ビット削減層特定部17は、直前のステップS212で生成されたビット削減ニューラルネットワークを、最適化されたニューラルネットワークに決定してもよい。
このように、本実施の形態におけるビット削減層特定部17は、ステップS212のように、高精度ニューラルネットワークNNTの対象範囲[S,G]に含まれる複数の層のうちの、最も小さい影響度を有する1つの層を特定し、特定されたその1つの層に対してビット削減を行う。さらに、ビット削減層特定部17は、ステップS213の処理として第3処理を行う。この第3処理では、ビット削減層特定部17は、ビット削減ニューラルネットワークへの評価用データの入力に対して出力される認識結果に基づく評価値であって、オブジェクトの認識精度が高いほど大きい値を示す第3評価値を導出する。そして、ビット削減層特定部17は、その第3評価値が目標値よりも大きい場合には、ビット削減ニューラルネットワークを新たな高精度ニューラルネットワークNNTとして用いて、上述の第1処理、第2処理、および第3処理を繰り返し実行する。なお、その第1処理は、ステップS22およびステップS100を含む処理であり、第2処理は、ステップS212の処理であり、第3処理は、ステップS213の処理である。
また、その第2処理および第3処理が繰り返し実行され、最後に実行された第3処理において導出された第3評価値が目標値よりも小さい場合には、ビット削減層特定部17は、最後の第2処理の直前に実行された第2処理によって生成されたビット削減ニューラルネットワークを、最終的なニューラルネットワークとして出力する。つまり、ステップS202で保持されているニューラルネットワークNN*が、最終的なニューラルネットワーク、すなわち最適化されたニューラルネットワークとして決定される。
このように影響度更新特定処理では、ビット削減ニューラルネットワークが新たな高精度ニューラルネットワークNNTとして扱われ、その新たな高精度ニューラルネットワークNNTに含まれる複数の層のそれぞれの影響度が導出される。そして、それらの影響度を用いて、その新たな高精度ニューラルネットワークNNTに含まれる複数の層からビット削減される層が特定される。したがって、元の高精度ニューラルネットワークNNTに対して導出された古い影響度を用いることなく、新たな高精度ニューラルネットワークNNTに対して適切な影響度を用いることができる。その結果、ニューラルネットワークの最適解をより適切に見つけ出すことができる。さらに、最後のステップS212の処理によって生成されたビット削減ニューラルネットワークの評価値が目標値よりも小さくても、その直前のステップS212の処理によって生成されたビット削減ニューラルネットワークの評価値は目標値よりも大きい。このような目標値よりも大きい評価値が導出されるビット削減ニューラルネットワークが、最終的なニューラルネットワークとして出力されるため、認識精度を一定以上に保ちながらデータ量が十分に削減されたニューラルネットワークをより適切に見つけ出すことができる。
(変形例)
以上、一つまたは複数の態様に係るニューラルネットワーク最適化装置について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、他の構成要素を組み合わせて構築される形態も、本開示の範囲内に含まれてもよい。
例えば、上記実施の形態における影響度導出部16は、図8などに示すように、高精度ニューラルネットワークNNTに含まれる入力層から前隣層までの各層のビット精度が低く、高精度ニューラルネットワークNNTに含まれる後隣層から出力層までの各層のビット精度が高い状況において、導出対象層の影響度を導出する。しかし、逆に、影響度導出部16は、高精度ニューラルネットワークNNTに含まれる入力層から前隣層までの各層のビット精度が高く、高精度ニューラルネットワークNNTに含まれる後隣層から出力層までの各層のビット精度が低い状況において、導出対象層の影響度を導出してもよい。また、影響度導出部16は、高精度ニューラルネットワークNNTに含まれる入力層から前隣層までの各層のビット精度と、後隣層から出力層までの各層のビット精度とが高い状況において、導出対象層の影響度を導出してもよい。つまり、影響度導出部16は、高精度ニューラルネットワークNNTのうち、導出対象層のみに対してビット削減が行われているときの評価値と、何れの層にもビット削減が行われていないときの評価値との差分を、その導出対象層の影響度として導出してもよい。
また、上記実施の形態におけるビット削減層特定部17は、図15のステップS203および図17のステップS212では、既にビット削減されている層に対しては、さらなるビット削減を行わない。しかし、ビット削減層特定部17は、全ての層に対して既にビット削減されている場合には、さらに、それらの層の影響度に基づいてビット削減の対象とされる層を特定し、その層のビット精度を削減してもよい。
また、上記実施の形態におけるニューラルネットワークは、畳み込みニューラルネットワークでもよく、その他の種類のニューラルネットワークであってもよい。また、上記実施の形態における学習は、機械学習であればどのような学習であってもよく、例えばディープラーニングであってもよい。また、上記実施の形態では、層を構成するパラメータのビット精度が削減されるが、そのパラメータには、重みおよびバイアスだけでなく、出力データも含まれていてもよい。また、重み、バイアス、および出力データのうちの少なくとも1つのビット精度が削減されてもよい。
また、上記実施の形態におけるニューラルネットワーク最適化装置10は、高NN生成部12を備えているが、その高NN生成部12を備えていなくてもよい。この場合には、ニューラルネットワーク最適化装置10は、高精度ニューラルネットワークNNTを、例えば通信ネットワークなどを介してサーバなどの他の装置から取得してもよく、ニューラルネットワーク最適化装置10に接続されているメモリなどの記録媒体から取得してもよい。また、ニューラルネットワーク最適化装置10は、評価用データ格納部11、高NN格納部13および低NN格納部15などの格納部を備えているが、これらの格納部を備えていなくてもよい。この場合には、ニューラルネットワーク最適化装置10は、外部の記録媒体などをそれらの格納部の代わりに用いてもよい。
なお、上記実施の形態において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、CPU(Central Processing Unit)またはプロセッサなどのプログラム実行部が、ハードディスクまたは半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。ここで、上記実施の形態のニューラルネットワーク最適化装置などを実現するソフトウェアプログラムは、コンピュータに、図12、図13、図15、図17および図19のうちの少なくとも1つのフローチャートによって示される処理を実行させる。
なお、以下のような場合も本開示に含まれる。
(1)上記の少なくとも1つの装置は、具体的には、マイクロプロセッサ、ROM(Read Only Memory)、RAM(Random Access Memory)、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。そのRAMまたはハードディスクユニットには、コンピュータプログラムが記憶されている。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、上記の少なくとも1つの装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
(2)上記の少なくとも1つの装置を構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
(3)上記の少なくとも1つの装置を構成する構成要素の一部または全部は、その装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。ICカードまたはモジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。ICカードまたはモジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、ICカードまたはモジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
(4)本開示は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本開示は、コンピュータプログラムまたはデジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD(Compact Disc)-ROM、DVD、DVD-ROM、DVD-RAM、BD(Blu-ray(登録商標) Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されているデジタル信号であるとしてもよい。
また、本開示は、コンピュータプログラムまたはデジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、プログラムまたはデジタル信号を記録媒体に記録して移送することにより、またはプログラムまたはデジタル信号をネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。