(57)【要約】  ニューラルネットワークのランク最適化装置は、ニューラルネットワークが有する畳み込みフィルタを低ランク近似のためにテンソル分解するテンソル分解処理を実行するテンソル分解手段１と、テンソル分解手段１で使用されるランクを最適化するランク最適化手段２Ａとを含み、ランク最適化手段は、低ランク近似の程度を表す評価量を計算する評価量計算手段３と、あらかじめ定められたしきい値未満の評価量に対応するランクを所望のランクとするランク決定手段４とを含む。
2019146189.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットワークが有する畳み込みフィルタを低ランク近似のためにテンソル分解するテンソル分解処理を実行するテンソル分解手段と、
前記テンソル分解手段で使用されるランクを最適化するランク最適化手段とを備え、
前記ランク最適化手段は、
前記低ランク近似の程度を表す評価量を計算する評価量計算手段と、
あらかじめ定められたしきい値未満の前記評価量に対応するランクを所望のランクとするランク決定手段とを含む
ニューラルネットワークのランク最適化装置。
【請求項２】
前記ランク最適化手段は、ランクを更新するランク更新処理を実行するランク更新手段を含み、
前記テンソル分解手段は、前記ランク更新手段が出力するランクに基づいてテンソル分解処理を実行し、
前記ランク決定手段は、前記評価量計算手段が計算した評価量と前記しきい値とを比較する機能を有し、
前記評価量が前記しきい値を下回ると前記ランク決定手段が判定するまで、前記ランク更新処理と前記テンソル分解処理とを繰り返す
請求項１記載のニューラルネットワークのランク最適化装置。
【請求項３】
前記ランク更新手段は、ランクの初期値として１を出力し、更新の度にランクの値を１ずつ増やす
請求項２記載のニューラルネットワークのランク最適化装置。
【請求項４】
前記ランク決定手段が用いる評価量は、テンソル分解前の畳み込みフィルタのテンソルのノルムで正規化された再構築誤差である
請求項１から請求項３のうちのいずれか１項に記載のニューラルネットワークのランク最適化装置。
【請求項５】
前記ランク決定手段は、
畳み込み演算の演算量を計算する演算量計算手段と、
前記しきい値未満の評価量に対応するランクの中から、最小の演算量に対応するランクを検索するランク検索手段とを含む
請求項１から請求項４のうちのいずれか１項に記載のニューラルネットワークのランク最適化装置。
【請求項６】
前記テンソル分解手段は、ニューラルネットワークにおける全結合層における行列重みを入力する
請求項１から請求項５のうちのいずれか１項に記載のニューラルネットワークのランク最適化装置。
【請求項７】
ニューラルネットワークが有する畳み込みフィルタを低ランク近似のためにテンソル分解するテンソル分解処理を実行し、
前記テンソル分解処理で使用されるランクを最適化するランク最適化処理を実行し、
前記ランク最適化処理で、
前記低ランク近似の程度を表す評価量を計算し、
あらかじめ定められたしきい値未満の前記評価量に対応するランクを所望のランクとする
ニューラルネットワークのランク最適化方法。
【請求項８】
ランクを更新するランク更新処理を実行し、
前記ランク更新処理で更新されたランクに基づいて前記テンソル分解処理を実行し、
算出された評価量と前記しきい値とを比較し、
前記評価量が前記しきい値を下回るまで、前記ランク更新処理と前記テンソル分解処理とを繰り返す
請求項７記載のニューラルネットワークのランク最適化方法。
【請求項９】
しきい値との比較対象の評価量は、テンソル分解前の畳み込みフィルタのテンソルのノルムで正規化された再構築誤差である
請求項７または請求項８記載のニューラルネットワークのランク最適化方法。
【請求項１０】
コンピュータに、
ニューラルネットワークが有する畳み込みフィルタを低ランク近似のためにテンソル分解するテンソル分解処理と、
前記テンソル分解処理で使用されるランクを最適化するランク最適化処理とを実行させ、
前記ランク最適化処理で、
前記低ランク近似の程度を表す評価量を計算する処理と、
あらかじめ定められたしきい値未満の前記評価量に対応するランクを所望のランクとする処理と
を実行させるためのニューラルネットワークのランク最適化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多層ニューラルネットワークの処理を高速化するためのランク最適化装置および最適化方法に関する。
【背景技術】
【０００２】
深層学習が、画像認識を始めとする種々の情報処理分野で活用されている。深層学習では、多層ニューラルネットワークが使用される。ニューラルネットワークは、人間の脳内にある神経細胞（ニューロン）の繋がりである神経回路網を模した数学モデルである。多層ニューラルネットワークは、入力層、出力層、および１層以上の隠れ層で構成される。多層ニューラルネットワークは、高い情報処理精度を呈する。【０００３】
畳み込みニューラルネットワークは、隠れ層として、畳み込み層を有する。畳み込み層は、入力データに対してフィルタ（畳み込みフィルタ）を適用することによって、特徴マップを得る。なお、多くの畳み込みニューラルネットワークは、畳み込み層に加えてプーリング層を有する。プーリング層は、畳込み層から出力された特徴マップのうちのある領域の代表値を抽出する。【０００４】
図１２は、畳み込みニューラルネットワークの一例であるＶＧＧ−１６の構造を示す説明図である。ＶＧＧ−１６は、１３層の畳み込み層および３層の全結合層を含む。畳み込み層で、または畳み込み層とプーリング層とで抽出された特徴は、全結合層で分類される。なお、図１２において、畳み込み層の欄外の数は、畳み込みフィルタの数を示す。【０００５】
畳み込みニューラルネットワークの処理時間の大半は、畳み込み演算の計算時間である。すなわち、多層畳み込みニューラルネットワークは、精度が高い処理を行えるが、処理演算量が多いので、処理速度が遅い。そのために、畳み込み演算の計算時間を短縮するための多数の手法（処理を高速化する手法）が提案されている。処理を高速化する手法の一つに、畳み込みフィルタのテンソルを低ランク近似する方法がある。低ランク近似は、テンソルを、より低いランクのテンソルの積に分解して、元のテンソルを近似する方法である。低ランク近似には幾つかの手法がある。【０００６】
低ランク近似として、例えば、タッカー分解が用いられる。畳み込みニューラルネットワークにおける畳み込みフィルタは、一般に４階のテンソルで表現される。４階のテンソルｗｉｊｋｌに対する１次のタッカー分解は、例えば、（１）式のように表現される。【０００７】
【数１】
2019146189.tif 000003
【０００８】
（１）式において、Ｒは近似ランクである。以下、近似ランクをランクと呼ぶ。（１）式において、ｗｉｊｋｌにおけるｉ，ｊ，ｋ，ｌは、テンソルの成分を特定するための添字であり、添字の数はテンソルの階数である。ｗ１ｉｊｋｒは４階のテンソルである。ｗ２ｒｌは２階のテンソルである。【０００９】
近似を評価するために、例えば、（２）式に示されるような再構築誤差Ｅｒｅｃが用いられる。【００１０】
【数２】
2019146189.tif 000004
【００１１】
（２）式において、||・||F は、テンソルのフロベニウスノルムを表す。Ｗは、テンソル分解（例えば、タッカー分解）される前のテンソルを示す。波線記号付きのＷは、テンソル分解後のテンソルを示す。【００１２】
畳み込みフィルタに対する低ランク近似を用いる場合、ランクを小さくすると、演算量が減少して処理を高速化することができる。しかし、ランクを小さくしすぎると、元の畳み込みフィルタを再現できなくなって近似誤差が増加する。また、ランクを小さくしすぎると、元の畳み込み処理を精度よく再現できなくなる。したがって、処理の精度を保ったまま処理を高速化するために、適切なランクを選択することが要請される。【００１３】
非特許文献１に、低ランク近似を多層畳み込みニューラルネットワークに適用する方法が開示されている。具体的には、テンソル分解の形式と再構築誤差に基づくテンソル分解方法とが提案されている。非特許文献１では、手法の検証として、４層の畳み込み層を含むニューラルネットワークに対して、２層の畳み込み層に関して低ランク近似を行った実験の結果が示されている。その実験で、処理の精度を保ったままで処理が高速化されることが示されている。
【先行技術文献】
【非特許文献】
【００１４】
【非特許文献１】M. Jaderberg et al., "Speeding up convolutional neural networks with low rank expansions", British Machine Vision Conference, 2014
【発明の概要】
【発明が解決しようとする課題】
【００１５】
上述したように、畳み込みニューラルネットワークの処理を高速化するために、低ランク近似（タッカー分解等のテンソル分解）は有用である。そして、テンソル分解が実行されるときに、ランクは重要な要素である。【００１６】
しかし、畳み込みフィルタのような高階のテンソルが用いられる場合、ランクと近似誤差との関係は定かではない。換言すれば、近似誤差を許容範囲に押さえつつ演算量を減らせるようなランク（最適ランク）の決定方法が望まれている。【００１７】
また、図１２に例示されたような、畳み込み層の数が１０層を越える多層畳み込みニューラルネットワークが使用されることも多い。多層畳み込みニューラルネットワークでは、高い高速化率を達成するために、同時に、全ての畳み込み層を対象として低ランク近似がなされることが望ましい。その理由は、以下の通りである。【００１８】
複数の畳み込み層は、それぞれ、入力データに対して連続して処理を行う。また、各層の畳み込みフィルタ間に、出力データの相関が存在する。同様に、低ランク近似における再構築誤差にも、各層間で相関が存在する。よって、多層畳み込みニューラルネットワークにおいて低ランク近似が実施される場合に、各層の近似ランクは同時に最適化されることが望ましい。【００１９】
しかし、最適化の検索空間（各層のランクの組み合わせ数）は、近似ランクの対象の畳み込み層の数に対して指数関数的に増加する。その結果、１０層を越えるような多層畳み込みニューラルネットワークに対して、全ての畳み込み層を対象として一時に低ランク近似を適用するために長時間を要するという課題がある。【００２０】
本発明は、多層ニューラルネットワークに対して、短時間で、全ての畳み込み層に対する最適なランクを得ることができるランク最適化装置および最適化方法を提供することを目的とする。
【課題を解決するための手段】
【００２１】
本発明によるニューラルネットワークのランク最適化装置は、ニューラルネットワークが有する畳み込みフィルタを低ランク近似のためにテンソル分解するテンソル分解処理を実行するテンソル分解手段と、テンソル分解手段で使用されるランクを最適化するランク最適化手段とを含み、ランク最適化手段は、低ランク近似の程度を表す評価量を計算する評価量計算手段と、あらかじめ定められたしきい値未満の評価量に対応するランクを所望のランクとするランク決定手段とを含むことを特徴とする。【００２２】
本発明によるニューラルネットワークのランク最適化方法は、ニューラルネットワークが有する畳み込みフィルタを低ランク近似のためにテンソル分解するテンソル分解処理を実行し、テンソル分解処理で使用されるランクを最適化するランク最適化処理を実行し、ランク最適化処理で、低ランク近似の程度を表す評価量を計算し、あらかじめ定められたしきい値未満の評価量に対応するランクを所望のランクとすることを特徴とする。【００２３】
本発明によるニューラルネットワークのランク最適化プログラムは、コンピュータに、ニューラルネットワークが有する畳み込みフィルタを低ランク近似のためにテンソル分解するテンソル分解処理と、テンソル分解処理で使用されるランクを最適化するランク最適化処理とを実行させ、ランク最適化処理で、低ランク近似の程度を表す評価量を計算する処理と、あらかじめ定められたしきい値未満の評価量に対応するランクを所望のランクとする処理とを実行させることを特徴とする。
【発明の効果】
【００２４】
本発明によれば、短時間で、多層ニューラルネットワークにおける全ての畳み込み層に対する最適なランクを得ることができる。
【図面の簡単な説明】
【００２５】
【図１】ニューラルネットワークのランク最適化装置の第１の実施形態の構成例を示すブロック図である。
【図２】第１の実施形態におけるランク最適化手段の構成例を示すブロック図である。
【図３】第１の実施形態のランク最適化装置の動作を示すフローチャートである。
【図４】ニューラルネットワークのランク最適化装置の第２の実施形態の構成例を示すブロック図である。
【図５】第２の実施形態におけるランク最適化手段の構成例を示すブロック図である。
【図６】第２の実施形態のランク最適化装置の動作を示すフローチャートである。
【図７】ランク最適化装置の実施例の動作を示すフローチャートである。
【図８】ＣＰＵを有するコンピュータの一例を示すブロック図である。
【図９】ランク最適化装置の主要部を示すブロック図である。
【図１０】他の態様のランク最適化装置の主要部を示すブロック図である。
【図１１】さらに他の態様のランク最適化装置の主要部を示すブロック図である。
【図１２】畳み込みニューラルネットワークの一例の構造を示す説明図である。
【発明を実施するための形態】
【００２６】
以下、本発明の実施形態を図面を参照して説明する。
【００２７】
実施形態１．
図１は、ニューラルネットワークのランク最適化装置の第１の実施形態の構成例を示すブロック図である。第１の実施形態のランク最適化装置１０は、入力手段１１、テンソル分解手段１２、ランク最適化手段１３、および出力手段１４を含む。
【００２８】
入力手段１１は、ニューラルネットワークの畳み込みフィルタ（具体的には、畳み込みフィルタを表すデータ）を入力する。
【００２９】
テンソル分解手段１２は、入力手段１１から畳み込みフィルタを入力する。また、テンソル分解手段１２は、ランク最適化手段１３からランクを入力し、入力したランクに基づいて、畳み込みフィルタに対してテンソル分解の処理を施す。
【００３０】
図２は、ランク最適化手段１３の構成例を示すブロック図である。図２に示されるランク最適化手段１３は、再構築誤差計算手段１３１、しきい値記憶部１３２、再構築誤差比較手段１３３、およびランク更新手段１３４を含む。
【００３１】
再構築誤差計算手段１３１は、テンソル分解手段１２からテンソル分解前後の畳み込みフィルタを入力し、再構築誤差率を計算する。
【００３２】
再構築誤差計算手段１３１は、テンソル分解前後の畳み込みフィルタの差の大きさを定量評価するためのテンソルのノルム（大きさ）を計算する。再構築誤差計算手段１３１は、例えば、テンソルのノルムとしてフロベニウスノルムを用いる。しかし、再構築誤差計算手段１３１は、フロベニウスノルム以外のノルムを用いてもよい。
【００３３】
しきい値記憶部１３２は、再構築誤差に関するしきい値を記憶する。再構築誤差比較手段１３３は、しきい値記憶部１３２からしきい値を読み出す。しきい値記憶部１３２に記憶されるしきい値は、あらかじめ、ユーザによって登録される。なお、しきい値の大きさは、例えば、数値計算の誤差程度の微少量である。
【００３４】
再構築誤差比較手段１３３は、再構築誤差計算手段１３１から再構築誤差を入力する。また、再構築誤差比較手段１３３は、しきい値記憶部１３２からしきい値を入力する。再構築誤差比較手段１３３は、再構築誤差としきい値とを比較する。
【００３５】
ランク更新手段１３４は、ランクの集合（畳み込みフィルタの次元数以下の正の整数の集合）からランクを選択し、選択したランクをテンソル分解手段１２に出力する。ランク更新手段１３４は、例えば、初期値としてランク１を出力する。その後、ランク更新手段１３４は、ランクの出力タイミングにおいて、直前に出力したランクに１を加算した値を、更新されたランクとして出力する。なお、ランク更新手段１３４は、値が１ずつ増えるランクを順に出力してもよいが、ニュートン法や二分法などの最適化方法で、出力するランクを決定してもよい。
【００３６】
図２に例示されたような構成のランク最適化手段１３は、ランクとしきい値との比較と、ランクの更新とを繰り返し実行することによって、系統的にランクを検索することができる。その結果、ランク最適化手段１３は、最適なランクを出力することができる。
【００３７】
出力手段１４は、テンソル分解した畳み込みフィルタ（具体的には、畳み込みフィルタを表すデータ）を出力する。
【００３８】
次に、ランク最適化装置１０の動作を説明する。図３は、第１の実施形態のランク最適化装置１０の動作を示すフローチャートである。
【００３９】
なお、図３には、１つの畳み込みフィルタについての処理が示されているが、実際には、ランク最適化装置１０には、全ての層における全ての畳み込みフィルタが入力される。そして、ランク最適化手段１３は、全ての畳み込みフィルタに対して、図３に例示された最適化方法を実行する。
【００４０】
ランク最適化装置１０は、入力手段１１に１つの畳み込みフィルタが入力される度にステップＳ１２〜Ｓ１６の処理を実行してもよいが、入力手段１１に全ての畳み込みフィルタが入力されると、各々の畳み込みフィルタについてステップＳ１２〜Ｓ１６の処理を実行してもよい。その場合には、入力手段１１は、入力された畳み込みフィルタを一時記憶する。
【００４１】
入力手段１１に、ニューラルネットワークの畳み込みフィルタが入力されると（ステップＳ１１）、テンソル分解手段１２は、ランク更新手段１３４からランクの初期値を入力する（ステップＳ１２）。
【００４２】
テンソル分解手段１２は、その時点の処理対象のランクに基づいて、畳み込みフィルタに対してテンソル分解処理を施す（ステップＳ１３）。そして、テンソル分解手段１２は、分解前後の畳み込みフィルタを再構築誤差計算手段１３１に出力する。
【００４３】
再構築誤差計算手段１３１は、テンソル分解手段１２から入力した分解前後の畳み込みフィルタに基づいて再構築誤差の計算を行う（ステップＳ１４）。そして、再構築誤差計算手段１３１は、算出した再構築誤差を再構築誤差比較手段１３３に出力する。
【００４４】
再構築誤差比較手段１３３は、再構築誤差手段１３１から入力された再構築誤差としきい値記憶部１３２から読み出したしきい値との大小関係を比較する。具体的には、再構築誤差比較手段１３３は、再構築誤差がしきい値を下回っているかどうかを判定する（ステップＳ１５）。
【００４５】
再構築誤差がしきい値を下回っている場合には、再構築誤差比較手段１３３は、分解後の畳み込みフィルタを出力手段１４に出力する（ステップＳ１６）。
【００４６】
なお、ステップＳ１６の処理で出力される分解後の畳み込みフィルタには、ステップＳ１５の判定処理（比較処理）で判定の対象とされたランクが反映されている。したがって、再構築誤差比較手段１３３は、実質的に、決定した最適ランクを出力するといえる。
【００４７】
再構築誤差がしきい値以上である場合には、ランク更新手段１３４は、ランクの更新を行う（ステップＳ１７）。そして、ランク更新手段１３４は、更新されたランクをテンソル分解手段１２に出力する。その後、再び、ステップＳ１３以降の処理が実行される。
【００４８】
本実施形態のランク最適化装置１０において、ランク最適化手段１３が判定（ステップＳ１５参照）と更新（ステップＳ１７参照）とを繰り返すことによって、再構築誤差が無視できるようなランクを、自動的に、かつ、各層独立に決定するように構築されているので、畳み込み層の層数が多くても低コスト（短時間）でランクを最適化することができる。
【００４９】
実施形態２．
図４は、ニューラルネットワークのランク最適化装置の第２の実施形態の構成例を示すブロック図である。第２の実施形態のランク最適化装置２０は、入力手段１１、テンソル分解手段１２、ランク最適化手段２３、および出力手段１４を含む。
【００５０】
入力手段１１、テンソル分解手段１２、および出力手段１４は、第１の実施形態におけるそれらと同じ手段である。
【００５１】
図５は、ランク最適化手段２３の構成例を示すブロック図である。図５に示されるランク最適化手段２３は、再構築誤差計算手段１３１、しきい値記憶部２３２、再構築誤差正規化手段２３１、再構築誤差比較手段１３３、およびランク更新手段１３４を含む。
【００５２】
再構築誤差正規化手段２３１は、再構築誤差計算手段１３１から再構築誤差を入力し、再構築誤差の上限が各層で一定になるように正規化処理を行う。
【００５３】
具体的には、再構築誤差正規化手段２３１は、分解前の畳み込みフィルタのテンソルのノルムを正規化変数として計算し、再構築誤差を正規化変数で除算する。テンソルのノルムの形式は、例えば、再構築誤差計算手段１３１が用いた形式と同一である。正規化処理によって、任意の畳み込み層において、再構築誤差の上限が１（ランク０のときの再構築誤差の値）になる。
【００５４】
しきい値記憶部２３２は、再構築誤差に関するしきい値を記憶する。再構築誤差比較手段１３３は、しきい値記憶部２３２からしきい値を読み出す。しきい値記憶部２３２に記憶されるしきい値は、あらかじめ、ユーザによって登録される。なお、本実施形態では、しきい値記憶部２３２は、０以上１以下の実数であるしきい値を記憶する。
【００５５】
再構築誤差計算手段１３１、再構築誤差比較手段１３３、およびランク更新手段１３４は、第１の実施形態におけるそれらと同じ手段である。ただし、ランク更新手段１３４は、第１の実施形態の場合とは異なり、正規化された再構築誤差を入力する。
【００５６】
次に、ランク最適化装置２０の動作を説明する。図６は、第２の実施形態のランク最適化装置２０の動作を示すフローチャートである。
【００５７】
なお、図６には、１つの畳み込みフィルタについての処理が示されているが、実際には、ランク最適化装置２０には、全ての層における全ての畳み込みフィルタが入力される。そして、ランク最適化手段２３は、全ての畳み込みフィルタに対して、図６に例示された最適化方法を実行する。
【００５８】
ステップＳ１１〜Ｓ１４の処理は、第１の実施形態における処理と同じである。ただし、再構築誤差計算手段１３１は、算出した再構築誤差を再構築誤差正規化手段２３１に出力する。
【００５９】
再構築誤差正規化手段２３１は、再構築誤差計算手段１３１から入力された再構築誤差を正規化する（ステップＳ２１）。再構築誤差正規化手段２３１は、正規化された再構築誤差を再構築誤差比較手段２３４に出力する。
【００６０】
再構築誤差比較手段１３３は、再構築誤差正規化手段２３１から入力された正規化された再構築誤差としきい値記憶部１３２から読み出したしきい値との大小関係を比較する。具体的には、再構築誤差比較手段１３３は、再構築誤差がしきい値を下回っているかどうかを判定する（ステップＳ１５）。
【００６１】
第１の実施形態の場合と同様に、再構築誤差がしきい値を下回っている場合には、再構築誤差比較手段１３３は、分解後の畳み込みフィルタを出力手段１４に出力する（ステップＳ１６）。
【００６２】
再構築誤差がしきい値以上である場合には、ランク更新手段１３４は、ランクの更新を行う（ステップＳ１７）。そして、ランク更新手段１３４は、更新されたランクをテンソル分解手段１２に出力する。その後、再び、ステップＳ１３以降の処理が実行される。
【００６３】
上述したように、再構築誤差を許容範囲に押さえつつ畳み込み演算の演算量を減らせるようなランクを決定することが望ましい。畳み込み層における低ランク近似において、畳み込み演算の処理速度と再構築誤差とはトレードオフの関係にある。処理速度を優先して多少の再構築誤差を許容する場合、許容量に対応する再構築誤差のしきい値の設定は重要である。特に、多層畳み込みニューラルネットワークの場合、各層の再構築誤差は互いに相関しているので、各層について適切なしきい値を設定することは容易ではない。つまり、各層について適切なしきい値を設定するのに長時間を要する。
【００６４】
しかし、本実施形態では、ランク最適化手段２３における再構築誤差正規化手段２３１によって、畳み込みフィルタの値やフィルタサイズ（畳み込みフィルタをテンソルとみなしたときの次元に対応する。）に依らない近似誤差の指標を得ることができる。その結果、多数の畳み込み層を持つニューラルネットワークに対して、単一のしきい値の調整を行うだけで、各層のランクを最適化することできる。畳み込み層の層数が多くても低コスト（短時間）でランクを最適化することができる。
【００６５】
さらに、再構築誤差正規化手段２３１によって、低ランク近似の精度が悪い場合（完全に元の情報が失われた状態である分解後の畳み込みフィルタである場合）でも、テンソル分解の形式に関わらず、また、ランクの大きさに関わらず再構築誤差の上限が１になるので、全ての畳み込み層に対して同じしきい値で近似の程度を評価することができる。よって、検索すべきパラメータがしきい値のみに限定される。したがって、畳み込み層の層数が多くても低コスト（短時間）でランクを最適化することができる。
【００６６】
なお、第１の実施形態および第２の実施形態では、ランク最適化の判定基準として再構築誤差のみが用いられた。しかし、処理演算量による判定基準が併用されてもよい。各畳み込み層の低ランク近似後の処理演算量は、畳み込み演算の定義により、低ランク近似のランクに依存する形で一意的に算出可能である。したがって、ランク最適化手段１３，２３は、例えば、再構築誤差としきい値との比較による判定基準を満たすランクを蓄積し、その中から処理演算量が最小になるランクを最適なランクとして出力してもよい。
【００６７】
その場合には、再構築誤差比較手段１３３は、ステップＳ１５の判定でしきい値を下回る（しきい値未満である）と判定された再構築誤差に対応するランクを一時記憶する。そして、ステップＳ１５の判定結果が「Ｙｅｓ」でも、ステップＳ１７に移行する。そして、更新されたランクの値が所定値に達したときに、再構築誤差比較手段１３３は、一時記憶されているランクの中から、処理演算量を最小にするランクを検索する。そして、見つかった処理演算量を最小にするランクを最適ランクとして出力する。なお、ランクを出力するのではなく、ランクに対応する低ランク近似された畳み込みフィルタを出力してもよい。
【００６８】
演算量による判定基準が併用される場合には、多層畳み込みニューラルネットワークにおける各層の演算量が最小化されるので、ニューラルネットワークの処理速度をより高速化することができるという効果も得られる。
【００６９】
また、上記の各実施形態は、多層畳み込みニューラルネットワークの畳み込み層を対象にしたが、上記の各実施形態のランク最適化方法は、畳み込み層以外のテンソルを演算に用いる層にも適用可能である。例えば、行列ベクトル積の演算を実行する全結合層を対象にする場合、行列重みに対して低ランク近似が行われるようにし、かつ、上記の各実施形態のランク最適化方法を適用すればよい。この場合、テンソル分解手段１２は、ニューラルネットワークにおける全結合層における行列重みを入力する。
【実施例】
【００７０】
以下、ランク最適化装置およびランク最適化方法の具体例を、図４、図５および図７を参照して説明する。【００７１】
図７は、ランク最適化方法の具体例を示すフローチャートである。なお、図７に示す処理は、第２の実施形態のランク最適化方法に対応する。【００７２】
本実施例では、テンソル分解として（１）式で定義される１次のタッカー分解を例にする。【００７３】
入力手段１１には、多層畳み込みニューラルネットワークにおける各々の畳み込みフィルタＷが入力される（ステップＳ１０１）。テンソル分解手段１２は、ランク更新手段１３４から、低ランク近似のランクＲの初期値を入力する（ステップＳ１０２）。【００７４】
テンソル分解手段１２は、入力されたランクＲに基づいて、畳み込みフィルタに対して、反復法などの数値アルゴリズムを用いてテンソル分解処理を行う（ステップＳ１０３）。なお、テンソル分解手段１２は、反復法以外の方法でテンソル分解を行ってもよい。そして、テンソル分解手段１２は、分解前後の畳み込みフィルタを再構築誤差計算手段１３１に出力する。【００７５】
再構築誤差計算手段１３１は、テンソル分解手段１２から入力した分解前後の畳み込みフィルタに基づいて再構築誤差の計算を行う（ステップＳ１０４）。【００７６】
再構築誤差は、テンソルの大きさを量的に表すことができるテンソルのノルムによって定義される。具体的には、再構築誤差は、分解前後の畳み込みフィルタの差に対するテンソルのノルムによって定義される。本実施例では、テンソルのノルムとして、（３）式で定義されるフロベニウスノルムが使用される。なお、フロベニウスノルムは例示であって、他のノルムが使用されてもよい。【００７７】
【数３】
2019146189.tif 000005
【００７８】
そして、再構築誤差計算手段１３１は、算出した再構築誤差を再構築誤差正規化手段２３１に出力する。【００７９】
再構築誤差正規化手段２３１は、再構築誤差計算手段１３１から再構築誤差を入力すると、再構築誤差に対して正規化処理を行う（ステップＳ１２１）。そして、再構築誤差正規化手段２３１は、正規化された再構築誤差を再構築誤差比較手段１３３に出力する。【００８０】
正規化された再構築誤差（＾付きのＥｒｅｃ）は、テンソル分解前の畳み込みフィルタのテンソルのノルムＮ（Ｗ）を正規化変数として、（４）式を用いて算出される。【００８１】
【数４】
2019146189.tif 000006
【００８２】
テンソルのノルムＮ（Ｗ）の形式は、再構築誤差計算手段１３１が用いた形式と同一である。再構築誤差計算手段１３１はフロベニウスノルムを使用するので、テンソルのノルムＮ（Ｗ）は、（５）式のように表される。【００８３】
【数５】
2019146189.tif 000007
【００８４】
再構築誤差比較手段１３３は、再構築誤差正規化手段２３１から入力された正規化された再構築誤差がしきい値記憶部２３２から読み出したしきい値を下回っているかどうかを判定する（ステップＳ１０５）。【００８５】
正規化された再構築誤差がしきい値を下回っている場合には、再構築誤差比較手段１３３は、分解後の畳み込みフィルタを出力手段１４に出力する（ステップＳ１０６）。すなわち、再構築誤差比較手段１３３から、しきい値を下回った再構築誤差に対応するランクにおけるテンソル分解された畳み込みフィルタが出力される。【００８６】
再構築誤差がしきい値以上である場合には、ランク更新手段１３４は、次の試行（ステップＳ１０３，Ｓ１０４，Ｓ１２１，Ｓ１０５の処理）のためにランクの更新を行う（ステップＳ１０７）。そして、ランク更新手段１３４は、更新されたランクをテンソル分解手段１２に出力する。その後、再び、ステップＳ１０３以降の処理が実行される。【００８７】
なお、ランク更新手段１３４は、ステップＳ１０７で実行されるランク更新処理において、反復法に基づく方法を使用する。すなわち、ランク更新手段１３４は、ランク１を初期値として、その後、ランクを、更新の度に１ずつ加算された値に更新する。しかし、ランク更新手段１３４は、しきい値を満たすランクを漏れなく検索できる方法であれば、どのような方法を用いてもよい。例えば、ニュートン法などの他の反復法や二分法を使用してもよい。【００８８】
また、本実施例では、テンソル分解として、１次のタッカー分解が用いられる。しかし、テンソル分解として、他の形式の分解が用いられてもよい。例えば、２次のタッカー分解が用いられる場合には、テンソル分解後の畳み込みフィルタを（６）式のように表現すればよい。ＣＰ（Canonical Polyadic ）分解が用いられる場合には、テンソル分解後の畳み込みフィルタを（７）式のように表現すればよい。【００８９】
【数６】
2019146189.tif 000008
【００９０】
【数７】
2019146189.tif 000009
【００９１】
なお、２次のタッカー分解では、最適されるランクは、Ｒ３，Ｒ４である。ＣＰ分解では、最適されるランクは、Ｒである。【００９２】
上記の各実施形態における各構成要素は、１つのハードウェアで構成可能であるが、１つのソフトウェアでも構成可能である。また、各構成要素は、複数のハードウェアでも構成可能であり、複数のソフトウェアでも構成可能である。また、各構成要素のうちの一部をハードウェアで構成し、他部をソフトウェアで構成することもできる。【００９３】
上記の各実施形態における各機能（各処理）を、ＣＰＵ（Central Processing Unit ）等のプロセッサやメモリ等を有するコンピュータで実現可能である。例えば、記憶装置（記憶媒体）に上記の実施形態における方法（処理）を実施するためのプログラムを格納し、各機能を、記憶装置に格納されたプログラムをＣＰＵで実行することによって実現してもよい。【００９４】
図８は、ＣＰＵを有するコンピュータの一例を示すブロック図である。コンピュータは、ランク最適化装置に実装される。なお、コンピュータは、一例として、パーソナルコンピュータである。なお、ＣＰＵに代えてＧＰＵ（Graphics Processing Unit）が実装されてもよいし、ＣＰＵとＧＰＵとがともに実装されてもよい。【００９５】
ＣＰＵ１０００は、記憶装置１００１に格納されたプログラムに従って処理を実行することによって、上記の実施形態における各機能を実現する。すなわち、ＣＰＵ１０００は、図１および図４に示された、ランク最適化装置１０，２０におけるテンソル分解手段１２およびランク最適化手段１３，２３、ならびに、図２および図４に示された、再構築誤差計算手段１３１、再構築誤差比較手段１３３、ランク更新手段１３４および再構築誤差正規化手段２３１の機能を実現する。【００９６】
記憶装置１００１は、例えば、非一時的なコンピュータ可読媒体（non-transitory computer readable medium ）である。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium ）を含む。非一時的なコンピュータ可読媒体の具体例として、磁気記録媒体（例えば、フレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば、光磁気ディスク）、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory ）、ＣＤ−Ｒ（Compact Disc-Recordable ）、ＣＤ−Ｒ／Ｗ（Compact Disc-ReWritable ）、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM ）、フラッシュＲＯＭ）がある。【００９７】
記憶装置１００１は、しきい値記憶部１３２，２３２を実現する。【００９８】
また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium ）に格納されてもよい。一時的なコンピュータ可読媒体には、例えば、有線通信路または無線通信路を介して、すなわち、電気信号、光信号または電磁波を介して、プログラムが供給される。【００９９】
メモリ１００２は、例えばＲＡＭ（Random Access Memory）で実現され、ＣＰＵ１０００が処理を実行するときに一時的にデータを格納する記憶手段である。メモリ１００２に、記憶装置１００１または一時的なコンピュータ可読媒体が保持するプログラムが転送され、ＣＰＵ１０００がメモリ１００２内のプログラムに基づいて処理を実行するような形態も想定しうる。【０１００】
図９は、ランク最適化装置の主要部を示すブロック図である。図９に示すランク最適化装置は、ニューラルネットワークが有する畳み込みフィルタを低ランク近似のためにテンソル分解するテンソル分解処理を実行するテンソル分解手段１（実施形態におけるテンソル分解手段１２に相当）と、テンソル分解手段１で使用されるランクを最適化するランク最適化手段２Ａ（実施形態におけるランク最適化手段１３，２３に相当）とを含み、ランク最適化手段２Ａは、低ランク近似の程度を表す評価量（実施形態では、再構築誤差）を計算する評価量計算手段３（実施形態では、再構築誤差計算手段１３１で実現される。）と、あらかじめ定められたしきい値未満の評価量に対応するランクを所望のランクとするランク決定手段４（実施形態では、しきい値記憶部１３２，２３２および再構築誤差比較手段１３３で実現される。）とを含む。【０１０１】
図１０は、他の態様のランク最適化装置の主要部を示すブロック図である。図１０に示すランク最適化装置は、ランク最適化手段２Ｂが、ランクを更新するランク更新処理を実行するランク更新手段５（実施形態におけるランク更新手段１３４に相当）を含み、テンソル分解手段１が、ランク更新手段５が出力するランクに基づいてテンソル分解処理を実行し、ランク決定手段４が、評価量計算手段３が計算した評価量としきい値とを比較する機能を有し、評価量がしきい値を下回るとランク決定手段４が判定するまで、ランク更新処理とテンソル分解処理とを繰り返すように構成されている。【０１０２】
図１１は、さらに他の態様のランク最適化装置の主要部を示すブロック図である。図１１に示すランク最適化装置は、ランク最適化手段２Ｃにおいて、ランク決定手段４が、畳み込み演算の演算量を計算する演算量計算手段４１と、しきい値未満の評価量に対応するランクの中から、最小の演算量に対応するランクを検索するランク検索手段４２とを含むように構成されている。【０１０３】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記の実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。【０１０４】
この出願は、２０１８年１月２９日に出願された日本特許出願２０１８−０１２４４９を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１０５】
１        テンソル分解手段
２Ａ，２Ｂ，２Ｃ  ランク最適化手段
３        評価量計算手段
４        ランク決定手段
５        ランク更新手段
１０，２０  ランク最適化装置
１１      入力手段
１２      テンソル分解手段
１３，２３  ランク最適化手段
１４      出力手段
４１      演算量計算手段
４２      ランク検索手段
１３１    再構築誤差計算手段
１３２    しきい値記憶部
１３３    再構築誤差比較手段
１３４    ランク更新手段
２３１    再構築誤差正規化手段
１０００  ＣＰＵ
１００１  記憶装置
１００２  メモリ
【図１】
2019146189.tif 000010
【図２】
2019146189.tif 000011
【図３】
2019146189.tif 000012
【図４】
2019146189.tif 000013
【図５】
2019146189.tif 000014
【図６】
2019146189.tif 000015
【図７】
2019146189.tif 000016
【図８】
2019146189.tif 000017
【図９】
2019146189.tif 000018
【図１０】
2019146189.tif 000019
【図１１】
2019146189.tif 000020
【図１２】
2019146189.tif 000021
【国際調査報告】
2019146189.tif 000022
2019146189.tif 000023