(57)【要約】【課題】  ＣＮＮの高層の重みパラメータのようにスパースな重みに対しても既存手法より精度の高い近似ができるようにすること。【解決手段】  本発明は、ニューラルネットの重みパラメータを所定の大きさの複数の部分に分割して、個別にコードブックベクトルの重み付和による近似を行う。【選択図】  図２
2018055260.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットの重みパラメータを複数のグループに分割する分割手段と、
前記分割されたグループごとに、前記重みパラメータをコードブックにより近似して符合化する符合化手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記分割手段は、前記重みパラメータを所定の方法で整列した後に前記複数のグループに分割することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記重みパラメータは、２値あるいは３値の値を要素とすることを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
コードブックの重み係数および当該コードブックを構成するコードブックベクトルを記憶する記憶手段と、
前記記憶された前記重み係数と前記コードブックベクトルとを用いて、ニューラルネットの重みパラメータを再構成する再構成手段と、
を有することを特徴とする情報処理装置。
【請求項５】
前記重み係数は、前記コードブックによるニューラルネットの重みパラメータの近似精度の損失項と前記重み係数のスパース項としての損失項を含む損失関数を最適化することによって得られることを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記記憶手段は複数のコードブックのセットを記憶しており、
前記再構成手段は前記重みパラメータの再構成の対象となるニューラルネットの階層に応じて異なるコードブックのセットを読み込んで用いることを特徴とする請求項４または５に記載の情報処理装置。
【請求項７】
前記重み係数と前記コードブックベクトルの少なくとも一方は、２値あるいは３値の値を要素とすることを特徴とする請求項４から６のいずれか１項に記載の情報処理装置。
【請求項８】
ユーザが学習のパラメータに対する制約条件を指示するための指示手段をさらに有することを特徴とする請求項４から７のいずれか１項に記載の情報処理装置。
【請求項９】
前記ニューラルネットは畳み込みニューラルネットであることを特徴とする請求項１から８のいずれか１項に記載の情報処理装置。
【請求項１０】
ニューラルネットの重みパラメータを複数のグループに分割するステップと、
前記分割されたグループごとに、前記重みパラメータをコードブックにより近似して符合化するステップと、
を有することを特徴とする情報処理方法。
【請求項１１】
コードブックの重み係数および当該コードブックを構成するコードブックベクトルを記憶するステップと、
前記記憶された前記重み係数と前記コードブックベクトルとを用いて、ニューラルネットの重みパラメータを再構成するステップと、
を有することを特徴とする情報処理方法。
【請求項１２】
コンピュータを請求項１から９のいずれか１項に記載の情報処理装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワークを学習する技術に関する。
【背景技術】
【０００２】
ニューラルネット、特に近年研究の進んでいる畳み込みニューラルネット（以下、ＣＮＮ）は認識性能が高い一方で、パラメータ量が膨大になる傾向がある。非特許文献１には、認識装置に必要なメモリ量を削減する方法が開示されている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ｅｍｉｌｙ  Ｌ．  Ｄｅｎｔｏｎ，Ｗｏｊｃｉｅｃｈ  Ｚａｒｅｍｂａ，Ｊｏａｎ  Ｂｒｕｎａ，Ｙａｎｎ  ＬｅＣｕｎ，Ｒｏｂ  Ｆｅｒｇｕｓ，Ｅｘｐｌｏｉｔｉｎｇ  Ｌｉｎｅａｒ  Ｓｔｒｕｃｔｕｒｅ  Ｗｉｔｈｉｎ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｔｗｏｒｋｓ  ｆｏｒ  Ｅｆｆｉｃｉｅｎｔ  Ｅｖａｌｕａｔｉｏｎ，Ａｄｖａｎｃｅｓ  ｉｎ  Ｎｅｕｒａｌ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｙｓｔｅｍｓ  ２７  （ＮＩＰＳ  ２０１４）
【非特許文献２】Ｊ．Ｙａｎｇ，Ｋ．Ｙｕ，Ｙ．Ｇｏｎｇ，ａｎｄ  Ｔ．Ｈｕａｎｇ，Ｌｉｎｅａｒ  Ｓｐａｔｉａｌ  Ｐｙｒａｍｉｄ  Ｍａｔｃｈｉｎｇ  Ｕｓｉｎｇ  Ｓｐａｒｓｅ  Ｃｏｄｉｎｇ  ｆｏｒ  Ｉｍａｇｅ  Ｃｌａｓｓｉｆｉｃａｔｉｏｎ，ＩＥＥＥ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ｖｉｓｉｏｎ  ａｎｄ  Ｐａｔｔｅｒｎ  Ｒｅｃｏｇｎｉｔｉｏｎ，２００９．
【非特許文献３】Ｍａｔｔｈｉｅｕ  Ｃｏｕｒｂａｒｉａｕｘ，Ｙｏｓｈｕａ  Ｂｅｎｇｉｏ，Ｊｅａｎ−Ｐｉｅｒｒｅ  Ｄａｖｉｄ，ＢｉｎａｒｙＣｏｎｎｅｃｔ：Ｔｒａｉｎｉｎｇ  Ｄｅｅｐ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ  ｗｉｔｈ  ｂｉｎａｒｙ  ｗｅｉｇｈｔｓ  ｄｕｒｉｎｇ  ｐｒｏｐａｇａｔｉｏｎｓ，ＮＩＰＳ  ２０１５
【発明の概要】
【発明が解決しようとする課題】
【０００４】
非特許文献１の方法では、ＣＮＮの畳み込み演算の重みパラメータを３軸のベクトルの直積で表現し、上記の直積を複数個加算することで近似圧縮を行う（低ランク近似）。しかし、ＣＮＮの、特に高層の重みパラメータは疎で不連続であるという傾向があるため、直積を用いた近似では精度を上げにくいという課題があった。そこで、本発明は、ＣＮＮの高層の重みパラメータのようにスパースな重みに対しても既存手法より精度の高い近似を可能にすることを目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、本発明は、ニューラルネットの重みパラメータを複数のグループに分割する分割手段と、前記分割されたグループごとに、前記重みパラメータをコードブックにより近似して符合化する符合化手段と、を有することを特徴とする。
【発明の効果】
【０００６】
本発明によれば、ＣＮＮの高層の重みパラメータのようにスパースな重みに対しても既存手法より精度の高い近似が可能になる。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態に係る情報処理装置の機能構成を示すブロック図。
【図２】第１の実施形態において近似圧縮を説明する模式図。
【図３】第１の実施形態に係る学習動作のフローチャート。
【図４】第１の実施形態におけるコードブック近似の模式図。
【図５】第１の実施形態とは異なる手法によるＣＮＮの圧縮率を説明する図。
【図６】第１の実施形態の学習動作の変形例を説明する図。
【図７】第１の実施形態に係る認識動作のフローチャート。
【図８】第２の実施形態において近似圧縮を説明する模式図。
【図９】第２の実施形態に係る学習動作のフローチャート。
【図１０】第３の実施形態において近似圧縮を説明する模式図。
【図１１】第４の実施形態において重みの再構成を用いる畳み込み演算を説明する図。
【図１２】第４の実施形態において重みの再構成を用いない畳み込み演算を説明する図。
【発明を実施するための形態】
【０００８】
［第１の実施形態］
以下、本発明の第１の実施形態について、図面を参照しながら説明する。本実施形態は、ニューラルネットの重みパラメータの圧縮の方法、および圧縮したパラメータを用いた認識動作の基本的な形態について示す。
【０００９】
図１は、本実施形態に係る情報処理装置の機能構成の図である。情報処理装置は、ニューラルネットの重みパラメータを所定のサイズのパラメータへ分割するパラメータ分割部１０１、前記分割したパラメータごとにコードブック符合化とコードブック係数を生成するパラメータ符合化部１０２を備える。また、パラメータ符合化部１０２によって生成されたコードブックおよびパラメータの再構成に用いるコードブック係数を記憶するコードブック記憶部１０３を備える。また、前記コードブックおよびコードブック係数を受け取り、ニューラルネットの重みパラメータを近似再構成するパラメータ再構成部１０４、前記重みパラメータを受け取りニューラルネットの計算処理を行うニューラルネット演算部１０５を備える。
【００１０】
さらに、周辺的な機能として、処理対象のデータをニューラルネットに供給するデータ入力部１０６、ニューラルネットで処理された結果を出力する結果出力部１０７を備えている。また、圧縮前のニューラルネットのパラメータを記憶し、パラメータ分割部１０１にパラメータを供給するニューラルネット・パラメータ記憶部１０８、パラメータの分割および符合化の際にユーザが諸条件を入力するためのユーザ指示部１０９も備える。
【００１１】
情報処理装置は、ＣＰＵ、ＲＯＭ、ＲＡＭ、ＨＤＤ等のハードウェア構成を備え、ＣＰＵがＲＯＭやＨＤ等に格納されたプログラムを実行することにより、例えば、後述する各機能構成やフローチャートの処理が実現される。ＲＡＭは、ＣＰＵがプログラムを展開して実行するワークエリアとして機能する記憶領域を有する。ＲＯＭは、ＣＰＵが実行するプログラム等を格納する記憶領域を有する。ＨＤは、ＣＰＵが処理を実行する際に要する各種のプログラム、パラメータに関するデータ等を含む各種のデータを格納する記憶領域を有する。
【００１２】
なお、本発明の情報処理装置が処理することのできるデータは音声、画像、文章など多岐に渡り得るが、図２（Ａ）の模式図を示すように、本実施形態における入力データは３チャンネルのカラーの静止画像であるとする（以下、チャンネルをｃｈと略す）。また、本実施形態のニューラルネットは多層のＣＮＮであり、重みパラメータはすでに学習済みであるとする。
【００１３】
図２は、本実施形態において、近似圧縮を説明する模式図であり、ＣＮＮが動作を開始すると、各層の畳み込み演算により中間層でそれぞれ６４ｃｈ、９６ｃｈ、１２８ｃｈの特徴マップが順次得られ、最後に全結合層の処理を行って結果を出力する。ここでは、最終層は１ｃｈの出力をするものとする。なお、ＣＮＮには畳み込み演算と全結合層の演算の他に活性化関数や最大値プールと呼ばれる演算処理が存在するが、本実施形態の本質に無関係なので図２では略している。ＣＮＮの構成は非特許文献１のように各種文献において広く公知のため詳細の説明は割愛する。なお、ＣＮＮの各層は更にバイアス項と呼ばれる重みパラメータを備えることがあるが、説明の簡単のためここではバイアス項および全結合層のパラメータは圧縮の対象とせずに、そのまま元の値を保持するだけに留めるものとする。ただし、後述する方法でこれらをまとめて圧縮することも可能である。
【００１４】
＜近似圧縮の学習時の動作＞
次に、図３（Ａ）および（Ｂ）のフローチャートを用いて、情報処理装置がニューラルネットのパラメータを近似的に圧縮する動作を詳細に述べる。動作を開始すると、まずパラメータ分割部１０１はステップＳ１０１からステップＳ１０６のループ処理を行う。ステップＳ１０１でループが開始されると、まず圧縮の準備段階として各層の重みパラメータを全て読み出し、これらを同一サイズの部分に分割する処理を施す。ステップＳ１０２で、パラメータ分割部１０１はニューラルネット・パラメータ記憶部１０８から各層の畳み込み演算のパラメータを順次読みだす。次いで、ステップＳ１０３では、パラメータ分割部１０１が重みパラメータを同一サイズに分割するためにパラメータを整列させる。
【００１５】
以下、この整列の処理について具体的に説明する。一般にＣＮＮの畳み込み演算のパラメータは、４次のテンソルで表すことができる。テンソルのサイズをＷ×Ｈ×ＤＩＮ×ＤＯＵＴと表記するとする。ここで、ＷとＨは畳み込みを行う縦と横の画素サイズであり、ＤＩＮとＤＯＵＴは、それぞれ入力データの特徴ｃｈ数、畳み込みの結果出力される出力データの特徴ｃｈ数である。
【００１６】
図２（Ａ）のニューラルネットの第一層を例にとると、畳み込みのパラメータの空間方向のサイズは３×３で入力チャンネル数は３ｃｈのＲＧＢ画像、出力サイズは６４ｃｈである。本実施形態では、このパラメータを３次元へと変形する下記の数式１で表わされる演算操作ｆを用いる。
ｆ：ＲＷ×Ｈ×ＤＩＮ×ＤＯＵＴ→ＲＷ×Ｈ×Ｄ’      （数式１）
ただし、ここでＤ’＝ＤＩＮ×ＤＯＵＴである。演算操作ｆの具体例の一つとして、数式２で表わされる演算操作を挙げる。
ｃ’［ｉ，ｊ，ｐ＋（ｑ−１）×ＤＩＮ］：＝ｃ［ｉ，ｊ，ｐ，ｑ］    （数式２）
ただし、
ｐ＝１，…，ＤＩＮ
ｑ＝１，…，ＤＯＵＴ
ｃ’∈ＲＷ×Ｈ×Ｄ’，ｃ∈ＲＷ×Ｈ×ＤＩＮ×ＤＯＵＴ
上記の演算操作は、ラスター順にパラメータを整列する操作である。本演算操作により、例えば第１層の３×３×３×６４のサイズのテンソルの場合、３×３×１９２のサイズの３次のテンソルに変換される。
【００１７】
次に、テップＳ１０４でパラメータ分割部１０１が前段で整列済みのパラメータを複数の部分的なパラメータへと分割する。ここでは３×３×１９２のサイズのパラメータを図２（Ｂ）に示すような３×３×Ｎの部分パラメータに分割することとする。図の例では、Ｎ＝８である。Ｎは入力ｃｈと出力ｃｈの積であるＤＩＮ×ＤＯＵＴの約数であることが望ましい。ただし、後述する方法を用いればＮは任意の整数であってもよい。
【００１８】
分割の結果、図２（Ｃ）に示すように各層の重みパラメータはすべて同一サイズの部分パラメータｃ（ｉ，ｊ）に分割された。ここでｃ（ｉ，ｊ）とは第ｉ層の重みパラメータを分割して得られるｊ番目の部分のパラメータを意味する。なお第一の層の重みパラメータは入力チャンネルが３であり、分割の単位要素のＮ＝８よりも小さいが、上述のように一端整列の操作を行うことで他の層と同様に容易に分割できることが、本実施形態において特徴的構成の１つとなっている。
【００１９】
次に、要素単位に分割されたパラメータを別途用意したコードブックで近似圧縮する。この処理の詳細を、図３（Ｂ）のフローチャートと、図４の本実施形態のコードブック近似の模式図を用いて説明する。まず、コードブックは図４（Ｃ）に示すように分割した要素単位と同一サイズのＭ個のコードブックベクトルから構成される。本実施形態では、分割された重みパラメータの近似にスパースコーディングと呼ばれる手法を用いる。スパースコーディングは、図４（Ａ）に示すようにコードブックベクトルの基底の線形和でデータを近似する手法の一種である。図４（Ａ）および（Ｂ）のように、データｃはコードブックベクトルａｍのＫ個の線形和Σｍｘ（ｉ，ｊ，ｍ）×ａｍで近似される。ここで、図４（Ｂ）中のｍ∈｛ｔｏｐ（Ｋ）｝は、コードブック係数ｘ（ｉ，ｊ，１）〜ｘ（ｉ，ｊ，Ｍ）のうちの絶対値の大きい上位Ｋ個の係数の番号を意味するとする。このとき、データｃに特定パターンの繰り返しが多く含まれていたり、スパースであるような場合に、スパースコーディング手法は、他の手法よりも比較的少数のコードブックベクトルで高精度な近似が可能である。
【００２０】
コードブックベクトルおよびコードブック係数は、下記数式３のような損失関数を最小化することで学習を行う。
【００２１】
ｍｉｎＸ，ＡΣｎ｜｜ｃｎ−Ａｘｎ｜｜２＋λ｜ｘｎ｜，
Ｓｕｂｊｅｃｔ  ｔｏ｜｜ａｎ｜｜≦１，∀ｎ＝１，２，…，Ｍ      （数式３）
ここで、ｃｎは先に分割した重みパラメータのうちのｎ番目のもので、３次元のデータであるｃ（ｉ，ｊ）∈ＲＷ×Ｈ×ＤをＬ＝Ｗ×Ｈ×Ｄの長さの列ベクトルに整列してｃｎ∈ＲＬ×１としたものである。ＡはＭ個のコードブックベクトルａｉからなるセットでＡ＝［ａ１，ａ２，…，ａＭ］である。各コードブックベクトルａｉはａｉ∈ＲＬ×１である。ｘｎはｎ番目の重みパラメータを再構成するためのコードブックの係数でｘｎ∈ＲＭ×１である。
【００２２】
数式３の１行目の式の第１項は近似誤差の損失項であり、第２項はスパース項と呼ばれる損失項である。λは２つの項を調整するためのハイパーパラメータである。２行目の式は自明な解を排除するための制約条件である。学習計算の際は、数式３をｘについての最小化とＡについての最小化を、収束するか所定回数に達するまで交互に行う（ステップＳ１０８〜Ｓ１１３）。１行目の第２項は、Ｌ１ノルムのコスト項であるためコードブック係数ｘｎの値の多数は０に収束する、すなわち、コードブック係数ｘｎはスパースになる。このためｘｎのうち、絶対値の大きな少数のｋ個のコードブック係数のみから重みパラメータｃｎの近似的再構成が可能となる。スパースコーディングは非特許文献２等により公知の技術内容のため、これ以上の詳細については省略する。
【００２３】
このようにして、各層の畳み込みの重みパラメータはＭ個のコードブックベクトルからなるコードブックＡと、再構成用のコードブック係数Ｘによって近似される。コードブック記憶部１０３は、ステップＳ１１４〜Ｓ１１７で得られたコードブックＡとコードブック係数Ｘを保存し、近似圧縮動作が終了する。
【００２４】
なお、ハイパーパラメータであるコードブック数Ｍや再構成に用いるコードブック係数の数Ｋによって圧縮率は変化する。例えば、図５にＡｌｅｘＮｅｔと呼ばれる一般的なＣＮＮを圧縮したときの圧縮率を例示する。コードブックの数Ｍを２５６とし、コードブック係数や各パラメータは一要素当たり８ｂｉｔのサイズとする。ここで例えば、Ｋ＝２，Ｎ＝４の時には元のサイズの７倍弱の圧縮が行われる（図中の丸で示す位置）。
【００２５】
＜認識時の動作＞
図７は、本実施形態に係る認識時の処理のフローチャートである。ニューラルネットの動作が開始すると、ステップＳ２０１で、パラメータ再構成部１０４はコードブック記憶部１０３からコードブックＡとコードブック係数Ｘを読み出す。次に、ｉ層の処理を行う際には、再構成部１０４が下記の数式４に示すように、該当するコードブックベクトルとコードブック係数を用いて線形和でパラメータｃ（ｉ，ｊ）を再構成してから連結する。これにより、畳み込みのパラメータを復元する（ステップＳ２０３〜ステップＳ２０５）。
【００２６】
ｃ（ｉ，ｊ）＝Σｍ∈｛Ｔｏｐ（Ｋ）｝ｘ（ｉ，ｊ，ｍ）ａｍ      （数式４）
その後の処理は、通常のＣＮＮと同様に畳み込み処理によるニューラルネットの処理動作を行う（ステップＳ２０６）。以上が、本実施形態の認識時の動作となる。
【００２７】
本実施形態によれば、ニューラルネットの重みパラメータを所定の大きさの複数の部分（グループ）に分割して個別にコードブックベクトルの重み付和による近似を行う。これにより、ＣＮＮの高層の重みパラメータのようにスパースな重みに対しても、精度の高い近似が可能になる。
【００２８】
＜変形例＞
上述の説明で示した以外にも、パラメータの整列と分割の他の形態としては種々の形態が考えられる。例えば、９×３×６４のサイズに整列してから９×３×４のサイズに分割する、２７×６４のサイズの２次元のパラメータに整列してから３×６４のサイズに分割する等、である。本実施形態は特定の形態に限定されるものではない。ただし、ＣＮＮの認識動作はチャンネルごとに畳み込みを行うことから、分割の対象とする次元は畳み込みの空間方向ではなく、上述の説明のように入出力のチャンネルの次元に沿って行う方が、実装時の速度面では都合がよい。
【００２９】
さらに、上述の説明では、全結合層やバイアス項は圧縮の対象外としたが、これを圧縮の対象に含める形態も考えられる。例えば、全結合層の重みのパラメータはＤｉ×Ｄｉ＋１のサイズの配列であるが、これを整列してサイズ３×３×［Ｄｉ×Ｄｉ＋１÷９］の３次元のパラメータへ整形することができる。整列の方法はラスター順などでよいし、再現性のある一定の方法であればどのような順序であってもよい。この整形操作を施した後の重みパラメータであれば、３×３×Ｎの要素単位に容易に分割することが可能である。ただし、Ｄｉ×Ｄｉ＋１÷９の値が割り切れない場合や、Ｎチャンネルごとの分割で余りが出るような場合は、余りの部分は圧縮せずに元のパラメータの値を記憶しておく。もしくは、０などのダミー値でパラメータを充填して割り切れるサイズにしておいてもよい。なお、ダミー値は、認識動作時にはパラメータ再構成の後に取り除く。また、認識の際には、この全結合の層のみ、通常の重みパラメータの再構成を行った後に、Ｄｉ×Ｄｉ＋１のサイズの配列に再度整列し戻してからニューロンの演算処理をする必要がある。バイアス値についても、同様の方法で圧縮を行うことが可能である。
【００３０】
また別の変形例として、ＣＮＮ以外のニューラルネットのコードブック近似圧縮を考えることもできる。この場合、全層の重みパラメータはＤｉ×Ｄｉ＋１の二次元となる。この場合は、Ｄｉ×Ｄｉ＋１を所定のサイズＷに揃うよう［Ｗ］×［Ｄｉ×Ｄｉ＋１÷Ｗ］に整列し直すことが考えられる。ただし、ここで各大括弧はパラメータの１次元分に相当する。整列順はラスター順等とする。次に、これをＷ×Ｎチャンネルの要素単位に分割し、各パラメータをコードブックで近似する。なお、先の場合と同様、割り切れない場合はダミー値を用いた充填等を行うものとする。
【００３１】
さらに別の変形例として、畳み込み演算の画素サイズが３×３以外に、５×５や７×７など異なるサイズの畳み込みの層が混在する形態を考える。このような場合、サイズごとにコードブックを用意して個別に符合化の学習を行うことなどが考えられる。
【００３２】
なお、コードブックの学習方法として、学習済みのニューラルネットの重みパラメータをコードブックで近似する方法について上述した。しかし、以下に示すように近似の方法については、様々な変形例が考えられ、それぞれ最終性能に影響する。以下に、学習動作の変形例について説明を加える。
【００３３】
＜学習動作の変形例１＞
変形例１として、全層を一度に近似圧縮するのではなく、低層から１層ずつ徐々に近似する方法について述べる。具体的な手順は、以下の通りである。まず、ニューラルネットの全層の重みパラメータを近似するために、コードブックとコードブック係数を学習する。次に、ニューラルネットの第１層のパラメータのみコードブックで近似再構成した値で置換する。
【００３４】
次に、学習データをニューラルネットに与え、第２層以降の重みを誤差逆伝搬法で学習し直す。これを低層から高層まで順に一層ずつ行う。先に述べた方法のように、全層をそれぞれ近似圧縮すると近似の誤差が上層に至るほど積み上がっていく危険性が高いが、変形例１のように、近似を１層ずつ行えば同誤差を低減することができる。
【００３５】
＜学習動作の変形例２＞
変形例２として、ニューラルネットの学習の際にコードブックの学習を同時に行う形態について述べる。この変形例２では、まずコードブックＡおよびコードブック係数Ｘを乱数で初期化し、ニューラルネットの重みｗを最初から近似式ｗ：＝ΣｍＡｘｍとして置換しておく。そして、コードブック係数Ｘを確率的誤差逆伝搬を用いて更新する。更新に用いる式は以下の数式５である。
Ｅ＝ＥＮＮ＋λ｜ｘ｜
Δｘｍ＝−η  ∂Ｅ／∂ｘｍ
＝−η（∂Ｅ／∂ｗ）×（∂ｗ／∂ｘｍ）
＝−η｛（∂ＥＮＮ／∂ｗ）×Ａ＋λ×Ｓｉｇｎ（ｘｍ）｝      （数式５）
ただし、ここでＥＮＮはニューラルネットの学習時の目標値からの誤差量である。ηは学習係数である。Ｅはニューラルネットの誤差とスパース項の損失を合わせた誤差量である。Ｓｉｇｎ（ｘ）はｘの符合を返す演算子である。∂Ｅ／∂ｗは誤差の勾配であり、公知の手法である誤差逆伝搬法によって求めることが可能である。
【００３６】
さらに、コードブックの変数Ａは、下記数式６に従って確率的誤差逆伝搬で更新を行う。
Δａｍ＝−ε  ∂ＥＮＮ／∂ａｍ
＝−ε（∂ＥＮＮ／∂ｗ）×（∂ｗ／∂ａｍ）
＝−ε（∂ＥＮＮ／∂ｗ）×ｘｍ                          （数式６）
ただし、εは学習係数である。以上の方法で更新を交互に行うことで、ニューラルネット、コードブックおよびコードブック係数の学習が同時に行われる。
【００３７】
＜学習動作の変形例３＞
変形例３として、ニューラルネットの重みが既存の学習済みのコードブックに適合するようにチャンネルの順序の変更や学習を行うような形態が考えられる。ＣＮＮの重みパラメータは、これまでラスター等の整列をすることはあったが、各チャンネルの順序を入れ替えるような処理については行わなかった。ＣＮＮにおいて、各層のチャンネルの順序には意味はないので、層間でパラメータの整合性が取れるのであれば、任意のチャンネルを入れ替えることは学習において特に支障はない。そこで、変形例３では、学習済みのコードブックに適応するようにＣＮＮの重みパラメータの側をソートする形態について述べる。
【００３８】
具体的には、図６（Ａ）に示すように、近似圧縮の対象である畳み込みパラメータ６０１ａと近似に用いるコードブックベクトル６０２ａがあったとする。このとき、図６（Ｂ）のように、チャンネルを入れ替えた時に近似誤差が減る場合が有り得る。ただし、この場合、第一層の畳み込みパラメータ６０３ａの順番も併せてパラメータ６０３ｂのように入れ替える必要がある。
【００３９】
以上の性質を利用して、学習時に、例えば下記のような方法によるソーティングを行うことができる。まず、暫定のコードブックによる近似のうち、近似精度の最も低い畳み込みパラメータとコードブックベクトルのペアを同定する。次に同パラメータのうち、最も近似精度の低い特徴チャンネル層を同定する。次にこのチャンネル層を層内の他のチャンネルとランダムに入れ替えを行い、その結果全体の近似精度が向上したら入れ替えを採用する。
【００４０】
このように、コードブック係数に対してＣＮＮの重みをソーティングする学習の方法の一形態について述べた。しかし、既存のコードブックに合わせてＣＮＮの学習を行うという観点からは、同種の方法が様々考えられ、本実施形態はここで示す方法に限られるものではない。
【００４１】
＜学習動作の変形例４＞
変形例４は、ユーザがユーザ指示部１０９を使ってパラメータの制約条件を設定し、その制約条件内で学習を最適化するものである。例えば、メモリサイズの最大値等を入力し、パラメータ符合化部１０２が圧縮後のサイズが条件値を超えないように、ハイパーパラメータであるＫやＮを探索する方法である。これは、学習時に所定の間隔で上記パラメータの値を変更してみて、数式７のような評価式の値が最も高く、且つ制約条件を満たすようなパラメータの変更を採用する等の方法が考えられる。
評価値＝圧縮後のサイズ増分率×近似誤差の低減率      （数式７）
【００４２】
［第２の実施形態］
次に、本発明の第２の実施形態について説明する。第１の実施形態では全ての層に共通のコードブックを用いて重みパラメータの圧縮を行った。これに対し、本実施形態では、情報処理装置のメモリ量を圧縮するために、階層のそれぞれでタイミングを変えて異なるコードブックのセットを読み出して利用する方法について述べる。なお、第１の実施形態において既に説明を行った構成については、その説明は省略する。
【００４３】
図８は、本実施形態における近似圧縮を説明する模式図である。本実施形態では、図８のように、全層に共通のコードブック０の他に、第１層と第２層でコードブックセット１が、第２層と第３層でコードブックセット２が、第３層と第４層でコードブックセット３がそれぞれ読み出されて利用される。また、不要となったコードブックセットは、都度メモリから消去することで使用メモリ量を一定値に抑えるようにする。
【００４４】
ＣＮＮは、低層ではガボールフィルタのような重みが高層ではゼロ値の多いスパースな重みのパラメータとなることが多いため、このように緩やかに低層、中層、高層とコードブックを分けることで、使用メモリ量を増やさずに近似精度を向上することができる。なお、各層間で異なるコードブックを用いる場合は、コードブックの学習時にそれぞれの層で個別にコードブックとコードブック係数を学習すればよい。
【００４５】
一方で、図８のように、複数のコードブックセットを互いに重なったタイミングで利用したい場合には、例えば次のような学習処理を行えばよい。図９は第２の実施形態に係る学習動作のフローチャートであり、本実施形態は、このフローチャートに従った学習を行う。この学習処理は、第１の実施形態の図３のステップＳ１０７からステップＳ１１３までの処理の内容を修正したものである。
【００４６】
本実施形態の処理フローでは、まずステップＳ３０１で、どの層でどの程度の大きさのコードブックセットを用いるかを設定する。これは、予め所定の値を与えておくか、ユーザ指示部１０９などでユーザに入力させて設定する。次に、ステップＳ３０２では、パラメータ符合化部１０２が、全てのコードブックセットとコードブック係数の値を乱数で初期化する。次に、ステップＳ３０４からステップＳ３０９に示すように、各層ごとに順次コードブック係数の学習更新を行う。具体的には、まず、パラメータ符合化部１０２が、処理対象の層の重みパラメータと、使用するべきコードブックセットを全て読み出す（ステップＳ３０５）。ここで、重みパラメータは分割済みとする。
【００４７】
次に、パラメータ符合化部１０２は、当該層の重みパラメータが近似できるように数式３を用いて各コードブック係数の更新を行う（ステップＳ３０７）。このとき、近似に用いるコードブックベクトルは当該層に用いるとしたコードブックセットの中だけに限定する。このようにして、各層ごとに学習更新を行い、全層の更新が１イタレーション終了したら、全コードブックセットのコードブックベクトルの値を数式３に従って更新する（ステップＳ３１０）。以上の処理を所定回数繰り返すことにより、互いに重なったタイミングで用いる複数のコードブックセットが適切に学習される。以上の構成により、各層でタイミングを変えて異なるコードブックのセットを読み出して利用することができる。
【００４８】
上述の説明では、複数の層に跨るコードブックのセットについて述べたが、別の形態としては各層がそれぞれ独立して異なるコードブックセットを持ち、各層の演算を始める前に都度コードブックセットを読み込むような形態なども考えられる。このように、本実施形態は、コードブックのセットの保持および読み込みのタイミングに関し、特定の形態に限定されるものではない。
【００４９】
［第３の実施形態］
次に、本発明の第３の実施形態について説明する。第１、第２の実施形態は、画像データについてＣＮＮの重みパラメータを近似圧縮したが、本実施形態では、さらにこれを一般化してより高次元のデータを処理するＣＮＮにも適応できることを示す。なお、高次元のデータとしては、例えば奥行き情報のデータや医用の画像診断で使われるようなボクセル画像、また動画などが挙げられる。以下の説明では、動画を例にして、これを処理するＣＮＮのパラメータの近似圧縮の形態について述べる。なお、第１、第２の実施形態において既に説明を行った構成については、その説明は省略する。
【００５０】
図１０は、第３の実施形態において近似圧縮を説明する模式図である。図１０（Ａ）に示すように、時系列情報に対して畳み込みを行うためのパラメータ１００１は５次のテンソルであり、サイズはｗｃ×ｈｃ×ｔｃ１×ｄ１×ｄ２と記述できる。このように高次のデータではあるものの、第１の実施形態と同様にこれを所定のラスター順に整列し、サイズｗｃ×ｈｃ×Ｎの重みパラメータへ分解し、各々の部分をコードブック近似することで近似圧縮が可能である。例えば、第１層の場合、畳み込みパラメータのサイズを３×３×３×３×２４とすると、３×３×８のサイズの単位要素に分解すれば、２７個の単位要素へと分解されることになる。参考として、ある設定条件におけるＣＮＮのパラメータの圧縮を図１０（Ｂ）に示す。この設定値では、１１％程度に圧縮されることが示されている。
【００５１】
以上のように、本実施形態によれば、奥行き情報のデータやボクセル画像、また動画などに対して、精度よく近似圧縮を行うことができる。
【００５２】
［第４の実施形態］
次に、本発明の第４の実施形態について説明する。上述の各実施形態では、パラメータのコードブックベクトルは実数の値を用いていたが、本実施形態では、これを２値とする例について説明する。本実施形態では、コードブックベクトルを２値化することにより、近似精度が下がる可能性もある一方、メモリサイズの低減や計算負荷量の削減といった効果が期待できる。なお、第１〜第３の実施形態において既に説明を行った構成については、その説明は省略する。
【００５３】
図１１は重みの再構成を用いる畳み込み演算を説明する図であり、図１２は重みの再構成を用いない畳み込み演算を説明する図である。この図１１および図１２を用いて、コードブックベクトルが実数値の場合と２値の場合について説明する。上述の各実施形態では、図１１のように実数値からなるＫ個のコードブックから畳み込みのパラメータを再構成し、畳み込み演算を行った。このとき、同図で示した１箇所の畳み込み動作には３×３×Ｎ回の積算と３×３×Ｎ回の加算の演算が必要である。
【００５４】
これに対して、図１２は２値のコードブックベクトルを用いた形態である。なお、この学習の方法については後述する。この図１２に示す形態では、畳み込みカーネルを再構成せずに、各Ｋ個のコードブックベクトルごとに特徴マップの畳み込みを行う。具体的には、次のように行う。
【００５５】
（１）コードブックベクトルの３×３×Ｎ個の要素を参照し、値が１であれば対応する特徴マップの値を読み込み、特徴マップ加算結果１２０１に加算していく。一方、０であれば加算しない。
【００５６】
（２）上記処理が各Ｋ個のコードブックについて終了したら、Ｋ個の加算結果１２０１にそれぞれコードブック係数を掛けてから総和を求め、畳み込みの結果とする。
【００５７】
以上により、１箇所の畳み込みの演算が完了する。畳み込みに必要な演算の回数は乗算がＫ回、加算が最大で３×３×Ｎ×Ｋ＋Ｋ回である。特に、畳み込みの空間サイズが５×５や７×７と大きなＣＮＮの場合、乗算数の少ない本実施形態は回路の規模等で有利な構成とになる。
【００５８】
次に、２値のコードブックベクトルを学習して得るための方法について説明する。これは、下記の数式８を用いてコードブックを学習すればよい。
ｍｉｎＸ，ＡΣｎ｜｜ｃｎ−Ａｘｎ｜｜２＋λ１｜ｘｎ｜＋λ２Ｑ（Ａ），
Ｑ（Ａ）＝Σｉｊ｜ａｉｊ−ｑｎｅａｒｅｓｔ｜                          （数式８）
数式８は、第３の実施形態で示した数式３を一般化した形態になっており、コードブックの２値化制約項Ｑ（Ａ）を備えている。Ｑ（Ａ）中のｑｎｅａｒｅｓｔの項は、２値｛０，１｝のうち、ａｉｊの値が近い方の値を取る変数である。この数式８を用いて２値のコードブックベクトルを学習で得るために、以下のような処理を行う。
【００５９】
まず、全コードブックベクトルを乱数で初期化して学習を開始する。学習の経過とともに、徐々にλ２の値を大きくしていき、値が２値に近づくようにする。学習が収束したら、最後に閾値０で２値化して各コードブックベクトルの全ての要素の値を２値｛０，１｝に丸める。これにより、２値の値を要素とするコードブックが得られる。
【００６０】
なお、本実施形態の変形例として、コードブックの要素をａ∈｛−１，１｝の２値やａ∈｛−１，０，１｝の３値としてもよい。また、離散値の精度は２値〜ｎビットまで任意の精度が考えられる。また、コードブックベクトルごとに離散値の精度を変えるような形態も考えられる。また、複数の定数値をコードブックベクトルの要素とすることも考えられる。この形態では、参照テーブルを併せて使用することで少ないビット数でコードブックベクトルを表現することができる。
【００６１】
また、コードブックベクトルのみならずコードブックの係数についても上記のように様々な離散化を行うこともできる。
【００６２】
さらに別の変形例として、非特許文献３に開示されるようにニューラルネットの重みの値自体が２値｛−１，１｝や３値｛−１，０，１｝で構成される特殊なニューラルネットを近似する形態も考えられる。この場合、コードブックベクトルやコードブックの係数は２値でもよいし実数値でもよい。ニューラルネットの重みの値が２値｛−１，１｝の場合、重みパラメータの再構成の際には以下の数式８のように閾値処理を行えばよい。
ｃ（ｉ，ｊ）＝ｓｉｇｎ（Σｍ∈｛Ｔｏｐ（Ｋ）｝ｘ（ｉ，ｊ，ｍ）ａｍ）      （数式９）
以上、本実施形態によれば、２値のコードブックを用いることにより、更なるメモリサイズの低減、計算負荷量の削減が可能となる。なお、上述したとおり、コードブックベクトル、コードブックの係数、および再構成の対象である重みパラメータの形態には様々な変形例が考えられる。しかし、本実施形態は特定の形態に限定されるものではなく、要求される圧縮率と近似精度等に基づいて、最適な構成を採用すればよい。
【００６３】
［その他の実施形態］
また、本発明は、上記実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵ等）がプログラムを読出し実行する処理である。また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。本発明は上記実施例に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施例の有機的な組合せを含む）が可能であり、それらを本発明の範囲から除外するものではない。即ち、上述した各実施例及びその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【００６４】
１０１  パラメータ分割部
１０２  パラメータ符合化部
１０３  コードブック記憶部
１０４  パラメータ再構成部
１０５  ニューラルネット演算部
１０６  データ入力部
１０７  結果出力部
１０８  ニューラルネット・パラメータ記憶部
１０９  ユーザ指示部
【図１】
2018055260.tif 000003
【図２】
2018055260.tif 000004
【図３】
2018055260.tif 000005
【図４】
2018055260.tif 000006
【図５】
2018055260.tif 000007
【図６】
2018055260.tif 000008
【図７】
2018055260.tif 000009
【図８】
2018055260.tif 000010
【図９】
2018055260.tif 000011
【図１０】
2018055260.tif 000012
【図１１】
2018055260.tif 000013
【図１２】
2018055260.tif 000014