(57)【要約】      （修正有）【課題】認識システムのデータ認識精度を向上させる。【解決手段】ハッシュ関数更新部１３３は、まず学習データをＮＮに入力して得られた出力データを第１の識別器セットに入力することにより得られる識別結果の誤差を判定する。そして、ＮＮ更新部１２６は、この識別結果の誤差をＮＮに逆伝播することにより、ＮＮのパラメータを更新する。さらに、ハッシュ関数更新部１３３は、学習データをパラメータ更新後のＮＮに入力して得られた出力データを第２の識別器セットに入力することにより得られる識別結果の誤差を判定する。そして、ＮＮ更新部１２６は、この識別結果の誤差をＮＮに逆伝播することにより、ＮＮのパラメータを再度更新する。ハッシュ関数選択部１３２は、複数の識別器から第１の識別器セットと第２の識別器セットとを選択する。【選択図】図６
2018026122.tif 000002
【特許請求の範囲】
【請求項１】
学習データを認識器に入力して出力データを得る処理手段と、
前記出力データを複数の識別器に入力することにより得られる前記学習データの識別結果の誤差を判定する判定手段と、
前記識別結果の誤差に基づいて前記認識器の学習処理を行う第１の学習手段と、
前記識別結果の誤差に基づいて前記複数の識別器のＯｎｅ−ｃｌａｓｓ学習処理を行う第２の学習手段と、
を備え、
前記第１の学習手段は、前記識別結果の誤差を認識器に逆伝播することにより前記認識器の学習処理を行うことを特徴とする、情報処理装置。
【請求項２】
学習データを認識器に入力して出力データを得る処理手段と、
前記出力データを複数の識別器に入力することにより得られる前記学習データの識別結果の誤差を判定する判定手段と、
前記識別結果の誤差に基づいて前記認識器の学習処理を行う第１の学習手段と、
を備えることを特徴とする情報処理装置。
【請求項３】
前記第１の学習手段は、前記識別結果の誤差を認識器に逆伝播することにより前記認識器の学習処理を行うことを特徴とする、請求項２に記載の情報処理装置。
【請求項４】
前記判定手段は、前記複数の識別器のそれぞれに前記出力データを入力することにより得られる、前記複数の識別器のそれぞれによる前記学習データの識別結果の誤差に基づいて、前記複数の識別器全体についての識別結果の誤差を判定し、
前記第１の学習手段は、前記判定された前記複数の識別器全体についての識別結果の誤差を認識器に逆伝播する
ことを特徴とする、請求項１乃至３の何れか一項に記載の情報処理装置。
【請求項５】
前記第１の学習手段は、前記複数の識別器による識別能力を低下させ、前記識別能力が低下した状態で得られる前記識別結果の誤差を認識器に逆伝播することにより、前記認識器の学習処理を行うことを特徴とする、請求項１乃至４の何れか一項に記載の情報処理装置。
【請求項６】
前記複数の識別器から一部の識別器を選択する選択手段をさらに備え、
前記第１の学習手段は、前記学習データを前記認識器に入力して得られた出力データを前記一部の識別器に入力することにより得られる前記識別結果の誤差を、前記認識器に逆伝播することにより、前記認識器の学習処理を行う
ことを特徴とする、請求項１乃至５の何れか１項に記載の情報処理装置。
【請求項７】
前記選択手段は、前記複数の識別器から第１の識別器セットと第２の識別器セットとを選択し、
前記第１の学習手段は、
学習データを前記認識器に入力して得られた出力データを前記第１の識別器セットに入力することにより得られる識別結果の誤差を、前記認識器に逆伝播することにより、前記認識器のパラメータを更新し、
学習データをパラメータ更新後の前記認識器に入力して得られた出力データを前記第２の識別器セットに入力することにより得られる識別結果の誤差を、前記認識器に逆伝播することにより、前記認識器のパラメータを再度更新する
ことを特徴とする、請求項６に記載の情報処理装置。
【請求項８】
前記識別結果の誤差に基づいて前記複数の識別器の学習処理を行う第２の学習手段をさらに備えることを特徴とする、請求項２乃至７の何れか１項に記載の情報処理装置。
【請求項９】
学習データを認識器に入力して出力データを得る処理手段と、
前記出力データを複数の識別器に入力することにより得られる前記学習データの識別結果の誤差を判定する判定手段と、
前記識別結果の誤差に基づいて前記複数の識別器の学習処理を行う第２の学習手段と、
を備えることを特徴とする情報処理装置。
【請求項１０】
前記第２の学習手段は、前記複数の識別器間の類似度が低いほど評価値が高くなる目的関数を用いて学習を行うことを特徴とする、請求項１、８、及び９の何れか１項に記載の情報処理装置。
【請求項１１】
前記第２の学習手段は、前記複数の識別器間の直交性が高いほど評価値が高くなる目的関数を用いて学習を行うことを特徴とする、請求項１及び８乃至１０の何れか１項に記載の情報処理装置。
【請求項１２】
画像を表す画像データ及び当該画像の種類を示す教師情報を取得し、画像処理により１つの前記画像から複数の前記学習データを生成する前処理手段をさらに備え、
前記前処理手段は、前記画像処理により前記画像の種類が変化しない画像を選択し、前記選択された画像に対して前記画像処理を行い、前記画像処理前の前記選択された画像と、前記画像処理後の前記選択された画像と、を前記学習データとして出力することを特徴とする、請求項１乃至１１の何れか１項に記載の情報処理装置。
【請求項１３】
画像データを前記学習処理後の認識器に入力して得られた出力データを前記複数の識別器に入力することにより得られた識別結果に基づいて、前記画像データ中の異常を検知する検知手段をさらに備えることを特徴とする、請求項１乃至１２の何れか１項に記載の情報処理装置。
【請求項１４】
入力データを認識器に入力して出力データを得る処理手段と、
前記出力データを複数の識別器に入力することにより前記入力データの識別結果を得る識別手段と、
を備えることを特徴とする情報処理装置。
【請求項１５】
前記複数の識別器は、前記複数の識別器の類似度が低いほど評価が高くなるように学習により最適化されていることを特徴とする、請求項１４に記載の情報処理装置。
【請求項１６】
前記認識器は、学習データを認識器に入力して得られた出力データを前記複数の識別器に入力することにより得られる識別結果の誤差を、前記認識器に逆伝播する学習処理によって得られていることを特徴とする、請求項１４又は１５に記載の情報処理装置。
【請求項１７】
前記複数の識別器はＯｎｅ−ｃｌａｓｓ識別器、弱識別器、線形識別器、又はハッシュ関数を含むことを特徴とする、請求項１乃至１６の何れか１項に記載の情報処理装置。
【請求項１８】
入力データを認識器に入力して得られた出力データを識別器に入力することにより前記入力データの識別結果を得るシステムが有する前記認識器の学習処理を行う情報処理装置であって、
前記識別器の識別能力を低下させ、学習データを認識器に入力して得られた出力データを前記識別能力が低下した識別器に入力することにより得られる識別結果の誤差を前記認識器に逆伝播することにより、前記認識器の学習処理を行う手段を備えることを特徴とする、情報処理装置。
【請求項１９】
前記認識器はニューラルネットワークであることを特徴とする、請求項１乃至１８の何れか１項に記載の情報処理装置。
【請求項２０】
前記情報処理装置は、入力された製品の画像に基づいて異常を検知することを特徴とする、請求項１乃至１９の何れか１項に記載の情報処理装置。
【請求項２１】
前記識別器は、カーネル法に基づいて非線形にデータを写像することを特徴とする、請求項１乃至２０の何れか１項に記載の情報処理装置。
【請求項２２】
情報処理装置が行う情報処理方法であって、
学習データを認識器に入力して出力データを得る処理工程と、
前記出力データを複数の識別器に入力することにより得られる前記学習データの識別結果の誤差を判定する判定工程と、
前記識別結果の誤差を前記認識器に逆伝播することにより前記認識器の学習処理を行う第１の学習工程と、
を備えることを特徴とする情報処理方法。
【請求項２３】
コンピュータを、請求項１乃至２１の何れか１項に記載の情報処理装置が備える各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
映像画像等のデータから、例えば物体及びその状態を認識するために、学習データを用いて認識システムの学習を行い、学習後の認識システムを用いて入力データを判定する装置や方法が知られている。このような方法の一つとして、Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ（ＮＮ）を用いる方法が知られている。例えば、非特許文献１は、ＮＮを用いて画像中に含まれる物体の種類を自動的に認識する方法を開示している。非特許文献１では、ＮＮとしてＣｏｎｖｏｌｕｔｉｏｎａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ（ＣＮＮ）が用いられている。ＣＮＮは、局所的な畳み込み処理を行うＣｏｎｖｏｌｕｔｉｏｎａｌ  Ｌａｙｅｒを持つという特徴がある。また、非特許文献１、特許文献１及び特許文献２は、ＮＮを構成するニューロンを確率的にＯＦＦにする処理を行うことで、過学習が抑制され、ＮＮの汎化能力が向上することを示している。
【０００３】
また、近年、ＮＮの出力を他の識別器や確率モデル等への入力として用いる技術が盛んに研究・開発されている。例えば、非特許文献２は、ＣＮＮと、ＣＮＮの出力を受け取るＬｉｎｅａｒ  Ｓｕｐｐｏｒｔ  Ｖｅｃｔｏｒ  Ｍａｃｈｉｎｅ（Ｌｉｎｅａｒ  ＳＶＭ）と、の学習を同時に行う方法を開示している。非特許文献２では、ＳＶＭの学習誤差をＣＮＮの学習に利用するという特徴がある。非特許文献３は、ＣＮＮと、ＣＮＮの出力を受け取るＳｔｒｕｃｔｕｒｅｄ  ＳＶＭと、の学習を同時に行う方法を開示している。非特許文献４は、ＣＮＮと、ＣＮＮの出力に基づいてクラスタリングを行う分類器と、の学習を同時に行う方法を開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開第２０１４／０１８０９８６号明細書
【特許文献２】国際公開第２０１４／１０５８６６号
【非特許文献】
【０００５】
【非特許文献１】A. Krizhevsky et al. "ImageNet Classification with Deep Convolutional Neural Networks", Advances in Neural Information Processing Systems 25 (NIPS), 2012.
【非特許文献２】Y. Tang. "Deep Learning using Linear Support Vector Machines", ICML 2013 Challenges in Representation Learning, 2013.
【非特許文献３】S. Zhang et al. "Deep neural support vector machines for speech recognition", 2015 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), 2015.
【非特許文献４】J. Xie et al. "Unsupervised deep embedding for clustering analysis", arXiv:1511.06335, 2015, http://lib-arxiv-008.serverfarm.cornell.edu/abs/1511.06335
【発明の概要】
【発明が解決しようとする課題】
【０００６】
より高精度で入力データの認識を行うために、認識能力がさらに向上した認識システムが望まれる。
【０００７】
本発明は、認識システムのデータ認識精度を向上させることを目的とする。
【課題を解決するための手段】
【０００８】
本発明の目的を達成するために、例えば、本発明の情報処理装置は以下の構成を備える。すなわち、
学習データを認識器に入力して出力データを得る処理手段と、
前記出力データを複数の識別器に入力することにより得られる前記学習データの識別結果の誤差を判定する判定手段と、
前記識別結果の誤差に基づいて前記認識器の学習処理を行う第１の学習手段と、
を備えることを特徴とする。
【発明の効果】
【０００９】
認識システムのデータ認識精度を向上させる。
【図面の簡単な説明】
【００１０】
【図１】実施形態１に係る異常検知システムの構成例を示す図。
【図２】実施形態１に係る異常検知システムの動作例を示す図。
【図３】実施形態１に係る学習装置１０の動作例を示す図。
【図４】実施形態１に係る認識装置２０の動作例を示す図。
【図５】実施形態１に係るＮＮ学習部１２の構成例を示す図。
【図６】実施形態１に係る識別器学習部１３の構成例を示す図。
【図７】実施形態２に係るハッシュ関数の超平面を説明する図。
【図８】各実施形態で用いられる映像の例を示す図。
【図９】実施形態１に係るＮＮとハッシュ関数の組み合わせを示す図。
【図１０】ハッシュ関数のｄｒｏｐｏｕｔ動作を説明する図。
【図１１】実施形態１に係るＮＮ認識部２２の構成例を示す図。
【図１２】実施形態１に係る識別器２３の構成例を示す図。
【図１３】実施形態３に係る識別器学習部１３の構成例を示す図。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態について図面に基づいて説明する。なお、以下に説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載の構成の具体的な実施例の１つである。
【００１２】
以下の実施形態によれば、検出対象データに対して識別処理を行うことにより、認識対象を認識することができる。例えば、画像データを検出対象データとする場合、画像中の物体認識や、画像の異常認識等を行うことができる。以下の実施形態においては、映像中の物体に異常があるか否かを検出する応用例について主に説明するが、本発明はこのような構成に限定されない。また、検出対象データが１枚の画像である必要はなく、複数の連続する画像がニューラルネットワーク（ＮＮ）に入力されてもよい。また、検出対象データは画像には限定されず、例えば音声等であってもよい。
【００１３】
いくつかの実施形態では、認識精度を向上させるために、ＮＮと組み合わせて複数の識別器が用いられる。そして、このような構成を実現するために、複数の識別器及びＮＮの学習を行う方法が示される。とりわけ、いくつかの実施形態においては、複数の識別器の誤差に基づいてＮＮの学習が行われる。また、いくつかの実施形態においては、複数の識別器の誤差に基づいて識別器の学習が行われる。また、いくつかの実施形態においては、複数の識別器の類似性を考慮して識別器の学習を行う方法が示される。さらに、いくつかの実施形態では、認識精度を向上させるために、ｄｒｏｐｏｕｔと称する学習方法が用いられる。しかしながら、これらの構成の全てを採用することは必須ではないことに注意されたい。
【００１４】
なお、以下の実施形態で説明する異常検知システム１が備える各部は、専用のハードウェアにより実現することもできるし、コンピュータにより実現することもできる。例えば、データ読込部１１、ＮＮ学習部１２、識別器学習部１３、データ読込部２１、ＮＮ認識部２２、及び識別部２３のうち少なくとも１つをコンピュータにより実現することができる。これらの機能を実現するには、各機能構成をプログラムにより表現し、コンピュータに読み込ませればよい。すなわち、メモリ及びプロセッサを備えるコンピュータにおいて、メモリに格納されたプログラムに従ってプロセッサが処理を行うことにより、これらの機能を実現することができる。また、以下では学習装置１０、認識装置２０、及び端末装置３０は別個の装置であるものとして説明するが、これらの装置が１又は２の装置に統合されていてもよい。さらに、図１では辞書記憶部Ｍ１，Ｍ２及びデータ記憶部Ｄ１，Ｄ２が学習装置１０及び認識装置２０の外部に存在するが、これらは学習装置１０又は認識装置２０に含まれてもよい。
【００１５】
［実施形態１］
本発明の１つの実施形態である実施形態１では、検出対象データを入力データとしてニューラルネットワーク（ＮＮ）に入力して出力データを得て、この出力データを識別器に入力することにより入力データの識別結果を得ることができる。そして、このような識別を行うために、学習データを用いて、ＮＮと、ＮＮの出力を受け取る識別器と、について同時に学習処理が行われる。本実施形態では、識別のために複数の識別器が用いられ、より具体的には複数のハッシュ関数が用いられる。
【００１６】
本実施形態では、具体例としては、本発明に係る情報処理装置を異常検知システムに適用する場合の構成例を示す。特に本実施形態では、異常検知システムとして、監視カメラによって撮像された映像中の異常を検出する機能を備えたシステムが用いられる。以降では本実施形態について、図面を参照して説明する。
【００１７】
本実施形態に係る異常検知システムは、監視対象をカメラ等の撮像装置で撮影して得られた映像データに基づいて、監視対象に異常があるか否かを判定する。そして、異常があると判定された場合には警告が行われる。例えば、警備室等の監視センタに常駐する監視者に対して警告を行うことができる。この監視対象には、例えば、一般家庭の屋内及び屋外、又は病院及び駅等の公共施設、等が含まれる。
【００１８】
［全体構成］
図１は、実施形態１に係る異常検知システムの構成の一例を示す概略ブロック図である。まず、図１に示す異常検知システム１の構成に関する説明を行う。図１の異常検知システム１は、学習装置１０と、認識装置２０と、端末装置３０と、を備える。これらの装置内の各部、及びこれらの装置間は、電子回路を介して接続されていても、外部記憶装置を介して接続されていても、またネットワークを介して接続されていてもよい。このネットワークとしては、例えば携帯電話回線網又はインターネット等を利用することができる。
【００１９】
本実施形態において、異常検知システム１の動作は２つのフェーズに分けることができる。１つ目は学習フェーズであり、２つ目は認識フェーズである。
【００２０】
学習フェーズは、図２のステップＳ２０１に相当する。ステップＳ２０１で、学習装置１０は、学習データを入力データとしてＮＮ及び識別器の学習を行う。
【００２１】
認識フェーズは、図２のステップＳ２０２及びＳ２０３に相当する。ステップＳ２０２で、認識装置２０は、監視対象が写っている映像データ（以下、検出対象データと呼ぶ）を入力データとして、ＮＮ及び識別器を用いた認識・識別を行い、監視対象に異常があるか否かを判定する。ステップＳ２０３で、端末装置３０は、異常の判定結果に基づいて警告処理を行う。
【００２２】
以降では、異常検知システム１の動作の概略について、学習フェーズの動作と認識フェーズの動作とに分けて説明を行う。各処理部の詳細な構成及び動作に関しては後述する。
【００２３】
学習フェーズの動作は、学習装置１０により行われる。学習装置１０は、データ読込部１１と、ＮＮ学習部１２と、識別器学習部１３と、を備える。学習装置１０の動作の概要に関して、図３に基づいて説明を行う。
【００２４】
ステップＳ７００で、データ読込部１１は、ＮＮ及び識別器を学習するための学習対象データをデータ記憶部Ｄ１から読み込み、ＮＮ学習部１２に送る。ステップＳ７０１〜Ｓ７１７で、ＮＮ学習部１２及び識別器学習部１３は、読み込んだ学習対象データを用いて学習を行う。このとき、ＮＮ学習部１２は、学習対象データに基づいて生成された学習データを入力データとしてＮＮを用いた認識を行い、識別器学習部１３は、ＮＮによる認識結果（ＮＮの出力データ）を入力データとして学習を行う。また、このときの識別器学習部１３による学習誤差は、ＮＮ学習部１２に入力され、ＮＮ学習部１２の学習処理に用いられる。ステップＳ７１８で、ＮＮ学習部１２は、学習済みのＮＮの辞書を辞書記憶部Ｍ１に保存する。また、識別器学習部１３は、学習済みの識別器の辞書を辞書記憶部Ｍ２に保存する。
【００２５】
認識フェーズの動作は、認識装置２０により行われる。認識装置２０は、データ読込部２１と、ＮＮ認識部２２と、識別部２３と、を備える。このうち、ＮＮ認識部２２は検出対象データをＮＮに入力して出力データを得る。また、識別部２３はＮＮからの出力データを識別器に入力することにより検出対象データの識別結果を得る。認識装置２０の動作の概要に関して、図４に基づいて簡単な説明を行う。
【００２６】
ステップＳ１３００で、データ読込部２１は、記憶部Ｄ２から検出対象データの読み込みを行い、ＮＮ認識部２２に送る。ステップＳ１３０１〜Ｓ１３０６で、ＮＮ認識部２２は、検出対象データに対する認識処理を行い、その認識結果（ＮＮの出力データ）を識別部２３に送る。ステップＳ１３０７〜Ｓ１３０９で、識別部２３は、ＮＮによる認識結果を入力データとして、識別処理及び異常判定処理を行い、異常判定結果を端末装置３０に送る。
【００２７】
次に端末装置３０の動作の概要に関して説明を行う。端末装置３０は、表示部３１を備える。端末装置３０としては、例えばＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）のディスプレイ、タブレットＰＣ、スマートフォン、又はフィーチャーフォン等を利用することができる。
【００２８】
表示部３１は、ステップＳ４０３で、検出対象が異常であることを示す異常判定結果が送られた場合、それを受け取り、警告処理を行う。このとき、端末装置３０の備える機能に応じて、どのような警告処理を行ってもよい。例えば、表示部３１は、表示又は音声等を用いた警告を行うことができる。一例として、端末装置３０がサイレンを備える場合は、表示部３１は、端末装置３０に警告音を発させることができる。また、表示部３１は、端末装置３０が備えるディスプレイに点滅表示を行わせることもできる。さらに、端末装置３０が映像確認用のディスプレイを備える場合、監視映像上で異常が検出された箇所を強調表示してもよい。このように異常が検出された箇所を強調表示するには、監視映像上における異常箇所を特定する必要がある。そのためには、例えばＮＮに入力される入力データに映像中の位置を示す画面座標情報を付与しておき、異常判定結果に応じて、この画面座標情報を利用して警告表示を行ってもよい。
【００２９】
［学習フェーズ］
以降では、各装置が備える処理部の構成及び動作について、詳細な説明を行う。まずは、ＮＮ学習部１２及び識別器学習部１３の詳細な説明を行う。
【００３０】
ＮＮ学習部１２の構成に関して、図５に基づいて説明を行う。ＮＮ学習部１２は、小領域抽出部１２１と、前処理部１２２と、ＮＮ初期化部１２３と、学習データ選択部１２４と、ＮＮ認識実行部１２５と、ＮＮ更新部１２６と、ＮＮ辞書保存部１２７と、を備える。
【００３１】
また、識別器学習部１３の構成に関して、図６に基づいて説明を行う。識別器学習部１３は、ハッシュ関数生成部１３１と、ハッシュ関数選択部１３２と、ハッシュ関数更新部１３３と、を備える。なお本実施形態の冒頭で述べたように、本実施形態では識別器の具体例としてハッシュ関数を用いた識別器を用いる。ハッシュ関数の詳細は後述する。
【００３２】
次に、ＮＮ学習部１２および識別器学習部１３の動作に関して、図３に基づいて詳細な説明を行う。ステップＳ７０１で、小領域抽出部１２１は、データ読込部１１からデータを受け取る。本実施例において、このデータは、カメラ等の撮像装置で撮影して得られた映像データを含むものとする。このデータには、監視対象を撮影して得られた映像データを含めることができる。
【００３３】
小領域抽出部１２１は、映像データの各フレームに写っているオブジェクトを含む小領域画像を抽出する。ここで、ある映像データに含まれる１フレームの画像の例を図８に示す。図８は、フレーム画像の例として、ある交差点において撮像された画像８０１を示す。画像８０１には、撮像されたオブジェクト８０２〜８０５と、信号８１０とが写っている。バウンディングボックス(Bounding Box)８０６〜８０９は、オブジェクト８０２〜８０５のそれぞれを囲む矩形である。小領域抽出部１２１は、バウンディングボックス８０６〜８０９により囲まれた部分画像をそれぞれ小領域画像として抽出する。
【００３４】
なお、バウンディングボックスに基づいて小領域画像を抽出する方法は一例にすぎず、小領域抽出部１２１が用いる方法は限定されない。このような小領域画像を抽出するための方法は複数存在し、例えば背景差分法、物体検出・追尾法、又は領域分割法等を用いることができる。例えば、小領域抽出部１２１は、後述する背景差分法を用いることにより、オブジェクト８０２〜８０５の輪郭を抽出し、輪郭によって囲まれる部分画像を小領域画像として抽出することもできる。また、監視対象のオブジェクトがあらかじめ既知である場合は、物体検出・追尾法を用いることができる。物体検出・追尾法によれば、監視対象となっているオブジェクトを検出・追尾することができる。物体検出・追尾法としては、例えばH. Grabner, M. Grabner and H. Bischof, "Real-Time Tracking via On-line Boosting", Proceedings of the British Machine Conference, pages 6.1-6.10. BMVA Press, September 2006.に記載の方法を用いることができる。
【００３５】
さらに小領域抽出部１２１は、映像データにあらかじめ付与された教師情報を利用して、小領域画像に対して教師情報を付与する。教師情報は、対象（すなわちオブジェクト）をどのように分類すべきかを示すラベルである。本実施形態においては、異常検知システム１を使用又は導入するユーザが、ラベルの種類、及び学習データに付与する教師データを予め決定しておく。一般に、どのような対象にどのようなラベルを付与するかは、問題（例えば異常検知システムの用途等）に依存する。
【００３６】
より具体的には、ユーザは、映像データを構成する画像上で指定した領域に対して、ラベルを付与する。例えば、ユーザは、フレーム画像上で歩行者８０３を含む領域を指定し、この領域に対して歩行者を示すラベルを付与することができる。そして、小領域抽出部１２１は、歩行者を示すラベルが付与された領域から小領域画像を抽出した場合、この小領域画像に対しては歩行者を示す教師情報を付与することができる。小領域画像が、互いに異なるラベルが付与された複数の領域が抽出された場合、小領域画像に占める割合が最も大きい領域に付与されているラベルを、教師情報として小領域画像に付与することができる。
【００３７】
もっとも、上記の方法で小領域画像に教師情報を付与することは必要ではない。例えば、あらかじめフレーム画像から小領域画像を抽出しておき、それぞれの小領域画像に対してユーザが教師情報を付与してもよい。また、小領域抽出部１２１が抽出した小領域画像のそれぞれに対して、ユーザが教師情報を付与してもよい。以上の処理により、小領域抽出部１２１は、映像データを構成するフレーム画像から、教師情報が付された小領域画像を抽出する。最後に、小領域抽出部１２１は、抽出した小領域画像を学習画像として教師情報とともに前処理部１２２に送る。
【００３８】
なお、説明を簡略化するために、ステップＳ７０１で小領域抽出部１２１は、使用するすべてのデータを一度に読み込み、それぞれのフレーム画像から小領域画像を抽出し、すべての小領域画像を前処理部１２２に送るものとする。しかしながら、学習データのデータ量が非常に大きい場合、すべてのデータを一度に通信することは難しいため、一部ずつ学習データを通信してもよい。以降の説明では、特に注意書きを記載する場合を除いては、すべての学習データについて一度に処理及び通信を行うものとする。
【００３９】
ステップＳ７０２で、前処理部１２２は、入力データの水増しを行う。データの水増し処理はＮＮの学習の前処理として一般的に行われており、学習データの見掛け上のバリエーションを増大させる効果がある。ここで、どのような水増し処理を行うかは、問題に依存して決定することができる。例えば、画像データに対して一般的に行われている水増し処理として、入力画像を水平方向に左右反転させる画像処理が挙げられる。この方法は、入力画像が水平方向に反転しても、教師情報が不変であるときに用いることができる。一方、図８のように交差点の映像から車の逆走を検知したい場合には、車の左右の向きが重要であることから、別の水増し処理を採用しなければならない。本実施形態では、異常検知の対象は映像中の人体であり、それぞれの人体を示す小領域画像に対して付される教師情報は、画像を左右反転させても不変であるものとする。したがって、ステップＳ７０２で、前処理部１２２は、入力された学習画像のそれぞれに対して左右反転処理を行い、処理前の画像と、処理後の画像との双方を、以降で学習データ（学習画像）として扱う。
【００４０】
一般に、前処理部１２２は、小領域画像を表す画像データ及びこの画像の種類を示す教師情報を取得し、画像処理により１つの画像から複数の画像を生成することができる。この際、前処理部１２２は、画像処理により画像の種類が変化しない画像を選択し、選択された画像に対して画像処理を行う。そして、前処理部１２２は、画像処理前の選択された画像と、画像処理後の選択された画像と、を学習データとして出力する。
【００４１】
ステップＳ７０３で、前処理部１２２は、学習画像全体の平均画像を算出し、すべての学習画像から平均画像を減算する処理を行う。なお、平均画像とは、各画素が画素値として、各学習画像の対応する画素の平均画素値を有している画像のことを指す。また、学習画像から平均画像を減算する処理とは、学習画像の各画素の画素値から、平均画像の対応する画素の画素値を減算する処理のことを指す。このように学習画像から平均画像を引くことは、学習データに対して一種のセンタリング処理を行うことに対応する。このような処理によれば、学習画像ごとに画素値が大きく異なる場合であっても、ＮＮの学習処理を収束させやすくすることができる。このようにセンタリング処理済みの学習画像を用いる本実施形態においては、後述するＮＮの初期化処理において、結合重みの初期値として平均０のガウス分布を用いることができる。
【００４２】
なお、本実施形態においては、平均画像を算出するために、前処理部１２２は、学習画像の解像度（縦と横のサイズ）を一致させる前処理をさらに行う。具体的には、後述するＮＮの初期化を行う際に用いるＮＮのネットワーク構造を参照して、その入力層のサイズに合わせる形で、前処理部１２２は、それぞれの学習画像に対して拡大又は縮小処理を行うことができる（ネットワーク構造については後述する）。
【００４３】
以上の前処理部１２２による処理により、学習画像と付与された教師データとのセットが複数用意され、これらは学習データ選択部１２４へと入力される。そして、学習画像と付与された教師データとのセットを用いて、ＮＮの学習が行われる。もっとも、目標とする検出精度に応じて、前処理部１２２による水増し処理及び平均画像を減算する処理の一方又は双方を省略することも可能である。
【００４４】
ステップＳ７０４で、ＮＮ初期化部１２３は、ＮＮのパラメータ（結合重みおよびバイアス項）を初期化する。本実施形態では、ＮＮのネットワーク構造は予め決定されており、ＮＮのネットワーク構造を参照して初期化が行われる。本実施形態において用いられるネットワーク構造及び初期パラメータは特に限定されない。例えば非特許文献１と同じ手法を用いてよいし、独自に定義したネットワーク構造及び初期パラメータを用いてもよい。
【００４５】
図９は、本実施形態で用いられるＮＮ９２０と、識別器９２１と、の一例を模式的に示す。なお、識別器９２１に関しては、その詳細を後述する。ＮＮ９２０は、本実施形態で用いられるＮＮのネットワーク構造の一例を示す。図９には、ネットワークが、入力層９０１、ｃｏｎｖｏｌｕｔｉｏｎ１層９０２、ｐｏｏｌｉｎｇ１層９０３、ｃｏｎｖｏｌｕｔｉｏｎ２層９０４、ｐｏｏｌｉｎｇ２層９０５、Ｉｎｎｅｒｐｒｏｄｕｃｔ層９０６、及び出力層９０７を含むことが示されている。また、２つの階層間の処理方法として、ｃｏｎｖｏｌｕｔｉｏｎ処理９１０、ｐｏｏｌｉｎｇ処理９１１、及びＩｎｎｅｒＰｒｏｄｕｃｔ処理９１２が設定されていることが示されている。それぞれの処理の具体的な内容は非特許文献１と同様であるため、ここでは省略する。簡単に説明すると、ｃｏｎｖｏｌｕｔｉｏｎ処理９１０では畳み込みフィルタを用いたデータ処理が行われ、ｐｏｏｌｉｎｇ処理９１１では、例えばｍａｘ  ｐｏｏｌｉｎｇであれば局所的な最大値を出力する処理が行われる。また、ＩｎｎｅｒＰｒｏｄｕｃｔ処理９１２では、内積処理が行われる。
【００４６】
また、図９からは、ｃｏｎｖｏｌｕｔｉｏｎ層及びｐｏｏｌｉｎｇ層には複数の特徴マップが存在し、入力層における画像上のピクセルに対応する位置には、複数のニューロンが存在することがわかる。例えば、学習画像がＲＧＢ形式である場合、ＲＧＢチャンネルのそれぞれに対応する３つのニューロンが存在しうる。また、学習画像が、撮像映像における動き情報を持つＯｐｔｉｃａｌＦｌｏｗ画像である場合、画像の横軸方向の動きと縦軸方向の動きとをそれぞれ表現する２つのニューロンが存在しうる。また、複数の画像を入力として用いる場合は、入力される画像の数に従って入力層のニューロンを増やすことができる。本実施形態では、標準的なＲＧＢ画像を学習画像として用いる例について説明する。
【００４７】
ＮＮ初期化部１２３がＮＮのパラメータを初期化する方法は特に限定されない。初期化方法としては様々な方法が知られており、例えば、用意されたデータを用いて初期化する場合と、データを用いないで初期化する場合と、がある。本実施形態では、一例として、データを用いないでＮＮのパラメータを初期化する方法について説明する。具体的には、本実施形態では、ＮＮ初期化部１２３は、平均０、分散１の正規分布からランダムにサンプリングした値を用いて重みパラメータを初期化し、バイアス項パラメータをすべて０で初期化するものとする。なお、パラメータに関する詳細は非特許文献１を参照のこと。なお、データを用いて初期化する場合の一例についても後述する。最後にＮＮ初期化部１２３は、初期化により得られた辞書を、ＮＮ認識実行部１２５に送る。
【００４８】
ステップＳ７０５で、ハッシュ関数生成部１３１は、識別器の初期化を行う。具体的には、ハッシュ関数生成部１３１は、ハッシュ関数を生成する。本実施形態においては、一個一個のハッシュ関数を、それぞれ線形識別器として扱う。生成されるハッシュ関数の数は特に限定されないが、ハッシュ関数の数を増やすことにより、近似近傍探索の精度を向上させることができる。本実施形態では、例として、ハッシュ関数生成部１３１は１００個のハッシュ関数を生成するものとする。最後にハッシュ関数生成部１３１は、生成したハッシュ関数をハッシュ関数更新部１３３に送る。
【００４９】
本実施形態において、識別器９２１は、入力データをＮＮに入力して得られる出力データに基づいて、ＮＮがある分類に属するか属さないかを判定するＯｎｅ−ｃｌａｓｓ識別器である。具体例として、識別器９２１は、図９に示すように、ＮＮの出力（ここでは出力層からの出力値）に基づいて、ハッシュ関数生成部１３１により生成されたハッシュ関数を用いたＨａｓｈｉｎｇ処理９１３によりハッシュ値９０８を求める。ハッシュ値９０８は、それぞれのハッシュ関数を用いて得られた識別結果を表すバイナリ値で構成されるベクトルであり、詳細は後述する。
【００５０】
Ｈａｓｈｉｎｇ処理９１３で用いられるハッシュ関数は特に限定されない。本実施形態では、一例として、Hachiya, H., Masakazu M., "NSH: Normality Sensitive Hashing for Anomaly Detection", 2013 IEEE International Conference on Computer Vision Workshops (ICCVW)（以下、Ｈａｃｈｉｙａと呼ぶ）及び特開２０１４−２０３２８９号公報に示されるハッシュ関数を用いることとする。これらの文献に示されるハッシュ関数は、Ｎｏｒｍａｌｉｔｙ  Ｓｅｎｓｉｔｉｖｅ  Ｈａｓｈｉｎｇ（ＮＳＨ）と呼ばれ、正常学習ベース異常検知技術の構成の一例において用いられる。正常学習ベース異常検知技術は、正常データを含むが異常データを含まない学習データを用いて異常を検知するための検出器を学習するという特徴を有している。本実施形態では、説明を具体的にするため、ＮＳＨを用いて正常学習を行う例について説明する。なお、正常データと異常データとを用いてハッシュ関数を学習する場合は、特開２０１４−２０３２８９号公報に示されるような異常データに対応したハッシュ関数の目的関数を用いればよいため、ここでは詳細な説明は行わない。なお、正常学習は、一般にはＯｎｅ−ｃｌａｓｓ学習の一種として知られている。
【００５１】
ハッシュ関数の具体的な説明はＨａｃｈｉｙａに示されているため、ここでは詳細を省くが、本実施形態においては以下の超平面の式（１）によりハッシュ関数が定義されるものとする。このハッシュ関数を用いると、特徴ベクトルが、超平面の式（１）を境界として、法線ベクトルの方向側にあるか、その反対側にあるかを表すバイナリ値が得られる。本実施形態においては、超平面の式（１）を境界として、法線ベクトルの方向側にある特徴ベクトル（入力データ）のハッシュ値を「０」、その反対側にある特徴ベクトル（入力データ）のハッシュ値を「１」というバイナリ値で表すものとする。本実施形態においては、入力データが正常である場合にハッシュ関数がバイナリ値「０」を返し、入力データが異常である場合にハッシュ関数がバイナリ値「１」を返すように、複数のハッシュ関数それぞれの学習が行われる。
【数１】
2018026122.tif 000003
式（１）において、Ｔはベクトルの転置、ｘは入力データ、ｗは超平面の法線ベクトル又は重みベクトル、ｂはバイアス項、ｍはハッシュ関数に関するインデックスを表す。上記の通り、本実施形態においては１００個のハッシュ関数が用いられ、ｍは１〜１００のいずれかの値をとる。また、入力データｘは、ＮＮの出力（すなわち出力層９０７の出力値）である。
【００５２】
ここで、式（１）の左辺を以下の式（２）のようにｚで表す。
【数２】
2018026122.tif 000004
【００５３】
ある入力データｘが法線ベクトルｗの方向側にある場合、ｚは正の値をとり、反対側にある場合は、ｚは負の値を取る。この性質を利用することにより、本実施形態では、Ｈａｃｈｉｙａに示すように、次の評価式（３）を用いてそれぞれのハッシュ関数を評価する。
【数３】
2018026122.tif 000005
式（３）において、Ｎは正常データの数（後述するＭｉｎｉｂａｔｃｈのサイズ）、λはバイアス項の重みパラメータである。また、Ｌ（ｗＴｘｉ−ｂ）は、入力されたある正常データｘｉを異常と判定した場合における誤差を出力する関数であり、例えば次の式（４）を用いて定義することができる。
【数４】
2018026122.tif 000006
【００５４】
すなわちＬ（ｗＴｘｉ−ｂ）はハッシュ関数による学習データに対する識別結果の誤差を表しており、式（３）は、入力された複数の正常データに対する、あるハッシュ関数のロスを示している。そして、式（３）は、値が小さいほどよいと考えることができる。なお、上記の例において、ｗ及びｂはハッシュ関数のパラメータであり、λはハイパーパラメータである。本実施形態において、λはあらかじめ手で与えるものとし（例えばＨａｃｈｉｙａと同じ値を用いてもよい）、ｗ及びｂはそれぞれランダムに初期化するものとする。
【００５５】
ステップＳ７０６で、学習データ選択部１２４は、変数Ｉｔｅｒａｔｉｏｎを０に初期化する。Ｉｔｅｒａｔｉｏｎは、最適化処理の繰り返し回数を示し、その詳細は後述する。ステップＳ７０７で、学習データ選択部１２４は、学習データの部分集合群（Ｍｉｎｉｂａｔｃｈ）を作成する。Ｍｉｎｉｂａｔｃｈは、ＮＮのパラメータをＳｔｏｃｈａｓｔｉｃ  Ｇｒａｄｉｅｎｔ  Ｄｅｓｃｅｎｔ（ＳＧＤ、確率的勾配降下法）によって繰り返し最適化する際に用いる、学習データの集合である。詳細は後述するが、本実施形態では、ＮＮのパラメータを最適化する方法の例として、ＳＧＤを用いる。なお、Ｍｉｎｉｂａｔｃｈのサイズは限定されないが、本実施形態では、同じラベルを示す教師情報を持つ５０個の学習画像をひとまとめにしたものをＭｉｎｉｂａｔｃｈとして用いる。Ｍｉｎｉｂａｔｃｈは、例えば、全ての学習画像が複数のＭｉｎｉｂａｔｃｈのいずれかに含まれるように、かつ１つの学習画像が２以上のＭｉｎｉｂａｔｃｈに含まれないように、作成することができる。
【００５６】
説明を簡略化するために、本実施形態で用いる学習データは、その教師情報が示すラベルの種類に関して均一にバランスがとれているものとする。すなわち、ステップＳ７０７で学習データ選択部１２４は、複数のラベルのそれぞれについて、同数のＭｉｎｉｂａｔｃｈを生成するものとする。学習データがラベルの種類に関して均一でない場合は、例えば、均一になるように学習データをサンプリングすることができる。
【００５７】
以上の処理が、ＮＮと識別器とを学習する（すなわち、パラメータを最適化する）ための準備に相当する。すなわち、以上の処理により、学習対象データから学習データ（学習画像）が得られ、また初期状態のＮＮ及びハッシュ関数が得られる。ステップＳ７０８以降では、学習データを用いて実際にＮＮと識別器の学習が行われ、以下ではこの動作について説明する。本実施形態では、ＮＮの学習を行うための方法として、誤差逆伝播法とＳＧＤとを組み合わせた方法を用いる。この方法は非特許文献１において詳細に説明されているため、ここでは詳しく説明することはしない。簡単に説明すると、確率的にＭｉｎｉｂａｔｃｈを選択し、その勾配を計算して、勾配方向にパラメータを更新する手順を繰り返すことで、学習が行われる。
【００５８】
ステップＳ７０８で、学習データ選択部１２４は、Ｍｉｎｉｂａｔｃｈ集合からランダムに１つのＭｉｎｉｂａｔｃｈを選択する。このとき、学習データ選択部１２４は、Ｉｔｅｒａｔｉｏｎの値が同じである間にまだ選択されていないＭｉｎｉｂａｔｃｈを選択する。本実施形態では、ステップＳ７０７で学習データ選択部１２４はあらかじめすべてのＭｉｎｉｂａｔｃｈが作成した。しかしながら、ステップＳ７１６においてＩｔｅｒａｔｉｏｎ値がインクリメントされる度に、学習データ選択部１２４は新たなＭｉｎｉｂａｔｃｈ群を作成することによりＭｉｎｉｂａｔｃｈを初期化してもよい。このような構成によれば、それぞれのＭｉｎｉｂａｔｃｈが含む学習データの組み合わせが繰り返しごとに変化するため、過学習のリスクが低減することができる。
【００５９】
ステップＳ７０９で、ＮＮ認識実行部１２５は、学習データをＮＮに入力して出力データを得る。具体的には、ＮＮ認識実行部１２５は、Ｍｉｎｉｂａｔｃｈを入力データとしてＮＮの出力を得る。例えば、図９に示すＮＮを用いる場合、入力層９０１から出力層９０７まで階層的に順伝播するようにＮＮを用いたデータ処理が行われる。ステップＳ７１０で、ＮＮ認識実行部１２５は、識別器学習部１３にＮＮの出力（出力層９０７の値）を送る。
【００６０】
ステップＳ７１１で、ハッシュ関数選択部１３２は、複数の識別器から一部の識別器を選択する。本実施形態において、ハッシュ関数選択部１３２は、ハッシュ関数生成部１３１が予め生成したハッシュ関数のうち、更新するハッシュ関数をＭｉｎｉｂａｔｃｈごとに選択する。そして、ハッシュ関数選択部１３２により選択されたハッシュ関数に対してのみ、ハッシュ関数更新部１３３によるパラメータ更新処理と、ＮＮに対して逆伝播される識別器誤差の計算と、が行われる。このように使用するハッシュ関数を選択する処理を以下ではハッシュ関数のｄｒｏｐｏｕｔ処理と呼ぶ。この処理は、非特許文献１で示されるＮＮに対するｄｒｏｐｏｕｔ処理とは異なるものの、複雑な目的関数（３）に対するハッシュ関数の過学習を抑制する効果を有する。また、異なるハッシュ関数のセットについての識別器誤差が順次ＮＮに逆伝播されることも、最終的な認識結果の精度の向上につながると考えられる。式（２）は全てのハッシュ関数に関する表現であるが、ステップＳ７１１で選択されたハッシュ関数に対しては、式（２）を以下の式（５）として表すことができる。
【数５】
2018026122.tif 000007
式（５）において、Ｄは選択されたハッシュ関数の集合であり、ｄはインデックスであり、ｄ∈ＤはｄがＤの要素であることを示す。
【００６１】
ハッシュ関数選択部１３２は、すべてのハッシュ関数の集合から、選択されたハッシュ関数の集合Ｄを、確率的に選択することができる。例えば、ハッシュ関数選択部１３２は、各々のハッシュ関数に関して、５０％の確率で選択するか否かを決定してもよい。このとき、選択しなかったハッシュ関数は、ｄｒｏｐｏｕｔした（ＯＦＦになった）と捉えることができる。すなわち、この処理は、ハッシュ関数に関するｄｒｏｐｏｕｔ処理であると考えることができる。
【００６２】
ステップＳ７１１の処理を分かりやすく説明するために、図１０に、上記で説明したハッシュ関数の構成及び動作の一例を示す。図１０においてニューロン１００１は、ＮＮのニューロンを示す。また、ＮＮの出力空間１００２は、ＮＮの出力空間の模式図（ここでは出力層９０７の値がなす空間）を示す。ハッシュ関数の超平面１００３は、複数のハッシュ関数が超平面としてＮＮの出力空間１００２を分離する様子を示す。Ｈａｓｈ  ｄｒｏｐｏｕｔ１００４は、一部のハッシュ関数を選択する（選択されなかったハッシュ関数はｄｒｏｐｏｕｔされる）処理を示す。ｄｒｏｐｏｕｔされたハッシュ値１００５は、ハッシュ関数がｄｒｏｐｏｕｔされることで、識別結果を表すベクトルからバイナリ値が欠落する様子を示す。ｄｒｏｐｏｕｔされたハッシュ関数の超平面１００６は、ハッシュ関数がｄｒｏｐｏｕｔされることで分離超平面が一時的に無くなることを示している。
【００６３】
このようなハッシュ関数のｄｒｏｐｏｕｔ処理を、ハッシュ関数選択部１３２は、ステップＳ７１１が実行されるたびに行う。以降では、ハッシュ関数更新部１３３が、選択されたハッシュ関数の集合Ｄに対して、勾配の計算及び誤差の計算を行う。すなわち、ハッシュ関数更新部１３３は、まず学習データをＮＮに入力して得られた出力データを第１の識別器セットに入力することにより得られる識別結果の誤差を判定する。そして、ＮＮ更新部１２６は、この識別結果の誤差をＮＮに逆伝播することにより、ＮＮのパラメータを更新する。さらに、ハッシュ関数更新部１３３は、学習データをパラメータ更新後のＮＮに入力して得られた出力データを第２の識別器セットに入力することにより得られる識別結果の誤差を判定する。そして、ＮＮ更新部１２６は、この識別結果の誤差をＮＮに逆伝播することにより、ＮＮのパラメータを再度更新する。ハッシュ関数選択部１３２は、複数の識別器から第１の識別器セットと第２の識別器セットとを選択する。ここで、第１の識別器セットに含まれる識別器の少なくとも１つは、第２の識別器セットには含まれなくてもよい。
【００６４】
ステップＳ７１２で、ハッシュ関数更新部１３３は、ＮＮ認識実行部１２５からの出力データを複数の識別器に入力することにより得られる学習データの識別結果の誤差を判定する。本実施形態ではｄｒｏｐｏｕｔ処理が行われる。このため、ハッシュ関数更新部１３３は、学習データをＮＮに入力して得られた出力データを、ハッシュ関数選択部１３２により選択された一部の識別器に入力することにより得られる識別結果の誤差を判定する。この際、ハッシュ関数選択部１３２により選択されなかった識別器は、識別結果の誤差の判定のためには用いられない。本実施形態ではＮＮの学習処理が行われるため、こうして得られた識別結果の誤差は、ステップＳ７１４でＮＮに逆伝播される。
【００６５】
また、本実施形態では複数の識別器の学習処理を行うため、ハッシュ関数更新部１３３はさらに学習データの識別結果の誤差に基づいて複数の識別器の学習処理を行う。具体的には、ハッシュ関数更新部１３３は、ハッシュ関数選択部１３２により選択されたハッシュ関数を、ＮＮ認識実行部１２５から受け取ったＮＮの出力に基づいて更新する。ハッシュ関数の更新方法としては任意の方法を採用することができるが、本実施形態においては勾配法に基づいてハッシュ関数が更新される。例えば、ハッシュ関数のパラメータｗの更新式としては式（６）を用いることができ、ハッシュ関数のパラメータｂの更新式としては式（７）を用いることができる。
【数６】
2018026122.tif 000008
【数７】
2018026122.tif 000009
式（６）において、ｗｎｅｗは更新後のパラメータｗを、ｗｏｌｄは更新前のパラメータｗを、αはｗに関する学習率を、Δｗはパラメータｗの勾配を表す。また、式（７）において、ｂｎｅｗは更新後のパラメータｂを、ｂｏｌｄは更新前のパラメータｂを、βはｂに関する学習率を、Δｂはパラメータｂの勾配を表す。
【００６６】
Δｗは式（３）を偏微分することで求めることができ、具体的には式（８）を用いて求めることができる。
【数８】
2018026122.tif 000010
【００６７】
Δｂも式（３）を偏微分することで求めることができ、具体的には式（９）を用いて求めることができる。
【数９】
2018026122.tif 000011
【００６８】
式（８）（９）において、Ｌ（ｗＴｘｉ−ｂ）は、既に式（３）について説明したように識別器（ハッシュ関数）による学習データの識別誤差を表す。そして、このＬ（ｗＴｘｉ−ｂ）に基づいて、式（８）（９）を用いて識別器（ハッシュ関数）の学習処理が行われる。関数Ｌの勾配を計算する方法は特に限定されない。また、学習率α及びβは任意に決めることができ、例えば実験的に調整を行うことにより決定することができる。
【００６９】
識別器の学習処理を行うための方法として、ハッシュ関数を勾配法により更新する代わりに、Ｈａｃｈｉｙａのようにハッシュ関数を新たに生成する方法を採用してもよい。なお、上記ではハッシュ関数の更新を行う場合の例を示したが、実際には、ＮＮの更新だけが必要で、ハッシュ関数の更新は必要がない場合があると考えられる。当然ながら、その際はハッシュ関数を更新しなくてもよい。なお、その際には、ハッシュ関数の勾配を計算せず、式（３）の値を誤差としてＮＮに逆伝播してもよい。
【００７０】
ステップＳ７１３で、ハッシュ関数更新部１３３は、ＮＮ更新部１２６にハッシュ関数の誤差を送る。本実施形態においては、ハッシュ関数更新部１３３は、式（１０）に従ってハッシュ関数全体の誤差を求め、ＮＮ更新部１２６に送る。
【数１０】
2018026122.tif 000012
式（１０）において、ＮＤはハッシュ関数選択部１３２により選択されたハッシュ関数の数である。式（１０）の関数Ｌの勾配を計算する方法は特に限定されない。式（１０）において、Ｌ（ｗｄＴｘｉ−ｂ）はそれぞれの識別器（ハッシュ関数）による学習データの識別誤差を表し、目的関数Ｅは、選択されたハッシュ関数全体（ｄ∈Ｄ）の誤差を表している。このように、ハッシュ関数更新部１３３は、複数のハッシュ関数全体についての識別結果の誤差を判定している。また、この誤差は、複数のハッシュ関数のそれぞれにＮＮからの出力データを入力することにより得られる、複数のハッシュ関数のそれぞれによる学習データの識別結果の誤差に基づいて判定されている。特に、本実施形態においては、複数のハッシュ関数のそれぞれによる学習データの識別結果の誤差の線形結合として、複数のハッシュ関数全体についての識別結果の誤差が判定される。
【００７１】
ステップＳ７１４で、ＮＮ更新部１２６は、判定された複数の識別器全体についての識別結果の誤差をＮＮに逆伝播する。具体的には、ＮＮ更新部１２６は、ハッシュ関数による識別結果の誤差をＮＮに逆伝播することによりＮＮの学習処理を行う。具体的には、ＮＮ更新部１２６は、受け取ったハッシュ関数の誤差を用いて、誤差逆伝播法によってＮＮのパラメータを更新する。式（１０）に従って目的関数の勾配を求めてＮＮのパラメータを更新することは、選択されたハッシュ関数全体の誤差を逆伝播することに相当する。ＮＮのパラメータを更新する方法としては、ＮＮ技術における公知の方法を用いることができる。本実施形態でＮＮ更新部１２６は、非特許文献１と同様の方法を用いてＮＮのパラメータを更新する。
【００７２】
ステップＳ７１５で、学習データ選択部１２４は、Ｉｔｅｒａｔｉｏｎの値が同じである間に、全てのＭｉｎｉｂａｔｃｈが学習に利用されたか否かを判定する。全てのＭｉｎｉｂａｔｃｈが利用されていない場合、処理はステップＳ７０８に戻り、まだ学習に用いられていないＭｉｎｉｂａｔｃｈを入力データとして学習が行われる。全てのＭｉｎｉｂａｔｃｈが学習に利用されている場合、処理はステップＳ７１６に移り、学習データ選択部１２４はＩｔｅｒａｔｉｏｎをインクリメントする。
【００７３】
ステップＳ７１７で、学習データ選択部１２４は、ＮＮ及び識別器の学習が完了しているか否かを判定する。具体的には、学習データ選択部１２４は、所定の学習停止条件が満たされている場合に、ＮＮ及び識別器の学習が完了したと判定する。学習停止条件の設定方法は特に限定されず、例えばユーザが設定することもできるし、学習データ選択部１２４が自動的に設定することもできる。ユーザが学習停止条件を設定する場合の具体例としては、ユーザが経験的に学習停止条件を設定する方法、例えばＩｔｅｒａｔｉｏｎ回数が所定回数に達することを学習停止条件として設定する方法が挙げられる。また、自動的に学習停止条件を設定する場合の具体例としては、学習曲線の勾配を参照する方法が挙げられる。具体例としては、全てのハッシュ関数について式（３）に従って求められる誤差の総和の、Ｉｔｅｒａｔｉｏｎ回数に対する勾配が所定値未満となった際に、ＮＮ及び識別器の学習が完了していると判定することができる。
【００７４】
本実施形態においては、Ｉｔｅｒａｔｉｏｎ回数が所定回数に達した時に、学習停止条件が満たされるものとする。所定回数はユーザが経験的に設定することができ、その値は特に限定されず、例えば所定回数を２００００回とすることができる。なお、具体的なＮＮの学習方法としては、例えば非特許文献１に記載されているように、Ｉｔｅｒａｔｉｏｎ回数が増えるほどＮＮの学習率を低下させる方法等が知られている。本実施形態においては、このような方法をさらに採用することもできる。ステップＳ７１７で学習停止条件を満たしていないと判定された場合、処理はステップＳ７０８に戻る。条件を満たしていると判定された場合、処理はステップＳ７１８に進む。
【００７５】
最後に、ステップＳ７１８で、ＮＮ辞書保存部１２７は、辞書記憶部Ｍ１に学習済みのＮＮのパラメータ（ＮＮの辞書）を保存する。また、ハッシュ関数更新部１３３は、辞書記憶部Ｍ２に学習済みのハッシュ関数のパラメータ（識別器の辞書）を保存する。ハッシュ関数更新部１３３は、さらに、学習済みのハッシュ関数に基づいて分離される正常データの情報（正常情報）を保存することができる。ここで、正常データの情報とは、各々のハッシュ関数によって識別される正常データ（学習データ）の数を示す。例えば、あるハッシュ関数についての正常データの情報は、ハッシュ値が「０」となる学習データの数でありうる。この正常データの情報は、正常な度合を示す指標となる。例えば、この正常データの情報は、それぞれのハッシュ関数により得られる入力データのハッシュ値が「０」である場合に、入力データが正常である確からしさを示す。なお、正常データの情報を作成する具体的な方法としては、例えば特開２０１４−２０３２８９号公報に記載されている方法を採用することができる。
【００７６】
［認識フェーズ］
次に、ＮＮ認識部２２及び識別部２３の詳細な説明を行う。まず、ＮＮ認識部２２の構成を、図１１を参照して説明する。ＮＮ認識部２２は、小領域抽出部１２１と、前処理部１２２と、辞書読込部２２１と、ＮＮ認識実行部１２５と、を備える。小領域抽出部１２１、前処理部１２２、及びＮＮ認識実行部１２５は、ＮＮ学習部１２が備える処理部と同様の機能を持つ。すなわち、小領域抽出部１２１は検出対象の映像データ（画像データ）から小領域画像を抽出し、前処理部１２２は抽出された小領域画像に対して前処理を行う。そして、ＮＮ認識実行部１２５は前処理された小領域画像データを入力データとしてＮＮに入力して出力を得る。また、辞書読込部２２１は、辞書記憶部Ｍ１からＮＮの辞書を読み込み、パラメータをＮＮ認識実行部１２５が用いるＮＮに設定する。
【００７７】
次に、識別部２３の構成を、図１２を参照して説明する。識別部２３は、辞書読込部２３１と、識別実行部２３２と、異常判定部２３３と、を備える。辞書読込部２３１は、辞書記憶部Ｍ２から識別器の辞書を読み込み、ハッシュ関数のパラメータを識別実行部２３２に送る。識別実行部２３２は、画像データを学習処理後のＮＮに入力して得られた出力データをＮＮ認識実行部１２５から受け取り、この出力データを複数の識別器に入力することにより識別結果を得る。例えば、識別実行部２３２は、複数のハッシュ関数のそれぞれを用いてＮＮ認識実行部１２５の出力結果に対する処理を行うことにより、バイナリ値のセットを得る。異常判定部２３３は、識別実行部２３２の出力に基づいて、画像データ中の異常を検知する。検出対象の映像に異常があるか否かを判定する。
【００７８】
本実施形態においては、先に説明した学習フェーズにより得られたＮＮ及びハッシュ関数が、検出対象データの識別のために用いられる。しかしながら、ＮＮと複数の識別器とを組み合わせて検出対象データの識別を行う構成において、ＮＮ及び複数の識別器の学習を先に説明した方法で行うことは必須ではなく、別の方法を用いてもよいことに注意されたい。一実施形態においては、複数の識別器は、複数の識別器の類似度が低いほど評価が高くなるように学習により最適化されている。また、一実施形態において、ＮＮは、学習データをＮＮに入力して得られた出力データを複数の識別器に入力することにより得られる識別結果の誤差を、ＮＮに逆伝播する学習処理によって得られている。
【００７９】
次に、ＮＮ認識部２２及び識別部２３の動作に関して、図４を参照して詳細な説明を行う。ステップＳ１３０１で、辞書読込部２２１は、ＮＮの辞書を辞書記憶部Ｍ１から読み込み、ＮＮ認識実行部１２５に送る。ステップＳ１３０２で、辞書読込部２３１は、識別器の辞書を辞書記憶部Ｍ２から読み込み、識別実行部２３２に送る。本実施形態において辞書読込部２３１は、さらに正常データの情報を辞書記憶部Ｍ２から読み込む。
【００８０】
ステップＳ１３０３で、小領域抽出部１２１は検出対象データを受け取り、検出対象の映像から小領域を抽出する。ステップＳ１３０４で、前処理部１２２は、小領域画像から平均画像を減算する処理を行い、得られたデータをＮＮ認識実行部１２５に入力データとして送る。ステップＳ１３０５で、ＮＮ認識実行部１２５は、前処理部１２２から得たデータをＮＮに入力することにより認識処理を実行し、出力を得る。
【００８１】
ステップＳ１３０６で、識別実行部２３２は、ＮＮ認識実行部１２５の出力を受け取る。ステップＳ１３０７で、識別実行部２３２は、学習済みのハッシュ関数を用いてＮＮ認識実行部１２５の出力（すなわちＮＮの認識結果）に対して識別処理を行う。ここで、識別実行部２３２は、式（１）に関して上述した方法に従い、ハッシュ関数に基づいて、ＮＮの認識結果に対するバイナリ値を得る。識別実行部２３２は、複数のハッシュ関数のそれぞれを用いてＮＮの認識結果を処理するため、ステップＳ１３０７ではバイナリ値のセットが得られる。
【００８２】
ステップＳ１３０８で、異常判定部２３３は、ステップＳ１３０７で得られたバイナリ値のセットに従って、小領域画像が異常か否か、すなわち検出対象の映像に異常が含まれるか否かを判定する。ステップＳ１３０８の処理は、例えば特許文献３に記載されている方法を用いることができる。簡単に説明すれば、正常データに対して認識処理を行った際に得られるバイナリ値と、ステップＳ１３０７で得られたバイナリ値と、が一致するような正常データの数に基づいて、入力データが異常か否かを判定することができる。本実施形態において、辞書読込部２３１は、このような正常データの数を正常情報として読み込んでいる。もっとも、ステップＳ１３０８の判定において正常情報を参照することは必須ではない。例えば、ステップＳ１３０７で得られた複数のバイナリ値が、全て、小領域画像が正常であることを示す（すなわちバイナリ値が「０」である）場合に、小領域画像が正常であると判断することができる。また、ステップＳ１３０７で得られた複数のバイナリ値のうち、小領域画像が正常であることを示すバイナリ値が一定割合以上である場合に、小領域画像が正常であると判断することもできる。ステップＳ１３０９で、識別実行部２３２は、検出対象の映像に異常が含まれる場合に、このことを示す情報を端末装置３０に送る。
【００８３】
本実施形態では、ＮＮのパラメータをランダムに初期化してからＮＮの学習を行った。一方で、学習済みのＮＮを再利用し、所望のデータを用いて追加学習してもよい(Fine-tuning)。例えば、非特許文献１で得られたＮＮのパラメータを初期値として、さらに学習を行ってもよい。この際、非特許文献１で用いられたデータセットの教師情報と、本実施形態における学習データの教師情報とが異なる場合は、再利用するＮＮの出力層のパラメータのみを新たに定義又は初期化してから、追加学習を行うことができる。また、Fine-tuning以外の方法として、例えばAuto encoderを用いて教師なし学習を行い、学習により得られたパラメータを初期値として利用してもよい。その場合の具体的な方法としては、例えば非特許文献４に記載されている方法を用いることができる。
【００８４】
本実施形態では、一例として、図９のようにＮＮとハッシュ関数とを組み合わせる例について説明した。しかしながら、図９に示す構成を採用することは必須ではなく、異なる構成を用いてもよい。例えば、図９は出力層９０７の出力値をハッシュ関数の入力データとして用いる例を示すが、さらにＣｏｎｖｏｌｕｔｉｏｎ２層９０４の出力をハッシュ関数の入力データとして用いてもよい。この場合、ステップＳ７１０及びＳ１３０６では、Ｃｏｎｖｏｌｕｔｉｏｎ２層９０４の出力と、出力層９０７の出力と、の双方がハッシュ関数に入力される。また、この場合、ステップＳ７１３で、ハッシュ関数の誤差を、Ｃｏｎｖｏｌｕｔｉｏｎ２層９０４と、出力層９０７と、の双方に対して逆伝播させることができる。なお、複数の誤差が伝播されるＮＮの学習動作は、Christian Szegedy et al. "Going Deeper with Convolutions" Conference on Computer Vision and Pattern Recognition, 2015に示されており、このような方法を用いて学習を行うことができる。
【００８５】
本実施形態では一例として、図９のようなＮＮのネットワーク構造を示したが、ネットワーク構造は図示されたものに限定されない。例えば、ＩｎｎｅｒＰｒｏｄｕｃｔ１層９０６及びＩｎｎｅｒＰｒｏｄｕｃｔ２層９０７を用いなくてもよい。また、これら２つの層の代わりにハッシュ関数を導入することにより、階層的なハッシュ関数処理を行ってもよい。
【００８６】
本実施形態では一例として、検出対象の映像から切り出された小領域画像のデータをＮＮの入力データとして用いる場合について説明したが、入力データはこれに限定されない。例えば、Ｏｐｔｉｃａｌ  Ｆｌｏｗ画像を映像から抽出してＮＮへの入力データとして用いてもよい。さらに、Ｏｐｔｉｃａｌ  Ｆｌｏｗ画像とＲＧＢ画像とをそれぞれ異なるＮＮに入力し、それぞれのＮＮの出力をハッシュ関数に対して入力してもよい。
【００８７】
本実施形態では、データ中の物体やその状態を認識するＮＮとハッシュ関数とを用い、ＮＮの出力をハッシュ関数に対する入力データとする構成において，ハッシュ関数の学習誤差がＮＮに伝播するように動作して学習を行う。とりわけ、本実施形態では、複数のハッシュ関数を識別器として用い、選択された一部のハッシュ関数だけを用いて学習を行うことを繰り返すこと、すなわち学習を行う際にハッシュ関数の一部をｄｒｏｐｏｕｔすることについて説明した。しかしながら、ｄｒｏｐｏｕｔ処理を行うことは複数の識別器を用いる上で必須ではない。一方で、ｄｒｏｐｏｕｔ処理を行うことにより、ＮＮの出力を受け取る識別器の過学習を抑制し、最終的な認識結果の精度を向上させることができる。ｄｒｏｐｏｕｔ処理の具体的な方法については特に限定されない。すなわち、識別器の識別能力を低下させ、学習データをＮＮに入力して得られた出力データを識別能力が低下した識別器に入力することにより得られる識別結果の誤差をＮＮに逆伝播すればよい。複数の識別器の一部をｄｒｏｐｏｕｔすることは、複数の識別器による識別能力を低下させることに対応する。
【００８８】
また、ｄｒｏｐｏｕｔ処理の適用例は、ハッシュ関数を用いる場合に限定されないし、複数の識別器を利用する場合にも限られない。例えば、サポートベクタマシン等の他の識別器を用いる場合に同様のｄｒｏｐｏｕｔ処理を行うこともできる。サポートベクタマシンを用いる場合、ｄｒｏｐｏｕｔ処理は以下のように行うことができる。すなわち、サポートベクタマシンを用いて識別を行う場合、サポートベクタマシンのパラメータと、ＮＮの出力との内積計算が行われる。この際に、サポートベクタマシンのパラメータの一部を脱落させることにより、識別器の識別能力を低下させ、ｄｒｏｐｏｕｔの効果を得ることができる。このような場合、脱落させたパラメータの分だけ得られる内積の値が増減するため、ｄｒｏｐｏｕｔ後に得られる内積の値を補正してもよい。具体例としては、脱落させたパラメータの数と、全てのパラメータの数とに基づいて、内積を重み付けすることができる。このような構成により、ｄｒｏｐｏｕｔ後に得られる内積を、全てのパラメータを用いた場合に得られると想定される大きさにすることができる。
【００８９】
［変形例］
実施形態１では、一例として、ハッシュ関数の学習に用いる目的関数として式（３）を用いたが、異なる目的関数を用いてもよい。例えば、複数の識別器間の直交性が高いほど評価値が高くなる目的関数を用いて学習を行うことができる。一例として、目的関数として式（１１）を用いることができる。
【数１１】
2018026122.tif 000013
式（１１）は、ハッシュ関数全体の目的関数を示している．subject_toは、式（１１）の制約を示している。ｚの定義は式（５）と同様であり、すなわち式（１１）のsubject_toは、全てのハッシュ関数が、すべての学習データに対してＺ≧０を満たすという意味を持つ。Ｍはハッシュ関数の数を表す。
【００９０】
式（１１）において、目的関数Ｅはハッシュ関数のパラメータｗに関する内積により表される。すなわち、複数のハッシュ関数間の直交性が高いほど、目的関数Ｅは小さくなり、すなわち評価値は高くなる。このため、式（１１）のＥを最小化することで、制約を満たしながら、ハッシュ関数同士ができるだけ直交に近くなる。また、ハッシュ関数自身のノルムが小さくなる。このように、式（１１）を用いて学習及び最適化を行うことにより、ハッシュ関数同士が直交に近くなり、ハッシュ関数同士が似る程度が低減される。
【００９１】
このように式（１１）を用いる場合には、それぞれのハッシュ関数がgreedyに最適化される可能性が低くなる。このため、式（３）を用いる場合と比較して、学習の結果得られた複数のハッシュ関数に、互いに類似したハッシュ関数が含まれる可能性が低減される。したがって、式（１１）を用いることにより、識別器におけるハッシュ関数全体の表現能力が向上することが期待される。なお、上記の例では、類似度の表現に直交性という基準を用いて、式（１２）を設計した。当然ながら、直交性以外の類似度を用いてもよい。例えば、ハッシュ関数同士の距離を定義し、その距離を用いて式（１２）を変更してもよい。式（１２）は値が小さいほどよいとすると、距離のマイナス倍を式（１２）に利用することが考えられる。ここで、ハッシュ関数同士の距離はどのように定義してもよいが、例えば、異なるハッシュ関数間のパラメータ（例えば、重みベクトルおよび切片）の差の二乗を用いてもよい。また、直交性をとらえるその他の尺度として、コサイン類似度を用いてもよい。コサイン類似度は、ハッシュ関数間の角度をとらえることが可能であり、ノルムの大きさに依存しないという性質がある。
【００９２】
式（１１）では、全てのハッシュ関数に関してｚが０以上になるという制約を用いたが、このような構成には限定されない。例えば、ｚに関して一定の誤差を許容してもよい。このための方法としては、例えばサポートベクタマシンで一般に使われるように、ｚに関するソフトマージンを導入してもよい。このような制約が緩められた構成を用いることにより、学習データにノイズが含まれる場合であっても識別能力を維持できることが期待される。
【００９３】
別の方法として、ｚに関する制約を用いる代わりに、ｚを含む項を目的関数に加えてもよい。例えば、ｚを含む項が目的関数Ｅの計算式に追加された式（１２）を用いて、ハッシュ関数の最適化を行うことができる。
【数１２】
2018026122.tif 000014
式（１２）において、ｐはｐ−ｎｏｒｍである。例えば、二乗ノルムを用いることができ、この場合ｐ＝２である。式（１２）の第２項は、式（１１）のｚに関する制約に似た役割を果たす。
【００９４】
なお、本実施例では異常検知システムを用いて映像中の異常を検知する例を示したが、当然ながら本実施例で示した構成の一部又は全部を利用して、その他の応用に用いてもよい。例えば、工場のライン上の製品を外観検査する場合に、本実施例で例示した方法を用いて、異常検知を行ってもよい。その場合、例えば良品の画像データを正常データとして認識部（ＮＮ及びハッシュ関数）を学習してもよい。これにより、製品の画像データが入力された際に、認識器の出力結果に基づいて、当該製品が異常か否かを検知することができる。なお、異常か否かを判定するための処理の詳細は、特許文献３に記載されている方法を用いてもよく、詳細は省略する。
【００９５】
なお、本実施例では識別器として線形識別器を用いる例を示したが、データをカーネル空間に写像する（カーネル法に基づく非線形写像）ことで、非線形識別器の特性を利用できるように拡張してもよい。カーネルを利用する方法として、例えば、"Learning with kernels: support vector machines, regularization, optimization, and beyond", B Scholkopf, AJ Smola, MIT press, 2001や、"Random Features for Large-Scale Kernel Machines", Ali R., et al, Advances in Neural Information Processing Systems 20 (NIPS 2007)に記載の方法を用いてもよい。
【００９６】
以上では、ハッシュ関数を最適化する際に用いる目的関数の例を示した。特に、式（１１）（１２）を用いることにより、複数のハッシュ関数同士が類似しないように学習を行うことができる。しかしながら、目的関数がこれらのものに限定されるわけではない。例えば、式（１１）（１２）では、ハッシュ関数同士が直交に近くなるように目的関数を定義した。しかしながら、ハッシュ関数同士の類似度をその他の方法で定義し、複数の識別器間の類似度が低いほど評価値が高くなる目的関数を用いて、類似度が最小化されるように、ハッシュ関数の学習を行ってもよい。例えば、類似度の一種として、ハッシュ関数同士の、パラメータの平均に関する差等を用いてもよい。
【００９７】
［実施形態２］
実施形態１では、ＮＮと組み合わせるハッシュ関数としてＮＳＨを用いる例を示した。実施形態２では、ＮＮと組み合わせるハッシュ関数として、p-stable hashを用いる例について説明する。p-stable hashは、例えばM. Datar et al. "Locality-Sensitive Hashing Scheme Based on p-Stable Distributions", SoCG, 2004.（以下、Ｄａｔａｒと呼ぶ）に記載されている。
【００９８】
本実施形態における異常検知システムの構成及び動作は実施形態１と大部分が同一であり、以下では異なる点について説明する。本実施形態と実施形態１との大きな違いは、ハッシュ関数の生成方法と、その学習方法にある。
【００９９】
本実施形態において、ハッシュ関数生成部１３１は、Ｄａｔａｒに記載の方法に従って動作する。本実施形態で用いるハッシュ関数は、式（１３）で定義される。
【数１３】
2018026122.tif 000015
式（１３）において、ｒは定数であり任意の値をとることができる。ｃは例えば［０，ｒ］の範囲の値をとる実数である。式（１３）にはｆｌｏｏｒ関数が用いられており、式（１３）により得られる値は、（（ｗＴｘ＋ｃ）／ｒ）の小数点以下を切り捨てた値である。このとき、ｃの増減に応じて、式（１３）の分子は傾きが同じで切片だけが移動する線形関数の集合として定義される。
【０１００】
このように定義されたハッシュ関数を用いるとき、ｃの値として、任意の定数に従って［０，ｒ］の区間を等分する値を用いることができる。例えば、ｒ＝９、刻み幅１の場合、ｃ＝｛０，１，２，３，４，５，６，７，８，９｝となり、計１０個の等間隔に並ぶ平行なハッシュ関数が得られる。さらに、式（１３）のパラメータｘが異なるハッシュ関数を複数用意することにより、互いに平行なハッシュ関数の集合を複数含むハッシュ関数群を得ることができる。
【０１０１】
このように得られたハッシュ関数群を用いる場合、ハッシュ関数選択部１３２が行うｄｒｏｐｏｕｔ処理の方法としては様々なバリエーションが存在する。第１の方法として、実施形態１と同様に、全てのハッシュ関数を平等に扱い、すべてのハッシュ関数に対して確率的にｄｒｏｐｏｕｔするか否かの判定を行うことができる。
【０１０２】
第２の方法として、ｃの値を変えることで得られた互いに平行なハッシュ関数の集合のそれぞれについて、集合に含まれる互いに平行なハッシュ関数を丸ごとｄｒｏｐｏｕｔするか否かを判定することができる。この方法では、複数の集合のそれぞれについて、ｄｒｏｐｏｕｔするか否かを確率的に判定する処理を行うことができる。
【０１０３】
また、ハッシュ関数更新部１３３が行うパラメータ更新処理の方法にも様々なバリエーションが存在する。全てのハッシュ関数について独立にパラメータを更新することができる。一方で、互いに平行なハッシュ関数の集合について、各ハッシュ関数が平行かつ等間隔に並ぶ状態を維持するように、集合に含まれる互いに平行なハッシュ関数のパラメータを同様に更新することもできる。
【０１０４】
例えば、互いに平行なハッシュ関数の集合のうち１つのハッシュ関数のパラメータを更新する際は、この集合に含まれる他のハッシュ関数に関しても同様にパラメータを更新することができる。すなわち、あるハッシュ関数のパラメータに対しての変更は、このハッシュ関数が属するハッシュ関数の集合に対して同じように反映する、という処理を行うことができる。
【０１０５】
ここで、パラメータの更新量をどのハッシュ関数に基づいて算出するかという点において、パラメータの更新方法には様々なバリエーションがある。以下では、その一例について説明する。図７は、共通のパラメータｗを持つハッシュ関数の集合と、学習データとの関係を例示する模式図である。図７には、共通したパラメータｗを持つハッシュ関数が表す超平面１４０１〜１４０５と、学習データ１４０６と、が示されている。学習データ１４０６は、ＮＮの出力を、ハッシュ関数に対する入力データとして可視化したものである。
【０１０６】
ここで、学習データ１４０６を用いてパラメータの更新量を求める場合、ハッシュ関数１４０１〜１４０５のそれぞれについて異なる更新量が算出される。この際、全てのハッシュ関数１４０１〜１４０５についてパラメータの更新量を求め、それぞれの更新量に基づいてハッシュ関数の集合に共通に適用する更新量を決定してもよい。一方で、ハッシュ関数１４０１〜１４０５のうち一部だけについてパラメータの更新量を求めてもよい。
【０１０７】
例えば、１つのハッシュ関数についてパラメータの更新量を求め、得られた更新量をハッシュ関数の集合に共通に適用することができる。この場合、パラメータの更新量を求めるために用いるハッシュ関数の選択方法として、学習データをよりよく表現しているハッシュ関数を選択する方法が挙げられる。具体的な選択方法は特に限定されないが、例えば、それぞれのハッシュ関数について超平面から学習データまでの距離（法線の距離）を算出し、距離が最も小さいハッシュ関数を選択することができる。図７の例であれば、学習データ１４０６に最も距離が近いのは、ハッシュ関数の超平面１４０１である。実施形態１で説明したようにＭｉｎｉｂａｔｃｈに含まれる複数の学習データを用いてパラメータの更新量を求める場合も、同様にそれぞれの学習データまでの距離に基づいてハッシュ関数を選択することができる。
【０１０８】
なお、例えばすべてのハッシュ関数に対して確率的にｄｒｏｐｏｕｔ処理を行っている場合等、ｄｒｏｐｏｕｔしているハッシュ関数がハッシュ関数の集合に含まれている場合、ｄｒｏｐｏｕｔしていないものからハッシュ関数を選択することができる。例えば、図７の例において超平面１４０１に対応するハッシュ関数がｄｒｏｐｏｕｔしている場合、これを除いたハッシュ関数の中から、学習データ１４０６に最も距離が近い超平面に対応するハッシュ関数を選択することができる。
【０１０９】
［実施形態３］
実施形態１，２では、ＮＮの出力を用いて識別を行う識別器としてハッシュ関数を用いる場合について説明した。実施形態３では、アダブーストを用いて識別器を構成する場合の例を示す。ここで、アダブーストとは、複数の弱識別器を用いて１つの強識別器を構成する方法であり、ブースティング手法の一種であるとされる。アダブーストの一例は、P. Viola et al. "Rapid Object Detection using a Boosted Cascade of Simple Features", CVPR 2001.（以降、Ｖｉｏｌａ）に示されている。しかしながら、アダブーストを行うための具体的な手法には様々なバリエーションが存在している。上記の文献に示される手法、及び本実施形態で説明する方法は、様々なアダブーストの方法のうち１つを用いた場合の具体例にすぎず、使用するブースティング方法に特に制限はないことに注意すべきである。
【０１１０】
特に、本実施例において重要なのは、実施形態１，２における複数のハッシュ関数のアナロジーとして例示されるアダブーストの構成と動作である。より具体的には、本実施形態においては、ＮＮの出力を入力データとして受け取る複数の弱識別器の集合が存在し、これらの識別器の誤差がＮＮに逆伝播される。なお、本実施形態でも弱識別器の一部が確率的にｄｒｏｐｏｕｔされるが、既に説明したように、ｄｒｏｐｏｕｔ処理は必須ではない。
【０１１１】
本実施形態における異常検知システムの構成及び動作は実施形態１，２と大部分が同一であり、以下では異なる点について説明する。本実施形態と実施形態１との大きな違いは、本実施形態では複数の弱識別器を識別器として用いる点、及び識別器の学習方法にある。すなわち、本実施形態に係る異常検知システムの構成は、識別器学習部１３及び識別部２３においてハッシュ関数の代わりに弱識別器を用いることを除き、図１に示す実施形態１の構成と同様である。
【０１１２】
図１３は、本実施形態における識別器学習部１３の構成例を示す。識別器学習部１３は、弱識別器生成部１３１ａと、弱識別器選択部１３２ａと、弱識別器更新部１３３ａと、を備える。
【０１１３】
次に、識別器学習部１３の動作について説明する。アダブースト自体は公知であり、例えばＶｉｏｌａに記載の構成を用いることができるため、以下では動作の概要及び本実施形態における特徴的な処理について説明する。
【０１１４】
まず、弱識別器生成部１３１ａは、複数の弱識別器の生成を行う。このとき、生成する弱識別器の種類は特に限定されないが、具体例として線形識別器を生成するものとする。また、生成する弱識別器の数も特に限定されないが、具体例として１００個の弱識別器を生成するものとする。なお、アダブーストのバリエーションの１つには、１個の弱識別器を最初に生成し、順次弱識別器を追加していく方法もあり、このような方法を採用することもできる。弱識別器を追加する方法としては、例えばＶｉｏｌａに記載の方法が挙げられる。
【０１１５】
こうして生成された弱識別器を用いて、弱識別器生成部１３１ａは、それぞれの弱識別器の信頼度を計算する。信頼度の計算方法は特に限定されず、例えばＶｉｏｌａに記載の方法を用いることができる。なお、最初に弱識別器を生成した際に、弱識別器生成部１３１ａは、各学習データに正規化された重みを設定する。その具体的な方法としては、例えばＶｉｏｌａに記載の方法を用いることができる。
【０１１６】
次に、弱識別器更新部１３３ａは、ＮＮ認識実行部１２５から、それぞれの学習データをＮＮに入力して得られるＮＮの認識結果（出力データ）を受け取る。例えば、弱識別器更新部１３３ａは、実施形態１と同様に出力層９０７の出力を受け取ることができる。もっとも、受け取るＮＮの認識結果は特に限定されず、例えば他の層の出力を受け取ってもよい。
【０１１７】
次に、弱識別器選択部１３２ａは、生成された弱識別器のうち一部を、学習に用いる弱識別器として選択する。この処理は、実施形態１，２と同様に、学習のＩｔｅｒａｔｉｏｎごとに行うものとする。この際に、弱識別器を選択する基準は特に限定されない。例えば、実施形態１と同様に、弱識別器選択部１３２ａは、各弱識別器を確率的に選択することができる。
【０１１８】
次に、弱識別器更新部１３３ａは、弱識別器選択部１３２ａが選択した弱識別器の集合から、ＮＮからの出力データを用いた識別処理について、最も正解率の高い弱識別器を選択する。そして、弱識別器更新部１３３ａは、選択された弱識別器について信頼度を再計算し、各学習データを再度重み付けする。信頼度の計算及び重み付け方法は特に限定されないが、例えばＶｉｏｌａに記載の方法を用いることができる。具体例としては、正解率が高いほど選択された弱識別器の信頼度を上げることができ、また選択された弱識別器が学習データの識別に失敗している場合にこの学習データの重みを上げることができる。Ｖｉｏｌａの方法によれば、選択された複数の弱識別器全体についての識別結果の誤差として、最も正解率の高い弱識別器について識別誤差が得られるが、この誤差をＮＮに逆伝播することができる。別の方法として、信頼度に従って弱識別器を組み合わせて得られる強識別器についての識別誤差をＮＮに逆伝播してもよい。
【０１１９】
その後、弱識別器更新部１３３ａは、再び、ＮＮ認識実行部１２５から、それぞれの学習データを更新後のＮＮに入力して得られるＮＮの認識結果（出力データ）を受け取ることができる。以後は実施形態１と同様であり、弱識別器更新部１３３ａは、学習に用いる弱識別器の選択、識別誤差の算出、及び誤差のＮＮへの逆伝播を繰り返すことができる。
【０１２０】
一方、弱識別器更新部１３３ａは、以上の処理によって弱識別器のそれぞれに信頼度を設定することができる。そして、この信頼度に従って弱識別器を組み合わせることにより、強識別器を構成することができる。こうして得られた強識別器のパラメータは、辞書記憶部Ｍ２に格納される。認識装置２０の動作において、弱識別器を用いた認識処理を行う際に用いる方法は特に限定されず、例えばＶｉｏｌａに記載の方法を用いることができる。その際には、異常と正常とを判別する識別器として弱識別器の学習処理が行われる。
【０１２１】
本実施形態では、データ中の物体やその状態を認識するＮＮと弱識別器とがあり、ＮＮの出力を弱識別器に対する入力データとする構成において、弱識別器の誤差がＮＮに伝播するように動作して学習を行う。このとき、選択された一部の弱識別器だけを用いて学習を行うことを繰り返すことで、弱識別器の過学習が抑制され、最終的な認識結果（異常検知結果）の精度を向上させることができる。
【０１２２】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１２３】
１０：学習装置、１１：データ読込部、１２：ＮＮ学習部、１３：識別器学習部、２０：認識装置、２１：データ読込部、２２：ＮＮ認識部、２３：識別部、３０：端末装置、３１：表示部
【図１】
2018026122.tif 000016
【図２】
2018026122.tif 000017
【図３】
2018026122.tif 000018
【図４】
2018026122.tif 000019
【図５】
2018026122.tif 000020
【図６】
2018026122.tif 000021
【図７】
2018026122.tif 000022
【図８】
2018026122.tif 000023
【図９】
2018026122.tif 000024
【図１０】
2018026122.tif 000025
【図１１】
2018026122.tif 000026
【図１２】
2018026122.tif 000027
【図１３】
2018026122.tif 000028