(57)【要約】【課題】ニューラルネットワークを効率良く軽量化する。【解決手段】複数段の処理層それぞれが複数のチャネルによって接続されたニューラルネットワークの所定の処理層における少なくとも第１のチャネル数のチャネルそれぞれからの入力特徴量とパラメータとに基づいて、第１のチャネル数のチャネルそれぞれに対応する出力特徴量を算出するアテンション層と、入力特徴量に出力特徴量を乗算して得られた演算結果を、所定の処理層の次段の処理層に出力する演算部と、を有する、アテンションモジュールと、ニューラルネットワークに接続され、少なくとも当該所定の処理層及び次段の処理層の学習処理を停止させた状態で、誤差逆伝播法によってパラメータの学習処理を行う第１の学習器と、学習処理が行われた後にアテンション層によって算出された出力特徴量と所定の閾値とが所定の関係を満たすチャネルを冗長チャネルとして選択するチャネル選択部と、を備える、情報処理装置が提供される。【選択図】図１
2019212206.tif 000002
【特許請求の範囲】
【請求項１】
複数段の処理層それぞれが複数のチャネルによって接続されたニューラルネットワークの所定の処理層における少なくとも第１のチャネル数のチャネルそれぞれからの入力特徴量とパラメータとに基づいて、前記第１のチャネル数のチャネルそれぞれに対応する出力特徴量を算出するアテンション層と、
前記入力特徴量に前記出力特徴量を乗算して得られた演算結果を、前記所定の処理層の次段の処理層に出力する演算部と、
を有する、アテンションモジュールと、
前記ニューラルネットワークに接続され、少なくとも前記所定の処理層及び次段の処理層の学習処理を停止させた状態で、誤差逆伝播法によって前記パラメータの学習処理を行う第１の学習器と、
前記学習処理が行われた後に前記アテンション層によって算出された前記出力特徴量と所定の閾値とが所定の関係を満たすチャネルを冗長チャネルとして選択するチャネル選択部と、
前記所定の処理層から前記冗長チャネルを削除することによって前記第１のチャネル数のチャネルを第２のチャネル数のチャネルに変更する削除部と、
前記ニューラルネットワークに接続され、前記冗長チャネルが削除された後に前記ニューラルネットワークの学習処理を行う第２の学習器と、
を備える、ニューラルネットワーク軽量化装置。
【請求項２】
前記アテンション層は、前記入力特徴量と前記パラメータとに応じた特徴量と前記第１のチャネル数を所定の調整値で除した値との乗算結果を前記出力特徴量として算出し、
前記第１の学習器は、前記学習処理が行われている間に前記調整値を徐々に大きくする学習調整部を備える、
請求項１に記載のニューラルネットワーク軽量化装置。
【請求項３】
前記学習調整部は、前記調整値をエポック単位またはイテレーション単位で大きくする、
請求項２に記載のニューラルネットワーク軽量化装置。
【請求項４】
前記学習調整部は、前記第１のチャネル数が大きいほど前記調整値を大きくする、
請求項２に記載のニューラルネットワーク軽量化装置。
【請求項５】
前記チャネル選択部は、前記出力特徴量が前記所定の閾値を下回るチャネルを前記冗長チャネルとして選択する、
請求項１に記載のニューラルネットワーク軽量化装置。
【請求項６】
前記ニューラルネットワーク軽量化装置は、
前記複数の処理層それぞれに対応して、前記アテンションモジュール、前記チャネル選択部および前記削除部を有しており、
前記第２の学習器は、前記複数の処理層それぞれから前記冗長チャネルが削除された後に前記ニューラルネットワークの学習処理を行う、
請求項１に記載のニューラルネットワーク軽量化装置。
【請求項７】
前記複数の処理層それぞれに対応する前記アテンションモジュールは、一部または全部が共通化されている、
請求項１に記載のニューラルネットワーク軽量化装置。
【請求項８】
前記複数の処理層それぞれに対応する前記アテンションモジュールは、異なるモジュールである、
請求項１に記載のニューラルネットワーク軽量化装置。
【請求項９】
複数段の処理層それぞれが複数のチャネルによって接続されたニューラルネットワークの所定の処理層における少なくとも第１のチャネル数のチャネルそれぞれからの入力特徴量とパラメータとに基づいて、前記第１のチャネル数のチャネルそれぞれに対応する出力特徴量を算出するアテンション層と、
前記入力特徴量に前記出力特徴量を乗算して得られた演算結果を、前記所定の処理層の次段の処理層に出力する演算部と、
を有する、アテンションモジュールと、
前記ニューラルネットワークに接続され、少なくとも前記所定の処理層及び次段の処理層の学習処理を停止させた状態で、誤差逆伝播法によって前記パラメータの学習処理を行う第１の学習器と、
前記学習処理が行われた後に前記アテンション層によって算出された前記出力特徴量と所定の閾値とが所定の関係を満たすチャネルを冗長チャネルとして選択するチャネル選択部と、
前記学習処理が行われた後に前記アテンション層によって算出された前記出力特徴量に応じた出力を行う出力部と、
を備える、情報処理装置。
【請求項１０】
複数段の処理層それぞれが複数のチャネルによって接続されたニューラルネットワークの所定の処理層における少なくとも第１のチャネル数のチャネルそれぞれからの入力特徴量とパラメータとに基づいて、前記第１のチャネル数のチャネルそれぞれに対応する出力特徴量を算出することと、
前記入力特徴量に前記出力特徴量を乗算して得られた演算結果を、前記所定の処理層の次段の処理層に出力することと、
前記ニューラルネットワークに接続され、少なくとも前記所定の処理層及び次段の処理層の学習処理を停止させた状態で、誤差逆伝播法によって前記パラメータの学習処理を行うことと、
前記学習処理が行われた後に算出された前記出力特徴量と所定の閾値とが所定の関係を満たすチャネルを冗長チャネルとして選択することと、
前記所定の処理層から前記冗長チャネルを削除することによって前記第１のチャネル数のチャネルを第２のチャネル数のチャネルに変更することと、
前記ニューラルネットワークに接続され、前記冗長チャネルが削除された後に前記ニューラルネットワークの学習処理を行うことと、
を含む、ニューラルネットワーク軽量化方法。
【請求項１１】
コンピュータを、
複数段の処理層それぞれが複数のチャネルによって接続されたニューラルネットワークの所定の処理層における少なくとも第１のチャネル数のチャネルそれぞれからの入力特徴量とパラメータとに基づいて、前記第１のチャネル数のチャネルそれぞれに対応する出力特徴量を算出するアテンション層と、
前記入力特徴量に前記出力特徴量を乗算して得られた演算結果を、前記所定の処理層の次段の処理層に出力する演算部と、
を有する、アテンションモジュールと、
前記ニューラルネットワークに接続され、少なくとも前記所定の処理層及び次段の処理層の学習処理を停止させた状態で、誤差逆伝播法によって前記パラメータの学習処理を行う第１の学習器と、
前記学習処理が行われた後に前記アテンション層によって算出された前記出力特徴量と所定の閾値とが所定の関係を満たすチャネルを冗長チャネルとして選択するチャネル選択部と、
前記所定の処理層から前記冗長チャネルを削除することによって前記第１のチャネル数のチャネルを第２のチャネル数のチャネルに変更する削除部と、
前記ニューラルネットワークに接続され、前記冗長チャネルが削除された後に前記ニューラルネットワークの学習処理を行う第２の学習器と、
を備える、ニューラルネットワーク軽量化装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワーク軽量化装置、情報処理装置、ニューラルネットワーク軽量化方法およびプログラムに関する。
【背景技術】
【０００２】
近年、物体検知などの各種の分野においてニューラルネットワークが用いられている。しかし、ニューラルネットワークの高性能化を進めていくほど、ニューラルネットワークを構成するパラメータの数が大きくなってしまう傾向があり、パラメータの数が膨大となってしまと、ニューラルネットワークを用いた学習時および推論時に、メモリおよび演算装置に与える負荷が大きくなってしまう。そのため、ニューラルネットワークを軽量化する技術が研究されている。
【０００３】
例えば、ニューラルネットワークを構成する各層における訓練済みモデルのフィルタ（重みフィルタ）を要素単位ではなくチャネル単位で軽量化する技術（以下、「枝刈り」とも言う。）が開示されている（例えば、非特許文献１および非特許文献２参照）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Hao Li、他4名、"Pruning Filters for Efficient ConvNets"、[online]、2017年3月10日、ICLR2017、［平成30年6月4日検索］、インターネット＜https://arxiv.org/abs/1608.08710＞
【非特許文献２】Jian-Hao Luo、他2名、"ThiNet: A Filter Level Pruning Method for Deep Neural NetworkCompression"、[online]、2017年7月20日、ICCV2017、［平成30年6月4日検索］、インターネット＜https://arxiv.org/abs/1707.06342＞
【非特許文献３】Jian-Hao Luo、他1名、"AutoPruner: An End-to-End TrainableFilterPruning Method for EfficientDeep Model Inference"、［平成30年6月6日検索］、インターネット＜https://arxiv.org/abs/1805.08941＞
【発明の概要】
【発明が解決しようとする課題】
【０００５】
かかる枝刈りの技術では、どの程度フィルタを削除するかを層ごとにあらかじめ決定する必要がある。すなわち、かかる枝刈りの技術では、各層の圧縮率をあらかじめ決定する必要がある。そこで、各層の圧縮率をあらかじめ決定せずとも自動的にニューラルネットワークを効率良く軽量化するための情報を得ることを可能とする技術が提供されることが望まれる。
【課題を解決するための手段】
【０００６】
上記問題を解決するために、本発明のある観点によれば、複数段の処理層それぞれが複数のチャネルによって接続されたニューラルネットワークの所定の処理層における少なくとも第１のチャネル数のチャネルそれぞれからの入力特徴量とパラメータとに基づいて、前記第１のチャネル数のチャネルそれぞれに対応する出力特徴量を算出するアテンション層と、前記入力特徴量に前記出力特徴量を乗算して得られた演算結果を、前記所定の処理層の次段の処理層に出力する演算部と、を有する、アテンションモジュールと、前記ニューラルネットワークに接続され、少なくとも前記所定の処理層及び次段の処理層の学習処理を停止させた状態で、誤差逆伝播法によって前記パラメータの学習処理を行う第１の学習器と、前記学習処理が行われた後に前記アテンション層によって算出された前記出力特徴量と所定の閾値とが所定の関係を満たすチャネルを冗長チャネルとして選択するチャネル選択部と、前記所定の処理層から前記冗長チャネルを削除することによって前記第１のチャネル数のチャネルを第２のチャネル数のチャネルに変更する削除部と、前記ニューラルネットワークに接続され、前記冗長チャネルが削除された後に前記ニューラルネットワークの学習処理を行う第２の学習器と、を備える、ニューラルネットワーク軽量化装置が提供される。
【０００７】
前記アテンション層は、前記入力特徴量と前記パラメータとに応じた特徴量と前記第１のチャネル数を所定の調整値で除した値との乗算結果を前記出力特徴量として算出し、
前記第１の学習器は、前記学習処理が行われている間に前記調整値を徐々に大きくする学習調整部を備えてもよい。
【０００８】
前記学習調整部は、前記調整値をエポック単位またはイテレーション単位で大きくしてもよい。
【０００９】
前記学習調整部は、前記第１のチャネル数が大きいほど前記調整値を大きくしてもよい。
【００１０】
前記チャネル選択部は、前記出力特徴量が前記所定の閾値を下回るチャネルを前記冗長チャネルとして選択してもよい。
【００１１】
前記ニューラルネットワーク軽量化装置は、前記複数の処理層それぞれに対応して、前記アテンションモジュール、前記チャネル選択部および前記削除部を有しており、前記第２の学習器は、前記複数の処理層それぞれから前記冗長チャネルが削除された後に前記ニューラルネットワークの学習処理を行ってもよい。
【００１２】
前記複数の処理層それぞれに対応する前記アテンションモジュールは、一部または全部が共通化されていてもよい。
【００１３】
前記複数の処理層それぞれに対応する前記アテンションモジュールは、異なるモジュールであってもよい。
【００１４】
また、本発明の別の観点によれば、複数段の処理層それぞれが複数のチャネルによって接続されたニューラルネットワークの所定の処理層における少なくとも第１のチャネル数のチャネルそれぞれからの入力特徴量とパラメータとに基づいて、前記第１のチャネル数のチャネルそれぞれに対応する出力特徴量を算出するアテンション層と、前記入力特徴量に前記出力特徴量を乗算して得られた演算結果を、前記所定の処理層の次段の処理層に出力する演算部と、を有する、アテンションモジュールと、前記ニューラルネットワークに接続され、少なくとも前記所定の処理層及び次段の処理層の学習処理を停止させた状態で、誤差逆伝播法によって前記パラメータの学習処理を行う第１の学習器と、前記学習処理が行われた後に前記アテンション層によって算出された前記出力特徴量と所定の閾値とが所定の関係を満たすチャネルを冗長チャネルとして選択するチャネル選択部と、前記学習処理が行われた後に前記アテンション層によって算出された前記出力特徴量に応じた出力を行う出力部と、を備える、情報処理装置が提供される。
【００１５】
また、本発明の別の観点によれば、複数段の処理層それぞれが複数のチャネルによって接続されたニューラルネットワークの所定の処理層における少なくとも第１のチャネル数のチャネルそれぞれからの入力特徴量とパラメータとに基づいて、前記第１のチャネル数のチャネルそれぞれに対応する出力特徴量を算出することと、前記入力特徴量に前記出力特徴量を乗算して得られた演算結果を、前記所定の処理層の次段の処理層に出力することと、前記ニューラルネットワークに接続され、少なくとも前記所定の処理層及び次段の処理層の学習処理を停止させた状態で、誤差逆伝播法によって前記パラメータの学習処理を行うことと、前記学習処理が行われた後に算出された前記出力特徴量と所定の閾値とが所定の関係を満たすチャネルを冗長チャネルとして選択することと、前記所定の処理層から前記冗長チャネルを削除することによって前記第１のチャネル数のチャネルを第２のチャネル数のチャネルに変更することと、前記ニューラルネットワークに接続され、前記冗長チャネルが削除された後に前記ニューラルネットワークの学習処理を行うことと、を含む、ニューラルネットワーク軽量化方法が提供される。
【００１６】
また、本発明の別の観点によれば、コンピュータを、複数段の処理層それぞれが複数のチャネルによって接続されたニューラルネットワークの所定の処理層における少なくとも第１のチャネル数のチャネルそれぞれからの入力特徴量とパラメータとに基づいて、前記第１のチャネル数のチャネルそれぞれに対応する出力特徴量を算出するアテンション層と、前記入力特徴量に前記出力特徴量を乗算して得られた演算結果を、前記所定の処理層の次段の処理層に出力する演算部と、を有する、アテンションモジュールと、前記ニューラルネットワークに接続され、少なくとも前記所定の処理層及び次段の処理層の学習処理を停止させた状態で、誤差逆伝播法によって前記パラメータの学習処理を行う第１の学習器と、前記学習処理が行われた後に前記アテンション層によって算出された前記出力特徴量と所定の閾値とが所定の関係を満たすチャネルを冗長チャネルとして選択するチャネル選択部と、前記所定の処理層から前記冗長チャネルを削除することによって前記第１のチャネル数のチャネルを第２のチャネル数のチャネルに変更する削除部と、前記ニューラルネットワークに接続され、前記冗長チャネルが削除された後に前記ニューラルネットワークの学習処理を行う第２の学習器と、を備える、ニューラルネットワーク軽量化装置として機能させるためのプログラムが提供される。
【発明の効果】
【００１７】
以上説明したように本発明によれば、各層の圧縮率をあらかじめ決定せずとも自動的にニューラルネットワークを効率良く軽量化するための情報を得ることを可能とする技術が提供される。
【図面の簡単な説明】
【００１８】
【図１】本開示の実施形態の概要を説明するための図である。
【図２】同実施形態の概要を説明するための図である。
【図３】同実施形態に係るニューラルネットワークの構成例を示す図である。
【図４】同実施形態に係るアテンション層が接続されたニューラルネットワークの例を示す図である。
【図５】アテンション層の構成例を示す図である。
【図６】調整値が１である場合の例を示す図である。
【図７】調整値を変化させる例を示す図である。
【図８】調整値を変化させる例を示す図である。
【図９】調整値を変化させる例を示す図である。
【図１０】同実施形態に係るニューラルネットワーク軽量化装置の機能構成例を示す図である。
【図１１】誤差伝播ルートの例を示す図である。
【図１２】第１の学習器による学習処理が行われた後にＳｏｆｔｍａｘ関数から出力される特徴量の例を示す図である。
【図１３】閾値の例を示す図である。
【図１４】冗長チャネルが削除される例を示す図である。
【図１５】本発明の実施形態に係るニューラルネットワーク軽量化装置の例としての情報処理装置のハードウェア構成を示す図である。
【発明を実施するための形態】
【００１９】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００２０】
また、本明細書および図面において、実質的に同一の機能構成を有する複数の構成要素を、同一の符号の後に異なる数字を付して区別する場合がある。ただし、実質的に同一の機能構成を有する複数の構成要素等の各々を特に区別する必要がない場合、同一符号のみを付する。また、異なる実施形態の類似する構成要素については、同一の符号の後に異なるアルファベットを付して区別する場合がある。ただし、異なる実施形態の類似する構成要素等の各々を特に区別する必要がない場合、同一符号のみを付する。
【００２１】
（０．概要）
まず、本発明の実施形態の概要を説明する。近年、物体検知などの各種の分野においてニューラルネットワークが用いられている。しかし、ニューラルネットワークの高性能化を進めていくほど、ニューラルネットワークを構成するパラメータの数が大きくなってしまう傾向があり、パラメータの数が膨大となってしまと、ニューラルネットワークを用いた学習時および推論時に、メモリおよび演算装置に与える負荷が大きくなってしまう。そのため、ニューラルネットワークを軽量化する技術が研究されている。
【００２２】
例えば、ニューラルネットワークを構成する各層における訓練済みモデルのフィルタ（重みフィルタ）を要素単位ではなくチャネル単位で軽量化する技術（枝刈り技術）が開示されている。
【００２３】
図１および図２は、本開示の実施形態の概要を説明するための図である。ここでは、複数段の処理層によって構成されるニューラルネットワークを想定し、複数段の処理層のうちのＬ層に注目する。図１を参照すると、Ｌ層への入力である「Ｌ層入力」が示され、「Ｌ層（重みフィルタ）」が示され、Ｌ層からの出力である「Ｌ層出力」が示されている。
【００２４】
図１に示された例では、Ｌ層は、２つのフィルタ（フィルタＦ１およびフィルタＦ２）から構成されており、Ｌ層の各フィルタは、３つのチャネルから構成されている（フィルタＦ１はチャネルＣ１〜Ｃ３から構成され、フィルタＦ２はチャネルＣ４〜Ｃ６から構成されている）。Ｌ層の各フィルタには、３つのチャネルそれぞれに対応する入力データ（チャネルデータｇ１〜ｇ３）が入力される。図１には、３つのチャネルそれぞれに対応する入力データの例として、ＲＧＢ画像データが示されている。
【００２５】
Ｌ層の各フィルタは、チャネルデータｇ１〜ｇ３とパラメータ（重みおよびバイアス）とに基づいて特徴量を算出し、算出した特徴量をＬ＋１層に出力する（フィルタＦ１は特徴量Ｇ１を出力し、フィルタＦ２は特徴量Ｇ２をＬ＋１層に出力する）。図１を参照すると、「Ｌ層入力」の各次元が、３（＝チャネル数）、Ｈ（＝縦サイズ）、Ｗ（＝横サイズ）として示されている。一方、図１を参照すると、「Ｌ層（重みフィルタ）」の各次元が、２（フィルタ数）、３（＝チャネル数）、Ｋｈ（＝縦サイズ）、Ｋｗ（＝横サイズ）として示され、「Ｌ層出力」の各次元が、２（チャネル数）、Ｈ’（＝縦サイズ）、Ｗ’（＝横サイズ）として示されている。
【００２６】
続いて、フィルタＦ１のチャネルＣ３が冗長であると判断され、フィルタＦ２のチャネルＣ６が冗長であると判断された場合を想定する。かかる場合には、図２に示されるように、冗長であると判断されたチャネルＣ３およびチャネルＣ６が削除される。これによって、ニューラルネットワークの軽量化が実現される。
【００２７】
なお、図２を参照すると、Ｌ層におけるチャネル削除に伴って、「Ｌ層入力」のチャネル数が２に減少し、「Ｌ層（重みフィルタ）」のチャネル数が２に減少している。一方、「Ｌ層（重みフィルタ）」からの出力チャネル数は２のままである。しかし、仮にＬ＋１層において枝刈りが行われ、Ｌ＋１層のチャネル数が減少すれば、Ｌ＋１層のチャネル数の減少に応じて、Ｌ層からの出力チャネル数も減少する。
【００２８】
図１および図２を参照しながら説明した枝刈りの技術では、どの程度フィルタを削除するかを層ごとにあらかじめ決定する必要があるのが一般的である。すなわち、枝刈りの技術では、各層の圧縮率をあらかじめ決定する必要があるのが一般的である。そこで、本発明の実施形態においては、各層の圧縮率をあらかじめ決定せずとも自動的にニューラルネットワークを効率良く軽量化するための情報を得ることを可能とする技術について主に説明する。
【００２９】
以上、本発明の実施形態の概要について説明した。
【００３０】
（１．実施形態の詳細）
続いて、本発明の実施形態の詳細について説明する。
【００３１】
図３は、本発明の実施形態に係るニューラルネットワークの構成例を示す図である。図３に示されるように、本発明の実施形態に係るニューラルネットワーク２０は、複数段の処理層２１を含んで構成される。本発明の実施形態においては、図３に示されたように、ニューラルネットワーク２０が、３つの処理層２１−１〜２１−３を含む場合を想定する。しかし、ニューラルネットワーク２０が含む処理層２１の数は、複数であれば限定されない。
【００３２】
また、処理層２１−１〜２１−３それぞれは、複数のチャネルによって接続されている。例えば、処理層２１−１と次段の処理層２１−２とは複数のチャネル（例えば、３つのチャネル）によって接続され、処理層２１−２と次段の処理層２１−３とは複数のチャネル（例えば、３つのチャネル）によって接続されている。しかし、処理層同士を接続するチャネル数は複数であれば限定されない。
【００３３】
また、本発明の実施形態においては、ニューラルネットワーク２０が有する３つの処理層２１−１〜２１−３それぞれが畳み込み層である場合を想定する。しかし、ニューラルネットワーク２０が有する処理層の種類は限定されない。例えば、ニューラルネットワーク２０は、全結合層の処理層を有してもよいし、他の処理層と結合しない処理層を有してもよい。
【００３４】
処理層２１−１〜２１−３それぞれは、チャネルごとにパラメータ（重みおよびバイアス）を有している。かかるパラメータの初期値としては、あらかじめ訓練済みのデータが設定されてもよいし、学習処理によって設定されてもよい。そして、処理層２１−１〜２１−３それぞれは、チャネルごとに前段から入力される特徴量とチャネルごとのパラメータとに基づいて、後段に出力される特徴量をチャネルごとに算出する。処理層２１−１〜２１−３それぞれは、算出したチャネルごとの特徴量を出力する。本発明の実施形態においては、このようなニューラルネットワーク２０に対してアテンション層を接続し、アテンション層を用いて冗長なチャネルを削除する。アテンション層については、後に説明する。
【００３５】
図４は、本発明の実施形態に係るアテンション層が接続されたニューラルネットワーク２０の例を示す図である。図４に示された例では、ニューラルネットワーク２０の一部の処理層２１に対してアテンション層１１が接続されている。より具体的には、処理層２１−１に対してアテンション層１１−１が接続され、処理層２１−２に対してアテンション層１１−２が接続されている。しかし、アテンション層１１は、ニューラルネットワーク２０を構成する少なくとも１つの処理層２１に対して接続されればよい。
【００３６】
例えば、ニューラルネットワーク２０の一部の処理層２１に対してアテンション層１１が接続されてもよい。あるいは、ニューラルネットワーク２０の全部の処理層２１に対してアテンション層１１が接続されてもよい。また、複数の処理層２１それぞれに対応するアテンションモジュール１３は異なるモジュールであってよい。図４に示された例では、アテンションモジュール１３−１とアテンションモジュール１３−２とが異なるモジュールである。あるいは、複数の処理層２１それぞれに対応するアテンションモジュール１３は、一部または全部が共通化されていてもよい。
【００３７】
ここで、アテンション層１１−１とアテンション層１１−２とは同様の機能を有しているため、以下では、アテンション層１１−１について主に説明し、アテンション層１１−２の詳細な説明は適宜省略する。
【００３８】
また、アテンション層１１と次段の処理層２１とに対して、演算部１２が接続されている。図４を参照すると、アテンション層１１−１と次段の処理層２１−２とに対して演算部１２−１が接続され、アテンション層１１−２と次段の処理層２１−３とに対して演算部１２−２が接続されている。なお、演算部１２−１と演算部１２−２とは同様の機能を有しているため、以下では、演算部１２−１について主に説明し、演算部１２−２の説明は適宜省略する。
【００３９】
図５は、アテンション層１１−１の構成例を示す図である。図５を参照すると、アテンション層１１−１は、畳み込み層１１０、活性化関数１１２、畳み込み層１１４、Ｓｏｆｔｍａｘ関数１１６、（チャネル数／調整値α）の乗算部１１８を有している。しかし、アテンション層１１−１の構成例は、図５に示された例に限定されない。例えば、アテンション層１１−１は、学習可能なパラメータを有するニューラルネットワークを有していればよく、畳み込み層１１０、活性化関数１１２および畳み込み層１１４の代わりに、学習可能なパラメータを有する他のニューラルネットワークを有してもよい。
【００４０】
アテンション層１１−１には、処理層２１−１における複数のチャネル（例えば、３つのチャネル）それぞれから特徴量（入力特徴量）が入力される。アテンション層１１−１は、処理層２１−１における複数のチャネル（例えば、３つのチャネル）それぞれから入力される特徴量（入力特徴量）とパラメータとに基づいて、当該複数のチャネルそれぞれに対応する特徴量（出力特徴量）を算出する。ここで、アテンション層１１からの出力特徴量が大きいチャネルほど、精度に大きく寄与するため、重要度が高いチャネルであると考えられる。そこで、本発明の実施形態では、アテンション層１１からの出力特徴量が小さいチャネルほど重要度が低いとして削除されやすくなる。
【００４１】
より具体的に、畳み込み層１１０は、複数のチャネルそれぞれの入力特徴量と自身が有するパラメータとに基づいて、当該複数のチャネルそれぞれに対応する特徴量を算出する。活性化関数１１２は、当該複数のチャネルそれぞれに対応する特徴量に重みを乗じ、その総和を出力する。活性化関数１１２の種類は限定されない。例えば、活性化関数１１２は、シグモイド関数であってもよいし、ＲｅＬＵ関数であってもよいし、他の関数であってもよい。畳み込み層１１４は、当該総和と自身が有するパラメータとに基づいて、当該複数のチャネルそれぞれに対応する特徴量を算出する。
【００４２】
Ｓｏｆｔｍａｘ関数１１６は、当該複数のチャネルそれぞれに対応する特徴量を、大きい特徴量ほど大きい値を示すように、かつ、総和が１となるように変換する。Ｓｏｆｔｍａｘ関数１１６によれば、重要度が高いチャネルほど大きな特徴量が得られ、かつ、総和が一定となるためにチャネル間の特徴量の比較が容易となる。ｉをチャネル番号とし、各特徴量をｘｉとした場合、Ｓｏｆｔｍａｘ関数１１６は、以下の関数（１）のように表現される。ただし、Σは、チャネル数分の合計値を示す。
【００４３】
ｅｘｐ（ｘｉ）／Σ（ｅｘｐ（ｘｉ））・・・（１）
【００４４】
なお、Ｓｏｆｔｍａｘ関数１１６の代わりに、他の関数が用いられてもよい。例えば、大きい特徴量ほど大きい値を示すように変換し、かつ、負の値をとる特徴量を正の値に変換する任意の関数をｆとした場合、Ｓｏｆｔｍａｘ関数１１６の代わりに、以下の関数（２）が用いられてもよい。
【００４５】
ｆ（ｘｉ）／Σ（ｆ（ｘｉ））・・・（２）
【００４６】
チャネル数／α（＝調整値）の乗算部１１８は、処理層２１−１における複数のチャネル（例えば、３つのチャネル）それぞれから入力される特徴量（入力特徴量）とパラメータとに応じて算出された特徴量と、チャネル数を所定の調整値αで除した値との乗算結果を出力特徴量として算出する。
【００４７】
ここで、上記したように、本発明の実施形態では、アテンション層１１−１からの出力特徴量が小さいチャネルほど重要度が低いとして削除されやすくなる。しかし、Ｓｏｆｔｍａｘ関数からの出力（出力特徴量）をそのまま処理層２１−１からの入力特徴量に乗算してしまうと、急激に多くのチャネルが削除され、第１の学習器１６による学習処理が効果的に行われなくなってしまう場合がある。そこで、処理層２１−１からの入力特徴量に乗算される出力特徴量を徐々に小さくするのが望ましい。
【００４８】
より具体的に、学習調整部１７は、第１の学習器１６によって学習処理が行われている間に調整値αを徐々に大きくするのがよい。このとき、調整値αは、１以上、かつ、チャネル数以下の範囲内で変化してよい。例えば、調整値α＝１である場合には、アテンション層１１−１からの出力特徴量が最も大きくなる（Ｓｏｆｔｍａｘ関数からの出力が全チャネル均一と仮定すると、アテンション層１１−１からの各チャネルの出力特徴量は１となる）。
【００４９】
図６は、調整値α＝１である場合の例を示す図である。図６を参照すると、３つのチャネルからのＳｏｆｔｍａｘ出力ｎ１〜ｎ３は、「０．３３」であり、チャネル数は「３」であり、調整値αは「１」である。そこで、チャネル数／α（＝調整値）の乗算部１１８は、３つのチャネルそれぞれからのＳｏｆｔｍａｘ出力ｎ１〜ｎ３「０．３３」と、チャネル数を所定の調整値αで除した値「３」との乗算結果「０．９９」を、３つのチャネルに対応するアテンション層出力Ｎ１〜Ｎ３として算出する。
【００５０】
一方、調整値α＝「チャネル数」である場合には、Ｓｏｆｔｍａｘ関数からの出力がそのままアテンション層１１−１からの出力特徴量となる。
【００５１】
調整値αが更新されるタイミングは限定されない。例えば、学習調整部１７は、同じデータセットを繰り返し実行するタイミングごとに調整値αを大きくしてもよい（すなわち、エポック単位で大きくしてもよい）。
【００５２】
図７〜図９は、調整値αを変化させる例を示す図である。図７には、エポック数が増加しても調整値αが一定である場合（一定型）が示されている。図８には、エポック数の増加とともに調整値αが１次関数的に増加する場合（線形型）が示されている。図９には、エポック数が所定の幅だけ増加した場合にのみ、調整値αを増加させる場合（ステップ型）が示されている。しかし、調整値αの変化のさせ方は、かかる例に限定されない。例えば、学習調整部１７は、エポック数の増加に従って、調整値αを単調増加させればよく、調整値αを２次関数的に大きくしてもよいし、対数関数的に大きくしてもよい。
【００５３】
あるいは、学習調整部１７は、データセットを更新するタイミングごとに調整値αを大きくしてもよい（すなわち、イテレーション単位で大きくしてもよい）。
【００５４】
調整値αの初期値は、状況に依らずに固定であってもよいし、状況に応じて変化させてもよい。例えば、学習調整部１７は、チャネル数に応じて調整値αの初期値を変化させてもよい。より具体的に、学習調整部１７は、チャネル数が大きいほど調整値αを大きくしてもよい。そうすれば、「チャネル数を所定の調整値αで除した値」を状況によってさほど変化させずに済む。
【００５５】
なお、本発明の実施形態においては、アテンション層１１−１への入力特徴量の数とアテンション層１１−１からの出力特徴量の数とが同数である場合を主に想定する。しかし、これらは必ずしも同数でなくてもよい。例えば、アテンション層１１−１への入力特徴量の数よりもアテンション層１１−１からの出力特徴量の数が少なくてもよい（すなわち、アテンション層１１−１は、複数のチャネルのうち一部のチャネルに対応する特徴量を算出し、残りのチャネルに対応する特徴量を算出しなくてもよい）。
【００５６】
図１０は、本発明の実施形態に係るニューラルネットワーク軽量化装置の機能構成例を示す図である。図１０に示されるように、ニューラルネットワーク軽量化装置１０は、複数のアテンションモジュール１３（アテンションモジュール１３−１およびアテンションモジュール１３−２）、複数のチャネル選択部１４（チャネル選択部１４−１〜１４−２）、複数の削除部（削除部１５−１〜１５−２）、第１の学習器１６、第２の学習器１８を備える。
【００５７】
ニューラルネットワーク軽量化装置１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などの演算装置を含み、図示しないメモリにより記憶されているプログラムがＣＰＵによりＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）に展開されて実行されることにより、その機能が実現され得る。このとき、当該プログラムを記録した、コンピュータに読み取り可能な記録媒体も提供され得る。あるいは、ニューラルネットワーク軽量化装置１０は、専用のハードウェアにより構成されていてもよいし、複数のハードウェアの組み合わせにより構成されてもよい。
【００５８】
複数のアテンションモジュール１３それぞれは、対応するアテンション層１１および対応する演算部１２を有する。具体的に、アテンションモジュール１３−１は、アテンション層１１−１および演算部１２−１を有し、アテンションモジュール１３−２は、アテンション層１１−２および演算部１２−２を有する。第１の学習器１６は、学習調整部１７を有する。
【００５９】
演算部１２−１は、処理層２１−１から入力される特徴量（入力特徴量）にアテンション層１１−１から出力される特徴量（出力特徴量）をチャネルごとに乗算する。演算部１２−１は、乗算して得たチャネルごとの演算結果を、次段の処理層２１−２に出力する。同様に、演算部１２−２も、処理層２１−２から入力される特徴量（入力特徴量）にアテンション層１１−２から出力される特徴量（出力特徴量）をチャネルごとに乗算する。演算部１２−２は、乗算して得たチャネルごとの演算結果を、次段の処理層２１−３に出力する。
【００６０】
第１の学習器１６は、ニューラルネットワーク２０に接続されており、少なくとも枝刈りの対象となる処理層の学習処理を停止させた状態で、誤差逆伝播法によってアテンション層１１（より具体的には、アテンション層１１の縦見込み層１１０および畳み込み層１１４それぞれが有するパラメータ）の学習処理を行う。より具体的には、第１の学習器１６は、ニューラルネットワーク２０からの出力ｙと教師データｔとの差分の２乗値を誤差として算出し、算出した誤差を逆伝播させる。このとき、ニューラルネットワーク２０を構成する処理層２１−１〜２１−３それぞれが有するパラメータは、学習処理の対象とはされずに固定される。なお、本実施形態ではニューラルネットワーク２０に含まれる全ての処理層２１−１〜２１−３について学習処理を停止させているが、複数の処理層のうち、少なくとも枝刈りの対象となる処理層を含む一部の処理層のみの学習処理を停止させてもよい。
【００６１】
図１１は、誤差伝播ルートの例を示す図である。図１１を参照すると、誤差伝播ルートＲ１が例として示されている。第１の学習器１６は、算出した誤差を誤差伝播ルートＲ１に沿って逆伝播させる。具体的に、第１の学習器１６は、誤差関数を最も減少させるようなアテンション層１１−２およびアテンション層１１−１それぞれの（畳み込み層１１０および畳み込み層１１４の）パラメータを算出する。そして、第１の学習器１６による学習処理によって、アテンション層１１−２およびアテンション層１１−１それぞれのパラメータが更新される。
【００６２】
図１２は、第１の学習器１６による学習処理が行われた後にＳｏｆｔｍａｘ関数１１６から出力される特徴量の例を示す図である。図１２に示されるように、複数のチャネルそれぞれに対応するＳｏｆｔｍａｘ関数からの出力（出力特徴量）が得られる。
【００６３】
チャネル選択部１４−１は、第１の学習器１６による学習処理が行われた後にアテンション層１１−１によって算出された出力特徴量と所定の閾値とが所定の関係を満たすチャネルを冗長チャネルとして選択する。例えば、出力特徴量が閾値を下回るチャネルは、重要度がさほど高くないと考えられる。そこで、チャネル選択部１４−１は、アテンション層１１−１によって算出された出力特徴量が閾値を下回るチャネルを、冗長チャネルとして選択する。
【００６４】
図１３は、閾値の例を示す図である。図１３を参照すると、全部のチャネルそれぞれに対応するＳｏｆｔｍａｘ関数からの出力（出力特徴量）が等しくなっている。すなわち、全部のチャネルの重要度が等しくなっている。一例として、チャネル選択部１４−１は、１／（２×チャネル数）を閾値とし、アテンション層１１−１によって算出された統計値からなる出力特徴量が、かかる閾値を下回るチャネルを、冗長チャネルとして選択してもよい。そうすれば、効果的な数の冗長チャネルが選択され得る。チャネル選択部１４−２による冗長チャネルの選択も同様に実行される。ここで統計値とは、多段階に表現された連続値であり、例えば少なくとも２つ以上の入力データから求められる平均値や分散値、中央値などである。出力特徴量はアテンション層への入力データに依存して変化するため、統計値を求めることでその依存性を抑えることができる。さらに、その統計値は各チャネルの重要度を直接的に表現しているため、枝刈りの判断根拠を説明するために利用することができる。
【００６５】
図１０に戻って説明を続ける。削除部１５−１は、アテンション層１１−１に対応する処理層２１−１から冗長チャネルを削除する。これによって、削除部１５−１は、アテンション層１１−１に対応する処理層２１−１のチャネル数を減らす（すなわち、第１のチャネル数のチャネルを第２のチャネル数のチャネルに変更する）。かかる構成によれば、処理層２１−１の圧縮率をあらかじめ決定せずとも自動的にニューラルネットワーク２０を効率良く軽量化することが可能となる。削除部１５−２による冗長チャネルの削除も同様に実行される。
【００６６】
図１４は、冗長チャネルが削除される例を示す図である。図１４を参照すると、「Ｌ層出力」の各次元が、３（＝チャネル数）、Ｈ（＝縦サイズ）、Ｗ（＝横サイズ）として示されている。一方、図１４を参照すると、「アテンション層出力」の次元が、３（チャネル数）として示され、各チャネルの出力が、出力Ｎ１「０．５」、出力Ｎ２「０．４」、出力Ｎ３「０．１」として示されている。「Ｌ＋１層入力」の各次元は、２（チャネル数）、Ｈ（＝縦サイズ）、Ｗ（＝横サイズ）として示されている。
【００６７】
図１０に戻って説明を続ける。第２の学習器１８は、ニューラルネットワーク２０に接続されており、削除部１５−１および削除部１５−２によって冗長チャネルが削除された後にニューラルネットワーク２０の学習処理を行う。より具体的に、第２の学習器１８は、削除部１５−１および削除部１５−２によって冗長チャネルが削除された後に、ニューラルネットワーク２０の処理層２１−１〜２１−３それぞれが有するパラメータの学習処理を行う。
【００６８】
以上に説明したような、第１の学習器１６による学習処理、チャネル選択部１４−１〜１４−２による冗長チャネルの選択、削除部１５−１〜１５−２による冗長チャネルの削除、第２の学習器１８による学習処理が、この順序で１または複数回実行される。これらの処理は、１または複数回実行された後に終了する。終了条件は特に限定されない。例えば、出力特徴量が閾値を下回るチャネルが存在しなくなった場合に、これらの処理は終了してもよい。
【００６９】
以上、本発明の実施形態の詳細について説明した。
【００７０】
（２．ハードウェア構成例）
続いて、本発明の実施形態に係るニューラルネットワーク軽量化装置１０のハードウェア構成例について説明する。以下では、本発明の実施形態に係るニューラルネットワーク軽量化装置１０のハードウェア構成例として、情報処理装置９００のハードウェア構成例について説明する。なお、以下に説明する情報処理装置９００のハードウェア構成例は、ニューラルネットワーク軽量化装置１０のハードウェア構成の一例に過ぎない。したがって、ニューラルネットワーク軽量化装置１０のハードウェア構成は、以下に説明する情報処理装置９００のハードウェア構成から不要な構成が削除されてもよいし、新たな構成が追加されてもよい。
【００７１】
図１５は、本発明の実施形態に係るニューラルネットワーク軽量化装置１０の例としての情報処理装置９００のハードウェア構成を示す図である。情報処理装置９００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９０３と、ホストバス９０４と、ブリッジ９０５と、外部バス９０６と、インタフェース９０７と、入力装置９０８と、出力装置９０９と、ストレージ装置９１０と、通信装置９１１と、を備える。
【００７２】
ＣＰＵ９０１は、演算処理装置および制御装置として機能し、各種プログラムに従って情報処理装置９００内の動作全般を制御する。また、ＣＰＵ９０１は、マイクロプロセッサであってもよい。ＲＯＭ９０２は、ＣＰＵ９０１が使用するプログラムや演算パラメータ等を記憶する。ＲＡＭ９０３は、ＣＰＵ９０１の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を一時記憶する。これらはＣＰＵバス等から構成されるホストバス９０４により相互に接続されている。
【００７３】
ホストバス９０４は、ブリッジ９０５を介して、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ／Ｉｎｔｅｒｆａｃｅ）バス等の外部バス９０６に接続されている。なお、必ずしもホストバス９０４、ブリッジ９０５および外部バス９０６を分離構成する必要はなく、１つのバスにこれらの機能を実装してもよい。
【００７４】
入力装置９０８は、マウス、キーボード、タッチパネル、ボタン、マイクロフォン、スイッチおよびレバー等ユーザが情報を入力するための入力手段と、ユーザによる入力に基づいて入力信号を生成し、ＣＰＵ９０１に出力する入力制御回路等から構成されている。情報処理装置９００を操作するユーザは、この入力装置９０８を操作することにより、情報処理装置９００に対して各種のデータを入力したり処理動作を指示したりすることができる。
【００７５】
出力装置９０９は、例えば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）ディスプレイ装置、液晶ディスプレイ（ＬＣＤ）装置、ＯＬＥＤ（Ｏｒｇａｎｉｃ  Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）装置、ランプ等の表示装置およびスピーカ等の音声出力装置を含む。
【００７６】
ストレージ装置９１０は、データ格納用の装置である。ストレージ装置９１０は、記憶媒体、記憶媒体にデータを記録する記録装置、記憶媒体からデータを読み出す読出し装置および記憶媒体に記録されたデータを削除する削除装置等を含んでもよい。ストレージ装置９１０は、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）で構成される。このストレージ装置９１０は、ハードディスクを駆動し、ＣＰＵ９０１が実行するプログラムや各種データを格納する。
【００７７】
通信装置９１１は、例えば、ネットワークに接続するための通信デバイス等で構成された通信インタフェースである。また、通信装置９１１は、無線通信または有線通信のどちらに対応してもよい。
【００７８】
以上、本発明の実施形態に係るニューラルネットワーク軽量化装置１０のハードウェア構成例について説明した。
【００７９】
（３．まとめ）
以上に説明したように、本発明の実施形態によれば、複数段の処理層それぞれが複数のチャネルによって接続されたニューラルネットワークの所定の処理層における少なくとも第１のチャネル数のチャネルそれぞれからの入力特徴量とパラメータとに基づいて、前記第１のチャネル数のチャネルそれぞれに対応する出力特徴量を算出するアテンション層と、前記入力特徴量に前記出力特徴量を乗算して得られた演算結果を、前記所定の処理層の次段の処理層に出力する演算部と、を有する、アテンションモジュールを備える、ニューラルネットワーク軽量化装置が提供される。
【００８０】
ここで、ニューラルネットワーク軽量化装置は、前記ニューラルネットワークに接続され、少なくとも前記所定の処理層及び次段の処理層の学習処理を停止させた状態で、誤差逆伝播法によって前記パラメータの学習処理を行う第１の学習器と、前記学習処理が行われた後に前記アテンション層によって算出された前記出力特徴量と所定の閾値とが所定の関係を満たすチャネルを冗長チャネルとして選択するチャネル選択部と、前記所定の処理層から前記冗長チャネルを削除することによって前記第１のチャネル数のチャネルを第２のチャネル数のチャネルに変更する削除部と、前記ニューラルネットワークに接続され、前記冗長チャネルが削除された後に前記ニューラルネットワークの学習処理を行う第２の学習器と、を備える。
【００８１】
かかる構成によれば、各層の圧縮率をあらかじめ決定せずとも自動的にニューラルネットワークを効率良く軽量化するための情報を得ることが可能となる。
【００８２】
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【００８３】
例えば、上記では、処理層全体に対してアテンション層を接続させる場合を主に説明した。しかし、処理層の一部に対してアテンション層が接続されてもよい。例えば、処理層の各次元が、Ｃ（フィルタ数）、Ｄ（＝チャネル数）、Ｈ（＝縦サイズ）、Ｗ（＝横サイズ）として示される場合、アテンション層は、Ｄ（＝チャネル数）に対して接続されてもよい。あるいは、アテンション層は、Ｈ（＝縦サイズ）およびＷ（＝横サイズ）に対して接続されてもよい。
【００８４】
また、上記したアテンションモジュールと、第１の学習器と、チャネル選択部と、第１の学習器による学習処理が行われた後にアテンション層によって算出された出力特徴量に応じた出力を行う出力部と、を備える、情報処理装置も提供され得る。かかる出力部は、アテンション層によって算出された出力特徴量をそのままチャネルごとに出力してもよいし、アテンション層によって算出された出力特徴量のチャネル間の大小に関する情報を出力してもよい。かかる出力部によれば、各層の圧縮率をあらかじめ決定せずとも自動的にニューラルネットワークを効率良く軽量化するための情報（チャネルごとの重要度）を得ることが可能となる。
【符号の説明】
【００８５】
１０    ニューラルネットワーク軽量化装置
１１    アテンション層
１１０  畳み込み層
１１２  活性化関数
１１４  畳み込み層
１１６  Ｓｏｆｔｍａｘ関数
１１８  乗算部
１２    演算部
１３    アテンションモジュール
１４    チャネル選択部
１５    削除部
１６    第１の学習器
１７    学習調整部
１８    第２の学習器
２０    ニューラルネットワーク
２１    処理層
【図１】
2019212206.tif 000003
【図２】
2019212206.tif 000004
【図３】
2019212206.tif 000005
【図４】
2019212206.tif 000006
【図５】
2019212206.tif 000007
【図６】
2019212206.tif 000008
【図７】
2019212206.tif 000009
【図８】
2019212206.tif 000010
【図９】
2019212206.tif 000011
【図１０】
2019212206.tif 000012
【図１１】
2019212206.tif 000013
【図１２】
2019212206.tif 000014
【図１３】
2019212206.tif 000015
【図１４】
2019212206.tif 000016
【図１５】
2019212206.tif 000017