(57)【特許請求の範囲】
【請求項１】
複数の処理層を含んだ第１のニューラルネットワークを取得する入力部と、
前記第１のニューラルネットワークに含まれる畳み込み層および全結合層の少なくとも一つの処理層を修正対象層として特定し、前記修正対象層の後段に対して分離結合処理を追加するとともに、前記修正対象層の重みパラメータに第１の量子化関数を導入し、前記修正対象層の直後の活性化関数または前記活性化関数の出力に対して第２の量子化関数を導入して、第２のニューラルネットワークを生成する修正部と、
前記第２のニューラルネットワークの訓練を行う学習部と、
訓練後の前記第２のニューラルネットワークを出力する出力部と、
を備える、ニューラルネットワーク軽量化装置。
【請求項２】
前記分離結合処理は、前記修正対象層の出力に対して、チャネルデータ単位で二つ以上のグループに分割し、分割後の二つ以上のグループの一部または全部のグループの対応するチャネルデータ間において、加算、減算および乗算の少なくとも１つの演算を実行し、チャネルデータ単位で結合する処理を含む、
請求項１に記載のニューラルネットワーク軽量化装置。
【請求項３】
前記分離結合処理は、前記修正対象層の出力に対して、チャネルデータ単位で２つのグループに分割し、分割後の２つのグループの対応するチャネルデータ間において、加算、減算および乗算の少なくとも１つの演算を実行し、チャネルデータ単位で結合する処理を含む、
請求項２に記載のニューラルネットワーク軽量化装置。
【請求項４】
前記第１の量子化関数および前記第２の量子化関数それぞれは、符号関数である、
請求項１〜３のいずれか一項に記載のニューラルネットワーク軽量化装置。
【請求項５】
前記修正部は、前記分離結合処理の結果に前記学習部によって訓練可能な第１の係数パラメータの乗算処理を適用する、
請求項１〜４のいずれか一項に記載のニューラルネットワーク軽量化装置。
【請求項６】
前記修正部は、前記分離結合処理の結果に前記学習部によって訓練可能な第２の係数パラメータの加算処理を適用する、
請求項１〜５のいずれか一項に記載のニューラルネットワーク軽量化装置。
【請求項７】
前記修正部は、前記活性化関数を前記第２の量子化関数に置換することによって、前記活性化関数に対して前記第２の量子化関数を導入する、
請求項１〜６のいずれか一項に記載のニューラルネットワーク軽量化装置。
【請求項８】
前記修正部は、前記活性化関数の直後に前記第２の量子化関数を挿入することによって、前記活性化関数の出力に対して前記第２の量子化関数を導入する、
請求項１〜６のいずれか一項に記載のニューラルネットワーク軽量化装置。
【請求項９】
前記修正部は、前記修正対象層の後段かつ前記第２の量子化関数の導入位置の前段に、前記分離結合処理を追加する、
請求項１〜８のいずれか一項に記載のニューラルネットワーク軽量化装置。
【請求項１０】
前記分離結合処理においては、前記二つ以上のグループのいずれのグループ間においてもチャネルデータ同士の重複がないように、または、少なくともいずれか２つのグループ間において少なくとも一部のチャネルデータ同士が重複するように分割される、
請求項２に記載のニューラルネットワーク軽量化装置。
【請求項１１】
複数の処理層を含んだ第１のニューラルネットワークを取得することと、
前記第１のニューラルネットワークに含まれる畳み込み層および全結合層の少なくとも一つの処理層を修正対象層として特定し、前記修正対象層の後段に対して分離結合処理を追加するとともに、前記修正対象層の重みパラメータに第１の量子化関数を導入し、前記修正対象層の直後の活性化関数または前記活性化関数の出力に対して第２の量子化関数を導入して、第２のニューラルネットワークを生成することと、
前記第２のニューラルネットワークの訓練を行うことと、
訓練後の前記第２のニューラルネットワークを出力することと、
を含む、ニューラルネットワーク軽量化方法。
【請求項１２】
コンピュータを、
複数の処理層を含んだ第１のニューラルネットワークを取得する入力部と、
前記第１のニューラルネットワークに含まれる畳み込み層および全結合層の少なくとも一つの処理層を修正対象層として特定し、前記修正対象層の後段に対して分離結合処理を追加するとともに、前記修正対象層の重みパラメータに第１の量子化関数を導入し、前記修正対象層の直後の活性化関数または前記活性化関数の出力に対して第２の量子化関数を導入して、第２のニューラルネットワークを生成する修正部と、
前記第２のニューラルネットワークの訓練を行う学習部と、
訓練後の前記第２のニューラルネットワークを出力する出力部と、
を備えるニューラルネットワーク軽量化装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラムに関する。
【背景技術】
【０００２】
近年、各種の分野においてニューラルネットワークが用いられている。例えば、物体の認識または物体の位置検出などを目的とした一般的なニューラルネットワークのモデルが知られている。かかる一般的なニューラルネットワークのモデルでは、畳み込み層または全結合層における演算に、１６〜３２ビットの浮動小数点によってそれぞれ表現される特徴量および重みパラメータが使用される。
【０００３】
一方、例えば、量子化ニューラルネットワークの形態の一つである２値化ニューラルネットワークでは、畳み込み層または全結合層における演算に使用される特徴量および重みパラメータは、それぞれ（−１と１で表現される）１ビット（すなわち２値）で表現され得る。これによって、畳み込み層または全結合層での浮動小数点演算がビット演算に置き換えられ得る。ビット演算が使用される場合には、浮動小数点演算が使用される場合よりも、低消費電力かつ高速な演算処理が実行され得るとともに、メモリ使用量も低減され得るため、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）またはモバイル端末などといった、演算リソースの限られたデバイス上でもディープラーニングモデルの効率的な処理が可能となることが知られている。
【０００４】
例えば、２値化ニューラルネットワークの構築方法が開示されている（例えば、非特許文献１参照）。より詳細に、かかる非特許文献１には、全ての畳み込み層または全結合層において、浮動小数点で表現される重みパラメータを符号関数により−１または１で表現される２値に変換するとともに、入力される特徴量も符号関数により−１または１で表現される２値に変換する方法が開示されている。
【０００５】
また、量子化ニューラルネットワークの構築方法が開示されている（例えば、非特許文献２参照）。より詳細に、かかる非特許文献２には、量子化ニューラルネットワークの畳み込み層が含む、任意のビット数で構成されるチャネル数を、単純に増加させることによって、量子化ニューラルネットワークの精度を高める方法が開示されている。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Itay Hubara、他４名、"Binarized Neural Networks"、[online]、Neural Information ProcessingSystems (2016)、［令和1年12月16日検索］、インターネット＜http://papers.nips.cc/paper/6573-binarized-neural-networks＞
【非特許文献２】Asit Mishra、他３名、"WRPN: Wide Reduced-Precision Networks"、International Conference on Learning Representations (2018)、［令和1年12月16日検索］、インターネット＜https://openreview.net/forum?id=B1ZvaaeAZ＞
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、非特許文献１に開示されている方法によれば、畳み込み層または全結合層に入力されるデータ（例えば、特徴量および重みパラメータなど）の２値化に伴って生じる誤差（量子化誤差）の影響が大きくなりやすい。そのため、非特許文献１に開示されている方法によれば、量子化ニューラルネットワークモデルの精度が大きく劣化してしまう可能性がある。
【０００８】
また、非特許文献２に開示されている方法によれば、チャネル数の増加によって量子化ニューラルネットワークの精度が向上し得る。しかし、チャネル数の増加に伴って必要な演算の規模が大きくなってしまう。そのため、非特許文献２に開示されている方法によれば、量子化ニューラルネットワークモデルの処理効率を大きく低下させてしまう可能性がある。
【０００９】
そこで、量子化ニューラルネットワークモデルの処理効率の低下を抑制しつつ、量子化ニューラルネットワークモデルの精度を向上させることを可能とする技術が提供されることが望まれる。
【課題を解決するための手段】
【００１０】
上記問題を解決するために、本発明のある観点によれば、複数の処理層を含んだ第１のニューラルネットワークを取得する入力部と、前記第１のニューラルネットワークに含まれる畳み込み層および全結合層の少なくとも一つの処理層を修正対象層として特定し、前記修正対象層の後段に対して分離結合処理を追加するとともに、前記修正対象層の重みパラメータに第１の量子化関数を導入し、前記修正対象層の直後の活性化関数または前記活性化関数の出力に対して第２の量子化関数を導入して、第２のニューラルネットワークを生成する修正部と、前記第２のニューラルネットワークの訓練を行う学習部と、訓練後の前記第２のニューラルネットワークを出力する出力部と、を備える、ニューラルネットワーク軽量化装置が提供される。
【００１１】
前記分離結合処理は、前記修正対象層の出力に対して、チャネルデータ単位で二つ以上のグループに分割し、分割後の二つ以上のグループの一部または全部のグループの対応するチャネルデータ間において、加算、減算および乗算の少なくとも１つの演算を実行し、チャネルデータ単位で結合する処理を含んでもよい。
【００１２】
前記分離結合処理は、前記修正対象層の出力に対して、チャネルデータ単位で２つのグループに分割し、分割後の２つのグループの対応するチャネルデータ間において、加算、減算および乗算の少なくとも１つの演算を実行し、チャネルデータ単位で結合する処理を含んでもよい。
【００１３】
前記第１の量子化関数および前記第２の量子化関数それぞれは、符号関数であってもよい。
【００１４】
前記修正部は、前記分離結合処理の結果に前記学習部によって訓練可能な第１の係数パラメータの乗算処理を適用してもよい。
【００１５】
前記修正部は、前記分離結合処理の結果に前記学習部によって訓練可能な第２の係数パラメータの加算処理を適用してもよい。
【００１６】
前記修正部は、前記活性化関数を前記第２の量子化関数に置換することによって、前記活性化関数に対して前記第２の量子化関数を導入してもよい。
【００１７】
前記修正部は、前記活性化関数の直後に前記第２の量子化関数を挿入することによって、前記活性化関数の出力に対して前記第２の量子化関数を導入してもよい。
【００１８】
前記修正部は、前記修正対象層の後段かつ前記第２の量子化関数の導入位置の前段に、前記分離結合処理を追加してもよい。
【００１９】
前記分離結合処理においては、前記二つ以上のグループのいずれのグループ間においてもチャネルデータ同士の重複がないように、または、少なくともいずれか２つのグループ間において少なくとも一部のチャネルデータ同士が重複するように分割されてもよい。
【００２０】
また、本発明の別の観点によれば、複数の処理層を含んだ第１のニューラルネットワークを取得することと、前記第１のニューラルネットワークに含まれる畳み込み層および全結合層の少なくとも一つの処理層を修正対象層として特定し、前記修正対象層の後段に対して分離結合処理を追加するとともに、前記修正対象層の重みパラメータに第１の量子化関数を導入し、前記修正対象層の直後の活性化関数または前記活性化関数の出力に対して第２の量子化関数を導入して、第２のニューラルネットワークを生成することと、前記第２のニューラルネットワークの訓練を行うことと、訓練後の前記第２のニューラルネットワークを出力することと、を含む、ニューラルネットワーク軽量化方法が提供される。
【００２１】
また、本発明の別の観点によれば、コンピュータを、複数の処理層を含んだ第１のニューラルネットワークを取得する入力部と、前記第１のニューラルネットワークに含まれる畳み込み層および全結合層の少なくとも一つの処理層を修正対象層として特定し、前記修正対象層の後段に対して分離結合処理を追加するとともに、前記修正対象層の重みパラメータに第１の量子化関数を導入し、前記修正対象層の直後の活性化関数または前記活性化関数の出力に対して第２の量子化関数を導入して、第２のニューラルネットワークを生成する修正部と、前記第２のニューラルネットワークの訓練を行う学習部と、訓練後の前記第２のニューラルネットワークを出力する出力部と、を備えるニューラルネットワーク軽量化装置として機能させるためのプログラムが提供される。
【発明の効果】
【００２２】
以上説明したように本発明によれば、量子化ニューラルネットワークモデルの処理効率の低下を抑制しつつ、量子化ニューラルネットワークモデルの精度を向上させることを可能とする技術が提供される。
【図面の簡単な説明】
【００２３】
【図１】本発明の実施形態に係るニューラルネットワーク軽量化装置の機能構成例を示す図である。
【図２】軽量化対象のニューラルネットワークの一例を示す図である。
【図３】修正部の動作例を示すフローチャートである。
【図４】分離結合処理の追加、第１の量子化関数の導入、および、第２の量子化関数の導入の第１のパターンを説明するための図である。
【図５】分離結合処理の追加、第１の量子化関数の導入、および、第２の量子化関数の導入の第２のパターンを説明するための図である。
【図６】分離結合処理の追加、第１の量子化関数の導入、および、第２の量子化関数の導入の第３のパターンを説明するための図である。
【図７】分離結合処理の例を示す図である。
【図８】分離結合処理における和と差と積の演算結果の例を示す図である。
【図９】和と差と積のそれぞれの演算結果に対して符号関数が適用されることによって２つの入力特徴量が表現可能なパターンを二次元平面上に示した図である。
【図１０】分離結合処理の変形例を示す図である。
【図１１】各演算結果に対して適用される量子化関数を変更することによって表現可能なパターンの一例を二次元平面上に示した図である。
【図１２】本発明の実施形態に係るニューラルネットワーク軽量化装置の例としての情報処理装置のハードウェア構成を示す図である。
【発明を実施するための形態】
【００２４】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００２５】
また、本明細書および図面において、実質的に同一の機能構成を有する複数の構成要素を、同一の符号の後に異なる数字を付して区別する場合がある。ただし、実質的に同一の機能構成を有する複数の構成要素等の各々を特に区別する必要がない場合、同一符号のみを付する。また、異なる実施形態の類似する構成要素については、同一の符号の後に異なるアルファベットを付して区別する場合がある。ただし、異なる実施形態の類似する構成要素等の各々を特に区別する必要がない場合、同一符号のみを付する。
【００２６】
（１．実施形態の詳細）
続いて、本発明の実施形態の詳細について説明する。
【００２７】
（１−１．構成の説明）
まず、本発明の実施形態に係るニューラルネットワーク軽量化装置の構成例について説明する。図１は、本発明の実施形態に係るニューラルネットワーク軽量化装置の機能構成例を示す図である。図１に示されるように、本発明の実施形態に係るニューラルネットワーク軽量化装置１０は、入力部１００、修正部１０１、学習部１０２および出力部１０３を備える。
【００２８】
ニューラルネットワーク軽量化装置１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などの演算装置を含み、図示しないメモリにより記憶されているプログラムがＣＰＵによりＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）に展開されて実行されることにより、その機能が実現され得る。このとき、当該プログラムを記録した、コンピュータに読み取り可能な記録媒体も提供され得る。あるいは、ニューラルネットワーク軽量化装置１０は、専用のハードウェアにより構成されていてもよいし、複数のハードウェアの組み合わせにより構成されてもよい。
【００２９】
（入力部１００）
入力部１００は、軽量化対象のニューラルネットワーク（第１のニューラルネットワークおよび軽量化対象のニューラルネットワークの学習に使用されるデータ（学習用データセット）を取得する。例えば、入力部１００は、軽量化対象のニューラルネットワークおよび学習用データセットを、図示しないメモリから読み出すことによって取得してもよい。例えば、軽量化対象のニューラルネットワークは、学習前のニューラルネットワークの構造（モデル構造）であってよい。
【００３０】
図２は、軽量化対象のニューラルネットワークの一例を示す図である。図２に示されるように、軽量化対象のニューラルネットワークは、第１層から第Ｎ層（Ｎは２以上の整数）までの複数の層によって構成される。第１層には、入力データが入力され、第Ｎ層からは、出力データが出力される。第１層から第Ｎ層までの各層には、処理層が含まれており、第１層から第Ｎ層までの各層の次層には、活性化関数が挿入されている。第１層から第Ｎ層までの各層に含まれる処理層は、次層に含まれる活性化関数に対して出力を行う。
【００３１】
図２に示された例では、第１層から第（Ｎ−１）層までの各層に含まれる処理層は、畳み込み層であり、第Ｎ層に含まれる処理層は、全結合層である。しかし、第１層から第Ｎ層までの各層に含まれる処理層の種類は、図２に示された例に限定されない。例えば、軽量化対象のニューラルネットワークは、処理層として畳み込み層および全結合層の一方を、１または複数含んでもよいし、処理層として畳み込み層および全結合層のそれぞれを、１または複数含んでもよい。また、軽量化対象のニューラルネットワークは、畳み込み層以外かつ全結合層以外の処理層を含んでもよい。
【００３２】
また、図２には、軽量化対象のニューラルネットワークの第１層から第Ｎ層までの処理層によって使用される重みパラメータとして、重みパラメータｗ１〜ｗＮが示されている。本発明の実施形態では、軽量化対象のニューラルネットワークの各処理層による演算に、１６〜３２ビットの浮動小数点によってそれぞれ表現される特徴量および重みパラメータが使用される場合を想定する。しかし、軽量化対象のニューラルネットワークの各処理層によって使用される特徴量および重みパラメータそれぞれの形式は、かかる例に限定されない。
【００３３】
図１に戻って説明を続ける。入力部１００によって取得された軽量化対象のニューラルネットワークおよび学習用データセットは、修正部１０１に出力される。
【００３４】
（修正部１０１）
修正部１０１は、入力部１００から入力された軽量化対象のニューラルネットワークに基づいて、軽量化対象のニューラルネットワークに含まれる畳み込み層および全結合層の少なくとも一つの処理層を修正対象層として特定する。ここでは、第１層から第（Ｎ−１）層に含まれる畳み込み層、および、第Ｎ層に含まれる全結合層の全部を、修正対象層として特定する場合を想定する。しかし、修正部１０１は、軽量化対象のニューラルネットワークに含まれる畳み込み層および全結合層の一部のみを修正対象層として特定してもよい。例えば、修正部１０１は、軽量化対象のニューラルネットワークに含まれる畳み込み層および全結合層のうち、あらかじめ定められた一部のみを修正対象層として特定してもよい。
【００３５】
修正部１０１は、修正対象層の後段に対して後に説明する分離結合処理を追加する。なお、本発明の実施形態においては、ある位置Ｐ１の後段とは、位置Ｐ１よりも後ろの位置Ｐ２を示し、位置Ｐ１と位置Ｐ２との間に処理が挟まれていない場合（位置Ｐ１の直後に位置Ｐ２が存在する場合）を含む他、位置Ｐ１と位置Ｐ２との間に何らかの処理が挟まれる場合も含まれ得る。同様に、ある位置Ｐ１の前段とは、位置Ｐ１よりも前の位置Ｐ３を示し、位置Ｐ１と位置Ｐ３との間に処理が挟まれていない場合（位置Ｐ１の直前に位置Ｐ３が存在する場合）を含む他、位置Ｐ１と位置Ｐ３との間に何らかの処理が挟まれる場合も含まれ得る。
【００３６】
また、修正部１０１は、修正対象層の重みパラメータに量子化関数（第１の量子化関数）を導入する。さらに、修正部１０１は、修正対象層の直後の活性化関数（すなわち、修正対象層が属する層（第ｌ層）の次層（第ｌ＋１層）の活性化関数）または当該活性化関数の出力に対して量子化関数（第２の量子化関数）を導入する。これによって、修正部１０１は、修正後のニューラルネットワーク（第２のニューラルネットワーク）を生成する。かかる分離結合処理の追加、第１の量子化関数の導入、および、第２の量子化関数の導入が実行される順序は限定されない。修正部１０１によって生成された修正後のニューラルネットワークおよび学習用データセットは、学習部１０２に出力される。
【００３７】
（学習部１０２）
学習部１０２は、修正部１０１から入力された学習用データセットに基づいて、修正部１０１から入力された修正後のニューラルネットワークの訓練を行う。例えば、学習部１０２は、誤差逆伝播法（バックプロパゲーション）などを用いて、修正後のニューラルネットワークの訓練を行う。これによって、修正後のニューラルネットワークに含まれる各処理層の重みパラメータが更新される。なお、重みパラメータの初期値には、乱数が使用されてよいが、軽量化対象のニューラルネットワークの訓練済みの重みパラメータがあれば、訓練済みの重みパラメータが初期値として利用されてもよい。訓練が終わった訓練済みのニューラルネットワークは、出力部１０３に出力される。
【００３８】
（出力部１０３）
出力部１０３は、訓練済みのニューラルネットワークを出力する。出力部１０３による訓練済みのニューラルネットワークの出力はどのように行われてもよい。例えば、出力部１０３は、訓練済みのニューラルネットワークを記録媒体に出力することによって、記録媒体に訓練済みのニューラルネットワークを記録してもよい。あるいは、出力部１０３は、訓練済みのニューラルネットワークを通信装置に出力することによって、通信装置を介して訓練済みのニューラルネットワークを他の装置に送信してもよい。
【００３９】
（１−２．動作の説明）
続いて、本発明の実施形態に係るニューラルネットワーク軽量化装置１０の動作例について説明する。上記したように、入力部１００によって、軽量化対象のニューラルネットワーク（図２）および学習用データセットが取得される。ここでは一例として、学習用データとして２次元画像が使用される場合を想定する。このとき、軽量化対象のニューラルネットワークに含まれる第ｌ（エル）層の畳み込み層によって行われる演算は、下記の数式（１）のように示される。
【００４０】
【数１】
0006856112.tif 000002
【００４１】
ここで、ｘｌは、第ｌ（エル）層の畳み込み層への入力特徴量を示し、ｗｌは、第ｌ層の畳み込み層によって使用される重みパラメータを示し、添え字ｉ、ｊ、ｎ、ｍは、それぞれ出力チャネル、入力チャネル、画像の幅、画像の高さを示し、ｆ（）は、活性化関数を示している。ただし、数式（１）において第（ｌ＋１）層への入力特徴量ｘｌ＋１ｉに対応する画像の幅と画像の高さを示す添え字は省略されている。数式（１）に示されるように、重みパラメータと入力特徴量との内積が計算された後に、活性化関数が適用される。例えば、活性化関数にはランプ関数などが利用されてよい。また、活性化関数の適用前にバッチ正規化が適用されてもよい。
【００４２】
図３は、修正部１０１の動作例を示すフローチャートである。修正部１０１は、入力部１００から入力された軽量化対象のニューラルネットワークに基づいて、軽量化対象のニューラルネットワークに含まれる畳み込み層または全結合層を修正対象層として特定する（Ｓ２００）。ここでは、上記したように、修正部１０１が、軽量化対象のニューラルネットワークに含まれる全部の畳み込み層および全結合層を修正対象層として特定する場合を想定する。しかし、上記したように、修正部１０１は、軽量化対象のニューラルネットワークに含まれる畳み込み層および全結合層の一部のみを修正対象層として特定してもよい。
【００４３】
修正部１０１は、修正対象層の重みパラメータに量子化関数（第１の量子化関数）を導入する。さらに、修正部１０１は、修正対象層の直後の活性化関数または活性化関数の出力に対して量子化関数（第２の量子化関数）を導入する（Ｓ２０１）。例えば、量子化関数は、連続的な値を離散的な値に変換する関数を意味し得る。本発明の実施形態では、第１の量子化関数および第２の量子化関数それぞれが、符号関数である場合を想定する。例えば、符号関数は、連続的な値を２値のいずれかに変換する関数を意味し得る。例えば、符号関数は、下記の数式（２）によって示され得る。
【００４４】
【数２】
0006856112.tif 000003
【００４５】
仮に、第ｌ（エル）層の畳み込み層が修正対象層として特定され、第ｌ層の畳み込み層の重みパラメータに量子化関数（第１の量子化関数）が導入され、第ｌ層の畳み込み層の直後の活性化関数に対して量子化関数（第２の量子化関数）が導入された場合を想定する。かかる場合には、第ｌ層の畳み込み層の出力特徴量ｙｌｉと、この出力特徴量ｙｌｉに対して量子化関数ｓｇｎ（）が導入された結果としての第（ｌ＋１）層の畳み込み層への入力特徴量ｘｌ＋１ｉとは、下記の数式（３）（４）によって示され得る。
【００４６】
【数３】
0006856112.tif 000004
【００４７】
ただし、数式（１）における第（ｌ＋１）層への入力特徴量ｘｌ＋１ｉと同様に、数式（３）において第ｌ層の畳み込み層からの出力特徴量ｙｌｉに対応する画像の幅と画像の高さを示す添え字は省略されている。
【００４８】
ここで、数式（３）における入力特徴量ｘｌｊ，ｎ，ｍは、前層である第（ｌ−１）層からの出力に対して、数式（４）と同等の式が適用されることによって既に２値化されている。さらに、数式（３）において重みパラメータも量子化関数ｓｇｎ（）によって２値化される。すなわち、数式（３）において、重みパラメータと入力特徴量との乗算は、ＸＮＯＲによるビット演算によって行われ、そのビット演算結果同士の加算は、ポップカウントの操作（１になっているビットを数える操作）に置き換えられる。したがって、第１の量子化関数および第２の量子化関数の導入によって低消費電力かつ高速な処理が可能となる。
【００４９】
しかしながら、数式（３）によって示される内積（積和演算）の結果は整数となる一方、その整数が量子化関数によって量子化される際に量子化誤差が発生し得る。量子化誤差はニューラルネットワークのモデルの精度に大きな影響を与えるため、量子化誤差に対しては何らかの対策が必要となる。特に前段の層から後段の層への出力が２値化される場合には、数式（４）に示されるように、正負の情報しか後段の層に伝播されないため、後段の層に伝播される情報量は大きく欠落してしまう。
【００５０】
これに対して、非特許文献１に記載の方法では、特段の対策が取られておらず、高精度な結果が得られないモデルが生成される。
【００５１】
一方、非特許文献２に記載の方法では、畳み込み層が備えるフィルタ数（チャネル数）を増加することによって、量子化誤差の影響を低減することに成功している。このような量子化誤差の影響の低減は、２値化された特徴量の多数の組み合わせによって、（２値化が行われながらも）表現能力が維持されるために達成され得ると考えられる。例えば、特徴量が２値化されていても、チャネル数が６４であれば、特徴量は２６４通りのパターンを表現し得るが、チャネル数が１２８であれば、特徴量は２１２８通りのパターンを表現し得る。すなわち、チャネル数の増加によって２値化された特徴量の表現能力を増強することができる。
【００５２】
しかしながら、チャネル数の増加に比例して必要な積和演算回数も増加してしまう。例えば、入力特徴量のサイズがＨ×Ｗピクセルで表現され、出力チャネル数がＣであり、畳み込みフィルタサイズがＫ×Ｋの重みパラメータ、ストライド幅が１であり、入力特徴量の周囲に０を１ピクセルずつ埋めた場合を想定する。かかる場合には、Ｋ＝３となり、積の演算回数は、Ｃ×Ｋ×Ｋ×Ｈ×Ｗ回であり、和の演算回数は（Ｃ−１）×（Ｋ×Ｋ−１）×（Ｈ×Ｗ−１）回となる。したがって、出力チャネル数Ｃの増加に比例して積和演算回数が増加してしまうため、チャネル数の増加によってモデルの精度は向上したとしても、学習処理または推論処理の速度面での効率が低下してしまう。
【００５３】
そこで、本発明の実施形態では、ニューラルネットワークモデルのチャネル数の増加を抑制しつつ、ニューラルネットワークモデルの表現能力を向上させる手段として、修正対象層の後段（すなわち、修正対象層における内積演算の後段）に対して分離結合処理を追加する。すなわち、修正部１０１は、分離結合処理の追加、第１の量子化関数の導入、および、第２の量子化関数の導入によって、修正後のニューラルネットワークを生成する。ここで、分離結合処理の追加、第１の量子化関数の導入、および、第２の量子化関数の導入には、幾つかのパターンが挙げられる。
【００５４】
以下では、分離結合処理の追加、第１の量子化関数の導入、および、第２の量子化関数の導入のパターンの例として、３つのパターンについて説明する。例えば、分離結合処理の追加、第１の量子化関数の導入、および、第２の量子化関数の導入は、これらのパターンのいずれか一つが選択的に実行されればよい。なお、以下では、第１の量子化関数をｓｇｎ１（）と表現し、第２の量子化関数をｓｇｎ２（）と表現する場合がある。
【００５５】
図４は、分離結合処理の追加、第１の量子化関数ｓｇｎ１（）の導入、および、第２の量子化関数ｓｇｎ２（）の導入の第１のパターンを説明するための図である。図５は、分離結合処理の追加、第１の量子化関数ｓｇｎ１（）の導入、および、第２の量子化関数ｓｇｎ２（）の導入の第２のパターンを説明するための図である。図６は、分離結合処理の追加、第１の量子化関数ｓｇｎ１（）の導入、および、第２の量子化関数ｓｇｎ２（）の導入の第３のパターンを説明するための図である。
【００５６】
なお、図４〜図６に示された例では、修正対象層が第ｌ（エル）層の畳み込み層である場合を想定する。しかし、修正処理層が他の処理層である場合も同様に、分離結合処理の追加、第１の量子化関数ｓｇｎ１（）の導入、および、第２の量子化関数ｓｇｎ２（）の導入が行われてよい。
【００５７】
図４に示されるように、修正部１０１は、第ｌ（エル）層の畳み込み層の重みパラメータｗｌに第１の量子化関数ｓｇｎ１（）を導入してよい。さらに、修正部１０１は、第ｌ（エル）層の畳み込み層の直後の活性化関数（すなわち、第ｌ＋１層の活性化関数）の直後（すなわち、第ｌ＋１層の活性化関数の後段かつ第ｌ＋１層の畳み込み層の前段）に第２の量子化関数ｓｇｎ２（）を挿入することによって、活性化関数の出力に対して第２の量子化関数ｓｇｎ２（）を導入してよい。さらに、修正部１０１は、第ｌ層の畳み込み層の後段かつ第２の量子化関数ｓｇｎ２（）の導入位置の前段（かつ、第ｌ層の活性化関数の後段）に、分離結合処理を追加してよい。
【００５８】
あるいは、図５に示されるように、修正部１０１は、図４に示されたパターンと同様に、第ｌ（エル）層の畳み込み層の重みパラメータｗｌに第１の量子化関数ｓｇｎ１（）を導入してよい。さらに、修正部１０１は、図４に示されたパターンと同様に、第ｌ（エル）層の畳み込み層の直後の活性化関数（すなわち、第ｌ＋１層の活性化関数）の直後に第２の量子化関数ｓｇｎ２（）を挿入することによって、活性化関数の出力に対して第２の量子化関数ｓｇｎ２（）を導入してよい。さらに、修正部１０１は、図４に示されたパターンと異なり、第ｌ層の畳み込み層の後段かつ第２の量子化関数ｓｇｎ２（）の導入位置の前段（かつ、第ｌ層の活性化関数の前段）に、分離結合処理を追加してもよい。
【００５９】
あるいは、図６に示されるように、修正部１０１は、図４に示されたパターンと同様に、第ｌ（エル）層の畳み込み層の重みパラメータｗｌに第１の量子化関数ｓｇｎ１（）を導入してよい。さらに、修正部１０１は、図４に示されたパターンと異なり、第ｌ（エル）層の畳み込み層の直後の活性化関数（すなわち、第ｌ＋１層の活性化関数）を第２の量子化関数ｓｇｎ２（）に置換することによって、活性化関数に対して第２の量子化関数ｓｇｎ２（）を導入してもよい。さらに、修正部１０１は、第ｌ層の畳み込み層の後段かつ第２の量子化関数ｓｇｎ２（）の導入位置の前段に、分離結合処理を追加してもよい。
【００６０】
以下の説明では、図６に示されたパターンのように、第ｌ（エル）層の畳み込み層の重みパラメータｗｌに第１の量子化関数ｓｇｎ１（）が導入され、第ｌ層の畳み込み層の直後の活性化関数が第２の量子化関数ｓｇｎ２（）に置換され、第ｌ層の畳み込み層の後段かつ第２の量子化関数ｓｇｎ２（）の導入位置の前段に、分離結合処理が追加される場合を主に想定する。しかし、分離結合処理の追加、第１の量子化関数ｓｇｎ１（）の導入、および、第２の量子化関数ｓｇｎ２（）の導入は、かかるパターンに限定されない。
【００６１】
図７は、分離結合処理の例を示す図である。処理Ｎ１００は、第ｌ（エル）層からの出力（数式（３）における第ｌ層の出力特徴量ｙｌに相当）を入力特徴量Ｎ１０１として受け付ける。図７には、入力特徴量Ｎ１０１が６チャネルによって構成された例が示されているが、入力特徴量Ｎ１０１のチャネル数は限定されない。
【００６２】
処理Ｎ１１０は、入力特徴量Ｎ１０１をチャネルデータ単位で２つのグループ（入力特徴量Ｎ１１１および入力特徴量Ｎ１１２）に分割する。図７には、６チャネルによって構成された入力特徴量Ｎ１０１を３チャネルデータずつの２つのグループに分割する例が示されている。そして、処理Ｎ１２０は、分割後の２つのグループ（入力特徴量Ｎ１１１および入力特徴量Ｎ１１２）の対応するチャネルデータ間の対応する要素同士において、加算、減算および乗算の各演算を実行して、演算結果Ｎ１３１〜Ｎ１３３を得る。演算結果Ｎ１３１は、加算結果に該当し、演算結果Ｎ１３２は、減算結果に該当し、演算結果Ｎ１３３は、乗算結果に該当する。なお、除算は乗算の一態様として位置づけられる。
【００６３】
処理Ｎ１３０は、処理Ｎ１２０によって得られた演算結果Ｎ１３１〜Ｎ１３３をチャネルデータ単位で結合する。図７に示された例では、演算結果Ｎ１３１〜Ｎ１３３それぞれが３つのチャネルによって構成されている。すなわち、処理Ｎ１３０は、演算結果Ｎ１３１〜Ｎ１３３を構成する９つのチャネルデータを結合する。結合後のデータは、処理Ｎ１３０から第ｌ層の後段の量子化関数（本例では、符号関数）に出力される。結合後のデータは、量子化関数によって２値化される。
【００６４】
以上に説明した分割結合処理の意義について整理する。第ｌ層の畳み込み層の出力特徴量ｙｌ（入力特徴量Ｎ１０１に該当）は、上記したように符号同士の内積演算の結果である。したがって、第ｌ層の畳み込み層のチャネル数がＣであり、フィルタサイズがＫ×Ｋである場合、第ｌ層の畳み込み層の出力特徴量が、Ｃ×Ｋ×Ｋの値で除算されれば、出力特徴量ｙｌの各要素の値は、−１〜１の値域を持つコサインの値で表現可能な値に変換され得る。このとき、分離結合処理における和と差と積の演算結果Ｎ１３１〜Ｎ１３３について検証する。
【００６５】
図８は、分離結合処理における和と差と積の演算結果Ｎ１３１〜Ｎ１３３の例を示す図である。図８の左の図は、和の演算結果Ｎ１３１に該当する。図８の中央の図は、差の演算結果Ｎ１３２に該当する。図８の右の図は、積の演算結果Ｎ１３３に該当する。各図において、縦軸は１つ目のグループに該当する入力特徴量Ｎ１１１がコサインで表現された値であり、横軸は２つ目のグループに該当する入力特徴量Ｎ１１２がコサインで表現された値である。
【００６６】
図８の各図の色調は、和と差と積のそれぞれの演算結果の大きさを示し、濃い領域ほど演算結果の値が小さく、薄い領域ほど演算結果の値が大きくなるように示されている。さらに、図８の各図には、演算結果が０となる領域が破線で示されている。すなわち、図８の左の図（和の演算結果）では、破線の右上領域が正の演算結果が得られる領域であり、破線の左下領域が負の演算結果が得られる領域である。
【００６７】
図８の中央の図（差の演算結果）では、破線の右下領域が正の演算結果が得られる領域であり、破線の左上領域が負の演算結果が得られる領域である。図８の右の図（積の演算結果）では、破線の右上領域と左下領域が正の演算結果が得られる領域であり、破線の右下領域と左上領域が負の演算結果が得られる領域である。したがって、各図における破線は、分離結合処理の後に適用される符号関数における正負条件の境界（符号関数が２値のいずれを出力するかの境界）に当たる。
【００６８】
以上の説明から把握されるように、分割後の２つの入力特徴量の和と差と積のそれぞれの演算結果に対して符号関数が適用されることによって、分割後の２つの入力特徴量は、符号関数によって符号化（２値化）された後においても、２３＝８パターンの表現能力を得ることができる。
【００６９】
図９は、和と差と積のそれぞれの演算結果に対して符号関数が適用されることによって２つの入力特徴量が表現可能なパターンを二次元平面上に示した図である。図９を参照すると、二次元平面が８つの領域に分割されている。すなわち、分割後の２つの入力特徴量の和と差と積のそれぞれの演算結果に対して符号関数が適用されることによって、分割後の２つの入力特徴量は、符号関数によって符号化（２値化）された後においても、二次元平面上の８つの領域のいずれに属するかを表現することが可能となる。
【００７０】
以上に説明した分割統合処理によれば、チャネル数を増加させずにニューラルネットワークのモデルに多くのパターンを表現させることが可能となる。例えば、６４チャネルの入力特徴量が（６４／２＝）３２チャネルずつの２つのグループに分割され、分割後の２つの入力特徴量の和と差と積のそれぞれの演算結果に対して符号関数が適用された場合、分割後の入力特徴量は、８３２＝２９６パターンを表現することが可能である。
【００７１】
一方、単純にチャネル数を増加させる方法では、９６チャネルの入力特徴量を用意すれば、入力特徴量は、２９６パターンを表現することが可能である。しかしながら、上記したように、チャネル数を増加させることによって必要な演算の規模が大きくなってしまう（計算コストが増加してしまう）。より正確に言えば、ある畳み込み層Ａの出力チャネル数の変更は、次の層Ｂの入力チャネル数にも影響を与えるため、Ａ層とＢ層の両方の計算コストが増加してしまう。
【００７２】
本発明の実施形態においても、６４チャネルの入力特徴量に対して分離結合処理を適用するとチャネル数が９６チャネルに増えるため、単純にチャネル数を増加させる方法と同様に、Ｂ層の計算コストを増加させてしまう。しかしながら、単純にチャネル数を増加させる方法においては、６４チャネルに３２チャネルが追加されることから、Ａ層にかかる追加の計算コストとして、３２×Ｋ×Ｋ×Ｈ×Ｗ回の乗算と、３１×（Ｋ×Ｋ−１）×（Ｈ×Ｗ−１）回の加算とが発生する。さらに、３２×Ｋ×Ｋ個のパラメータを格納するメモリ容量が必要となる。一方、本発明の実施形態では、Ａ層にかかる追加の計算コストは、分離結合処理における要素単位の和と差と積の演算であり、Ｈ×Ｗ回の乗算と、２×Ｈ×Ｗ回の加算のみでよい。
【００７３】
したがって、本発明の実施形態によれば、単純にチャネル数を増加する方法よりも、少ない計算コストと少ないメモリ使用量とによって、単純にチャネル数を増加する方法と同等の表現能力を得ることができる。
【００７４】
図３に戻って説明を続ける。修正部１０１が、特定した修正対象層に関して、分離結合処理の追加、第１の量子化関数ｓｇｎ１（）の導入、および、第２の量子化関数ｓｇｎ２（）の導入を行うと、軽量化対象のニューラルネットワークに含まれる全部の畳み込み層および全結合層に関して、分離結合処理の追加、第１の量子化関数ｓｇｎ１（）の導入、および、第２の量子化関数ｓｇｎ２（）の導入を行ったか否かを判定する（Ｓ２０２）。
【００７５】
修正部１０１は、分離結合処理の追加、第１の量子化関数ｓｇｎ１（）の導入、および、第２の量子化関数ｓｇｎ２（）の導入が行われていない畳み込み層または全結合層（未修正の処理層）が存在する場合には（Ｓ２０２において「Ｎｏ」）、当該未修正の処理層を修正対象層として特定する動作に移行する（Ｓ２００）。一方、修正部１０１は、未修正の処理層が存在しない場合には（Ｓ２０２において「Ｙｅｓ」）、修正を終了する。
【００７６】
図１に戻って説明を続ける。修正部１０１は、このようにして生成した修正後のニューラルネットワークおよび学習用データセットを、学習部１０２に出力する。学習部１０２は、上記したように、修正部１０１から入力された学習用データセットに基づいて、修正部１０１から入力された修正後のニューラルネットワークの訓練を行う。訓練が終わった訓練済みのニューラルネットワークは、出力部１０３に出力される。出力部１０３は、上記したように、訓練済みのニューラルネットワークを出力する。
【００７７】
（１−３．効果の説明）
本発明の実施形態によれば、複数の処理層を含んだ軽量化対象のニューラルネットワークを取得する入力部１００と、軽量化対象のニューラルネットワークに含まれる畳み込み層および全結合層の少なくとも一つの処理層を修正対象層として特定し、修正対象層の後段に対して分離結合処理を追加するとともに、修正対象層の重みパラメータに第１の量子化関数を導入し、修正対象層の直後の活性化関数または活性化関数の出力に対して第２の量子化関数を導入して、修正後のニューラルネットワークを生成する修正部１０１と、修正後のニューラルネットワークの訓練を行う学習部１０２と、訓練後かつ修正後のニューラルネットワークを出力する出力部１０３と、を備える、ニューラルネットワーク軽量化装置１０が提供される。
【００７８】
かかる構成によれば、量子化ニューラルネットワークモデルの処理効率の低下を抑制しつつ、量子化ニューラルネットワークモデルの精度を向上させることを可能とする技術が提供される。
【００７９】
図７に示した処理Ｎ１２０では、和と差と積の演算が行われる。このうち和と差の演算によれば、入力特徴量と重みパラメータがそれぞれ２値の場合に、３値の重みパラメータで演算する場合と同等の効果が得られる。具体的には、処理Ｎ１１０で２グループに分割された重みパラメータをそれぞれｗ１、ｗ２とし、入力特徴量をｘとし、畳み込み演算の記号を＊とすると、和の演算によれば、下記の数式（５）に示されるように、２値化された重みパラメータ同士（符号同士）の加算によって一つの重みパラメータが表現され得る。
【００８０】
【数４】
0006856112.tif 000005
【００８１】
すなわち、−１と１に２値化された重みパラメータ同士の和の演算結果は、−２、０、２の３値で表現される重みパラメータと等価となる。差の演算結果が行われる場合も同様に、２値化された重みパラメータ同士（符号同士）の減算によって一つの重みパラメータが表現され得る。したがって、和の演算または差の演算によれば、重みパラメータによる表現のバリエーションが増えるため、ニューラルネットワークのモデルの性能の向上が期待される。
【００８２】
以上、本発明の実施形態の詳細について説明した。
【００８３】
（２．各種の変形例）
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【００８４】
例えば、分離結合処理の後に適用される符号関数における正負条件の境界は、訓練可能な係数パラメータを用いて要素単位またはチャネル単位で調整されてもよい。より詳細に、修正部１０１は、分離結合処理の結果に学習部１０２によって訓練可能な第１の係数パラメータαの乗算処理を適用してもよい。このとき、学習部１０２は、修正後のニューラルネットワークとともに第１の係数パラメータαを訓練してよい。あるいは、修正部１０１は、分離結合処理の結果に学習部１０２によって訓練可能な第２の係数パラメータβの加算処理を適用してもよい。このとき、学習部１０２は、修正後のニューラルネットワークとともに第２の係数パラメータβを訓練してよい。
【００８５】
あるいは、下記の数式（６）に示されるように、修正部１０１は、分離結合処理の結果に第１の係数パラメータαの乗算処理と第２の係数パラメータβの加算処理とを適用してもよい。このとき、学習部１０２は、修正後のニューラルネットワークとともに第１の係数パラメータαおよび第２の係数パラメータβを訓練してよい。
【００８６】
【数５】
0006856112.tif 000006
【００８７】
ここで、ｚｌｉは、分離結合処理の結果を示している。数式（６）に示されるように、分離結合処理の結果ｚｌｉに対して、第１の係数パラメータαおよび第２の係数パラメータβが適用され、符号関数が適用された後のｘが出力されるようにし、学習部１０２によって第１の係数パラメータαおよび第２の係数パラメータβも訓練されるようにすれば、符号関数における正負条件の境界がチャネル単位で調整され得る。
【００８８】
上記では、分離結合処理において、入力特徴量Ｎ１０１がチャネルデータ単位で２つのグループに分割される場合について主に説明した。しかし、分割後のグループの数は二つに限定されない。例えば、分離結合処理においては、入力特徴量Ｎ１０１がチャネルデータ単位で２つ以上のグループに分割されてもよい。かかる場合、処理Ｎ１２０は、分割後の二つ以上のグループの対応するチャネルデータ間の対応する要素同士において、加算、減算および乗算の少なくとも１つの演算を実行してもよい。このとき、処理Ｎ１３０は、各演算結果をチャネルデータ単位で結合すればよい。
【００８９】
また、分割後の二つ以上のグループの全部の対応する要素同士において、加算、減算および乗算の各演算が実行されなくてもよい。例えば、分割後の二つ以上のグループの一部のみの対応する要素同士において、加算、減算および乗算の各演算が実行されてもよい。このとき、分割後の二つ以上のグループのうち、演算が実行されなかったグループは、処理Ｎ１２０において演算されずに処理Ｎ１３０に出力され、処理Ｎ１３０において、演算が実行されたグループの演算結果とチャネルデータ単位で結合されればよい。
【００９０】
また、処理Ｎ１２０において演算が実行されるルートと、処理Ｎ１２０における演算が実行されずに処理Ｎ１３０に出力されるルートとの双方に対して出力が行われるグループが存在してもよい。さらに、修正部１０１は、加算、減算および乗算の全部を行わなくてもよい。例えば、修正部１０１は、分割後の二つ以上のグループの一部または全部のグループの対応するチャネルデータ間の対応する要素同士において、加算、減算および乗算の少なくとも１つの演算を実行すればよい。
【００９１】
図１０は、分離結合処理の変形例を示す図である。図１０には、処理Ｎ２００は、処理Ｎ１１０と同様に、入力特徴量Ｎ２０１をチャネルデータ単位で２つのグループ（入力特徴量Ｎ２１１および入力特徴量Ｎ２１２）に分割する例が示されている。
【００９２】
このとき、図１０に示されるように、処理Ｎ２２０は、分割後の２つのグループ（入力特徴量Ｎ２１１および入力特徴量Ｎ２１２）の対応するチャネルデータ間の対応する要素同士において乗算のみを実行して、演算結果Ｎ２３３を得てもよい。また、図１０に示されるように、分割後の２つのグループの一部（入力特徴量Ｎ２１１）は、処理Ｎ２２０において演算されずに処理Ｎ２３０に出力されてもよい。かかる場合、処理Ｎ２３０において、演算されなかったグループのデータＮ２３１と演算が実行されたグループの演算結果Ｎ２３３とがチャネルデータ単位で結合されればよい。
【００９３】
さらに、修正部１０１は、分割後の二つ以上のグループの一部または全部の対応するチャネルデータ間の対応する要素同士において、加算、減算および乗算のうちの二つ以上の演算を連続的に実行してチャネルデータ単位の統合を行ってもよい。例えば、修正部１０１は、分割後の二つ以上のグループの一部または全部のグループの対応するチャネルデータ間の対応する要素同士において、加算を行った後に乗算を行ってチャネルデータ単位の統合を行ってもよい。
【００９４】
また、上記では、分離結合処理において、二つ以上のグループのいずれのグループ間においてもチャネルデータ同士の重複がないように分割が行われる場合を主に想定した。しかし、分離結合処理において、二つ以上のグループの少なくともいずれか２つのグループ間において少なくとも一部のチャネルデータ同士が重複するように分割が行われてもよい。同一のチャネルデータ同士の演算だけが行われても有効な演算結果が得られないことが推測されるが、異なるチャネルデータ同士の演算が一部にでも含まれていれば、有効な演算結果が得られると推測される。
【００９５】
また、上記では、軽量化対象のニューラルネットワークに対して、符号関数が導入されることによって、修正後のニューラルネットワークとして２値化ニューラルネットワークが生成される場合を主に説明した。しかし、軽量化対象のニューラルネットワークに対して導入される量子化関数は、２値化を行う関数（符号関数）に限らず、任意の量子化ビット数を出力する関数であってよい。例えば、２ビットを使用して４値を表現する量子化関数は、下記の数式（７）に示されるような４値化関数によって表現され得る。
【００９６】
【数６】
0006856112.tif 000007
【００９７】
また、上記では、和と差と積の演算結果それぞれに対して、同一の符号関数が適用される場合を主に説明した。しかし、和と差と積の演算結果それぞれの一部または全部に対して、異なる量子化関数が適用されてもよい。例えば、和と差の演算結果それぞれに対して、数式（７）によって示される４値化関数が適用され、積の演算結果に対して、符号関数が適用されてもよい。このようにして各演算結果に対して適用される量子化関数を変更することによって、分割後の入力特徴量の表現可能なパターンの数を適宜に変更することが可能である。
【００９８】
図１１は、各演算結果に対して適用される量子化関数を変更することによって表現可能なパターンの一例を二次元平面上に示した図である。図１１を参照すると、二次元平面が２４個の領域に分割されている。すなわち、分割後の入力特徴量の各演算結果に対して量子化関数を変更することによって、分割後の入力特徴量は、量子化関数によって量子化された後において、二次元平面上の２４個の領域のいずれに属するかを表現することが可能となる。
【００９９】
（３．ハードウェア構成例）
続いて、本発明の実施形態に係るニューラルネットワーク軽量化装置１０のハードウェア構成例について説明する。以下では、本発明の実施形態に係るニューラルネットワーク軽量化装置１０のハードウェア構成例として、情報処理装置９００のハードウェア構成例について説明する。なお、以下に説明する情報処理装置９００のハードウェア構成例は、ニューラルネットワーク軽量化装置１０のハードウェア構成の一例に過ぎない。したがって、ニューラルネットワーク軽量化装置１０のハードウェア構成は、以下に説明する情報処理装置９００のハードウェア構成から不要な構成が削除されてもよいし、新たな構成が追加されてもよい。
【０１００】
図１２は、本発明の実施形態に係るニューラルネットワーク軽量化装置１０の例としての情報処理装置９００のハードウェア構成を示す図である。情報処理装置９００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９０３と、ホストバス９０４と、ブリッジ９０５と、外部バス９０６と、インタフェース９０７と、入力装置９０８と、出力装置９０９と、ストレージ装置９１０と、通信装置９１１と、を備える。
【０１０１】
ＣＰＵ９０１は、演算処理装置および制御装置として機能し、各種プログラムに従って情報処理装置９００内の動作全般を制御する。また、ＣＰＵ９０１は、マイクロプロセッサであってもよい。ＲＯＭ９０２は、ＣＰＵ９０１が使用するプログラムや演算パラメータ等を記憶する。ＲＡＭ９０３は、ＣＰＵ９０１の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を一時記憶する。これらはＣＰＵバス等から構成されるホストバス９０４により相互に接続されている。
【０１０２】
ホストバス９０４は、ブリッジ９０５を介して、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ／Ｉｎｔｅｒｆａｃｅ）バス等の外部バス９０６に接続されている。なお、必ずしもホストバス９０４、ブリッジ９０５および外部バス９０６を分離構成する必要はなく、１つのバスにこれらの機能を実装してもよい。
【０１０３】
入力装置９０８は、マウス、キーボード、タッチパネル、ボタン、マイクロフォン、スイッチおよびレバー等ユーザが情報を入力するための入力手段と、ユーザによる入力に基づいて入力信号を生成し、ＣＰＵ９０１に出力する入力制御回路等から構成されている。情報処理装置９００を操作するユーザは、この入力装置９０８を操作することにより、情報処理装置９００に対して各種のデータを入力したり処理動作を指示したりすることができる。
【０１０４】
出力装置９０９は、例えば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）ディスプレイ装置、液晶ディスプレイ（ＬＣＤ）装置、ＯＬＥＤ（Ｏｒｇａｎｉｃ  Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）装置、ランプ等の表示装置およびスピーカ等の音声出力装置を含む。
【０１０５】
ストレージ装置９１０は、データ格納用の装置である。ストレージ装置９１０は、記憶媒体、記憶媒体にデータを記録する記録装置、記憶媒体からデータを読み出す読出し装置および記憶媒体に記録されたデータを削除する削除装置等を含んでもよい。ストレージ装置９１０は、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）で構成される。このストレージ装置９１０は、ハードディスクを駆動し、ＣＰＵ９０１が実行するプログラムや各種データを格納する。
【０１０６】
通信装置９１１は、例えば、ネットワークに接続するための通信デバイス等で構成された通信インタフェースである。また、通信装置９１１は、無線通信または有線通信のどちらに対応してもよい。
【０１０７】
以上、本発明の実施形態に係るニューラルネットワーク軽量化装置１０のハードウェア構成例について説明した。
【符号の説明】
【０１０８】
１０    ニューラルネットワーク軽量化装置
１００  入力部
１０１  修正部
１０２  学習部
１０３  出力部
【要約】
【課題】量子化ニューラルネットワークモデルの処理効率の低下を抑制しつつ、量子化ニューラルネットワークモデルの精度を向上させる。
【解決手段】複数の処理層を含んだ第１のニューラルネットワークを取得する入力部と、前記第１のニューラルネットワークに含まれる畳み込み層および全結合層の少なくとも一つの処理層を修正対象層として特定し、前記修正対象層の後段に対して分離結合処理を追加するとともに、前記修正対象層の重みパラメータに第１の量子化関数を導入し、前記修正対象層の直後の活性化関数または前記活性化関数の出力に対して第２の量子化関数を導入して、第２のニューラルネットワークを生成する修正部と、前記第２のニューラルネットワークの訓練を行う学習部と、訓練後の前記第２のニューラルネットワークを出力する出力部と、を備える、ニューラルネットワーク軽量化装置が提供される。
【選択図】図１【図１】
0006856112.tif 000008
【図２】
0006856112.tif 000009
【図３】
0006856112.tif 000010
【図４】
0006856112.tif 000011
【図５】
0006856112.tif 000012
【図６】
0006856112.tif 000013
【図７】
0006856112.tif 000014
【図８】
0006856112.tif 000015
【図９】
0006856112.tif 000016
【図１０】
0006856112.tif 000017
【図１１】
0006856112.tif 000018
【図１２】
0006856112.tif 000019