(57)【要約】  ニューラルネットワーク（１４）を量子化するネットワーク量子化方法であって、ニューラルネットワーク（１４）に複数のテストデータセット（１２）を入力する場合に得られるニューラルネットワーク（１４）が扱うテンソルの統計情報データベース（１８）を構築するデータベース構築ステップ（Ｓ２０）と、テンソルの値を量子化することによって、量子化パラメータセット（２２）を生成するパラメータ生成ステップ（Ｓ３０）と、量子化パラメータセット（２２）を用いてニューラルネットワーク（１４）を量子化するネットワーク構築ステップ（Ｓ４０）とを含み、パラメータ生成ステップ（Ｓ３０）は、統計情報データベース（１８）に基いて、テンソルの値のうち、頻度が極大となる値を含む高頻度領域における量子化ステップ間隔を、高頻度領域より頻度が低く、かつ、頻度がゼロでないテンソルの値を含む低頻度領域における量子化ステップ間隔より狭く設定する。
2020065874.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットワークを量子化するネットワーク量子化方法であって、
前記ニューラルネットワークを準備する準備ステップと、
前記ニューラルネットワークに複数のテストデータセットを入力する場合に得られる前記ニューラルネットワークが扱うテンソルの統計情報データベースを構築するデータベース構築ステップと、
前記統計情報データベースと前記ニューラルネットワークとに基いて、前記テンソルの値を量子化することによって、量子化パラメータセットを生成するパラメータ生成ステップと、
前記量子化パラメータセットを用いて前記ニューラルネットワークを量子化することによって、量子化ネットワークを構築するネットワーク構築ステップとを含み、
前記パラメータ生成ステップは、前記統計情報データベースに基いて、前記テンソルの値のうち、頻度が極大となる値を含む高頻度領域における量子化ステップ間隔を、前記高頻度領域より頻度が低く、かつ、頻度がゼロでない前記テンソルの値を含む低頻度領域における量子化ステップ間隔より狭く設定する
ネットワーク量子化方法。
【請求項２】
ニューラルネットワークを量子化するネットワーク量子化方法であって、
前記ニューラルネットワークを準備する準備ステップと、
前記ニューラルネットワークに複数のテストデータセットを入力する場合に得られる前記ニューラルネットワークが扱うテンソルの統計情報データベースを構築するデータベース構築ステップと、
前記統計情報データベースと前記ニューラルネットワークとに基いて、前記テンソルの値を量子化することによって、量子化パラメータセットを生成するパラメータ生成ステップと、
前記量子化パラメータセットを用いて前記ニューラルネットワークを量子化することによって、量子化ネットワークを構築するネットワーク構築ステップとを含み、
前記パラメータ生成ステップは、前記統計情報データベースに基いて、前記テンソルの値のうち、頻度がゼロでない量子化領域と、頻度がゼロでなく、かつ、前記量子化領域と重ならない非量子化領域とを決定し、前記量子化領域における前記テンソルの値は量子化され、前記非量子化領域における前記テンソルの値は量子化されない
ネットワーク量子化方法。
【請求項３】
ニューラルネットワークを量子化するネットワーク量子化方法であって、
前記ニューラルネットワークを準備する準備ステップと、
前記ニューラルネットワークに複数のテストデータセットを入力する場合に得られる前記ニューラルネットワークが扱うテンソルの統計情報データベースを構築するデータベース構築ステップと、
前記統計情報データベースと前記ニューラルネットワークとに基いて、前記テンソルの値を量子化することによって、量子化パラメータセットを生成するパラメータ生成ステップと、
前記量子化パラメータセットを用いて前記ニューラルネットワークを量子化することによって、量子化ネットワークを構築するネットワーク構築ステップとを含み、
前記パラメータ生成ステップは、前記統計情報データベースに基いて、前記テンソルの値を−１、０、＋１の３値に量子化する
ネットワーク量子化方法。
【請求項４】
ニューラルネットワークを量子化するネットワーク量子化方法であって、
前記ニューラルネットワークを準備する準備ステップと、
前記ニューラルネットワークに複数のテストデータセットを入力する場合に得られる前記ニューラルネットワークが扱うテンソルの統計情報データベースを構築するデータベース構築ステップと、
前記統計情報データベースと前記ニューラルネットワークとに基いて、前記テンソルの値を量子化することによって、量子化パラメータセットを生成するパラメータ生成ステップと、
前記量子化パラメータセットを用いて前記ニューラルネットワークを量子化することによって、量子化ネットワークを構築するネットワーク構築ステップとを含み、
前記パラメータ生成ステップは、前記統計情報データベースに基いて、前記テンソルの値を−１及び＋１の２値に量子化する
ネットワーク量子化方法。
【請求項５】
前記パラメータ生成ステップは、前記統計情報データベースに基いて、量子化パラメータとして、＋１に量子化される最小の数である正閾値、及び、−１に量子化される最大の数である負閾値を決定する
請求項３又は４に記載のネットワーク量子化方法。
【請求項６】
前記パラメータ生成ステップは、前記統計情報データベースに基いて、量子化パラメータとして、＋１及び−１にそれぞれ対応する係数である正スケール及び負スケールを決定する
請求項５に記載のネットワーク量子化方法。
【請求項７】
前記量子化領域は、前記テンソルの値のうち、頻度が極大となる値を含み、前記非量子化領域は、前記テンソルの値のうち、前記量子化領域より頻度が低い値を含む
請求項２に記載のネットワーク量子化方法。
【請求項８】
前記パラメータ生成ステップは、前記量子化領域と前記非量子化領域とを、前記テンソルの値の分布と量子化された前記テンソルの値の分布との違いを測る尺度に応じて決定する
請求項２に記載のネットワーク量子化方法。
【請求項９】
前記高頻度領域は、前記テンソルの値のうち、各々が頻度が極大となる値を含む第一領域及び第二領域を含み、
前記低頻度領域は、前記テンソルの値のうち、前記第一領域と前記第二領域との間の値を含む第三領域を含む
請求項１に記載のネットワーク量子化方法。
【請求項１０】
前記パラメータ生成ステップにおいて、前記低頻度領域の少なくとも一部の領域の前記テンソルの値は量子化されない
請求項１又は９に記載のネットワーク量子化方法。
【請求項１１】
前記ネットワーク量子化方法は、さらに、
前記量子化ネットワークに機械学習させる機械学習ステップをさらに含む
請求項１〜１０のいずれか１項に記載のネットワーク量子化方法。
【請求項１２】
前記複数のテストデータセットの各々の統計情報に基いて、前記複数のテストデータセットの少なくとも一部を第一類型及び第二類型に分類する分類ステップをさらに含み、
前記統計情報データベースは、前記第一類型及び前記第二類型にそれぞれ対応する第一データベースサブセット及び第二データベースサブセットを含み、
前記量子化パラメータセットは、前記第一データベースサブセット及び前記第二データベースサブセットにそれぞれ対応する第一パラメータサブセット及び第二パラメータサブセットを含み、
前記量子化ネットワークは、前記第一パラメータサブセット及び前記第二パラメータサブセットをそれぞれ用いて前記ニューラルネットワークを量子化することによって構築された第一ネットワークサブセット及び第二ネットワークサブセットを含む
請求項１〜１１のいずれか１項に記載のネットワーク量子化方法。
【請求項１３】
請求項１２に記載のネットワーク量子化方法と、
前記第一類型及び前記第二類型のうち、前記量子化ネットワークに入力される入力データが分類される類型を選択する類型選択ステップと、
前記第一類型及び前記第二類型のうち、前記類型選択ステップにおいて選択された類型に基いて、前記第一ネットワークサブセット及び前記第二ネットワークサブセットの一方を選択するネットワーク選択ステップと、
前記ネットワーク選択ステップにおいて選択された前記第一ネットワークサブセット及び前記第二ネットワークサブセットの一方に前記入力データを入力する入力ステップとを含む
推論方法。
【請求項１４】
ニューラルネットワークを量子化するネットワーク量子化装置であって、
前記ニューラルネットワークに複数のテストデータセットを入力する場合に得られる前記ニューラルネットワークが扱うテンソルの統計情報データベースを構築するデータベース構築部と、
前記統計情報データベースと前記ニューラルネットワークとに基いて、前記テンソルの値を量子化することによって、量子化パラメータセットを生成するパラメータ生成部と、
前記量子化パラメータセットを用いて前記ニューラルネットワークを量子化することによって、量子化ネットワークを構築するネットワーク構築部とを含み、
前記パラメータ生成部は、前記統計情報データベースに基いて、前記テンソルの値のうち、頻度が極大となる値を含む高頻度領域における量子化ステップ間隔を、前記高頻度領域より頻度が低く、かつ、頻度がゼロでない前記テンソルの値を含む低頻度領域における量子化ステップ間隔より狭く設定する
ネットワーク量子化装置。
【請求項１５】
ニューラルネットワークを量子化するネットワーク量子化装置であって、
前記ニューラルネットワークに複数のテストデータセットを入力する場合に得られる前記ニューラルネットワークが扱うテンソルの統計情報データベースを構築するデータベース構築部と、
前記統計情報データベースと前記ニューラルネットワークとに基いて、前記テンソルの値を量子化することによって、量子化パラメータセットを生成するパラメータ生成部と、
前記量子化パラメータセットを用いて前記ニューラルネットワークを量子化することによって、量子化ネットワークを構築するネットワーク構築部とを含み、
前記パラメータ生成部は、前記統計情報データベースに基いて、前記テンソルの値のうち、頻度がゼロでない量子化領域と、頻度がゼロでなく、かつ、前記量子化領域と重ならない非量子化領域とを決定し、前記量子化領域における前記テンソルの値を量子化し、前記非量子化領域における前記テンソルの値を量子化しない
ネットワーク量子化装置。
【請求項１６】
ニューラルネットワークを量子化するネットワーク量子化装置であって、
前記ニューラルネットワークに複数のテストデータセットを入力する場合に得られる前記ニューラルネットワークが扱うテンソルの統計情報データベースを構築するデータベース構築部と、
前記統計情報データベースと前記ニューラルネットワークとに基いて、前記テンソルの値を量子化することによって、量子化パラメータセットを生成するパラメータ生成部と、
前記量子化パラメータセットを用いて前記ニューラルネットワークを量子化することによって、量子化ネットワークを構築するネットワーク構築部とを含み、
前記パラメータ生成部は、前記統計情報データベースに基いて、前記テンソルの値を−１、０、＋１の３値に量子化する
ネットワーク量子化装置。
【請求項１７】
ニューラルネットワークを量子化するネットワーク量子化装置であって、
前記ニューラルネットワークに複数のテストデータセットを入力する場合に得られる前記ニューラルネットワークが扱うテンソルの統計情報データベースを構築するデータベース構築部と、
前記統計情報データベースと前記ニューラルネットワークとに基いて、前記テンソルの値を量子化することによって、量子化パラメータセットを生成するパラメータ生成部と、
前記量子化パラメータセットを用いて前記ニューラルネットワークを量子化することによって、量子化ネットワークを構築するネットワーク構築部とを含み、
前記パラメータ生成部は、前記統計情報データベースに基いて、前記テンソルの値を−１及び＋１の２値に量子化する
ネットワーク量子化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ネットワーク量子化方法、推論方法及びネットワーク量子化装置に関する。
【背景技術】
【０００２】
従来、ニューラルネットワークなどのネットワークを用いて機械学習が行われている。ここで、数値データを入力とし、なんらかの演算を施して数値データの出力値を得るモデルをネットワークと呼ぶ。ネットワークをコンピュータなどのハードウェアに実装する時には、ハードウェアコストを抑制するため、実装後の推論精度を浮動小数点精度と同程度に保ったまま、演算精度がより低いネットワークを構築することが求められる。【０００３】
例えば、全ての計算を浮動小数点精度で行うネットワークを実装する場合、ハードウェアコストが大きくなるので、推論精度を保ったまま、固定小数点精度で計算を行うネットワークの実現が求められる。【０００４】
以下では、浮動小数点精度のネットワークを量子化前ネットワークとも呼称し、固定小数点精度のネットワークを量子化ネットワークとも呼称する。【０００５】
ここでは、ほぼ任意の値を連続的に表現できる浮動小数点の値を、所定の区分に分割して符号化する処理のことを量子化と称している。より一般的には、量子化とは、ネットワークが扱う数値の桁数又は範囲を縮小する処理と定義される。【０００６】
量子化によって限定されたビット数で実数を表現する際に、入力データの分布が想定された分布と異なる場合がある。この場合、量子化誤差が大きくなり、機械学習の速度、さらには学習後の推論の精度に悪影響を与えるという問題がある。【０００７】
このような問題を解決する方法として、例えば、特許文献１に記載された方法が知られている。特許文献１に記載された方法では、畳み込みニューラルネットワークの各層内の重み及びデータの各々に個別の固定小数点フォーマットを定義する。畳み込みニューラルネットワークの機械学習を浮動小数点数で開始し、入力データの分布を推定するために解析する。続いて入力データの分布に基いて入力データ値を表す最適化数フォーマットを決定し、当該フォーマットを用いて量子化を行う。このように、特許文献１では、最初に入力データの分布を調べ、当該分布に適した数フォーマットを選ぶことにより、上記問題を解決しようとしている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１８−１０６１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１に記載された方法では、扱うデータのダイナミックレンジを考慮し、そのデータが収まるような範囲に対して限定されたビット数を割り当てる。ここで、当該範囲内でデータの偏在があると、データがほぼ存在しない区間のデータにもビット数を割り当てることになる。これは、ビット数に対して意味のあるデータの量が少なくなることを意味する。したがって、量子化の精度が低下する。【００１０】
そこで、本開示は、このような問題を解決するためになされたものであり、精度の良好な量子化ネットワークを構築できるネットワーク量子化方法などを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するために、本開示の一形態に係るネットワーク量子化方法は、ニューラルネットワークを量子化するネットワーク量子化方法であって、前記ニューラルネットワークを準備する準備ステップと、前記ニューラルネットワークに複数のテストデータセットを入力する場合に得られる前記ニューラルネットワークが扱うテンソルの統計情報データベースを構築するデータベース構築ステップと、前記統計情報データベースと前記ニューラルネットワークとに基いて、前記テンソルの値を量子化することによって、量子化パラメータセットを生成するパラメータ生成ステップと、前記量子化パラメータセットを用いて前記ニューラルネットワークを量子化することによって、量子化ネットワークを構築するネットワーク構築ステップとを含み、前記パラメータ生成ステップは、前記統計情報データベースに基いて、前記テンソルの値のうち、頻度が極大となる値を含む高頻度領域における量子化ステップ間隔を、前記高頻度領域より頻度が低く、かつ、頻度がゼロでない前記テンソルの値を含む低頻度領域における量子化ステップ間隔より狭く設定する。【００１２】
上記目的を達成するために、本開示の一形態に係るネットワーク量子化方法は、ニューラルネットワークを量子化するネットワーク量子化方法であって、前記ニューラルネットワークを準備する準備ステップと、前記ニューラルネットワークに複数のテストデータセットを入力する場合に得られる前記ニューラルネットワークが扱うテンソルの統計情報データベースを構築するデータベース構築ステップと、前記統計情報データベースと前記ニューラルネットワークとに基いて、前記テンソルの値を量子化することによって、量子化パラメータセットを生成するパラメータ生成ステップと、前記量子化パラメータセットを用いて前記ニューラルネットワークを量子化することによって、量子化ネットワークを構築するネットワーク構築ステップとを含み、前記パラメータ生成ステップは、前記統計情報データベースに基いて、前記テンソルの値のうち、頻度がゼロでない量子化領域と、頻度がゼロでなく、かつ、前記量子化領域と重ならない非量子化領域とを決定し、前記量子化領域における前記テンソルの値は量子化され、前記非量子化領域における前記テンソルの値は量子化されない。【００１３】
上記目的を達成するために、本開示の一形態に係るネットワーク量子化方法は、ニューラルネットワークを量子化するネットワーク量子化方法であって、前記ニューラルネットワークを準備する準備ステップと、前記ニューラルネットワークに複数のテストデータセットを入力する場合に得られる前記ニューラルネットワークが扱うテンソルの統計情報データベースを構築するデータベース構築ステップと、前記統計情報データベースと前記ニューラルネットワークとに基いて、前記テンソルの値を量子化することによって、量子化パラメータセットを生成するパラメータ生成ステップと、前記量子化パラメータセットを用いて前記ニューラルネットワークを量子化することによって、量子化ネットワークを構築するネットワーク構築ステップとを含み、前記パラメータ生成ステップは、前記統計情報データベースに基いて、前記テンソルの値を−１、０、＋１の３値に量子化する。【００１４】
上記目的を達成するために、本開示の一形態に係るネットワーク量子化方法は、ニューラルネットワークを量子化するネットワーク量子化方法であって、前記ニューラルネットワークを準備する準備ステップと、前記ニューラルネットワークに複数のテストデータセットを入力する場合に得られる前記ニューラルネットワークが扱うテンソルの統計情報データベースを構築するデータベース構築ステップと、前記統計情報データベースと前記ニューラルネットワークとに基いて、前記テンソルの値を量子化することによって、量子化パラメータセットを生成するパラメータ生成ステップと、前記量子化パラメータセットを用いて前記ニューラルネットワークを量子化することによって、量子化ネットワークを構築するネットワーク構築ステップとを含み、前記パラメータ生成ステップは、前記統計情報データベースに基いて、前記テンソルの値を−１及び＋１の２値に量子化する。【００１５】
上記目的を達成するために、本開示の一形態に係る推論方法は、上記ネットワーク量子化方法であって、前記複数のテストデータセットの各々の統計情報に基いて、前記複数のテストデータセットの少なくとも一部を第一類型及び第二類型に分類する分類ステップをさらに含み、前記統計情報データベースは、前記第一類型及び前記第二類型にそれぞれ対応する第一データベースサブセット及び第二データベースサブセットを含み、前記量子化パラメータセットは、前記第一データベースサブセット及び前記第二データベースサブセットにそれぞれ対応する第一パラメータサブセット及び第二パラメータサブセットを含み、前記量子化ネットワークは、前記第一パラメータサブセット及び前記第二パラメータサブセットをそれぞれ用いて前記ニューラルネットワークを量子化することによって構築された第一ネットワークサブセット及び第二ネットワークサブセットを含むネットワーク量子化方法と、前記第一類型及び前記第二類型のうち、前記量子化ネットワークに入力される入力データが分類される類型を選択する類型選択ステップと、前記第一類型及び前記第二類型のうち、前記類型選択ステップにおいて選択された類型に基いて、前記第一ネットワークサブセット及び前記第二ネットワークサブセットの一方を選択するネットワーク選択ステップと、前記ネットワーク選択ステップにおいて選択された前記第一ネットワークサブセット及び前記第二ネットワークサブセットの一方に前記入力データを入力する入力ステップとを含む。【００１６】
上記目的を達成するために、本開示の一形態に係るネットワーク量子化装置は、ニューラルネットワークを量子化するネットワーク量子化装置であって、前記ニューラルネットワークに複数のテストデータセットを入力する場合に得られる前記ニューラルネットワークが扱うテンソルの統計情報データベースを構築するデータベース構築部と、前記統計情報データベースと前記ニューラルネットワークとに基いて、前記テンソルの値を量子化することによって、量子化パラメータセットを生成するパラメータ生成部と、前記量子化パラメータセットを用いて前記ニューラルネットワークを量子化することによって、量子化ネットワークを構築するネットワーク構築部とを含み、前記パラメータ生成部は、前記統計情報データベースに基いて、前記テンソルの値のうち、頻度が極大となる値を含む高頻度領域における量子化ステップ間隔を、前記高頻度領域より頻度が低く、かつ、頻度がゼロでない前記テンソルの値を含む低頻度領域における量子化ステップ間隔より狭く設定する。【００１７】
上記目的を達成するために、本開示の一形態に係るネットワーク量子化装置は、ニューラルネットワークを量子化するネットワーク量子化装置であって、前記ニューラルネットワークに複数のテストデータセットを入力する場合に得られる前記ニューラルネットワークが扱うテンソルの統計情報データベースを構築するデータベース構築部と、前記統計情報データベースと前記ニューラルネットワークとに基いて、前記テンソルの値を量子化することによって、量子化パラメータセットを生成するパラメータ生成部と、前記量子化パラメータセットを用いて前記ニューラルネットワークを量子化することによって、量子化ネットワークを構築するネットワーク構築部とを含み、前記パラメータ生成部は、前記統計情報データベースに基いて、前記テンソルの値のうち、頻度がゼロでない量子化領域と、頻度がゼロでなく、かつ、前記量子化領域と重ならない非量子化領域とを決定し、前記量子化領域における前記テンソルの値を量子化し、前記非量子化領域における前記テンソルの値を量子化しない。【００１８】
上記目的を達成するために、本開示の一形態に係るネットワーク量子化装置は、ニューラルネットワークを量子化するネットワーク量子化装置であって、前記ニューラルネットワークに複数のテストデータセットを入力する場合に得られる前記ニューラルネットワークが扱うテンソルの統計情報データベースを構築するデータベース構築部と、前記統計情報データベースと前記ニューラルネットワークとに基いて、前記テンソルの値を量子化することによって、量子化パラメータセットを生成するパラメータ生成部と、前記量子化パラメータセットを用いて前記ニューラルネットワークを量子化することによって、量子化ネットワークを構築するネットワーク構築部とを含み、前記パラメータ生成部は、前記統計情報データベースに基いて、前記テンソルの値を−１、０、＋１の３値に量子化する。【００１９】
上記目的を達成するために、本開示の一形態に係るネットワーク量子化装置は、ニューラルネットワークを量子化するネットワーク量子化装置であって、前記ニューラルネットワークに複数のテストデータセットを入力する場合に得られる前記ニューラルネットワークが扱うテンソルの統計情報データベースを構築するデータベース構築部と、前記統計情報データベースと前記ニューラルネットワークとに基いて、前記テンソルの値を量子化することによって、量子化パラメータセットを生成するパラメータ生成部と、前記量子化パラメータセットを用いて前記ニューラルネットワークを量子化することによって、量子化ネットワークを構築するネットワーク構築部とを含み、前記パラメータ生成部は、前記統計情報データベースに基いて、前記テンソルの値を−１及び＋１の２値に量子化する。
【発明の効果】
【００２０】
本開示により、精度の良好な量子化ネットワークを構築できるネットワーク量子化方法などを提供できる。
【図面の簡単な説明】
【００２１】
【図１】図１は、実施の形態１に係るネットワーク量子化装置の機能構成の概要を示すブロック図である。
【図２】図２は、実施の形態１に係るネットワーク量子化装置の機能をソフトウェアにより実現するコンピュータのハードウェア構成の一例を示す図である。
【図３】図３は、実施の形態１に係るネットワーク量子化方法を示すフローチャートである。
【図４】図４は、比較例に係る量子化方法を示す模式図である。
【図５】図５は、実施の形態１に係る量子化方法を示す模式図である。
【図６】図６は、実施の形態１の変形例に係る量子化の範囲を示す概略図である。
【図７】図７は、実施の形態１の変形例に係る量子化ステップ間隔決定方法の一例を示す概略図である。
【図８】図８は、実施の形態１の変形例に係る量子化ステップ間隔決定方法の他の例を示す概略図である。
【図９】図９は、実施の形態２に係るネットワーク量子化装置の機能構成の概要を示すブロック図である。
【図１０】図１０は、実施の形態２に係るネットワーク量子化方法及び推論方法を示すフローチャートである。
【発明を実施するための形態】
【００２２】
以下、本開示の実施の形態について、図面を用いて詳細に説明する。なお、以下で説明する実施の形態は、いずれも本開示の一具体例を示す。以下の実施の形態で示される数値、形状、材料、規格、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序等は、一例であり、本開示を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、本開示の最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。また、各図は、必ずしも厳密に図示したものではない。各図において、実質的に同一の構成については同一の符号を付し、重複する説明は省略又は簡略化する場合がある。
【００２３】
（実施の形態１）
実施の形態１に係るネットワーク量子化方法及びネットワーク量子化装置について説明する。
【００２４】
［１−１．ネットワーク量子化装置］
まず、本実施の形態に係るネットワーク量子化装置の構成について、図１を用いて説明する。図１は、本実施の形態に係るネットワーク量子化装置１０の機能構成の概要を示すブロック図である。
【００２５】
ネットワーク量子化装置１０は、ニューラルネットワーク１４を量子化する装置である。つまり、ネットワーク量子化装置１０は、浮動小数点精度のニューラルネットワーク１４を、固定小数点精度のニューラルネットワークである量子化ネットワークに変換する装置である。なお、ネットワーク量子化装置１０は、ニューラルネットワーク１４が扱うすべてのテンソルを量子化しなくてもよく、少なくとも一部のテンソルを量子化すればよい。ここで、テンソルとは、ニューラルネットワーク１４の各層における入力データ、出力データ及び重みなどのパラメータを含むｎ次元配列（ｎは０以上の整数）で表される値である。テンソルは、ニューラルネットワーク１４における最小単位のオペレーションに係るパラメータを含んでもよい。ニューラルネットワーク１４が畳み込みニューラルネットワークである場合には、畳み込み層と定義されている関数である重み及びバイアス値がテンソルに含まれてもよい。また、ニューラルネットワーク１４における正規化処理などのパラメータがテンソルに含まれてもよい。
【００２６】
図１に示されるように、ネットワーク量子化装置１０は、データベース構築部１６と、パラメータ生成部２０と、ネットワーク構築部２４とを備える。本実施の形態では、ネットワーク量子化装置１０は、機械学習部２８をさらに備える。
【００２７】
データベース構築部１６は、ニューラルネットワーク１４に複数のテストデータセット１２を入力する場合に得られるニューラルネットワーク１４が扱うテンソルの統計情報データベース１８を構築する処理部である。データベース構築部１６は、複数のテストデータセット１２に対するニューラルネットワーク１４が扱う各テンソルの値と頻度との関係などの統計情報を計算し、各テンソルの統計情報データベース１８を構築する。統計情報データベース１８には、例えば、各テンソルの平均値、中央値、最頻値、最大値、最小値、極大値、極小値、分散、偏差、歪度、尖度などの統計量の少なくとも一部が含まれる。
【００２８】
パラメータ生成部２０は、統計情報データベース１８とニューラルネットワーク１４とに基いて、テンソルの値を量子化することによって、量子化パラメータセットを生成する処理部である。パラメータ生成部２０は、統計情報データベース１８に基いて、テンソルの値のうち、頻度が極大となる値を含む高頻度領域における量子化ステップ間隔を、高頻度領域より頻度が低く、かつ、頻度がゼロでないテンソルの値を含む低頻度領域における量子化ステップ間隔より狭く設定する。パラメータ生成部２０の詳細な処理内容については後述する。
【００２９】
ネットワーク構築部２４は、量子化パラメータセット２２を用いてニューラルネットワーク１４を量子化することによって、量子化ネットワーク２６を構築する処理部である。
【００３０】
機械学習部２８は、量子化ネットワーク２６に機械学習させる処理部である。機械学習部２８は、ネットワーク構築部２４によって構築された量子化ネットワーク２６に複数のテストデータセット１２又は他の入力データセットを入力することで機械学習させる。これにより、機械学習部２８は、量子化ネットワーク２６より推論の精度が良好な量子化ネットワーク３０を構築する。なお、ネットワーク量子化装置１０は、機械学習部２８を必ずしも備えなくてもよい。
【００３１】
以上のような構成により、ネットワーク量子化装置１０は、精度が良好な量子化ネットワークを構築できる。
【００３２】
［１−２．ハードウェア構成］
次に、本実施の形態に係るネットワーク量子化装置１０のハードウェア構成について、図２を用いて説明する。図２は、本実施の形態に係るネットワーク量子化装置１０の機能をソフトウェアにより実現するコンピュータ１０００のハードウェア構成の一例を示す図である。
【００３３】
コンピュータ１０００は、図２に示すように、入力装置１００１、出力装置１００２、ＣＰＵ１００３、内蔵ストレージ１００４、ＲＡＭ１００５、読取装置１００７、送受信装置１００８及びバス１００９を備えるコンピュータである。入力装置１００１、出力装置１００２、ＣＰＵ１００３、内蔵ストレージ１００４、ＲＡＭ１００５、読取装置１００７及び送受信装置１００８は、バス１００９により接続される。
【００３４】
入力装置１００１は入力ボタン、タッチパッド、タッチパネルディスプレイなどといったユーザインタフェースとなる装置であり、ユーザの操作を受け付ける。なお、入力装置１００１は、ユーザの接触操作を受け付ける他、音声での操作、リモコン等での遠隔操作を受け付ける構成であってもよい。
【００３５】
内蔵ストレージ１００４は、フラッシュメモリなどである。また、内蔵ストレージ１００４は、ネットワーク量子化装置１０の機能を実現するためのプログラム、及び、ネットワーク量子化装置１０の機能構成を利用したアプリケーションの少なくとも一方が、予め記憶されていてもよい。
【００３６】
ＲＡＭ１００５は、ランダムアクセスメモリ（Random Access Memory）であり、プログラム又はアプリケーションの実行に際してデータ等の記憶に利用される。
【００３７】
読取装置１００７は、ＵＳＢ（Universal Serial Bus）メモリなどの記録媒体から情報を読み取る。読取装置１００７は、上記のようなプログラムやアプリケーションが記録された記録媒体からそのプログラムやアプリケーションを読み取り、内蔵ストレージ１００４に記憶させる。
【００３８】
送受信装置１００８は、無線又は有線で通信を行うための通信回路である。送受信装置１００８は、例えばネットワークに接続されたサーバ装置と通信を行い、サーバ装置から上記のようなプログラムやアプリケーションをダウンロードして内蔵ストレージ１００４に記憶させる。
【００３９】
ＣＰＵ１００３は、中央演算処理装置（Central Processing Unit）であり、内蔵ストレージ１００４に記憶されたプログラム、アプリケーションをＲＡＭ１００５にコピーし、そのプログラムやアプリケーションに含まれる命令をＲＡＭ１００５から順次読み出して実行する。
【００４０】
［１−３．ネットワーク量子化方法］
次に、本実施の形態に係るネットワーク量子化方法について図３を用いて説明する。図３は、本実施の形態に係るネットワーク量子化方法を示すフローチャートである。
【００４１】
図３に示されるように、ネットワーク量子化方法において、まず、ニューラルネットワーク１４を準備する（Ｓ１０）。本実施の形態では、予め学習済みのニューラルネットワーク１４を準備する。ニューラルネットワーク１４は、量子化されていない、つまり、浮動小数点精度のニューラルネットワークである。なお、ニューラルネットワーク１４の学習において、使用される入力データは特に限定されず、図１に示される複数のテストデータセット１２を含んでもよい。
【００４２】
続いて、データベース構築部１６は、ニューラルネットワーク１４に複数のテストデータセット１２を入力する場合に得られるニューラルネットワーク１４が扱うテンソルの統計情報データベースを構築する（Ｓ２０）。本実施の形態では、データベース構築部１６が、複数のテストデータセット１２に対するニューラルネットワーク１４が扱う各テンソルの値と頻度との関係などの統計情報を計算し、各テンソルの統計情報データベース１８を構築する。
【００４３】
続いて、パラメータ生成部２０は、統計情報データベース１８とニューラルネットワーク１４とに基いて、テンソルの値を量子化することによって、量子化パラメータセット２２を生成する（Ｓ３０）。
【００４４】
続いて、ネットワーク構築部２４は、量子化パラメータセット２２を用いてニューラルネットワーク１４を量子化することによって、量子化ネットワーク２６を構築する（Ｓ４０）。
【００４５】
続いて、機械学習部２８は、量子化ネットワーク２６に機械学習させる（Ｓ５０）。機械学習部２８は、ネットワーク構築部２４によって構築された量子化ネットワーク２６に複数のテストデータセット１２又は他の入力データセットを入力することで機械学習させる。これにより、量子化ネットワーク２６より推論の精度が良好な量子化ネットワーク３０を構築できる。なお、本実施の形態に係るネットワーク量子化方法は、機械学習ステップＳ５０を必ずしも含まなくてもよい。
【００４６】
以上のように、本実施の形態に係るネットワーク量子化方法によれば、ニューラルネットワークを精度良く量子化できる。
【００４７】
［１−４．パラメータ生成部］
次に、本実施の形態に係るパラメータ生成部２０における量子化パラメータセット２２の生成方法について、詳細に説明する。
【００４８】
上述のとおり、パラメータ生成部２０は、統計情報データベース１８とニューラルネットワーク１４とに基いて、テンソルの値を量子化することによって、量子化パラメータセットを生成する。以下、パラメータ生成部２０における量子化方法について、図４及び図５を用いて比較例の量子化方法と比較しながら説明する。図４及び図５は、それぞれ比較例及び本実施の形態に係る量子化方法を示す模式図である。図４及び図５においては、ニューラルネットワーク１４が扱うテンソルの値と頻度との関係を示すグラフが示されている。
【００４９】
図４に示されるテンソルの値の分布例では、頻度が二つの極大値を有し、二つの極大値の間の領域、及び、二つの極大値の外側の領域では、頻度が低い。このようにテンソルの値が偏在している場合に、例えば、特許文献１に記載された従来技術の量子化方法を用いる比較例によれば、データが存在する領域全体を均等に量子化する。図４には、一例として、８ビットの分解能で量子化する例が示されている。
【００５０】
比較例の量子化方法によれば、データが存在するものの、その頻度が低い領域も量子化するため、データがほぼ存在しない区間のデータにもビット数を割り当てることになる。これは、ビット数に対して意味のあるデータの量が少なくなることを意味する。したがって、量子化の精度が低下する。
【００５１】
一方、本実施の形態に係るパラメータ生成部２０は、統計情報データベース１８に基いて、テンソルの値のうち、頻度が極大となる値を含む高頻度領域における量子化ステップ間隔を、高頻度領域より頻度が低く、かつ、頻度がゼロでないテンソルの値を含む低頻度領域における量子化ステップ間隔より狭く設定する。これにより、量子化において低頻度領域に割り当てられるビット数を上記比較例より低減できる。したがって、量子化の精度を改善できるため、精度の良好な量子化ネットワークを構築できる。図５に示される例では、高頻度領域は、テンソルの値のうち、各々が頻度が極大となる値を含む第一領域及び第二領域を含み、低頻度領域は、テンソルの値のうち、第一領域と第二領域との間の値を含む第三領域を含む。また、低頻度領域の少なくとも一部の領域のテンソルの値は量子化されなくてもよい。図５に示される例では、低頻度領域は、第一領域及び第二領域の外側の値を含む第四領域及び第五領域と、第三領域とからなり、低頻度領域のテンソルの値は量子化されない。高頻度領域を構成する第一領域及び第二領域は、それぞれ７ビットの分解能で均等に量子化されている。これにより、量子化において低頻度領域に割り当てられるビット数を最小限に低減できる。したがって、量子化の精度をより一層改善できる。
【００５２】
ここで、高頻度領域及び低頻度領域の決定方法は特に限定されないが、例えば、頻度の高いデータから順に、上位９０％に含まれるデータで構成される領域を高頻度領域としてもよい。
【００５３】
また、図５に示される例では、低頻度領域のテンソルの値は量子化されないが、高頻度領域より広い量子化ステップ間隔で量子化されてもよい。
【００５４】
また、図５に示される例では高頻度領域における量子化ステップ間隔は均一であるが、量子化ステップ間隔を頻度に応じて変えてもよい。例えば、頻度が高くなるにしたがって、量子化ステップ間隔が狭くなるように量子化ステップ間隔が設定されてもよい。
【００５５】
また、図５に示される例では頻度に応じて量子化ステップ間隔を決定しているが、頻度に準じる指標を用いて決定してもよい。例えばテンソルの各要素の値（ｘ）を確率変数とする確率分布ｐ（ｘ）を基準に、量子化されたテンソルの各要素の値（ｘ）を確率変数とする確率分布ｑ（ｘ）がどれくらい違っているかを測定し、その違いが小さくなるような量子化の仕方（量子化ステップ間隔の決め方等）として、量子化ステップ間隔を求めてもよい。
【００５６】
以下にその例を図６〜図８を用いて説明する。図６は、本実施の形態の変形例に係る量子化の範囲を示す概略図である。図７は、本実施の形態の変形例に係る量子化ステップ間隔決定方法の一例を示す概略図である。図８は、本実施の形態の変形例に係る量子化ステップ間隔決定方法の他の例を示す概略図である。
【００５７】
まず、量子化を行うｘの範囲を設定する。例えば、図６のグラフ（ｂ）に示されるように、データが存在しているｘの全範囲を量子化の範囲と設定する。又は、図６のグラフ（ｃ）に示されるように、頻度の小さい領域は範囲外にする等してデータが存在しているｘの値の一部の範囲を量子化の範囲と設定する。
【００５８】
続いて、量子化ステップ間隔を設定する。例えば、データが存在しているｘの全範囲を量子化の範囲と設定した場合（図６のグラフ（ｂ））、及び、データが存在しているｘの値の一部の範囲を量子化の範囲と設定した場合（図６のグラフ（ｃ））には、それぞれ、図７のグラフ（ａ）及び図８のグラフ（ａ）に示されるように、当該量子化の範囲における量子化ステップを設定する。
【００５９】
続いて、図７のグラフ（ｂ）及び図８のグラフ（ｂ）に示されるように、設定された量子化ステップに対する量子化されたテンソルの値に対応する確率分布ｑ（ｘ）を求める。これらのような量子化の範囲及び量子化ステップ間隔の違うｑ（ｘ）を複数準備する。次に、二つの確率分布ｐ（ｘ）、ｑ（ｘ）の違いを測る尺度として、Kullback-Leiblerダイバージェンス（この尺度が小さい値になるほどｑ（ｘ）はｐ（ｘ）に似ている）を用い、この尺度が所定の値より小さくなるｑ（ｘ）を決定する。このｑ（ｘ）に対する設定である量子化ステップ間隔を、求める量子化ステップ間隔としてもよい。例えば、Kullback-Leiblerダイバージェンスが最小となるｑ（ｘ）を与える量子化ステップ間隔を求める量子化ステップ間隔としてもよい。なお、Kullback-Leiblerダイバージェンスは、以下の式（１）で表される。
【００６０】
【数１】
2020065874.tif 000003
【００６１】
［１−５．演算方法］
次に、パラメータ生成部２０における演算方法の具体例について説明する。以下、本実施の形態に係る量子化方法において利用し得る演算方法の例として、三つの演算方法を示す。
【００６２】
［１−５−１．ｍビット固定小数点］
浮動小数点精度のデータをｍビット固定小数点のデータに量子化する演算方法について説明する。浮動小数点精度のデータをｘで表すと、２−ｎをスケーリングファクタとして、ｘは、以下の式（２）を用いてｍビット固定小数点精度の値ＦＸＰ（ｘ,ｍ,ｎ）に変換される。
【００６３】
【数２】
2020065874.tif 000004
【００６４】
ここで、関数Ｃｌｉｐ（ａ，ＭＩＮ，ＭＡＸ）は、変数ａの値をＭＩＮ以上ＭＡＸ以下の範囲に収める関数であり、その定義は以下の式（３）で定義される。
【００６５】
【数３】
2020065874.tif 000005
【００６６】
また、上記式（２）のＭＩＮ及びＭＡＸは以下の式（４）及び式（５）で表される。
【００６７】
【数４】
2020065874.tif 000006
【００６８】
【数５】
2020065874.tif 000007
【００６９】
このような量子化方法を用いる場合、量子化パラメータとして、符号モード及び小数点位置が用いられる。
【００７０】
符号モードとは、ＦＸＰ（ｘ,ｍ,ｎ）の最小値が０以上か否かを示すパラメータである。例えば、ＦＸＰ（ｘ,ｍ,ｎ）の最小値が０以上であれば、ビットを負の値に割り振る必要がないため、ビット数を１ビット節約できる。
【００７１】
小数点位置とは、ＭＩＮ以上ＭＡＸ以下の値を表現可能な固定小数点位置である。例えば、変数ｘの分布を正規分布（ガウス分布）で近似できる場合には、上述した統計情報データベース１８に含まれる中央値、標準偏差などの情報を取得することで、小数点位置を決定できる。なお、ここでは変数ｘの分布が正規分布で近似される例について説明したが、変数ｘの分布は、正規分布に限定されない。変数ｘの分布が他の分布で近似される場合にも、小数点位置は分布形状に応じて適宜決定できる。例えば、変数ｘの分布が混合正規分布で近似される場合には、混合正規分布に含まれる複数のピーク毎に小数点位置が決定されてもよい。
【００７２】
［１−５−２．対数］
浮動小数点精度のデータを対数を用いて量子化する演算方法について説明する。本演算方法では、データの値の対数をとり、対数のスケールでビットを割り当てる。この方法では、量子化パラメータとして対数最大値が用いられる。対数最大値とは、統計情報データベース１８から取得される浮動小数点精度のデータの値の最大値を超えない対数の最大値である。
【００７３】
［１−５−３．３値及び２値］
浮動小数点精度のデータを３値に量子化する演算方法について説明する。本演算方法では、統計情報データベースに基いて、テンソルの値の一例である浮動小数点精度のデータを−１、０、＋１の３値に量子化する。本量子化においては、正閾値、負閾値、正スケール及び負スケールの四つの量子化パラメータが用いられる。正閾値は、＋１に量子化される最小の数であり、負閾値は、−１に量子化される最大の数である。また、正スケール及び負スケールは、それぞれ＋１及び−１に対応する係数である。より詳しくは、正スケールは、＋１から浮動小数点のデータの値を近似するための係数であり、負スケールは、−１から浮動小数点のデータの値を近似するための係数である。
【００７４】
例えば、統計情報データベース１８からデータの分布の中央値（median）、最小値及び最大値を取得し、中央値から正方向及び負方向に所定の範囲を決定し、当該範囲のデータの値を０に量子化する。また、当該範囲の正方向及び負方向の閾値を、それぞれ、上述した量子化パラメータである正閾値及び負閾値と決定する。さらに、最大値及び最小値の絶対値をそれぞれ＋１及び−１の浮動小数点近似値と仮定して、最大値及び最小値の絶対値を、それぞれ、上述した量子化パラメータである正スケール及び負スケールと決定する。
【００７５】
この量子化方法によれば、例えば、畳み込みニューラルネットワークにおける積和演算において、重みとデータの値との乗算を、重みと＋１、０、又は−１との乗算で実現できる。つまり、積和演算において、実質的に乗算が不要となるため、演算量を大幅に削減できる。
【００７６】
また、統計情報データベースに基いて、テンソルの値の一例である浮動小数点精度のデータを−１、＋１の２値に量子化してもよい。２値の量子化は、３値の量子化における値−１と値０とを１つの値−１に統合したものと見なすことができ、正閾値及び負閾値を同じ値とした１つの閾値が用いられる。正スケール及び負スケールは２値の量子化でも３値の量子化と同様である。
【００７７】
（実施の形態２）
実施の形態２に係るネットワーク量子化方法などについて説明する。本実施の形態に係るネットワーク量子化方法は、テストデータセットの統計情報に基いて、テストデータセットを複数の類型に分類し、類型毎に異なる処理を行う点において、実施の形態１に係る量子化方法と相違する。以下、本実施の形態に係るネットワーク量子化方法、ネットワーク量子化装置、及び、ネットワーク量子化方法によって生成された量子化ネットワークを用いた推論方法について、実施の形態１との相違点を中心に説明する。
【００７８】
［２−１．ネットワーク量子化装置］
まず、本実施の形態に係るネットワーク量子化装置の構成について、図９を用いて説明する。図９は、本実施の形態に係るネットワーク量子化装置１１０の機能構成の概要を示すブロック図である。
【００７９】
図９に示されるように、ネットワーク量子化装置１１０は、データベース構築部１１６と、パラメータ生成部１２０と、ネットワーク構築部１２４とを備える。本実施の形態では、ネットワーク量子化装置１１０は、機械学習部２８をさらに備える。本実施の形態に係るネットワーク量子化装置１１０は、データベース構築部１１６、パラメータ生成部１２０及びネットワーク構築部１２４において、実施の形態１に係るネットワーク量子化装置１０と相違する。
【００８０】
実施の形態１で述べたように、ニューラルネットワーク１４が扱うテンソルの値の分布に応じて、テンソルの値の領域ごとに量子化ステップ間隔を変えることで、より精度の良好な量子化ネットワークを得られる。そこで本実施の形態では、複数のテストデータセット１２の類型毎に量子化を行うことで、より一層精度が良好な量子化ネットワークを得る。
【００８１】
本実施の形態に係るデータベース構築部１１６は、実施の形態１に係るデータベース構築部と同様に、ニューラルネットワーク１４に複数のテストデータセットを入力する場合に得られるニューラルネットワーク１４が扱うテンソルの統計情報データベースを構築する。本実施の形態では、データベース構築部１１６は、複数のテストデータセット１２の各々の統計情報に基いて、複数のテストデータセット１２の少なくとも一部を第一類型及び第二類型に分類する。例えば、複数のテストデータセット１２として複数の画像を用いる場合には、複数の画像は、画像の明るさなどの統計情報に基いて、昼間の屋外の画像に分類される類型と、夜間の屋外の画像に分類される類型などに分類される。具体的な演算方法として、例えば、複数のテストデータセット１２のすべてに対するテンソルの分布が混合正規分布に従うと推定し、当該混合正規分布に含まれる複数の正規分布の各々を一つの類型として分類してもよい。この場合、複数のテストデータセット１２の各々と複数の正規分布とを照合し、各テストデータセットを分類してもよい。
【００８２】
データベース構築部１１６によって構築される統計情報データベース１１８は、第一類型及び第二類型にそれぞれ対応する第一データベースサブセット及び第二データベースサブセットを含む。言い換えると、データベース構築部１１６は、複数のテストデータセット１２のうち第一類型に含まれるテストデータセットをニューラルネットワーク１４に入力する場合に得られるニューラルネットワーク１４が扱うテンソルの統計情報を含む第一データベースサブセットを構築する。また、データベース構築部１１６は、複数のテストデータセット１２のうち第二類型に含まれるテストデータセットをニューラルネットワーク１４に入力する場合に得られるニューラルネットワーク１４が扱うテンソルの統計情報を含む第二データベースサブセットを構築する。
【００８３】
パラメータ生成部１２０は、実施の形態１に係るパラメータ生成部２０と同様に、統計情報データベースとニューラルネットワークとに基いて、テンソルの値を量子化することによって、量子化パラメータセット１２２を生成する。本実施の形態では、量子化パラメータセット１２２は、第一データベースサブセット及び第二データベースサブセットにそれぞれ対応する第一パラメータサブセット及び第二パラメータサブセットを含む。
【００８４】
ネットワーク構築部１２４は、実施の形態１に係るネットワーク構築部２４と同様に、量子化パラメータセット１２２を用いてニューラルネットワークを量子化することによって、量子化ネットワーク１２６を構築する。本実施の形態では、量子化ネットワーク１２６は、第一パラメータサブセット及び第二パラメータサブセットにそれぞれ対応する第一ネットワークサブセット及び第二ネットワークサブセットを含む。
【００８５】
これにより、本実施の形態では、複数のテストデータセット１２の第一類型及び第二類型にそれぞれ対応する量子化ネットワークを構築するため、より精度が良好な量子化ネットワークを構築できる。
【００８６】
また、本実施の形態でも、実施の形態１と同様に、機械学習部２８は、量子化ネットワーク１２６に機械学習させる。本実施の形態では、機械学習部２８は、第一ネットワークサブセット及び第二ネットワークサブセットにそれぞれ第一類型及び第二類型のテストデータセットを入力することで機械学習させる。これにより、量子化ネットワーク１２６より精度が良好な量子化ネットワーク１３０を構築できる。
【００８７】
なお、データベース構築部１１６は、複数のテストデータセット１２を三つ以上の類型に分類してもよい。またこれに伴い、統計情報データベース１１８は、三つ以上のデータベースサブセットを含んでもよいし、量子化パラメータセット１２２は、三つ以上のパラメータサブセットを含んでもよい。また、量子化ネットワーク１２６及び量子化ネットワーク３０は、それぞれ三つ以上のネットワークサブセットを含んでもよい。
【００８８】
［２−２．ネットワーク量子化方法及び推論方法］
次に、本実施の形態に係るネットワーク量子化方法及びそれを用いた推論方法について、図１０を用いて説明する。図１０は、本実施の形態に係るネットワーク量子化方法及び推論方法を示すフローチャートである。
【００８９】
本実施の形態に係る推論方法は、図１０に示されるフローチャートの全ステップを含み、本実施の形態に係るネットワーク量子化方法は、図１０に示されるフローチャートのうち、ステップＳ１０からステップＳ１５０までのステップを含む。
【００９０】
図１０に示されるように、本実施の形態に係るネットワーク量子化方法及び推論方法において、まず、実施の形態１に係るネットワーク量子化方法と同様に、ニューラルネットワーク１４を準備する（Ｓ１０）。
【００９１】
続いて、データベース構築部１１６は、複数のテストデータセット１２の各々の統計情報に基いて、複数のテストデータセット１２の少なくとも一部を第一類型及び第二類型に分類する（Ｓ１１５）。
【００９２】
続いて、データベース構築部１１６は、ニューラルネットワーク１４に複数のテストデータセット１２を入力する場合に得られるニューラルネットワーク１４が扱うテンソルの統計情報データベース１１８を構築する（Ｓ１２０）。本実施の形態では、統計情報データベース１１８は、第一類型及び第二類型にそれぞれ対応する第一データベースサブセット及び第二データベースサブセットを含む。
【００９３】
続いて、パラメータ生成部１２０は、統計情報データベース１１８とニューラルネットワーク１４とに基いて、テンソルの値を量子化することによって、量子化パラメータセット１２２を生成する（Ｓ１３０）。本実施の形態では、量子化パラメータセット１２２は、第一データベースサブセット及び第二データベースサブセットにそれぞれ対応する第一パラメータサブセット及び第二パラメータサブセットを含む。
【００９４】
続いて、ネットワーク構築部２４は、量子化パラメータセット１２２を用いてニューラルネットワーク１４を量子化することによって、量子化ネットワーク１２６を構築する（Ｓ１４０）。本実施の形態では、量子化ネットワーク１２６は、第一パラメータサブセット及び第二パラメータサブセットをそれぞれ用いてニューラルネットワーク１４を量子化することによって構築された第一ネットワークサブセット及び第二ネットワークサブセットを含む。
【００９５】
続いて、機械学習部２８は、量子化ネットワーク１２６に機械学習させる（Ｓ１５０）。機械学習部２８は、ネットワーク構築部１２４によって構築された量子化ネットワーク１２６に複数のテストデータセット１２又は他の入力データセットを入力することで機械学習させる。本実施の形態では、機械学習部２８は、第一ネットワークサブセット及び第二ネットワークサブセットにそれぞれ第一類型及び第二類型のテストデータセットを入力することで機械学習させる。これにより、量子化ネットワーク１２６より精度が良好な量子化ネットワーク１３０を構築できる。なお、本実施の形態に係るネットワーク量子化方法は、機械学習ステップＳ１５０を必ずしも含まなくてもよい。
【００９６】
以上のように、本実施の形態に係るネットワーク量子化方法によれば、ニューラルネットワークを精度良く量子化できる。
【００９７】
続いて、本実施の形態に係る推論方法において、上記ネットワーク量子化方法によって、構築された量子化ネットワーク１２６を用いて推論を実行する。具体的には、まず、入力データを準備し、第一類型及び第二類型のうち、量子化ネットワーク１２６に入力される入力データが分類される類型を選択する（Ｓ１６０）。このステップ１６０は、例えば、量子化ネットワーク１２６が実装されたコンピュータなどが、入力データを解析し、入力データの統計情報に基いて類型を選択してもよい。
【００９８】
続いて、第一類型及び第二類型のうち、類型選択ステップＳ１６０において選択された類型に基いて、第一ネットワークサブセット及び第二ネットワークサブセットの一方を選択する（Ｓ１７０）。このステップ１６０は、例えば、量子化ネットワーク１２６が実装されたコンピュータなどが、選択された類型に対応するネットワークサブセットを選択してもよい。
【００９９】
続いて、ネットワーク選択ステップＳ１７０において選択された第一ネットワークサブセット及び第二ネットワークサブセットの一方に入力データを入力する（Ｓ１８０）。これにより、選択されたネットワークサブセットにおいて、推論が実行される。
【０１００】
本実施の形態に係る推論方法によれば、上述のとおり精度良く量子化された量子化ネットワークを用いて推論を実行するため、精度の良好な推論結果が得られる。さらに、本実施の形態では、入力データの類型に適した量子化ネットワークを用いて推論を実行するため、より一層精度の良好な推論結果を得られる。
【０１０１】
（変形例など）
以上、本開示に係るネットワーク量子化方法などについて、各実施の形態に基いて説明したが、本開示は、これらの実施の形態に限定されるものではない。本開示の主旨を逸脱しない限り、当業者が思いつく各種変形を各実施の形態に施したものや、各実施の形態における一部の構成要素を組み合わせて構築される別の形態も、本開示の範囲内に含まれる。
【０１０２】
例えば、上記実施の形態１の変形例に係るネットワーク量子化方法のパラメータ生成ステップは、統計情報データベースに基いて、テンソルの値のうち、頻度がゼロでない量子化領域と、頻度がゼロでなく、かつ、量子化領域と重ならない非量子化領域とを決定し、量子化領域におけるテンソルの値は量子化され、非量子化領域におけるテンソルの値は量子化されなくてもよい。また、上記実施の形態１の変形例に係るネットワーク量子化装置が備えるパラメータ生成部は、統計情報データベースに基いて、テンソルの値のうち、頻度がゼロでない量子化領域と、頻度がゼロでなく、かつ、量子化領域と重ならない非量子化領域とを決定し、量子化領域におけるテンソルの値は量子化され、非量子化領域におけるテンソルの値は量子化されなくてもよい。
【０１０３】
本変形例は、例えば、上記実施の形態１に係るネットワーク量子化方法及びネットワーク量子化装置において、第一領域及び第二領域の少なくとも一部を量子化領域と決定し、第三領域〜第五領域の少なくとも一部を非量子化領域と決定し、かつ、非量子化領域におけるテンソルの値を量子化しない場合などに相当する。
【０１０４】
このように、量子化するテンソルの値の頻度がゼロでないテンソルの値を選択して量子化することにより、量子化するテンソルの値に頻度がゼロである値が含まれる場合より、量子化の精度を改善できる。したがって、精度の良好な量子化ネットワークを構築できる。
【０１０５】
また、本変形例において、量子化領域は、テンソルの値のうち、頻度が極大となる値を含み、非量子化領域は、テンソルの値のうち、量子化領域より頻度が低い値を含んでもよい。
【０１０６】
本変形例は、例えば、上記実施の形態１に係るネットワーク量子化方法及びネットワーク量子化装置において、第一領域及び第二領域の少なくとも一方を量子化領域と決定し、第三領域〜第五領域の少なくとも一部を非量子化領域と決定し、かつ、非量子化領域におけるテンソルの値を量子化しない場合などに相当する。
【０１０７】
このように、量子化領域が、テンソルの値のうち、頻度が極大となる値を含むため、より一層量子化の精度を改善できる。したがって、より一層精度の良好な量子化ネットワークを構築できる。
【０１０８】
また、本変形例に係るネットワーク量子化方法のパラメータ生成ステップは、頻度に準じる指標を用いて量子化領域及び非量子化領域を決定してもよい。例えば、パラメータ生成ステップは、量子化領域と非量子化領域とを、テンソルの値の分布と量子化されたテンソルの値の分布との違いを測る尺度に応じて決定してもよい。また、ネットワーク量子化装置のパラメータ生成部は、量子化領域と非量子化領域とを、テンソルの値の分布と量子化されたテンソルの値の分布との違いを測る尺度に応じて決定してもよい。このような尺度として、例えば、Kullback-Leiblerダイバージェンスを用いてもよい。
【０１０９】
また、以下に示す形態も、本開示の一つ又は複数の態様の範囲内に含まれてもよい。
【０１１０】
（１）上記のネットワーク量子化装置を構成する構成要素の一部は、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムであってもよい。前記ＲＡＭ又はハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【０１１１】
（２）上記のネットワーク量子化装置を構成する構成要素の一部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。
【０１１２】
（３）上記のネットワーク量子化装置を構成する構成要素の一部は、各装置に脱着可能なＩＣカード又は単体のモジュールから構成されているとしてもよい。前記ＩＣカード又は前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカード又は前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカード又は前記モジュールは、その機能を達成する。このＩＣカード又はこのモジュールは、耐タンパ性を有するとしてもよい。
【０１１３】
（４）また、上記のネットワーク量子化装置を構成する構成要素の一部は、前記コンピュータプログラム又は前記デジタル信号をコンピュータで読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【０１１４】
また、上記のネットワーク量子化装置を構成する構成要素の一部は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【０１１５】
（５）本開示は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【０１１６】
（６）また、本開示は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【０１１７】
（７）また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を、前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【０１１８】
（８）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０１１９】
本開示は、ニューラルネットワークのコンピュータなどへの実装方法として、画像処理方法などに利用できる。
【符号の説明】
【０１２０】
１０、１１０  ネットワーク量子化装置
１２  テストデータセット
１４  ニューラルネットワーク
１６、１１６  データベース構築部
１８、１１８  統計情報データベース
２０、１２０  パラメータ生成部
２２、１２２  量子化パラメータセット
２４、１２４  ネットワーク構築部
２６、３０、１２６、１３０  量子化ネットワーク
２８  機械学習部
１０００  コンピュータ
１００１  入力装置
１００２  出力装置
１００３  ＣＰＵ
１００４  内蔵ストレージ
１００５  ＲＡＭ
１００７  読取装置
１００８  送受信装置
１００９  バス
【図１】
2020065874.tif 000008
【図２】
2020065874.tif 000009
【図３】
2020065874.tif 000010
【図４】
2020065874.tif 000011
【図５】
2020065874.tif 000012
【図６】
2020065874.tif 000013
【図７】
2020065874.tif 000014
【図８】
2020065874.tif 000015
【図９】
2020065874.tif 000016
【図１０】
2020065874.tif 000017
【国際調査報告】
2020065874.tif 000018
2020065874.tif 000019
2020065874.tif 000020
2020065874.tif 000021