(57)【要約】【課題】  メモリ使用量を抑制しつつ、識別精度の高いニューラルネットワークを学習すること。【解決手段】  本発明は、多層ニューラルネットワークの畳みこみ層における複数のカーネルのうち、複数の畳みこみ層間で共有化されるカーネルを選択する。そして、カーネルのパラメータ初期値を設定し、ニューラルネットワークの学習を行う。【選択図】  図６
2018055259.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットワークの複数の畳みこみ層における複数のカーネルのうち、複数の前記畳みこみ層において共有するカーネルを選択する選択手段と、
前記ニューラルネットにおけるパラメータの初期値を設定する設定手段と、
学習データを用いて、前記ニューラルネットワークにおけるパラメータの最適化を行うことにより前記ニューラルネットワークを学習する最適化手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記最適化手段は、前記選択されたカーネルのパラメータが同じであることを制約条件に、前記ニューラルネットワークの学習を行うことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記最適化手段は、前記ニューラルネットワークにおいてパラメータの最適化を行って学習する処理と、前記選択手段によって共有するカーネルを選択した後にパラメータの最適化を行って学習する処理とを、この順に実行することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記設定手段は、それぞれ異なる複数のパラメータの初期値を複数回で設定し、
前記最適化手段は、前記複数のパラメータの初期値によりニューラルネットワークを学習した中から、当該学習の結果に基づいてニューラルネットワークを選択することを特徴とする請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
前記最適化手段は、最も精度の高いニューラルネットワークを選択することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記選択手段は、予め定められたパラメータを組み合わせることにより前記畳みこみ層を追加して、前記共有するカーネルを選択し、
前記最適化手段は、前記追加された畳みこみ層を合わせて学習することを特徴とする請求項１から５のいずれか１項に記載の情報処理装置。
【請求項７】
前記最適化手段は、前記学習の結果に基づいて前記カーネルの共有を解除することを特徴とする請求項１から６のいずれか１項に記載の情報処理装置。
【請求項８】
前記最適化手段により学習されたニューラルネットワークを用いて識別を行う識別手段をさらに有することを特徴とする請求項１から７のいずれか１項に記載の情報処理装置。
【請求項９】
前記最適化手段により学習されたニューラルネットワークに識別すべき画像を入力する入力手段と、
前記ニューラルネットワークの出力結果および中間層の出力結果を出力する出力手段と、をさらに有し、
前記識別手段は、前記出力されたニューラルネットワークの出力結果および中間層の出力結果を識別器に入力することにより、識別を行うことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
ニューラルネットワークを構成する畳みこみ層において、複数の前記畳みこみ層のカーネルのパラメータが共通化されたニューラルネットワークを用いて識別を行う識別手段を有することを特徴とする情報処理装置。
【請求項１１】
少なくとも１つの前記畳みこみ層において、層内のカーネルのパラメータも共通化されていることを特徴とする請求項１０に記載の情報処理装置。
【請求項１２】
ニューラルネットワークの複数の畳みこみ層における複数のカーネルのうち、複数の前記畳みこみ層において共有するカーネルを選択するステップと、
前記ニューラルネットにおけるパラメータの初期値を設定するステップと、
学習データを用いて、前記ニューラルネットワークにおけるパラメータの最適化を行うことにより前記ニューラルネットワークを学習するステップと、
を有することを特徴とする情報処理方法。
【請求項１３】
コンピュータを、請求項１から１１のいずれか１項に記載の情報処理装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワークを学習する技術に関する。
【背景技術】
【０００２】
画像・音声などのデータの内容を学習し認識を行なう技術が存在する。認識処理の目的をここでは認識タスクと呼び、多様な認識タスクがある。たとえば、画像中の人間の顔の領域を検出する顔認識タスク、画像中にある物体（被写体）のカテゴリ（猫・車・建物など）を判別する物体カテゴリ認識タスク、シーンのカテゴリ（都市・山間・海岸など）を判別するシーン種別認識タスクなどである。
【０００３】
上記のような認識タスクを学習・実行する技術としては、ニューラルネットワーク（ＮＮ）の技術が知られている。深い（層の数が多い）多層ニューラルネットワークをＤｅｅｐ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ（ＤＮＮ）と呼ぶ。特に、非特許文献１に開示されているように深い畳みこみニューラルネットワークをＤｅｅｐ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ  （ＤＣＮＮ）と呼ぶ。ＤＣＮＮは性能が高いことで近年注目されている。
【０００４】
ＤＣＮＮとは、各層において、前層からの出力に対して畳みこみ処理を行い次層に出力するようなネットワーク構造をもつものである。最終層は認識結果を表す出力層となる。各層には畳みこみ演算用のフィルタ（カーネル）が複数用意される。出力層に近い層では畳みこみによる結合ではなく通常のニューラルネットワーク（ＮＮ）のような全結合（ｆｕｌｌ  ｃｏｎｎｅｃｔ）の構造とするのが一般的である。もしくは、非特許文献２に開示されているように全結合層のかわりに畳みこみ演算層の出力結果を線形識別器に入力し識別を行う手法も注目されている。
【０００５】
ＤＣＮＮの学習フェーズにおいては、畳みこみフィルタの値や全結合層の結合重み（両者をあわせて学習パラメータと呼ぶ）を誤差逆伝搬法（バックプロパゲーション：ＢＰ）などの方法を用いて教師付きデータから学習する。認識フェーズでは学習済ＤＣＮＮにデータを入力し、各層において学習済みの学習パラメータによってデータを順次処理し、出力層から認識結果を得るかもしくは中間層の出力結果を集計し、識別器に入力することで認識結果を得る。
【０００６】
また、上記のようなニューラルネットワーク（ＮＮ）を圧縮する研究もされている。各畳みこみ演算に用いるフィルタ（カーネル）をフィルタ圧縮の技術を用いて圧縮することでパラメータ数を削減し、場合によっては畳みこみ演算時の計算量を削減できる。非特許文献３では、スパース行列分解をしてフィルタ行列を低ランク近似することでフィルタ圧縮の実現している。特許文献１では、三層ニューラルネットワークの学習を行い、隠れ層（中間層）の各モジュールが有するウェイトマトリクスのユーグリッド距離を計算し、距離が近いウェイトマトリクスを共有する。また、特許文献２では三層ニューラルネットワークにおける中間層の各モジュールが同一の重み（ウェイト）を持たせて更新する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許第４２２６７５４号
【特許文献２】特許第３３６７２１４号
【非特許文献】
【０００８】
【非特許文献１】Ｋｒｉｚｈｅｖｓｋｙ，Ａ．，Ｓｕｔｓｋｅｖｅｒ，Ｉ．，＆Ｈｉｎｔｏｎ，Ｇ．Ｅ．，“Ｉｍａｇｅｎｅｔ  ｃｌａｓｓｉｆｉｃａｔｉｏｎ  ｗｉｔｈ  ｄｅｅｐ  ｃｏｎｖｏｌｕｔｉｏｎａｌ  ｎｅｕｒａｌ  ｎｅｔｗｏｒｋｓ．”，Ｉｎ  Ａｄｖａｎｃｅｓ  ｉｎ  ｎｅｕｒａｌ  ｉｎｆｏｒｍａｔｉｏｎ  ｐｒｏｃｅｓｓｉｎｇ  ｓｙｓｔｅｍｓ（ｐｐ．１０９７−１１０５），２０１２．
【非特許文献２】Ｊｅｆｆ  Ｄｏｎａｈｕｅ，  Ｙａｎｇｑｉｎｇ  Ｊｉａ，Ｊｕｄｙ  Ｈｏｆｆｍａｎ，Ｔｒｅｖｏｒ  Ｄａｒｒｅｌｌ，“ＤｅＣＡＦ：Ａ  Ｄｅｅｐ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ａｃｔｉｖａｔｉｏｎ  Ｆｅａｔｕｒｅ  ｆｏｒ  Ｇｅｎｅｒｉｃ  Ｖｉｓｕａｌ  Ｒｅｃｏｇｎｉｔｉｏｎ”，ａｒｘｉｖ  ２０１３．
【非特許文献３】Ｍａｘ  Ｊａｄｅｒｂｅｒｇ，Ａｎｄｒｅａ  Ｖｅｄａｌｄｉ，Ａｎｄｒｅｗ  Ｚｉｓｓｅｒｍａｎ，“Ｓｐｅｅｄｉｎｇ  ｕｐ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｔｗｏｒｋｓ  ｗｉｔｈ  Ｌｏｗ  Ｒａｎｋ  Ｅｘｐａｎｓｉｏｎｓ”，Ｔｈｅ  Ｂｒｉｔｉｓｈ  Ｍａｃｈｉｎｅ  Ｖｉｓｉｏｎ  Ｃｏｎｆｅｒｅｎｃｅ  ２０１４．
【非特許文献４】Ｋａｒｅｎ  Ｓｉｍｏｎｙａｎ，Ａｎｄｒｅｗ  Ｚｉｓｓｅｒｍａｎ，“Ｖｅｒｙ  Ｄｅｅｐ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｔｗｏｒｋｓ  Ｆｏｒ  Ｌａｒｇｅ−Ｓｃａｌｅ  Ｉｍａｇｅ  Ｒｅｃｏｇｎｉｔｉｏｎ”，Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｌｅａｒｎｉｎｇ  Ｒｅｐｒｅｓｅｎｔａｔｉｏｎｓ  ２０１４．
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述した従来のニューラルネットワーク（ＮＮ）、とくにＤｅｅｐ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ  （ＤＣＮＮ）では、畳みこみ演算を多く行うためパラメータ数が多く、それを展開するメモリを識別時に用意する必要がある。そこで近年、非特許文献３のような行列圧縮・分解の技術を用いて各カーネルやフィルタを１次元フィルタの組で近似することで圧縮する技術がある。この技術により各カーネルやフィルタのパラメータ用のメモリを減らすことができる。また、特許文献１のようにカーネルやフィルタのなかで近いパラメータであるものを統合し、カーネル数もしくはフィルタ数を減らす技術や特許文献２のように層内のフィルタのパラメータを同一のものするニューラルネットワークも提案されている。
【００１０】
しかしながら、現在の多層のニューラルネットワークではフィルタサイズが小さく、従来のような行列圧縮・分解の技術では、圧縮効果が小さい。また、層内でだけでなく層間でカーネルやフィルタを共有し、かつその共有関係を維持した状態で学習（ｆｉｎｅｔｕｎｅ）することでパラメータ用のメモリを増やさずに識別精度の高いニューラルネットワークを学習する技術がない。
【００１１】
そこで、本発明は、メモリ使用量を抑制しつつ、識別精度の高いニューラルネットワークを学習することを目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、本発明は、ニューラルネットワークの複数の畳みこみ層における複数のカーネルのうち、複数の前記畳みこみ層において共有するカーネルを選択する選択手段と、前記ニューラルネットにおけるパラメータの初期値を設定する設定手段と、学習データを用いて、前記ニューラルネットワークにおけるパラメータの最適化を行うことにより前記ニューラルネットワークを学習する最適化手段と、を有することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、多層ニューラルネットワークにおいて識別時のメモリ使用量を抑えた識別精度の高いニューラルネットワークを学習することができる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施形態に係るシステム構成の一例を示す図。
【図２】第１の実施形態において識別対象画像の一例を示す図。
【図３】第１の実施形態に係る画像処理装置のハードウェア構成の一例を示す図。
【図４】第１の実施形態に係るＤＣＮＮの構造およびＤＣＮＮを用いた識別処理の一例を示す図。
【図５】第１の実施形態に係る識別時に用いる情報処理装置の機能構成の一例を示す図。
【図６】第１の実施形態におけるＮＮ学習装置の機能構成の一例を示す図。
【図７】各実施形態におけるＮＮ学習装置の機能構成の一例を示す図。
【図８】各実施形態における識別時の情報処理の一例を示すフローチャート。
【図９】各実施形態おける学習時の情報処理の一例を示すフローチャート。
【図１０】第１の実施形態におけるＮＮ構造の一例を示す図。
【図１１】第２の実施形態におけるＮＮにおけるカーネルのペアリングの一例を示す図。
【図１２】第２の実施形態におけるＮＮにおけるカーネルのクラスタリングの一例を示す図。
【図１３】第４の実施形態におけるＮＮにおける層構造追加の一例を示す図。
【発明を実施するための形態】
【００１５】
［第１の実施形態］
以下、本発明の第１の実施形態の詳細について図面を参照しつつ説明する。なお、以下ＮＮと記した場合にニューラルネットワークを意味するものとする。
【００１６】
図１は、本実施形態に係る情報処理装置を備えたシステムの概略的な構成例を示す図である。図１のシステムは、カメラ１０と、情報処理装置及び情報処理方法を実現する一構成例である情報処理装置２０とが、ネットワーク１５を介して接続されている。なお、情報処理装置２０とカメラ１０は、一体に構成されていてもよい。また、情報処理装置２０と情報処理装置及び情報処理方法を実現する一構成例であるＮＮ学習装置５０がネットワーク１５を介して接続されている。なお、情報処理装置２０とＮＮ学習装置５０が一体に構成されていてもよい。
【００１７】
カメラ１０は、情報処理装置２０による情報処理の対象となる画像を撮影する。図１は、木（ｔｒｅｅ）３０ａ、自動車（ｃａｒ）３０ｂ、建物（ｂｕｉｌｄｉｎｇ）３０ｃ、空（ｓｋｙ）３０ｄ、道（ｒｏａｄ）３０ｅ、人体（ｂｏｄｙ）３０ｆ等が画角（撮影範囲）内に存在するシーン３０を、カメラ１０が撮影する例を示している。画像処理装置２０は、カメラ１０で撮影されたシーン（撮影状況）３０において、各被写体が画像内に存在するかどうかを判定する（画像分類する）。本実施形態では、画像分類（ｃｌａｓｓｉｆｉｃａｔｉｏｎ）タスクで説明するが、被写体の位置を検出・被写体領域を抽出するタスクや他のタスクでもよい。
【００１８】
図２は、画像分類の例を示したものである。図２（ａ）は建物、図２（ｂ）は木（林・森）、図２（ｃ）は車と画像分類される例を示している。
【００１９】
図３は、本実施形態において、情報処理装置２０およびＮＮ学習装置５０のハードウェア構成の一例を示す図である。ＣＰＵ４０１は、画像処理装置２０およびＮＮ学習装置全体を制御する。ＣＰＵ４０１がＲＯＭ４０３やＨＤ４０４等に格納されたプログラムを実行することにより、後述する画像処理装置２０の機能構成及び画像処理装置２０に係るフローチャートの処理が実現される。ＲＡＭ４０２は、ＣＰＵ４０１がプログラムを展開して実行するワークエリアとして機能する記憶領域である。ＲＯＭ４０３は、ＣＰＵ４０１が実行するプログラム等を格納する記憶領域である。ＨＤ４０４は、ＣＰＵ４０１が処理を実行する際に要する各種のプログラム、閾値に関するデータ等を含む各種のデータを格納する記憶領域である。操作部４０５は、ユーザによる入力操作を受け付ける。表示部４０６は、画像処理装置２０の情報を表示する。ネットワークＩ／Ｆ４０７は、画像処理装置２０と、外部の機器とを接続する。
【００２０】
まず、本実施形態において学習されるニューラルネットワークを用いて画像を識別する際の処理について説明する。なお、本実施形態において説明するニューラルネットワークはＤｅｅｐ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ  （ＤＣＮＮ）を用いて説明する。ＤＣＮＮは畳みこみ演算を多く行うニューラルネットワークである。非特許文献１や非特許文献４に開示されているように畳みこみ（Ｃｏｎｖｏｌｕｔｉｏｎ）と非線形処理（ｒｅｌｕやｍａｘｐｏｏｌｉｎｇなど）の組み合わせで特徴層が実現される。そのあと、全結合層（ｆｕｌｌｃｏｎｅｃｔ）を経て画像分類結果（各クラスに対する尤度）を出力する。図４では、入力画像Ｉｍｇ１０００を入力すると、ｃｏｎｖｏｌｕｔｉｏｎ１００１，ｒｅｌｕ１００２，ｃｏｎｖｏｌｕｔｉｏｎ１００３，ｒｅｌｕ１００４，ｐｏｏｌｉｎｇ１００５をする例を示している。それを所定回数繰り返してｆｕｌｌｃｏｎｅｃｔ層１０１１、ｒｅｌｕ１０１２，ｆｕｌｌｃｏｎｅｃｔ層１０１３、ｒｅｌｕ１０１４，ｆｕｌｌｃｏｎｅｃｔ層１０１５を行って、出力結果を出力している。なお、ここでの入力画像Ｉｍｇ１０００はＤＣＮＮに入力する際に、所定画像サイズで画像をクロップするのが一般的である。
【００２１】
図５は本実施形態に係る識別時に用いる情報処理装置の機能構成を示しており、図５（ａ）は第１の実施形態における情報処理装置２０のＣＰＵ４０１が実行する処理を、それぞれ機能ブロックとして描いている。なお、図５（ａ）には、情報処理装置２０内の各機能ブロックの他に、カメラ１０に相当する撮影部２００も示している。撮影部２００は、カメラ１０３に相当し、識別対象画像を取得する。本実施形態の情報処理装置２０は、入力部２０１、出力部２０２、ＮＮパラメータ保持部５０６を有している。なお、ＮＮパラメータ保持部５０６は、不揮発性の記憶装置として計算機２０と接続された構成としてもよい。情報処理装置２０が有するこれらの各機能の詳細については、図５等を用いて後述する。
【００２２】
図８は、各実施形態において情報処理装置２０の各機能ブロックで実行される処理の概要を示す識別時の情報処理を示すフローチャートであり、図８（ａ）が本実施形態に係るフローチャートである。この図８（ａ）のフローチャートにおいて、入力工程Ｔ１１０では、入力部２０１が撮影部２００によって撮影された識別対象画像を入力データとして受信する。取得された識別対象画像は出力部２０２に送信される。次に、出力工程Ｔ２２０では、入力部２０１によって送信された識別対象画像をＮＮパラメータ保持部５０６に保持されたニューラルネットワークを用いて識別をして識別結果を出力する。本実施形態においては画像分類タスクであるため、画像のクラス名およびそのスコアが出力される。ここで、用いるニューラルネットワークの構造などについては後述する。
【００２３】
次に、図８（ａ）に示したフローチャートを参照しつつ、図５の（ａ）に示した画像処理装置２０のＣＰＵ４０１が実行する各処理のより具体的な流れを説明する。入力工程Ｔ１１０では、入力部２０１が図１で示したようなシーン３０を撮影部２００が撮影した画像を、識別対象画像１００として取得する。なお、識別対象画像は、図示しない外部装置に格納されている画像であってもよい。その場合、入力部２０１は外部装置から読み出された画像を識別対象画像として取得する。外部装置に格納されている画像は、例えば撮影部２００等で予め撮影された画像であってもよいし、ネットワーク等を経由するなどの他の方法で取得されてから格納された画像であってもよい。入力部２０１で取得された識別対象画像１００は出力部２０２に送信される。出力工程Ｔ１２０では、出力部２０２が入力工程Ｔ１１０で入力された識別対象画像１００をあらかじめ学習されたネットワークに入力して識別結果を出力する。ここで用いるネットワークは例えば先の図４（ａ）に示したようなネットワークを利用すればよい。ネットワークの構造およびパラメータはＮＮパラメータ保持部５０６に保持されている。
【００２４】
ここではニューラルネットワークの出力を直接画像識別結果として出力する例について説明した。しかし、変形例として、非特許文献２に開示されているように、ニューラルネットワークの途中の層の出力結果を特徴ベクトルとして、識別器に入力することで識別を行うこともできる。例えば、図４（ｂ）のように中間層のｒｅｌｕ処理の出力結果を特徴ベクトルｆｅａｔｕｒｅ１０１６としてＳｕｐｐｏｒｔ−Ｖｅｃｔｏｒ−Ｍａｃｈｉｎｅ（ＳＶＭ）１０１７に入力することで識別を行う。
【００２５】
なお、ここでは途中のｒｅｌｕ処理の出力結果を利用したが、その前のｃｏｎｖｏｌｕｔｉｏｎや後のｐｏｏｌｉｎｇ処理の出力でもいいし、他の層の出力結果、またそれらの組み合わせでもよい。また、ここでは識別器としてＳＶＭを利用したが、他の識別器を用いてもよい。また、図４（ｂ）の場合は入力画像に対して識別結果を一意に出力するが、物体領域を識別する場合などで画素や小領域ごとに識別する必要がある場合には図４（ｃ）のような構成を用いる。まず、所定の中間層の出力結果を補間処理して入力画像サイズと同サイズに変換する。それから、注目している画素もしくは小領域における所定の中間層の出力結果１０１９を特徴ベクトルとして、先と同様にＳｕｐｐｏｒｔ−Ｖｅｃｔｏｒ−Ｍａｃｈｉｎｅ（ＳＶＭ）１０２１に入力することで識別を行う。なお、ここでＳｕｐｐｏｒｔ−Ｖｅｃｔｏｒ−Ｍａｃｈｉｎｅ（ＳＶＭ）を用いたが、それ以外の識別器でもよい。
【００２６】
以上のような変形例に関し、情報処理装置２０のＣＰＵ４０１が実行する処理を、それぞれ機能ブロックとして図５（ｂ）に図示している。なお、図５（ｂ）には、情報処理装置２０内の各機能ブロックの他に、カメラ１０に相当する撮影部２００も示している。ほぼ図５（ａ）に示した機能ブロックと同様であるが、識別部２０３、識別器保持部５１３が追加されている。また、出力部２０２の処理内容が異なる。なお、識別器保持部５１３も先のＮＮパラメータ保持部５０６と同じように不揮発性の記憶装置として計算機２０と接続された構成としてもよい。情報処理装置２０が有するこれらの各機能の詳細については、図５等を用いて後述する。
【００２７】
ここで、上記変形例のフローチャートを図８（ｂ）に示す。入力工程Ｔ２１０の処理内容は先に示した入力工程Ｔ１１０と同様の処理であるため説明を省略する。出力工程Ｔ２２０では、入力工程Ｔ２１０で入力された識別対象画像１００をあらかじめ学習されたネットワークに入力して先に図４（ｂ）、（ｃ）で示したように中間層の出力結果を出力する。出力された中間層の出力結果は識別部２０３に送信される。次に、識別工程Ｔ２３０では、識別部２０３が出力工程Ｔ２２０で取得された中間層の出力結果を識別器に入力して識別結果を出力する。識別器はあらかじめ学習されており、識別器保持部５１３に保持されている。
【００２８】
次に、本実施形態において用いられるニューラルネットワークを学習する際の処理について説明する。図６は本実施形態におけるＮＮ学習装置の機能構成の一例を示す図であり、図６（ａ）は第１の実施形態におけるＮＮ学習装置５０のＣＰＵ４０１が実行する処理を、それぞれ機能ブロックとして描いている。本実施形態のＮＮ学習装置５０は、ＮＮ設定部５０１、カーネル選択部５０２、パラメータ初期値設定部５０３、パラメータ最適化部５０４を有している。また、ＮＮパラメータ保持部５０６、学習データ保持部５０７を保持している。なお、ＮＮパラメータ保持部５０６および学習データ保持部５０７は、不揮発性の記憶装置として計算機２０と接続された構成としてもよい。ＮＮ学習装置５０が有するこれらの各機能の詳細については、図６等を用いて後述する。
【００２９】
図９はＮＮ学習装置５０の各機能ブロックで実行される処理の概要を示すフローチャートであり、図９（ａ）が本実施形態に係るフローチャートである。この図９（ａ）のフローチャートにおいて、ＮＮ設定工程Ｓ１１０では、ＮＮ設定部５０１が学習するニューラルネットワークの構造およびパラメータ数を決定する。本実施形態では、先に説明したＤｅｅｐ  Ｃｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ（ＤＣＮＮ）を用いて説明する。そのＣｏｎｖｏｌｕｔｉｏｎ層を図示した例が図１０である。同図に示されるように、各層に入力されるＮｎ（ｎ＝１、２、…）チャンネルの入力が畳みこみによりＮｎ＋１チャンネルの出力に変換される。なお、図１０においてはＣｏｎｖｏｌｕｔｉｏｎのあとに行うＲｅｌｕやＰｏｏｌｉｎｇの処理は省略している。各Ｃｏｎｖｏｌｕｔｉｏｎ層で用いるフィルタ群（カーネル）は４次元のテンソル表現で表される。例えば、（フィルタサイズ）×（フィルタサイズ）×（（入力）チャネル数）×（フィルタ数＝出力チャンネル数）で表される。本実施形態では、（フィルタサイズ）×（フィルタサイズ）×（チャネル数）を１つの単位（部分カーネル）として、他のＣｏｎｖｏｌｕｔｉｏｎ層と共有することでパラメータ数を減らし、識別時のメモリの使用量を抑えている。
【００３０】
ＮＮ設定工程Ｓ１１０では、識別時に使用できるメモリ量に応じて部分カーネルをいくつ持てるかを設定する。このときに構造およびパラメータ数を識別時に利用するハードウェアのスペックに応じて決定してもよい。例えば、ＣＮＮの場合、回路実装すれば高速に処理できることが知られているが、学習された辞書（パラメータ）を回路上にあらかじめ展開する必要があるためメモリ量が必要になる。あらかじめメモリ量を決めておけば使用できるパラメータ数を決定することができる。部分カーネルに用いることができるメモリ量は、全メモリ量から全結合層（ｆｕｌｌｃｏｎｅｃｔ）に用いる結合重み用のメモリ、各層の出力結果を一時的に保持するためのメモリ以外となる。先に説明したニューラルネットワークの途中の層の出力結果を特徴ベクトルとして、識別器に入力する場合には、全結合層（ｆｕｌｌｃｏｎｅｃｔ）を用いなくてもよい。例えば、この部分カーネルをＭ個持つこととする。Ｍは図１０に示した各Ｃｏｎｖｏｌｕｔｉｏｎ層のフィルタ数Ｋ１、Ｋ２、Ｋ３、Ｋ４と同じである必要はない。どの部分カーネル同士を共通化するかは次のカーネル選択工程で決定する。全結合層（ｆｕｌｌｃｏｎｅｃｔ）を用いない場合の圧縮率を非特許文献４に開示されているＶＧＧ１６の場合で説明する。部分カーネルを３×３×６４×１とすれば、無圧縮の場合のＣｏｎｖｏｌｕｔｉｏｎに用いる重み係数の数は、以下の数式１となる。
３×３×（３×６４＋６４×６４＋６４×１２８＋１２８×１２８
＋１２８×２５６＋２５６×２５６×３＋２５６×５１２＋５１２×５１２×７）
＝２０，０１８，８８０    （数式１）
これに対して、上記の方法で圧縮した場合には、以下の数式２となる。
３×３×３×６４＋３×３×６４×１×Ｍ    （数式２）
圧縮率はＭ＝４０９６の場合で約８．５倍、Ｍ＝２０４８の場合で、約１６．９倍、Ｍ＝１０２４の場合で約３３．９倍となる。なお、ここでは最初の層の入力がＲＧＢ画像（３チャンネル）であり、カーネルが３×３×３×６４であるため、最初の層のＣｏｎｖｏｌｕｔｉｏｎカーネルは共通化しない。また、実際には各層でＭ個の部分カーネルのうちどの部分カーネルを用いるかというメモリアドレス情報が必要になるため、上記の例より圧縮率は少し下がるが、その部分の計算は割愛する。設定されたニューラルネットワークの構造およびパラメータ数はカーネル選択部５０２が送信される。
【００３１】
次に、カーネル選択工程Ｓ１２０では、カーネル選択部５０２がＮＮ設定工程Ｓ１１０において設定された部分カーネル数Ｍに応じて、共通化する部分カーネルを選択する。例えば、図１０において部分カーネル２００１と部分カーネル２０１０と部分カーネル２０１５を共通化する。共通化とは畳みこみに用いるカーネルの重み係数を同じ値とすることを意味し、まったく同じ部分カーネルを用いることで省メモリ化する。共通化した場合の重み係数の学習方法（最適化方法）については後述する。Ｍ個の各部分カーネルに対してどの部分カーネルを割り当てるかを決定する。つまり、すべての部分カーネルがＭ個の部分カーネルで表現される。部分カーネルは層にまたがって選択してもよいし（例えば部分カーネル２００１と２０１０の選択）、層内で選択してもよい（例えば部分カーネル２０１５と２０１６の選択）。そして、選択されたカーネル情報はパラメータ初期値設定部５０３に送信される。
【００３２】
次に、パラメータ初期値設定工程Ｓ１３０では、パラメータ初期値設定部５０３がＮＮ設定工程Ｓ１１０およびカーネル選択工程Ｓ１２０で設定されたネットワークの各パラメータの初期値を決定する。このときに、カーネル選択工程Ｓ１２０において共通化する部分カーネルのパラメータは同一の初期値を取るようにする。初期値の設定方法はランダム値でもよい、ユーザが所定の方法で決定してもよい。設定されたパラメータの構造およびその初期値はパラメータ最適化部５０４に送信される。
【００３３】
次に、パラメータ最適化工程Ｓ１４０では、パラメータ最適化部５０４が学習データ保持部５０７に保持されている学習データおよびＧＴ（正解値）を用いてネットワークにおけるパラメータを最適化する。パラメータの最適化にはＢａｃｋ  Ｐｒｏｐａｇａｔｉｏｎを用いればよい。本実施形態では、カーネル選択工程Ｓ１２０において選択されたカーネルの重みは同じ値を取る必要がある。そのため、通常のＢａｃｋ  Ｐｒｏｐａｇａｔｉｏｎで各重みＷに対する更新値ΔＷを計算したのち、共通化されたカーネルの各重みＷが同じ値になるように更新する。例えば、共通化されたカーネルにおける重みＷに対するΔＷの総和もしくは平均、最大値、中央値などを用いて更新すればよい。あらかじめ設定しておいた学習回数分（エポック数）、パラメータを更新したあと最適化されたパラメータおよびネットワークの構造はＮＮパラメータ保持部５０６に送信され保持される。
【００３４】
また、パラメータ最適化時に（部分）カーネルを共通化して重みを同じ値にしていることで学習誤差が減らない場合がある（学習がうまくいかない場合がある）。そういった場合には、共通化しているカーネルの重みＷに対するΔＷの中で他の共通化しているＷのΔＷに対して大きい値を取っている重みＷ（もしくはカーネル）の共通化を解除する。もしくはΔＷが小さいＷ（もしくはカーネル）の共通化を解除してもよい。それにより圧縮率は下がるが、学習時のパラメータの自由度があがるため学習誤差が減る可能性がある。もしくは、カーネルの共通化をランダムに解除してもよい。また、変形例としては、各Ｃｏｎｖｏｌｕｔｉｏｎ層で用いる４次元のフィルタ群（カーネル）の他に、１×（フィルタ数＝出力チャンネル数）で定義されるバイアス項（ベクトル）を定義して、バイアス項は各層ごとに独立に学習する。また、別の変形例としては、各部分カーネルごとに係数をもち、その係数は部分カーネルごとに独立に学習する。より具体的には数式３にあるように共通重み
【００３５】
【数１】
2018055259.tif 000003
、係数項ｋ１〜ｋ４およびバイアス項ｂ１〜ｂ４を推定する。
【００３６】
【数２】
2018055259.tif 000004
【００３７】
もしくは、各更新時に
【００３８】
【数３】
2018055259.tif 000005
、ｋ１〜ｋ４とｂ１〜ｂ４を交互に更新するようにしてもよい。
【００３９】
以上のようにして共通部分を持ったネットワークが学習される。また、先に説明したニューラルネットワークの途中の層の出力結果を特徴ベクトルとして、識別器に入力する場合には、ニューラルネットワークの学習後に識別器を学習する。図６（ｂ）は識別器を学習する場合のＮＮ学習装置５０のＣＰＵ４０１が実行する処理を、それぞれ機能ブロックとして描いている。図６（ａ）で説明したＮＮ学習装置５０とほぼ同様であるが、識別器学習部５０５、識別器保持部５１３を追加で有している。なお、識別器保持部５１３は不揮発性の記憶装置として計算機２０と接続された構成としてもよい。
【００４０】
図９（ｂ）は、本実施形態において識別器を学習する場合のＮＮ学習装置５０の各機能ブロックで実行される処理の概要を示す図である。この図９（ｂ）のフローチャートにおいて、図９（ａ）で説明した処理の概要に対して識別器学習工程Ｓ１５０が追加されている。識別器学習工程Ｓ１５０では、識別器学習部５０５がパラメータ最適化工程Ｓ１５０においてパラメータ最適化されたネットワークを特徴抽出器として用いて、その特徴ベクトルを入力とする識別器を学習する。より具体的には、学習用データ保持部５０７に保持されているデータをネットワークに入力して特徴量を取得する。その特徴量と学習用データに対するＧＴ（正解値）を基に識別器を学習する。識別器はＳｕｐｐｏｒｔ−Ｖｅｃｔｏｒ−Ｍａｃｈｉｎｅ（ＳＶＭ）などを用いればよい。学習された識別器は識別器保持部５１３に送信され、保持される。
【００４１】
なお、本実施形態では部分カーネルを共通化したが、２次元フィルタやカーネル（４次元テンソル）ごと共通化してしてもよい。学習方法などは先に説明したので割愛する。
【００４２】
以上のように本実施形態によれば、ＮＮ学習装置５０はニューラルネットワークにおけるカーネルもしくはフィルタを共通化して、パラメータ最適化することで、識別時のメモリ使用量を抑制しつつネットワークを学習することができる。
【００４３】
［第２の実施形態］
次に、本発明を実施するための第２の実施形態について、図面を参照して説明する。なお、上述した第１の実施形態における各構成と同一の構成については、その説明を省略する。本実施形態は、ニューラルネットワークの学習途中にカーネルもしくはフィルタで類似しているものをグループ化し、そのグループに属するカーネルもしくはフィルタが同一の重み係数をもつという制約条件のもとで学習を継続するものである。
【００４４】
本実施形態において、画像を識別する際の処理は第１の実施形態と同様であるため、ここでは学習時の処理のみ説明する。図７は、第２の実施形態以降の各実施形態におけるＮＮ学習装置の機能構成の一例を示す図であり、図７（ａ）が本実施形態のＮＮ学習装置５０の各機能ブロックで実行される処理の概要を示している。図６（ａ）で説明したＮＮ学習装置５０と共通する機能部が多いが、連結順および機能が異なる。また、パラメータ設定部５０８、追加学習部５０９が追加されている。ＮＮ学習装置５０が有するこれらの各機能の詳細については、図７等を用いて後述する。
【００４５】
図９（ｃ）は、本実施形態のＮＮ学習装置５０の各機能ブロックで実行される処理の概要を示すフローチャートである。この図９（ｃ）のフローチャートにおいて、ＮＮ設定工程Ｓ２１０では、ＮＮ設定部５０１が学習するニューラルネットワークの構造およびパラメータ数を決定する。ここでは、第１の実施形態のように共通化する部分カーネル数やフィルタ数を決定する必要はない。設定されたニューラルネットワークの構造およびパラメータ数はパラメータ初期値設定部５０３に送信される。
【００４６】
次に、パラメータ初期値設定工程Ｓ２２０では、パラメータ初期値設定部５０３がＮＮ設定工程Ｓ２１０において設定されたニューラルネットワークの各パラメータの初期値を決定する。ランダム値でもよいし、ユーザが決定してもよい。設定されたパラメータ初期値はパラメータ最適化部５０４に送信される。
【００４７】
次に、パラメータ最適化工程Ｓ２３０では、パラメータ最適化部５０４が学習データ保持部５０７に保持されている学習データおよびＧＴ（正解値）を用いてネットワークのパラメータを最適化する。学習アルゴリズムには第１の実施形態と同様にＢａｃｋ  Ｐｒｏｐａｇａｔｉｏｎを用いればよい。ここでは、カーネルの共通化などは行わない。最適化されたネットワークの構造およびパラメータはカーネル選択部５０２に送信される。
【００４８】
次に、カーネル選択工程Ｓ２４０では、カーネル選択部５０２がパラメータ最適化工程Ｓ２３０で最適化されたネットワークにおいてカーネルもしくはフィルタを共通化する。共通化の方法は以下の２つの方法がある。１つ目の方法は、図１１に示すように、類似度の高いフィルタもしくは部分カーネルをペアリングする。図１１には部分カーネル２００１と部分カーネル２００９のフィルタをペアリングしている例と、部分カーネル２００６と部分カーネル２０１２、部分カーネル２０１５、２０１６と部分カーネル２０２２、２０２３をペアリングしている例を示している。類似度は重み係数行列の相関、そのＣｏｎｖｏｌｕｔｉｏｎカーネルを畳みこんだ際の出力値の相関、そのあとに行うｒｅｌｕなどの非線形処理後の出力値の相関などを用いればよい。
【００４９】
２つ目の方法は、図１２に示すようにパラメータ最適化されたネットワークをフィルタ係数空間でクラスタリングする。例えば、２次元フィルタを１単位として共通化する場合には、（フィルタサイズ）×（フィルタサイズ）次元の空間（例えば、３×３＝９次元）でクラスタリングすればよい。また、部分カーネルを１単位として共通化する場合には、（フィルタサイズ）×（フィルタサイズ）×（チャンネル数）次元の空間（例えば、３×３×６４＝５７６次元）でクラスタリングをすればよい。
【００５０】
次に、パラメータ設定工程Ｓ２５０では、パラメータ設定部５０８がカーネル選択工程Ｓ２４０においてペアリングされた、もしくは同じクラスタに属したカーネルのパラメータを設定する。例えば、共通化するカーネルの各重みＷの値を平均化する、代表カーネルを１つ選択してそのカーネルのＷの値にすべてのカーネルを置換するなどの処理を行えばよい。設定された各カーネルのパラメータは追加学習部５０９に送信される。
【００５１】
次に、追加学習工程Ｓ２６０では、追加学習工部５０９がパラメータ設定工程において設定されたパラメータをネットワークの初期値として学習データを用いて追加学習（ｆｉｎｅｔｕｎｅ）を行い、再度パラメータを最適化する。追加学習は先に説明したパラメータ最適化工程Ｓ２３０と同様の処理を行えばよいが、ネットワークの学習率を先のパラメータ最適化工程Ｓ２３０時より下げるなどしたほうがよい。追加学習されたネットワークの構造およびパラメータはＮＮパラメータ保持部５０６に送信され、保持される。
【００５２】
なお、本実施形態も第１の実施形態と同様にネットワークを学習後、識別器を別途学習してもよいが、第１の実施形態の時と同様に学習すればよいため説明を省略する。
【００５３】
以上のように本実施形態によれば、ＮＮ学習装置５０はパラメータ最適化された（学習された）ニューラルネットワークにおけるカーネルもしくはフィルタを共通化（ペアリング、クラスタリング）してパラメータを代表値に置換する。さらに、そのパラメータを初期値として追加学習することで、識別時のメモリ使用量を抑制しつつ、ネットワークを学習することができる。
【００５４】
［第３の実施形態］
次に、本発明を実施するための第３の実施形態について、図面を参照して説明する。なお、上述した第１、第２の実施形態における各構成と同一の構成については、その説明を省略する。本実施形態は、第１、第２の実施形態のようにニューラルネットワークを複数回にわたり学習をしてニューラルネットワークを学習したデータの他に、検定データ（学習評価用データ）を用意する。そして、その検定データに対して識別を行いその識別結果が高いニューラルネットワークを選択するものである。
【００５５】
本実施形態において、画像を識別する際の処理は第１の実施形態において説明した例と同様であるため、ここでは学習時の処理のみ説明する。図７（ｂ）は、本実施形態のＮＮ学習装置５０の各機能ブロックで実行される処理の概要を示す図である。図６（ａ）で説明したＮＮ学習装置５０と共通する機能部が多いが、連結順および機能が異なる。また、ＮＮ選択部５０６が追加で保持されている。ＮＮ学習装置５０が有するこれらの各機能の詳細については、図７等を用いて後述する。
【００５６】
図９（ｄ）は、本実施形態のＮＮ学習装置５０の各機能ブロックで実行される処理の概要を示すフローチャートである。この図９（ｄ）のフローチャートにおいて、ＮＮ設定工程Ｓ３１０では、ＮＮ設定部５０１が学習するニューラルネットワークの構造およびパラメータ数を決定する。本実施形態では、第１の実施形態と同様の方法でネットワークを学習するため、第１の実施形態におけるＮＮ設定工程Ｓ１１０と同様の処理内容であるため説明を省略する。以下のカーネル選択工程Ｓ３３０、パラメータ初期値設定工程Ｓ３４０、パラメータ最適化工程Ｓ３５０も第１の実施形態におけるカーネル選択工程Ｓ１２０、パラメータ初期値設定工程Ｓ１３０、パラメータ最適化工程Ｓ１４０と同様である。カーネル選択工程Ｓ３３０、パラメータ初期値設定工程Ｓ３４０、パラメータ最適化工程Ｓ３５０は所定回数行われ、選択されたカーネルおよびパラメータ初期値が異なるため違うネットワークが学習される。学習された各ネットワークの構造およびパラメータはＮＮパラメータ保持部５０６に送信され、保持される。
【００５７】
所定回数ネットワークの学習を行ったのちにＮＮ選択工程Ｓ３６０では、ＮＮ選択部５１０がＮＮパラメータ保持部に保持されているネットワークの中で識別精度が高いネットワークを選択する。識別精度はパラメータ最適化工程Ｓ３５０においてパラメータ最適化時の学習誤差で評価してもよいが、本実施形態では学習評価用データ保持部５１３に保持されている学習評価用データを識別・評価することで識別精度の高いネットワークを選択する。選択されたネットワークの構造およびパラメータはＮＮパラメータ保持部５０６に送信され、保持される。なお、本実施形態も第１の実施形態と同様にネットワークを学習後、識別器を別途学習してその識別器の中で最も識別精度が高いネットワークおよび識別器を選択してもよい。
【００５８】
また、本実施形態におけるネットワークは第１の実施形態におけるＮＮ学習方法で複数のネットワークを学習したが、第２の実施形態におけるＮＮ学習方法でネットワークを学習してから選択してもよい。
【００５９】
以上のように本実施形態によれば、ＮＮ学習装置５０はいくつかのメモリ使用量を減らしたネットワークを学習したのち学習評価用データにより学習評価を行う。その学習評価結果が良かったネットワークの構造およびパラメータを選択することで、識別時のメモリ使用量を抑制しつつ、ネットワークを得ることができる。
【００６０】
［第４の実施形態］
次に、本発明を実施するための第４の実施形態について、図面を参照して説明する。なお、上述した第１〜第３の実施形態における各構成と同一の構成については、その説明を省略する。本実施形態は、第１〜第３の実施形態もしくは既存手法において学習されたニューラルネットワークに対して、ネットワーク内のカーネルやフィルタを用いてさらに学習を行うものである。
【００６１】
本実施形態において、画像を識別する際の処理は第１の実施形態において説明した例と同様であるため、ここでは学習時の処理のみ説明する。図７（ｃ）は、本実施形態のＮＮ学習装置５０の各機能ブロックで実行される処理の概要を示す図である。本実施形態のＮＮ学習装置５０は、層構造追加部５１１、第２追加学習部５１２を有している。また、ＮＮパラメータ保持部５０６、学習データ保持部５０７を保持している。なお、ＮＮパラメータ保持部５０６および学習データ保持部５０７は、不揮発性の記憶装置として計算機２０と接続された構成としてもよい。ＮＮ学習装置５０が有するこれらの各機能の詳細については、図７等を用いて後述する。
【００６２】
図９（ｅ）は、本実施形態のＮＮ学習装置５０の各機能ブロックで実行される処理の概要を示すフローチャートである。この図９（ｅ）のフローチャートにおいて、ＮＮ設定工程Ｓ４１０ではＮＮ設定部５０１が以前学習されたニューラルネットワークの構造およびパラメータをＮＮパラメータ保持部５０６からロードする。ロードしてくるネットワークは第１〜３の実施形態において学習されたものでもよいし、それ以外のネットワークでもよい。ロードされたネットワークは層構造追加部５１１に送信される。
【００６３】
次に、層構造追加工程Ｓ４２０では、層構造追加部５１１がＮＮ設定工程Ｓ４１０でロードされたネットワークに対して層構造を追加する。図１３に示すようにロードしたネットワークに対してＫ５個の部分カーネル（図１３中における２０３０〜２０３７）を追加し、層を追加している。ここで設定する部分カーネルはその前の層内に用いられていた部分カーネルであり、同じ部分カーネルを用いることでカーネル用のメモリを増やさずに層を追加することができる。追加された層を含めたネットワークの構造およびパラメータは第２追加学習部５１２に送信される。
【００６４】
次に、第２追加学習工程Ｓ４３０では、第２追加学習部５１２が層構造追加工程Ｓ４２０において設定されたネットワークのパラメータを初期値として追加学習（ｆｉｎｅｔｕｎｅ）を行い、パラメータを最適化する。最適化方法は第１の実施形態のパラメータ最適化工程Ｓ１４０で説明した方法と同様でよいが、先の追加学習工程と同様に学習率は下げるなどしたほうがよい。追加学習されたネットワークの構造およびパラメータはＮＮパラメータ保持部５０６に送信され、保持される。
【００６５】
なお、本実施形態も第１の実施形態と同様にネットワークを学習後、識別器を別途学習してもよいが、第１の実施形態の時と同様に学習すればよい。
【００６６】
以上のように本実施形態によれば、ＮＮ学習装置５０は既存のネットワークに対してカーネルを再利用することで、カーネル用のメモリを増やさずにネットワークの層を追加することができる。層追加してパラメータを最適化することでより識別精度の高いネットワークを学習することができる。
【００６７】
［その他の実施形態］
また、本発明は、各実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵ等）がプログラムを読出し実行する処理である。また、本発明は、複数の機器から構成されるシステムに適用しても、１つの機器からなる装置に適用してもよい。本発明は上記実施例に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施例の有機的な組合せを含む）が可能であり、それらを本発明の範囲から除外するものではない。即ち、上述した各実施例及びその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【００６８】
１０  カメラ
２０  画像処理装置
１５  ネットワーク
３０  シーン
１００  識別対象画像
４０１  ＣＰＵ
４０２  ＲＡＭ
４０３  ＲＯＭ
４０４  ＨＤ
４０５  操作部
４０６  表示部
４０７  ネットワークＩ／Ｆ
【図１】
2018055259.tif 000006
【図２】
2018055259.tif 000007
【図３】
2018055259.tif 000008
【図４】
2018055259.tif 000009
【図５】
2018055259.tif 000010
【図６】
2018055259.tif 000011
【図７】
2018055259.tif 000012
【図８】
2018055259.tif 000013
【図９】
2018055259.tif 000014
【図１０】
2018055259.tif 000015
【図１１】
2018055259.tif 000016
【図１２】
2018055259.tif 000017
【図１３】
2018055259.tif 000018