(57)【要約】【課題】軽量化後のニューラルネットワークの性能劣化を抑制しつつ重みフィルタをチャネル単位で軽量化する。【解決手段】少なくとも１つの畳み込み層を含んだ複数の処理層を有する第１のニューラルネットワークを取得し、前記第１のニューラルネットワークに含まれる前記畳み込み層の後段に対して少なくとも１つの第２のニューラルネットワークが付加層として接続された第３のニューラルネットワークを生成し、前記第３のニューラルネットワークの訓練を行い、前記第２のニューラルネットワークの重みパラメータに基づいて算出される特徴量と所定の閾値とが所定の関係を満たすチャネルを冗長チャネルとして選択する。【選択図】図３
2020190996.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つの畳み込み層を含んだ複数の処理層を有する第１のニューラルネットワークを取得する入力部と、
前記第１のニューラルネットワークに含まれる前記畳み込み層の後段に対して少なくとも１つの第２のニューラルネットワークが付加層として接続された第３のニューラルネットワークを生成する生成部と、
前記第３のニューラルネットワークの訓練を行う学習部と、
前記第２のニューラルネットワークの重みパラメータに基づいて算出される特徴量と所定の閾値とが所定の関係を満たすチャネルを冗長チャネルとして選択し、前記畳み込み層から前記冗長チャネルを削除するとともに、前記第２のニューラルネットワークの重みパラメータの少なくとも一部に基づいて前記冗長チャネルの削除後の畳み込み層の重みパラメータを修正する修正部と、
前記冗長チャネルの削除後の前記畳み込み層の重みパラメータの修正に基づく前記第３のニューラルネットワークの再訓練を行う再学習部と、
再訓練後の前記第３のニューラルネットワークを出力する出力部と、
を備える、ニューラルネットワーク軽量化装置。
【請求項２】
前記第２のニューラルネットワークは、前記畳み込み層にチャネルデータの単位で接続された全結合ニューラルネットワークである、
請求項１に記載のニューラルネットワーク軽量化装置。
【請求項３】
前記修正部は、前記第２のニューラルネットワークの少なくとも一部の重みパラメータに特異値分解を適用することに基づいて、前記冗長チャネルの削除後の畳み込み層のチャネル数を削減する、
請求項１または２に記載のニューラルネットワーク軽量化装置。
【請求項４】
前記修正部は、前記冗長チャネルの削除後の畳み込み層の重みパラメータを修正するとともに、前記第３のニューラルネットワークから前記第２のニューラルネットワークを削除する、
請求項２または３に記載のニューラルネットワーク軽量化装置。
【請求項５】
前記修正部は、前記第２のニューラルネットワークの重みパラメータの少なくとも一部と前記冗長チャネルの削除後の畳み込み層の重みパラメータの少なくとも一部との積和演算に基づいて、前記冗長チャネルの削除後の畳み込み層の重みパラメータを修正する、
請求項３または４に記載のニューラルネットワーク軽量化装置。
【請求項６】
前記生成部は、前記第１のニューラルネットワークに複数の畳み込み層が含まれる場合、前記複数の畳み込み層それぞれの後段に前記第２のニューラルネットワークが接続された前記第３のニューラルネットワークを生成する、
請求項１〜５のいずれか一項に記載のニューラルネットワーク軽量化装置。
【請求項７】
前記修正部は、前記複数の畳み込み層それぞれの重みパラメータの修正を、積和演算に基づいて行うか、特異値分解を適用することに基づいて行うかを、前記複数の畳み込み層ごとに判断する、
請求項６に記載のニューラルネットワーク軽量化装置。
【請求項８】
前記学習部は、前記第２のニューラルネットワークの重みパラメータが疎になるような少なくとも１つの制約が課された上で学習する、
請求項１〜７のいずれか一項に記載のニューラルネットワーク軽量化装置。
【請求項９】
前記学習部は、前記制約の強さを表現するパラメータをエポック単位またはイテレーション単位で大きくする、
請求項８に記載のニューラルネットワーク軽量化装置。
【請求項１０】
前記修正部は、前記特徴量が前記所定の閾値を下回るチャネルを前記冗長チャネルとして選択する、
請求項１〜９に記載のニューラルネットワーク軽量化装置。
【請求項１１】
前記特徴量は、前記第２のニューラルネットワークの重みパラメータの大きさの和を、前記第２のニューラルネットワークの出力チャネル単位で演算した値である、
請求項１〜１０のいずれか一項に記載のニューラルネットワーク軽量化装置。
【請求項１２】
少なくとも１つの畳み込み層を含んだ複数の処理層を有する第１のニューラルネットワークを取得することと、
前記第１のニューラルネットワークに含まれる前記畳み込み層の後段に対して少なくとも１つの第２のニューラルネットワークが付加層として接続された第３のニューラルネットワークを生成することと、
前記第３のニューラルネットワークの訓練を行うことと、
前記第２のニューラルネットワークの重みパラメータに基づいて算出される特徴量と所定の閾値とが所定の関係を満たすチャネルを冗長チャネルとして選択し、前記畳み込み層から前記冗長チャネルを削除するとともに、前記第２のニューラルネットワークの重みパラメータの少なくとも一部に基づいて前記冗長チャネルの削除後の畳み込み層の重みパラメータを修正することと、
前記重みパラメータの修正後の前記第３のニューラルネットワークの再訓練を行うことと、
再訓練後の前記第３のニューラルネットワークを出力することと、
を含む、ニューラルネットワーク軽量化方法。
【請求項１３】
コンピュータを、
少なくとも１つの畳み込み層を含んだ複数の処理層を有する第１のニューラルネットワークを取得する入力部と、
前記第１のニューラルネットワークに含まれる前記畳み込み層の後段に対して少なくとも１つの第２のニューラルネットワークが付加層として接続された第３のニューラルネットワークを生成する生成部と、
前記第３のニューラルネットワークの訓練を行う学習部と、
前記第２のニューラルネットワークの重みパラメータに基づいて算出される特徴量と所定の閾値とが所定の関係を満たすチャネルを冗長チャネルとして選択し、前記畳み込み層から前記冗長チャネルを削除するとともに、前記第２のニューラルネットワークの重みパラメータの少なくとも一部に基づいて前記冗長チャネルの削除後の畳み込み層の重みパラメータを修正する修正部と、
前記重みパラメータの修正後の前記第３のニューラルネットワークの再訓練を行う再学習部と、
再訓練後の前記第３のニューラルネットワークを出力する出力部と、
を備えるニューラルネットワーク軽量化装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワーク軽量化装置、ニューラルネットワーク軽量化方法およびプログラムに関する。
【背景技術】
【０００２】
近年、物体検知などの各種の分野においてニューラルネットワークが用いられている。しかし、ニューラルネットワークの高性能化を進めていくほど、ニューラルネットワークを構成するパラメータの数が大きくなってしまう傾向があり、パラメータの数が膨大となってしまと、ニューラルネットワークを用いた学習時および推論時に、メモリおよび演算装置に与える負荷が大きくなってしまう。そのため、ニューラルネットワークを軽量化する技術が研究されている。
【０００３】
例えば、ニューラルネットワークを構成する各層における訓練済みモデルのフィルタ（重みフィルタ）を要素単位ではなくチャネル単位で軽量化する技術（以下、「枝刈り」とも言う。）が開示されている（例えば、非特許文献１および非特許文献２参照）。また、ニューラルネットワークを構成する最小要素の単位で枝刈りを実行する技術が開示されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１８−１２９０３３号公報
【非特許文献】
【０００５】
【非特許文献１】Jian-Hao Luo、他2名、"ThiNet: AFilter Level Pruning Method for Deep Neural Network Compression"、[online]、2017年7月20日、ICCV2017、［平成30年6月4日検索］、インターネット＜https://arxiv.org/abs/1707.06342＞
【非特許文献２】Yihui He、他2名、"Channel Pruning for AcceleratingVery Deep Neural Networks"、[online]、2017年10月22日、ICCV2017、［平成30年12月18日検索］、インターネット＜https://arxiv.org/abs/1707.06168＞
【発明の概要】
【発明が解決しようとする課題】
【０００６】
かかる枝刈りの技術では、チャネルデータの削除によって、ニューラルネットワークの性能に寄与する情報がチャネルデータに含まれている場合であっても、チャネルデータを活用することができなくなってしまうという問題点を有している。そこで、軽量化後のニューラルネットワークの性能劣化を抑制しつつ重みフィルタをチャネル単位で軽量化することを可能とする技術が提供されることが望まれる。
【課題を解決するための手段】
【０００７】
上記問題を解決するために、本発明のある観点によれば、少なくとも１つの畳み込み層を含んだ複数の処理層を有する第１のニューラルネットワークを取得する入力部と、前記第１のニューラルネットワークに含まれる前記畳み込み層の後段に対して少なくとも１つの第２のニューラルネットワークが付加層として接続された第３のニューラルネットワークを生成する生成部と、前記第３のニューラルネットワークの訓練を行う学習部と、前記第２のニューラルネットワークの重みパラメータに基づいて算出される特徴量と所定の閾値とが所定の関係を満たすチャネルを冗長チャネルとして選択し、前記畳み込み層から前記冗長チャネルを削除するとともに、前記第２のニューラルネットワークの重みパラメータの少なくとも一部に基づいて前記冗長チャネルの削除後の畳み込み層の重みパラメータを修正する修正部と、前記冗長チャネルの削除後の前記畳み込み層の重みパラメータの修正に基づく前記第３のニューラルネットワークの再訓練を行う再学習部と、再訓練後の前記第３のニューラルネットワークを出力する出力部と、を備える、ニューラルネットワーク軽量化装置が提供される。
【０００８】
前記第２のニューラルネットワークは、前記畳み込み層にチャネルデータの単位で接続された全結合ニューラルネットワークであってもよい。
【０００９】
前記修正部は、前記第２のニューラルネットワークの少なくとも一部の重みパラメータに特異値分解を適用することに基づいて、前記冗長チャネルの削除後の畳み込み層のチャネル数を削減してもよい。
【００１０】
前記修正部は、前記冗長チャネルの削除後の畳み込み層の重みパラメータを修正するとともに、前記第３のニューラルネットワークから前記第２のニューラルネットワークを削除してもよい。
【００１１】
前記修正部は、前記第２のニューラルネットワークの重みパラメータの少なくとも一部と前記冗長チャネルの削除後の畳み込み層の重みパラメータの少なくとも一部との積和演算に基づいて、前記冗長チャネルの削除後の畳み込み層の重みパラメータを修正してもよい。
【００１２】
前記生成部は、前記第１のニューラルネットワークに複数の畳み込み層が含まれる場合、前記複数の畳み込み層それぞれの後段に前記第２のニューラルネットワークが接続された前記第３のニューラルネットワークを生成してもよい。
【００１３】
前記修正部は、前記複数の畳み込み層それぞれの重みパラメータの修正を、積和演算に基づいて行うか、特異値分解を適用することに基づいて行うかを、前記複数の畳み込み層ごとに判断してもよい。
【００１４】
前記学習部は、前記第２のニューラルネットワークの重みパラメータが疎になるような少なくとも１つの制約が課された上で学習してもよい。
【００１５】
前記学習部は、前記制約の強さを表現するパラメータをエポック単位またはイテレーション単位で大きくしてもよい。
【００１６】
前記修正部は、前記特徴量が前記所定の閾値を下回るチャネルを前記冗長チャネルとして選択してもよい。
【００１７】
前記特徴量は、前記第２のニューラルネットワークの重みパラメータの大きさの和を、前記第２のニューラルネットワークの出力チャネル単位で演算した値であってもよい。
【００１８】
また、本発明の別の観点によれば、少なくとも１つの畳み込み層を含んだ複数の処理層を有する第１のニューラルネットワークを取得することと、前記第１のニューラルネットワークに含まれる前記畳み込み層の後段に対して少なくとも１つの第２のニューラルネットワークが付加層として接続された第３のニューラルネットワークを生成することと、前記第３のニューラルネットワークの訓練を行うことと、前記第２のニューラルネットワークの重みパラメータに基づいて算出される特徴量と所定の閾値とが所定の関係を満たすチャネルを冗長チャネルとして選択し、前記畳み込み層から前記冗長チャネルを削除するとともに、前記第２のニューラルネットワークの重みパラメータの少なくとも一部に基づいて前記冗長チャネルの削除後の畳み込み層の重みパラメータを修正することと、前記重みパラメータの修正後の前記第３のニューラルネットワークの再訓練を行うことと、再訓練後の前記第３のニューラルネットワークを出力することと、を含む、ニューラルネットワーク軽量化方法が提供される。
【００１９】
また、本発明の別の観点によれば、コンピュータを、少なくとも１つの畳み込み層を含んだ複数の処理層を有する第１のニューラルネットワークを取得する入力部と、前記第１のニューラルネットワークに含まれる前記畳み込み層の後段に対して少なくとも１つの第２のニューラルネットワークが付加層として接続された第３のニューラルネットワークを生成する生成部と、前記第３のニューラルネットワークの訓練を行う学習部と、前記第２のニューラルネットワークの重みパラメータに基づいて算出される特徴量と所定の閾値とが所定の関係を満たすチャネルを冗長チャネルとして選択し、前記畳み込み層から前記冗長チャネルを削除するとともに、前記第２のニューラルネットワークの重みパラメータの少なくとも一部に基づいて前記冗長チャネルの削除後の畳み込み層の重みパラメータを修正する修正部と、前記重みパラメータの修正後の前記第３のニューラルネットワークの再訓練を行う再学習部と、再訓練後の前記第３のニューラルネットワークを出力する出力部と、を備えるニューラルネットワーク軽量化装置として機能させるためのプログラムが提供される。
【発明の効果】
【００２０】
以上説明したように本発明によれば、軽量化後のニューラルネットワークの性能劣化を抑制しつつ重みフィルタをチャネル単位で軽量化することを可能とする技術が提供される。
【図面の簡単な説明】
【００２１】
【図１】枝刈り技術の概要を説明するための図である。
【図２】枝刈り技術の概要を説明するための図である。
【図３】本発明の第１の実施形態に係るニューラルネットワーク軽量化装置の機能構成例を示す図である。
【図４】付加層の接続例を示す図である。
【図５】修正部の処理の流れを示すフローチャートである。
【図６】重みフィルタの削減処理および統合処理について説明するための図である。
【図７】本発明の第２の実施形態に係るニューラルネットワーク軽量化装置の機能構成例を示す図である。
【図８】修正部の処理の流れを示すフローチャートである。
【図９】本発明の実施形態に係るニューラルネットワーク軽量化装置の例としての情報処理装置のハードウェア構成を示す図である。
【発明を実施するための形態】
【００２２】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００２３】
また、本明細書および図面において、実質的に同一の機能構成を有する複数の構成要素を、同一の符号の後に異なる数字を付して区別する場合がある。ただし、実質的に同一の機能構成を有する複数の構成要素等の各々を特に区別する必要がない場合、同一符号のみを付する。また、異なる実施形態の類似する構成要素については、同一の符号の後に異なるアルファベットを付して区別する場合がある。ただし、異なる実施形態の類似する構成要素等の各々を特に区別する必要がない場合、同一符号のみを付する。
【００２４】
（０．概要）
まず、本発明の実施形態の概要を説明する。近年、物体検知などの各種の分野においてニューラルネットワークが用いられている。しかし、ニューラルネットワークの高性能化を進めていくほど、ニューラルネットワークを構成するパラメータの数が大きくなってしまう傾向があり、パラメータの数が膨大となってしまと、ニューラルネットワークを用いた学習時および推論時に、メモリおよび演算装置に与える負荷が大きくなってしまう。そのため、ニューラルネットワークを軽量化する技術が研究されている。
【００２５】
例えば、ニューラルネットワークを構成する各層における訓練済みモデルのフィルタ（重みフィルタ）を要素単位ではなくチャネル単位で軽量化する技術（枝刈り技術）が開示されている。ここで、重みフィルタをチャネル単位で軽量化する技術（枝刈り技術）の概要を説明する。
【００２６】
図１および図２は、枝刈り技術の概要を説明するための図である。ここでは、複数段の処理層によって構成されるニューラルネットワークを想定し、複数段の処理層のうちのＬ層に注目する。図１を参照すると、Ｌ層への入力である「Ｌ層入力」が示され、「Ｌ層（重みフィルタ）」が示され、Ｌ層からの出力である「Ｌ層出力」が示されている。
【００２７】
図１に示された例では、Ｌ層は、２つのフィルタ（フィルタＦ１およびフィルタＦ２）から構成されており、Ｌ層の各フィルタは、３つのチャネルから構成されている（フィルタＦ１はチャネルＣ１〜Ｃ３から構成され、フィルタＦ２はチャネルＣ４〜Ｃ６から構成されている）。Ｌ層の各フィルタには、３つのチャネルそれぞれに対応する入力データ（チャネルデータｇ１〜ｇ３）が入力される。図１には、３つのチャネルそれぞれに対応する入力データの例として、ＲＧＢ画像データが示されている。
【００２８】
Ｌ層の各フィルタは、チャネルデータｇ１〜ｇ３とパラメータ（重みおよびバイアス）とに基づいて特徴量を算出し、算出した特徴量をＬ＋１層に出力する（フィルタＦ１は特徴量Ｇ１をＬ＋１層に出力し、フィルタＦ２は特徴量Ｇ２をＬ＋１層に出力する）。図１を参照すると、「Ｌ層入力」の各次元が、３（＝チャネル数）、Ｈ（＝縦サイズ）、Ｗ（＝横サイズ）として示されている。一方、図１を参照すると、「Ｌ層（重みフィルタ）」の各次元が、２（フィルタ数）、３（＝チャネル数）、Ｋｈ（＝縦サイズ）、Ｋｗ（＝横サイズ）として示され、「Ｌ層出力」の各次元が、２（チャネル数）、Ｈ’（＝縦サイズ）、Ｗ’（＝横サイズ）として示されている。
【００２９】
続いて、フィルタＦ１のチャネルＣ３が冗長であると判断され、フィルタＦ２のチャネルＣ６が冗長であると判断された場合を想定する。かかる場合には、図２に示されるように、冗長であると判断されたチャネルＣ３およびチャネルＣ６が削除される。これによって、ニューラルネットワークの軽量化が実現される。
【００３０】
なお、図２を参照すると、Ｌ層におけるチャネル削除に伴って、「Ｌ層入力」のチャネル数が２に減少し、「Ｌ層（重みフィルタ）」のチャネル数が２に減少している。一方、「Ｌ層（重みフィルタ）」からの出力チャネル数は２のままである。しかし、仮にＬ＋１層において枝刈りが行われ、Ｌ＋１層のチャネル数が減少すれば、Ｌ＋１層のチャネル数の減少に応じて、Ｌ層からの出力チャネル数も減少する。
【００３１】
しかし、図１および図２を参照しながら説明した枝刈りの技術は、軽量化後のニューラルネットワークの性能を劣化させてしまう問題点を含んでいる。例えば、図２に示した例では、フィルタＦ１のチャネルＣ３が冗長であると判断され、フィルタＦ２のチャネルＣ６が冗長であると判断されており、これらのチャネルに出力されるチャネルデータｇ３が全ての重みフィルタに共通して冗長であると推定され、チャネルデータｇ３が削除される。
【００３２】
ここで、仮にチャネルデータｇ３に含まれる情報が完全に冗長であれば、特徴量Ｇ１と特徴量Ｇ２とに含まれる情報量はチャネルデータｇ３の削除前後において変化しない。しかし、チャネルデータｇ３に含まれる情報が完全に冗長である可能性は一般的には低い。したがって、図１および図２を参照しながら説明した枝刈りの技術は、チャネルデータｇ３の削除によって、ニューラルネットワークの性能に寄与する情報がチャネルデータｇ３に含まれている場合であっても、チャネルデータｇ３を活用することができなくなってしまうという問題点を有している。
【００３３】
そこで、本発明の実施形態においては、軽量化後のニューラルネットワークの性能劣化を抑制しつつ重みフィルタをチャネル単位で軽量化することを可能とする技術について主に説明する。
【００３４】
なお、重みフィルタをチャネル単位で軽量化する技術（枝刈り技術）の他、ニューラルネットワークを構成する最小要素の単位で枝刈りを実行する技術が開示されている。しかし、ニューラルネットワークを構成する最小要素の単位で枝刈りを実行する技術は、低性能のニューロン（要素）を特定することが可能である一方、枝刈り技術には適用され得ない。
【００３５】
以上、本発明の実施形態の概要について説明した。
【００３６】
（１．第１の実施形態の詳細）
続いて、本発明の第１の実施形態の詳細について説明する。
【００３７】
（１−１．構成の説明）
図３は、本発明の第１の実施形態に係るニューラルネットワーク軽量化装置の機能構成例を示す図である。図３に示されるように、本発明の第１の実施形態に係るニューラルネットワーク軽量化装置１０は、入力部１００、生成部１０１、学習部１０２、修正部１０３、再学習部１０４および出力部１０５を備える。
【００３８】
ニューラルネットワーク軽量化装置１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などの演算装置を含み、図示しないメモリにより記憶されているプログラムがＣＰＵによりＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）に展開されて実行されることにより、その機能が実現され得る。このとき、当該プログラムを記録した、コンピュータに読み取り可能な記録媒体も提供され得る。あるいは、ニューラルネットワーク軽量化装置１０は、専用のハードウェアにより構成されていてもよいし、複数のハードウェアの組み合わせにより構成されてもよい。
【００３９】
入力部１００は、軽量化対象のニューラルネットワーク（第１のニューラルネットワーク。以下、「軽量化対象モデル」とも言う。）を取得する。軽量化対象モデルは、複数段の処理層を含んで構成されており、複数段の処理層には、少なくとも１つの畳み込み層が含まれている。本発明の第１の実施形態では、複数段の処理層に１つの畳み込み層が含まれる場合を主に想定する。しかし、複数段の処理層に複数の畳み込み層が含まれてもよい。入力部１００によって取得された軽量化対象モデルは、生成部１０１に出力される。
【００４０】
生成部１０１は、所定の重みパラメータを有する１×１畳み込み層（第２のニューラルネットワーク。以下、「付加層」とも言う。）を生成する。そして、生成部１０１は、軽量化対象モデルに含まれる畳み込み層の後段（直後）に対して付加層を接続して、訓練対象のニューラルネットワーク（第３のニューラルネットワーク。以下、「訓練対象モデル」とも言う。）を生成する。なお、軽量化対象モデルに複数の畳み込み層が含まれる場合、当該複数の畳み込み層の一部の後段に対して付加層が接続されてもよいし、当該複数の畳み込み層の（最終層を除く）全部の後段に対して付加層が接続されてもよい。生成部１０１によって生成された訓練対象モデルは、学習部１０２に出力される。
【００４１】
学習部１０２は、訓練対象モデルの訓練を行う。例えば、学習部１０２は、誤差逆伝播法（バックプロパゲーション）などを用いて、訓練対象モデルの訓練を行う。これによって、（付加層が接続された畳み込み層を含む）軽量化対象モデルおよび付加層それぞれの重みパラメータが更新される。なお、学習部１０２による訓練に利用される訓練データは、軽量対象モデルにあらかじめ設定されている重みパラメータを得るために利用された訓練データと同じであるのが望ましい。訓練が終わった訓練対象モデルは、訓練済みモデルとして修正部１０３に出力される。
【００４２】
修正部１０３は、訓練済みモデルに含まれる付加層の重みパラメータに基づいて算出される特徴量と所定の閾値とが所定の関係を満たすチャネルを冗長チャネルとして選択する。例えば、修正部１０３は、付加層の重みパラメータに基づいて算出される特徴量が閾値を下回るチャネルを、（重要度（寄与度）がさほど高くないチャネルであるとして）冗長チャネルとして選択する。修正部１０３は、付加層が接続された畳み込み層から冗長チャネルを削除するとともに、付加層の重みパラメータの少なくとも一部に基づいて、冗長チャネルの削除後の畳み込み層の重みパラメータを修正する。重みパラメータの修正に基づく訓練済みモデルは、修正後モデルとして再学習部１０４に出力される。
【００４３】
再学習部１０４は、修正後モデルの再訓練を行う。例えば、再学習部１０４は、誤差逆伝播法（バックプロパゲーション）などを用いて、修正後モデルの訓練を行う。これによって、修正後モデルの重みパラメータが更新される。なお、再学習部１０４による再訓練に利用される訓練データは、学習部１０２による訓練に利用された訓練データと同じであってよい。再訓練が終わった修正後モデルは、再訓練済みモデルとして出力部１０５に出力される。
【００４４】
出力部１０５は、再訓練済みモデルを出力する。出力部１０５による再訓練済みモデルの出力はどのように行われてもよい。例えば、出力部１０５は、再訓練済みモデルを記録媒体に出力することによって、記録媒体に再訓練済みモデルを記録してもよい。あるいは、出力部１０５は、再訓練済みモデルを通信装置に出力することによって、通信装置を介して再訓練済みモデルを他の装置に送信してもよい。あるいは、出力部１０５は、再訓練済みモデルを表示装置に出力することによって、表示装置を介して再訓練済みモデルを表示してもよい。
【００４５】
（１−２．動作の説明）
上記したように、入力部１００によって、軽量化対象モデルが取得される。具体的に、軽量化対象モデルは、複数段の処理層それぞれに設定されるパラメータ（重みパラメータおよびバイアス）と複数段の処理層の構造情報とを含んで構成される。重みパラメータは、任意の訓練データを用いてあらかじめ最適化されている。また、構造情報は、ニューラルネットワークの構造を示す情報（例えば、全結合ニューラルネットワークを示す情報、畳み込みニューラルネットワークを示す情報など）である。
【００４６】
続いて、生成部１０１によって、付加層が生成され、軽量化対象モデルに含まれる畳み込み層の後段に対して付加層が接続されて訓練対象モデルが生成される。図４は、付加層の接続例を示す図である。図４を参照すると、入力データＮ１００は、軽量化対象モデルに含まれる畳み込み層から入力されるデータであり、入力チャネルデータＮ１０１〜Ｎ１０３を含んでいる。生成部１０１は、入力チャネルデータＮ１０１〜Ｎ１０３に付加層Ｎ１１０を接続する（畳み込み層にチャネルデータの単位で付加層Ｎ１１０を接続する）。また、本実施形態では、図４に示されたように、付加層Ｎ１１０が全結合ニューラルネットワークである場合を想定する。しかし、付加層Ｎ１１０の具体的な構成は限定されない。なお、図４に示された例では、チャネル数が３つであるが、チャネル数も３つに限定されない。
【００４７】
付加層Ｎ１１０によって、入力チャネルデータＮ１０１〜Ｎ１０３が変換されると、変換後データＮ１２０として出力される。変換後データＮ１２０は、変換後チャネルデータＮ１２１〜Ｎ１２３を含んでいる。このように、変換後データＮ１２０のチャネルデータ数は、入力データＮ１００のチャネルデータ数と同数である。ここで、ｉ番目の入力チャネルデータをＰｉ、付加層の重み行列をｗｉｊとしたとき、ｊチャネル目の変換後チャネルデータＮ１２１〜Ｎ１２３をＱｊとすると、以下の数式（１）に示される関係が成立する。
【００４８】
【数１】
2020190996.tif 000003
【００４９】
ここで、Ｐｉは２次元以上の行列（あるいはテンソル）であり、ｗｉｊはスカラー値である。したがって、Ｑｊはスカラー倍と行列の和によって計算されることになる。ｗｉｊの初期値には、例えば、単位行列または単位行列の全ての要素に微小なノイズを加えたものが使用される。ｗｉｊが単位行列である場合には、付加層は恒等写像と等しくなるため、付加層は特に変換後チャネルデータに影響を与えない。
【００５０】
関数σ（）には、例えば、恒等写像関数、シグモイド関数、ハイパボリックタンジェント関数などの任意関数が適用され得る。関数σ（）にシグモイド関数が適用される場合には、値域が０〜１に制約され、ＱｊがＰｉの単純な和によって表現され得る。一方、関数σ（）にハイパボリックタンジェント関数が適用される場合には、値域が−１〜＋１となり、解に制約が与えられつつ和と差の演算が許容される。
【００５１】
上記した変換後チャネルデータは、付加層の後段に接続された畳み込み層において演算処理される。なお、上記したように、ここでは、１つの畳み込み層の後段に付加層が接続される場合を例として示したが、軽量化対象モデルに複数の畳み込み層が含まれる場合、当該複数の畳み込み層の一部の後段に対して付加層が接続されてもよいし、当該複数の畳み込み層の（最終層を除く）全部の後段に対して付加層が接続されてもよい。このようにして、生成部１０１によって訓練対象モデルが生成される。
【００５２】
続いて、学習部１０２によって訓練対象モデルの訓練が行われる。例えば、学習部１０２による訓練は、誤差逆伝播法（バックプロパゲーション）などを用いて行われる。これによって、（付加層が接続された畳み込み層を含む）軽量化対象モデルおよび付加層それぞれの重みパラメータが更新される。このとき、学習部１０２は、付加層の重みパラメータが疎になるような少なくとも１つの制約が課された上で学習するのがよい。より具体的に、学習部１０２による訓練は、以下の数式（２）によって表現される損失関数Ｌｔｏｔａｌを最小化することによって達成され得る。
【００５３】
【数２】
2020190996.tif 000004
【００５４】
ここで、数式（２）の右辺第１項は、軽量化対象モデルの本来の損失関数である。例えば、判別問題が扱われる場合などには、かかる損失関数として交差エントロピー関数などが使用される。重み行列をｗｉｊ（ｌ）は、第ｌ層の付加層を構成するｊ番目に属する重みベクトルである。数式（２）の右辺第２項は、一般的なＬ１ノルム正則化項であり、付加層を構成するそれぞれの重みが０に近づくように最適化される。数式（２）の右辺第３項は、一般的なＧｒｏｕｐ−ＬＡＳＳＯ正則化項であり、ｊ番目のチャネルデータＱｊに接続される全ての重みが０に近づくように最適化される。γおよびλは、正則化の強さを決定する任意のスカラー値である。
【００５５】
このように、軽量化対象モデルの本来の損失関数だけでなく、数式（２）の右辺第２項および第３項が付加された損失関数が用いられることによって、付加層は疎な結合を得ることができる（付加層の重みパラメータが疎になるように更新される）。また、ｊ番目のチャネルデータＱｊに関する重みベクトル（重みの結合）ｗｊ（ｌ）の要素が全て疎である場合、ｊ番目の重みベクトルｗｊ（ｌ）の冗長性が高いとみなされ得る。学習部１０２によって訓練済みモデルが生成される。
【００５６】
続いて、修正部１０３は、付加層が接続された畳み込み層から冗長チャネルを削除するとともに、付加層の重みパラメータの少なくとも一部に基づいて、冗長チャネルの削除後の畳み込み層の重みパラメータを修正する。図５は、修正部１０３の処理の流れを示すフローチャートである。図５に示されるように、修正部１０３は、付加層が接続された重みフィルタの削減処理を行う（Ｓ１００）。そして、修正部１０３は、付加層の重みパラメータの少なくとも一部に基づいて、付加層が接続された重みフィルタの統合処理を行う（Ｓ１０１）。
【００５７】
図６は、重みフィルタの削減処理および統合処理について説明するための図である。図６には、２層の畳み込み層（Ｌ層およびＬ＋１層）における演算処理が表現されている。まず、３チャネルのＬ層入力チャネルデータｘ（ｘ１〜ｘ３）が２つのＬ層重みフィルタ（ＦＬおよびＧＬ）で畳み込み処理が実行され、Ｌ層出力データｈ（ｈ１，ｈ２）が得られる。次に、ｈは、上記した付加層によってｈ’（ｈ１’，ｈ２’）に変換される。ただし、この例では、付加層の関数σ（）に恒等写像関数が使用されている場合を想定する。最後は２つのＬ＋１層重みフィルタ（ＦＬ＋１，ＧＬ＋１）で畳み込み処理が実行され、Ｌ＋１層出力データｙ（ｙ１，ｙ２）が得られる。
【００５８】
ここで、Ｌ層およびＬ＋１層それぞれの重みフィルタと、付加層が有する重みパラメータｗｉｊとは、学習部１０２によって最適化されている。以下では、重みフィルタの削減処理（Ｓ１００）および統合処理（Ｓ１０１）それぞれについて具体的に説明する。
【００５９】
＜重みフィルタの削減処理Ｓ１００＞
修正部１０３は、訓練済みモデルに含まれる付加層の重みパラメータＷｉｊに基づいて算出される特徴量と所定の閾値εとが所定の関係を満たすチャネルを冗長チャネルとして選択し、訓練済みモデルから削除する。例えば、特徴量は、付加層の重みパラメータの大きさの和を、付加層の出力チャネル単位で演算した値であってよい。より具体的に、修正部１０３は、付加層の重み行列Ｗの中に、例えば、Ｌ１ノルムによる指標ｃｊ＝||ｗｊ||１が所定の閾値εを下回る列ベクトルｗｊが存在する場合、Ｌ層重みフィルタにおいて列ベクトルｗｊに関係する重みフィルタを訓練済みモデルから削除する。
【００６０】
例えば、図６に示された例において、ｃｊ＝２＝||ｗｊ＝２||１が閾値εを下回った場合を想定する。かかる場合には、修正部１０３は、列ベクトルｗｊ＝２（ｗ１２およびｗ２２）に関係する重みフィルタＧＬを削除してよい。なお、ここでは、ｃｊ＝||ｗｊ||１が所定の閾値εを下回る列ベクトルｗｊが１つ存在した場合を想定したが、ｃｊ＝||ｗｊ||１が所定の閾値εを下回る列ベクトルｗｊは複数存在してもよい。かかる場合には、ｃｊ＝||ｗｊ||１が所定の閾値εを下回る複数の列ベクトルｗｊそれぞれに関係する重みフィルタが削除されればよい。このようにして、重みフィルタの削減処理（Ｓ１００）が実行される。
【００６１】
＜重みフィルタの統合処理Ｓ１０１＞
重みフィルタの統合処理は、畳み込み演算の性質を利用して、付加層を直前に接続された畳み込み層に統合することによって、重みフィルタ削減後の訓練済みモデルから付加層を削除する処理である。具体的に、修正部１０３は、付加層の重みパラメータＷの少なくとも一部と重みフィルタ削減後の畳み込み層の重みパラメータの少なくとも一部との積和演算に基づいて、重みフィルタ削減後の畳み込み層の重みパラメータを修正する。まず、Ｌ層の入出力関係は、以下の式（３）および（４）のように表現され得る。
【００６２】
【数３】
2020190996.tif 000005
【００６３】
また、Ｌ＋１層の入力は、以下の数式（５）および（６）のように表現され得る。
【００６４】
【数４】
2020190996.tif 000006
【００６５】
数式（５）および（６）を参照すると、付加層を経たｈ’（ｈ１’，ｈ２’）において、入力チャネルデータｘに対して、Ｗｉｊを用いたｆｊとｇｊとの重み付き和が畳み込み演算される。この重み付き和は、Ｌ＋１層入力データに依存せずにあらかじめ計算可能であるため、そこで、修正部１０３は、付加層の重みパラメータに基づいて重みフィルタ削減後の訓練済みモデルのＬ層重みフィルタを修正する代わりに、このＬ層重みフィルタの後段に接続された付加層を削除することができる。
【００６６】
ここで、数式（３）において、ｆｉが（ｗ１１ｆｉ＋ｗ１２ｇｉ）に置換されれば、数式（３）のｈ１は、数式（５）のｈ１’に置換される。同様に、数式（４）において、ｇｉが（ｗ２１ｆｉ＋ｗ２２ｇｉ）に置換されれば、数式（４）のｈ１は、数式（５）のｈ１’に置換される。ただし、列ベクトルｗｊ＝２（ｗ１２およびｗ２２）が冗長であれば、修正部１０３は、重みフィルタｆｉをｗ１１ｆｉに置換し、削除済みの重みフィルタｇｉの代わりにｗ２１ｆｉを追加すればよい。このように、統合処理後の重みフィルタはｆｉのみとなり、Ｌ層出力のチャネル数削減が達成される。
【００６７】
次に、付加層がＬ＋１層における畳み込み処理に与える影響を考える。Ｌ＋１層出力データｙのうち、１番目のＬ＋１層出力データｙ１を変形すると、以下の数式（７）のように示される。
【００６８】
【数５】
2020190996.tif 000007
【００６９】
ここで、付加層を構成する要素ｗｉｊの重み行列Ｗは、以下の数式（８）のように示される。
【００７０】
【数６】
2020190996.tif 000008
【００７１】
数式（７）の最終行において、第１項および第２項は、付加層を構成する要素ｗｉｊの重み行列Ｗの対角成分（数式（８）のｗ１１およびｗ２２）である。一方、数式（７）の最終行において、第３項および第４項は、付加層を構成する要素ｗｉｊの重み行列Ｗの非対角成分（数式（８）のｗ１２およびｗ２１）である。
【００７２】
このように、本実施形態では、付加層の追加によって、チャネルデータと重みフィルタとの１対１の関係が崩れ、Ｌ＋１層重みフィルタｆ１’およびｆ２’の訓練には、自身に対応しないチャネルデータも利用される。このことは、Ｌ層重みフィルタのいずれかが削除されたとしても、削除された重みフィルタの情報がＬ＋１層重みフィルタに学習結果として蓄積されることを意味する。このようにして、修正部１０３によって修正後モデルが生成される。なお、重み行列Ｗが対角行列である場合には、数式（７）の最終行において、第３項および第４項は、消去されるため、チャネルデータと重みフィルタとの１対１の関係は保たれる。
【００７３】
続いて、再学習部１０４によって、修正後モデルが訓練される。なお、上記したように、再学習部１０４による再訓練に利用される訓練データは、学習部１０２による訓練に利用された訓練データと同じであってよい。ただし、損失関数としては、学習部１０２による訓練に利用された損失関数Ｌｔｏｔａｌではなく、損失関数ｏｒｉｇｉｎが再学習部１０４による訓練に利用される。再訓練が終わった修正後モデルは、再訓練済みモデルとして出力部１０５に出力される。
【００７４】
続いて、出力部１０５によって、再訓練済みモデルが出力される。上記したように、出力部１０５による再訓練済みモデルの出力はどのように行われてもよい。
【００７５】
（１−３．効果の説明）
本発明の第１の実施形態によれば、生成部１０１によって軽量化対象モデルに付加層が接続された上で、学習部１０２によって訓練が行われるため、従来の軽量化技術では削除されてしまうチャネルデータに含まれる情報が、他のチャネルの重みフィルタに流れ込んで訓練される。これによって、軽量化対象モデルから重みフィルタの削減が行われたとしても、重みフィルタ削減後のモデルの性能劣化を小さく抑えることが可能となる。
【００７６】
また、本発明の第１の実施形態によれば、修正部１０３による重みフィルタ統合処理によって、付加層が軽量化対象モデルに取り込まれ得る。これによって、軽量化対象モデルに接続された付加層を除外することができるため、付加層の処理が不要になるという効果が享受される。
【００７７】
また、本発明の第１の実施形態によれば、再学習部１０４による再訓練によって、重みフィルタ削減によって劣化したモデルの性能を回復させるという効果が享受される。
【００７８】
以上、本発明の第１の実施形態の詳細について説明した。
【００７９】
（２．第２の実施形態の詳細）
続いて、本発明の第２の実施形態の詳細について説明する。
【００８０】
図７は、本発明の第２の実施形態に係るニューラルネットワーク軽量化装置の機能構成例を示す図である。図７に示されるように、本発明の第２の実施形態に係るニューラルネットワーク軽量化装置２０は、入力部２００、生成部２０１、学習部２０２、修正部２０３、再学習部２０４および出力部２０５を備える。ここで、入力部２００、生成部２０１、学習部２０２、再学習部２０４および出力部２０５は、入力部１００、生成部１０１、学習部１０２、再学習部１０４および出力部１０５とそれぞれ同様である。
【００８１】
修正部２０３は、付加層の少なくとも一部の重みパラメータに特異値分解を適用することに基づいて、冗長チャネルの削除後の畳み込み層のチャネル数を削減する。チャネル数削減に基づく訓練済みモデルは、修正後モデルとして再学習部２０４に出力される。
【００８２】
（２−２．動作の説明）
本発明の第２の実施形態に係るニューラルネットワーク軽量化装置２０は、本発明の第１の実施形態に係るニューラルネットワーク軽量化装置１０と比較して、修正部１０３の代わりに修正部２０３を有する。したがって、以下では、入力部２００、生成部２０１、学習部２０２、再学習部２０４および出力部２０５の動作の説明は省略し、修正部２０３の動作について説明する。
【００８３】
図８は、修正部２０３の処理の流れを示すフローチャートである。図８に示されるように、修正部２０３は、付加層が接続された重みフィルタの削減処理を行う（Ｓ２００）。続いて、修正部２０３は、低ランク近似によって、重みフィルタの削除後の畳み込み層のチャネル数を削減する（Ｓ２０１）。そして、修正部２０３は、付加層の重みパラメータの少なくとも一部に基づいて、チャネル数が削減された重みフィルタの統合処理を行う（Ｓ２０２）。重みフィルタの削減処理（Ｓ２００）は、本発明の第１の実施形態に係る重みフィルタの削減処理（Ｓ１００）と同様に実行され得るため、以下では、低ランク近似（Ｓ２０１）および統合処理（Ｓ２０２）それぞれについて具体的に説明する。
【００８４】
＜低ランク近似Ｓ２０１＞
重みフィルタの削減処理（Ｓ２００）によって、付加層の重み行列Ｗの次元がｍ×ｍからｍ×ｎ（ｎ≦ｍ）に変化したとする（図６に示された例において、ｈ１’〜ｈｍ’がｈ１’〜ｈｎ’に変化したとする）。このとき、修正部２０３は、重み行列Ｗに対して特異値分解を適用することによって、Ｌ層重みフィルタにおける演算回数を少なくすることができる。
【００８５】
具体的に、修正部２０３は、重み行列Ｗに対して特異値分解を適用することによって、Ｗ＝ＵＳＶＴを得る。ただし、Ｕ∈Ｒｍ×ｍ、Ｓ∈Ｒｍ×ｎ、Ｖ∈Ｒｎ×ｎである（すなわち、Ｕは、ｍ×ｍ次元の実数であり、Ｓは、ｍ×ｎ次元の実数であり、Ｖは、ｎ×ｎ次元の実数である）。ここで、修正部２０３は、特異値の大きさに基づいた低ランク近似を行うことによって、低ランク近似後の重み行列Ｗ’＝Ｕ’Ｓ’Ｖ’Ｔを得ることができる。ただし、次元ｋを任意の自然数として、Ｕ’∈Ｒｍ×ｋ、Ｓ’∈Ｒｋ×ｋ、Ｖ’∈Ｒｎ×ｋであり、ｋ＜ｎ≦ｍとする。
【００８６】
＜重みフィルタの統合処理Ｓ２０２＞
本発明の第１の実施形態とは異なり、修正部２０３は、低ランク近似の結果に基づいて、重みフィルタの統合処理Ｓ１０１における重み付き和の計算（数式（５）および（６））において、重み行列Ｗの代わりに行列Ｕ’Ｓ’を用いる。これによって、Ｌ層出力チャネルデータの数をｍ個からｋ個に減らすことができる（Ｌ層重みフィルタ数をｋ個に削減できる）。しかし、重みフィルタＷの次元をＬ＋１層入力チャネルデータの数（ｎ個）に合わせる必要があるため（元に戻す必要があるため）、修正部２０３は、付加層の重み行列Ｗを削除せずに、重み行列Ｗを行列Ｖ’に置換する。
【００８７】
したがって、本発明の第１の実施形態では、Ｌ層重みフィルタの後段に接続された付加層を軽量化対象モデルから削除することができたのに対し、本発明の第２の実施形態では、Ｌ層重みフィルタの後段に接続された付加層の一部が軽量化対象モデルに残ってしまう。しかし、本発明の第２の実施形態では、演算負荷のより大きい畳み込み処理の一部を、演算負荷のより小さい付加層の処理（行列Ｖ’を用いた処理）で代替することが可能となる。
【００８８】
（２−３．効果の説明）
本発明の第２の実施形態によれば、重みフィルタ削減処理（Ｓ２００）によってＬ層重みフィルタの数を削減するだけでなく、低ランク近似（Ｓ２０１）の結果に基づく重みフィルタ統合処理（Ｓ２０２）によって、Ｌ層重みフィルタの数をさらに削減することができる。したがって、本発明の第２の実施形態によれば、Ｌ層重みフィルタによる畳み込み処理の演算負荷を低減することが可能になるという効果が享受される。
【００８９】
以上、本発明の第２の実施形態の詳細について説明した。
【００９０】
（３．ハードウェア構成例）
続いて、本発明の第１の実施形態に係るニューラルネットワーク軽量化装置１０のハードウェア構成例について説明する。ただし、本発明の第２の実施形態に係るニューラルネットワーク軽量化装置２０のハードウェア構成例も同様に実現され得る。
【００９１】
以下では、本発明の第１の実施形態に係るニューラルネットワーク軽量化装置１０のハードウェア構成例として、情報処理装置９００のハードウェア構成例について説明する。なお、以下に説明する情報処理装置９００のハードウェア構成例は、ニューラルネットワーク軽量化装置１０のハードウェア構成の一例に過ぎない。したがって、ニューラルネットワーク軽量化装置１０のハードウェア構成は、以下に説明する情報処理装置９００のハードウェア構成から不要な構成が削除されてもよいし、新たな構成が追加されてもよい。
【００９２】
図９は、本発明の第１の実施形態に係るニューラルネットワーク軽量化装置１０の例としての情報処理装置９００のハードウェア構成を示す図である。情報処理装置９００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９０３と、ホストバス９０４と、ブリッジ９０５と、外部バス９０６と、インタフェース９０７と、入力装置９０８と、出力装置９０９と、ストレージ装置９１０と、通信装置９１１と、を備える。
【００９３】
ＣＰＵ９０１は、演算処理装置および制御装置として機能し、各種プログラムに従って情報処理装置９００内の動作全般を制御する。また、ＣＰＵ９０１は、マイクロプロセッサであってもよい。ＲＯＭ９０２は、ＣＰＵ９０１が使用するプログラムや演算パラメータ等を記憶する。ＲＡＭ９０３は、ＣＰＵ９０１の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を一時記憶する。これらはＣＰＵバス等から構成されるホストバス９０４により相互に接続されている。
【００９４】
ホストバス９０４は、ブリッジ９０５を介して、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ／Ｉｎｔｅｒｆａｃｅ）バス等の外部バス９０６に接続されている。なお、必ずしもホストバス９０４、ブリッジ９０５および外部バス９０６を分離構成する必要はなく、１つのバスにこれらの機能を実装してもよい。
【００９５】
入力装置９０８は、マウス、キーボード、タッチパネル、ボタン、マイクロフォン、スイッチおよびレバー等ユーザが情報を入力するための入力手段と、ユーザによる入力に基づいて入力信号を生成し、ＣＰＵ９０１に出力する入力制御回路等から構成されている。情報処理装置９００を操作するユーザは、この入力装置９０８を操作することにより、情報処理装置９００に対して各種のデータを入力したり処理動作を指示したりすることができる。
【００９６】
出力装置９０９は、例えば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）ディスプレイ装置、液晶ディスプレイ（ＬＣＤ）装置、ＯＬＥＤ（Ｏｒｇａｎｉｃ  Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）装置、ランプ等の表示装置およびスピーカ等の音声出力装置を含む。
【００９７】
ストレージ装置９１０は、データ格納用の装置である。ストレージ装置９１０は、記憶媒体、記憶媒体にデータを記録する記録装置、記憶媒体からデータを読み出す読出し装置および記憶媒体に記録されたデータを削除する削除装置等を含んでもよい。ストレージ装置９１０は、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）で構成される。このストレージ装置９１０は、ハードディスクを駆動し、ＣＰＵ９０１が実行するプログラムや各種データを格納する。
【００９８】
通信装置９１１は、例えば、ネットワークに接続するための通信デバイス等で構成された通信インタフェースである。また、通信装置９１１は、無線通信または有線通信のどちらに対応してもよい。
【００９９】
以上、本発明の第１の実施形態に係るニューラルネットワーク軽量化装置１０のハードウェア構成例について説明した。
【０１００】
（４．まとめ）
以上に説明したように、本発明の実施形態によれば、入力部と、生成部と、学習部と、修正部と、再学習部と、出力部と、を備える、ニューラルネットワーク軽量化装置が提供される。入力部は、少なくとも１つの畳み込み層を含んだ複数の処理層を有する第１のニューラルネットワークを取得する。生成部は、前記第１のニューラルネットワークに含まれる前記畳み込み層の後段に対して少なくとも１つの第２のニューラルネットワークが付加層として接続された第３のニューラルネットワークを生成する。学習部は、前記第３のニューラルネットワークの訓練を行う。
【０１０１】
修正部は、前記第２のニューラルネットワークの重みパラメータに基づいて算出される特徴量と所定の閾値とが所定の関係を満たすチャネルを冗長チャネルとして選択し、前記畳み込み層から前記冗長チャネルを削除するとともに、前記第２のニューラルネットワークの重みパラメータの少なくとも一部に基づいて前記冗長チャネルの削除後の畳み込み層の重みパラメータを修正する。再学習部は、前記冗長チャネルの削除後の前記畳み込み層の重みパラメータの修正に基づく前記第３のニューラルネットワークの再訓練を行う。出力部は、再訓練後の前記第３のニューラルネットワークを出力する。
【０１０２】
かかる構成によれば、軽量化後のニューラルネットワークの性能劣化を抑制しつつ重みフィルタをチャネル単位で軽量化することが可能となる。
【０１０３】
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【０１０４】
例えば、本発明の第１の実施形態および本発明の第２の実施形態においては、重みフィルタ削減処理（Ｓ１００、Ｓ２００）が実行された後に、再学習部１０４、２０４による再学習が実行される例について説明した。しかし、学習部１０２、２０２による重みパラメータ更新の度に、重要度の判定が行われ、逐次的に重みフィルタが削除されてもよい。このとき、本発明の第１の実施形態では、Ｓ１００と再学習部１０４がスキップされてよく、本発明の第２の実施形態では、Ｓ２００と再学習部２０４がスキップされてよい。
【０１０５】
また、本発明の第１の実施形態および本発明の第２の実施形態においては、学習部１０２、２０２による学習に利用される損失関数の中に、制約の強さを表現するパラメータγおよびλが含まれていた。これらの制約の強さを表現するγおよびλの少ないともいずれか一方の値は、固定である必要はなく、訓練中に徐々に上昇させてもよい。
【０１０６】
例えば、学習部１０２、２０２は、制約の強さを表現するパラメータを、同じデータセットを繰り返し実行するタイミングごとに大きくしてもよい（すなわち、エポック単位で大きくしてもよい）。あるいは、学習部１０２、２０２は、制約の強さを表現するパラメータを、データセットを更新するタイミングごとに大きくしてもよい（すなわち、イテレーション単位で大きくしてもよい）。制約の強さを表現するパラメータは、どのように大きくされてもよい。例えば、制約の強さを表現するパラメータは、単調増加されればよく、一次関数的に増加されてもよいし、２次関数的に増加されてもよいし、対数関数的に増加されてもよい。
【０１０７】
本発明の第１の実施形態および本発明の第２の実施形態においては、軽量化対象モデルに１つの畳み込み層が含まれる場合を主に想定した。しかし、軽量化対象モデルに複数の畳み込み層が含まれる場合が想定される。かかる場合には、生成部２０１、２０２は、当該複数の畳み込み層それぞれの後段に付加層が接続された訓練対象モデルを生成してもよい。このとき、学習部１０２、２０２、修正部１０３、２０３および再学習部１０４、２０４による処理が、当該複数の畳み込み層およびそれぞれに接続される付加層に対しても実行されてよい。
【０１０８】
このとき、修正部１０３、２０３は、複数の畳み込み層それぞれの重みパラメータの修正を、積和演算に基づいて行うか（本発明の第１の実施形態）、特異値分解を適用することに基づいて行うか（本発明の第２の実施形態）を、畳み込み層ごとに判断してもよい。例えば、修正部１０３、２０３は、畳み込み演算における積和回数が閾値以上であれば、積和回数を大幅に減らすべく、特異値分解を適用することに基づいて重みパラメータを修正してもよい。一方、修正部１０３、２０３は、畳み込み演算における積和回数が閾値を下回れば、積和演算に基づいて重みパラメータを修正してもよい。このときに使用される閾値は、全ての畳み込み層において同じであってもよいし、畳み込み層ごとに異なっていてもよい。
【符号の説明】
【０１０９】
１０    ニューラルネットワーク軽量化装置
１００  入力部
１０１  生成部
１０２  学習部
１０３  修正部
１０４  再学習部
１０５  出力部
２０    ニューラルネットワーク軽量化装置
２００  入力部
２０１  生成部
２０２  学習部
２０３  修正部
２０４  再学習部
２０５  出力部
【図１】
2020190996.tif 000009
【図２】
2020190996.tif 000010
【図３】
2020190996.tif 000011
【図４】
2020190996.tif 000012
【図５】
2020190996.tif 000013
【図６】
2020190996.tif 000014
【図７】
2020190996.tif 000015
【図８】
2020190996.tif 000016
【図９】
2020190996.tif 000017
【手続補正書】
【提出日】令和2年9月14日(2020.9.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
少なくとも１つの畳み込み層を含んだ複数の処理層を有する第１のニューラルネットワークを取得する入力部と、
前記第１のニューラルネットワークに含まれる前記畳み込み層の後段に対して少なくとも１つの第２のニューラルネットワークが付加層として接続された第３のニューラルネットワークを生成する生成部と、
前記第３のニューラルネットワークの訓練を行う学習部と、
前記第２のニューラルネットワークの重みパラメータに基づいて算出される特徴量と所定の閾値とが所定の関係を満たすチャネルを冗長チャネルとして選択し、前記畳み込み層から前記冗長チャネルを削除するとともに、前記第２のニューラルネットワークの重みパラメータの少なくとも一部に基づいて前記冗長チャネルの削除後の畳み込み層の重みパラメータを修正する修正部と、
前記冗長チャネルの削除後の前記畳み込み層の重みパラメータの修正に基づく前記第３のニューラルネットワークの再訓練を行う再学習部と、
再訓練後の前記第３のニューラルネットワークを出力する出力部と、
を備え、
前記第２のニューラルネットワークは、前記畳み込み層にチャネルデータの単位で接続された全結合ニューラルネットワークである、
ニューラルネットワーク軽量化装置。
【請求項２】
前記修正部は、前記第２のニューラルネットワークの少なくとも一部の重みパラメータに特異値分解を適用することに基づいて、前記冗長チャネルの削除後の畳み込み層のチャネル数を削減する、
請求項１に記載のニューラルネットワーク軽量化装置。
【請求項３】
前記修正部は、前記冗長チャネルの削除後の畳み込み層の重みパラメータを修正するとともに、前記第３のニューラルネットワークから前記第２のニューラルネットワークを削除する、
請求項１または２に記載のニューラルネットワーク軽量化装置。
【請求項４】
前記修正部は、前記第２のニューラルネットワークの重みパラメータの少なくとも一部と前記冗長チャネルの削除後の畳み込み層の重みパラメータの少なくとも一部との積和演算に基づいて、前記冗長チャネルの削除後の畳み込み層の重みパラメータを修正する、
請求項２または３に記載のニューラルネットワーク軽量化装置。
【請求項５】
前記生成部は、前記第１のニューラルネットワークに複数の畳み込み層が含まれる場合、前記複数の畳み込み層それぞれの後段に前記第２のニューラルネットワークが接続された前記第３のニューラルネットワークを生成する、
請求項１〜４のいずれか一項に記載のニューラルネットワーク軽量化装置。
【請求項６】
前記修正部は、前記複数の畳み込み層それぞれの重みパラメータの修正を、積和演算に基づいて行うか、特異値分解を適用することに基づいて行うかを、前記複数の畳み込み層ごとに判断する、
請求項５に記載のニューラルネットワーク軽量化装置。
【請求項７】
前記学習部は、前記第２のニューラルネットワークの重みパラメータが疎になるような少なくとも１つの制約が課された上で学習する、
請求項１〜６のいずれか一項に記載のニューラルネットワーク軽量化装置。
【請求項８】
前記学習部は、前記制約の強さを表現するパラメータをエポック単位またはイテレーション単位で大きくする、
請求項７に記載のニューラルネットワーク軽量化装置。
【請求項９】
前記修正部は、前記特徴量が前記所定の閾値を下回るチャネルを前記冗長チャネルとして選択する、
請求項１〜８に記載のニューラルネットワーク軽量化装置。
【請求項１０】
前記特徴量は、前記第２のニューラルネットワークの重みパラメータの大きさの和を、前記第２のニューラルネットワークの出力チャネル単位で演算した値である、
請求項１〜９のいずれか一項に記載のニューラルネットワーク軽量化装置。
【請求項１１】
ニューラルネットワーク軽量化装置が、少なくとも１つの畳み込み層を含んだ複数の処理層を有する第１のニューラルネットワークを取得することと、
前記ニューラルネットワーク軽量化装置が、前記第１のニューラルネットワークに含まれる前記畳み込み層の後段に対して少なくとも１つの第２のニューラルネットワークが付加層として接続された第３のニューラルネットワークを生成することと、
前記ニューラルネットワーク軽量化装置が、前記第３のニューラルネットワークの訓練を行うことと、
前記ニューラルネットワーク軽量化装置が、前記第２のニューラルネットワークの重みパラメータに基づいて算出される特徴量と所定の閾値とが所定の関係を満たすチャネルを冗長チャネルとして選択し、前記畳み込み層から前記冗長チャネルを削除するとともに、前記第２のニューラルネットワークの重みパラメータの少なくとも一部に基づいて前記冗長チャネルの削除後の畳み込み層の重みパラメータを修正することと、
前記ニューラルネットワーク軽量化装置が、前記重みパラメータの修正後の前記第３のニューラルネットワークの再訓練を行うことと、
前記ニューラルネットワーク軽量化装置が、再訓練後の前記第３のニューラルネットワークを出力することと、
を含み、
前記第２のニューラルネットワークは、前記畳み込み層にチャネルデータの単位で接続された全結合ニューラルネットワークである、
ニューラルネットワーク軽量化方法。
【請求項１２】
コンピュータを、
少なくとも１つの畳み込み層を含んだ複数の処理層を有する第１のニューラルネットワークを取得する入力部と、
前記第１のニューラルネットワークに含まれる前記畳み込み層の後段に対して少なくとも１つの第２のニューラルネットワークが付加層として接続された第３のニューラルネットワークを生成する生成部と、
前記第３のニューラルネットワークの訓練を行う学習部と、
前記第２のニューラルネットワークの重みパラメータに基づいて算出される特徴量と所定の閾値とが所定の関係を満たすチャネルを冗長チャネルとして選択し、前記畳み込み層から前記冗長チャネルを削除するとともに、前記第２のニューラルネットワークの重みパラメータの少なくとも一部に基づいて前記冗長チャネルの削除後の畳み込み層の重みパラメータを修正する修正部と、
前記重みパラメータの修正後の前記第３のニューラルネットワークの再訓練を行う再学習部と、
再訓練後の前記第３のニューラルネットワークを出力する出力部と、
を備え、
前記第２のニューラルネットワークは、前記畳み込み層にチャネルデータの単位で接続された全結合ニューラルネットワークである、
ニューラルネットワーク軽量化装置として機能させるためのプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
上記問題を解決するために、本発明のある観点によれば、少なくとも１つの畳み込み層を含んだ複数の処理層を有する第１のニューラルネットワークを取得する入力部と、前記第１のニューラルネットワークに含まれる前記畳み込み層の後段に対して少なくとも１つの第２のニューラルネットワークが付加層として接続された第３のニューラルネットワークを生成する生成部と、前記第３のニューラルネットワークの訓練を行う学習部と、前記第２のニューラルネットワークの重みパラメータに基づいて算出される特徴量と所定の閾値とが所定の関係を満たすチャネルを冗長チャネルとして選択し、前記畳み込み層から前記冗長チャネルを削除するとともに、前記第２のニューラルネットワークの重みパラメータの少なくとも一部に基づいて前記冗長チャネルの削除後の畳み込み層の重みパラメータを修正する修正部と、前記冗長チャネルの削除後の前記畳み込み層の重みパラメータの修正に基づく前記第３のニューラルネットワークの再訓練を行う再学習部と、再訓練後の前記第３のニューラルネットワークを出力する出力部と、を備え、前記第２のニューラルネットワークは、前記畳み込み層にチャネルデータの単位で接続された全結合ニューラルネットワークである、ニューラルネットワーク軽量化装置が提供される。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】削除
【補正の内容】
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
また、本発明の別の観点によれば、ニューラルネットワーク軽量化装置が、少なくとも１つの畳み込み層を含んだ複数の処理層を有する第１のニューラルネットワークを取得することと、前記ニューラルネットワーク軽量化装置が、前記第１のニューラルネットワークに含まれる前記畳み込み層の後段に対して少なくとも１つの第２のニューラルネットワークが付加層として接続された第３のニューラルネットワークを生成することと、前記ニューラルネットワーク軽量化装置が、前記第３のニューラルネットワークの訓練を行うことと、前記ニューラルネットワーク軽量化装置が、前記第２のニューラルネットワークの重みパラメータに基づいて算出される特徴量と所定の閾値とが所定の関係を満たすチャネルを冗長チャネルとして選択し、前記畳み込み層から前記冗長チャネルを削除するとともに、前記第２のニューラルネットワークの重みパラメータの少なくとも一部に基づいて前記冗長チャネルの削除後の畳み込み層の重みパラメータを修正することと、前記ニューラルネットワーク軽量化装置が、前記重みパラメータの修正後の前記第３のニューラルネットワークの再訓練を行うことと、前記ニューラルネットワーク軽量化装置が、再訓練後の前記第３のニューラルネットワークを出力することと、を含み、前記第２のニューラルネットワークは、前記畳み込み層にチャネルデータの単位で接続された全結合ニューラルネットワークである、ニューラルネットワーク軽量化方法が提供される。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１９
【補正方法】変更
【補正の内容】
【００１９】
また、本発明の別の観点によれば、コンピュータを、少なくとも１つの畳み込み層を含んだ複数の処理層を有する第１のニューラルネットワークを取得する入力部と、前記第１のニューラルネットワークに含まれる前記畳み込み層の後段に対して少なくとも１つの第２のニューラルネットワークが付加層として接続された第３のニューラルネットワークを生成する生成部と、前記第３のニューラルネットワークの訓練を行う学習部と、前記第２のニューラルネットワークの重みパラメータに基づいて算出される特徴量と所定の閾値とが所定の関係を満たすチャネルを冗長チャネルとして選択し、前記畳み込み層から前記冗長チャネルを削除するとともに、前記第２のニューラルネットワークの重みパラメータの少なくとも一部に基づいて前記冗長チャネルの削除後の畳み込み層の重みパラメータを修正する修正部と、前記重みパラメータの修正後の前記第３のニューラルネットワークの再訓練を行う再学習部と、再訓練後の前記第３のニューラルネットワークを出力する出力部と、を備え、前記第２のニューラルネットワークは、前記畳み込み層にチャネルデータの単位で接続された全結合ニューラルネットワークである、ニューラルネットワーク軽量化装置として機能させるためのプログラムが提供される。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００５４
【補正方法】変更
【補正の内容】
【００５４】
ここで、数式（２）の右辺第１項は、軽量化対象モデルの本来の損失関数である。例えば、判別問題が扱われる場合などには、かかる損失関数として交差エントロピー関数などが使用される。重み行列ｗｉｊ（ｌ）は、第ｌ層の付加層を構成するｊ番目に属する重みベクトルである。数式（２）の右辺第２項は、一般的なＬ１ノルム正則化項であり、付加層を構成するそれぞれの重みが０に近づくように最適化される。数式（２）の右辺第３項は、一般的なＧｒｏｕｐ−ＬＡＳＳＯ正則化項であり、ｊ番目のチャネルデータＱｊに接続される全ての重みが０に近づくように最適化される。γおよびλは、正則化の強さを決定する任意のスカラー値である。
【手続補正７】
【補正対象書類名】図面
【補正対象項目名】図１
【補正方法】変更
【補正の内容】
【図１】
2020190996.tif 000018
【手続補正８】
【補正対象書類名】図面
【補正対象項目名】図２
【補正方法】変更
【補正の内容】
【図２】
2020190996.tif 000019